false
false
0

Contract Address Details

0x95c3cFa0011A2556a582f84A68b40D9fd1545334

Token
Callisto Security SBT (AuditsSBT)
Creator
0xc7d98c–7f3521 at 0xc9272c–b9333c
Balance
0 CLO
Tokens
Fetching tokens...
Transactions
1 Transactions
Transfers
0 Transfers
Gas Used
234,024
Last Balance Update
18596943
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
CallistoSecuritySBT




Optimization enabled
false
Compiler version
v0.8.18+commit.87f61d96




EVM Version
default




Verified at
2024-09-26T15:24:55.713698Z

Constructor Arguments

0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002468747470733a2f2f6175646974732e63616c6c6973746f2e6e6574776f726b2f3832302f00000000000000000000000000000000000000000000000000000000

Arg [0] (string) : https://audits.callisto.network/820/

              

Contract source code

// SPDX-License-Identifier: No License (None)
pragma solidity 0.8.18;

abstract contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

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

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0),"Zero address not allowed");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

}

contract CallistoSecuritySBT is Ownable {

    string public constant name = "Callisto Security SBT";
    string public constant symbol = "AuditsSBT";
    string private baseURI;
    uint256 public totalSupply;


    struct Report {
        address auditedContract;
        uint8 lowSeverityIssues;
        uint8 mediumSeverityIssues;
        uint8 highSeverityIssues;
        uint8 ownersPrivileges;
        uint8 rank; // overall security rank
        string auditor; // auditor of contract (company, site URL)
        string reportURL;   // report URL (IPFS or auditors website)
        string developerNotes;  // developer can add arbitrary notes
    }

    mapping(address _contract => address _developer) public contractDeveloper;  //  developer (owner) of audited contract
    mapping(uint256 _tokenId => address _contract) public ownerOf;
    mapping(uint256 _tokenId => Report) public reports;
    mapping(address _manager => bool _active) public managers;
    mapping(address _contract => uint256[] _tokenId) public tokensOfOwner;
    mapping(address _contract => mapping(uint256 _tokenId => uint256 _index)) private _ownedTokens;

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event SetManager(address manager, bool isActive);

    modifier onlyManagerOrOwner() {
        require(managers[msg.sender] || owner() == msg.sender, "onlyManagerOrOwner");
        _;
    }

    modifier onlyDeveloper(address _contract) {
        require(contractDeveloper[_contract] == msg.sender, "Only developer");
        _;
    }

    constructor (string memory _baseURI) {
        baseURI = _baseURI;
    }

    // returns number of reports
    function balanceOf(address _contract) public view returns(uint256) {
        return tokensOfOwner[_contract].length;
    }

    // returns URI to metadata. For example, "https://audits.callisto.network/820/"
    function tokenURI(uint256 _tokenId) external view returns (string memory) {
        return string.concat(baseURI, uint256ToString(_tokenId));
    }

    function getReports(address _auditedContract) external view returns(Report[] memory) {
        uint256 numberOfReports = tokensOfOwner[_auditedContract].length;
        Report[] memory r = new Report[](numberOfReports);
        for (uint i=0; i < numberOfReports; i++) {
            r[i] = reports[tokensOfOwner[_auditedContract][i]];
        }
        return r;
    }

    // set referral address for user "to", if it was not set before 
    function addReport(address _to, Report calldata _report) external onlyManagerOrOwner {
        uint256 tokenId = totalSupply;
        totalSupply = tokenId + 1; // increment of totalSupply 
        ownerOf[tokenId] = _to;
        uint256 index = tokensOfOwner[_to].length;
        tokensOfOwner[_to].push(tokenId);
        _ownedTokens[_to][tokenId] = index;
        reports[tokenId] = _report;
        emit Transfer(address(0), _to, tokenId);
    }

    // delete token (report)
    function deleteReport(address _auditedContract, uint256 _tokenId) external onlyManagerOrOwner {
        require(_auditedContract == reports[_tokenId].auditedContract, "Wrong address");
        uint256 index = _ownedTokens[_auditedContract][_tokenId];
        uint256 lastIndex = tokensOfOwner[_auditedContract].length - 1;
        if (index != lastIndex) {
            uint256 lastToken = tokensOfOwner[_auditedContract][lastIndex];
            tokensOfOwner[_auditedContract][index] = lastToken;
            _ownedTokens[_auditedContract][lastToken] = index;
        }
        tokensOfOwner[_auditedContract].pop();
        delete _ownedTokens[_auditedContract][_tokenId];
        delete reports[_tokenId];
        emit Transfer(_auditedContract, address(0), _tokenId);
    }

    // update report
    function updateReport(address _auditedContract, uint256 _tokenId, Report calldata _report) external onlyManagerOrOwner {
        require(_auditedContract == reports[_tokenId].auditedContract, "Wrong address");
        reports[_tokenId] = _report;
    }

    // Developer can add own notes to contract report
    function updateDeveloperNotes(address _auditedContract, uint256 _tokenId, string calldata _notes) external onlyDeveloper(_auditedContract) {
        require(_auditedContract == reports[_tokenId].auditedContract, "Wrong address");
        reports[_tokenId].developerNotes = _notes;
    }

    // set developer of audited contract. Developer can add own notes to contract report
    function setDeveloper(address _contract, address _developer) external onlyManagerOrOwner {
        require(balanceOf(_contract) != 0, "No reports");
        require(_developer != address(0));
        contractDeveloper[_contract] = _developer;
    }

    // set baseURI
    function setBaseURI(string calldata _baseURI) external onlyOwner {
        baseURI = _baseURI;
    }

    // set manager address 
    function setManager(address _manager, bool _isActive) external onlyOwner {
        require(_manager != address(0));
        managers[_manager] = _isActive;
        emit SetManager(_manager, _isActive);
    }

    function uint256ToString(uint256 number) internal pure returns (string memory) {
        if (number == 0) { return "0"; }
        uint256 length;
        uint256 temp = number;
        while (temp != 0) {
            length++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(length);
        while (number != 0) {
            length -= 1;
            buffer[length] = bytes1(uint8(48 + (number % 10)));
            number /= 10;
        }
       return string(buffer);
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"_baseURI","internalType":"string"}]},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"SetManager","inputs":[{"type":"address","name":"manager","internalType":"address","indexed":false},{"type":"bool","name":"isActive","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"addReport","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"tuple","name":"_report","internalType":"struct CallistoSecuritySBT.Report","components":[{"type":"address","name":"auditedContract","internalType":"address"},{"type":"uint8","name":"lowSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"mediumSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"highSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"ownersPrivileges","internalType":"uint8"},{"type":"uint8","name":"rank","internalType":"uint8"},{"type":"string","name":"auditor","internalType":"string"},{"type":"string","name":"reportURL","internalType":"string"},{"type":"string","name":"developerNotes","internalType":"string"}]}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"_contract","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"_developer","internalType":"address"}],"name":"contractDeveloper","inputs":[{"type":"address","name":"_contract","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deleteReport","inputs":[{"type":"address","name":"_auditedContract","internalType":"address"},{"type":"uint256","name":"_tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"tuple[]","name":"","internalType":"struct CallistoSecuritySBT.Report[]","components":[{"type":"address","name":"auditedContract","internalType":"address"},{"type":"uint8","name":"lowSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"mediumSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"highSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"ownersPrivileges","internalType":"uint8"},{"type":"uint8","name":"rank","internalType":"uint8"},{"type":"string","name":"auditor","internalType":"string"},{"type":"string","name":"reportURL","internalType":"string"},{"type":"string","name":"developerNotes","internalType":"string"}]}],"name":"getReports","inputs":[{"type":"address","name":"_auditedContract","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"_active","internalType":"bool"}],"name":"managers","inputs":[{"type":"address","name":"_manager","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"_contract","internalType":"address"}],"name":"ownerOf","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"auditedContract","internalType":"address"},{"type":"uint8","name":"lowSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"mediumSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"highSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"ownersPrivileges","internalType":"uint8"},{"type":"uint8","name":"rank","internalType":"uint8"},{"type":"string","name":"auditor","internalType":"string"},{"type":"string","name":"reportURL","internalType":"string"},{"type":"string","name":"developerNotes","internalType":"string"}],"name":"reports","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBaseURI","inputs":[{"type":"string","name":"_baseURI","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDeveloper","inputs":[{"type":"address","name":"_contract","internalType":"address"},{"type":"address","name":"_developer","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setManager","inputs":[{"type":"address","name":"_manager","internalType":"address"},{"type":"bool","name":"_isActive","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"tokenURI","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"}],"name":"tokensOfOwner","inputs":[{"type":"address","name":"_contract","internalType":"address"},{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateDeveloperNotes","inputs":[{"type":"address","name":"_auditedContract","internalType":"address"},{"type":"uint256","name":"_tokenId","internalType":"uint256"},{"type":"string","name":"_notes","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateReport","inputs":[{"type":"address","name":"_auditedContract","internalType":"address"},{"type":"uint256","name":"_tokenId","internalType":"uint256"},{"type":"tuple","name":"_report","internalType":"struct CallistoSecuritySBT.Report","components":[{"type":"address","name":"auditedContract","internalType":"address"},{"type":"uint8","name":"lowSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"mediumSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"highSeverityIssues","internalType":"uint8"},{"type":"uint8","name":"ownersPrivileges","internalType":"uint8"},{"type":"uint8","name":"rank","internalType":"uint8"},{"type":"string","name":"auditor","internalType":"string"},{"type":"string","name":"reportURL","internalType":"string"},{"type":"string","name":"developerNotes","internalType":"string"}]}]}]
              

Contract Creation Code

Verify & Publish
0x60806040523480156200001157600080fd5b5060405162003a6a38038062003a6a83398181016040528101906200003791906200027e565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060019081620000e391906200051a565b505062000601565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001548262000109565b810181811067ffffffffffffffff821117156200017657620001756200011a565b5b80604052505050565b60006200018b620000eb565b905062000199828262000149565b919050565b600067ffffffffffffffff821115620001bc57620001bb6200011a565b5b620001c78262000109565b9050602081019050919050565b60005b83811015620001f4578082015181840152602081019050620001d7565b60008484015250505050565b60006200021762000211846200019e565b6200017f565b90508281526020810184848401111562000236576200023562000104565b5b62000243848285620001d4565b509392505050565b600082601f830112620002635762000262620000ff565b5b81516200027584826020860162000200565b91505092915050565b600060208284031215620002975762000296620000f5565b5b600082015167ffffffffffffffff811115620002b857620002b7620000fa565b5b620002c6848285016200024b565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200032257607f821691505b602082108103620003385762000337620002da565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000363565b620003ae868362000363565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003fb620003f5620003ef84620003c6565b620003d0565b620003c6565b9050919050565b6000819050919050565b6200041783620003da565b6200042f620004268262000402565b84845462000370565b825550505050565b600090565b6200044662000437565b620004538184846200040c565b505050565b5b818110156200047b576200046f6000826200043c565b60018101905062000459565b5050565b601f821115620004ca5762000494816200033e565b6200049f8462000353565b81016020851015620004af578190505b620004c7620004be8562000353565b83018262000458565b50505b505050565b600082821c905092915050565b6000620004ef60001984600802620004cf565b1980831691505092915050565b60006200050a8383620004dc565b9150826002028217905092915050565b6200052582620002cf565b67ffffffffffffffff8111156200054157620005406200011a565b5b6200054d825462000309565b6200055a8282856200047f565b600060209050601f8311600181146200059257600084156200057d578287015190505b620005898582620004fc565b865550620005f9565b601f198416620005a2866200033e565b60005b82811015620005cc57848901518255600182019150602085019450602081019050620005a5565b86831015620005ec5784890151620005e8601f891682620004dc565b8355505b6001600288020188555050505b505050505050565b61345980620006116000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063c87b56dd11610071578063c87b56dd1461032d578063c942adf71461035d578063db05040d14610395578063f2fde38b146103c5578063fdff9b4d146103e15761012c565b806370a08231146102895780638da5cb5b146102b957806395d89b41146102d7578063a5e90eee146102f5578063b0380a3e146103115761012c565b80634f511102116100f45780634f511102146101d557806355f804b3146101f15780636352211e1461020d57806365aabf9f1461023d57806368c179d0146102595761012c565b806306fdde031461013157806312294ba21461014f57806318160ddd1461016b578063186dd3bb146101895780633d3d7182146101a5575b600080fd5b610139610411565b6040516101469190611f38565b60405180910390f35b61016960048036038101906101649190611fe7565b61044a565b005b610173610706565b604051610180919061205c565b60405180910390f35b6101a3600480360381019061019e9190612108565b61070c565b005b6101bf60048036038101906101ba919061217c565b6108ab565b6040516101cc91906123b3565b60405180910390f35b6101ef60048036038101906101ea91906123d5565b610caa565b005b61020b60048036038101906102069190612415565b610e79565b005b61022760048036038101906102229190612462565b610f04565b604051610234919061249e565b60405180910390f35b610257600480360381019061025291906124b9565b610f37565b005b610273600480360381019061026e91906124b9565b611456565b604051610280919061205c565b60405180910390f35b6102a3600480360381019061029e919061217c565b611487565b6040516102b0919061205c565b60405180910390f35b6102c16114d3565b6040516102ce919061249e565b60405180910390f35b6102df6114fc565b6040516102ec9190611f38565b60405180910390f35b61030f600480360381019061030a9190612531565b611535565b005b61032b60048036038101906103269190612571565b611677565b005b61034760048036038101906103429190612462565b61180c565b6040516103549190611f38565b60405180910390f35b61037760048036038101906103729190612462565b611840565b60405161038c999897969594939291906125ef565b60405180910390f35b6103af60048036038101906103aa919061217c565b611a87565b6040516103bc919061249e565b60405180910390f35b6103df60048036038101906103da919061217c565b611aba565b005b6103fb60048036038101906103f6919061217c565b611c5b565b60405161040891906126a0565b60405180910390f35b6040518060400160405280601581526020017f43616c6c6973746f20536563757269747920534254000000000000000000000081525081565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806104d457503373ffffffffffffffffffffffffffffffffffffffff166104bc6114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050a90612707565b60405180910390fd5b600060025490506001816105279190612756565b600281905550826004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091505580600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550826005600084815260200190815260200160002081816106a19190612f82565b905050818473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60025481565b833373ffffffffffffffffffffffffffffffffffffffff16600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190612fdc565b60405180910390fd5b6005600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087590613048565b60405180910390fd5b82826005600087815260200190815260200160002060030191826108a3929190612d74565b505050505050565b60606000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008167ffffffffffffffff8111156109105761090f612b43565b5b60405190808252806020026020018201604052801561094957816020015b610936611dda565b81526020019060019003908161092e5790505b50905060005b82811015610c9f5760056000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106109ac576109ab613068565b5b90600052602060002001548152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff1681526020016000820160169054906101000a900460ff1660ff1660ff1681526020016000820160179054906101000a900460ff1660ff1660ff1681526020016000820160189054906101000a900460ff1660ff1660ff168152602001600182018054610ac890612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610af490612ba1565b8015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b50505050508152602001600282018054610b5a90612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8690612ba1565b8015610bd35780601f10610ba857610100808354040283529160200191610bd3565b820191906000526020600020905b815481529060010190602001808311610bb657829003601f168201915b50505050508152602001600382018054610bec90612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1890612ba1565b8015610c655780601f10610c3a57610100808354040283529160200191610c65565b820191906000526020600020905b815481529060010190602001808311610c4857829003601f168201915b505050505081525050828281518110610c8157610c80613068565b5b60200260200101819052508080610c9790613097565b91505061094f565b508092505050919050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610d3457503373ffffffffffffffffffffffffffffffffffffffff16610d1c6114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90612707565b60405180910390fd5b6000610d7e83611487565b03610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db59061312b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df757600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16610e986114d3565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590613197565b60405180910390fd5b818160019182610eff929190612d74565b505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610fc157503373ffffffffffffffffffffffffffffffffffffffff16610fa96114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff790612707565b60405180910390fd5b6005600082815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613048565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905060006001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061114a91906131b7565b905080821461126a576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106111a6576111a5613068565b5b9060005260206000200154905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061120557611204613068565b5b906000526020600020018190555082600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550505b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806112b9576112b86131eb565b5b60019003818190600052602060002001600090559055600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000905560056000848152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556000820160156101000a81549060ff02191690556000820160166101000a81549060ff02191690556000820160176101000a81549060ff02191690556000820160186101000a81549060ff02191690556001820160006113d29190611e4b565b6002820160006113e29190611e4b565b6003820160006113f29190611e4b565b505082600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6007602052816000526040600020818154811061147257600080fd5b90600052602060002001600091509150505481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600981526020017f417564697473534254000000000000000000000000000000000000000000000081525081565b3373ffffffffffffffffffffffffffffffffffffffff166115546114d3565b73ffffffffffffffffffffffffffffffffffffffff16146115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190613197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e357600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fbe9474bb3e78da7e315cdffa5cfa30b767fcc95bbf44a6197da60228eea10286828260405161166b92919061321a565b60405180910390a15050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061170157503373ffffffffffffffffffffffffffffffffffffffff166116e96114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790612707565b60405180910390fd5b6005600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613048565b60405180910390fd5b806005600084815260200190815260200160002081816118049190612f82565b905050505050565b6060600161181983611c7b565b60405160200161182a929190613302565b6040516020818303038152906040529050919050565b60056020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060000160169054906101000a900460ff16908060000160179054906101000a900460ff16908060000160189054906101000a900460ff16908060010180546118e890612ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461191490612ba1565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b50505050509080600201805461197690612ba1565b80601f01602080910402602001604051908101604052809291908181526020018280546119a290612ba1565b80156119ef5780601f106119c4576101008083540402835291602001916119ef565b820191906000526020600020905b8154815290600101906020018083116119d257829003601f168201915b505050505090806003018054611a0490612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3090612ba1565b8015611a7d5780601f10611a5257610100808354040283529160200191611a7d565b820191906000526020600020905b815481529060010190602001808311611a6057829003601f168201915b5050505050905089565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611ad96114d3565b73ffffffffffffffffffffffffffffffffffffffff1614611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2690613197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9590613372565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b606060008203611cc2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611dd5565b6000808390505b60008114611cf3578180611cdc90613097565b925050600a81611cec91906133c1565b9050611cc9565b60008267ffffffffffffffff811115611d0f57611d0e612b43565b5b6040519080825280601f01601f191660200182016040528015611d415781602001600182028036833780820191505090505b5090505b60008514611dce57600183611d5a91906131b7565b9250600a85611d6991906133f2565b6030611d759190612756565b60f81b818481518110611d8b57611d8a613068565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611dc791906133c1565b9450611d45565b8093505050505b919050565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff1681526020016060815260200160608152602001606081525090565b508054611e5790612ba1565b6000825580601f10611e695750611e88565b601f016020900490600052602060002090810190611e879190611e8b565b5b50565b5b80821115611ea4576000816000905550600101611e8c565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ee2578082015181840152602081019050611ec7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f0a82611ea8565b611f148185611eb3565b9350611f24818560208601611ec4565b611f2d81611eee565b840191505092915050565b60006020820190508181036000830152611f528184611eff565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f8f82611f64565b9050919050565b611f9f81611f84565b8114611faa57600080fd5b50565b600081359050611fbc81611f96565b92915050565b600080fd5b60006101208284031215611fde57611fdd611fc2565b5b81905092915050565b60008060408385031215611ffe57611ffd611f5a565b5b600061200c85828601611fad565b925050602083013567ffffffffffffffff81111561202d5761202c611f5f565b5b61203985828601611fc7565b9150509250929050565b6000819050919050565b61205681612043565b82525050565b6000602082019050612071600083018461204d565b92915050565b61208081612043565b811461208b57600080fd5b50565b60008135905061209d81612077565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126120c8576120c76120a3565b5b8235905067ffffffffffffffff8111156120e5576120e46120a8565b5b602083019150836001820283011115612101576121006120ad565b5b9250929050565b6000806000806060858703121561212257612121611f5a565b5b600061213087828801611fad565b94505060206121418782880161208e565b935050604085013567ffffffffffffffff81111561216257612161611f5f565b5b61216e878288016120b2565b925092505092959194509250565b60006020828403121561219257612191611f5a565b5b60006121a084828501611fad565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121de81611f84565b82525050565b600060ff82169050919050565b6121fa816121e4565b82525050565b600082825260208201905092915050565b600061221c82611ea8565b6122268185612200565b9350612236818560208601611ec4565b61223f81611eee565b840191505092915050565b60006101208301600083015161226360008601826121d5565b50602083015161227660208601826121f1565b50604083015161228960408601826121f1565b50606083015161229c60608601826121f1565b5060808301516122af60808601826121f1565b5060a08301516122c260a08601826121f1565b5060c083015184820360c08601526122da8282612211565b91505060e083015184820360e08601526122f48282612211565b9150506101008301518482036101008601526123108282612211565b9150508091505092915050565b6000612329838361224a565b905092915050565b6000602082019050919050565b6000612349826121a9565b61235381856121b4565b935083602082028501612365856121c5565b8060005b858110156123a15784840389528151612382858261231d565b945061238d83612331565b925060208a01995050600181019050612369565b50829750879550505050505092915050565b600060208201905081810360008301526123cd818461233e565b905092915050565b600080604083850312156123ec576123eb611f5a565b5b60006123fa85828601611fad565b925050602061240b85828601611fad565b9150509250929050565b6000806020838503121561242c5761242b611f5a565b5b600083013567ffffffffffffffff81111561244a57612449611f5f565b5b612456858286016120b2565b92509250509250929050565b60006020828403121561247857612477611f5a565b5b60006124868482850161208e565b91505092915050565b61249881611f84565b82525050565b60006020820190506124b3600083018461248f565b92915050565b600080604083850312156124d0576124cf611f5a565b5b60006124de85828601611fad565b92505060206124ef8582860161208e565b9150509250929050565b60008115159050919050565b61250e816124f9565b811461251957600080fd5b50565b60008135905061252b81612505565b92915050565b6000806040838503121561254857612547611f5a565b5b600061255685828601611fad565b92505060206125678582860161251c565b9150509250929050565b60008060006060848603121561258a57612589611f5a565b5b600061259886828701611fad565b93505060206125a98682870161208e565b925050604084013567ffffffffffffffff8111156125ca576125c9611f5f565b5b6125d686828701611fc7565b9150509250925092565b6125e9816121e4565b82525050565b600061012082019050612605600083018c61248f565b612612602083018b6125e0565b61261f604083018a6125e0565b61262c60608301896125e0565b61263960808301886125e0565b61264660a08301876125e0565b81810360c08301526126588186611eff565b905081810360e083015261266c8185611eff565b90508181036101008301526126818184611eff565b90509a9950505050505050505050565b61269a816124f9565b82525050565b60006020820190506126b56000830184612691565b92915050565b7f6f6e6c794d616e616765724f724f776e65720000000000000000000000000000600082015250565b60006126f1601283611eb3565b91506126fc826126bb565b602082019050919050565b60006020820190508181036000830152612720816126e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061276182612043565b915061276c83612043565b925082820190508082111561278457612783612727565b5b92915050565b6000813561279781611f96565b80915050919050565b60008160001b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff6127cd846127a0565b9350801983169250808416831791505092915050565b6000819050919050565b60006128086128036127fe84611f64565b6127e3565b611f64565b9050919050565b600061281a826127ed565b9050919050565b600061282c8261280f565b9050919050565b6000819050919050565b61284682612821565b61285961285282612833565b83546127ad565b8255505050565b612869816121e4565b811461287457600080fd5b50565b6000813561288481612860565b80915050919050565b60008160a01b9050919050565b600074ff00000000000000000000000000000000000000006128bb8461288d565b9350801983169250808416831791505092915050565b60006128ec6128e76128e2846121e4565b6127e3565b6121e4565b9050919050565b6000819050919050565b612906826128d1565b612919612912826128f3565b835461289a565b8255505050565b60008160a81b9050919050565b600075ff00000000000000000000000000000000000000000061294f84612920565b9350801983169250808416831791505092915050565b61296e826128d1565b61298161297a826128f3565b835461292d565b8255505050565b60008160b01b9050919050565b600076ff000000000000000000000000000000000000000000006129b884612988565b9350801983169250808416831791505092915050565b6129d7826128d1565b6129ea6129e3826128f3565b8354612995565b8255505050565b60008160b81b9050919050565b600077ff0000000000000000000000000000000000000000000000612a22846129f1565b9350801983169250808416831791505092915050565b612a41826128d1565b612a54612a4d826128f3565b83546129fe565b8255505050565b60008160c01b9050919050565b600078ff000000000000000000000000000000000000000000000000612a8d84612a5b565b9350801983169250808416831791505092915050565b612aac826128d1565b612abf612ab8826128f3565b8354612a68565b8255505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612af257612af1612ac6565b5b80840192508235915067ffffffffffffffff821115612b1457612b13612acb565b5b602083019250600182023603831315612b3057612b2f612ad0565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bb957607f821691505b602082108103612bcc57612bcb612b72565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612c347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612bf7565b612c3e8683612bf7565b95508019841693508086168417925050509392505050565b6000612c71612c6c612c6784612043565b6127e3565b612043565b9050919050565b6000819050919050565b612c8b83612c56565b612c9f612c9782612c78565b848454612c04565b825550505050565b600090565b612cb4612ca7565b612cbf818484612c82565b505050565b5b81811015612ce357612cd8600082612cac565b600181019050612cc5565b5050565b601f821115612d2857612cf981612bd2565b612d0284612be7565b81016020851015612d11578190505b612d25612d1d85612be7565b830182612cc4565b50505b505050565b600082821c905092915050565b6000612d4b60001984600802612d2d565b1980831691505092915050565b6000612d648383612d3a565b9150826002028217905092915050565b612d7e8383612b38565b67ffffffffffffffff811115612d9757612d96612b43565b5b612da18254612ba1565b612dac828285612ce7565b6000601f831160018114612ddb5760008415612dc9578287013590505b612dd38582612d58565b865550612e3b565b601f198416612de986612bd2565b60005b82811015612e1157848901358255600182019150602085019450602081019050612dec565b86831015612e2e5784890135612e2a601f891682612d3a565b8355505b6001600288020188555050505b50505050505050565b612e4f838383612d74565b505050565b600081016000830180612e668161278a565b9050612e72818461283d565b505050600081016020830180612e8781612877565b9050612e9381846128fd565b505050600081016040830180612ea881612877565b9050612eb48184612965565b505050600081016060830180612ec981612877565b9050612ed581846129ce565b505050600081016080830180612eea81612877565b9050612ef68184612a38565b5050506000810160a0830180612f0b81612877565b9050612f178184612aa3565b5050506001810160c08301612f2c8185612ad5565b612f37818386612e44565b505050506002810160e08301612f4d8185612ad5565b612f58818386612e44565b50505050600381016101008301612f6f8185612ad5565b612f7a818386612e44565b505050505050565b612f8c8282612e54565b5050565b7f4f6e6c7920646576656c6f706572000000000000000000000000000000000000600082015250565b6000612fc6600e83611eb3565b9150612fd182612f90565b602082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b7f57726f6e67206164647265737300000000000000000000000000000000000000600082015250565b6000613032600d83611eb3565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130a282612043565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130d4576130d3612727565b5b600182019050919050565b7f4e6f207265706f72747300000000000000000000000000000000000000000000600082015250565b6000613115600a83611eb3565b9150613120826130df565b602082019050919050565b6000602082019050818103600083015261314481613108565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613181602083611eb3565b915061318c8261314b565b602082019050919050565b600060208201905081810360008301526131b081613174565b9050919050565b60006131c282612043565b91506131cd83612043565b92508282039050818111156131e5576131e4612727565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060408201905061322f600083018561248f565b61323c6020830184612691565b9392505050565b600081905092915050565b6000815461325b81612ba1565b6132658186613243565b945060018216600081146132805760018114613295576132c8565b60ff19831686528115158202860193506132c8565b61329e85612bd2565b60005b838110156132c0578154818901526001820191506020810190506132a1565b838801955050505b50505092915050565b60006132dc82611ea8565b6132e68185613243565b93506132f6818560208601611ec4565b80840191505092915050565b600061330e828561324e565b915061331a82846132d1565b91508190509392505050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b600061335c601883611eb3565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133cc82612043565b91506133d783612043565b9250826133e7576133e6613392565b5b828204905092915050565b60006133fd82612043565b915061340883612043565b92508261341857613417613392565b5b82820690509291505056fea26469706673582212203d25ca50e896295d76a7bdfdd71ce64a630a61dc3923e6ee179a20e9d0b2d65564736f6c634300081200330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002468747470733a2f2f6175646974732e63616c6c6973746f2e6e6574776f726b2f3832302f00000000000000000000000000000000000000000000000000000000

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063c87b56dd11610071578063c87b56dd1461032d578063c942adf71461035d578063db05040d14610395578063f2fde38b146103c5578063fdff9b4d146103e15761012c565b806370a08231146102895780638da5cb5b146102b957806395d89b41146102d7578063a5e90eee146102f5578063b0380a3e146103115761012c565b80634f511102116100f45780634f511102146101d557806355f804b3146101f15780636352211e1461020d57806365aabf9f1461023d57806368c179d0146102595761012c565b806306fdde031461013157806312294ba21461014f57806318160ddd1461016b578063186dd3bb146101895780633d3d7182146101a5575b600080fd5b610139610411565b6040516101469190611f38565b60405180910390f35b61016960048036038101906101649190611fe7565b61044a565b005b610173610706565b604051610180919061205c565b60405180910390f35b6101a3600480360381019061019e9190612108565b61070c565b005b6101bf60048036038101906101ba919061217c565b6108ab565b6040516101cc91906123b3565b60405180910390f35b6101ef60048036038101906101ea91906123d5565b610caa565b005b61020b60048036038101906102069190612415565b610e79565b005b61022760048036038101906102229190612462565b610f04565b604051610234919061249e565b60405180910390f35b610257600480360381019061025291906124b9565b610f37565b005b610273600480360381019061026e91906124b9565b611456565b604051610280919061205c565b60405180910390f35b6102a3600480360381019061029e919061217c565b611487565b6040516102b0919061205c565b60405180910390f35b6102c16114d3565b6040516102ce919061249e565b60405180910390f35b6102df6114fc565b6040516102ec9190611f38565b60405180910390f35b61030f600480360381019061030a9190612531565b611535565b005b61032b60048036038101906103269190612571565b611677565b005b61034760048036038101906103429190612462565b61180c565b6040516103549190611f38565b60405180910390f35b61037760048036038101906103729190612462565b611840565b60405161038c999897969594939291906125ef565b60405180910390f35b6103af60048036038101906103aa919061217c565b611a87565b6040516103bc919061249e565b60405180910390f35b6103df60048036038101906103da919061217c565b611aba565b005b6103fb60048036038101906103f6919061217c565b611c5b565b60405161040891906126a0565b60405180910390f35b6040518060400160405280601581526020017f43616c6c6973746f20536563757269747920534254000000000000000000000081525081565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806104d457503373ffffffffffffffffffffffffffffffffffffffff166104bc6114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050a90612707565b60405180910390fd5b600060025490506001816105279190612756565b600281905550826004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091505580600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550826005600084815260200190815260200160002081816106a19190612f82565b905050818473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60025481565b833373ffffffffffffffffffffffffffffffffffffffff16600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190612fdc565b60405180910390fd5b6005600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087590613048565b60405180910390fd5b82826005600087815260200190815260200160002060030191826108a3929190612d74565b505050505050565b60606000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008167ffffffffffffffff8111156109105761090f612b43565b5b60405190808252806020026020018201604052801561094957816020015b610936611dda565b81526020019060019003908161092e5790505b50905060005b82811015610c9f5760056000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106109ac576109ab613068565b5b90600052602060002001548152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff1681526020016000820160169054906101000a900460ff1660ff1660ff1681526020016000820160179054906101000a900460ff1660ff1660ff1681526020016000820160189054906101000a900460ff1660ff1660ff168152602001600182018054610ac890612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610af490612ba1565b8015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b50505050508152602001600282018054610b5a90612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8690612ba1565b8015610bd35780601f10610ba857610100808354040283529160200191610bd3565b820191906000526020600020905b815481529060010190602001808311610bb657829003601f168201915b50505050508152602001600382018054610bec90612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1890612ba1565b8015610c655780601f10610c3a57610100808354040283529160200191610c65565b820191906000526020600020905b815481529060010190602001808311610c4857829003601f168201915b505050505081525050828281518110610c8157610c80613068565b5b60200260200101819052508080610c9790613097565b91505061094f565b508092505050919050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610d3457503373ffffffffffffffffffffffffffffffffffffffff16610d1c6114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90612707565b60405180910390fd5b6000610d7e83611487565b03610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db59061312b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df757600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16610e986114d3565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590613197565b60405180910390fd5b818160019182610eff929190612d74565b505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610fc157503373ffffffffffffffffffffffffffffffffffffffff16610fa96114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff790612707565b60405180910390fd5b6005600082815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613048565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905060006001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061114a91906131b7565b905080821461126a576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106111a6576111a5613068565b5b9060005260206000200154905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061120557611204613068565b5b906000526020600020018190555082600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550505b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806112b9576112b86131eb565b5b60019003818190600052602060002001600090559055600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000905560056000848152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556000820160156101000a81549060ff02191690556000820160166101000a81549060ff02191690556000820160176101000a81549060ff02191690556000820160186101000a81549060ff02191690556001820160006113d29190611e4b565b6002820160006113e29190611e4b565b6003820160006113f29190611e4b565b505082600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6007602052816000526040600020818154811061147257600080fd5b90600052602060002001600091509150505481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600981526020017f417564697473534254000000000000000000000000000000000000000000000081525081565b3373ffffffffffffffffffffffffffffffffffffffff166115546114d3565b73ffffffffffffffffffffffffffffffffffffffff16146115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190613197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e357600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fbe9474bb3e78da7e315cdffa5cfa30b767fcc95bbf44a6197da60228eea10286828260405161166b92919061321a565b60405180910390a15050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061170157503373ffffffffffffffffffffffffffffffffffffffff166116e96114d3565b73ffffffffffffffffffffffffffffffffffffffff16145b611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790612707565b60405180910390fd5b6005600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613048565b60405180910390fd5b806005600084815260200190815260200160002081816118049190612f82565b905050505050565b6060600161181983611c7b565b60405160200161182a929190613302565b6040516020818303038152906040529050919050565b60056020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060000160169054906101000a900460ff16908060000160179054906101000a900460ff16908060000160189054906101000a900460ff16908060010180546118e890612ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461191490612ba1565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b50505050509080600201805461197690612ba1565b80601f01602080910402602001604051908101604052809291908181526020018280546119a290612ba1565b80156119ef5780601f106119c4576101008083540402835291602001916119ef565b820191906000526020600020905b8154815290600101906020018083116119d257829003601f168201915b505050505090806003018054611a0490612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3090612ba1565b8015611a7d5780601f10611a5257610100808354040283529160200191611a7d565b820191906000526020600020905b815481529060010190602001808311611a6057829003601f168201915b5050505050905089565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611ad96114d3565b73ffffffffffffffffffffffffffffffffffffffff1614611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2690613197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9590613372565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b606060008203611cc2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611dd5565b6000808390505b60008114611cf3578180611cdc90613097565b925050600a81611cec91906133c1565b9050611cc9565b60008267ffffffffffffffff811115611d0f57611d0e612b43565b5b6040519080825280601f01601f191660200182016040528015611d415781602001600182028036833780820191505090505b5090505b60008514611dce57600183611d5a91906131b7565b9250600a85611d6991906133f2565b6030611d759190612756565b60f81b818481518110611d8b57611d8a613068565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611dc791906133c1565b9450611d45565b8093505050505b919050565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff1681526020016060815260200160608152602001606081525090565b508054611e5790612ba1565b6000825580601f10611e695750611e88565b601f016020900490600052602060002090810190611e879190611e8b565b5b50565b5b80821115611ea4576000816000905550600101611e8c565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ee2578082015181840152602081019050611ec7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f0a82611ea8565b611f148185611eb3565b9350611f24818560208601611ec4565b611f2d81611eee565b840191505092915050565b60006020820190508181036000830152611f528184611eff565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f8f82611f64565b9050919050565b611f9f81611f84565b8114611faa57600080fd5b50565b600081359050611fbc81611f96565b92915050565b600080fd5b60006101208284031215611fde57611fdd611fc2565b5b81905092915050565b60008060408385031215611ffe57611ffd611f5a565b5b600061200c85828601611fad565b925050602083013567ffffffffffffffff81111561202d5761202c611f5f565b5b61203985828601611fc7565b9150509250929050565b6000819050919050565b61205681612043565b82525050565b6000602082019050612071600083018461204d565b92915050565b61208081612043565b811461208b57600080fd5b50565b60008135905061209d81612077565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126120c8576120c76120a3565b5b8235905067ffffffffffffffff8111156120e5576120e46120a8565b5b602083019150836001820283011115612101576121006120ad565b5b9250929050565b6000806000806060858703121561212257612121611f5a565b5b600061213087828801611fad565b94505060206121418782880161208e565b935050604085013567ffffffffffffffff81111561216257612161611f5f565b5b61216e878288016120b2565b925092505092959194509250565b60006020828403121561219257612191611f5a565b5b60006121a084828501611fad565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121de81611f84565b82525050565b600060ff82169050919050565b6121fa816121e4565b82525050565b600082825260208201905092915050565b600061221c82611ea8565b6122268185612200565b9350612236818560208601611ec4565b61223f81611eee565b840191505092915050565b60006101208301600083015161226360008601826121d5565b50602083015161227660208601826121f1565b50604083015161228960408601826121f1565b50606083015161229c60608601826121f1565b5060808301516122af60808601826121f1565b5060a08301516122c260a08601826121f1565b5060c083015184820360c08601526122da8282612211565b91505060e083015184820360e08601526122f48282612211565b9150506101008301518482036101008601526123108282612211565b9150508091505092915050565b6000612329838361224a565b905092915050565b6000602082019050919050565b6000612349826121a9565b61235381856121b4565b935083602082028501612365856121c5565b8060005b858110156123a15784840389528151612382858261231d565b945061238d83612331565b925060208a01995050600181019050612369565b50829750879550505050505092915050565b600060208201905081810360008301526123cd818461233e565b905092915050565b600080604083850312156123ec576123eb611f5a565b5b60006123fa85828601611fad565b925050602061240b85828601611fad565b9150509250929050565b6000806020838503121561242c5761242b611f5a565b5b600083013567ffffffffffffffff81111561244a57612449611f5f565b5b612456858286016120b2565b92509250509250929050565b60006020828403121561247857612477611f5a565b5b60006124868482850161208e565b91505092915050565b61249881611f84565b82525050565b60006020820190506124b3600083018461248f565b92915050565b600080604083850312156124d0576124cf611f5a565b5b60006124de85828601611fad565b92505060206124ef8582860161208e565b9150509250929050565b60008115159050919050565b61250e816124f9565b811461251957600080fd5b50565b60008135905061252b81612505565b92915050565b6000806040838503121561254857612547611f5a565b5b600061255685828601611fad565b92505060206125678582860161251c565b9150509250929050565b60008060006060848603121561258a57612589611f5a565b5b600061259886828701611fad565b93505060206125a98682870161208e565b925050604084013567ffffffffffffffff8111156125ca576125c9611f5f565b5b6125d686828701611fc7565b9150509250925092565b6125e9816121e4565b82525050565b600061012082019050612605600083018c61248f565b612612602083018b6125e0565b61261f604083018a6125e0565b61262c60608301896125e0565b61263960808301886125e0565b61264660a08301876125e0565b81810360c08301526126588186611eff565b905081810360e083015261266c8185611eff565b90508181036101008301526126818184611eff565b90509a9950505050505050505050565b61269a816124f9565b82525050565b60006020820190506126b56000830184612691565b92915050565b7f6f6e6c794d616e616765724f724f776e65720000000000000000000000000000600082015250565b60006126f1601283611eb3565b91506126fc826126bb565b602082019050919050565b60006020820190508181036000830152612720816126e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061276182612043565b915061276c83612043565b925082820190508082111561278457612783612727565b5b92915050565b6000813561279781611f96565b80915050919050565b60008160001b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff6127cd846127a0565b9350801983169250808416831791505092915050565b6000819050919050565b60006128086128036127fe84611f64565b6127e3565b611f64565b9050919050565b600061281a826127ed565b9050919050565b600061282c8261280f565b9050919050565b6000819050919050565b61284682612821565b61285961285282612833565b83546127ad565b8255505050565b612869816121e4565b811461287457600080fd5b50565b6000813561288481612860565b80915050919050565b60008160a01b9050919050565b600074ff00000000000000000000000000000000000000006128bb8461288d565b9350801983169250808416831791505092915050565b60006128ec6128e76128e2846121e4565b6127e3565b6121e4565b9050919050565b6000819050919050565b612906826128d1565b612919612912826128f3565b835461289a565b8255505050565b60008160a81b9050919050565b600075ff00000000000000000000000000000000000000000061294f84612920565b9350801983169250808416831791505092915050565b61296e826128d1565b61298161297a826128f3565b835461292d565b8255505050565b60008160b01b9050919050565b600076ff000000000000000000000000000000000000000000006129b884612988565b9350801983169250808416831791505092915050565b6129d7826128d1565b6129ea6129e3826128f3565b8354612995565b8255505050565b60008160b81b9050919050565b600077ff0000000000000000000000000000000000000000000000612a22846129f1565b9350801983169250808416831791505092915050565b612a41826128d1565b612a54612a4d826128f3565b83546129fe565b8255505050565b60008160c01b9050919050565b600078ff000000000000000000000000000000000000000000000000612a8d84612a5b565b9350801983169250808416831791505092915050565b612aac826128d1565b612abf612ab8826128f3565b8354612a68565b8255505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612af257612af1612ac6565b5b80840192508235915067ffffffffffffffff821115612b1457612b13612acb565b5b602083019250600182023603831315612b3057612b2f612ad0565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bb957607f821691505b602082108103612bcc57612bcb612b72565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612c347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612bf7565b612c3e8683612bf7565b95508019841693508086168417925050509392505050565b6000612c71612c6c612c6784612043565b6127e3565b612043565b9050919050565b6000819050919050565b612c8b83612c56565b612c9f612c9782612c78565b848454612c04565b825550505050565b600090565b612cb4612ca7565b612cbf818484612c82565b505050565b5b81811015612ce357612cd8600082612cac565b600181019050612cc5565b5050565b601f821115612d2857612cf981612bd2565b612d0284612be7565b81016020851015612d11578190505b612d25612d1d85612be7565b830182612cc4565b50505b505050565b600082821c905092915050565b6000612d4b60001984600802612d2d565b1980831691505092915050565b6000612d648383612d3a565b9150826002028217905092915050565b612d7e8383612b38565b67ffffffffffffffff811115612d9757612d96612b43565b5b612da18254612ba1565b612dac828285612ce7565b6000601f831160018114612ddb5760008415612dc9578287013590505b612dd38582612d58565b865550612e3b565b601f198416612de986612bd2565b60005b82811015612e1157848901358255600182019150602085019450602081019050612dec565b86831015612e2e5784890135612e2a601f891682612d3a565b8355505b6001600288020188555050505b50505050505050565b612e4f838383612d74565b505050565b600081016000830180612e668161278a565b9050612e72818461283d565b505050600081016020830180612e8781612877565b9050612e9381846128fd565b505050600081016040830180612ea881612877565b9050612eb48184612965565b505050600081016060830180612ec981612877565b9050612ed581846129ce565b505050600081016080830180612eea81612877565b9050612ef68184612a38565b5050506000810160a0830180612f0b81612877565b9050612f178184612aa3565b5050506001810160c08301612f2c8185612ad5565b612f37818386612e44565b505050506002810160e08301612f4d8185612ad5565b612f58818386612e44565b50505050600381016101008301612f6f8185612ad5565b612f7a818386612e44565b505050505050565b612f8c8282612e54565b5050565b7f4f6e6c7920646576656c6f706572000000000000000000000000000000000000600082015250565b6000612fc6600e83611eb3565b9150612fd182612f90565b602082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b7f57726f6e67206164647265737300000000000000000000000000000000000000600082015250565b6000613032600d83611eb3565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130a282612043565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130d4576130d3612727565b5b600182019050919050565b7f4e6f207265706f72747300000000000000000000000000000000000000000000600082015250565b6000613115600a83611eb3565b9150613120826130df565b602082019050919050565b6000602082019050818103600083015261314481613108565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613181602083611eb3565b915061318c8261314b565b602082019050919050565b600060208201905081810360008301526131b081613174565b9050919050565b60006131c282612043565b91506131cd83612043565b92508282039050818111156131e5576131e4612727565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060408201905061322f600083018561248f565b61323c6020830184612691565b9392505050565b600081905092915050565b6000815461325b81612ba1565b6132658186613243565b945060018216600081146132805760018114613295576132c8565b60ff19831686528115158202860193506132c8565b61329e85612bd2565b60005b838110156132c0578154818901526001820191506020810190506132a1565b838801955050505b50505092915050565b60006132dc82611ea8565b6132e68185613243565b93506132f6818560208601611ec4565b80840191505092915050565b600061330e828561324e565b915061331a82846132d1565b91508190509392505050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b600061335c601883611eb3565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133cc82612043565b91506133d783612043565b9250826133e7576133e6613392565b5b828204905092915050565b60006133fd82612043565b915061340883612043565b92508261341857613417613392565b5b82820690509291505056fea26469706673582212203d25ca50e896295d76a7bdfdd71ce64a630a61dc3923e6ee179a20e9d0b2d65564736f6c63430008120033