Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- Timelock
- Optimization enabled
- false
- Compiler version
- v0.8.18+commit.87f61d96
- EVM Version
- default
- Verified at
- 2023-08-08T19:04:50.871255Z
Constructor Arguments
0000000000000000000000003618b6cab13cfc2d2de2224e5a6c5183e99fff85000000000000000000000000000000000000000000000000000000000000003c
Arg [0] (address) : 0x3618b6cab13cfc2d2de2224e5a6c5183e99fff85
Arg [1] (uint256) : 60
Contract source code
// Sources flattened with hardhat v2.9.1 https://hardhat.org
// File contracts/governance/libraries/SafeMath.sol
pragma solidity ^0.8.10;
// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c;
unchecked {
c = a + b;
}
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
uint256 c;
unchecked {
c = a + b;
}
require(c >= a, errorMessage);
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot underflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction underflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot underflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c;
unchecked {
c = a * b;
}
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c;
unchecked {
c = a * b;
}
require(c / a == b, errorMessage);
return c;
}
/**
* @dev Returns the integer division of two unsigned integers.
* Reverts on division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers.
* Reverts with custom message on division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// File contracts/governance/Timelock.sol
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.10;
contract Timelock {
using SafeMath for uint;
event NewAdmin(address indexed newAdmin);
event NewPendingAdmin(address indexed newPendingAdmin);
event NewDelay(uint indexed newDelay);
event CancelTransaction(
bytes32 indexed txHash,
address indexed target,
uint value,
string signature,
bytes data,
uint eta
);
event ExecuteTransaction(
bytes32 indexed txHash,
address indexed target,
uint value,
string signature,
bytes data,
uint eta
);
event QueueTransaction(
bytes32 indexed txHash,
address indexed target,
uint value,
string signature,
bytes data,
uint eta
);
uint public constant GRACE_PERIOD = 900;
uint public constant MINIMUM_DELAY = 60;
uint public constant MAXIMUM_DELAY = 1500;
address public admin;
address public pendingAdmin;
uint public delay;
mapping(bytes32 => bool) public queuedTransactions;
constructor(address admin_, uint delay_) {
require(
delay_ >= MINIMUM_DELAY,
"Timelock::constructor: Delay must exceed minimum delay."
);
require(
delay_ <= MAXIMUM_DELAY,
"Timelock::setDelay: Delay must not exceed maximum delay."
);
admin = admin_;
delay = delay_;
}
fallback() external payable {}
function setDelay(uint delay_) public {
require(
msg.sender == address(this),
"Timelock::setDelay: Call must come from Timelock."
);
require(
delay_ >= MINIMUM_DELAY,
"Timelock::setDelay: Delay must exceed minimum delay."
);
require(
delay_ <= MAXIMUM_DELAY,
"Timelock::setDelay: Delay must not exceed maximum delay."
);
delay = delay_;
emit NewDelay(delay);
}
function acceptAdmin() public {
require(
msg.sender == pendingAdmin,
"Timelock::acceptAdmin: Call must come from pendingAdmin."
);
admin = msg.sender;
pendingAdmin = address(0);
emit NewAdmin(admin);
}
function setPendingAdmin(address pendingAdmin_) public {
require(
msg.sender == address(this),
"Timelock::setPendingAdmin: Call must come from Timelock."
);
pendingAdmin = pendingAdmin_;
emit NewPendingAdmin(pendingAdmin);
}
function queueTransaction(
address target,
uint value,
string memory signature,
bytes memory data,
uint eta
) public returns (bytes32) {
require(
msg.sender == admin,
"Timelock::queueTransaction: Call must come from admin."
);
require(
eta >= getBlockTimestamp().add(delay),
"Timelock::queueTransaction: Estimated execution block must satisfy delay."
);
bytes32 txHash = keccak256(
abi.encode(target, value, signature, data, eta)
);
queuedTransactions[txHash] = true;
emit QueueTransaction(txHash, target, value, signature, data, eta);
return txHash;
}
function cancelTransaction(
address target,
uint value,
string memory signature,
bytes memory data,
uint eta
) public {
require(
msg.sender == admin,
"Timelock::cancelTransaction: Call must come from admin."
);
bytes32 txHash = keccak256(
abi.encode(target, value, signature, data, eta)
);
queuedTransactions[txHash] = false;
emit CancelTransaction(txHash, target, value, signature, data, eta);
}
function executeTransaction(
address target,
uint value,
string memory signature,
bytes memory data,
uint eta
) public payable returns (bytes memory) {
require(
msg.sender == admin,
"Timelock::executeTransaction: Call must come from admin."
);
bytes32 txHash = keccak256(
abi.encode(target, value, signature, data, eta)
);
require(
queuedTransactions[txHash],
"Timelock::executeTransaction: Transaction hasn't been queued."
);
require(
getBlockTimestamp() >= eta,
"Timelock::executeTransaction: Transaction hasn't surpassed time lock."
);
require(
getBlockTimestamp() <= eta.add(GRACE_PERIOD),
"Timelock::executeTransaction: Transaction is stale."
);
queuedTransactions[txHash] = false;
bytes memory callData;
if (bytes(signature).length == 0) {
callData = data;
} else {
callData = abi.encodePacked(
bytes4(keccak256(bytes(signature))),
data
);
}
// solium-disable-next-line security/no-call-value
(bool success, bytes memory returnData) = target.call{value: value}(
callData
);
require(
success,
"Timelock::executeTransaction: Transaction execution reverted."
);
emit ExecuteTransaction(txHash, target, value, signature, data, eta);
return returnData;
}
function getBlockTimestamp() internal view returns (uint) {
// solium-disable-next-line security/no-block-members
return block.timestamp;
}
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"admin_","internalType":"address"},{"type":"uint256","name":"delay_","internalType":"uint256"}]},{"type":"event","name":"CancelTransaction","inputs":[{"type":"bytes32","name":"txHash","internalType":"bytes32","indexed":true},{"type":"address","name":"target","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"signature","internalType":"string","indexed":false},{"type":"bytes","name":"data","internalType":"bytes","indexed":false},{"type":"uint256","name":"eta","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ExecuteTransaction","inputs":[{"type":"bytes32","name":"txHash","internalType":"bytes32","indexed":true},{"type":"address","name":"target","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"signature","internalType":"string","indexed":false},{"type":"bytes","name":"data","internalType":"bytes","indexed":false},{"type":"uint256","name":"eta","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewAdmin","inputs":[{"type":"address","name":"newAdmin","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"NewDelay","inputs":[{"type":"uint256","name":"newDelay","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"NewPendingAdmin","inputs":[{"type":"address","name":"newPendingAdmin","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"QueueTransaction","inputs":[{"type":"bytes32","name":"txHash","internalType":"bytes32","indexed":true},{"type":"address","name":"target","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"string","name":"signature","internalType":"string","indexed":false},{"type":"bytes","name":"data","internalType":"bytes","indexed":false},{"type":"uint256","name":"eta","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"fallback","stateMutability":"payable"},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"GRACE_PERIOD","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAXIMUM_DELAY","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MINIMUM_DELAY","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"acceptAdmin","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"admin","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"cancelTransaction","inputs":[{"type":"address","name":"target","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"string","name":"signature","internalType":"string"},{"type":"bytes","name":"data","internalType":"bytes"},{"type":"uint256","name":"eta","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"delay","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[{"type":"bytes","name":"","internalType":"bytes"}],"name":"executeTransaction","inputs":[{"type":"address","name":"target","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"string","name":"signature","internalType":"string"},{"type":"bytes","name":"data","internalType":"bytes"},{"type":"uint256","name":"eta","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pendingAdmin","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"queueTransaction","inputs":[{"type":"address","name":"target","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"string","name":"signature","internalType":"string"},{"type":"bytes","name":"data","internalType":"bytes"},{"type":"uint256","name":"eta","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"queuedTransactions","inputs":[{"type":"bytes32","name":"","internalType":"bytes32"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDelay","inputs":[{"type":"uint256","name":"delay_","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setPendingAdmin","inputs":[{"type":"address","name":"pendingAdmin_","internalType":"address"}]}]
Contract Creation Code
0x60806040523480156200001157600080fd5b50604051620020b7380380620020b78339818101604052810190620000379190620001ba565b603c8110156200007e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000759062000288565b60405180910390fd5b6105dc811115620000c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000bd9062000320565b60405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550505062000342565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000147826200011a565b9050919050565b62000159816200013a565b81146200016557600080fd5b50565b60008151905062000179816200014e565b92915050565b6000819050919050565b62000194816200017f565b8114620001a057600080fd5b50565b600081519050620001b48162000189565b92915050565b60008060408385031215620001d457620001d362000115565b5b6000620001e48582860162000168565b9250506020620001f785828601620001a3565b9150509250929050565b600082825260208201905092915050565b7f54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757360008201527f7420657863656564206d696e696d756d2064656c61792e000000000000000000602082015250565b60006200027060378362000201565b91506200027d8262000212565b604082019050919050565b60006020820190508181036000830152620002a38162000261565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60008201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000602082015250565b60006200030860388362000201565b91506200031582620002aa565b604082019050919050565b600060208201905081810360008301526200033b81620002f9565b9050919050565b611d6580620003526000396000f3fe6080604052600436106100c65760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461024b578063e177246e14610276578063f2b065371461029f578063f851a440146102dc576100c7565b80636a42b8f8146101ca5780637d645fab146101f5578063b1b43ae514610220576100c7565b80630825f38f146100c95780630e18b681146100f957806326782247146101105780633a66f9011461013b5780634dd18bf514610178578063591fcdfe146101a1576100c7565b5b005b6100e360048036038101906100de9190611077565b610307565b6040516100f091906111a9565b60405180910390f35b34801561010557600080fd5b5061010e610652565b005b34801561011c57600080fd5b506101256107c9565b60405161013291906111da565b60405180910390f35b34801561014757600080fd5b50610162600480360381019061015d9190611077565b6107ef565b60405161016f919061120e565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a9190611229565b61099f565b005b3480156101ad57600080fd5b506101c860048036038101906101c39190611077565b610ab6565b005b3480156101d657600080fd5b506101df610c00565b6040516101ec9190611265565b60405180910390f35b34801561020157600080fd5b5061020a610c06565b6040516102179190611265565b60405180910390f35b34801561022c57600080fd5b50610235610c0c565b6040516102429190611265565b60405180910390f35b34801561025757600080fd5b50610260610c11565b60405161026d9190611265565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190611280565b610c17565b005b3480156102ab57600080fd5b506102c660048036038101906102c191906112d9565b610d47565b6040516102d39190611321565b60405180910390f35b3480156102e857600080fd5b506102f1610d67565b6040516102fe91906111da565b60405180910390f35b606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038e906113bf565b60405180910390fd5b600086868686866040516020016103b2959493929190611423565b6040516020818303038152906040528051906020012090506003600082815260200190815260200160002060009054906101000a900460ff1661042a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610421906114f6565b60405180910390fd5b82610433610d8b565b1015610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046b906115ae565b60405180910390fd5b61048961038484610d9390919063ffffffff16565b610491610d8b565b11156104d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c990611640565b60405180910390fd5b60006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550606060008651036105115784905061053d565b85805190602001208560405160200161052b9291906116e9565b60405160208183030381529060405290505b6000808973ffffffffffffffffffffffffffffffffffffffff1689846040516105669190611711565b60006040518083038185875af1925050503d80600081146105a3576040519150601f19603f3d011682016040523d82523d6000602084013e6105a8565b606091505b5091509150816105ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e49061179a565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b60405161063a94939291906117ba565b60405180910390a38094505050505095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d99061187f565b60405180910390fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60405160405180910390a2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790611911565b60405180910390fd5b61089c60025461088e610d8b565b610d9390919063ffffffff16565b8210156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d5906119c9565b60405180910390fd5b600086868686866040516020016108f9959493929190611423565b60405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f8888888860405161098a94939291906117ba565b60405180910390a38091505095945050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490611a5b565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75660405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90611aed565b60405180910390fd5b60008585858585604051602001610b5f959493929190611423565b60405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051610bf094939291906117ba565b60405180910390a3505050505050565b60025481565b6105dc81565b603c81565b61038481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90611b7f565b60405180910390fd5b603c811015610cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc090611c11565b60405180910390fd5b6105dc811115610d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0590611ca3565b60405180910390fd5b806002819055506002547f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c60405160405180910390a250565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042905090565b600080828401905083811015610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd590611d0f565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e2782610dfc565b9050919050565b610e3781610e1c565b8114610e4257600080fd5b50565b600081359050610e5481610e2e565b92915050565b6000819050919050565b610e6d81610e5a565b8114610e7857600080fd5b50565b600081359050610e8a81610e64565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ee382610e9a565b810181811067ffffffffffffffff82111715610f0257610f01610eab565b5b80604052505050565b6000610f15610de8565b9050610f218282610eda565b919050565b600067ffffffffffffffff821115610f4157610f40610eab565b5b610f4a82610e9a565b9050602081019050919050565b82818337600083830152505050565b6000610f79610f7484610f26565b610f0b565b905082815260208101848484011115610f9557610f94610e95565b5b610fa0848285610f57565b509392505050565b600082601f830112610fbd57610fbc610e90565b5b8135610fcd848260208601610f66565b91505092915050565b600067ffffffffffffffff821115610ff157610ff0610eab565b5b610ffa82610e9a565b9050602081019050919050565b600061101a61101584610fd6565b610f0b565b90508281526020810184848401111561103657611035610e95565b5b611041848285610f57565b509392505050565b600082601f83011261105e5761105d610e90565b5b813561106e848260208601611007565b91505092915050565b600080600080600060a0868803121561109357611092610df2565b5b60006110a188828901610e45565b95505060206110b288828901610e7b565b945050604086013567ffffffffffffffff8111156110d3576110d2610df7565b5b6110df88828901610fa8565b935050606086013567ffffffffffffffff811115611100576110ff610df7565b5b61110c88828901611049565b925050608061111d88828901610e7b565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015611164578082015181840152602081019050611149565b60008484015250505050565b600061117b8261112a565b6111858185611135565b9350611195818560208601611146565b61119e81610e9a565b840191505092915050565b600060208201905081810360008301526111c38184611170565b905092915050565b6111d481610e1c565b82525050565b60006020820190506111ef60008301846111cb565b92915050565b6000819050919050565b611208816111f5565b82525050565b600060208201905061122360008301846111ff565b92915050565b60006020828403121561123f5761123e610df2565b5b600061124d84828501610e45565b91505092915050565b61125f81610e5a565b82525050565b600060208201905061127a6000830184611256565b92915050565b60006020828403121561129657611295610df2565b5b60006112a484828501610e7b565b91505092915050565b6112b6816111f5565b81146112c157600080fd5b50565b6000813590506112d3816112ad565b92915050565b6000602082840312156112ef576112ee610df2565b5b60006112fd848285016112c4565b91505092915050565b60008115159050919050565b61131b81611306565b82525050565b60006020820190506113366000830184611312565b92915050565b600082825260208201905092915050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20436160008201527f6c6c206d75737420636f6d652066726f6d2061646d696e2e0000000000000000602082015250565b60006113a960388361133c565b91506113b48261134d565b604082019050919050565b600060208201905081810360008301526113d88161139c565b9050919050565b600081519050919050565b60006113f5826113df565b6113ff818561133c565b935061140f818560208601611146565b61141881610e9a565b840191505092915050565b600060a08201905061143860008301886111cb565b6114456020830187611256565b818103604083015261145781866113ea565b9050818103606083015261146b8185611170565b905061147a6080830184611256565b9695505050505050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206861736e2774206265656e207175657565642e000000602082015250565b60006114e0603d8361133c565b91506114eb82611484565b604082019050919050565b6000602082019050818103600083015261150f816114d3565b9050919050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206861736e2774207375727061737365642074696d652060208201527f6c6f636b2e000000000000000000000000000000000000000000000000000000604082015250565b600061159860458361133c565b91506115a382611516565b606082019050919050565b600060208201905081810360008301526115c78161158b565b9050919050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206973207374616c652e00000000000000000000000000602082015250565b600061162a60338361133c565b9150611635826115ce565b604082019050919050565b600060208201905081810360008301526116598161161d565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b6116a76116a282611660565b61168c565b82525050565b600081905092915050565b60006116c38261112a565b6116cd81856116ad565b93506116dd818560208601611146565b80840191505092915050565b60006116f58285611696565b60048201915061170582846116b8565b91508190509392505050565b600061171d82846116b8565b915081905092915050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000602082015250565b6000611784603d8361133c565b915061178f82611728565b604082019050919050565b600060208201905081810360008301526117b381611777565b9050919050565b60006080820190506117cf6000830187611256565b81810360208301526117e181866113ea565b905081810360408301526117f58185611170565b90506118046060830184611256565b95945050505050565b7f54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737460008201527f20636f6d652066726f6d2070656e64696e6741646d696e2e0000000000000000602082015250565b600061186960388361133c565b91506118748261180d565b604082019050919050565b600060208201905081810360008301526118988161185c565b9050919050565b7f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c60008201527f206d75737420636f6d652066726f6d2061646d696e2e00000000000000000000602082015250565b60006118fb60368361133c565b91506119068261189f565b604082019050919050565b6000602082019050818103600083015261192a816118ee565b9050919050565b7f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960008201527f6d6174656420657865637574696f6e20626c6f636b206d75737420736174697360208201527f66792064656c61792e0000000000000000000000000000000000000000000000604082015250565b60006119b360498361133c565b91506119be82611931565b606082019050919050565b600060208201905081810360008301526119e2816119a6565b9050919050565b7f54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c2060008201527f6d75737420636f6d652066726f6d2054696d656c6f636b2e0000000000000000602082015250565b6000611a4560388361133c565b9150611a50826119e9565b604082019050919050565b60006020820190508181036000830152611a7481611a38565b9050919050565b7f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c60008201527f6c206d75737420636f6d652066726f6d2061646d696e2e000000000000000000602082015250565b6000611ad760378361133c565b9150611ae282611a7b565b604082019050919050565b60006020820190508181036000830152611b0681611aca565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60008201527f6d652066726f6d2054696d656c6f636b2e000000000000000000000000000000602082015250565b6000611b6960318361133c565b9150611b7482611b0d565b604082019050919050565b60006020820190508181036000830152611b9881611b5c565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206560008201527f7863656564206d696e696d756d2064656c61792e000000000000000000000000602082015250565b6000611bfb60348361133c565b9150611c0682611b9f565b604082019050919050565b60006020820190508181036000830152611c2a81611bee565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60008201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000602082015250565b6000611c8d60388361133c565b9150611c9882611c31565b604082019050919050565b60006020820190508181036000830152611cbc81611c80565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611cf9601b8361133c565b9150611d0482611cc3565b602082019050919050565b60006020820190508181036000830152611d2881611cec565b905091905056fea2646970667358221220176ab931a21dbf22267f31aa7e4561ca0efe4c68771a2e6dc92e2965b1bbd92164736f6c634300081200330000000000000000000000003618b6cab13cfc2d2de2224e5a6c5183e99fff85000000000000000000000000000000000000000000000000000000000000003c
Deployed ByteCode
0x6080604052600436106100c65760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461024b578063e177246e14610276578063f2b065371461029f578063f851a440146102dc576100c7565b80636a42b8f8146101ca5780637d645fab146101f5578063b1b43ae514610220576100c7565b80630825f38f146100c95780630e18b681146100f957806326782247146101105780633a66f9011461013b5780634dd18bf514610178578063591fcdfe146101a1576100c7565b5b005b6100e360048036038101906100de9190611077565b610307565b6040516100f091906111a9565b60405180910390f35b34801561010557600080fd5b5061010e610652565b005b34801561011c57600080fd5b506101256107c9565b60405161013291906111da565b60405180910390f35b34801561014757600080fd5b50610162600480360381019061015d9190611077565b6107ef565b60405161016f919061120e565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a9190611229565b61099f565b005b3480156101ad57600080fd5b506101c860048036038101906101c39190611077565b610ab6565b005b3480156101d657600080fd5b506101df610c00565b6040516101ec9190611265565b60405180910390f35b34801561020157600080fd5b5061020a610c06565b6040516102179190611265565b60405180910390f35b34801561022c57600080fd5b50610235610c0c565b6040516102429190611265565b60405180910390f35b34801561025757600080fd5b50610260610c11565b60405161026d9190611265565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190611280565b610c17565b005b3480156102ab57600080fd5b506102c660048036038101906102c191906112d9565b610d47565b6040516102d39190611321565b60405180910390f35b3480156102e857600080fd5b506102f1610d67565b6040516102fe91906111da565b60405180910390f35b606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038e906113bf565b60405180910390fd5b600086868686866040516020016103b2959493929190611423565b6040516020818303038152906040528051906020012090506003600082815260200190815260200160002060009054906101000a900460ff1661042a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610421906114f6565b60405180910390fd5b82610433610d8b565b1015610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046b906115ae565b60405180910390fd5b61048961038484610d9390919063ffffffff16565b610491610d8b565b11156104d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c990611640565b60405180910390fd5b60006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550606060008651036105115784905061053d565b85805190602001208560405160200161052b9291906116e9565b60405160208183030381529060405290505b6000808973ffffffffffffffffffffffffffffffffffffffff1689846040516105669190611711565b60006040518083038185875af1925050503d80600081146105a3576040519150601f19603f3d011682016040523d82523d6000602084013e6105a8565b606091505b5091509150816105ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e49061179a565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b60405161063a94939291906117ba565b60405180910390a38094505050505095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d99061187f565b60405180910390fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60405160405180910390a2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790611911565b60405180910390fd5b61089c60025461088e610d8b565b610d9390919063ffffffff16565b8210156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d5906119c9565b60405180910390fd5b600086868686866040516020016108f9959493929190611423565b60405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f8888888860405161098a94939291906117ba565b60405180910390a38091505095945050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490611a5b565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75660405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90611aed565b60405180910390fd5b60008585858585604051602001610b5f959493929190611423565b60405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051610bf094939291906117ba565b60405180910390a3505050505050565b60025481565b6105dc81565b603c81565b61038481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90611b7f565b60405180910390fd5b603c811015610cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc090611c11565b60405180910390fd5b6105dc811115610d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0590611ca3565b60405180910390fd5b806002819055506002547f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c60405160405180910390a250565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042905090565b600080828401905083811015610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd590611d0f565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e2782610dfc565b9050919050565b610e3781610e1c565b8114610e4257600080fd5b50565b600081359050610e5481610e2e565b92915050565b6000819050919050565b610e6d81610e5a565b8114610e7857600080fd5b50565b600081359050610e8a81610e64565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ee382610e9a565b810181811067ffffffffffffffff82111715610f0257610f01610eab565b5b80604052505050565b6000610f15610de8565b9050610f218282610eda565b919050565b600067ffffffffffffffff821115610f4157610f40610eab565b5b610f4a82610e9a565b9050602081019050919050565b82818337600083830152505050565b6000610f79610f7484610f26565b610f0b565b905082815260208101848484011115610f9557610f94610e95565b5b610fa0848285610f57565b509392505050565b600082601f830112610fbd57610fbc610e90565b5b8135610fcd848260208601610f66565b91505092915050565b600067ffffffffffffffff821115610ff157610ff0610eab565b5b610ffa82610e9a565b9050602081019050919050565b600061101a61101584610fd6565b610f0b565b90508281526020810184848401111561103657611035610e95565b5b611041848285610f57565b509392505050565b600082601f83011261105e5761105d610e90565b5b813561106e848260208601611007565b91505092915050565b600080600080600060a0868803121561109357611092610df2565b5b60006110a188828901610e45565b95505060206110b288828901610e7b565b945050604086013567ffffffffffffffff8111156110d3576110d2610df7565b5b6110df88828901610fa8565b935050606086013567ffffffffffffffff811115611100576110ff610df7565b5b61110c88828901611049565b925050608061111d88828901610e7b565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015611164578082015181840152602081019050611149565b60008484015250505050565b600061117b8261112a565b6111858185611135565b9350611195818560208601611146565b61119e81610e9a565b840191505092915050565b600060208201905081810360008301526111c38184611170565b905092915050565b6111d481610e1c565b82525050565b60006020820190506111ef60008301846111cb565b92915050565b6000819050919050565b611208816111f5565b82525050565b600060208201905061122360008301846111ff565b92915050565b60006020828403121561123f5761123e610df2565b5b600061124d84828501610e45565b91505092915050565b61125f81610e5a565b82525050565b600060208201905061127a6000830184611256565b92915050565b60006020828403121561129657611295610df2565b5b60006112a484828501610e7b565b91505092915050565b6112b6816111f5565b81146112c157600080fd5b50565b6000813590506112d3816112ad565b92915050565b6000602082840312156112ef576112ee610df2565b5b60006112fd848285016112c4565b91505092915050565b60008115159050919050565b61131b81611306565b82525050565b60006020820190506113366000830184611312565b92915050565b600082825260208201905092915050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20436160008201527f6c6c206d75737420636f6d652066726f6d2061646d696e2e0000000000000000602082015250565b60006113a960388361133c565b91506113b48261134d565b604082019050919050565b600060208201905081810360008301526113d88161139c565b9050919050565b600081519050919050565b60006113f5826113df565b6113ff818561133c565b935061140f818560208601611146565b61141881610e9a565b840191505092915050565b600060a08201905061143860008301886111cb565b6114456020830187611256565b818103604083015261145781866113ea565b9050818103606083015261146b8185611170565b905061147a6080830184611256565b9695505050505050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206861736e2774206265656e207175657565642e000000602082015250565b60006114e0603d8361133c565b91506114eb82611484565b604082019050919050565b6000602082019050818103600083015261150f816114d3565b9050919050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206861736e2774207375727061737365642074696d652060208201527f6c6f636b2e000000000000000000000000000000000000000000000000000000604082015250565b600061159860458361133c565b91506115a382611516565b606082019050919050565b600060208201905081810360008301526115c78161158b565b9050919050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206973207374616c652e00000000000000000000000000602082015250565b600061162a60338361133c565b9150611635826115ce565b604082019050919050565b600060208201905081810360008301526116598161161d565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b6116a76116a282611660565b61168c565b82525050565b600081905092915050565b60006116c38261112a565b6116cd81856116ad565b93506116dd818560208601611146565b80840191505092915050565b60006116f58285611696565b60048201915061170582846116b8565b91508190509392505050565b600061171d82846116b8565b915081905092915050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000602082015250565b6000611784603d8361133c565b915061178f82611728565b604082019050919050565b600060208201905081810360008301526117b381611777565b9050919050565b60006080820190506117cf6000830187611256565b81810360208301526117e181866113ea565b905081810360408301526117f58185611170565b90506118046060830184611256565b95945050505050565b7f54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737460008201527f20636f6d652066726f6d2070656e64696e6741646d696e2e0000000000000000602082015250565b600061186960388361133c565b91506118748261180d565b604082019050919050565b600060208201905081810360008301526118988161185c565b9050919050565b7f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c60008201527f206d75737420636f6d652066726f6d2061646d696e2e00000000000000000000602082015250565b60006118fb60368361133c565b91506119068261189f565b604082019050919050565b6000602082019050818103600083015261192a816118ee565b9050919050565b7f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960008201527f6d6174656420657865637574696f6e20626c6f636b206d75737420736174697360208201527f66792064656c61792e0000000000000000000000000000000000000000000000604082015250565b60006119b360498361133c565b91506119be82611931565b606082019050919050565b600060208201905081810360008301526119e2816119a6565b9050919050565b7f54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c2060008201527f6d75737420636f6d652066726f6d2054696d656c6f636b2e0000000000000000602082015250565b6000611a4560388361133c565b9150611a50826119e9565b604082019050919050565b60006020820190508181036000830152611a7481611a38565b9050919050565b7f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c60008201527f6c206d75737420636f6d652066726f6d2061646d696e2e000000000000000000602082015250565b6000611ad760378361133c565b9150611ae282611a7b565b604082019050919050565b60006020820190508181036000830152611b0681611aca565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60008201527f6d652066726f6d2054696d656c6f636b2e000000000000000000000000000000602082015250565b6000611b6960318361133c565b9150611b7482611b0d565b604082019050919050565b60006020820190508181036000830152611b9881611b5c565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206560008201527f7863656564206d696e696d756d2064656c61792e000000000000000000000000602082015250565b6000611bfb60348361133c565b9150611c0682611b9f565b604082019050919050565b60006020820190508181036000830152611c2a81611bee565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60008201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000602082015250565b6000611c8d60388361133c565b9150611c9882611c31565b604082019050919050565b60006020820190508181036000830152611cbc81611c80565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611cf9601b8361133c565b9150611d0482611cc3565b602082019050919050565b60006020820190508181036000830152611d2881611cec565b905091905056fea2646970667358221220176ab931a21dbf22267f31aa7e4561ca0efe4c68771a2e6dc92e2965b1bbd92164736f6c63430008120033