├── README.md ├── NFT ├── public │ ├── logo.png │ ├── robots.txt │ ├── manifest.json │ └── index.html ├── artifacts │ ├── contracts │ │ └── NftMinter.sol │ │ │ ├── NFTMinter.dbg.json │ │ │ └── NFTMinter.json │ └── @openzeppelin │ │ └── contracts │ │ ├── utils │ │ ├── Address.sol │ │ │ ├── Address.dbg.json │ │ │ └── Address.json │ │ ├── Context.sol │ │ │ ├── Context.dbg.json │ │ │ └── Context.json │ │ ├── Strings.sol │ │ │ ├── Strings.dbg.json │ │ │ └── Strings.json │ │ ├── Counters.sol │ │ │ ├── Counters.dbg.json │ │ │ └── Counters.json │ │ ├── math │ │ │ └── Math.sol │ │ │ │ ├── Math.dbg.json │ │ │ │ └── Math.json │ │ └── introspection │ │ │ ├── ERC165.sol │ │ │ ├── ERC165.dbg.json │ │ │ └── ERC165.json │ │ │ └── IERC165.sol │ │ │ ├── IERC165.dbg.json │ │ │ └── IERC165.json │ │ └── token │ │ └── ERC721 │ │ ├── ERC721.sol │ │ ├── ERC721.dbg.json │ │ └── ERC721.json │ │ ├── IERC721.sol │ │ ├── IERC721.dbg.json │ │ └── IERC721.json │ │ ├── IERC721Receiver.sol │ │ ├── IERC721Receiver.dbg.json │ │ └── IERC721Receiver.json │ │ └── extensions │ │ ├── ERC721URIStorage.sol │ │ ├── ERC721URIStorage.dbg.json │ │ └── ERC721URIStorage.json │ │ └── IERC721Metadata.sol │ │ ├── IERC721Metadata.dbg.json │ │ └── IERC721Metadata.json ├── src │ ├── setupTests.js │ ├── App.test.js │ ├── index.css │ ├── reportWebVitals.js │ ├── App.js │ ├── index.js │ ├── theme.js │ ├── App.css │ ├── connectWallet.js │ ├── ipfsUploader.js │ ├── logo.svg │ ├── MintNFT.js │ └── Nft-Minter.json ├── webpack.config.js ├── scripts │ └── deploy.js ├── hardhat.config.js ├── package.json ├── contracts │ └── NftMinter.sol ├── test │ └── NFTMinter.test.js └── cache │ └── solidity-files-cache.json ├── Voting Dapp ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── index.html ├── src │ ├── setupTests.js │ ├── App.test.js │ ├── Components │ │ ├── Finished.jsx │ │ ├── Login.jsx │ │ └── Connected.jsx │ ├── index.css │ ├── reportWebVitals.js │ ├── index.js │ ├── App.css │ ├── logo.svg │ ├── Constant │ │ └── constant.js │ └── App.js ├── scripts │ └── deploy.js ├── hardhat.config.js ├── package.json ├── contracts │ └── Voting.sol └── test │ └── Lock.js └── ERC 20 └── ERC-20.sol /README.md: -------------------------------------------------------------------------------- 1 | # NFT-Minting-DApp 2 | -------------------------------------------------------------------------------- /NFT/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/NFT/public/logo.png -------------------------------------------------------------------------------- /NFT/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /Voting Dapp/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /Voting Dapp/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/Voting Dapp/public/favicon.ico -------------------------------------------------------------------------------- /Voting Dapp/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/Voting Dapp/public/logo192.png -------------------------------------------------------------------------------- /Voting Dapp/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/Voting Dapp/public/logo512.png -------------------------------------------------------------------------------- /NFT/artifacts/contracts/NftMinter.sol/NFTMinter.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol/ERC721URIStorage.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "..\\..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json" 4 | } 5 | -------------------------------------------------------------------------------- /NFT/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /Voting Dapp/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /NFT/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /Voting Dapp/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /Voting Dapp/src/Components/Finished.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Finished = (props) => { 4 | return ( 5 |
6 |

Voting is Finished

7 |
8 | ); 9 | }; 10 | 11 | export default Finished; 12 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Context", 4 | "sourceName": "@openzeppelin/contracts/utils/Context.sol", 5 | "abi": [], 6 | "bytecode": "0x", 7 | "deployedBytecode": "0x", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /Voting Dapp/src/Components/Login.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Login = (props) => { 4 | return ( 5 |
6 |

Welcome to decentralized voting application

7 | 8 |
9 | ) 10 | } 11 | 12 | export default Login; -------------------------------------------------------------------------------- /NFT/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 4 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /NFT/src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /Voting Dapp/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /Voting Dapp/src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /NFT/src/App.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import MintNFT from "./MintNFT"; 3 | import theme from "./theme"; 4 | import CssBaseline from "@mui/material/CssBaseline"; 5 | import { ThemeProvider } from "@mui/material/styles"; 6 | import "./App.css"; 7 | 8 | function App() { 9 | return ( 10 | 11 | 12 | 13 | 14 | ); 15 | } 16 | 17 | export default App; 18 | -------------------------------------------------------------------------------- /NFT/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const Dotenv = require("dotenv-webpack"); 3 | 4 | module.exports = { 5 | entry: "./src/index.js", // Replace with the entry point of your application 6 | output: { 7 | path: path.resolve(__dirname, "dist"), // Replace with the output directory for your bundled files 8 | filename: "bundle.js", // Replace with the desired name for the bundled file 9 | }, 10 | plugins: [new Dotenv()], 11 | // Add other Webpack configurations as needed 12 | }; 13 | -------------------------------------------------------------------------------- /Voting Dapp/scripts/deploy.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require("hardhat"); 2 | 3 | async function main() { 4 | const Voting = await ethers.getContractFactory("Voting"); 5 | 6 | // Start deployment, returning a promise that resolves to a contract object 7 | const Voting_ = await Voting.deploy( 8 | ["Sam", "Lovneesh", "Greg", "Nishchal | Shardeum"], 9 | 180 10 | ); 11 | console.log("Contract address:", Voting_.address); 12 | } 13 | 14 | main() 15 | .then(() => process.exit(0)) 16 | .catch((error) => { 17 | console.error(error); 18 | process.exit(1); 19 | }); 20 | -------------------------------------------------------------------------------- /NFT/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import './index.css'; 4 | import App from './App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | 7 | const root = ReactDOM.createRoot(document.getElementById('root')); 8 | root.render( 9 | 10 | 11 | 12 | ); 13 | 14 | // If you want to start measuring performance in your app, pass a function 15 | // to log results (for example: reportWebVitals(console.log)) 16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17 | reportWebVitals(); 18 | -------------------------------------------------------------------------------- /Voting Dapp/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import './index.css'; 4 | import App from './App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | 7 | const root = ReactDOM.createRoot(document.getElementById('root')); 8 | root.render( 9 | 10 | 11 | 12 | ); 13 | 14 | // If you want to start measuring performance in your app, pass a function 15 | // to log results (for example: reportWebVitals(console.log)) 16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17 | reportWebVitals(); 18 | -------------------------------------------------------------------------------- /NFT/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /Voting Dapp/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /ERC 20/ERC-20.sol: -------------------------------------------------------------------------------- 1 | //SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.17; 3 | 4 | import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ShardeumERC20Token is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol){ 8 | _mint(msg.sender, 10000 * 10 ** 18); 9 | 10 | } 11 | 12 | function mint(uint256 _amount) public{ 13 | _mint(msg.sender, _amount); 14 | } 15 | 16 | function burn(uint256 _amount) public { 17 | require(balanceOf(msg.sender) >= _amount, "Cannot burn more tokens than your balance!"); 18 | _burn(msg.sender, _amount); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Address", 4 | "sourceName": "@openzeppelin/contracts/utils/Address.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220289951791995b8e449c901c4b4c2bf03ac7d11a0e0a78d1677050f81215cd7de64736f6c63430008110033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220289951791995b8e449c901c4b4c2bf03ac7d11a0e0a78d1677050f81215cd7de64736f6c63430008110033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Strings", 4 | "sourceName": "@openzeppelin/contracts/utils/Strings.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bae0126c0f7bb817d0dc49cdfb342cdb8915c73987f523e01b6dccf5af7e146764736f6c63430008110033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bae0126c0f7bb817d0dc49cdfb342cdb8915c73987f523e01b6dccf5af7e146764736f6c63430008110033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Math", 4 | "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f9b3ebee196cdd7f9d21d5f1b8a981de67d22bfef6e027fce9b5e3fa80a93b7264736f6c63430008110033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f9b3ebee196cdd7f9d21d5f1b8a981de67d22bfef6e027fce9b5e3fa80a93b7264736f6c63430008110033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Counters", 4 | "sourceName": "@openzeppelin/contracts/utils/Counters.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d43d0ef1a472ecbf50bfcb77d2940a7ecaa6b0bb1bd21c66f8a7dfc9bb52b4b864736f6c63430008110033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d43d0ef1a472ecbf50bfcb77d2940a7ecaa6b0bb1bd21c66f8a7dfc9bb52b4b864736f6c63430008110033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /NFT/src/theme.js: -------------------------------------------------------------------------------- 1 | import { createTheme } from "@mui/material/styles"; 2 | 3 | const theme = createTheme({ 4 | palette: { 5 | mode: "dark", 6 | 7 | primary: { 8 | main: "#ffc926", 9 | }, 10 | secondary: { 11 | main: "#088ef3", 12 | }, 13 | }, 14 | typography: { 15 | fontFamily: "Roboto, Arial, sans-serif", 16 | h4: { 17 | fontWeight: 700, 18 | marginBottom: "16px", 19 | }, 20 | h5: { 21 | fontWeight: 600, 22 | marginBottom: "12px", 23 | }, 24 | h6: { 25 | fontWeight: 500, 26 | marginBottom: "8px", 27 | }, 28 | subtitle1: { 29 | fontWeight: 400, 30 | marginBottom: "8px", 31 | }, 32 | caption: { 33 | fontStyle: "italic", 34 | }, 35 | }, 36 | }); 37 | 38 | export default theme; 39 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ERC165", 4 | "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "bytes4", 10 | "name": "interfaceId", 11 | "type": "bytes4" 12 | } 13 | ], 14 | "name": "supportsInterface", 15 | "outputs": [ 16 | { 17 | "internalType": "bool", 18 | "name": "", 19 | "type": "bool" 20 | } 21 | ], 22 | "stateMutability": "view", 23 | "type": "function" 24 | } 25 | ], 26 | "bytecode": "0x", 27 | "deployedBytecode": "0x", 28 | "linkReferences": {}, 29 | "deployedLinkReferences": {} 30 | } 31 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC165", 4 | "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "bytes4", 10 | "name": "interfaceId", 11 | "type": "bytes4" 12 | } 13 | ], 14 | "name": "supportsInterface", 15 | "outputs": [ 16 | { 17 | "internalType": "bool", 18 | "name": "", 19 | "type": "bool" 20 | } 21 | ], 22 | "stateMutability": "view", 23 | "type": "function" 24 | } 25 | ], 26 | "bytecode": "0x", 27 | "deployedBytecode": "0x", 28 | "linkReferences": {}, 29 | "deployedLinkReferences": {} 30 | } 31 | -------------------------------------------------------------------------------- /NFT/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | min-height: 100vh; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | } 8 | 9 | .App-logo { 10 | height: 40vmin; 11 | pointer-events: none; 12 | } 13 | 14 | @media (prefers-reduced-motion: no-preference) { 15 | .App-logo { 16 | animation: App-logo-spin infinite 20s linear; 17 | } 18 | } 19 | 20 | .App-header { 21 | background-color: #282c34; 22 | min-height: 100vh; 23 | display: flex; 24 | flex-direction: column; 25 | align-items: center; 26 | justify-content: center; 27 | font-size: calc(10px + 2vmin); 28 | color: white; 29 | } 30 | 31 | .App-link { 32 | color: #61dafb; 33 | } 34 | 35 | @keyframes App-logo-spin { 36 | from { 37 | transform: rotate(0deg); 38 | } 39 | to { 40 | transform: rotate(360deg); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /NFT/scripts/deploy.js: -------------------------------------------------------------------------------- 1 | const { ethers } = require("hardhat"); 2 | // imports the ethers module from the Hardhat library, 3 | 4 | async function main() { 5 | const NFTMinter = await ethers.getContractFactory("NFTMinter"); 6 | //retrieves the contract factory for the NFTMinter contract. This factory is used to create instances of the contract. 7 | const nftMinter = await NFTMinter.deploy(); 8 | //deploys a new instance of the NFTMinter contract. 9 | await nftMinter.deployed(); 10 | //waits for the deployment to complete and ensures that the contract is successfully deployed. 11 | console.log("NFTMinter deployed to:", nftMinter.address); 12 | } 13 | // It handles the asynchronous execution of the function and handles any errors that may occur. 14 | main() 15 | .then(() => process.exit(0)) 16 | .catch((error) => { 17 | console.error(error); 18 | process.exit(1); 19 | }); 20 | -------------------------------------------------------------------------------- /NFT/src/connectWallet.js: -------------------------------------------------------------------------------- 1 | import { ethers } from "ethers"; 2 | import NFTMinter from "./Nft-Minter.json"; 3 | 4 | export async function connectWallet() { 5 | await window.ethereum.request({ method: "eth_requestAccounts" }); 6 | const provider = new ethers.providers.Web3Provider(window.ethereum); 7 | const signer = provider.getSigner(); 8 | 9 | const contract = new ethers.Contract( 10 | "0xb1C69A6C5178ab2e64195839b390772C813Fc21A", // Paste your Deployed NFT contract address 11 | NFTMinter.abi, 12 | signer 13 | ); 14 | 15 | return { signer, contract }; 16 | } 17 | 18 | export async function connectMetaMask() { 19 | const { signer } = await connectWallet(); 20 | const address = await signer.getAddress(); 21 | const balance = await signer.getBalance(); 22 | const formattedBalance = ethers.utils.formatEther(balance); 23 | return { address, formattedBalance }; 24 | } 25 | -------------------------------------------------------------------------------- /NFT/hardhat.config.js: -------------------------------------------------------------------------------- 1 | require("@nomiclabs/hardhat-waffle"); 2 | require("@nomiclabs/hardhat-ethers"); 3 | require("dotenv").config(); 4 | 5 | const { PRIVATE_KEY } = process.env; 6 | 7 | /** 8 | * @type import('hardhat/config').HardhatUserConfig 9 | */ 10 | 11 | module.exports = { 12 | defaultNetwork: "sphinx", 13 | networks: { 14 | hardhat: {}, 15 | sphinx: { 16 | url: "https://dapps.shardeum.org/", 17 | chainId: 8081, 18 | accounts: [`0x${PRIVATE_KEY}`], 19 | }, 20 | }, 21 | solidity: { 22 | version: "0.8.17", 23 | settings: { 24 | optimizer: { 25 | enabled: true, 26 | runs: 200, 27 | }, 28 | }, 29 | }, 30 | paths: { 31 | sources: "./contracts", 32 | tests: "./test", 33 | cache: "./cache", 34 | artifacts: "./artifacts", 35 | }, 36 | mocha: { 37 | timeout: 40000, 38 | }, 39 | }; 40 | -------------------------------------------------------------------------------- /Voting Dapp/hardhat.config.js: -------------------------------------------------------------------------------- 1 | require("@nomiclabs/hardhat-waffle"); 2 | require("@nomiclabs/hardhat-ethers"); 3 | require("dotenv").config(); 4 | 5 | const { PRIVATE_KEY } = process.env; 6 | 7 | /** 8 | * @type import('hardhat/config').HardhatUserConfig 9 | */ 10 | 11 | module.exports = { 12 | defaultNetwork: "sphinx", 13 | networks: { 14 | hardhat: {}, 15 | sphinx: { 16 | url: "https://dapps.shardeum.org/", 17 | chainId: 8081, 18 | accounts: [`0x${PRIVATE_KEY}`], 19 | }, 20 | }, 21 | solidity: { 22 | version: "0.8.17", 23 | settings: { 24 | optimizer: { 25 | enabled: true, 26 | runs: 200, 27 | }, 28 | }, 29 | }, 30 | paths: { 31 | sources: "./contracts", 32 | tests: "./test", 33 | cache: "./cache", 34 | artifacts: "./artifacts", 35 | }, 36 | mocha: { 37 | timeout: 40000, 38 | }, 39 | }; 40 | -------------------------------------------------------------------------------- /NFT/src/ipfsUploader.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | const pinataApiKey = "760746f0cbd3be4d8855"; 4 | const pinataApiSecret = "1027eff8032f808c3c70b7d468aa373c57877834bec400d140da48e7645d2ce5"; 5 | 6 | const pinataApiUrl = "https://api.pinata.cloud/pinning/pinFileToIPFS"; 7 | 8 | const pinataHeaders = { 9 | headers: { 10 | "Content-Type": "multipart/form-data", 11 | pinata_api_key: pinataApiKey, 12 | pinata_secret_api_key: pinataApiSecret, 13 | }, 14 | }; 15 | 16 | export async function uploadToIPFS(file) { 17 | const formData = new FormData(); 18 | formData.append("file", file); 19 | 20 | try { 21 | const response = await axios.post(pinataApiUrl, formData, pinataHeaders); 22 | const ipfsHash = response.data.IpfsHash; 23 | return `https://gateway.pinata.cloud/ipfs/${ipfsHash}`; 24 | } catch (error) { 25 | console.error("Error uploading file to Pinata:", error); 26 | throw error; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Voting Dapp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@nomicfoundation/hardhat-toolbox": "^2.0.2", 7 | "@nomiclabs/hardhat-ethers": "^2.2.2", 8 | "@nomiclabs/hardhat-waffle": "^2.0.6", 9 | "@testing-library/jest-dom": "^5.16.5", 10 | "@testing-library/react": "^13.4.0", 11 | "@testing-library/user-event": "^13.5.0", 12 | "dotenv": "^16.0.3", 13 | "ethers": "^5.7.1", 14 | "hardhat": "^2.13.0", 15 | "react": "^18.2.0", 16 | "react-dom": "^18.2.0", 17 | "react-scripts": "5.0.1", 18 | "web-vitals": "^2.1.4" 19 | }, 20 | "scripts": { 21 | "start": "react-scripts start", 22 | "build": "react-scripts build", 23 | "test": "react-scripts test", 24 | "eject": "react-scripts eject" 25 | }, 26 | "eslintConfig": { 27 | "extends": [ 28 | "react-app", 29 | "react-app/jest" 30 | ] 31 | }, 32 | "browserslist": { 33 | "production": [ 34 | ">0.2%", 35 | "not dead", 36 | "not op_mini all" 37 | ], 38 | "development": [ 39 | "last 1 chrome version", 40 | "last 1 firefox version", 41 | "last 1 safari version" 42 | ] 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC721Receiver", 4 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "address", 10 | "name": "operator", 11 | "type": "address" 12 | }, 13 | { 14 | "internalType": "address", 15 | "name": "from", 16 | "type": "address" 17 | }, 18 | { 19 | "internalType": "uint256", 20 | "name": "tokenId", 21 | "type": "uint256" 22 | }, 23 | { 24 | "internalType": "bytes", 25 | "name": "data", 26 | "type": "bytes" 27 | } 28 | ], 29 | "name": "onERC721Received", 30 | "outputs": [ 31 | { 32 | "internalType": "bytes4", 33 | "name": "", 34 | "type": "bytes4" 35 | } 36 | ], 37 | "stateMutability": "nonpayable", 38 | "type": "function" 39 | } 40 | ], 41 | "bytecode": "0x", 42 | "deployedBytecode": "0x", 43 | "linkReferences": {}, 44 | "deployedLinkReferences": {} 45 | } 46 | -------------------------------------------------------------------------------- /NFT/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nft-minter-dapp", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@emotion/react": "^11.10.6", 7 | "@emotion/styled": "^11.10.6", 8 | "@mui/material": "^5.11.16", 9 | "@nomiclabs/hardhat-ethers": "^2.2.2", 10 | "@nomiclabs/hardhat-waffle": "^2.0.5", 11 | "@openzeppelin/contracts": "^4.8.2", 12 | "@testing-library/jest-dom": "^5.16.5", 13 | "@testing-library/react": "^13.4.0", 14 | "@testing-library/user-event": "^13.5.0", 15 | "axios": "^1.3.5", 16 | "chai": "^4.3.7", 17 | "dotenv": "^16.3.1", 18 | "ethereum-waffle": "^4.0.10", 19 | "ethers": "^5.7.2", 20 | "hardhat": "^2.13.0", 21 | "ipfs-http-client": "^60.0.0", 22 | "nft.storage": "^7.1.0", 23 | "path-browserify": "^1.0.1", 24 | "react": "^18.2.0", 25 | "react-dom": "^18.2.0", 26 | "react-scripts": "5.0.1", 27 | "web-vitals": "^2.1.4" 28 | }, 29 | "scripts": { 30 | "start": "react-scripts start", 31 | "build": "react-scripts build", 32 | "test": "react-scripts test", 33 | "eject": "react-scripts eject" 34 | }, 35 | "eslintConfig": { 36 | "extends": [ 37 | "react-app", 38 | "react-app/jest" 39 | ] 40 | }, 41 | "browserslist": { 42 | "production": [ 43 | ">0.2%", 44 | "not dead", 45 | "not op_mini all" 46 | ], 47 | "development": [ 48 | "last 1 chrome version", 49 | "last 1 firefox version", 50 | "last 1 safari version" 51 | ] 52 | }, 53 | "devDependencies": { 54 | "dotenv-webpack": "^8.0.1" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /NFT/contracts/NftMinter.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.8.3; 2 | //Version of Solidity that the contract is written in 3 | 4 | import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; 5 | //The ERC721.sol file contains the implementation of the ERC721 standard, which is used for non-fungible tokens (NFTs). 6 | import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; 7 | //It adds functionality for storing and retrieving token metadata URIs. 8 | import "@openzeppelin/contracts/utils/Counters.sol"; 9 | 10 | contract NFTMinter is ERC721URIStorage{ 11 | //This line defines a new contract called NFTMinter 12 | using Counters for Counters.Counter; 13 | //Counters library to create a counter variable called _tokenIds 14 | Counters.Counter private _tokenIds; 15 | 16 | constructor() ERC721("Shardeum Dev NFTMinter", "SNFT") {} 17 | //constructor function of the NFTMinter contract. It is executed only once when the contract is deployed. 18 | 19 | function mintNFT(address recipient, string memory tokenURI) public returns (uint256) { 20 | // recipient, which is the address that will receive the NFT, and tokenURI, which is the URI of the NFT's metadata. 21 | 22 | _tokenIds.increment(); 23 | //increments the _tokenIds counter, generating a new ID for the NFT. 24 | uint256 newItemId = _tokenIds.current(); 25 | //mints a new NFT and assigns it to the recipient address with the newItemId 26 | _mint(recipient, newItemId); 27 | _setTokenURI(newItemId, tokenURI); 28 | //sets the tokenURI of the newly minted NFT. 29 | return newItemId; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /NFT/test/NFTMinter.test.js: -------------------------------------------------------------------------------- 1 | const { expect } = require("chai"); 2 | const { ethers } = require("hardhat"); 3 | 4 | describe("NFTMinter", function () { 5 | let NFTMinter, nftMinter, owner, addr1; 6 | 7 | beforeEach(async () => { 8 | NFTMinter = await ethers.getContractFactory("NFTMinter"); 9 | nftMinter = await NFTMinter.deploy(); 10 | await nftMinter.deployed(); 11 | 12 | [owner, addr1] = await ethers.getSigners(); 13 | }); 14 | 15 | describe("Deployment", function () { 16 | it("Should set the right owner", async function () { 17 | expect(await nftMinter.owner()).to.equal(owner.address); 18 | }); 19 | 20 | it("Should have a total supply of zero initially", async function () { 21 | expect(await nftMinter.totalSupply()).to.equal(0); 22 | }); 23 | }); 24 | 25 | // describe("Minting NFTs", function () { 26 | // it("Should mint a new NFT", async function () { 27 | // const tokenURI = "ipfs://ipfs/Qmabcdefgh"; 28 | // await nftMinter.mintNFT(addr1.address, tokenURI); 29 | // expect(await nftMinter.tokenURI(1)).to.equal(tokenURI); 30 | // }); 31 | 32 | // it("Should assign the NFT to the correct address", async function () { 33 | // const tokenURI = "ipfs://ipfs/Qmabcdefgh"; 34 | // await nftMinter.mintNFT(addr1.address, tokenURI); 35 | // expect(await nftMinter.ownerOf(1)).to.equal(addr1.address); 36 | // }); 37 | 38 | // it("Should update the total supply after minting", async function () { 39 | // const tokenURI = "ipfs://ipfs/Qmabcdefgh"; 40 | // await nftMinter.mintNFT(addr1.address, tokenURI); 41 | // expect(await nftMinter.totalSupply()).to.equal(1); 42 | // }); 43 | // }); 44 | }); 45 | -------------------------------------------------------------------------------- /Voting Dapp/src/Components/Connected.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Connected = (props) => { 4 | return ( 5 |
6 |

You are Connected to Metamask

7 |

Metamask Account: {props.account}

8 |

Remaining Time: {props.remainingTime}

9 | { props.showButton ? ( 10 |

You have already voted

11 | ) : ( 12 |
13 | 14 |
15 | 16 | 17 |
18 | )} 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {props.candidates.map((candidate, index) => ( 30 | 31 | 32 | 33 | 34 | 35 | ))} 36 | 37 |
IndexCandidate nameCandidate votes
{candidate.index}{candidate.name}{candidate.voteCount}
38 | 39 |
40 | ) 41 | } 42 | 43 | export default Connected; -------------------------------------------------------------------------------- /NFT/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | Dainik NFT Minter 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Voting Dapp/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Voting Dapp/contracts/Voting.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.0; 3 | 4 | contract Voting { 5 | struct Candidate { 6 | string name; 7 | uint256 voteCount; 8 | } 9 | 10 | Candidate[] public candidates; 11 | address owner; 12 | mapping(address => bool) public voters; 13 | 14 | uint256 public votingStart; 15 | uint256 public votingEnd; 16 | 17 | constructor(string[] memory _candidateNames, uint256 _durationInMinutes) { 18 | for (uint256 i = 0; i < _candidateNames.length; i++) { 19 | candidates.push(Candidate({ 20 | name: _candidateNames[i], 21 | voteCount: 0 22 | })); 23 | } 24 | owner = msg.sender; 25 | votingStart = block.timestamp; 26 | votingEnd = block.timestamp + (_durationInMinutes * 1 minutes); 27 | } 28 | 29 | modifier onlyOwner { 30 | require(msg.sender == owner); 31 | _; 32 | } 33 | 34 | function addCandidate(string memory _name) public onlyOwner { 35 | candidates.push(Candidate({ 36 | name: _name, 37 | voteCount: 0 38 | })); 39 | } 40 | 41 | function vote(uint256 _candidateIndex) public { 42 | require(!voters[msg.sender], "You have already voted."); 43 | require(_candidateIndex < candidates.length, "Invalid candidate index."); 44 | 45 | candidates[_candidateIndex].voteCount++; 46 | voters[msg.sender] = true; 47 | } 48 | 49 | function getAllVotesOfCandiates() public view returns (Candidate[] memory){ 50 | return candidates; 51 | } 52 | 53 | function getVotingStatus() public view returns (bool) { 54 | return (block.timestamp >= votingStart && block.timestamp < votingEnd); 55 | } 56 | 57 | function getRemainingTime() public view returns (uint256) { 58 | require(block.timestamp >= votingStart, "Voting has not started yet."); 59 | if (block.timestamp >= votingEnd) { 60 | return 0; 61 | } 62 | return votingEnd - block.timestamp; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Voting Dapp/src/App.css: -------------------------------------------------------------------------------- 1 | .login-container { 2 | display: flex; 3 | flex-direction: column; 4 | align-items: center; 5 | justify-content: center; 6 | height: 100vh; 7 | background-color: #f1f1f1; 8 | } 9 | 10 | .welcome-message { 11 | font-size: 2rem; 12 | text-align: center; 13 | margin-bottom: 2rem; 14 | } 15 | 16 | .login-button { 17 | background-color: #007bff; 18 | color: #fff; 19 | font-size: 1.2rem; 20 | border: none; 21 | border-radius: 0.3rem; 22 | padding: 1rem 2rem; 23 | cursor: pointer; 24 | transition: background-color 0.3s ease; 25 | } 26 | 27 | .login-button:hover { 28 | background-color: #0069d9; 29 | } 30 | 31 | 32 | .connected-container { 33 | display: flex; 34 | flex-direction: column; 35 | align-items: center; 36 | justify-content: center; 37 | height: 100vh; 38 | background-color: #f1f1f1; 39 | } 40 | 41 | .connected-header { 42 | font-size: 2rem; 43 | text-align: center; 44 | margin-bottom: 2rem; 45 | } 46 | 47 | .connected-account { 48 | font-size: 1.2rem; 49 | text-align: center; 50 | margin-bottom: 2rem; 51 | } 52 | 53 | .connected-button { 54 | background-color: #007bff; 55 | color: #fff; 56 | font-size: 1.2rem; 57 | border: none; 58 | border-radius: 0.3rem; 59 | padding: 1rem 2rem; 60 | cursor: pointer; 61 | transition: background-color 0.3s ease; 62 | margin-bottom: 2rem; 63 | } 64 | 65 | .connected-button:hover { 66 | background-color: #0069d9; 67 | } 68 | 69 | .connected-contract-address { 70 | font-size: 1.2rem; 71 | text-align: center; 72 | } 73 | 74 | 75 | .candidates-table { 76 | border-collapse: collapse; 77 | width: 50%; 78 | text-align:center; 79 | } 80 | 81 | .candidates-table th, .candidates-table td { 82 | padding: 8px; 83 | text-align: left; 84 | border-bottom: 1px solid #ddd; 85 | } 86 | 87 | .candidates-table th { 88 | background-color: #f2f2f2; 89 | } 90 | 91 | input[type=number] { 92 | padding: 10px; 93 | border: 1px solid #ccc; 94 | border-radius: 4px; 95 | box-sizing: border-box; 96 | font-size: 16px; 97 | margin-bottom: 10px; 98 | } 99 | 100 | -------------------------------------------------------------------------------- /NFT/src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Voting Dapp/src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Voting Dapp/src/Constant/constant.js: -------------------------------------------------------------------------------- 1 | const contractAddress = "0x1de8a1838E3b8d8eA2fcE0D776E22D5f2DCFA988"; 2 | 3 | const contractAbi = [ 4 | { 5 | inputs: [ 6 | { 7 | internalType: "string[]", 8 | name: "_candidateNames", 9 | type: "string[]", 10 | }, 11 | { 12 | internalType: "uint256", 13 | name: "_durationInMinutes", 14 | type: "uint256", 15 | }, 16 | ], 17 | stateMutability: "nonpayable", 18 | type: "constructor", 19 | }, 20 | { 21 | inputs: [ 22 | { 23 | internalType: "string", 24 | name: "_name", 25 | type: "string", 26 | }, 27 | ], 28 | name: "addCandidate", 29 | outputs: [], 30 | stateMutability: "nonpayable", 31 | type: "function", 32 | }, 33 | { 34 | inputs: [ 35 | { 36 | internalType: "uint256", 37 | name: "", 38 | type: "uint256", 39 | }, 40 | ], 41 | name: "candidates", 42 | outputs: [ 43 | { 44 | internalType: "string", 45 | name: "name", 46 | type: "string", 47 | }, 48 | { 49 | internalType: "uint256", 50 | name: "voteCount", 51 | type: "uint256", 52 | }, 53 | ], 54 | stateMutability: "view", 55 | type: "function", 56 | }, 57 | { 58 | inputs: [], 59 | name: "getAllVotesOfCandiates", 60 | outputs: [ 61 | { 62 | components: [ 63 | { 64 | internalType: "string", 65 | name: "name", 66 | type: "string", 67 | }, 68 | { 69 | internalType: "uint256", 70 | name: "voteCount", 71 | type: "uint256", 72 | }, 73 | ], 74 | internalType: "struct Voting.Candidate[]", 75 | name: "", 76 | type: "tuple[]", 77 | }, 78 | ], 79 | stateMutability: "view", 80 | type: "function", 81 | }, 82 | { 83 | inputs: [], 84 | name: "getRemainingTime", 85 | outputs: [ 86 | { 87 | internalType: "uint256", 88 | name: "", 89 | type: "uint256", 90 | }, 91 | ], 92 | stateMutability: "view", 93 | type: "function", 94 | }, 95 | { 96 | inputs: [], 97 | name: "getVotingStatus", 98 | outputs: [ 99 | { 100 | internalType: "bool", 101 | name: "", 102 | type: "bool", 103 | }, 104 | ], 105 | stateMutability: "view", 106 | type: "function", 107 | }, 108 | { 109 | inputs: [ 110 | { 111 | internalType: "uint256", 112 | name: "_candidateIndex", 113 | type: "uint256", 114 | }, 115 | ], 116 | name: "vote", 117 | outputs: [], 118 | stateMutability: "nonpayable", 119 | type: "function", 120 | }, 121 | { 122 | inputs: [ 123 | { 124 | internalType: "address", 125 | name: "", 126 | type: "address", 127 | }, 128 | ], 129 | name: "voters", 130 | outputs: [ 131 | { 132 | internalType: "bool", 133 | name: "", 134 | type: "bool", 135 | }, 136 | ], 137 | stateMutability: "view", 138 | type: "function", 139 | }, 140 | { 141 | inputs: [], 142 | name: "votingEnd", 143 | outputs: [ 144 | { 145 | internalType: "uint256", 146 | name: "", 147 | type: "uint256", 148 | }, 149 | ], 150 | stateMutability: "view", 151 | type: "function", 152 | }, 153 | { 154 | inputs: [], 155 | name: "votingStart", 156 | outputs: [ 157 | { 158 | internalType: "uint256", 159 | name: "", 160 | type: "uint256", 161 | }, 162 | ], 163 | stateMutability: "view", 164 | type: "function", 165 | }, 166 | ]; 167 | 168 | export { contractAbi, contractAddress }; 169 | -------------------------------------------------------------------------------- /Voting Dapp/test/Lock.js: -------------------------------------------------------------------------------- 1 | const { 2 | time, 3 | loadFixture, 4 | } = require("@nomicfoundation/hardhat-network-helpers"); 5 | const { anyValue } = require("@nomicfoundation/hardhat-chai-matchers/withArgs"); 6 | const { expect } = require("chai"); 7 | 8 | describe("Lock", function () { 9 | // We define a fixture to reuse the same setup in every test. 10 | // We use loadFixture to run this setup once, snapshot that state, 11 | // and reset Hardhat Network to that snapshot in every test. 12 | async function deployOneYearLockFixture() { 13 | const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60; 14 | const ONE_GWEI = 1_000_000_000; 15 | 16 | const lockedAmount = ONE_GWEI; 17 | const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS; 18 | 19 | // Contracts are deployed using the first signer/account by default 20 | const [owner, otherAccount] = await ethers.getSigners(); 21 | 22 | const Lock = await ethers.getContractFactory("Lock"); 23 | const lock = await Lock.deploy(unlockTime, { value: lockedAmount }); 24 | 25 | return { lock, unlockTime, lockedAmount, owner, otherAccount }; 26 | } 27 | 28 | describe("Deployment", function () { 29 | it("Should set the right unlockTime", async function () { 30 | const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture); 31 | 32 | expect(await lock.unlockTime()).to.equal(unlockTime); 33 | }); 34 | 35 | it("Should set the right owner", async function () { 36 | const { lock, owner } = await loadFixture(deployOneYearLockFixture); 37 | 38 | expect(await lock.owner()).to.equal(owner.address); 39 | }); 40 | 41 | it("Should receive and store the funds to lock", async function () { 42 | const { lock, lockedAmount } = await loadFixture( 43 | deployOneYearLockFixture 44 | ); 45 | 46 | expect(await ethers.provider.getBalance(lock.address)).to.equal( 47 | lockedAmount 48 | ); 49 | }); 50 | 51 | it("Should fail if the unlockTime is not in the future", async function () { 52 | // We don't use the fixture here because we want a different deployment 53 | const latestTime = await time.latest(); 54 | const Lock = await ethers.getContractFactory("Lock"); 55 | await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith( 56 | "Unlock time should be in the future" 57 | ); 58 | }); 59 | }); 60 | 61 | describe("Withdrawals", function () { 62 | describe("Validations", function () { 63 | it("Should revert with the right error if called too soon", async function () { 64 | const { lock } = await loadFixture(deployOneYearLockFixture); 65 | 66 | await expect(lock.withdraw()).to.be.revertedWith( 67 | "You can't withdraw yet" 68 | ); 69 | }); 70 | 71 | it("Should revert with the right error if called from another account", async function () { 72 | const { lock, unlockTime, otherAccount } = await loadFixture( 73 | deployOneYearLockFixture 74 | ); 75 | 76 | // We can increase the time in Hardhat Network 77 | await time.increaseTo(unlockTime); 78 | 79 | // We use lock.connect() to send a transaction from another account 80 | await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith( 81 | "You aren't the owner" 82 | ); 83 | }); 84 | 85 | it("Shouldn't fail if the unlockTime has arrived and the owner calls it", async function () { 86 | const { lock, unlockTime } = await loadFixture( 87 | deployOneYearLockFixture 88 | ); 89 | 90 | // Transactions are sent using the first signer by default 91 | await time.increaseTo(unlockTime); 92 | 93 | await expect(lock.withdraw()).not.to.be.reverted; 94 | }); 95 | }); 96 | 97 | describe("Events", function () { 98 | it("Should emit an event on withdrawals", async function () { 99 | const { lock, unlockTime, lockedAmount } = await loadFixture( 100 | deployOneYearLockFixture 101 | ); 102 | 103 | await time.increaseTo(unlockTime); 104 | 105 | await expect(lock.withdraw()) 106 | .to.emit(lock, "Withdrawal") 107 | .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg 108 | }); 109 | }); 110 | 111 | describe("Transfers", function () { 112 | it("Should transfer the funds to the owner", async function () { 113 | const { lock, unlockTime, lockedAmount, owner } = await loadFixture( 114 | deployOneYearLockFixture 115 | ); 116 | 117 | await time.increaseTo(unlockTime); 118 | 119 | await expect(lock.withdraw()).to.changeEtherBalances( 120 | [owner, lock], 121 | [lockedAmount, -lockedAmount] 122 | ); 123 | }); 124 | }); 125 | }); 126 | }); 127 | -------------------------------------------------------------------------------- /Voting Dapp/src/App.js: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from "react"; 2 | import { ethers } from "ethers"; 3 | import { contractAbi, contractAddress } from "./Constant/constant"; 4 | import Login from "./Components/Login"; 5 | import Finished from "./Components/Finished"; 6 | import Connected from "./Components/Connected"; 7 | import "./App.css"; 8 | 9 | function App() { 10 | const [provider, setProvider] = useState(null); 11 | const [account, setAccount] = useState(null); 12 | const [isConnected, setIsConnected] = useState(false); 13 | const [votingStatus, setVotingStatus] = useState(true); 14 | const [remainingTime, setremainingTime] = useState(""); 15 | const [candidates, setCandidates] = useState([]); 16 | const [number, setNumber] = useState(""); 17 | const [CanVote, setCanVote] = useState(true); 18 | 19 | useEffect(() => { 20 | getCandidates(); 21 | getRemainingTime(); 22 | getCurrentStatus(); 23 | if (window.ethereum) { 24 | window.ethereum.on("accountsChanged", handleAccountsChanged); 25 | } 26 | 27 | return () => { 28 | if (window.ethereum) { 29 | window.ethereum.removeListener( 30 | "accountsChanged", 31 | handleAccountsChanged 32 | ); 33 | } 34 | }; 35 | }); 36 | 37 | async function vote() { 38 | const provider = new ethers.providers.Web3Provider(window.ethereum); 39 | await provider.send("eth_requestAccounts", []); 40 | const signer = provider.getSigner(); 41 | const contractInstance = new ethers.Contract( 42 | contractAddress, 43 | contractAbi, 44 | signer 45 | ); 46 | 47 | const tx = await contractInstance.vote(number); 48 | await tx.wait(); 49 | canVote(); 50 | } 51 | 52 | async function canVote() { 53 | const provider = new ethers.providers.Web3Provider(window.ethereum); 54 | await provider.send("eth_requestAccounts", []); 55 | const signer = provider.getSigner(); 56 | const contractInstance = new ethers.Contract( 57 | contractAddress, 58 | contractAbi, 59 | signer 60 | ); 61 | const voteStatus = await contractInstance.voters(await signer.getAddress()); 62 | setCanVote(voteStatus); 63 | } 64 | 65 | async function getCandidates() { 66 | const provider = new ethers.providers.Web3Provider(window.ethereum); 67 | await provider.send("eth_requestAccounts", []); 68 | const signer = provider.getSigner(); 69 | const contractInstance = new ethers.Contract( 70 | contractAddress, 71 | contractAbi, 72 | signer 73 | ); 74 | const candidatesList = await contractInstance.getAllVotesOfCandiates(); 75 | const formattedCandidates = candidatesList.map((candidate, index) => { 76 | return { 77 | index: index, 78 | name: candidate.name, 79 | voteCount: candidate.voteCount.toNumber(), 80 | }; 81 | }); 82 | setCandidates(formattedCandidates); 83 | } 84 | 85 | async function getCurrentStatus() { 86 | const provider = new ethers.providers.Web3Provider(window.ethereum); 87 | await provider.send("eth_requestAccounts", []); 88 | const signer = provider.getSigner(); 89 | const contractInstance = new ethers.Contract( 90 | contractAddress, 91 | contractAbi, 92 | signer 93 | ); 94 | const status = await contractInstance.getVotingStatus(); 95 | console.log(status); 96 | setVotingStatus(status); 97 | } 98 | 99 | async function getRemainingTime() { 100 | const provider = new ethers.providers.Web3Provider(window.ethereum); 101 | await provider.send("eth_requestAccounts", []); 102 | const signer = provider.getSigner(); 103 | const contractInstance = new ethers.Contract( 104 | contractAddress, 105 | contractAbi, 106 | signer 107 | ); 108 | const time = await contractInstance.getRemainingTime(); 109 | setremainingTime(parseInt(time, 16)); 110 | } 111 | 112 | function handleAccountsChanged(accounts) { 113 | if (accounts.length > 0 && account !== accounts[0]) { 114 | setAccount(accounts[0]); 115 | canVote(); 116 | } else { 117 | setIsConnected(false); 118 | setAccount(null); 119 | } 120 | } 121 | 122 | async function connectToMetamask() { 123 | if (window.ethereum) { 124 | try { 125 | const provider = new ethers.providers.Web3Provider(window.ethereum); 126 | setProvider(provider); 127 | await provider.send("eth_requestAccounts", []); 128 | const signer = provider.getSigner(); 129 | const address = await signer.getAddress(); 130 | setAccount(address); 131 | console.log("Metamask Connected : " + address); 132 | setIsConnected(true); 133 | canVote(); 134 | } catch (err) { 135 | console.error(err); 136 | } 137 | } else { 138 | console.error("Metamask is not detected in the browser"); 139 | } 140 | } 141 | 142 | async function handleNumberChange(e) { 143 | setNumber(e.target.value); 144 | } 145 | 146 | return ( 147 |
148 | {votingStatus ? ( 149 | isConnected ? ( 150 | 159 | ) : ( 160 | 161 | ) 162 | ) : ( 163 | 164 | )} 165 |
166 | ); 167 | } 168 | 169 | export default App; 170 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC721", 4 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "address", 12 | "name": "owner", 13 | "type": "address" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "address", 18 | "name": "approved", 19 | "type": "address" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "uint256", 24 | "name": "tokenId", 25 | "type": "uint256" 26 | } 27 | ], 28 | "name": "Approval", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "address", 37 | "name": "owner", 38 | "type": "address" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "operator", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": false, 48 | "internalType": "bool", 49 | "name": "approved", 50 | "type": "bool" 51 | } 52 | ], 53 | "name": "ApprovalForAll", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "address", 62 | "name": "from", 63 | "type": "address" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "to", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "uint256", 74 | "name": "tokenId", 75 | "type": "uint256" 76 | } 77 | ], 78 | "name": "Transfer", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [ 83 | { 84 | "internalType": "address", 85 | "name": "to", 86 | "type": "address" 87 | }, 88 | { 89 | "internalType": "uint256", 90 | "name": "tokenId", 91 | "type": "uint256" 92 | } 93 | ], 94 | "name": "approve", 95 | "outputs": [], 96 | "stateMutability": "nonpayable", 97 | "type": "function" 98 | }, 99 | { 100 | "inputs": [ 101 | { 102 | "internalType": "address", 103 | "name": "owner", 104 | "type": "address" 105 | } 106 | ], 107 | "name": "balanceOf", 108 | "outputs": [ 109 | { 110 | "internalType": "uint256", 111 | "name": "balance", 112 | "type": "uint256" 113 | } 114 | ], 115 | "stateMutability": "view", 116 | "type": "function" 117 | }, 118 | { 119 | "inputs": [ 120 | { 121 | "internalType": "uint256", 122 | "name": "tokenId", 123 | "type": "uint256" 124 | } 125 | ], 126 | "name": "getApproved", 127 | "outputs": [ 128 | { 129 | "internalType": "address", 130 | "name": "operator", 131 | "type": "address" 132 | } 133 | ], 134 | "stateMutability": "view", 135 | "type": "function" 136 | }, 137 | { 138 | "inputs": [ 139 | { 140 | "internalType": "address", 141 | "name": "owner", 142 | "type": "address" 143 | }, 144 | { 145 | "internalType": "address", 146 | "name": "operator", 147 | "type": "address" 148 | } 149 | ], 150 | "name": "isApprovedForAll", 151 | "outputs": [ 152 | { 153 | "internalType": "bool", 154 | "name": "", 155 | "type": "bool" 156 | } 157 | ], 158 | "stateMutability": "view", 159 | "type": "function" 160 | }, 161 | { 162 | "inputs": [ 163 | { 164 | "internalType": "uint256", 165 | "name": "tokenId", 166 | "type": "uint256" 167 | } 168 | ], 169 | "name": "ownerOf", 170 | "outputs": [ 171 | { 172 | "internalType": "address", 173 | "name": "owner", 174 | "type": "address" 175 | } 176 | ], 177 | "stateMutability": "view", 178 | "type": "function" 179 | }, 180 | { 181 | "inputs": [ 182 | { 183 | "internalType": "address", 184 | "name": "from", 185 | "type": "address" 186 | }, 187 | { 188 | "internalType": "address", 189 | "name": "to", 190 | "type": "address" 191 | }, 192 | { 193 | "internalType": "uint256", 194 | "name": "tokenId", 195 | "type": "uint256" 196 | } 197 | ], 198 | "name": "safeTransferFrom", 199 | "outputs": [], 200 | "stateMutability": "nonpayable", 201 | "type": "function" 202 | }, 203 | { 204 | "inputs": [ 205 | { 206 | "internalType": "address", 207 | "name": "from", 208 | "type": "address" 209 | }, 210 | { 211 | "internalType": "address", 212 | "name": "to", 213 | "type": "address" 214 | }, 215 | { 216 | "internalType": "uint256", 217 | "name": "tokenId", 218 | "type": "uint256" 219 | }, 220 | { 221 | "internalType": "bytes", 222 | "name": "data", 223 | "type": "bytes" 224 | } 225 | ], 226 | "name": "safeTransferFrom", 227 | "outputs": [], 228 | "stateMutability": "nonpayable", 229 | "type": "function" 230 | }, 231 | { 232 | "inputs": [ 233 | { 234 | "internalType": "address", 235 | "name": "operator", 236 | "type": "address" 237 | }, 238 | { 239 | "internalType": "bool", 240 | "name": "_approved", 241 | "type": "bool" 242 | } 243 | ], 244 | "name": "setApprovalForAll", 245 | "outputs": [], 246 | "stateMutability": "nonpayable", 247 | "type": "function" 248 | }, 249 | { 250 | "inputs": [ 251 | { 252 | "internalType": "bytes4", 253 | "name": "interfaceId", 254 | "type": "bytes4" 255 | } 256 | ], 257 | "name": "supportsInterface", 258 | "outputs": [ 259 | { 260 | "internalType": "bool", 261 | "name": "", 262 | "type": "bool" 263 | } 264 | ], 265 | "stateMutability": "view", 266 | "type": "function" 267 | }, 268 | { 269 | "inputs": [ 270 | { 271 | "internalType": "address", 272 | "name": "from", 273 | "type": "address" 274 | }, 275 | { 276 | "internalType": "address", 277 | "name": "to", 278 | "type": "address" 279 | }, 280 | { 281 | "internalType": "uint256", 282 | "name": "tokenId", 283 | "type": "uint256" 284 | } 285 | ], 286 | "name": "transferFrom", 287 | "outputs": [], 288 | "stateMutability": "nonpayable", 289 | "type": "function" 290 | } 291 | ], 292 | "bytecode": "0x", 293 | "deployedBytecode": "0x", 294 | "linkReferences": {}, 295 | "deployedLinkReferences": {} 296 | } 297 | -------------------------------------------------------------------------------- /NFT/src/MintNFT.js: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import { connectWallet, connectMetaMask } from "./connectWallet"; 3 | import { uploadToIPFS } from "./ipfsUploader"; 4 | import { 5 | TextField, 6 | Button, 7 | Typography, 8 | Container, 9 | Box, 10 | Link, 11 | Grid, 12 | Snackbar, 13 | Alert, 14 | LinearProgress, 15 | } from "@mui/material"; 16 | 17 | function MintNFT() { 18 | const [name, setName] = useState(""); 19 | const [description, setDescription] = useState(""); 20 | const [image, setImage] = useState(null); 21 | const [status, setStatus] = useState(""); 22 | const [ipfsLink, setIpfsLink] = useState(""); 23 | const [imageStatus, setImageStatus] = useState(""); 24 | const [alertOpen, setAlertOpen] = useState(false); 25 | const [loading, setLoading] = useState(false); 26 | const [walletAddress, setWalletAddress] = useState(""); 27 | const [walletBalance, setWalletBalance] = useState(""); 28 | const [imagePreviewUrl, setImagePreviewUrl] = useState(null); 29 | const [transactionHistory, setTransactionHistory] = useState([]); 30 | 31 | const handleConnectMetaMask = async () => { 32 | const { address, formattedBalance } = await connectMetaMask(); 33 | setWalletAddress(address); 34 | setWalletBalance(formattedBalance); 35 | }; 36 | 37 | const handleImageChange = (e) => { 38 | setImage(e.target.files[0]); 39 | setImageStatus("Image selected for upload"); 40 | setImagePreviewUrl(URL.createObjectURL(e.target.files[0])); 41 | }; 42 | 43 | const mint = async () => { 44 | setStatus("Uploading to IPFS..."); 45 | const imageURI = await uploadToIPFS(image); 46 | setIpfsLink(imageURI); 47 | 48 | setStatus("Minting NFT..."); 49 | setLoading(true); 50 | const { signer, contract } = await connectWallet(); 51 | const tokenURI = `data:application/json;base64,${btoa( 52 | JSON.stringify({ 53 | name, 54 | description, 55 | image: imageURI, 56 | }) 57 | )}`; 58 | 59 | const transaction = await contract.mintNFT(signer.getAddress(), tokenURI); 60 | await transaction.wait(); 61 | 62 | setTransactionHistory((prevHistory) => [...prevHistory, transaction.hash]); 63 | 64 | setStatus("NFT minted!"); 65 | setAlertOpen(true); 66 | setLoading(false); 67 | }; 68 | 69 | return ( 70 | 71 | 72 | 73 | NFT Minting Dapp 74 | 75 | 76 | 77 | 78 | 79 | 91 | 92 | {walletAddress && ( 93 | 94 | 95 | Wallet Address: {walletAddress} 96 | 97 | 98 | Wallet Balance: {walletBalance} SHM 99 | 100 | 101 | )} 102 | setName(e.target.value)} 108 | /> 109 | setDescription(e.target.value)} 115 | /> 116 | 122 |

123 | 128 | {imageStatus && ( 129 | 130 | {imageStatus} 131 | 132 | )} 133 | 134 | 142 | 143 | {loading && } 144 | 145 | setAlertOpen(false)} 149 | anchorOrigin={{ vertical: "top", horizontal: "right" }} 150 | > 151 | setAlertOpen(false)} 153 | severity="success" 154 | variant="filled" 155 | sx={{ width: "100%" }} 156 | > 157 | NFT minted successfully! 158 | 159 | 160 |
161 | 162 | 177 | {imagePreviewUrl ? ( 178 | Uploaded preview 188 | ) : ( 189 | 190 | Preview image will be displayed here 191 | 192 | )} 193 | 194 | 195 | 196 | 197 | {status} 198 | 199 | {ipfsLink && ( 200 | 201 | IPFS Link:{" "} 202 | 203 | {ipfsLink} 204 | 205 | 206 | )} 207 | 208 |
209 | 210 | 211 | Transaction History: 212 | 213 | {transactionHistory.length > 0 ? ( 214 | transactionHistory.map((hash, index) => ( 215 | 216 | 221 | {`Transaction ${index + 1}: ${hash}`} 222 | 223 | 224 | )) 225 | ) : ( 226 | 227 | No transactions yet. 228 | 229 | )} 230 | 231 |
232 | ); 233 | } 234 | 235 | export default MintNFT; 236 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol/ERC721URIStorage.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ERC721URIStorage", 4 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "address", 12 | "name": "owner", 13 | "type": "address" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "address", 18 | "name": "approved", 19 | "type": "address" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "uint256", 24 | "name": "tokenId", 25 | "type": "uint256" 26 | } 27 | ], 28 | "name": "Approval", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "address", 37 | "name": "owner", 38 | "type": "address" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "operator", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": false, 48 | "internalType": "bool", 49 | "name": "approved", 50 | "type": "bool" 51 | } 52 | ], 53 | "name": "ApprovalForAll", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "address", 62 | "name": "from", 63 | "type": "address" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "to", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "uint256", 74 | "name": "tokenId", 75 | "type": "uint256" 76 | } 77 | ], 78 | "name": "Transfer", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [ 83 | { 84 | "internalType": "address", 85 | "name": "to", 86 | "type": "address" 87 | }, 88 | { 89 | "internalType": "uint256", 90 | "name": "tokenId", 91 | "type": "uint256" 92 | } 93 | ], 94 | "name": "approve", 95 | "outputs": [], 96 | "stateMutability": "nonpayable", 97 | "type": "function" 98 | }, 99 | { 100 | "inputs": [ 101 | { 102 | "internalType": "address", 103 | "name": "owner", 104 | "type": "address" 105 | } 106 | ], 107 | "name": "balanceOf", 108 | "outputs": [ 109 | { 110 | "internalType": "uint256", 111 | "name": "", 112 | "type": "uint256" 113 | } 114 | ], 115 | "stateMutability": "view", 116 | "type": "function" 117 | }, 118 | { 119 | "inputs": [ 120 | { 121 | "internalType": "uint256", 122 | "name": "tokenId", 123 | "type": "uint256" 124 | } 125 | ], 126 | "name": "getApproved", 127 | "outputs": [ 128 | { 129 | "internalType": "address", 130 | "name": "", 131 | "type": "address" 132 | } 133 | ], 134 | "stateMutability": "view", 135 | "type": "function" 136 | }, 137 | { 138 | "inputs": [ 139 | { 140 | "internalType": "address", 141 | "name": "owner", 142 | "type": "address" 143 | }, 144 | { 145 | "internalType": "address", 146 | "name": "operator", 147 | "type": "address" 148 | } 149 | ], 150 | "name": "isApprovedForAll", 151 | "outputs": [ 152 | { 153 | "internalType": "bool", 154 | "name": "", 155 | "type": "bool" 156 | } 157 | ], 158 | "stateMutability": "view", 159 | "type": "function" 160 | }, 161 | { 162 | "inputs": [], 163 | "name": "name", 164 | "outputs": [ 165 | { 166 | "internalType": "string", 167 | "name": "", 168 | "type": "string" 169 | } 170 | ], 171 | "stateMutability": "view", 172 | "type": "function" 173 | }, 174 | { 175 | "inputs": [ 176 | { 177 | "internalType": "uint256", 178 | "name": "tokenId", 179 | "type": "uint256" 180 | } 181 | ], 182 | "name": "ownerOf", 183 | "outputs": [ 184 | { 185 | "internalType": "address", 186 | "name": "", 187 | "type": "address" 188 | } 189 | ], 190 | "stateMutability": "view", 191 | "type": "function" 192 | }, 193 | { 194 | "inputs": [ 195 | { 196 | "internalType": "address", 197 | "name": "from", 198 | "type": "address" 199 | }, 200 | { 201 | "internalType": "address", 202 | "name": "to", 203 | "type": "address" 204 | }, 205 | { 206 | "internalType": "uint256", 207 | "name": "tokenId", 208 | "type": "uint256" 209 | } 210 | ], 211 | "name": "safeTransferFrom", 212 | "outputs": [], 213 | "stateMutability": "nonpayable", 214 | "type": "function" 215 | }, 216 | { 217 | "inputs": [ 218 | { 219 | "internalType": "address", 220 | "name": "from", 221 | "type": "address" 222 | }, 223 | { 224 | "internalType": "address", 225 | "name": "to", 226 | "type": "address" 227 | }, 228 | { 229 | "internalType": "uint256", 230 | "name": "tokenId", 231 | "type": "uint256" 232 | }, 233 | { 234 | "internalType": "bytes", 235 | "name": "data", 236 | "type": "bytes" 237 | } 238 | ], 239 | "name": "safeTransferFrom", 240 | "outputs": [], 241 | "stateMutability": "nonpayable", 242 | "type": "function" 243 | }, 244 | { 245 | "inputs": [ 246 | { 247 | "internalType": "address", 248 | "name": "operator", 249 | "type": "address" 250 | }, 251 | { 252 | "internalType": "bool", 253 | "name": "approved", 254 | "type": "bool" 255 | } 256 | ], 257 | "name": "setApprovalForAll", 258 | "outputs": [], 259 | "stateMutability": "nonpayable", 260 | "type": "function" 261 | }, 262 | { 263 | "inputs": [ 264 | { 265 | "internalType": "bytes4", 266 | "name": "interfaceId", 267 | "type": "bytes4" 268 | } 269 | ], 270 | "name": "supportsInterface", 271 | "outputs": [ 272 | { 273 | "internalType": "bool", 274 | "name": "", 275 | "type": "bool" 276 | } 277 | ], 278 | "stateMutability": "view", 279 | "type": "function" 280 | }, 281 | { 282 | "inputs": [], 283 | "name": "symbol", 284 | "outputs": [ 285 | { 286 | "internalType": "string", 287 | "name": "", 288 | "type": "string" 289 | } 290 | ], 291 | "stateMutability": "view", 292 | "type": "function" 293 | }, 294 | { 295 | "inputs": [ 296 | { 297 | "internalType": "uint256", 298 | "name": "tokenId", 299 | "type": "uint256" 300 | } 301 | ], 302 | "name": "tokenURI", 303 | "outputs": [ 304 | { 305 | "internalType": "string", 306 | "name": "", 307 | "type": "string" 308 | } 309 | ], 310 | "stateMutability": "view", 311 | "type": "function" 312 | }, 313 | { 314 | "inputs": [ 315 | { 316 | "internalType": "address", 317 | "name": "from", 318 | "type": "address" 319 | }, 320 | { 321 | "internalType": "address", 322 | "name": "to", 323 | "type": "address" 324 | }, 325 | { 326 | "internalType": "uint256", 327 | "name": "tokenId", 328 | "type": "uint256" 329 | } 330 | ], 331 | "name": "transferFrom", 332 | "outputs": [], 333 | "stateMutability": "nonpayable", 334 | "type": "function" 335 | } 336 | ], 337 | "bytecode": "0x", 338 | "deployedBytecode": "0x", 339 | "linkReferences": {}, 340 | "deployedLinkReferences": {} 341 | } 342 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC721Metadata", 4 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "address", 12 | "name": "owner", 13 | "type": "address" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "address", 18 | "name": "approved", 19 | "type": "address" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "uint256", 24 | "name": "tokenId", 25 | "type": "uint256" 26 | } 27 | ], 28 | "name": "Approval", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "address", 37 | "name": "owner", 38 | "type": "address" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "operator", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": false, 48 | "internalType": "bool", 49 | "name": "approved", 50 | "type": "bool" 51 | } 52 | ], 53 | "name": "ApprovalForAll", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "address", 62 | "name": "from", 63 | "type": "address" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "to", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "uint256", 74 | "name": "tokenId", 75 | "type": "uint256" 76 | } 77 | ], 78 | "name": "Transfer", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [ 83 | { 84 | "internalType": "address", 85 | "name": "to", 86 | "type": "address" 87 | }, 88 | { 89 | "internalType": "uint256", 90 | "name": "tokenId", 91 | "type": "uint256" 92 | } 93 | ], 94 | "name": "approve", 95 | "outputs": [], 96 | "stateMutability": "nonpayable", 97 | "type": "function" 98 | }, 99 | { 100 | "inputs": [ 101 | { 102 | "internalType": "address", 103 | "name": "owner", 104 | "type": "address" 105 | } 106 | ], 107 | "name": "balanceOf", 108 | "outputs": [ 109 | { 110 | "internalType": "uint256", 111 | "name": "balance", 112 | "type": "uint256" 113 | } 114 | ], 115 | "stateMutability": "view", 116 | "type": "function" 117 | }, 118 | { 119 | "inputs": [ 120 | { 121 | "internalType": "uint256", 122 | "name": "tokenId", 123 | "type": "uint256" 124 | } 125 | ], 126 | "name": "getApproved", 127 | "outputs": [ 128 | { 129 | "internalType": "address", 130 | "name": "operator", 131 | "type": "address" 132 | } 133 | ], 134 | "stateMutability": "view", 135 | "type": "function" 136 | }, 137 | { 138 | "inputs": [ 139 | { 140 | "internalType": "address", 141 | "name": "owner", 142 | "type": "address" 143 | }, 144 | { 145 | "internalType": "address", 146 | "name": "operator", 147 | "type": "address" 148 | } 149 | ], 150 | "name": "isApprovedForAll", 151 | "outputs": [ 152 | { 153 | "internalType": "bool", 154 | "name": "", 155 | "type": "bool" 156 | } 157 | ], 158 | "stateMutability": "view", 159 | "type": "function" 160 | }, 161 | { 162 | "inputs": [], 163 | "name": "name", 164 | "outputs": [ 165 | { 166 | "internalType": "string", 167 | "name": "", 168 | "type": "string" 169 | } 170 | ], 171 | "stateMutability": "view", 172 | "type": "function" 173 | }, 174 | { 175 | "inputs": [ 176 | { 177 | "internalType": "uint256", 178 | "name": "tokenId", 179 | "type": "uint256" 180 | } 181 | ], 182 | "name": "ownerOf", 183 | "outputs": [ 184 | { 185 | "internalType": "address", 186 | "name": "owner", 187 | "type": "address" 188 | } 189 | ], 190 | "stateMutability": "view", 191 | "type": "function" 192 | }, 193 | { 194 | "inputs": [ 195 | { 196 | "internalType": "address", 197 | "name": "from", 198 | "type": "address" 199 | }, 200 | { 201 | "internalType": "address", 202 | "name": "to", 203 | "type": "address" 204 | }, 205 | { 206 | "internalType": "uint256", 207 | "name": "tokenId", 208 | "type": "uint256" 209 | } 210 | ], 211 | "name": "safeTransferFrom", 212 | "outputs": [], 213 | "stateMutability": "nonpayable", 214 | "type": "function" 215 | }, 216 | { 217 | "inputs": [ 218 | { 219 | "internalType": "address", 220 | "name": "from", 221 | "type": "address" 222 | }, 223 | { 224 | "internalType": "address", 225 | "name": "to", 226 | "type": "address" 227 | }, 228 | { 229 | "internalType": "uint256", 230 | "name": "tokenId", 231 | "type": "uint256" 232 | }, 233 | { 234 | "internalType": "bytes", 235 | "name": "data", 236 | "type": "bytes" 237 | } 238 | ], 239 | "name": "safeTransferFrom", 240 | "outputs": [], 241 | "stateMutability": "nonpayable", 242 | "type": "function" 243 | }, 244 | { 245 | "inputs": [ 246 | { 247 | "internalType": "address", 248 | "name": "operator", 249 | "type": "address" 250 | }, 251 | { 252 | "internalType": "bool", 253 | "name": "_approved", 254 | "type": "bool" 255 | } 256 | ], 257 | "name": "setApprovalForAll", 258 | "outputs": [], 259 | "stateMutability": "nonpayable", 260 | "type": "function" 261 | }, 262 | { 263 | "inputs": [ 264 | { 265 | "internalType": "bytes4", 266 | "name": "interfaceId", 267 | "type": "bytes4" 268 | } 269 | ], 270 | "name": "supportsInterface", 271 | "outputs": [ 272 | { 273 | "internalType": "bool", 274 | "name": "", 275 | "type": "bool" 276 | } 277 | ], 278 | "stateMutability": "view", 279 | "type": "function" 280 | }, 281 | { 282 | "inputs": [], 283 | "name": "symbol", 284 | "outputs": [ 285 | { 286 | "internalType": "string", 287 | "name": "", 288 | "type": "string" 289 | } 290 | ], 291 | "stateMutability": "view", 292 | "type": "function" 293 | }, 294 | { 295 | "inputs": [ 296 | { 297 | "internalType": "uint256", 298 | "name": "tokenId", 299 | "type": "uint256" 300 | } 301 | ], 302 | "name": "tokenURI", 303 | "outputs": [ 304 | { 305 | "internalType": "string", 306 | "name": "", 307 | "type": "string" 308 | } 309 | ], 310 | "stateMutability": "view", 311 | "type": "function" 312 | }, 313 | { 314 | "inputs": [ 315 | { 316 | "internalType": "address", 317 | "name": "from", 318 | "type": "address" 319 | }, 320 | { 321 | "internalType": "address", 322 | "name": "to", 323 | "type": "address" 324 | }, 325 | { 326 | "internalType": "uint256", 327 | "name": "tokenId", 328 | "type": "uint256" 329 | } 330 | ], 331 | "name": "transferFrom", 332 | "outputs": [], 333 | "stateMutability": "nonpayable", 334 | "type": "function" 335 | } 336 | ], 337 | "bytecode": "0x", 338 | "deployedBytecode": "0x", 339 | "linkReferences": {}, 340 | "deployedLinkReferences": {} 341 | } 342 | -------------------------------------------------------------------------------- /NFT/cache/solidity-files-cache.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-cache-2", 3 | "files": { 4 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\contracts\\NftMinter.sol": { 5 | "lastModificationDate": 1689325849961, 6 | "contentHash": "50120539c5a6de2b10dd467a40c44d7f", 7 | "sourceName": "contracts/NftMinter.sol", 8 | "solcConfig": { 9 | "version": "0.8.17", 10 | "settings": { 11 | "optimizer": { 12 | "enabled": true, 13 | "runs": 200 14 | }, 15 | "outputSelection": { 16 | "*": { 17 | "*": [ 18 | "abi", 19 | "evm.bytecode", 20 | "evm.deployedBytecode", 21 | "evm.methodIdentifiers", 22 | "metadata" 23 | ], 24 | "": [ 25 | "ast" 26 | ] 27 | } 28 | } 29 | } 30 | }, 31 | "imports": [ 32 | "@openzeppelin/contracts/token/ERC721/ERC721.sol", 33 | "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", 34 | "@openzeppelin/contracts/utils/Counters.sol" 35 | ], 36 | "versionPragmas": [ 37 | "^0.8.3" 38 | ], 39 | "artifacts": [ 40 | "NFTMinter" 41 | ] 42 | }, 43 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Counters.sol": { 44 | "lastModificationDate": 1689339613968, 45 | "contentHash": "74654e3ae5d7f39555055dfe244dab7a", 46 | "sourceName": "@openzeppelin/contracts/utils/Counters.sol", 47 | "solcConfig": { 48 | "version": "0.8.17", 49 | "settings": { 50 | "optimizer": { 51 | "enabled": true, 52 | "runs": 200 53 | }, 54 | "outputSelection": { 55 | "*": { 56 | "*": [ 57 | "abi", 58 | "evm.bytecode", 59 | "evm.deployedBytecode", 60 | "evm.methodIdentifiers", 61 | "metadata" 62 | ], 63 | "": [ 64 | "ast" 65 | ] 66 | } 67 | } 68 | } 69 | }, 70 | "imports": [], 71 | "versionPragmas": [ 72 | "^0.8.0" 73 | ], 74 | "artifacts": [ 75 | "Counters" 76 | ] 77 | }, 78 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\ERC721.sol": { 79 | "lastModificationDate": 1689339615964, 80 | "contentHash": "f7f4f78c31f28534852e5c56000a25af", 81 | "sourceName": "@openzeppelin/contracts/token/ERC721/ERC721.sol", 82 | "solcConfig": { 83 | "version": "0.8.17", 84 | "settings": { 85 | "optimizer": { 86 | "enabled": true, 87 | "runs": 200 88 | }, 89 | "outputSelection": { 90 | "*": { 91 | "*": [ 92 | "abi", 93 | "evm.bytecode", 94 | "evm.deployedBytecode", 95 | "evm.methodIdentifiers", 96 | "metadata" 97 | ], 98 | "": [ 99 | "ast" 100 | ] 101 | } 102 | } 103 | } 104 | }, 105 | "imports": [ 106 | "./IERC721.sol", 107 | "./IERC721Receiver.sol", 108 | "./extensions/IERC721Metadata.sol", 109 | "../../utils/Address.sol", 110 | "../../utils/Context.sol", 111 | "../../utils/Strings.sol", 112 | "../../utils/introspection/ERC165.sol" 113 | ], 114 | "versionPragmas": [ 115 | "^0.8.0" 116 | ], 117 | "artifacts": [ 118 | "ERC721" 119 | ] 120 | }, 121 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\extensions\\ERC721URIStorage.sol": { 122 | "lastModificationDate": 1689339616487, 123 | "contentHash": "8af32effd0536e2971ff8496812a5016", 124 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", 125 | "solcConfig": { 126 | "version": "0.8.17", 127 | "settings": { 128 | "optimizer": { 129 | "enabled": true, 130 | "runs": 200 131 | }, 132 | "outputSelection": { 133 | "*": { 134 | "*": [ 135 | "abi", 136 | "evm.bytecode", 137 | "evm.deployedBytecode", 138 | "evm.methodIdentifiers", 139 | "metadata" 140 | ], 141 | "": [ 142 | "ast" 143 | ] 144 | } 145 | } 146 | } 147 | }, 148 | "imports": [ 149 | "../ERC721.sol" 150 | ], 151 | "versionPragmas": [ 152 | "^0.8.0" 153 | ], 154 | "artifacts": [ 155 | "ERC721URIStorage" 156 | ] 157 | }, 158 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\introspection\\ERC165.sol": { 159 | "lastModificationDate": 1689339615356, 160 | "contentHash": "0e7db055ce108f9da7bb6686a00287c0", 161 | "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", 162 | "solcConfig": { 163 | "version": "0.8.17", 164 | "settings": { 165 | "optimizer": { 166 | "enabled": true, 167 | "runs": 200 168 | }, 169 | "outputSelection": { 170 | "*": { 171 | "*": [ 172 | "abi", 173 | "evm.bytecode", 174 | "evm.deployedBytecode", 175 | "evm.methodIdentifiers", 176 | "metadata" 177 | ], 178 | "": [ 179 | "ast" 180 | ] 181 | } 182 | } 183 | } 184 | }, 185 | "imports": [ 186 | "./IERC165.sol" 187 | ], 188 | "versionPragmas": [ 189 | "^0.8.0" 190 | ], 191 | "artifacts": [ 192 | "ERC165" 193 | ] 194 | }, 195 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Context.sol": { 196 | "lastModificationDate": 1689339613887, 197 | "contentHash": "5f2c5c4b6af2dd4551027144797bc8be", 198 | "sourceName": "@openzeppelin/contracts/utils/Context.sol", 199 | "solcConfig": { 200 | "version": "0.8.17", 201 | "settings": { 202 | "optimizer": { 203 | "enabled": true, 204 | "runs": 200 205 | }, 206 | "outputSelection": { 207 | "*": { 208 | "*": [ 209 | "abi", 210 | "evm.bytecode", 211 | "evm.deployedBytecode", 212 | "evm.methodIdentifiers", 213 | "metadata" 214 | ], 215 | "": [ 216 | "ast" 217 | ] 218 | } 219 | } 220 | } 221 | }, 222 | "imports": [], 223 | "versionPragmas": [ 224 | "^0.8.0" 225 | ], 226 | "artifacts": [ 227 | "Context" 228 | ] 229 | }, 230 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Strings.sol": { 231 | "lastModificationDate": 1689339618690, 232 | "contentHash": "396031251978f8febfd90cb62cb240ec", 233 | "sourceName": "@openzeppelin/contracts/utils/Strings.sol", 234 | "solcConfig": { 235 | "version": "0.8.17", 236 | "settings": { 237 | "optimizer": { 238 | "enabled": true, 239 | "runs": 200 240 | }, 241 | "outputSelection": { 242 | "*": { 243 | "*": [ 244 | "abi", 245 | "evm.bytecode", 246 | "evm.deployedBytecode", 247 | "evm.methodIdentifiers", 248 | "metadata" 249 | ], 250 | "": [ 251 | "ast" 252 | ] 253 | } 254 | } 255 | } 256 | }, 257 | "imports": [ 258 | "./math/Math.sol" 259 | ], 260 | "versionPragmas": [ 261 | "^0.8.0" 262 | ], 263 | "artifacts": [ 264 | "Strings" 265 | ] 266 | }, 267 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\IERC721.sol": { 268 | "lastModificationDate": 1689339617883, 269 | "contentHash": "eb7e61db29f31d88b3c1cef1b063d338", 270 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol", 271 | "solcConfig": { 272 | "version": "0.8.17", 273 | "settings": { 274 | "optimizer": { 275 | "enabled": true, 276 | "runs": 200 277 | }, 278 | "outputSelection": { 279 | "*": { 280 | "*": [ 281 | "abi", 282 | "evm.bytecode", 283 | "evm.deployedBytecode", 284 | "evm.methodIdentifiers", 285 | "metadata" 286 | ], 287 | "": [ 288 | "ast" 289 | ] 290 | } 291 | } 292 | } 293 | }, 294 | "imports": [ 295 | "../../utils/introspection/IERC165.sol" 296 | ], 297 | "versionPragmas": [ 298 | "^0.8.0" 299 | ], 300 | "artifacts": [ 301 | "IERC721" 302 | ] 303 | }, 304 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Address.sol": { 305 | "lastModificationDate": 1689339613397, 306 | "contentHash": "f31ad6fc4bbf9c06203987220156a6ba", 307 | "sourceName": "@openzeppelin/contracts/utils/Address.sol", 308 | "solcConfig": { 309 | "version": "0.8.17", 310 | "settings": { 311 | "optimizer": { 312 | "enabled": true, 313 | "runs": 200 314 | }, 315 | "outputSelection": { 316 | "*": { 317 | "*": [ 318 | "abi", 319 | "evm.bytecode", 320 | "evm.deployedBytecode", 321 | "evm.methodIdentifiers", 322 | "metadata" 323 | ], 324 | "": [ 325 | "ast" 326 | ] 327 | } 328 | } 329 | } 330 | }, 331 | "imports": [], 332 | "versionPragmas": [ 333 | "^0.8.1" 334 | ], 335 | "artifacts": [ 336 | "Address" 337 | ] 338 | }, 339 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\extensions\\IERC721Metadata.sol": { 340 | "lastModificationDate": 1689339617945, 341 | "contentHash": "efbc0d15b80a74e34dbe8da0f3e879bb", 342 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", 343 | "solcConfig": { 344 | "version": "0.8.17", 345 | "settings": { 346 | "optimizer": { 347 | "enabled": true, 348 | "runs": 200 349 | }, 350 | "outputSelection": { 351 | "*": { 352 | "*": [ 353 | "abi", 354 | "evm.bytecode", 355 | "evm.deployedBytecode", 356 | "evm.methodIdentifiers", 357 | "metadata" 358 | ], 359 | "": [ 360 | "ast" 361 | ] 362 | } 363 | } 364 | } 365 | }, 366 | "imports": [ 367 | "../IERC721.sol" 368 | ], 369 | "versionPragmas": [ 370 | "^0.8.0" 371 | ], 372 | "artifacts": [ 373 | "IERC721Metadata" 374 | ] 375 | }, 376 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\IERC721Receiver.sol": { 377 | "lastModificationDate": 1689339617981, 378 | "contentHash": "c22d4395e33763de693fd440c6fd10e1", 379 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", 380 | "solcConfig": { 381 | "version": "0.8.17", 382 | "settings": { 383 | "optimizer": { 384 | "enabled": true, 385 | "runs": 200 386 | }, 387 | "outputSelection": { 388 | "*": { 389 | "*": [ 390 | "abi", 391 | "evm.bytecode", 392 | "evm.deployedBytecode", 393 | "evm.methodIdentifiers", 394 | "metadata" 395 | ], 396 | "": [ 397 | "ast" 398 | ] 399 | } 400 | } 401 | } 402 | }, 403 | "imports": [], 404 | "versionPragmas": [ 405 | "^0.8.0" 406 | ], 407 | "artifacts": [ 408 | "IERC721Receiver" 409 | ] 410 | }, 411 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\introspection\\IERC165.sol": { 412 | "lastModificationDate": 1689339617630, 413 | "contentHash": "03e6768535ac4da0e9756f1d8a4a018a", 414 | "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", 415 | "solcConfig": { 416 | "version": "0.8.17", 417 | "settings": { 418 | "optimizer": { 419 | "enabled": true, 420 | "runs": 200 421 | }, 422 | "outputSelection": { 423 | "*": { 424 | "*": [ 425 | "abi", 426 | "evm.bytecode", 427 | "evm.deployedBytecode", 428 | "evm.methodIdentifiers", 429 | "metadata" 430 | ], 431 | "": [ 432 | "ast" 433 | ] 434 | } 435 | } 436 | } 437 | }, 438 | "imports": [], 439 | "versionPragmas": [ 440 | "^0.8.0" 441 | ], 442 | "artifacts": [ 443 | "IERC165" 444 | ] 445 | }, 446 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\math\\Math.sol": { 447 | "lastModificationDate": 1689339618358, 448 | "contentHash": "b9c58920ce74d6dc819161786112e7ee", 449 | "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", 450 | "solcConfig": { 451 | "version": "0.8.17", 452 | "settings": { 453 | "optimizer": { 454 | "enabled": true, 455 | "runs": 200 456 | }, 457 | "outputSelection": { 458 | "*": { 459 | "*": [ 460 | "abi", 461 | "evm.bytecode", 462 | "evm.deployedBytecode", 463 | "evm.methodIdentifiers", 464 | "metadata" 465 | ], 466 | "": [ 467 | "ast" 468 | ] 469 | } 470 | } 471 | } 472 | }, 473 | "imports": [], 474 | "versionPragmas": [ 475 | "^0.8.0" 476 | ], 477 | "artifacts": [ 478 | "Math" 479 | ] 480 | } 481 | } 482 | } 483 | -------------------------------------------------------------------------------- /NFT/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ERC721", 4 | "sourceName": "@openzeppelin/contracts/token/ERC721/ERC721.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "string", 10 | "name": "name_", 11 | "type": "string" 12 | }, 13 | { 14 | "internalType": "string", 15 | "name": "symbol_", 16 | "type": "string" 17 | } 18 | ], 19 | "stateMutability": "nonpayable", 20 | "type": "constructor" 21 | }, 22 | { 23 | "anonymous": false, 24 | "inputs": [ 25 | { 26 | "indexed": true, 27 | "internalType": "address", 28 | "name": "owner", 29 | "type": "address" 30 | }, 31 | { 32 | "indexed": true, 33 | "internalType": "address", 34 | "name": "approved", 35 | "type": "address" 36 | }, 37 | { 38 | "indexed": true, 39 | "internalType": "uint256", 40 | "name": "tokenId", 41 | "type": "uint256" 42 | } 43 | ], 44 | "name": "Approval", 45 | "type": "event" 46 | }, 47 | { 48 | "anonymous": false, 49 | "inputs": [ 50 | { 51 | "indexed": true, 52 | "internalType": "address", 53 | "name": "owner", 54 | "type": "address" 55 | }, 56 | { 57 | "indexed": true, 58 | "internalType": "address", 59 | "name": "operator", 60 | "type": "address" 61 | }, 62 | { 63 | "indexed": false, 64 | "internalType": "bool", 65 | "name": "approved", 66 | "type": "bool" 67 | } 68 | ], 69 | "name": "ApprovalForAll", 70 | "type": "event" 71 | }, 72 | { 73 | "anonymous": false, 74 | "inputs": [ 75 | { 76 | "indexed": true, 77 | "internalType": "address", 78 | "name": "from", 79 | "type": "address" 80 | }, 81 | { 82 | "indexed": true, 83 | "internalType": "address", 84 | "name": "to", 85 | "type": "address" 86 | }, 87 | { 88 | "indexed": true, 89 | "internalType": "uint256", 90 | "name": "tokenId", 91 | "type": "uint256" 92 | } 93 | ], 94 | "name": "Transfer", 95 | "type": "event" 96 | }, 97 | { 98 | "inputs": [ 99 | { 100 | "internalType": "address", 101 | "name": "to", 102 | "type": "address" 103 | }, 104 | { 105 | "internalType": "uint256", 106 | "name": "tokenId", 107 | "type": "uint256" 108 | } 109 | ], 110 | "name": "approve", 111 | "outputs": [], 112 | "stateMutability": "nonpayable", 113 | "type": "function" 114 | }, 115 | { 116 | "inputs": [ 117 | { 118 | "internalType": "address", 119 | "name": "owner", 120 | "type": "address" 121 | } 122 | ], 123 | "name": "balanceOf", 124 | "outputs": [ 125 | { 126 | "internalType": "uint256", 127 | "name": "", 128 | "type": "uint256" 129 | } 130 | ], 131 | "stateMutability": "view", 132 | "type": "function" 133 | }, 134 | { 135 | "inputs": [ 136 | { 137 | "internalType": "uint256", 138 | "name": "tokenId", 139 | "type": "uint256" 140 | } 141 | ], 142 | "name": "getApproved", 143 | "outputs": [ 144 | { 145 | "internalType": "address", 146 | "name": "", 147 | "type": "address" 148 | } 149 | ], 150 | "stateMutability": "view", 151 | "type": "function" 152 | }, 153 | { 154 | "inputs": [ 155 | { 156 | "internalType": "address", 157 | "name": "owner", 158 | "type": "address" 159 | }, 160 | { 161 | "internalType": "address", 162 | "name": "operator", 163 | "type": "address" 164 | } 165 | ], 166 | "name": "isApprovedForAll", 167 | "outputs": [ 168 | { 169 | "internalType": "bool", 170 | "name": "", 171 | "type": "bool" 172 | } 173 | ], 174 | "stateMutability": "view", 175 | "type": "function" 176 | }, 177 | { 178 | "inputs": [], 179 | "name": "name", 180 | "outputs": [ 181 | { 182 | "internalType": "string", 183 | "name": "", 184 | "type": "string" 185 | } 186 | ], 187 | "stateMutability": "view", 188 | "type": "function" 189 | }, 190 | { 191 | "inputs": [ 192 | { 193 | "internalType": "uint256", 194 | "name": "tokenId", 195 | "type": "uint256" 196 | } 197 | ], 198 | "name": "ownerOf", 199 | "outputs": [ 200 | { 201 | "internalType": "address", 202 | "name": "", 203 | "type": "address" 204 | } 205 | ], 206 | "stateMutability": "view", 207 | "type": "function" 208 | }, 209 | { 210 | "inputs": [ 211 | { 212 | "internalType": "address", 213 | "name": "from", 214 | "type": "address" 215 | }, 216 | { 217 | "internalType": "address", 218 | "name": "to", 219 | "type": "address" 220 | }, 221 | { 222 | "internalType": "uint256", 223 | "name": "tokenId", 224 | "type": "uint256" 225 | } 226 | ], 227 | "name": "safeTransferFrom", 228 | "outputs": [], 229 | "stateMutability": "nonpayable", 230 | "type": "function" 231 | }, 232 | { 233 | "inputs": [ 234 | { 235 | "internalType": "address", 236 | "name": "from", 237 | "type": "address" 238 | }, 239 | { 240 | "internalType": "address", 241 | "name": "to", 242 | "type": "address" 243 | }, 244 | { 245 | "internalType": "uint256", 246 | "name": "tokenId", 247 | "type": "uint256" 248 | }, 249 | { 250 | "internalType": "bytes", 251 | "name": "data", 252 | "type": "bytes" 253 | } 254 | ], 255 | "name": "safeTransferFrom", 256 | "outputs": [], 257 | "stateMutability": "nonpayable", 258 | "type": "function" 259 | }, 260 | { 261 | "inputs": [ 262 | { 263 | "internalType": "address", 264 | "name": "operator", 265 | "type": "address" 266 | }, 267 | { 268 | "internalType": "bool", 269 | "name": "approved", 270 | "type": "bool" 271 | } 272 | ], 273 | "name": "setApprovalForAll", 274 | "outputs": [], 275 | "stateMutability": "nonpayable", 276 | "type": "function" 277 | }, 278 | { 279 | "inputs": [ 280 | { 281 | "internalType": "bytes4", 282 | "name": "interfaceId", 283 | "type": "bytes4" 284 | } 285 | ], 286 | "name": "supportsInterface", 287 | "outputs": [ 288 | { 289 | "internalType": "bool", 290 | "name": "", 291 | "type": "bool" 292 | } 293 | ], 294 | "stateMutability": "view", 295 | "type": "function" 296 | }, 297 | { 298 | "inputs": [], 299 | "name": "symbol", 300 | "outputs": [ 301 | { 302 | "internalType": "string", 303 | "name": "", 304 | "type": "string" 305 | } 306 | ], 307 | "stateMutability": "view", 308 | "type": "function" 309 | }, 310 | { 311 | "inputs": [ 312 | { 313 | "internalType": "uint256", 314 | "name": "tokenId", 315 | "type": "uint256" 316 | } 317 | ], 318 | "name": "tokenURI", 319 | "outputs": [ 320 | { 321 | "internalType": "string", 322 | "name": "", 323 | "type": "string" 324 | } 325 | ], 326 | "stateMutability": "view", 327 | "type": "function" 328 | }, 329 | { 330 | "inputs": [ 331 | { 332 | "internalType": "address", 333 | "name": "from", 334 | "type": "address" 335 | }, 336 | { 337 | "internalType": "address", 338 | "name": "to", 339 | "type": "address" 340 | }, 341 | { 342 | "internalType": "uint256", 343 | "name": "tokenId", 344 | "type": "uint256" 345 | } 346 | ], 347 | "name": "transferFrom", 348 | "outputs": [], 349 | "stateMutability": "nonpayable", 350 | "type": "function" 351 | } 352 | ], 353 | "bytecode": "0x60806040523480156200001157600080fd5b50604051620013e7380380620013e783398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6110f380620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea26469706673582212209111c6bfadf2f2fc75950683c2e4a695a0a448e7853a386b73d56801b9f366ea64736f6c63430008110033", 354 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea26469706673582212209111c6bfadf2f2fc75950683c2e4a695a0a448e7853a386b73d56801b9f366ea64736f6c63430008110033", 355 | "linkReferences": {}, 356 | "deployedLinkReferences": {} 357 | } 358 | -------------------------------------------------------------------------------- /NFT/artifacts/contracts/NftMinter.sol/NFTMinter.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "NFTMinter", 4 | "sourceName": "contracts/NftMinter.sol", 5 | "abi": [ 6 | { 7 | "inputs": [], 8 | "stateMutability": "nonpayable", 9 | "type": "constructor" 10 | }, 11 | { 12 | "anonymous": false, 13 | "inputs": [ 14 | { 15 | "indexed": true, 16 | "internalType": "address", 17 | "name": "owner", 18 | "type": "address" 19 | }, 20 | { 21 | "indexed": true, 22 | "internalType": "address", 23 | "name": "approved", 24 | "type": "address" 25 | }, 26 | { 27 | "indexed": true, 28 | "internalType": "uint256", 29 | "name": "tokenId", 30 | "type": "uint256" 31 | } 32 | ], 33 | "name": "Approval", 34 | "type": "event" 35 | }, 36 | { 37 | "anonymous": false, 38 | "inputs": [ 39 | { 40 | "indexed": true, 41 | "internalType": "address", 42 | "name": "owner", 43 | "type": "address" 44 | }, 45 | { 46 | "indexed": true, 47 | "internalType": "address", 48 | "name": "operator", 49 | "type": "address" 50 | }, 51 | { 52 | "indexed": false, 53 | "internalType": "bool", 54 | "name": "approved", 55 | "type": "bool" 56 | } 57 | ], 58 | "name": "ApprovalForAll", 59 | "type": "event" 60 | }, 61 | { 62 | "anonymous": false, 63 | "inputs": [ 64 | { 65 | "indexed": true, 66 | "internalType": "address", 67 | "name": "from", 68 | "type": "address" 69 | }, 70 | { 71 | "indexed": true, 72 | "internalType": "address", 73 | "name": "to", 74 | "type": "address" 75 | }, 76 | { 77 | "indexed": true, 78 | "internalType": "uint256", 79 | "name": "tokenId", 80 | "type": "uint256" 81 | } 82 | ], 83 | "name": "Transfer", 84 | "type": "event" 85 | }, 86 | { 87 | "inputs": [ 88 | { 89 | "internalType": "address", 90 | "name": "to", 91 | "type": "address" 92 | }, 93 | { 94 | "internalType": "uint256", 95 | "name": "tokenId", 96 | "type": "uint256" 97 | } 98 | ], 99 | "name": "approve", 100 | "outputs": [], 101 | "stateMutability": "nonpayable", 102 | "type": "function" 103 | }, 104 | { 105 | "inputs": [ 106 | { 107 | "internalType": "address", 108 | "name": "owner", 109 | "type": "address" 110 | } 111 | ], 112 | "name": "balanceOf", 113 | "outputs": [ 114 | { 115 | "internalType": "uint256", 116 | "name": "", 117 | "type": "uint256" 118 | } 119 | ], 120 | "stateMutability": "view", 121 | "type": "function" 122 | }, 123 | { 124 | "inputs": [ 125 | { 126 | "internalType": "uint256", 127 | "name": "tokenId", 128 | "type": "uint256" 129 | } 130 | ], 131 | "name": "getApproved", 132 | "outputs": [ 133 | { 134 | "internalType": "address", 135 | "name": "", 136 | "type": "address" 137 | } 138 | ], 139 | "stateMutability": "view", 140 | "type": "function" 141 | }, 142 | { 143 | "inputs": [ 144 | { 145 | "internalType": "address", 146 | "name": "owner", 147 | "type": "address" 148 | }, 149 | { 150 | "internalType": "address", 151 | "name": "operator", 152 | "type": "address" 153 | } 154 | ], 155 | "name": "isApprovedForAll", 156 | "outputs": [ 157 | { 158 | "internalType": "bool", 159 | "name": "", 160 | "type": "bool" 161 | } 162 | ], 163 | "stateMutability": "view", 164 | "type": "function" 165 | }, 166 | { 167 | "inputs": [ 168 | { 169 | "internalType": "address", 170 | "name": "recipient", 171 | "type": "address" 172 | }, 173 | { 174 | "internalType": "string", 175 | "name": "tokenURI", 176 | "type": "string" 177 | } 178 | ], 179 | "name": "mintNFT", 180 | "outputs": [ 181 | { 182 | "internalType": "uint256", 183 | "name": "", 184 | "type": "uint256" 185 | } 186 | ], 187 | "stateMutability": "nonpayable", 188 | "type": "function" 189 | }, 190 | { 191 | "inputs": [], 192 | "name": "name", 193 | "outputs": [ 194 | { 195 | "internalType": "string", 196 | "name": "", 197 | "type": "string" 198 | } 199 | ], 200 | "stateMutability": "view", 201 | "type": "function" 202 | }, 203 | { 204 | "inputs": [ 205 | { 206 | "internalType": "uint256", 207 | "name": "tokenId", 208 | "type": "uint256" 209 | } 210 | ], 211 | "name": "ownerOf", 212 | "outputs": [ 213 | { 214 | "internalType": "address", 215 | "name": "", 216 | "type": "address" 217 | } 218 | ], 219 | "stateMutability": "view", 220 | "type": "function" 221 | }, 222 | { 223 | "inputs": [ 224 | { 225 | "internalType": "address", 226 | "name": "from", 227 | "type": "address" 228 | }, 229 | { 230 | "internalType": "address", 231 | "name": "to", 232 | "type": "address" 233 | }, 234 | { 235 | "internalType": "uint256", 236 | "name": "tokenId", 237 | "type": "uint256" 238 | } 239 | ], 240 | "name": "safeTransferFrom", 241 | "outputs": [], 242 | "stateMutability": "nonpayable", 243 | "type": "function" 244 | }, 245 | { 246 | "inputs": [ 247 | { 248 | "internalType": "address", 249 | "name": "from", 250 | "type": "address" 251 | }, 252 | { 253 | "internalType": "address", 254 | "name": "to", 255 | "type": "address" 256 | }, 257 | { 258 | "internalType": "uint256", 259 | "name": "tokenId", 260 | "type": "uint256" 261 | }, 262 | { 263 | "internalType": "bytes", 264 | "name": "data", 265 | "type": "bytes" 266 | } 267 | ], 268 | "name": "safeTransferFrom", 269 | "outputs": [], 270 | "stateMutability": "nonpayable", 271 | "type": "function" 272 | }, 273 | { 274 | "inputs": [ 275 | { 276 | "internalType": "address", 277 | "name": "operator", 278 | "type": "address" 279 | }, 280 | { 281 | "internalType": "bool", 282 | "name": "approved", 283 | "type": "bool" 284 | } 285 | ], 286 | "name": "setApprovalForAll", 287 | "outputs": [], 288 | "stateMutability": "nonpayable", 289 | "type": "function" 290 | }, 291 | { 292 | "inputs": [ 293 | { 294 | "internalType": "bytes4", 295 | "name": "interfaceId", 296 | "type": "bytes4" 297 | } 298 | ], 299 | "name": "supportsInterface", 300 | "outputs": [ 301 | { 302 | "internalType": "bool", 303 | "name": "", 304 | "type": "bool" 305 | } 306 | ], 307 | "stateMutability": "view", 308 | "type": "function" 309 | }, 310 | { 311 | "inputs": [], 312 | "name": "symbol", 313 | "outputs": [ 314 | { 315 | "internalType": "string", 316 | "name": "", 317 | "type": "string" 318 | } 319 | ], 320 | "stateMutability": "view", 321 | "type": "function" 322 | }, 323 | { 324 | "inputs": [ 325 | { 326 | "internalType": "uint256", 327 | "name": "tokenId", 328 | "type": "uint256" 329 | } 330 | ], 331 | "name": "tokenURI", 332 | "outputs": [ 333 | { 334 | "internalType": "string", 335 | "name": "", 336 | "type": "string" 337 | } 338 | ], 339 | "stateMutability": "view", 340 | "type": "function" 341 | }, 342 | { 343 | "inputs": [ 344 | { 345 | "internalType": "address", 346 | "name": "from", 347 | "type": "address" 348 | }, 349 | { 350 | "internalType": "address", 351 | "name": "to", 352 | "type": "address" 353 | }, 354 | { 355 | "internalType": "uint256", 356 | "name": "tokenId", 357 | "type": "uint256" 358 | } 359 | ], 360 | "name": "transferFrom", 361 | "outputs": [], 362 | "stateMutability": "nonpayable", 363 | "type": "function" 364 | } 365 | ], 366 | "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280601681526020017f536861726465756d20446576204e46544d696e746572000000000000000000008152506040518060400160405280600481526020016314d3919560e21b815250816000908162000076919062000133565b50600162000085828262000133565b505050620001ff565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000b957607f821691505b602082108103620000da57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012e57600081815260208120601f850160051c81016020861015620001095750805b601f850160051c820191505b818110156200012a5782815560010162000115565b5050505b505050565b81516001600160401b038111156200014f576200014f6200008e565b6200016781620001608454620000a4565b84620000e0565b602080601f8311600181146200019f5760008415620001865750858301515b600019600386901b1c1916600185901b1785556200012a565b600085815260208120601f198616915b82811015620001d057888601518255948401946001909101908401620001af565b5085821015620001ef5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61160b806200020f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde146101e1578063c87b56dd146101f4578063e985e9c514610207578063eacabe141461024357600080fd5b806370a08231146101a557806395d89b41146101c6578063a22cb465146101ce57600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f5780636352211e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004611011565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e919061107e565b61013f61013a366004611091565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a6101653660046110c6565b610361565b005b61016a61017a3660046110f0565b61047b565b61016a61018d3660046110f0565b6104ac565b61013f6101a0366004611091565b6104c7565b6101b86101b336600461112c565b610527565b60405190815260200161010e565b61011f6105ad565b61016a6101dc366004611147565b6105bc565b61016a6101ef36600461120f565b6105cb565b61011f610202366004611091565b610603565b61010261021536600461128b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101b86102513660046112be565b610713565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b790611320565b80601f01602080910402602001604051908101604052809291908181526020018280546102e390611320565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b60006103458261074b565b506000908152600460205260409020546001600160a01b031690565b600061036c826104c7565b9050806001600160a01b0316836001600160a01b0316036103de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103fa57506103fa8133610215565b61046c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103d5565b61047683836107ad565b505050565b610485338261081b565b6104a15760405162461bcd60e51b81526004016103d59061135a565b610476838383610899565b610476838383604051806020016040528060008152506105cb565b6000818152600260205260408120546001600160a01b0316806102a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b60006001600160a01b0382166105915760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103d5565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b790611320565b6105c73383836109fd565b5050565b6105d5338361081b565b6105f15760405162461bcd60e51b81526004016103d59061135a565b6105fd84848484610acb565b50505050565b606061060e8261074b565b6000828152600660205260408120805461062790611320565b80601f016020809104026020016040519081016040528092919081815260200182805461065390611320565b80156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b5050505050905060006106be60408051602081019091526000815290565b905080516000036106d0575092915050565b8151156107025780826040516020016106ea9291906113a7565b60405160208183030381529060405292505050919050565b61070b84610afe565b949350505050565b6000610723600780546001019055565b600061072e60075490565b905061073a8482610b71565b6107448184610cfc565b9392505050565b6000818152600260205260409020546001600160a01b03166107aa5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e2826104c7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610827836104c7565b9050806001600160a01b0316846001600160a01b0316148061086e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061070b5750836001600160a01b03166108878461033a565b6001600160a01b031614949350505050565b826001600160a01b03166108ac826104c7565b6001600160a01b0316146108d25760405162461bcd60e51b81526004016103d5906113d6565b6001600160a01b0382166109345760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103d5565b826001600160a01b0316610947826104c7565b6001600160a01b03161461096d5760405162461bcd60e51b81526004016103d5906113d6565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610a5e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103d5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ad6848484610899565b610ae284848484610d8f565b6105fd5760405162461bcd60e51b81526004016103d59061141b565b6060610b098261074b565b6000610b2060408051602081019091526000815290565b90506000815111610b405760405180602001604052806000815250610744565b80610b4a84610e90565b604051602001610b5b9291906113a7565b6040516020818303038152906040529392505050565b6001600160a01b038216610bc75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c2c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c915760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b0316610d775760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103d5565b600082815260066020526040902061047682826114bb565b60006001600160a01b0384163b15610e8557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610dd390339089908890889060040161157b565b6020604051808303816000875af1925050508015610e0e575060408051601f3d908101601f19168201909252610e0b918101906115b8565b60015b610e6b573d808015610e3c576040519150601f19603f3d011682016040523d82523d6000602084013e610e41565b606091505b508051600003610e635760405162461bcd60e51b81526004016103d59061141b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061070b565b506001949350505050565b60606000610e9d83610f23565b600101905060008167ffffffffffffffff811115610ebd57610ebd611183565b6040519080825280601f01601f191660200182016040528015610ee7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610ef157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610f625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f8e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610fac57662386f26fc10000830492506010015b6305f5e1008310610fc4576305f5e100830492506008015b6127108310610fd857612710830492506004015b60648310610fea576064830492506002015b600a83106102a25760010192915050565b6001600160e01b0319811681146107aa57600080fd5b60006020828403121561102357600080fd5b813561074481610ffb565b60005b83811015611049578181015183820152602001611031565b50506000910152565b6000815180845261106a81602086016020860161102e565b601f01601f19169290920160200192915050565b6020815260006107446020830184611052565b6000602082840312156110a357600080fd5b5035919050565b80356001600160a01b03811681146110c157600080fd5b919050565b600080604083850312156110d957600080fd5b6110e2836110aa565b946020939093013593505050565b60008060006060848603121561110557600080fd5b61110e846110aa565b925061111c602085016110aa565b9150604084013590509250925092565b60006020828403121561113e57600080fd5b610744826110aa565b6000806040838503121561115a57600080fd5b611163836110aa565b91506020830135801515811461117857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111b4576111b4611183565b604051601f8501601f19908116603f011681019082821181831017156111dc576111dc611183565b816040528093508581528686860111156111f557600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561122557600080fd5b61122e856110aa565b935061123c602086016110aa565b925060408501359150606085013567ffffffffffffffff81111561125f57600080fd5b8501601f8101871361127057600080fd5b61127f87823560208401611199565b91505092959194509250565b6000806040838503121561129e57600080fd5b6112a7836110aa565b91506112b5602084016110aa565b90509250929050565b600080604083850312156112d157600080fd5b6112da836110aa565b9150602083013567ffffffffffffffff8111156112f657600080fd5b8301601f8101851361130757600080fd5b61131685823560208401611199565b9150509250929050565b600181811c9082168061133457607f821691505b60208210810361135457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600083516113b981846020880161102e565b8351908301906113cd81836020880161102e565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f82111561047657600081815260208120601f850160051c810160208610156114945750805b601f850160051c820191505b818110156114b3578281556001016114a0565b505050505050565b815167ffffffffffffffff8111156114d5576114d5611183565b6114e9816114e38454611320565b8461146d565b602080601f83116001811461151e57600084156115065750858301515b600019600386901b1c1916600185901b1785556114b3565b600085815260208120601f198616915b8281101561154d5788860151825594840194600190910190840161152e565b508582101561156b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906115ae90830184611052565b9695505050505050565b6000602082840312156115ca57600080fd5b815161074481610ffb56fea2646970667358221220b4303f5366e29fa93786371759caeea4f5a01cddd42d2ba6c7575ff5501c727164736f6c63430008110033", 367 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde146101e1578063c87b56dd146101f4578063e985e9c514610207578063eacabe141461024357600080fd5b806370a08231146101a557806395d89b41146101c6578063a22cb465146101ce57600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f5780636352211e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004611011565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e919061107e565b61013f61013a366004611091565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a6101653660046110c6565b610361565b005b61016a61017a3660046110f0565b61047b565b61016a61018d3660046110f0565b6104ac565b61013f6101a0366004611091565b6104c7565b6101b86101b336600461112c565b610527565b60405190815260200161010e565b61011f6105ad565b61016a6101dc366004611147565b6105bc565b61016a6101ef36600461120f565b6105cb565b61011f610202366004611091565b610603565b61010261021536600461128b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101b86102513660046112be565b610713565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b790611320565b80601f01602080910402602001604051908101604052809291908181526020018280546102e390611320565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b60006103458261074b565b506000908152600460205260409020546001600160a01b031690565b600061036c826104c7565b9050806001600160a01b0316836001600160a01b0316036103de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103fa57506103fa8133610215565b61046c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103d5565b61047683836107ad565b505050565b610485338261081b565b6104a15760405162461bcd60e51b81526004016103d59061135a565b610476838383610899565b610476838383604051806020016040528060008152506105cb565b6000818152600260205260408120546001600160a01b0316806102a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b60006001600160a01b0382166105915760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103d5565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b790611320565b6105c73383836109fd565b5050565b6105d5338361081b565b6105f15760405162461bcd60e51b81526004016103d59061135a565b6105fd84848484610acb565b50505050565b606061060e8261074b565b6000828152600660205260408120805461062790611320565b80601f016020809104026020016040519081016040528092919081815260200182805461065390611320565b80156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b5050505050905060006106be60408051602081019091526000815290565b905080516000036106d0575092915050565b8151156107025780826040516020016106ea9291906113a7565b60405160208183030381529060405292505050919050565b61070b84610afe565b949350505050565b6000610723600780546001019055565b600061072e60075490565b905061073a8482610b71565b6107448184610cfc565b9392505050565b6000818152600260205260409020546001600160a01b03166107aa5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e2826104c7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610827836104c7565b9050806001600160a01b0316846001600160a01b0316148061086e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061070b5750836001600160a01b03166108878461033a565b6001600160a01b031614949350505050565b826001600160a01b03166108ac826104c7565b6001600160a01b0316146108d25760405162461bcd60e51b81526004016103d5906113d6565b6001600160a01b0382166109345760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103d5565b826001600160a01b0316610947826104c7565b6001600160a01b03161461096d5760405162461bcd60e51b81526004016103d5906113d6565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610a5e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103d5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ad6848484610899565b610ae284848484610d8f565b6105fd5760405162461bcd60e51b81526004016103d59061141b565b6060610b098261074b565b6000610b2060408051602081019091526000815290565b90506000815111610b405760405180602001604052806000815250610744565b80610b4a84610e90565b604051602001610b5b9291906113a7565b6040516020818303038152906040529392505050565b6001600160a01b038216610bc75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c2c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c915760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b0316610d775760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103d5565b600082815260066020526040902061047682826114bb565b60006001600160a01b0384163b15610e8557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610dd390339089908890889060040161157b565b6020604051808303816000875af1925050508015610e0e575060408051601f3d908101601f19168201909252610e0b918101906115b8565b60015b610e6b573d808015610e3c576040519150601f19603f3d011682016040523d82523d6000602084013e610e41565b606091505b508051600003610e635760405162461bcd60e51b81526004016103d59061141b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061070b565b506001949350505050565b60606000610e9d83610f23565b600101905060008167ffffffffffffffff811115610ebd57610ebd611183565b6040519080825280601f01601f191660200182016040528015610ee7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610ef157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610f625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f8e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610fac57662386f26fc10000830492506010015b6305f5e1008310610fc4576305f5e100830492506008015b6127108310610fd857612710830492506004015b60648310610fea576064830492506002015b600a83106102a25760010192915050565b6001600160e01b0319811681146107aa57600080fd5b60006020828403121561102357600080fd5b813561074481610ffb565b60005b83811015611049578181015183820152602001611031565b50506000910152565b6000815180845261106a81602086016020860161102e565b601f01601f19169290920160200192915050565b6020815260006107446020830184611052565b6000602082840312156110a357600080fd5b5035919050565b80356001600160a01b03811681146110c157600080fd5b919050565b600080604083850312156110d957600080fd5b6110e2836110aa565b946020939093013593505050565b60008060006060848603121561110557600080fd5b61110e846110aa565b925061111c602085016110aa565b9150604084013590509250925092565b60006020828403121561113e57600080fd5b610744826110aa565b6000806040838503121561115a57600080fd5b611163836110aa565b91506020830135801515811461117857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111b4576111b4611183565b604051601f8501601f19908116603f011681019082821181831017156111dc576111dc611183565b816040528093508581528686860111156111f557600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561122557600080fd5b61122e856110aa565b935061123c602086016110aa565b925060408501359150606085013567ffffffffffffffff81111561125f57600080fd5b8501601f8101871361127057600080fd5b61127f87823560208401611199565b91505092959194509250565b6000806040838503121561129e57600080fd5b6112a7836110aa565b91506112b5602084016110aa565b90509250929050565b600080604083850312156112d157600080fd5b6112da836110aa565b9150602083013567ffffffffffffffff8111156112f657600080fd5b8301601f8101851361130757600080fd5b61131685823560208401611199565b9150509250929050565b600181811c9082168061133457607f821691505b60208210810361135457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600083516113b981846020880161102e565b8351908301906113cd81836020880161102e565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f82111561047657600081815260208120601f850160051c810160208610156114945750805b601f850160051c820191505b818110156114b3578281556001016114a0565b505050505050565b815167ffffffffffffffff8111156114d5576114d5611183565b6114e9816114e38454611320565b8461146d565b602080601f83116001811461151e57600084156115065750858301515b600019600386901b1c1916600185901b1785556114b3565b600085815260208120601f198616915b8281101561154d5788860151825594840194600190910190840161152e565b508582101561156b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906115ae90830184611052565b9695505050505050565b6000602082840312156115ca57600080fd5b815161074481610ffb56fea2646970667358221220b4303f5366e29fa93786371759caeea4f5a01cddd42d2ba6c7575ff5501c727164736f6c63430008110033", 368 | "linkReferences": {}, 369 | "deployedLinkReferences": {} 370 | } 371 | -------------------------------------------------------------------------------- /NFT/src/Nft-Minter.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "NFTMinter", 4 | "sourceName": "contracts/NftMinter.sol", 5 | "abi": [ 6 | { 7 | "inputs": [], 8 | "stateMutability": "nonpayable", 9 | "type": "constructor" 10 | }, 11 | { 12 | "anonymous": false, 13 | "inputs": [ 14 | { 15 | "indexed": true, 16 | "internalType": "address", 17 | "name": "owner", 18 | "type": "address" 19 | }, 20 | { 21 | "indexed": true, 22 | "internalType": "address", 23 | "name": "approved", 24 | "type": "address" 25 | }, 26 | { 27 | "indexed": true, 28 | "internalType": "uint256", 29 | "name": "tokenId", 30 | "type": "uint256" 31 | } 32 | ], 33 | "name": "Approval", 34 | "type": "event" 35 | }, 36 | { 37 | "anonymous": false, 38 | "inputs": [ 39 | { 40 | "indexed": true, 41 | "internalType": "address", 42 | "name": "owner", 43 | "type": "address" 44 | }, 45 | { 46 | "indexed": true, 47 | "internalType": "address", 48 | "name": "operator", 49 | "type": "address" 50 | }, 51 | { 52 | "indexed": false, 53 | "internalType": "bool", 54 | "name": "approved", 55 | "type": "bool" 56 | } 57 | ], 58 | "name": "ApprovalForAll", 59 | "type": "event" 60 | }, 61 | { 62 | "anonymous": false, 63 | "inputs": [ 64 | { 65 | "indexed": true, 66 | "internalType": "address", 67 | "name": "from", 68 | "type": "address" 69 | }, 70 | { 71 | "indexed": true, 72 | "internalType": "address", 73 | "name": "to", 74 | "type": "address" 75 | }, 76 | { 77 | "indexed": true, 78 | "internalType": "uint256", 79 | "name": "tokenId", 80 | "type": "uint256" 81 | } 82 | ], 83 | "name": "Transfer", 84 | "type": "event" 85 | }, 86 | { 87 | "inputs": [ 88 | { 89 | "internalType": "address", 90 | "name": "to", 91 | "type": "address" 92 | }, 93 | { 94 | "internalType": "uint256", 95 | "name": "tokenId", 96 | "type": "uint256" 97 | } 98 | ], 99 | "name": "approve", 100 | "outputs": [], 101 | "stateMutability": "nonpayable", 102 | "type": "function" 103 | }, 104 | { 105 | "inputs": [ 106 | { 107 | "internalType": "address", 108 | "name": "owner", 109 | "type": "address" 110 | } 111 | ], 112 | "name": "balanceOf", 113 | "outputs": [ 114 | { 115 | "internalType": "uint256", 116 | "name": "", 117 | "type": "uint256" 118 | } 119 | ], 120 | "stateMutability": "view", 121 | "type": "function" 122 | }, 123 | { 124 | "inputs": [ 125 | { 126 | "internalType": "uint256", 127 | "name": "tokenId", 128 | "type": "uint256" 129 | } 130 | ], 131 | "name": "getApproved", 132 | "outputs": [ 133 | { 134 | "internalType": "address", 135 | "name": "", 136 | "type": "address" 137 | } 138 | ], 139 | "stateMutability": "view", 140 | "type": "function" 141 | }, 142 | { 143 | "inputs": [ 144 | { 145 | "internalType": "address", 146 | "name": "owner", 147 | "type": "address" 148 | }, 149 | { 150 | "internalType": "address", 151 | "name": "operator", 152 | "type": "address" 153 | } 154 | ], 155 | "name": "isApprovedForAll", 156 | "outputs": [ 157 | { 158 | "internalType": "bool", 159 | "name": "", 160 | "type": "bool" 161 | } 162 | ], 163 | "stateMutability": "view", 164 | "type": "function" 165 | }, 166 | { 167 | "inputs": [ 168 | { 169 | "internalType": "address", 170 | "name": "recipient", 171 | "type": "address" 172 | }, 173 | { 174 | "internalType": "string", 175 | "name": "tokenURI", 176 | "type": "string" 177 | } 178 | ], 179 | "name": "mintNFT", 180 | "outputs": [ 181 | { 182 | "internalType": "uint256", 183 | "name": "", 184 | "type": "uint256" 185 | } 186 | ], 187 | "stateMutability": "nonpayable", 188 | "type": "function" 189 | }, 190 | { 191 | "inputs": [], 192 | "name": "name", 193 | "outputs": [ 194 | { 195 | "internalType": "string", 196 | "name": "", 197 | "type": "string" 198 | } 199 | ], 200 | "stateMutability": "view", 201 | "type": "function" 202 | }, 203 | { 204 | "inputs": [ 205 | { 206 | "internalType": "uint256", 207 | "name": "tokenId", 208 | "type": "uint256" 209 | } 210 | ], 211 | "name": "ownerOf", 212 | "outputs": [ 213 | { 214 | "internalType": "address", 215 | "name": "", 216 | "type": "address" 217 | } 218 | ], 219 | "stateMutability": "view", 220 | "type": "function" 221 | }, 222 | { 223 | "inputs": [ 224 | { 225 | "internalType": "address", 226 | "name": "from", 227 | "type": "address" 228 | }, 229 | { 230 | "internalType": "address", 231 | "name": "to", 232 | "type": "address" 233 | }, 234 | { 235 | "internalType": "uint256", 236 | "name": "tokenId", 237 | "type": "uint256" 238 | } 239 | ], 240 | "name": "safeTransferFrom", 241 | "outputs": [], 242 | "stateMutability": "nonpayable", 243 | "type": "function" 244 | }, 245 | { 246 | "inputs": [ 247 | { 248 | "internalType": "address", 249 | "name": "from", 250 | "type": "address" 251 | }, 252 | { 253 | "internalType": "address", 254 | "name": "to", 255 | "type": "address" 256 | }, 257 | { 258 | "internalType": "uint256", 259 | "name": "tokenId", 260 | "type": "uint256" 261 | }, 262 | { 263 | "internalType": "bytes", 264 | "name": "data", 265 | "type": "bytes" 266 | } 267 | ], 268 | "name": "safeTransferFrom", 269 | "outputs": [], 270 | "stateMutability": "nonpayable", 271 | "type": "function" 272 | }, 273 | { 274 | "inputs": [ 275 | { 276 | "internalType": "address", 277 | "name": "operator", 278 | "type": "address" 279 | }, 280 | { 281 | "internalType": "bool", 282 | "name": "approved", 283 | "type": "bool" 284 | } 285 | ], 286 | "name": "setApprovalForAll", 287 | "outputs": [], 288 | "stateMutability": "nonpayable", 289 | "type": "function" 290 | }, 291 | { 292 | "inputs": [ 293 | { 294 | "internalType": "bytes4", 295 | "name": "interfaceId", 296 | "type": "bytes4" 297 | } 298 | ], 299 | "name": "supportsInterface", 300 | "outputs": [ 301 | { 302 | "internalType": "bool", 303 | "name": "", 304 | "type": "bool" 305 | } 306 | ], 307 | "stateMutability": "view", 308 | "type": "function" 309 | }, 310 | { 311 | "inputs": [], 312 | "name": "symbol", 313 | "outputs": [ 314 | { 315 | "internalType": "string", 316 | "name": "", 317 | "type": "string" 318 | } 319 | ], 320 | "stateMutability": "view", 321 | "type": "function" 322 | }, 323 | { 324 | "inputs": [ 325 | { 326 | "internalType": "uint256", 327 | "name": "tokenId", 328 | "type": "uint256" 329 | } 330 | ], 331 | "name": "tokenURI", 332 | "outputs": [ 333 | { 334 | "internalType": "string", 335 | "name": "", 336 | "type": "string" 337 | } 338 | ], 339 | "stateMutability": "view", 340 | "type": "function" 341 | }, 342 | { 343 | "inputs": [ 344 | { 345 | "internalType": "address", 346 | "name": "from", 347 | "type": "address" 348 | }, 349 | { 350 | "internalType": "address", 351 | "name": "to", 352 | "type": "address" 353 | }, 354 | { 355 | "internalType": "uint256", 356 | "name": "tokenId", 357 | "type": "uint256" 358 | } 359 | ], 360 | "name": "transferFrom", 361 | "outputs": [], 362 | "stateMutability": "nonpayable", 363 | "type": "function" 364 | } 365 | ], 366 | "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600981526020017f4e46544d696e74657200000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e46544d00000000000000000000000000000000000000000000000000000000815250816000908051906020019062000096929190620000b8565b508060019080519060200190620000af929190620000b8565b505050620001cd565b828054620000c69062000168565b90600052602060002090601f016020900481019282620000ea576000855562000136565b82601f106200010557805160ff191683800117855562000136565b8280016001018555821562000136579182015b828111156200013557825182559160200191906001019062000118565b5b50905062000145919062000149565b5090565b5b80821115620001645760008160009055506001016200014a565b5090565b600060028204905060018216806200018157607f821691505b602082108114156200019857620001976200019e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61294c80620001dd6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde1461025b578063c87b56dd14610277578063e985e9c5146102a7578063eacabe14146102d7576100ea565b806370a08231146101f157806395d89b4114610221578063a22cb4651461023f576100ea565b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018957806342842e0e146101a55780636352211e146101c1576100ea565b806301ffc9a7146100ef57806306fdde031461011f578063081812fc1461013d575b600080fd5b61010960048036038101906101049190611dfa565b610307565b6040516101169190612174565b60405180910390f35b6101276103e9565b604051610134919061218f565b60405180910390f35b61015760048036038101906101529190611e4c565b61047b565b604051610164919061210d565b60405180910390f35b61018760048036038101906101829190611dbe565b6104c1565b005b6101a3600480360381019061019e9190611c64565b6105d9565b005b6101bf60048036038101906101ba9190611c64565b610639565b005b6101db60048036038101906101d69190611e4c565b610659565b6040516101e8919061210d565b60405180910390f35b61020b60048036038101906102069190611bff565b6106e0565b6040516102189190612331565b60405180910390f35b610229610798565b604051610236919061218f565b60405180910390f35b61025960048036038101906102549190611d2e565b61082a565b005b61027560048036038101906102709190611cb3565b610840565b005b610291600480360381019061028c9190611e4c565b6108a2565b60405161029e919061218f565b60405180910390f35b6102c160048036038101906102bc9190611c28565b6109b5565b6040516102ce9190612174565b60405180910390f35b6102f160048036038101906102ec9190611d6a565b610a49565b6040516102fe9190612331565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103d257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103e257506103e182610a81565b5b9050919050565b6060600080546103f8906124cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610424906124cc565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b600061048682610aeb565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104cc82610659565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906122f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661055c610b36565b73ffffffffffffffffffffffffffffffffffffffff16148061058b575061058a81610585610b36565b6109b5565b5b6105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c190612311565b60405180910390fd5b6105d48383610b3e565b505050565b6105ea6105e4610b36565b82610bf7565b610629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610620906121b1565b60405180910390fd5b610634838383610c8c565b505050565b61065483838360405180602001604052806000815250610840565b505050565b60008061066583610f86565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906122d1565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074890612271565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107a7906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906124cc565b80156108205780601f106107f557610100808354040283529160200191610820565b820191906000526020600020905b81548152906001019060200180831161080357829003601f168201915b5050505050905090565b61083c610835610b36565b8383610fc3565b5050565b61085161084b610b36565b83610bf7565b610890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610887906121b1565b60405180910390fd5b61089c84848484611130565b50505050565b60606108ad82610aeb565b60006006600084815260200190815260200160002080546108cd906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546108f9906124cc565b80156109465780601f1061091b57610100808354040283529160200191610946565b820191906000526020600020905b81548152906001019060200180831161092957829003601f168201915b50505050509050600061095761118c565b905060008151141561096d5781925050506109b0565b6000825111156109a257808260405160200161098a9291906120e9565b604051602081830303815290604052925050506109b0565b6109ab846111a3565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610a55600761120b565b6000610a616007611221565b9050610a6d848261122f565b610a77818461144d565b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610af4816114c1565b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a906122d1565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610bb183610659565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c0383610659565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c455750610c4481856109b5565b5b80610c8357508373ffffffffffffffffffffffffffffffffffffffff16610c6b8461047b565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610cac82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906121f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990612231565b60405180910390fd5b610d7f8383836001611502565b8273ffffffffffffffffffffffffffffffffffffffff16610d9f82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906121f1565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f818383836001611508565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612251565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111239190612174565b60405180910390a3505050565b61113b848484610c8c565b6111478484848461150e565b611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d906121d1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606111ae82610aeb565b60006111b861118c565b905060008151116111d85760405180602001604052806000815250611203565b806111e2846116a5565b6040516020016111f39291906120e9565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906122b1565b60405180910390fd5b6112a8816114c1565b156112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df90612211565b60405180910390fd5b6112f6600083836001611502565b6112ff816114c1565b1561133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612211565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611449600083836001611508565b5050565b611456826114c1565b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90612291565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906114bc929190611a23565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166114e383610f86565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b600061152f8473ffffffffffffffffffffffffffffffffffffffff166117c9565b15611698578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611558610b36565b8786866040518563ffffffff1660e01b815260040161157a9493929190612128565b602060405180830381600087803b15801561159457600080fd5b505af19250505080156115c557506040513d601f19601f820116820180604052508101906115c29190611e23565b60015b611648573d80600081146115f5576040519150601f19603f3d011682016040523d82523d6000602084013e6115fa565b606091505b50600081511415611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906121d1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061169d565b600190505b949350505050565b6060600060016116b4846117ec565b01905060008167ffffffffffffffff8111156116f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561172b5781602001600182028036833780820191505090505b509050600082602001820190505b6001156117be578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816117a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b04945060008514156117b9576117be565b611739565b819350505050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611870577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611866577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef810000000083106118d3576d04ee2d6d415b85acef810000000083816118c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc10000831061192857662386f26fc10000838161191e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e1008310611977576305f5e100838161196d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b61271083106119c25761271083816119b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b60648310611a0b5760648381611a01577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a8310611a1a576001810190505b80915050919050565b828054611a2f906124cc565b90600052602060002090601f016020900481019282611a515760008555611a98565b82601f10611a6a57805160ff1916838001178555611a98565b82800160010185558215611a98579182015b82811115611a97578251825591602001919060010190611a7c565b5b509050611aa59190611aa9565b5090565b5b80821115611ac2576000816000905550600101611aaa565b5090565b6000611ad9611ad484612371565b61234c565b905082815260208101848484011115611af157600080fd5b611afc84828561248a565b509392505050565b6000611b17611b12846123a2565b61234c565b905082815260208101848484011115611b2f57600080fd5b611b3a84828561248a565b509392505050565b600081359050611b51816128ba565b92915050565b600081359050611b66816128d1565b92915050565b600081359050611b7b816128e8565b92915050565b600081519050611b90816128e8565b92915050565b600082601f830112611ba757600080fd5b8135611bb7848260208601611ac6565b91505092915050565b600082601f830112611bd157600080fd5b8135611be1848260208601611b04565b91505092915050565b600081359050611bf9816128ff565b92915050565b600060208284031215611c1157600080fd5b6000611c1f84828501611b42565b91505092915050565b60008060408385031215611c3b57600080fd5b6000611c4985828601611b42565b9250506020611c5a85828601611b42565b9150509250929050565b600080600060608486031215611c7957600080fd5b6000611c8786828701611b42565b9350506020611c9886828701611b42565b9250506040611ca986828701611bea565b9150509250925092565b60008060008060808587031215611cc957600080fd5b6000611cd787828801611b42565b9450506020611ce887828801611b42565b9350506040611cf987828801611bea565b925050606085013567ffffffffffffffff811115611d1657600080fd5b611d2287828801611b96565b91505092959194509250565b60008060408385031215611d4157600080fd5b6000611d4f85828601611b42565b9250506020611d6085828601611b57565b9150509250929050565b60008060408385031215611d7d57600080fd5b6000611d8b85828601611b42565b925050602083013567ffffffffffffffff811115611da857600080fd5b611db485828601611bc0565b9150509250929050565b60008060408385031215611dd157600080fd5b6000611ddf85828601611b42565b9250506020611df085828601611bea565b9150509250929050565b600060208284031215611e0c57600080fd5b6000611e1a84828501611b6c565b91505092915050565b600060208284031215611e3557600080fd5b6000611e4384828501611b81565b91505092915050565b600060208284031215611e5e57600080fd5b6000611e6c84828501611bea565b91505092915050565b611e7e81612416565b82525050565b611e8d81612428565b82525050565b6000611e9e826123d3565b611ea881856123e9565b9350611eb8818560208601612499565b611ec18161258d565b840191505092915050565b6000611ed7826123de565b611ee181856123fa565b9350611ef1818560208601612499565b611efa8161258d565b840191505092915050565b6000611f10826123de565b611f1a818561240b565b9350611f2a818560208601612499565b80840191505092915050565b6000611f43602d836123fa565b9150611f4e8261259e565b604082019050919050565b6000611f666032836123fa565b9150611f71826125ed565b604082019050919050565b6000611f896025836123fa565b9150611f948261263c565b604082019050919050565b6000611fac601c836123fa565b9150611fb78261268b565b602082019050919050565b6000611fcf6024836123fa565b9150611fda826126b4565b604082019050919050565b6000611ff26019836123fa565b9150611ffd82612703565b602082019050919050565b60006120156029836123fa565b91506120208261272c565b604082019050919050565b6000612038602e836123fa565b91506120438261277b565b604082019050919050565b600061205b6020836123fa565b9150612066826127ca565b602082019050919050565b600061207e6018836123fa565b9150612089826127f3565b602082019050919050565b60006120a16021836123fa565b91506120ac8261281c565b604082019050919050565b60006120c4603d836123fa565b91506120cf8261286b565b604082019050919050565b6120e381612480565b82525050565b60006120f58285611f05565b91506121018284611f05565b91508190509392505050565b60006020820190506121226000830184611e75565b92915050565b600060808201905061213d6000830187611e75565b61214a6020830186611e75565b61215760408301856120da565b81810360608301526121698184611e93565b905095945050505050565b60006020820190506121896000830184611e84565b92915050565b600060208201905081810360008301526121a98184611ecc565b905092915050565b600060208201905081810360008301526121ca81611f36565b9050919050565b600060208201905081810360008301526121ea81611f59565b9050919050565b6000602082019050818103600083015261220a81611f7c565b9050919050565b6000602082019050818103600083015261222a81611f9f565b9050919050565b6000602082019050818103600083015261224a81611fc2565b9050919050565b6000602082019050818103600083015261226a81611fe5565b9050919050565b6000602082019050818103600083015261228a81612008565b9050919050565b600060208201905081810360008301526122aa8161202b565b9050919050565b600060208201905081810360008301526122ca8161204e565b9050919050565b600060208201905081810360008301526122ea81612071565b9050919050565b6000602082019050818103600083015261230a81612094565b9050919050565b6000602082019050818103600083015261232a816120b7565b9050919050565b600060208201905061234660008301846120da565b92915050565b6000612356612367565b905061236282826124fe565b919050565b6000604051905090565b600067ffffffffffffffff82111561238c5761238b61255e565b5b6123958261258d565b9050602081019050919050565b600067ffffffffffffffff8211156123bd576123bc61255e565b5b6123c68261258d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061242182612460565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156124b757808201518184015260208101905061249c565b838111156124c6576000848401525b50505050565b600060028204905060018216806124e457607f821691505b602082108114156124f8576124f761252f565b5b50919050565b6125078261258d565b810181811067ffffffffffffffff821117156125265761252561255e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6128c381612416565b81146128ce57600080fd5b50565b6128da81612428565b81146128e557600080fd5b50565b6128f181612434565b81146128fc57600080fd5b50565b61290881612480565b811461291357600080fd5b5056fea2646970667358221220082f54c09ee687c797ca2adda487d63d5a18c693196b276198572ba214b7c3d064736f6c63430008030033", 367 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde1461025b578063c87b56dd14610277578063e985e9c5146102a7578063eacabe14146102d7576100ea565b806370a08231146101f157806395d89b4114610221578063a22cb4651461023f576100ea565b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018957806342842e0e146101a55780636352211e146101c1576100ea565b806301ffc9a7146100ef57806306fdde031461011f578063081812fc1461013d575b600080fd5b61010960048036038101906101049190611dfa565b610307565b6040516101169190612174565b60405180910390f35b6101276103e9565b604051610134919061218f565b60405180910390f35b61015760048036038101906101529190611e4c565b61047b565b604051610164919061210d565b60405180910390f35b61018760048036038101906101829190611dbe565b6104c1565b005b6101a3600480360381019061019e9190611c64565b6105d9565b005b6101bf60048036038101906101ba9190611c64565b610639565b005b6101db60048036038101906101d69190611e4c565b610659565b6040516101e8919061210d565b60405180910390f35b61020b60048036038101906102069190611bff565b6106e0565b6040516102189190612331565b60405180910390f35b610229610798565b604051610236919061218f565b60405180910390f35b61025960048036038101906102549190611d2e565b61082a565b005b61027560048036038101906102709190611cb3565b610840565b005b610291600480360381019061028c9190611e4c565b6108a2565b60405161029e919061218f565b60405180910390f35b6102c160048036038101906102bc9190611c28565b6109b5565b6040516102ce9190612174565b60405180910390f35b6102f160048036038101906102ec9190611d6a565b610a49565b6040516102fe9190612331565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103d257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103e257506103e182610a81565b5b9050919050565b6060600080546103f8906124cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610424906124cc565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b600061048682610aeb565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104cc82610659565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906122f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661055c610b36565b73ffffffffffffffffffffffffffffffffffffffff16148061058b575061058a81610585610b36565b6109b5565b5b6105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c190612311565b60405180910390fd5b6105d48383610b3e565b505050565b6105ea6105e4610b36565b82610bf7565b610629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610620906121b1565b60405180910390fd5b610634838383610c8c565b505050565b61065483838360405180602001604052806000815250610840565b505050565b60008061066583610f86565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906122d1565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074890612271565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107a7906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906124cc565b80156108205780601f106107f557610100808354040283529160200191610820565b820191906000526020600020905b81548152906001019060200180831161080357829003601f168201915b5050505050905090565b61083c610835610b36565b8383610fc3565b5050565b61085161084b610b36565b83610bf7565b610890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610887906121b1565b60405180910390fd5b61089c84848484611130565b50505050565b60606108ad82610aeb565b60006006600084815260200190815260200160002080546108cd906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546108f9906124cc565b80156109465780601f1061091b57610100808354040283529160200191610946565b820191906000526020600020905b81548152906001019060200180831161092957829003601f168201915b50505050509050600061095761118c565b905060008151141561096d5781925050506109b0565b6000825111156109a257808260405160200161098a9291906120e9565b604051602081830303815290604052925050506109b0565b6109ab846111a3565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610a55600761120b565b6000610a616007611221565b9050610a6d848261122f565b610a77818461144d565b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610af4816114c1565b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a906122d1565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610bb183610659565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c0383610659565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c455750610c4481856109b5565b5b80610c8357508373ffffffffffffffffffffffffffffffffffffffff16610c6b8461047b565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610cac82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906121f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990612231565b60405180910390fd5b610d7f8383836001611502565b8273ffffffffffffffffffffffffffffffffffffffff16610d9f82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906121f1565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f818383836001611508565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612251565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111239190612174565b60405180910390a3505050565b61113b848484610c8c565b6111478484848461150e565b611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d906121d1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606111ae82610aeb565b60006111b861118c565b905060008151116111d85760405180602001604052806000815250611203565b806111e2846116a5565b6040516020016111f39291906120e9565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906122b1565b60405180910390fd5b6112a8816114c1565b156112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df90612211565b60405180910390fd5b6112f6600083836001611502565b6112ff816114c1565b1561133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612211565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611449600083836001611508565b5050565b611456826114c1565b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90612291565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906114bc929190611a23565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166114e383610f86565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b600061152f8473ffffffffffffffffffffffffffffffffffffffff166117c9565b15611698578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611558610b36565b8786866040518563ffffffff1660e01b815260040161157a9493929190612128565b602060405180830381600087803b15801561159457600080fd5b505af19250505080156115c557506040513d601f19601f820116820180604052508101906115c29190611e23565b60015b611648573d80600081146115f5576040519150601f19603f3d011682016040523d82523d6000602084013e6115fa565b606091505b50600081511415611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906121d1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061169d565b600190505b949350505050565b6060600060016116b4846117ec565b01905060008167ffffffffffffffff8111156116f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561172b5781602001600182028036833780820191505090505b509050600082602001820190505b6001156117be578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816117a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b04945060008514156117b9576117be565b611739565b819350505050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611870577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611866577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef810000000083106118d3576d04ee2d6d415b85acef810000000083816118c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc10000831061192857662386f26fc10000838161191e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e1008310611977576305f5e100838161196d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b61271083106119c25761271083816119b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b60648310611a0b5760648381611a01577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a8310611a1a576001810190505b80915050919050565b828054611a2f906124cc565b90600052602060002090601f016020900481019282611a515760008555611a98565b82601f10611a6a57805160ff1916838001178555611a98565b82800160010185558215611a98579182015b82811115611a97578251825591602001919060010190611a7c565b5b509050611aa59190611aa9565b5090565b5b80821115611ac2576000816000905550600101611aaa565b5090565b6000611ad9611ad484612371565b61234c565b905082815260208101848484011115611af157600080fd5b611afc84828561248a565b509392505050565b6000611b17611b12846123a2565b61234c565b905082815260208101848484011115611b2f57600080fd5b611b3a84828561248a565b509392505050565b600081359050611b51816128ba565b92915050565b600081359050611b66816128d1565b92915050565b600081359050611b7b816128e8565b92915050565b600081519050611b90816128e8565b92915050565b600082601f830112611ba757600080fd5b8135611bb7848260208601611ac6565b91505092915050565b600082601f830112611bd157600080fd5b8135611be1848260208601611b04565b91505092915050565b600081359050611bf9816128ff565b92915050565b600060208284031215611c1157600080fd5b6000611c1f84828501611b42565b91505092915050565b60008060408385031215611c3b57600080fd5b6000611c4985828601611b42565b9250506020611c5a85828601611b42565b9150509250929050565b600080600060608486031215611c7957600080fd5b6000611c8786828701611b42565b9350506020611c9886828701611b42565b9250506040611ca986828701611bea565b9150509250925092565b60008060008060808587031215611cc957600080fd5b6000611cd787828801611b42565b9450506020611ce887828801611b42565b9350506040611cf987828801611bea565b925050606085013567ffffffffffffffff811115611d1657600080fd5b611d2287828801611b96565b91505092959194509250565b60008060408385031215611d4157600080fd5b6000611d4f85828601611b42565b9250506020611d6085828601611b57565b9150509250929050565b60008060408385031215611d7d57600080fd5b6000611d8b85828601611b42565b925050602083013567ffffffffffffffff811115611da857600080fd5b611db485828601611bc0565b9150509250929050565b60008060408385031215611dd157600080fd5b6000611ddf85828601611b42565b9250506020611df085828601611bea565b9150509250929050565b600060208284031215611e0c57600080fd5b6000611e1a84828501611b6c565b91505092915050565b600060208284031215611e3557600080fd5b6000611e4384828501611b81565b91505092915050565b600060208284031215611e5e57600080fd5b6000611e6c84828501611bea565b91505092915050565b611e7e81612416565b82525050565b611e8d81612428565b82525050565b6000611e9e826123d3565b611ea881856123e9565b9350611eb8818560208601612499565b611ec18161258d565b840191505092915050565b6000611ed7826123de565b611ee181856123fa565b9350611ef1818560208601612499565b611efa8161258d565b840191505092915050565b6000611f10826123de565b611f1a818561240b565b9350611f2a818560208601612499565b80840191505092915050565b6000611f43602d836123fa565b9150611f4e8261259e565b604082019050919050565b6000611f666032836123fa565b9150611f71826125ed565b604082019050919050565b6000611f896025836123fa565b9150611f948261263c565b604082019050919050565b6000611fac601c836123fa565b9150611fb78261268b565b602082019050919050565b6000611fcf6024836123fa565b9150611fda826126b4565b604082019050919050565b6000611ff26019836123fa565b9150611ffd82612703565b602082019050919050565b60006120156029836123fa565b91506120208261272c565b604082019050919050565b6000612038602e836123fa565b91506120438261277b565b604082019050919050565b600061205b6020836123fa565b9150612066826127ca565b602082019050919050565b600061207e6018836123fa565b9150612089826127f3565b602082019050919050565b60006120a16021836123fa565b91506120ac8261281c565b604082019050919050565b60006120c4603d836123fa565b91506120cf8261286b565b604082019050919050565b6120e381612480565b82525050565b60006120f58285611f05565b91506121018284611f05565b91508190509392505050565b60006020820190506121226000830184611e75565b92915050565b600060808201905061213d6000830187611e75565b61214a6020830186611e75565b61215760408301856120da565b81810360608301526121698184611e93565b905095945050505050565b60006020820190506121896000830184611e84565b92915050565b600060208201905081810360008301526121a98184611ecc565b905092915050565b600060208201905081810360008301526121ca81611f36565b9050919050565b600060208201905081810360008301526121ea81611f59565b9050919050565b6000602082019050818103600083015261220a81611f7c565b9050919050565b6000602082019050818103600083015261222a81611f9f565b9050919050565b6000602082019050818103600083015261224a81611fc2565b9050919050565b6000602082019050818103600083015261226a81611fe5565b9050919050565b6000602082019050818103600083015261228a81612008565b9050919050565b600060208201905081810360008301526122aa8161202b565b9050919050565b600060208201905081810360008301526122ca8161204e565b9050919050565b600060208201905081810360008301526122ea81612071565b9050919050565b6000602082019050818103600083015261230a81612094565b9050919050565b6000602082019050818103600083015261232a816120b7565b9050919050565b600060208201905061234660008301846120da565b92915050565b6000612356612367565b905061236282826124fe565b919050565b6000604051905090565b600067ffffffffffffffff82111561238c5761238b61255e565b5b6123958261258d565b9050602081019050919050565b600067ffffffffffffffff8211156123bd576123bc61255e565b5b6123c68261258d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061242182612460565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156124b757808201518184015260208101905061249c565b838111156124c6576000848401525b50505050565b600060028204905060018216806124e457607f821691505b602082108114156124f8576124f761252f565b5b50919050565b6125078261258d565b810181811067ffffffffffffffff821117156125265761252561255e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6128c381612416565b81146128ce57600080fd5b50565b6128da81612428565b81146128e557600080fd5b50565b6128f181612434565b81146128fc57600080fd5b50565b61290881612480565b811461291357600080fd5b5056fea2646970667358221220082f54c09ee687c797ca2adda487d63d5a18c693196b276198572ba214b7c3d064736f6c63430008030033", 368 | "linkReferences": {}, 369 | "deployedLinkReferences": {} 370 | } 371 | --------------------------------------------------------------------------------