@settlemint/solidity-token-erc20-metatx
Version:
Smart contract set to use ERC20 meta transactions in SettleMint
1,085 lines • 33.5 kB
JSON
{
"compiler": {
"version": "0.8.27+commit.40a35a09"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "address",
"name": "trustedForwarder_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"type": "error",
"name": "ECDSAInvalidSignature"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"type": "error",
"name": "ECDSAInvalidSignatureLength"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"type": "error",
"name": "ECDSAInvalidSignatureS"
},
{
"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": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"type": "error",
"name": "ERC2612ExpiredSignature"
},
{
"inputs": [
{
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"type": "error",
"name": "ERC2612InvalidSigner"
},
{
"inputs": [],
"type": "error",
"name": "EnforcedPause"
},
{
"inputs": [],
"type": "error",
"name": "ExpectedPause"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "currentNonce",
"type": "uint256"
}
],
"type": "error",
"name": "InvalidAccountNonce"
},
{
"inputs": [],
"type": "error",
"name": "InvalidShortString"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"type": "error",
"name": "OwnableInvalidOwner"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"type": "error",
"name": "OwnableUnauthorizedAccount"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"type": "error",
"name": "StringTooLong"
},
{
"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": [],
"type": "event",
"name": "EIP712DomainChanged",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "previousOwner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "newOwner",
"type": "address",
"indexed": true
}
],
"type": "event",
"name": "OwnershipTransferred",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address",
"indexed": false
}
],
"type": "event",
"name": "Paused",
"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": "account",
"type": "address",
"indexed": false
}
],
"type": "event",
"name": "Unpaused",
"anonymous": false
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
]
},
{
"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": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "burn"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "burnFrom"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "forwarder",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "isTrustedForwarder",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mint"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "msgData",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "function",
"name": "pause"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "permit"
},
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "function",
"name": "renounceOwnership"
},
{
"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"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transferOwnership"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "trustedForwarder",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "function",
"name": "unpause"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"DOMAIN_SEPARATOR()": {
"details": "Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."
},
"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`."
},
"burn(uint256)": {
"details": "Destroys `amount` tokens from `account`, reducing the total supply. Emits a Transfer event with `to` set to the zero address. Requirements: - `account` cannot be the zero address. - `account` must have at least `amount` tokens.",
"params": {
"amount": "The amount of tokens to burn from the sender of the transaction, denominated by the decimals() function"
}
},
"burnFrom(address,uint256)": {
"details": "Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."
},
"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}."
},
"eip712Domain()": {
"details": "returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."
},
"isTrustedForwarder(address)": {
"details": "Indicates whether any particular address is the trusted forwarder."
},
"mint(address,uint256)": {
"details": "Creates `amount` tokens and assigns them to `account`, increasing the total supply. Emits a Transfer event with `from` set to the zero address. Requirements: - `account` cannot be the zero address. - `msg.sender` needs the DEFAULT_ADMIN_ROLE.",
"params": {
"amount": "The amount of tokens to mint, denominated by the decimals() function",
"to": "The address to mint the new tokens into"
}
},
"name()": {
"details": "Returns the name of the token."
},
"nonces(address)": {
"details": "Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"pause()": {
"details": "Triggers stopped state. Requirements: - The contract must not be paused. - The sender of the transaction must have the DEFAULT_ADMIN_ROLE"
},
"paused()": {
"details": "Returns true if the contract is paused, and false otherwise."
},
"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
"details": "Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
},
"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`."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
},
"trustedForwarder()": {
"details": "Returns the address of the trusted forwarder."
},
"unpause()": {
"details": "Returns to normal state. Requirements: - The contract must be paused. - The sender of the transaction must have the DEFAULT_ADMIN_ROLE"
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
"@openzeppelin/=node_modules/@openzeppelin/",
"forge-std/=lib/forge-std/src/",
"hardhat/=node_modules/hardhat/"
],
"optimizer": {
"enabled": true,
"runs": 10000
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"contracts/GenericTokenMeta.sol": "GenericTokenMeta"
},
"evmVersion": "cancun",
"libraries": {},
"viaIR": true
},
"sources": {
"contracts/GenericTokenMeta.sol": {
"keccak256": "0x1567b82142440a22746b3d4255de5550164db5c478b67268684ba98bfdd85dd6",
"urls": [
"bzz-raw://80e84c3606cd1e867b004b425f8ffbc87d84ddd4cb6661195058e4ade45f8f16",
"dweb:/ipfs/QmXocQiAe6KpgWpu57q5G2V54iDayenT7gh3tNnyKPsDFC"
],
"license": "FSL-1.1-MIT"
},
"node_modules/@openzeppelin/contracts/access/Ownable.sol": {
"keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb",
"urls": [
"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6",
"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": {
"keccak256": "0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee",
"urls": [
"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae",
"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"keccak256": "0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e",
"urls": [
"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23",
"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol": {
"keccak256": "0x345acfb731203002ef98916d5a222339709db0ad44dc4a389e7f1ce4088ce59b",
"urls": [
"bzz-raw://e1dcd7e6c8ca2b402e232d2e44666c282a894c475bca15532464a47513222e5d",
"dweb:/ipfs/QmbfGjwHHCUxHtkCECoisxr7JDiZXSFtrHNizwwKzNNSHJ"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"keccak256": "0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994",
"urls": [
"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c",
"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2",
"urls": [
"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303",
"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol": {
"keccak256": "0x2659248df25e34000ed214b3dc8da2160bc39874c992b477d9e2b1b3283dc073",
"urls": [
"bzz-raw://c345af1b0e7ea28d1216d6a04ab28f5534a5229b9edf9ca3cd0e84950ae58d26",
"dweb:/ipfs/QmY63jtSrYpLRe8Gj1ep2vMDCKxGNNG3hnNVKBVnrs2nmA"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol": {
"keccak256": "0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55",
"urls": [
"bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c",
"dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol": {
"keccak256": "0xecd08ad8132d88a5fcfd50f76a18583004fcdab4c33fb86343903ae420ca5a2b",
"urls": [
"bzz-raw://02422dce2e5305624e5cec644add1baa44bfa98ea131bf6030069089a2f56ca4",
"dweb:/ipfs/QmcsSUkX7AYXNZE18LYE6JEmv8zZcCZvKfbUm9cSzNQyNo"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"keccak256": "0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f",
"urls": [
"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e",
"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
"keccak256": "0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4",
"urls": [
"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a",
"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2",
"urls": [
"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12",
"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Nonces.sol": {
"keccak256": "0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f",
"urls": [
"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e",
"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Panic.sol": {
"keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a",
"urls": [
"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a",
"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Pausable.sol": {
"keccak256": "0xdb484371dfbb848cb6f5d70464e9ac9b2900e4164ead76bbce4fef0b44bcc68f",
"urls": [
"bzz-raw://f9d6f6f6600a2bec622f699081b58350873b5e63ce05464d17d674a290bb8a7c",
"dweb:/ipfs/QmQKVzSQY1PM3Bid4QhgVVZyx6B4Jx7XgaQzLKHj38vJz8"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol": {
"keccak256": "0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402",
"urls": [
"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35",
"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": {
"keccak256": "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97",
"urls": [
"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b",
"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Strings.sol": {
"keccak256": "0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4",
"urls": [
"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e",
"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
"keccak256": "0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84",
"urls": [
"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9",
"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol": {
"keccak256": "0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5",
"urls": [
"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746",
"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
"keccak256": "0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631",
"urls": [
"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59",
"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
"keccak256": "0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6",
"urls": [
"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3",
"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
"keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54",
"urls": [
"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8",
"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": {
"keccak256": "0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3",
"urls": [
"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03",
"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"
],
"license": "MIT"
}
},
"version": 1
}