false
false

Contract Address Details

0xB4221Af4f2Ece04de66A46B191A2cCe55c860604

Contract Name
VerifySample
Creator
0x3c4ade–b1066b at 0xad7daa–d69877
Balance
0 Berg
Tokens
Fetching tokens...
Transactions
11,892 Transactions
Transfers
0 Transfers
Gas Used
1,885,973,622
Last Balance Update
29767793
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
VerifySample




Optimization enabled
false
Compiler version
v0.8.19+commit.7dd6d404




EVM Version
paris




Verified at
2023-10-31T16:43:55.157201Z

/contracts/VerifySample.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./Verify.sol";

/**
 * VerifySample smart contract
 */
contract VerifySample is Verify {

}
        

/contracts/Entity.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";

contract Entity is Ownable {
  string public id;
  bytes32 public hash;
  string public data;

  constructor(string memory _id, bytes32 _hash, string memory _data) {
    id = _id;
    hash = _hash;
    data = _data;
    emit EntityCreated(id, hash, data, address(this));
  }

  event EntityCreated(
    string indexed id,
    bytes32 indexed hash,
    string data,
    address addr
  );

  event EntityUpdated(
    string indexed id,
    bytes32 indexed hash,
    string data
  );

  function update(
    bytes32 _hash,
    string calldata _data
  )
    external
    payable
    onlyOwner
  {
    hash = _hash;
    data = _data;

    emit EntityUpdated(id, hash, data);
  }

  function read() external view returns (bytes32, string memory)  {
    return (hash, data);
  }
}
          

/contracts/Verify.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";
import "./Entity.sol";

abstract contract Verify is Ownable {

  mapping (string => address) public entities;

  event EventReceived(
    string indexed id,
    bytes32 indexed hash,
    string data
  );

  // Store new event
  function store(
    string calldata id,
    bytes32 hash,
    string calldata data
  )
    external
    payable
    onlyOwner
  {
    require(hash.length == 32, "Invalid hash");
    emit EventReceived(id, hash, data);

    Entity entity;
    if (entities[id] != address(0)) {
      entity = Entity(address(entities[id]));
      entity.update(hash, data);
    } else {
      entity = new Entity(id, hash, data);
      entities[id] = address(entity);
    }
  }

  function read(string calldata id) external view returns (bytes32, string memory)  {
    require(entities[id] != address(0), "Entity with this id does not exist");
    Entity entity = Entity(address(entities[id]));

    return entity.read();
  }
}
          

@openzeppelin/contracts/access/Ownable.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
          

@openzeppelin/contracts/utils/Context.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
          

Compiler Settings

{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers"]}},"optimizer":{"runs":200,"enabled":false},"libraries":{},"evmVersion":"paris"}
              

Contract ABI

[{"type":"event","name":"EventReceived","inputs":[{"type":"string","name":"id","internalType":"string","indexed":true},{"type":"bytes32","name":"hash","internalType":"bytes32","indexed":true},{"type":"string","name":"data","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"entities","inputs":[{"type":"string","name":"","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"},{"type":"string","name":"","internalType":"string"}],"name":"read","inputs":[{"type":"string","name":"id","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"store","inputs":[{"type":"string","name":"id","internalType":"string"},{"type":"bytes32","name":"hash","internalType":"bytes32"},{"type":"string","name":"data","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128ec8061010d6000396000f3fe6080604052600436106200005c5760003560e01c8063616ffe831462000061578063706ced5b14620000a6578063715018a614620000ea5780638da5cb5b14620001045780639a4461861462000134578063f2fde38b1462000154575b600080fd5b3480156200006e57600080fd5b506200008d600480360381019062000087919062000885565b62000182565b6040516200009d9291906200098f565b60405180910390f35b348015620000b357600080fd5b50620000d26004803603810190620000cc919062000b0f565b62000304565b604051620000e1919062000ba5565b60405180910390f35b348015620000f757600080fd5b50620001026200034d565b005b3480156200011157600080fd5b506200011c62000365565b6040516200012b919062000ba5565b60405180910390f35b6200015260048036038101906200014c919062000bf3565b6200038e565b005b3480156200016157600080fd5b506200018060048036038101906200017a919062000cc8565b6200061a565b005b60006060600073ffffffffffffffffffffffffffffffffffffffff1660018585604051620001b292919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200023a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002319062000dbf565b60405180910390fd5b6000600185856040516200025092919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b8152600401600060405180830381865afa158015620002cd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190620002f8919062000e76565b92509250509250929050565b6001818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b62000357620006a4565b62000363600062000729565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000398620006a4565b60208060ff1614620003e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003d89062000f2c565b60405180910390fd5b828585604051620003f492919062000d2e565b60405180910390207f5c0e63de8382fff4046ab2a91d65dacbfd3fb513d4001211aaf8f84ebd33a93484846040516200042f92919062000f81565b60405180910390a360008073ffffffffffffffffffffffffffffffffffffffff16600187876040516200046492919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200056d5760018686604051620004c392919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663dd5b64de8585856040518463ffffffff1660e01b8152600401620005339392919062000fa7565b600060405180830381600087803b1580156200054e57600080fd5b505af115801562000563573d6000803e3d6000fd5b5050505062000612565b85858585856040516200058090620007f5565b6200059095949392919062000fdd565b604051809103906000f080158015620005ad573d6000803e3d6000fd5b5090508060018787604051620005c592919062000d2e565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050505050565b62000624620006a4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000696576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068d90620010a2565b60405180910390fd5b620006a18162000729565b50565b620006ae620007ed565b73ffffffffffffffffffffffffffffffffffffffff16620006ce62000365565b73ffffffffffffffffffffffffffffffffffffffff161462000727576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071e9062001114565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b611780806200113783390190565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126200083f576200083e62000817565b5b8235905067ffffffffffffffff8111156200085f576200085e6200081c565b5b6020830191508360018202830111156200087e576200087d62000821565b5b9250929050565b600080602083850312156200089f576200089e6200080d565b5b600083013567ffffffffffffffff811115620008c057620008bf62000812565b5b620008ce8582860162000826565b92509250509250929050565b6000819050919050565b620008ef81620008da565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200093157808201518184015260208101905062000914565b60008484015250505050565b6000601f19601f8301169050919050565b60006200095b82620008f5565b62000967818562000900565b93506200097981856020860162000911565b62000984816200093d565b840191505092915050565b6000604082019050620009a66000830185620008e4565b8181036020830152620009ba81846200094e565b90509392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000a02826200093d565b810181811067ffffffffffffffff8211171562000a245762000a23620009c8565b5b80604052505050565b600062000a3962000803565b905062000a478282620009f7565b919050565b600067ffffffffffffffff82111562000a6a5762000a69620009c8565b5b62000a75826200093d565b9050602081019050919050565b82818337600083830152505050565b600062000aa862000aa28462000a4c565b62000a2d565b90508281526020810184848401111562000ac75762000ac6620009c3565b5b62000ad484828562000a82565b509392505050565b600082601f83011262000af45762000af362000817565b5b813562000b0684826020860162000a91565b91505092915050565b60006020828403121562000b285762000b276200080d565b5b600082013567ffffffffffffffff81111562000b495762000b4862000812565b5b62000b578482850162000adc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b8d8262000b60565b9050919050565b62000b9f8162000b80565b82525050565b600060208201905062000bbc600083018462000b94565b92915050565b62000bcd81620008da565b811462000bd957600080fd5b50565b60008135905062000bed8162000bc2565b92915050565b60008060008060006060868803121562000c125762000c116200080d565b5b600086013567ffffffffffffffff81111562000c335762000c3262000812565b5b62000c418882890162000826565b9550955050602062000c568882890162000bdc565b935050604086013567ffffffffffffffff81111562000c7a5762000c7962000812565b5b62000c888882890162000826565b92509250509295509295909350565b62000ca28162000b80565b811462000cae57600080fd5b50565b60008135905062000cc28162000c97565b92915050565b60006020828403121562000ce15762000ce06200080d565b5b600062000cf18482850162000cb1565b91505092915050565b600081905092915050565b600062000d13838562000cfa565b935062000d2283858462000a82565b82840190509392505050565b600062000d3d82848662000d05565b91508190509392505050565b7f456e746974792077697468207468697320696420646f6573206e6f742065786960008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b600062000da760228362000900565b915062000db48262000d49565b604082019050919050565b6000602082019050818103600083015262000dda8162000d98565b9050919050565b60008151905062000df28162000bc2565b92915050565b600062000e0f62000e098462000a4c565b62000a2d565b90508281526020810184848401111562000e2e5762000e2d620009c3565b5b62000e3b84828562000911565b509392505050565b600082601f83011262000e5b5762000e5a62000817565b5b815162000e6d84826020860162000df8565b91505092915050565b6000806040838503121562000e905762000e8f6200080d565b5b600062000ea08582860162000de1565b925050602083015167ffffffffffffffff81111562000ec45762000ec362000812565b5b62000ed28582860162000e43565b9150509250929050565b7f496e76616c696420686173680000000000000000000000000000000000000000600082015250565b600062000f14600c8362000900565b915062000f218262000edc565b602082019050919050565b6000602082019050818103600083015262000f478162000f05565b9050919050565b600062000f5c838562000900565b935062000f6b83858462000a82565b62000f76836200093d565b840190509392505050565b6000602082019050818103600083015262000f9e81848662000f4e565b90509392505050565b600060408201905062000fbe6000830186620008e4565b818103602083015262000fd381848662000f4e565b9050949350505050565b6000606082019050818103600083015262000ffa81878962000f4e565b90506200100b6020830186620008e4565b81810360408301526200102081848662000f4e565b90509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200108a60268362000900565b915062001097826200102c565b604082019050919050565b60006020820190508181036000830152620010bd816200107b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010fc60208362000900565b91506200110982620010c4565b602082019050919050565b600060208201905081810360008301526200112f81620010ed565b905091905056fe60806040523480156200001157600080fd5b50604051620017803803806200178083398181016040528101906200003791906200037d565b620000576200004b620000e360201b60201c565b620000eb60201b60201c565b826001908162000068919062000662565b5081600281905550806003908162000081919062000662565b506002546001604051620000969190620007e3565b60405180910390207f7764f44d9ad14ece3e2283526cda54ca12126fe6041ca731ea4b6571220f34e5600330604051620000d2929190620008e2565b60405180910390a350505062000916565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200021882620001cd565b810181811067ffffffffffffffff821117156200023a5762000239620001de565b5b80604052505050565b60006200024f620001af565b90506200025d82826200020d565b919050565b600067ffffffffffffffff82111562000280576200027f620001de565b5b6200028b82620001cd565b9050602081019050919050565b60005b83811015620002b85780820151818401526020810190506200029b565b60008484015250505050565b6000620002db620002d58462000262565b62000243565b905082815260208101848484011115620002fa57620002f9620001c8565b5b6200030784828562000298565b509392505050565b600082601f830112620003275762000326620001c3565b5b815162000339848260208601620002c4565b91505092915050565b6000819050919050565b620003578162000342565b81146200036357600080fd5b50565b60008151905062000377816200034c565b92915050565b600080600060608486031215620003995762000398620001b9565b5b600084015167ffffffffffffffff811115620003ba57620003b9620001be565b5b620003c8868287016200030f565b9350506020620003db8682870162000366565b925050604084015167ffffffffffffffff811115620003ff57620003fe620001be565b5b6200040d868287016200030f565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200046a57607f821691505b60208210810362000480576200047f62000422565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004ab565b620004f68683620004ab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005436200053d62000537846200050e565b62000518565b6200050e565b9050919050565b6000819050919050565b6200055f8362000522565b620005776200056e826200054a565b848454620004b8565b825550505050565b600090565b6200058e6200057f565b6200059b81848462000554565b505050565b5b81811015620005c357620005b760008262000584565b600181019050620005a1565b5050565b601f8211156200061257620005dc8162000486565b620005e7846200049b565b81016020851015620005f7578190505b6200060f62000606856200049b565b830182620005a0565b50505b505050565b600082821c905092915050565b6000620006376000198460080262000617565b1980831691505092915050565b600062000652838362000624565b9150826002028217905092915050565b6200066d8262000417565b67ffffffffffffffff811115620006895762000688620001de565b5b62000695825462000451565b620006a2828285620005c7565b600060209050601f831160018114620006da5760008415620006c5578287015190505b620006d1858262000644565b86555062000741565b601f198416620006ea8662000486565b60005b828110156200071457848901518255600182019150602085019450602081019050620006ed565b8683101562000734578489015162000730601f89168262000624565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60008154620007638162000451565b6200076f818662000749565b945060018216600081146200078d5760018114620007a357620007da565b60ff1983168652811515820286019350620007da565b620007ae8562000486565b60005b83811015620007d257815481890152600182019150602081019050620007b1565b838801955050505b50505092915050565b6000620007f1828462000754565b915081905092915050565b600082825260208201905092915050565b600081546200081c8162000451565b620008288186620007fc565b945060018216600081146200084657600181146200085d5762000894565b60ff19831686528115156020028601935062000894565b620008688562000486565b60005b838110156200088c578154818901526001820191506020810190506200086b565b808801955050505b50505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ca826200089d565b9050919050565b620008dc81620008bd565b82525050565b60006040820190508181036000830152620008fe81856200080d565b90506200090f6020830184620008d1565b9392505050565b610e5a80620009266000396000f3fe60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b14610119578063af640d0f14610144578063dd5b64de1461016f578063f2fde38b1461018b5761007b565b806309bd5a601461008057806357de26a4146100ab578063715018a6146100d757806373d4a13a146100ee575b600080fd5b34801561008c57600080fd5b506100956101b4565b6040516100a2919061060e565b60405180910390f35b3480156100b757600080fd5b506100c06101ba565b6040516100ce9291906106b9565b60405180910390f35b3480156100e357600080fd5b506100ec610257565b005b3480156100fa57600080fd5b5061010361026b565b60405161011091906106e9565b60405180910390f35b34801561012557600080fd5b5061012e6102f9565b60405161013b919061074c565b60405180910390f35b34801561015057600080fd5b50610159610322565b60405161016691906106e9565b60405180910390f35b61018960048036038101906101849190610802565b6103b0565b005b34801561019757600080fd5b506101b260048036038101906101ad919061088e565b610428565b005b60025481565b6000606060025460038080546101cf906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108ea565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b50505050509050915091509091565b61025f6104ab565b6102696000610529565b565b60038054610278906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102a4906108ea565b80156102f15780601f106102c6576101008083540402835291602001916102f1565b820191906000526020600020905b8154815290600101906020018083116102d457829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461032f906108ea565b80601f016020809104026020016040519081016040528092919081815260200182805461035b906108ea565b80156103a85780601f1061037d576101008083540402835291602001916103a8565b820191906000526020600020905b81548152906001019060200180831161038b57829003601f168201915b505050505081565b6103b86104ab565b826002819055508181600391826103d0929190610b0b565b5060025460016040516103e39190610c69565b60405180910390207f6769ea8a229aa00e664f97583a3fc36ec6fec2b3eb817d74174dad73edaf9c48600360405161041b9190610d04565b60405180910390a3505050565b6104306104ab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049690610d98565b60405180910390fd5b6104a881610529565b50565b6104b36105ed565b73ffffffffffffffffffffffffffffffffffffffff166104d16102f9565b73ffffffffffffffffffffffffffffffffffffffff1614610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e90610e04565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000819050919050565b610608816105f5565b82525050565b600060208201905061062360008301846105ff565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610663578082015181840152602081019050610648565b60008484015250505050565b6000601f19601f8301169050919050565b600061068b82610629565b6106958185610634565b93506106a5818560208601610645565b6106ae8161066f565b840191505092915050565b60006040820190506106ce60008301856105ff565b81810360208301526106e08184610680565b90509392505050565b600060208201905081810360008301526107038184610680565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107368261070b565b9050919050565b6107468161072b565b82525050565b6000602082019050610761600083018461073d565b92915050565b600080fd5b600080fd5b61077a816105f5565b811461078557600080fd5b50565b60008135905061079781610771565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126107c2576107c161079d565b5b8235905067ffffffffffffffff8111156107df576107de6107a2565b5b6020830191508360018202830111156107fb576107fa6107a7565b5b9250929050565b60008060006040848603121561081b5761081a610767565b5b600061082986828701610788565b935050602084013567ffffffffffffffff81111561084a5761084961076c565b5b610856868287016107ac565b92509250509250925092565b61086b8161072b565b811461087657600080fd5b50565b60008135905061088881610862565b92915050565b6000602082840312156108a4576108a3610767565b5b60006108b284828501610879565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061090257607f821691505b602082108103610915576109146108bb565b5b50919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026109b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261097a565b6109c1868361097a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610a08610a036109fe846109d9565b6109e3565b6109d9565b9050919050565b6000819050919050565b610a22836109ed565b610a36610a2e82610a0f565b848454610987565b825550505050565b600090565b610a4b610a3e565b610a56818484610a19565b505050565b5b81811015610a7a57610a6f600082610a43565b600181019050610a5c565b5050565b601f821115610abf57610a9081610955565b610a998461096a565b81016020851015610aa8578190505b610abc610ab48561096a565b830182610a5b565b50505b505050565b600082821c905092915050565b6000610ae260001984600802610ac4565b1980831691505092915050565b6000610afb8383610ad1565b9150826002028217905092915050565b610b15838361091b565b67ffffffffffffffff811115610b2e57610b2d610926565b5b610b3882546108ea565b610b43828285610a7e565b6000601f831160018114610b725760008415610b60578287013590505b610b6a8582610aef565b865550610bd2565b601f198416610b8086610955565b60005b82811015610ba857848901358255600182019150602085019450602081019050610b83565b86831015610bc55784890135610bc1601f891682610ad1565b8355505b6001600288020188555050505b50505050505050565b600081905092915050565b60008154610bf3816108ea565b610bfd8186610bdb565b94506001821660008114610c185760018114610c2d57610c60565b60ff1983168652811515820286019350610c60565b610c3685610955565b60005b83811015610c5857815481890152600182019150602081019050610c39565b838801955050505b50505092915050565b6000610c758284610be6565b915081905092915050565b60008154610c8d816108ea565b610c978186610634565b94506001821660008114610cb25760018114610cc857610cfb565b60ff198316865281151560200286019350610cfb565b610cd185610955565b60005b83811015610cf357815481890152600182019150602081019050610cd4565b808801955050505b50505092915050565b60006020820190508181036000830152610d1e8184610c80565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610d82602683610634565b9150610d8d82610d26565b604082019050919050565b60006020820190508181036000830152610db181610d75565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610dee602083610634565b9150610df982610db8565b602082019050919050565b60006020820190508181036000830152610e1d81610de1565b905091905056fea2646970667358221220e2b924101fe3a256f757062c05598ce85fed08f3cca1a27f9007a9121742d02864736f6c63430008130033a2646970667358221220d71d124a52ed3fdac165d9c7c26d086bbbedceb8ef5845f20b3d3a30441e85b464736f6c63430008130033

Deployed ByteCode

0x6080604052600436106200005c5760003560e01c8063616ffe831462000061578063706ced5b14620000a6578063715018a614620000ea5780638da5cb5b14620001045780639a4461861462000134578063f2fde38b1462000154575b600080fd5b3480156200006e57600080fd5b506200008d600480360381019062000087919062000885565b62000182565b6040516200009d9291906200098f565b60405180910390f35b348015620000b357600080fd5b50620000d26004803603810190620000cc919062000b0f565b62000304565b604051620000e1919062000ba5565b60405180910390f35b348015620000f757600080fd5b50620001026200034d565b005b3480156200011157600080fd5b506200011c62000365565b6040516200012b919062000ba5565b60405180910390f35b6200015260048036038101906200014c919062000bf3565b6200038e565b005b3480156200016157600080fd5b506200018060048036038101906200017a919062000cc8565b6200061a565b005b60006060600073ffffffffffffffffffffffffffffffffffffffff1660018585604051620001b292919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200023a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002319062000dbf565b60405180910390fd5b6000600185856040516200025092919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b8152600401600060405180830381865afa158015620002cd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190620002f8919062000e76565b92509250509250929050565b6001818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b62000357620006a4565b62000363600062000729565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000398620006a4565b60208060ff1614620003e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003d89062000f2c565b60405180910390fd5b828585604051620003f492919062000d2e565b60405180910390207f5c0e63de8382fff4046ab2a91d65dacbfd3fb513d4001211aaf8f84ebd33a93484846040516200042f92919062000f81565b60405180910390a360008073ffffffffffffffffffffffffffffffffffffffff16600187876040516200046492919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200056d5760018686604051620004c392919062000d2e565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663dd5b64de8585856040518463ffffffff1660e01b8152600401620005339392919062000fa7565b600060405180830381600087803b1580156200054e57600080fd5b505af115801562000563573d6000803e3d6000fd5b5050505062000612565b85858585856040516200058090620007f5565b6200059095949392919062000fdd565b604051809103906000f080158015620005ad573d6000803e3d6000fd5b5090508060018787604051620005c592919062000d2e565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050505050565b62000624620006a4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000696576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068d90620010a2565b60405180910390fd5b620006a18162000729565b50565b620006ae620007ed565b73ffffffffffffffffffffffffffffffffffffffff16620006ce62000365565b73ffffffffffffffffffffffffffffffffffffffff161462000727576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071e9062001114565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b611780806200113783390190565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126200083f576200083e62000817565b5b8235905067ffffffffffffffff8111156200085f576200085e6200081c565b5b6020830191508360018202830111156200087e576200087d62000821565b5b9250929050565b600080602083850312156200089f576200089e6200080d565b5b600083013567ffffffffffffffff811115620008c057620008bf62000812565b5b620008ce8582860162000826565b92509250509250929050565b6000819050919050565b620008ef81620008da565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200093157808201518184015260208101905062000914565b60008484015250505050565b6000601f19601f8301169050919050565b60006200095b82620008f5565b62000967818562000900565b93506200097981856020860162000911565b62000984816200093d565b840191505092915050565b6000604082019050620009a66000830185620008e4565b8181036020830152620009ba81846200094e565b90509392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000a02826200093d565b810181811067ffffffffffffffff8211171562000a245762000a23620009c8565b5b80604052505050565b600062000a3962000803565b905062000a478282620009f7565b919050565b600067ffffffffffffffff82111562000a6a5762000a69620009c8565b5b62000a75826200093d565b9050602081019050919050565b82818337600083830152505050565b600062000aa862000aa28462000a4c565b62000a2d565b90508281526020810184848401111562000ac75762000ac6620009c3565b5b62000ad484828562000a82565b509392505050565b600082601f83011262000af45762000af362000817565b5b813562000b0684826020860162000a91565b91505092915050565b60006020828403121562000b285762000b276200080d565b5b600082013567ffffffffffffffff81111562000b495762000b4862000812565b5b62000b578482850162000adc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b8d8262000b60565b9050919050565b62000b9f8162000b80565b82525050565b600060208201905062000bbc600083018462000b94565b92915050565b62000bcd81620008da565b811462000bd957600080fd5b50565b60008135905062000bed8162000bc2565b92915050565b60008060008060006060868803121562000c125762000c116200080d565b5b600086013567ffffffffffffffff81111562000c335762000c3262000812565b5b62000c418882890162000826565b9550955050602062000c568882890162000bdc565b935050604086013567ffffffffffffffff81111562000c7a5762000c7962000812565b5b62000c888882890162000826565b92509250509295509295909350565b62000ca28162000b80565b811462000cae57600080fd5b50565b60008135905062000cc28162000c97565b92915050565b60006020828403121562000ce15762000ce06200080d565b5b600062000cf18482850162000cb1565b91505092915050565b600081905092915050565b600062000d13838562000cfa565b935062000d2283858462000a82565b82840190509392505050565b600062000d3d82848662000d05565b91508190509392505050565b7f456e746974792077697468207468697320696420646f6573206e6f742065786960008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b600062000da760228362000900565b915062000db48262000d49565b604082019050919050565b6000602082019050818103600083015262000dda8162000d98565b9050919050565b60008151905062000df28162000bc2565b92915050565b600062000e0f62000e098462000a4c565b62000a2d565b90508281526020810184848401111562000e2e5762000e2d620009c3565b5b62000e3b84828562000911565b509392505050565b600082601f83011262000e5b5762000e5a62000817565b5b815162000e6d84826020860162000df8565b91505092915050565b6000806040838503121562000e905762000e8f6200080d565b5b600062000ea08582860162000de1565b925050602083015167ffffffffffffffff81111562000ec45762000ec362000812565b5b62000ed28582860162000e43565b9150509250929050565b7f496e76616c696420686173680000000000000000000000000000000000000000600082015250565b600062000f14600c8362000900565b915062000f218262000edc565b602082019050919050565b6000602082019050818103600083015262000f478162000f05565b9050919050565b600062000f5c838562000900565b935062000f6b83858462000a82565b62000f76836200093d565b840190509392505050565b6000602082019050818103600083015262000f9e81848662000f4e565b90509392505050565b600060408201905062000fbe6000830186620008e4565b818103602083015262000fd381848662000f4e565b9050949350505050565b6000606082019050818103600083015262000ffa81878962000f4e565b90506200100b6020830186620008e4565b81810360408301526200102081848662000f4e565b90509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200108a60268362000900565b915062001097826200102c565b604082019050919050565b60006020820190508181036000830152620010bd816200107b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010fc60208362000900565b91506200110982620010c4565b602082019050919050565b600060208201905081810360008301526200112f81620010ed565b905091905056fe60806040523480156200001157600080fd5b50604051620017803803806200178083398181016040528101906200003791906200037d565b620000576200004b620000e360201b60201c565b620000eb60201b60201c565b826001908162000068919062000662565b5081600281905550806003908162000081919062000662565b506002546001604051620000969190620007e3565b60405180910390207f7764f44d9ad14ece3e2283526cda54ca12126fe6041ca731ea4b6571220f34e5600330604051620000d2929190620008e2565b60405180910390a350505062000916565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200021882620001cd565b810181811067ffffffffffffffff821117156200023a5762000239620001de565b5b80604052505050565b60006200024f620001af565b90506200025d82826200020d565b919050565b600067ffffffffffffffff82111562000280576200027f620001de565b5b6200028b82620001cd565b9050602081019050919050565b60005b83811015620002b85780820151818401526020810190506200029b565b60008484015250505050565b6000620002db620002d58462000262565b62000243565b905082815260208101848484011115620002fa57620002f9620001c8565b5b6200030784828562000298565b509392505050565b600082601f830112620003275762000326620001c3565b5b815162000339848260208601620002c4565b91505092915050565b6000819050919050565b620003578162000342565b81146200036357600080fd5b50565b60008151905062000377816200034c565b92915050565b600080600060608486031215620003995762000398620001b9565b5b600084015167ffffffffffffffff811115620003ba57620003b9620001be565b5b620003c8868287016200030f565b9350506020620003db8682870162000366565b925050604084015167ffffffffffffffff811115620003ff57620003fe620001be565b5b6200040d868287016200030f565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200046a57607f821691505b60208210810362000480576200047f62000422565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004ab565b620004f68683620004ab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005436200053d62000537846200050e565b62000518565b6200050e565b9050919050565b6000819050919050565b6200055f8362000522565b620005776200056e826200054a565b848454620004b8565b825550505050565b600090565b6200058e6200057f565b6200059b81848462000554565b505050565b5b81811015620005c357620005b760008262000584565b600181019050620005a1565b5050565b601f8211156200061257620005dc8162000486565b620005e7846200049b565b81016020851015620005f7578190505b6200060f62000606856200049b565b830182620005a0565b50505b505050565b600082821c905092915050565b6000620006376000198460080262000617565b1980831691505092915050565b600062000652838362000624565b9150826002028217905092915050565b6200066d8262000417565b67ffffffffffffffff811115620006895762000688620001de565b5b62000695825462000451565b620006a2828285620005c7565b600060209050601f831160018114620006da5760008415620006c5578287015190505b620006d1858262000644565b86555062000741565b601f198416620006ea8662000486565b60005b828110156200071457848901518255600182019150602085019450602081019050620006ed565b8683101562000734578489015162000730601f89168262000624565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60008154620007638162000451565b6200076f818662000749565b945060018216600081146200078d5760018114620007a357620007da565b60ff1983168652811515820286019350620007da565b620007ae8562000486565b60005b83811015620007d257815481890152600182019150602081019050620007b1565b838801955050505b50505092915050565b6000620007f1828462000754565b915081905092915050565b600082825260208201905092915050565b600081546200081c8162000451565b620008288186620007fc565b945060018216600081146200084657600181146200085d5762000894565b60ff19831686528115156020028601935062000894565b620008688562000486565b60005b838110156200088c578154818901526001820191506020810190506200086b565b808801955050505b50505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ca826200089d565b9050919050565b620008dc81620008bd565b82525050565b60006040820190508181036000830152620008fe81856200080d565b90506200090f6020830184620008d1565b9392505050565b610e5a80620009266000396000f3fe60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b14610119578063af640d0f14610144578063dd5b64de1461016f578063f2fde38b1461018b5761007b565b806309bd5a601461008057806357de26a4146100ab578063715018a6146100d757806373d4a13a146100ee575b600080fd5b34801561008c57600080fd5b506100956101b4565b6040516100a2919061060e565b60405180910390f35b3480156100b757600080fd5b506100c06101ba565b6040516100ce9291906106b9565b60405180910390f35b3480156100e357600080fd5b506100ec610257565b005b3480156100fa57600080fd5b5061010361026b565b60405161011091906106e9565b60405180910390f35b34801561012557600080fd5b5061012e6102f9565b60405161013b919061074c565b60405180910390f35b34801561015057600080fd5b50610159610322565b60405161016691906106e9565b60405180910390f35b61018960048036038101906101849190610802565b6103b0565b005b34801561019757600080fd5b506101b260048036038101906101ad919061088e565b610428565b005b60025481565b6000606060025460038080546101cf906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108ea565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b50505050509050915091509091565b61025f6104ab565b6102696000610529565b565b60038054610278906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102a4906108ea565b80156102f15780601f106102c6576101008083540402835291602001916102f1565b820191906000526020600020905b8154815290600101906020018083116102d457829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461032f906108ea565b80601f016020809104026020016040519081016040528092919081815260200182805461035b906108ea565b80156103a85780601f1061037d576101008083540402835291602001916103a8565b820191906000526020600020905b81548152906001019060200180831161038b57829003601f168201915b505050505081565b6103b86104ab565b826002819055508181600391826103d0929190610b0b565b5060025460016040516103e39190610c69565b60405180910390207f6769ea8a229aa00e664f97583a3fc36ec6fec2b3eb817d74174dad73edaf9c48600360405161041b9190610d04565b60405180910390a3505050565b6104306104ab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049690610d98565b60405180910390fd5b6104a881610529565b50565b6104b36105ed565b73ffffffffffffffffffffffffffffffffffffffff166104d16102f9565b73ffffffffffffffffffffffffffffffffffffffff1614610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e90610e04565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000819050919050565b610608816105f5565b82525050565b600060208201905061062360008301846105ff565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610663578082015181840152602081019050610648565b60008484015250505050565b6000601f19601f8301169050919050565b600061068b82610629565b6106958185610634565b93506106a5818560208601610645565b6106ae8161066f565b840191505092915050565b60006040820190506106ce60008301856105ff565b81810360208301526106e08184610680565b90509392505050565b600060208201905081810360008301526107038184610680565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107368261070b565b9050919050565b6107468161072b565b82525050565b6000602082019050610761600083018461073d565b92915050565b600080fd5b600080fd5b61077a816105f5565b811461078557600080fd5b50565b60008135905061079781610771565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126107c2576107c161079d565b5b8235905067ffffffffffffffff8111156107df576107de6107a2565b5b6020830191508360018202830111156107fb576107fa6107a7565b5b9250929050565b60008060006040848603121561081b5761081a610767565b5b600061082986828701610788565b935050602084013567ffffffffffffffff81111561084a5761084961076c565b5b610856868287016107ac565b92509250509250925092565b61086b8161072b565b811461087657600080fd5b50565b60008135905061088881610862565b92915050565b6000602082840312156108a4576108a3610767565b5b60006108b284828501610879565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061090257607f821691505b602082108103610915576109146108bb565b5b50919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026109b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261097a565b6109c1868361097a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610a08610a036109fe846109d9565b6109e3565b6109d9565b9050919050565b6000819050919050565b610a22836109ed565b610a36610a2e82610a0f565b848454610987565b825550505050565b600090565b610a4b610a3e565b610a56818484610a19565b505050565b5b81811015610a7a57610a6f600082610a43565b600181019050610a5c565b5050565b601f821115610abf57610a9081610955565b610a998461096a565b81016020851015610aa8578190505b610abc610ab48561096a565b830182610a5b565b50505b505050565b600082821c905092915050565b6000610ae260001984600802610ac4565b1980831691505092915050565b6000610afb8383610ad1565b9150826002028217905092915050565b610b15838361091b565b67ffffffffffffffff811115610b2e57610b2d610926565b5b610b3882546108ea565b610b43828285610a7e565b6000601f831160018114610b725760008415610b60578287013590505b610b6a8582610aef565b865550610bd2565b601f198416610b8086610955565b60005b82811015610ba857848901358255600182019150602085019450602081019050610b83565b86831015610bc55784890135610bc1601f891682610ad1565b8355505b6001600288020188555050505b50505050505050565b600081905092915050565b60008154610bf3816108ea565b610bfd8186610bdb565b94506001821660008114610c185760018114610c2d57610c60565b60ff1983168652811515820286019350610c60565b610c3685610955565b60005b83811015610c5857815481890152600182019150602081019050610c39565b838801955050505b50505092915050565b6000610c758284610be6565b915081905092915050565b60008154610c8d816108ea565b610c978186610634565b94506001821660008114610cb25760018114610cc857610cfb565b60ff198316865281151560200286019350610cfb565b610cd185610955565b60005b83811015610cf357815481890152600182019150602081019050610cd4565b808801955050505b50505092915050565b60006020820190508181036000830152610d1e8184610c80565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610d82602683610634565b9150610d8d82610d26565b604082019050919050565b60006020820190508181036000830152610db181610d75565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610dee602083610634565b9150610df982610db8565b602082019050919050565b60006020820190508181036000830152610e1d81610de1565b905091905056fea2646970667358221220e2b924101fe3a256f757062c05598ce85fed08f3cca1a27f9007a9121742d02864736f6c63430008130033a2646970667358221220d71d124a52ed3fdac165d9c7c26d086bbbedceb8ef5845f20b3d3a30441e85b464736f6c63430008130033