Address Details
contract
token

0x20677d4f3d0F08e735aB512393524A3CfCEb250C

Token
Ari Swap (ARI)
Creator
0x8f5664–92b4ea at 0x9755b3–22a80f
Balance
0 CELO ( )
Locked CELO Balance
0.00 CELO
Voting CELO Balance
0.00 CELO
Pending Unlocked Gold
0.00 CELO
Tokens
Fetching tokens...
Transactions
8,939 Transactions
Transfers
6 Transfers
Gas Used
254,488,766
Last Balance Update
24799092
This contract has been verified via Sourcify. View contract in Sourcify repository
Contract name:
AriSwap




Optimization enabled
false
Compiler version
v0.8.7+commit.e28d00a7




EVM Version
london




Verified at
2021-12-01T15:54:07.661648Z

contract-a20e73d2b8.sol

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

import "@openzeppelin/contracts@4.4.0/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts@4.4.0/token/ERC20/extensions/ERC20Snapshot.sol";
import "@openzeppelin/contracts@4.4.0/access/Ownable.sol";

/// @custom:security-contact a.rodriguez@ariswap.com
contract AriSwap is ERC20, ERC20Snapshot, Ownable {
    constructor() ERC20("Ari Swap", "ARI") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
    }

    function snapshot() public onlyOwner {
        _snapshot();
    }

    // The following functions are overrides required by Solidity.

    function _beforeTokenTransfer(address from, address to, uint256 amount)
        internal
        override(ERC20, ERC20Snapshot)
    {
        super._beforeTokenTransfer(from, to, amount);
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","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":"event","name":"Snapshot","inputs":[{"type":"uint256","name":"id","internalType":"uint256","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":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOfAt","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"uint256","name":"snapshotId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"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":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"snapshot","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupplyAt","inputs":[{"type":"uint256","name":"snapshotId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
              

Contract Creation Code

0x60806040523480156200001157600080fd5b506040518060400160405280600881526020017f41726920537761700000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f41524900000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200066f565b508060049080519060200190620000af9291906200066f565b505050620000d2620000c66200011860201b60201c565b6200012060201b60201c565b6200011233620000e7620001e660201b60201c565b600a620000f591906200085f565b633b9aca006200010691906200099c565b620001ef60201b60201c565b62000b48565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000262576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002599062000757565b60405180910390fd5b62000276600083836200036860201b60201c565b80600260008282546200028a9190620007a7565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002e19190620007a7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000348919062000779565b60405180910390a362000364600083836200038560201b60201c565b5050565b620003808383836200038a60201b62000b291760201c565b505050565b505050565b620003a28383836200048560201b62000be31760201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003ff57620003e9826200048a60201b60201c565b620003f9620004ed60201b60201c565b62000480565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200045c5762000446836200048a60201b60201c565b62000456620004ed60201b60201c565b6200047f565b6200046d836200048a60201b60201c565b6200047e826200048a60201b60201c565b5b5b505050565b505050565b620004ea600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020620004de836200051160201b60201c565b6200055960201b60201c565b50565b6200050f600662000503620005e560201b60201c565b6200055960201b60201c565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006200056b620005ef60201b60201c565b90508062000582846000016200060d60201b60201c565b1015620005e05782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000600254905090565b60006200060860086200066160201b62000be81760201c565b905090565b600080828054905014156200062657600090506200065c565b81600183805490506200063a9190620009fd565b815481106200064e576200064d62000ae3565b5b906000526020600020015490505b919050565b600081600001549050919050565b8280546200067d9062000a4f565b90600052602060002090601f016020900481019282620006a15760008555620006ed565b82601f10620006bc57805160ff1916838001178555620006ed565b82800160010185558215620006ed579182015b82811115620006ec578251825591602001919060010190620006cf565b5b509050620006fc919062000700565b5090565b5b808211156200071b57600081600090555060010162000701565b5090565b60006200072e601f8362000796565b91506200073b8262000b1f565b602082019050919050565b620007518162000a38565b82525050565b6000602082019050818103600083015262000772816200071f565b9050919050565b600060208201905062000790600083018462000746565b92915050565b600082825260208201905092915050565b6000620007b48262000a38565b9150620007c18362000a38565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007f957620007f862000a85565b5b828201905092915050565b6000808291508390505b600185111562000856578086048111156200082e576200082d62000a85565b5b60018516156200083e5780820291505b80810290506200084e8562000b12565b94506200080e565b94509492505050565b60006200086c8262000a38565b9150620008798362000a42565b9250620008a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008b0565b905092915050565b600082620008c2576001905062000995565b81620008d2576000905062000995565b8160018114620008eb5760028114620008f6576200092c565b600191505062000995565b60ff8411156200090b576200090a62000a85565b5b8360020a91508482111562000925576200092462000a85565b5b5062000995565b5060208310610133831016604e8410600b8410161715620009665782820a90508381111562000960576200095f62000a85565b5b62000995565b62000975848484600162000804565b925090508184048111156200098f576200098e62000a85565b5b81810290505b9392505050565b6000620009a98262000a38565b9150620009b68362000a38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620009f257620009f162000a85565b5b828202905092915050565b600062000a0a8262000a38565b915062000a178362000a38565b92508282101562000a2d5762000a2c62000a85565b5b828203905092915050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000a6857607f821691505b6020821081141562000a7f5762000a7e62000ab4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611fbc8062000b586000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063981b24d011610071578063981b24d0146102aa578063a457c2d7146102da578063a9059cbb1461030a578063dd62ed3e1461033a578063f2fde38b1461036a5761010b565b8063715018a61461025a5780638da5cb5b1461026457806395d89b41146102825780639711715a146102a05761010b565b8063313ce567116100de578063313ce567146101ac57806339509351146101ca5780634ee2cd7e146101fa57806370a082311461022a5761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610386565b604051610125919061184a565b60405180910390f35b610148600480360381019061014391906115b1565b610418565b604051610155919061182f565b60405180910390f35b610166610436565b60405161017391906119cc565b60405180910390f35b6101966004803603810190610191919061155e565b610440565b6040516101a3919061182f565b60405180910390f35b6101b4610538565b6040516101c191906119e7565b60405180910390f35b6101e460048036038101906101df91906115b1565b610541565b6040516101f1919061182f565b60405180910390f35b610214600480360381019061020f91906115b1565b6105ed565b60405161022191906119cc565b60405180910390f35b610244600480360381019061023f91906114f1565b61065d565b60405161025191906119cc565b60405180910390f35b6102626106a5565b005b61026c61072d565b6040516102799190611814565b60405180910390f35b61028a610757565b604051610297919061184a565b60405180910390f35b6102a86107e9565b005b6102c460048036038101906102bf91906115f1565b610870565b6040516102d191906119cc565b60405180910390f35b6102f460048036038101906102ef91906115b1565b6108a1565b604051610301919061182f565b60405180910390f35b610324600480360381019061031f91906115b1565b61098c565b604051610331919061182f565b60405180910390f35b610354600480360381019061034f919061151e565b6109aa565b60405161036191906119cc565b60405180910390f35b610384600480360381019061037f91906114f1565b610a31565b005b60606003805461039590611b61565b80601f01602080910402602001604051908101604052809291908181526020018280546103c190611b61565b801561040e5780601f106103e35761010080835404028352916020019161040e565b820191906000526020600020905b8154815290600101906020018083116103f157829003601f168201915b5050505050905090565b600061042c610425610bf6565b8484610bfe565b6001905092915050565b6000600254905090565b600061044d848484610dc9565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610498610bf6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050f9061190c565b60405180910390fd5b61052c85610524610bf6565b858403610bfe565b60019150509392505050565b60006012905090565b60006105e361054e610bf6565b84846001600061055c610bf6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105de9190611a1e565b610bfe565b6001905092915050565b600080600061063a84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061104a565b91509150816106515761064c8561065d565b610653565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ad610bf6565b73ffffffffffffffffffffffffffffffffffffffff166106cb61072d565b73ffffffffffffffffffffffffffffffffffffffff1614610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107189061192c565b60405180910390fd5b61072b6000611140565b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461076690611b61565b80601f016020809104026020016040519081016040528092919081815260200182805461079290611b61565b80156107df5780601f106107b4576101008083540402835291602001916107df565b820191906000526020600020905b8154815290600101906020018083116107c257829003601f168201915b5050505050905090565b6107f1610bf6565b73ffffffffffffffffffffffffffffffffffffffff1661080f61072d565b73ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c9061192c565b60405180910390fd5b61086d611206565b50565b600080600061088084600661104a565b915091508161089657610891610436565b610898565b805b92505050919050565b600080600160006108b0610bf6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561096d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610964906119ac565b60405180910390fd5b610981610978610bf6565b85858403610bfe565b600191505092915050565b60006109a0610999610bf6565b8484610dc9565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a39610bf6565b73ffffffffffffffffffffffffffffffffffffffff16610a5761072d565b73ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa49061192c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b14906118ac565b60405180910390fd5b610b2681611140565b50565b610b34838383610be3565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b7f57610b728261125c565b610b7a6112af565b610bde565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bca57610bbd8361125c565b610bc56112af565b610bdd565b610bd38361125c565b610bdc8261125c565b5b5b505050565b505050565b600081600001549050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c659061196c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd5906118cc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dbc91906119cc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061194c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea09061188c565b60405180910390fd5b610eb48383836112c3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f31906118ec565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fcd9190611a1e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161103191906119cc565b60405180910390a36110448484846112d3565b50505050565b60008060008411611090576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110879061198c565b60405180910390fd5b6110986112d8565b8411156110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d19061186c565b60405180910390fd5b60006110f285856000016112e990919063ffffffff16565b90508360000180549050811415611110576000809250925050611139565b600184600101828154811061112857611127611c20565b5b906000526020600020015492509250505b9250929050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061121260086113c3565b600061121c6112d8565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb678160405161124d91906119cc565b60405180910390a18091505090565b6112ac600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206112a78361065d565b6113d9565b50565b6112c160066112bc610436565b6113d9565b565b6112ce838383610b29565b505050565b505050565b60006112e46008610be8565b905090565b6000808380549050141561130057600090506113bd565b600080848054905090505b8082101561136457600061131f8383611454565b90508486828154811061133557611334611c20565b5b9060005260206000200154111561134e5780915061135e565b60018161135b9190611a1e565b92505b5061130b565b60008211801561139c5750838560018461137e9190611aa5565b8154811061138f5761138e611c20565b5b9060005260206000200154145b156113b7576001826113ae9190611aa5565b925050506113bd565b81925050505b92915050565b6001816000016000828254019250508190555050565b60006113e36112d8565b9050806113f28460000161147a565b101561144f5782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b600060028284186114659190611a74565b8284166114729190611a1e565b905092915050565b6000808280549050141561149157600090506114c2565b81600183805490506114a39190611aa5565b815481106114b4576114b3611c20565b5b906000526020600020015490505b919050565b6000813590506114d681611f58565b92915050565b6000813590506114eb81611f6f565b92915050565b60006020828403121561150757611506611c4f565b5b6000611515848285016114c7565b91505092915050565b6000806040838503121561153557611534611c4f565b5b6000611543858286016114c7565b9250506020611554858286016114c7565b9150509250929050565b60008060006060848603121561157757611576611c4f565b5b6000611585868287016114c7565b9350506020611596868287016114c7565b92505060406115a7868287016114dc565b9150509250925092565b600080604083850312156115c8576115c7611c4f565b5b60006115d6858286016114c7565b92505060206115e7858286016114dc565b9150509250929050565b60006020828403121561160757611606611c4f565b5b6000611615848285016114dc565b91505092915050565b61162781611ad9565b82525050565b61163681611aeb565b82525050565b600061164782611a02565b6116518185611a0d565b9350611661818560208601611b2e565b61166a81611c54565b840191505092915050565b6000611682601d83611a0d565b915061168d82611c65565b602082019050919050565b60006116a5602383611a0d565b91506116b082611c8e565b604082019050919050565b60006116c8602683611a0d565b91506116d382611cdd565b604082019050919050565b60006116eb602283611a0d565b91506116f682611d2c565b604082019050919050565b600061170e602683611a0d565b915061171982611d7b565b604082019050919050565b6000611731602883611a0d565b915061173c82611dca565b604082019050919050565b6000611754602083611a0d565b915061175f82611e19565b602082019050919050565b6000611777602583611a0d565b915061178282611e42565b604082019050919050565b600061179a602483611a0d565b91506117a582611e91565b604082019050919050565b60006117bd601683611a0d565b91506117c882611ee0565b602082019050919050565b60006117e0602583611a0d565b91506117eb82611f09565b604082019050919050565b6117ff81611b17565b82525050565b61180e81611b21565b82525050565b6000602082019050611829600083018461161e565b92915050565b6000602082019050611844600083018461162d565b92915050565b60006020820190508181036000830152611864818461163c565b905092915050565b6000602082019050818103600083015261188581611675565b9050919050565b600060208201905081810360008301526118a581611698565b9050919050565b600060208201905081810360008301526118c5816116bb565b9050919050565b600060208201905081810360008301526118e5816116de565b9050919050565b6000602082019050818103600083015261190581611701565b9050919050565b6000602082019050818103600083015261192581611724565b9050919050565b6000602082019050818103600083015261194581611747565b9050919050565b600060208201905081810360008301526119658161176a565b9050919050565b600060208201905081810360008301526119858161178d565b9050919050565b600060208201905081810360008301526119a5816117b0565b9050919050565b600060208201905081810360008301526119c5816117d3565b9050919050565b60006020820190506119e160008301846117f6565b92915050565b60006020820190506119fc6000830184611805565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a2982611b17565b9150611a3483611b17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a6957611a68611b93565b5b828201905092915050565b6000611a7f82611b17565b9150611a8a83611b17565b925082611a9a57611a99611bc2565b5b828204905092915050565b6000611ab082611b17565b9150611abb83611b17565b925082821015611ace57611acd611b93565b5b828203905092915050565b6000611ae482611af7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b4c578082015181840152602081019050611b31565b83811115611b5b576000848401525b50505050565b60006002820490506001821680611b7957607f821691505b60208210811415611b8d57611b8c611bf1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611f6181611ad9565b8114611f6c57600080fd5b50565b611f7881611b17565b8114611f8357600080fd5b5056fea264697066735822122069827eb05092470a279f998d66bad2dcca4247598694168b1369270cd24767fb64736f6c63430008070033

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063981b24d011610071578063981b24d0146102aa578063a457c2d7146102da578063a9059cbb1461030a578063dd62ed3e1461033a578063f2fde38b1461036a5761010b565b8063715018a61461025a5780638da5cb5b1461026457806395d89b41146102825780639711715a146102a05761010b565b8063313ce567116100de578063313ce567146101ac57806339509351146101ca5780634ee2cd7e146101fa57806370a082311461022a5761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610386565b604051610125919061184a565b60405180910390f35b610148600480360381019061014391906115b1565b610418565b604051610155919061182f565b60405180910390f35b610166610436565b60405161017391906119cc565b60405180910390f35b6101966004803603810190610191919061155e565b610440565b6040516101a3919061182f565b60405180910390f35b6101b4610538565b6040516101c191906119e7565b60405180910390f35b6101e460048036038101906101df91906115b1565b610541565b6040516101f1919061182f565b60405180910390f35b610214600480360381019061020f91906115b1565b6105ed565b60405161022191906119cc565b60405180910390f35b610244600480360381019061023f91906114f1565b61065d565b60405161025191906119cc565b60405180910390f35b6102626106a5565b005b61026c61072d565b6040516102799190611814565b60405180910390f35b61028a610757565b604051610297919061184a565b60405180910390f35b6102a86107e9565b005b6102c460048036038101906102bf91906115f1565b610870565b6040516102d191906119cc565b60405180910390f35b6102f460048036038101906102ef91906115b1565b6108a1565b604051610301919061182f565b60405180910390f35b610324600480360381019061031f91906115b1565b61098c565b604051610331919061182f565b60405180910390f35b610354600480360381019061034f919061151e565b6109aa565b60405161036191906119cc565b60405180910390f35b610384600480360381019061037f91906114f1565b610a31565b005b60606003805461039590611b61565b80601f01602080910402602001604051908101604052809291908181526020018280546103c190611b61565b801561040e5780601f106103e35761010080835404028352916020019161040e565b820191906000526020600020905b8154815290600101906020018083116103f157829003601f168201915b5050505050905090565b600061042c610425610bf6565b8484610bfe565b6001905092915050565b6000600254905090565b600061044d848484610dc9565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610498610bf6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050f9061190c565b60405180910390fd5b61052c85610524610bf6565b858403610bfe565b60019150509392505050565b60006012905090565b60006105e361054e610bf6565b84846001600061055c610bf6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105de9190611a1e565b610bfe565b6001905092915050565b600080600061063a84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061104a565b91509150816106515761064c8561065d565b610653565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ad610bf6565b73ffffffffffffffffffffffffffffffffffffffff166106cb61072d565b73ffffffffffffffffffffffffffffffffffffffff1614610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107189061192c565b60405180910390fd5b61072b6000611140565b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461076690611b61565b80601f016020809104026020016040519081016040528092919081815260200182805461079290611b61565b80156107df5780601f106107b4576101008083540402835291602001916107df565b820191906000526020600020905b8154815290600101906020018083116107c257829003601f168201915b5050505050905090565b6107f1610bf6565b73ffffffffffffffffffffffffffffffffffffffff1661080f61072d565b73ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c9061192c565b60405180910390fd5b61086d611206565b50565b600080600061088084600661104a565b915091508161089657610891610436565b610898565b805b92505050919050565b600080600160006108b0610bf6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561096d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610964906119ac565b60405180910390fd5b610981610978610bf6565b85858403610bfe565b600191505092915050565b60006109a0610999610bf6565b8484610dc9565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a39610bf6565b73ffffffffffffffffffffffffffffffffffffffff16610a5761072d565b73ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa49061192c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b14906118ac565b60405180910390fd5b610b2681611140565b50565b610b34838383610be3565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b7f57610b728261125c565b610b7a6112af565b610bde565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bca57610bbd8361125c565b610bc56112af565b610bdd565b610bd38361125c565b610bdc8261125c565b5b5b505050565b505050565b600081600001549050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c659061196c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd5906118cc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dbc91906119cc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061194c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea09061188c565b60405180910390fd5b610eb48383836112c3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f31906118ec565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fcd9190611a1e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161103191906119cc565b60405180910390a36110448484846112d3565b50505050565b60008060008411611090576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110879061198c565b60405180910390fd5b6110986112d8565b8411156110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d19061186c565b60405180910390fd5b60006110f285856000016112e990919063ffffffff16565b90508360000180549050811415611110576000809250925050611139565b600184600101828154811061112857611127611c20565b5b906000526020600020015492509250505b9250929050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061121260086113c3565b600061121c6112d8565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb678160405161124d91906119cc565b60405180910390a18091505090565b6112ac600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206112a78361065d565b6113d9565b50565b6112c160066112bc610436565b6113d9565b565b6112ce838383610b29565b505050565b505050565b60006112e46008610be8565b905090565b6000808380549050141561130057600090506113bd565b600080848054905090505b8082101561136457600061131f8383611454565b90508486828154811061133557611334611c20565b5b9060005260206000200154111561134e5780915061135e565b60018161135b9190611a1e565b92505b5061130b565b60008211801561139c5750838560018461137e9190611aa5565b8154811061138f5761138e611c20565b5b9060005260206000200154145b156113b7576001826113ae9190611aa5565b925050506113bd565b81925050505b92915050565b6001816000016000828254019250508190555050565b60006113e36112d8565b9050806113f28460000161147a565b101561144f5782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b600060028284186114659190611a74565b8284166114729190611a1e565b905092915050565b6000808280549050141561149157600090506114c2565b81600183805490506114a39190611aa5565b815481106114b4576114b3611c20565b5b906000526020600020015490505b919050565b6000813590506114d681611f58565b92915050565b6000813590506114eb81611f6f565b92915050565b60006020828403121561150757611506611c4f565b5b6000611515848285016114c7565b91505092915050565b6000806040838503121561153557611534611c4f565b5b6000611543858286016114c7565b9250506020611554858286016114c7565b9150509250929050565b60008060006060848603121561157757611576611c4f565b5b6000611585868287016114c7565b9350506020611596868287016114c7565b92505060406115a7868287016114dc565b9150509250925092565b600080604083850312156115c8576115c7611c4f565b5b60006115d6858286016114c7565b92505060206115e7858286016114dc565b9150509250929050565b60006020828403121561160757611606611c4f565b5b6000611615848285016114dc565b91505092915050565b61162781611ad9565b82525050565b61163681611aeb565b82525050565b600061164782611a02565b6116518185611a0d565b9350611661818560208601611b2e565b61166a81611c54565b840191505092915050565b6000611682601d83611a0d565b915061168d82611c65565b602082019050919050565b60006116a5602383611a0d565b91506116b082611c8e565b604082019050919050565b60006116c8602683611a0d565b91506116d382611cdd565b604082019050919050565b60006116eb602283611a0d565b91506116f682611d2c565b604082019050919050565b600061170e602683611a0d565b915061171982611d7b565b604082019050919050565b6000611731602883611a0d565b915061173c82611dca565b604082019050919050565b6000611754602083611a0d565b915061175f82611e19565b602082019050919050565b6000611777602583611a0d565b915061178282611e42565b604082019050919050565b600061179a602483611a0d565b91506117a582611e91565b604082019050919050565b60006117bd601683611a0d565b91506117c882611ee0565b602082019050919050565b60006117e0602583611a0d565b91506117eb82611f09565b604082019050919050565b6117ff81611b17565b82525050565b61180e81611b21565b82525050565b6000602082019050611829600083018461161e565b92915050565b6000602082019050611844600083018461162d565b92915050565b60006020820190508181036000830152611864818461163c565b905092915050565b6000602082019050818103600083015261188581611675565b9050919050565b600060208201905081810360008301526118a581611698565b9050919050565b600060208201905081810360008301526118c5816116bb565b9050919050565b600060208201905081810360008301526118e5816116de565b9050919050565b6000602082019050818103600083015261190581611701565b9050919050565b6000602082019050818103600083015261192581611724565b9050919050565b6000602082019050818103600083015261194581611747565b9050919050565b600060208201905081810360008301526119658161176a565b9050919050565b600060208201905081810360008301526119858161178d565b9050919050565b600060208201905081810360008301526119a5816117b0565b9050919050565b600060208201905081810360008301526119c5816117d3565b9050919050565b60006020820190506119e160008301846117f6565b92915050565b60006020820190506119fc6000830184611805565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a2982611b17565b9150611a3483611b17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a6957611a68611b93565b5b828201905092915050565b6000611a7f82611b17565b9150611a8a83611b17565b925082611a9a57611a99611bc2565b5b828204905092915050565b6000611ab082611b17565b9150611abb83611b17565b925082821015611ace57611acd611b93565b5b828203905092915050565b6000611ae482611af7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b4c578082015181840152602081019050611b31565b83811115611b5b576000848401525b50505050565b60006002820490506001821680611b7957607f821691505b60208210811415611b8d57611b8c611bf1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611f6181611ad9565b8114611f6c57600080fd5b50565b611f7881611b17565b8114611f8357600080fd5b5056fea264697066735822122069827eb05092470a279f998d66bad2dcca4247598694168b1369270cd24767fb64736f6c63430008070033