{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.5.0/=dependencies/@openzeppelin-contracts-5.5.0/\",\":@openzeppelin-contracts-upgradeable-5.5.0/=dependencies/@openzeppelin-contracts-upgradeable-5.5.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.5.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.5.0/\",\":forge-std-1.11.0/=dependencies/forge-std-1.11.0/src/\",\":forge-std/=dependencies/forge-std-1.11.0/src/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.5.0/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"dependencies/@openzeppelin-contracts-5.5.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.5.0/=dependencies/@openzeppelin-contracts-5.5.0/","@openzeppelin-contracts-upgradeable-5.5.0/=dependencies/@openzeppelin-contracts-upgradeable-5.5.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.5.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.5.0/","forge-std-1.11.0/=dependencies/forge-std-1.11.0/src/","forge-std/=dependencies/forge-std-1.11.0/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.5.0/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.5.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":1175,"contract":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":1181,"contract":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":1183,"contract":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":1185,"contract":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":1187,"contract":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/ERC20.sol","id":1668,"exportedSymbols":{"Context":[2646],"ERC20":[1667],"IERC20":[1745],"IERC20Errors":[245],"IERC20Metadata":[1771]},"nodeType":"SourceUnit","src":"105:10695:13","nodes":[{"id":1154,"nodeType":"PragmaDirective","src":"105:24:13","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1156,"nodeType":"ImportDirective","src":"131:36:13","nodes":[],"absolutePath":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/IERC20.sol","file":"./IERC20.sol","nameLocation":"-1:-1:-1","scope":1668,"sourceUnit":1746,"symbolAliases":[{"foreign":{"id":1155,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"139:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1158,"nodeType":"ImportDirective","src":"168:63:13","nodes":[],"absolutePath":"dependencies/@openzeppelin-contracts-5.5.0/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","nameLocation":"-1:-1:-1","scope":1668,"sourceUnit":1772,"symbolAliases":[{"foreign":{"id":1157,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"176:14:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1160,"nodeType":"ImportDirective","src":"232:48:13","nodes":[],"absolutePath":"dependencies/@openzeppelin-contracts-5.5.0/utils/Context.sol","file":"../../utils/Context.sol","nameLocation":"-1:-1:-1","scope":1668,"sourceUnit":2647,"symbolAliases":[{"foreign":{"id":1159,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"240:7:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1162,"nodeType":"ImportDirective","src":"281:65:13","nodes":[],"absolutePath":"dependencies/@openzeppelin-contracts-5.5.0/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","nameLocation":"-1:-1:-1","scope":1668,"sourceUnit":341,"symbolAliases":[{"foreign":{"id":1161,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"289:12:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1667,"nodeType":"ContractDefinition","src":"1106:9693:13","nodes":[{"id":1175,"nodeType":"VariableDeclaration","src":"1185:53:13","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:13","scope":1667,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1174,"keyName":"account","keyNameLocation":"1201:7:13","keyType":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1173,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1181,"nodeType":"VariableDeclaration","src":"1245:83:13","nodes":[],"constant":false,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:13","scope":1667,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":1180,"keyName":"account","keyNameLocation":"1261:7:13","keyType":{"id":1176,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1179,"keyName":"spender","keyNameLocation":"1288:7:13","keyType":{"id":1177,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1178,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"id":1183,"nodeType":"VariableDeclaration","src":"1335:28:13","nodes":[],"constant":false,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:13","scope":1667,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1182,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":1185,"nodeType":"VariableDeclaration","src":"1370:20:13","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"1385:5:13","scope":1667,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1184,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1187,"nodeType":"VariableDeclaration","src":"1396:22:13","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:13","scope":1667,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1186,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1204,"nodeType":"FunctionDefinition","src":"1582:113:13","nodes":[],"body":{"id":1203,"nodeType":"Block","src":"1638:57:13","nodes":[],"statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"1648:5:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1196,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1190,"src":"1656:5:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1198,"nodeType":"ExpressionStatement","src":"1648:13:13"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"1671:7:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1200,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1192,"src":"1681:7:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1202,"nodeType":"ExpressionStatement","src":"1671:17:13"}]},"documentation":{"id":1188,"nodeType":"StructuredDocumentation","src":"1425:152:13","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"name_","nameLocation":"1608:5:13","nodeType":"VariableDeclaration","scope":1204,"src":"1594:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1189,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1192,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:13","nodeType":"VariableDeclaration","scope":1204,"src":"1615:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1191,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:13"},"returnParameters":{"id":1194,"nodeType":"ParameterList","parameters":[],"src":"1638:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1213,"nodeType":"FunctionDefinition","src":"1760:89:13","nodes":[],"body":{"id":1212,"nodeType":"Block","src":"1820:29:13","nodes":[],"statements":[{"expression":{"id":1210,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"1837:5:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1209,"id":1211,"nodeType":"Return","src":"1830:12:13"}]},"baseFunctions":[1758],"documentation":{"id":1205,"nodeType":"StructuredDocumentation","src":"1701:54:13","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:13","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[],"src":"1773:2:13"},"returnParameters":{"id":1209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1213,"src":"1805:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1207,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:13"},"scope":1667,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1222,"nodeType":"FunctionDefinition","src":"1962:93:13","nodes":[],"body":{"id":1221,"nodeType":"Block","src":"2024:31:13","nodes":[],"statements":[{"expression":{"id":1219,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"2041:7:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1218,"id":1220,"nodeType":"Return","src":"2034:14:13"}]},"baseFunctions":[1764],"documentation":{"id":1214,"nodeType":"StructuredDocumentation","src":"1855:102:13","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:13","parameters":{"id":1215,"nodeType":"ParameterList","parameters":[],"src":"1977:2:13"},"returnParameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1222,"src":"2009:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1216,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:13"},"scope":1667,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1231,"nodeType":"FunctionDefinition","src":"2688:82:13","nodes":[],"body":{"id":1230,"nodeType":"Block","src":"2744:26:13","nodes":[],"statements":[{"expression":{"hexValue":"3138","id":1228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:13","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":1227,"id":1229,"nodeType":"Return","src":"2754:9:13"}]},"baseFunctions":[1770],"documentation":{"id":1223,"nodeType":"StructuredDocumentation","src":"2061:622:13","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:13","parameters":{"id":1224,"nodeType":"ParameterList","parameters":[],"src":"2705:2:13"},"returnParameters":{"id":1227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1231,"src":"2737:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1225,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:13"},"scope":1667,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1240,"nodeType":"FunctionDefinition","src":"2803:97:13","nodes":[],"body":{"id":1239,"nodeType":"Block","src":"2864:36:13","nodes":[],"statements":[{"expression":{"id":1237,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"2881:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1236,"id":1238,"nodeType":"Return","src":"2874:19:13"}]},"baseFunctions":[1694],"documentation":{"id":1232,"nodeType":"StructuredDocumentation","src":"2776:22:13","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2812:11:13","parameters":{"id":1233,"nodeType":"ParameterList","parameters":[],"src":"2823:2:13"},"returnParameters":{"id":1236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1240,"src":"2855:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1234,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2854:9:13"},"scope":1667,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1253,"nodeType":"FunctionDefinition","src":"2933:116:13","nodes":[],"body":{"id":1252,"nodeType":"Block","src":"3007:42:13","nodes":[],"statements":[{"expression":{"baseExpression":{"id":1248,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"3024:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1250,"indexExpression":{"id":1249,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"3034:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3024:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1247,"id":1251,"nodeType":"Return","src":"3017:25:13"}]},"baseFunctions":[1702],"documentation":{"id":1241,"nodeType":"StructuredDocumentation","src":"2906:22:13","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2942:9:13","parameters":{"id":1244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1243,"mutability":"mutable","name":"account","nameLocation":"2960:7:13","nodeType":"VariableDeclaration","scope":1253,"src":"2952:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1242,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2951:17:13"},"returnParameters":{"id":1247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1253,"src":"2998:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2997:9:13"},"scope":1667,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1277,"nodeType":"FunctionDefinition","src":"3244:178:13","nodes":[],"body":{"id":1276,"nodeType":"Block","src":"3319:103:13","nodes":[],"statements":[{"assignments":[1264],"declarations":[{"constant":false,"id":1264,"mutability":"mutable","name":"owner","nameLocation":"3337:5:13","nodeType":"VariableDeclaration","scope":1276,"src":"3329:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1263,"name":"address","nodeType":"ElementaryTypeName","src":"3329:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1267,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1265,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"3345:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3329:28:13"},{"expression":{"arguments":[{"id":1269,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1264,"src":"3377:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1270,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1256,"src":"3384:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1271,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1258,"src":"3388:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1268,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"3367:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:27:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1273,"nodeType":"ExpressionStatement","src":"3367:27:13"},{"expression":{"hexValue":"74727565","id":1274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3411:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":1262,"id":1275,"nodeType":"Return","src":"3404:11:13"}]},"baseFunctions":[1712],"documentation":{"id":1254,"nodeType":"StructuredDocumentation","src":"3055:184:13","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3253:8:13","parameters":{"id":1259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1256,"mutability":"mutable","name":"to","nameLocation":"3270:2:13","nodeType":"VariableDeclaration","scope":1277,"src":"3262:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1255,"name":"address","nodeType":"ElementaryTypeName","src":"3262:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1258,"mutability":"mutable","name":"value","nameLocation":"3282:5:13","nodeType":"VariableDeclaration","scope":1277,"src":"3274:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1257,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3261:27:13"},"returnParameters":{"id":1262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1277,"src":"3313:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1260,"name":"bool","nodeType":"ElementaryTypeName","src":"3313:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3312:6:13"},"scope":1667,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1294,"nodeType":"FunctionDefinition","src":"3455:140:13","nodes":[],"body":{"id":1293,"nodeType":"Block","src":"3544:51:13","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":1287,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1181,"src":"3561:11:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":1289,"indexExpression":{"id":1288,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"3573:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:18:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1291,"indexExpression":{"id":1290,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"3580:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1286,"id":1292,"nodeType":"Return","src":"3554:34:13"}]},"baseFunctions":[1722],"documentation":{"id":1278,"nodeType":"StructuredDocumentation","src":"3428:22:13","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3464:9:13","parameters":{"id":1283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"owner","nameLocation":"3482:5:13","nodeType":"VariableDeclaration","scope":1294,"src":"3474:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1279,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1282,"mutability":"mutable","name":"spender","nameLocation":"3497:7:13","nodeType":"VariableDeclaration","scope":1294,"src":"3489:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1281,"name":"address","nodeType":"ElementaryTypeName","src":"3489:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3473:32:13"},"returnParameters":{"id":1286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1294,"src":"3535:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1284,"name":"uint256","nodeType":"ElementaryTypeName","src":"3535:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:9:13"},"scope":1667,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1318,"nodeType":"FunctionDefinition","src":"3902:186:13","nodes":[],"body":{"id":1317,"nodeType":"Block","src":"3981:107:13","nodes":[],"statements":[{"assignments":[1305],"declarations":[{"constant":false,"id":1305,"mutability":"mutable","name":"owner","nameLocation":"3999:5:13","nodeType":"VariableDeclaration","scope":1317,"src":"3991:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1304,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1308,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1306,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"4007:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3991:28:13"},{"expression":{"arguments":[{"id":1310,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"4038:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1311,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"4045:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"4054:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1309,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1558,1618],"referencedDeclaration":1558,"src":"4029:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1314,"nodeType":"ExpressionStatement","src":"4029:31:13"},{"expression":{"hexValue":"74727565","id":1315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4077:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":1303,"id":1316,"nodeType":"Return","src":"4070:11:13"}]},"baseFunctions":[1732],"documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"3601:296:13","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3911:7:13","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"spender","nameLocation":"3927:7:13","nodeType":"VariableDeclaration","scope":1318,"src":"3919:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1296,"name":"address","nodeType":"ElementaryTypeName","src":"3919:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1299,"mutability":"mutable","name":"value","nameLocation":"3944:5:13","nodeType":"VariableDeclaration","scope":1318,"src":"3936:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1298,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3918:32:13"},"returnParameters":{"id":1303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1318,"src":"3975:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1301,"name":"bool","nodeType":"ElementaryTypeName","src":"3975:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3974:6:13"},"scope":1667,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1350,"nodeType":"FunctionDefinition","src":"4680:244:13","nodes":[],"body":{"id":1349,"nodeType":"Block","src":"4773:151:13","nodes":[],"statements":[{"assignments":[1331],"declarations":[{"constant":false,"id":1331,"mutability":"mutable","name":"spender","nameLocation":"4791:7:13","nodeType":"VariableDeclaration","scope":1349,"src":"4783:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1330,"name":"address","nodeType":"ElementaryTypeName","src":"4783:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1334,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1332,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"4801:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4783:30:13"},{"expression":{"arguments":[{"id":1336,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"4839:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1337,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"4845:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1325,"src":"4854:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1335,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"4823:15:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1340,"nodeType":"ExpressionStatement","src":"4823:37:13"},{"expression":{"arguments":[{"id":1342,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"4880:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1343,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"4886:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1325,"src":"4890:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1341,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"4870:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4870:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1346,"nodeType":"ExpressionStatement","src":"4870:26:13"},{"expression":{"hexValue":"74727565","id":1347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4913:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":1329,"id":1348,"nodeType":"Return","src":"4906:11:13"}]},"baseFunctions":[1744],"documentation":{"id":1319,"nodeType":"StructuredDocumentation","src":"4094:581:13","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4689:12:13","parameters":{"id":1326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1321,"mutability":"mutable","name":"from","nameLocation":"4710:4:13","nodeType":"VariableDeclaration","scope":1350,"src":"4702:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1320,"name":"address","nodeType":"ElementaryTypeName","src":"4702:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1323,"mutability":"mutable","name":"to","nameLocation":"4724:2:13","nodeType":"VariableDeclaration","scope":1350,"src":"4716:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1322,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1325,"mutability":"mutable","name":"value","nameLocation":"4736:5:13","nodeType":"VariableDeclaration","scope":1350,"src":"4728:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1324,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:41:13"},"returnParameters":{"id":1329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1328,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1350,"src":"4767:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1327,"name":"bool","nodeType":"ElementaryTypeName","src":"4767:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4766:6:13"},"scope":1667,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1397,"nodeType":"FunctionDefinition","src":"5297:300:13","nodes":[],"body":{"id":1396,"nodeType":"Block","src":"5366:231:13","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1360,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"5380:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5396:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5388:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1361,"name":"address","nodeType":"ElementaryTypeName","src":"5388:7:13","typeDescriptions":{}}},"id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5380:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1374,"nodeType":"IfStatement","src":"5376:86:13","trueBody":{"id":1373,"nodeType":"Block","src":"5400:62:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5448:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5440:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1367,"name":"address","nodeType":"ElementaryTypeName","src":"5440:7:13","typeDescriptions":{}}},"id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5440:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1366,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"5421:18:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1372,"nodeType":"RevertStatement","src":"5414:37:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1375,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"5475:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5489:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5481:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1376,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:13","typeDescriptions":{}}},"id":1379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5475:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1389,"nodeType":"IfStatement","src":"5471:86:13","trueBody":{"id":1388,"nodeType":"Block","src":"5493:64:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5543:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5535:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1382,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:13","typeDescriptions":{}}},"id":1385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1381,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"5514:20:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1387,"nodeType":"RevertStatement","src":"5507:39:13"}]}},{"expression":{"arguments":[{"id":1391,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"5574:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1392,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"5580:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"5584:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"5566:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5566:24:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1395,"nodeType":"ExpressionStatement","src":"5566:24:13"}]},"documentation":{"id":1351,"nodeType":"StructuredDocumentation","src":"4930:362:13","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5306:9:13","parameters":{"id":1358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1353,"mutability":"mutable","name":"from","nameLocation":"5324:4:13","nodeType":"VariableDeclaration","scope":1397,"src":"5316:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1352,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1355,"mutability":"mutable","name":"to","nameLocation":"5338:2:13","nodeType":"VariableDeclaration","scope":1397,"src":"5330:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1354,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1357,"mutability":"mutable","name":"value","nameLocation":"5350:5:13","nodeType":"VariableDeclaration","scope":1397,"src":"5342:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1356,"name":"uint256","nodeType":"ElementaryTypeName","src":"5342:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5315:41:13"},"returnParameters":{"id":1359,"nodeType":"ParameterList","parameters":[],"src":"5366:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1474,"nodeType":"FunctionDefinition","src":"5912:1107:13","nodes":[],"body":{"id":1473,"nodeType":"Block","src":"5987:1032:13","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1407,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"6001:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6017:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6009:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1408,"name":"address","nodeType":"ElementaryTypeName","src":"6009:7:13","typeDescriptions":{}}},"id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6001:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1444,"nodeType":"Block","src":"6175:362:13","statements":[{"assignments":[1419],"declarations":[{"constant":false,"id":1419,"mutability":"mutable","name":"fromBalance","nameLocation":"6197:11:13","nodeType":"VariableDeclaration","scope":1444,"src":"6189:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1418,"name":"uint256","nodeType":"ElementaryTypeName","src":"6189:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1423,"initialValue":{"baseExpression":{"id":1420,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"6211:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1422,"indexExpression":{"id":1421,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"6221:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6211:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6189:37:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1424,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1419,"src":"6244:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"6258:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6244:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1434,"nodeType":"IfStatement","src":"6240:115:13","trueBody":{"id":1433,"nodeType":"Block","src":"6265:90:13","statements":[{"errorCall":{"arguments":[{"id":1428,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"6315:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1429,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1419,"src":"6321:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1430,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"6334:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1427,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"6290:24:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:50:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1432,"nodeType":"RevertStatement","src":"6283:57:13"}]}},{"id":1443,"nodeType":"UncheckedBlock","src":"6368:159:13","statements":[{"expression":{"id":1441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1435,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"6475:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1437,"indexExpression":{"id":1436,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"6485:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6475:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1438,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1419,"src":"6493:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"6507:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6475:37:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1442,"nodeType":"ExpressionStatement","src":"6475:37:13"}]}]},"id":1445,"nodeType":"IfStatement","src":"5997:540:13","trueBody":{"id":1417,"nodeType":"Block","src":"6021:148:13","statements":[{"expression":{"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1413,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"6137:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"6153:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6137:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1416,"nodeType":"ExpressionStatement","src":"6137:21:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1446,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1402,"src":"6551:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6565:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1447,"name":"address","nodeType":"ElementaryTypeName","src":"6557:7:13","typeDescriptions":{}}},"id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6557:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6551:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1465,"nodeType":"Block","src":"6766:206:13","statements":[{"id":1464,"nodeType":"UncheckedBlock","src":"6780:182:13","statements":[{"expression":{"id":1462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1458,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"6925:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1460,"indexExpression":{"id":1459,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1402,"src":"6935:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6925:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1461,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"6942:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6925:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1463,"nodeType":"ExpressionStatement","src":"6925:22:13"}]}]},"id":1466,"nodeType":"IfStatement","src":"6547:425:13","trueBody":{"id":1457,"nodeType":"Block","src":"6569:191:13","statements":[{"id":1456,"nodeType":"UncheckedBlock","src":"6583:167:13","statements":[{"expression":{"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1452,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"6714:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":1453,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"6730:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6714:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1455,"nodeType":"ExpressionStatement","src":"6714:21:13"}]}]}},{"eventCall":{"arguments":[{"id":1468,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1400,"src":"6996:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1469,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1402,"src":"7002:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"7006:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1467,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"6987:8:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6987:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1472,"nodeType":"EmitStatement","src":"6982:30:13"}]},"documentation":{"id":1398,"nodeType":"StructuredDocumentation","src":"5603:304:13","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5921:7:13","parameters":{"id":1405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1400,"mutability":"mutable","name":"from","nameLocation":"5937:4:13","nodeType":"VariableDeclaration","scope":1474,"src":"5929:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1399,"name":"address","nodeType":"ElementaryTypeName","src":"5929:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1402,"mutability":"mutable","name":"to","nameLocation":"5951:2:13","nodeType":"VariableDeclaration","scope":1474,"src":"5943:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1401,"name":"address","nodeType":"ElementaryTypeName","src":"5943:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1404,"mutability":"mutable","name":"value","nameLocation":"5963:5:13","nodeType":"VariableDeclaration","scope":1474,"src":"5955:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1403,"name":"uint256","nodeType":"ElementaryTypeName","src":"5955:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5928:41:13"},"returnParameters":{"id":1406,"nodeType":"ParameterList","parameters":[],"src":"5987:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1507,"nodeType":"FunctionDefinition","src":"7362:208:13","nodes":[],"body":{"id":1506,"nodeType":"Block","src":"7418:152:13","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1482,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"7432:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7451:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1483,"name":"address","nodeType":"ElementaryTypeName","src":"7443:7:13","typeDescriptions":{}}},"id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7432:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1496,"nodeType":"IfStatement","src":"7428:91:13","trueBody":{"id":1495,"nodeType":"Block","src":"7455:64:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7505:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7497:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1489,"name":"address","nodeType":"ElementaryTypeName","src":"7497:7:13","typeDescriptions":{}}},"id":1492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7497:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1488,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"7476:20:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7476:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1494,"nodeType":"RevertStatement","src":"7469:39:13"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7544:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7536:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"7536:7:13","typeDescriptions":{}}},"id":1501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1502,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"7548:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1503,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7557:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1497,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"7528:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:35:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1505,"nodeType":"ExpressionStatement","src":"7528:35:13"}]},"documentation":{"id":1475,"nodeType":"StructuredDocumentation","src":"7025:332:13","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7371:5:13","parameters":{"id":1480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1477,"mutability":"mutable","name":"account","nameLocation":"7385:7:13","nodeType":"VariableDeclaration","scope":1507,"src":"7377:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1476,"name":"address","nodeType":"ElementaryTypeName","src":"7377:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1479,"mutability":"mutable","name":"value","nameLocation":"7402:5:13","nodeType":"VariableDeclaration","scope":1507,"src":"7394:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1478,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:32:13"},"returnParameters":{"id":1481,"nodeType":"ParameterList","parameters":[],"src":"7418:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1540,"nodeType":"FunctionDefinition","src":"7888:206:13","nodes":[],"body":{"id":1539,"nodeType":"Block","src":"7944:150:13","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1515,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"7958:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7977:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7969:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1516,"name":"address","nodeType":"ElementaryTypeName","src":"7969:7:13","typeDescriptions":{}}},"id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7969:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7958:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1529,"nodeType":"IfStatement","src":"7954:89:13","trueBody":{"id":1528,"nodeType":"Block","src":"7981:62:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8021:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1522,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:13","typeDescriptions":{}}},"id":1525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8021:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1521,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"8002:18:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8002:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1527,"nodeType":"RevertStatement","src":"7995:37:13"}]}},{"expression":{"arguments":[{"id":1531,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"8060:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8077:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8069:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1532,"name":"address","nodeType":"ElementaryTypeName","src":"8069:7:13","typeDescriptions":{}}},"id":1535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1536,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"8081:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1530,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"8052:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:35:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1538,"nodeType":"ExpressionStatement","src":"8052:35:13"}]},"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"7576:307:13","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7897:5:13","parameters":{"id":1513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1510,"mutability":"mutable","name":"account","nameLocation":"7911:7:13","nodeType":"VariableDeclaration","scope":1540,"src":"7903:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1509,"name":"address","nodeType":"ElementaryTypeName","src":"7903:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1512,"mutability":"mutable","name":"value","nameLocation":"7928:5:13","nodeType":"VariableDeclaration","scope":1540,"src":"7920:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"7920:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7902:32:13"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[],"src":"7944:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1558,"nodeType":"FunctionDefinition","src":"8630:128:13","nodes":[],"body":{"id":1557,"nodeType":"Block","src":"8704:54:13","nodes":[],"statements":[{"expression":{"arguments":[{"id":1551,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"8723:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1552,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"8730:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"8739:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8746:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1550,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1558,1618],"referencedDeclaration":1618,"src":"8714:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8714:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1556,"nodeType":"ExpressionStatement","src":"8714:37:13"}]},"documentation":{"id":1541,"nodeType":"StructuredDocumentation","src":"8100:525:13","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8639:8:13","parameters":{"id":1548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1543,"mutability":"mutable","name":"owner","nameLocation":"8656:5:13","nodeType":"VariableDeclaration","scope":1558,"src":"8648:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1542,"name":"address","nodeType":"ElementaryTypeName","src":"8648:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1545,"mutability":"mutable","name":"spender","nameLocation":"8671:7:13","nodeType":"VariableDeclaration","scope":1558,"src":"8663:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1544,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1547,"mutability":"mutable","name":"value","nameLocation":"8688:5:13","nodeType":"VariableDeclaration","scope":1558,"src":"8680:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1546,"name":"uint256","nodeType":"ElementaryTypeName","src":"8680:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8647:47:13"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[],"src":"8704:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1618,"nodeType":"FunctionDefinition","src":"9607:432:13","nodes":[],"body":{"id":1617,"nodeType":"Block","src":"9705:334:13","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1570,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"9719:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9736:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9728:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1571,"name":"address","nodeType":"ElementaryTypeName","src":"9728:7:13","typeDescriptions":{}}},"id":1574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9728:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9719:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1584,"nodeType":"IfStatement","src":"9715:89:13","trueBody":{"id":1583,"nodeType":"Block","src":"9740:64:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9790:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9782:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1577,"name":"address","nodeType":"ElementaryTypeName","src":"9782:7:13","typeDescriptions":{}}},"id":1580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9782:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1576,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"9761:20:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9761:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1582,"nodeType":"RevertStatement","src":"9754:39:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1585,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1563,"src":"9817:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9828:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1586,"name":"address","nodeType":"ElementaryTypeName","src":"9828:7:13","typeDescriptions":{}}},"id":1589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9828:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9817:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1599,"nodeType":"IfStatement","src":"9813:90:13","trueBody":{"id":1598,"nodeType":"Block","src":"9840:63:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9889:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9881:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1592,"name":"address","nodeType":"ElementaryTypeName","src":"9881:7:13","typeDescriptions":{}}},"id":1595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9881:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1591,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"9861:19:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1597,"nodeType":"RevertStatement","src":"9854:38:13"}]}},{"expression":{"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1600,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1181,"src":"9912:11:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":1603,"indexExpression":{"id":1601,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"9924:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9912:18:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1604,"indexExpression":{"id":1602,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1563,"src":"9931:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9912:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1605,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1565,"src":"9942:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9912:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1607,"nodeType":"ExpressionStatement","src":"9912:35:13"},{"condition":{"id":1608,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1567,"src":"9961:9:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1616,"nodeType":"IfStatement","src":"9957:76:13","trueBody":{"id":1615,"nodeType":"Block","src":"9972:61:13","statements":[{"eventCall":{"arguments":[{"id":1610,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"10000:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1611,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1563,"src":"10007:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1612,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1565,"src":"10016:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1609,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9991:8:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9991:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1614,"nodeType":"EmitStatement","src":"9986:36:13"}]}}]},"documentation":{"id":1559,"nodeType":"StructuredDocumentation","src":"8764:838:13","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9616:8:13","parameters":{"id":1568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1561,"mutability":"mutable","name":"owner","nameLocation":"9633:5:13","nodeType":"VariableDeclaration","scope":1618,"src":"9625:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1560,"name":"address","nodeType":"ElementaryTypeName","src":"9625:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1563,"mutability":"mutable","name":"spender","nameLocation":"9648:7:13","nodeType":"VariableDeclaration","scope":1618,"src":"9640:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1562,"name":"address","nodeType":"ElementaryTypeName","src":"9640:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1565,"mutability":"mutable","name":"value","nameLocation":"9665:5:13","nodeType":"VariableDeclaration","scope":1618,"src":"9657:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1564,"name":"uint256","nodeType":"ElementaryTypeName","src":"9657:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1567,"mutability":"mutable","name":"emitEvent","nameLocation":"9677:9:13","nodeType":"VariableDeclaration","scope":1618,"src":"9672:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1566,"name":"bool","nodeType":"ElementaryTypeName","src":"9672:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9624:63:13"},"returnParameters":{"id":1569,"nodeType":"ParameterList","parameters":[],"src":"9705:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1666,"nodeType":"FunctionDefinition","src":"10321:476:13","nodes":[],"body":{"id":1665,"nodeType":"Block","src":"10410:387:13","nodes":[],"statements":[{"assignments":[1629],"declarations":[{"constant":false,"id":1629,"mutability":"mutable","name":"currentAllowance","nameLocation":"10428:16:13","nodeType":"VariableDeclaration","scope":1665,"src":"10420:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1628,"name":"uint256","nodeType":"ElementaryTypeName","src":"10420:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1634,"initialValue":{"arguments":[{"id":1631,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"10457:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1632,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1623,"src":"10464:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1630,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"10447:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":1633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10420:52:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1635,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"10486:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":1638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10510:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1637,"name":"uint256","nodeType":"ElementaryTypeName","src":"10510:7:13","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1636,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10505:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10505:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10519:3:13","memberName":"max","nodeType":"MemberAccess","src":"10505:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10486:36:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1664,"nodeType":"IfStatement","src":"10482:309:13","trueBody":{"id":1663,"nodeType":"Block","src":"10524:267:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1642,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"10542:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1643,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"10561:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10542:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1652,"nodeType":"IfStatement","src":"10538:130:13","trueBody":{"id":1651,"nodeType":"Block","src":"10568:100:13","statements":[{"errorCall":{"arguments":[{"id":1646,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1623,"src":"10620:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1647,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"10629:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"10647:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1645,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"10593:26:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10593:60:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1650,"nodeType":"RevertStatement","src":"10586:67:13"}]}},{"id":1662,"nodeType":"UncheckedBlock","src":"10681:100:13","statements":[{"expression":{"arguments":[{"id":1654,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"10718:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1655,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1623,"src":"10725:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1656,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"10734:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1657,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"10753:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10734:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":1659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10760:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1653,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1558,1618],"referencedDeclaration":1618,"src":"10709:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10709:57:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1661,"nodeType":"ExpressionStatement","src":"10709:57:13"}]}]}}]},"documentation":{"id":1619,"nodeType":"StructuredDocumentation","src":"10045:271:13","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10330:15:13","parameters":{"id":1626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1621,"mutability":"mutable","name":"owner","nameLocation":"10354:5:13","nodeType":"VariableDeclaration","scope":1666,"src":"10346:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1620,"name":"address","nodeType":"ElementaryTypeName","src":"10346:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1623,"mutability":"mutable","name":"spender","nameLocation":"10369:7:13","nodeType":"VariableDeclaration","scope":1666,"src":"10361:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1622,"name":"address","nodeType":"ElementaryTypeName","src":"10361:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1625,"mutability":"mutable","name":"value","nameLocation":"10386:5:13","nodeType":"VariableDeclaration","scope":1666,"src":"10378:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1624,"name":"uint256","nodeType":"ElementaryTypeName","src":"10378:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10345:47:13"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[],"src":"10410:0:13"},"scope":1667,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":1164,"name":"Context","nameLocations":["1133:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2646,"src":"1133:7:13"},"id":1165,"nodeType":"InheritanceSpecifier","src":"1133:7:13"},{"baseName":{"id":1166,"name":"IERC20","nameLocations":["1142:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":1745,"src":"1142:6:13"},"id":1167,"nodeType":"InheritanceSpecifier","src":"1142:6:13"},{"baseName":{"id":1168,"name":"IERC20Metadata","nameLocations":["1150:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":1771,"src":"1150:14:13"},"id":1169,"nodeType":"InheritanceSpecifier","src":"1150:14:13"},{"baseName":{"id":1170,"name":"IERC20Errors","nameLocations":["1166:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1166:12:13"},"id":1171,"nodeType":"InheritanceSpecifier","src":"1166:12:13"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":1163,"nodeType":"StructuredDocumentation","src":"348:757:13","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"linearizedBaseContracts":[1667,245,1771,1745,2646],"name":"ERC20","nameLocation":"1124:5:13","scope":1668,"usedErrors":[215,220,225,234,239,244],"usedEvents":[1679,1688]}],"license":"MIT"},"id":13}