bridge_ui: routes, nav, bg

Change-Id: I0e4509abfb720dc6e6ee0bf31b244ea36465837d
This commit is contained in:
Evan Gray 2021-08-15 15:06:06 -04:00
parent 6875559d4c
commit f04c9e5d45
8 changed files with 361 additions and 35 deletions

View File

@ -11,6 +11,7 @@
"dependencies": {
"@improbable-eng/grpc-web": "^0.13.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.11.2",
"@metamask/detect-provider": "^1.2.0",
"@project-serum/sol-wallet-adapter": "^0.2.5",
"@reduxjs/toolkit": "^1.6.1",
@ -20,10 +21,10 @@
"@typechain/ethers-v5": "^7.0.1",
"bridge": "file:rust_modules\\core",
"ethers": "^5.4.1",
"prettier": "^2.3.2",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-redux": "^7.2.4",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
"redux": "^3.7.2",
"token-bridge": "file:rust_modules\\token"
@ -33,6 +34,7 @@
"@openzeppelin/contracts": "^4.2.0",
"@truffle/hdwallet-provider": "^1.4.1",
"copy-dir": "^1.3.0",
"prettier": "^2.3.2",
"truffle": "^5.4.1",
"wasm-loader": "^1.3.0"
}
@ -4853,6 +4855,28 @@
}
}
},
"node_modules/@material-ui/icons": {
"version": "4.11.2",
"resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz",
"integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==",
"dependencies": {
"@babel/runtime": "^7.4.4"
},
"engines": {
"node": ">=8.0.0"
},
"peerDependencies": {
"@material-ui/core": "^4.0.0",
"@types/react": "^16.8.6 || ^17.0.0",
"react": "^16.8.0 || ^17.0.0",
"react-dom": "^16.8.0 || ^17.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/@material-ui/styles": {
"version": "4.11.4",
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz",
@ -18006,6 +18030,19 @@
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
},
"node_modules/history": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
"integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
"dependencies": {
"@babel/runtime": "^7.1.2",
"loose-envify": "^1.2.0",
"resolve-pathname": "^3.0.0",
"tiny-invariant": "^1.0.2",
"tiny-warning": "^1.0.0",
"value-equal": "^1.0.1"
}
},
"node_modules/hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@ -24225,6 +24262,19 @@
"dom-walk": "^0.1.0"
}
},
"node_modules/mini-create-react-context": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
"integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
"dependencies": {
"@babel/runtime": "^7.12.1",
"tiny-warning": "^1.0.3"
},
"peerDependencies": {
"prop-types": "^15.0.0",
"react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
"node_modules/mini-css-extract-plugin": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz",
@ -30199,6 +30249,61 @@
"node": ">=0.10.0"
}
},
"node_modules/react-router": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz",
"integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==",
"dependencies": {
"@babel/runtime": "^7.1.2",
"history": "^4.9.0",
"hoist-non-react-statics": "^3.1.0",
"loose-envify": "^1.3.1",
"mini-create-react-context": "^0.4.0",
"path-to-regexp": "^1.7.0",
"prop-types": "^15.6.2",
"react-is": "^16.6.0",
"tiny-invariant": "^1.0.2",
"tiny-warning": "^1.0.0"
},
"peerDependencies": {
"react": ">=15"
}
},
"node_modules/react-router-dom": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz",
"integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==",
"dependencies": {
"@babel/runtime": "^7.1.2",
"history": "^4.9.0",
"loose-envify": "^1.3.1",
"prop-types": "^15.6.2",
"react-router": "5.2.0",
"tiny-invariant": "^1.0.2",
"tiny-warning": "^1.0.0"
},
"peerDependencies": {
"react": ">=15"
}
},
"node_modules/react-router/node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"node_modules/react-router/node_modules/path-to-regexp": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dependencies": {
"isarray": "0.0.1"
}
},
"node_modules/react-router/node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/react-scripts": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.3.tgz",
@ -31101,6 +31206,11 @@
"node": ">=8"
}
},
"node_modules/resolve-pathname": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
"integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
},
"node_modules/resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@ -35576,6 +35686,11 @@
"spdx-expression-parse": "^3.0.0"
}
},
"node_modules/value-equal": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
"integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
},
"node_modules/value-or-promise": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz",
@ -35735,6 +35850,7 @@
"resolved": "https://registry.npmjs.org/wasm-dce/-/wasm-dce-1.0.2.tgz",
"integrity": "sha512-Fq1+nu43ybsjSnBquLrW/cULmKs61qbv9k8ep13QUe0nABBezMoNAA+j6QY66MW0/eoDVDp1rjXDqQ2VKyS/Xg==",
"dev": true,
"peer": true,
"dependencies": {
"@babel/core": "^7.0.0-beta.39",
"@babel/traverse": "^7.0.0-beta.39",
@ -35748,6 +35864,7 @@
"resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz",
"integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==",
"dev": true,
"peer": true,
"bin": {
"babylon": "bin/babylon.js"
},
@ -36583,6 +36700,7 @@
"resolved": "https://registry.npmjs.org/webassembly-floating-point-hex-parser/-/webassembly-floating-point-hex-parser-0.1.2.tgz",
"integrity": "sha512-TUf1H++8U10+stJbFydnvrpG5Sznz5Rilez/oZlV5zI0C/e4cSxd8rALAJ8VpTvjVWxLmL3SVSJUK6Ap9AoiNg==",
"dev": true,
"peer": true,
"engines": {
"node": "*"
}
@ -36592,6 +36710,7 @@
"resolved": "https://registry.npmjs.org/webassembly-interpreter/-/webassembly-interpreter-0.0.30.tgz",
"integrity": "sha512-+Jdy2piEvz9T5j751mOE8+rBO12p+nNW6Fg4kJZ+zP1oUfsm+151sbAbM8AFxWTURmWCGP+r8Lxwfv3pzN1bCQ==",
"dev": true,
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.0.0-beta.36",
"long": "^3.2.0",
@ -36611,6 +36730,7 @@
"resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
"integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=",
"dev": true,
"peer": true,
"engines": {
"node": ">=0.6"
}
@ -42221,6 +42341,14 @@
"react-transition-group": "^4.4.0"
}
},
"@material-ui/icons": {
"version": "4.11.2",
"resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz",
"integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==",
"requires": {
"@babel/runtime": "^7.4.4"
}
},
"@material-ui/styles": {
"version": "4.11.4",
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz",
@ -46625,7 +46753,6 @@
"dev": true,
"optional": true,
"requires": {
"bitcore-lib": "^8.25.10",
"unorm": "^1.4.1"
}
},
@ -53059,6 +53186,19 @@
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
},
"history": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
"integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
"requires": {
"@babel/runtime": "^7.1.2",
"loose-envify": "^1.2.0",
"resolve-pathname": "^3.0.0",
"tiny-invariant": "^1.0.2",
"tiny-warning": "^1.0.0",
"value-equal": "^1.0.1"
}
},
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@ -58018,6 +58158,15 @@
"dom-walk": "^0.1.0"
}
},
"mini-create-react-context": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
"integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
"requires": {
"@babel/runtime": "^7.12.1",
"tiny-warning": "^1.0.3"
}
},
"mini-css-extract-plugin": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz",
@ -62912,6 +63061,57 @@
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
"integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
},
"react-router": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz",
"integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==",
"requires": {
"@babel/runtime": "^7.1.2",
"history": "^4.9.0",
"hoist-non-react-statics": "^3.1.0",
"loose-envify": "^1.3.1",
"mini-create-react-context": "^0.4.0",
"path-to-regexp": "^1.7.0",
"prop-types": "^15.6.2",
"react-is": "^16.6.0",
"tiny-invariant": "^1.0.2",
"tiny-warning": "^1.0.0"
},
"dependencies": {
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"path-to-regexp": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"requires": {
"isarray": "0.0.1"
}
},
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
}
}
},
"react-router-dom": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz",
"integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==",
"requires": {
"@babel/runtime": "^7.1.2",
"history": "^4.9.0",
"loose-envify": "^1.3.1",
"prop-types": "^15.6.2",
"react-router": "5.2.0",
"tiny-invariant": "^1.0.2",
"tiny-warning": "^1.0.0"
}
},
"react-scripts": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.3.tgz",
@ -63648,6 +63848,11 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
},
"resolve-pathname": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
"integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
},
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@ -67283,6 +67488,11 @@
"spdx-expression-parse": "^3.0.0"
}
},
"value-equal": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
"integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
},
"value-or-promise": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz",
@ -67419,6 +67629,7 @@
"resolved": "https://registry.npmjs.org/wasm-dce/-/wasm-dce-1.0.2.tgz",
"integrity": "sha512-Fq1+nu43ybsjSnBquLrW/cULmKs61qbv9k8ep13QUe0nABBezMoNAA+j6QY66MW0/eoDVDp1rjXDqQ2VKyS/Xg==",
"dev": true,
"peer": true,
"requires": {
"@babel/core": "^7.0.0-beta.39",
"@babel/traverse": "^7.0.0-beta.39",
@ -67431,7 +67642,8 @@
"version": "7.0.0-beta.47",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz",
"integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==",
"dev": true
"dev": true,
"peer": true
}
}
},
@ -67441,8 +67653,7 @@
"integrity": "sha512-R4s75XH+o8qM+WaRrAU9S2rbAMDzob18/S3V8R9ZoFpZkPWLAohWWlzWAp1ybeTkOuuku/X1zJtxiV0pBYxZww==",
"dev": true,
"requires": {
"loader-utils": "^1.1.0",
"wasm-dce": "^1.0.0"
"loader-utils": "^1.1.0"
},
"dependencies": {
"json5": {
@ -68164,13 +68375,15 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/webassembly-floating-point-hex-parser/-/webassembly-floating-point-hex-parser-0.1.2.tgz",
"integrity": "sha512-TUf1H++8U10+stJbFydnvrpG5Sznz5Rilez/oZlV5zI0C/e4cSxd8rALAJ8VpTvjVWxLmL3SVSJUK6Ap9AoiNg==",
"dev": true
"dev": true,
"peer": true
},
"webassembly-interpreter": {
"version": "0.0.30",
"resolved": "https://registry.npmjs.org/webassembly-interpreter/-/webassembly-interpreter-0.0.30.tgz",
"integrity": "sha512-+Jdy2piEvz9T5j751mOE8+rBO12p+nNW6Fg4kJZ+zP1oUfsm+151sbAbM8AFxWTURmWCGP+r8Lxwfv3pzN1bCQ==",
"dev": true,
"peer": true,
"requires": {
"@babel/code-frame": "^7.0.0-beta.36",
"long": "^3.2.0",
@ -68181,7 +68394,8 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
"integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=",
"dev": true
"dev": true,
"peer": true
}
}
},

View File

@ -5,6 +5,7 @@
"dependencies": {
"@improbable-eng/grpc-web": "^0.13.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.11.2",
"@metamask/detect-provider": "^1.2.0",
"@project-serum/sol-wallet-adapter": "^0.2.5",
"@reduxjs/toolkit": "^1.6.1",
@ -17,6 +18,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-redux": "^7.2.4",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
"redux": "^3.7.2",
"token-bridge": "file:rust_modules\\token"
@ -52,8 +54,8 @@
"@openzeppelin/contracts": "^4.2.0",
"@truffle/hdwallet-provider": "^1.4.1",
"copy-dir": "^1.3.0",
"prettier": "^2.3.2",
"truffle": "^5.4.1",
"wasm-loader": "^1.3.0",
"prettier": "^2.3.2"
"wasm-loader": "^1.3.0"
}
}

View File

@ -1,13 +1,23 @@
import { AppBar, makeStyles, Toolbar } from "@material-ui/core";
import {
AppBar,
Hidden,
IconButton,
Link,
makeStyles,
Toolbar,
} from "@material-ui/core";
import { GitHub, Publish, Send } from "@material-ui/icons";
import { NavLink, Redirect, Route, Switch } from "react-router-dom";
import Attest from "./components/Attest";
import Transfer from "./components/Transfer";
import wormholeLogo from "./icons/wormhole.svg";
const useStyles = makeStyles((theme) => ({
appBar: {
borderBottom: `.5px solid ${theme.palette.divider}`,
borderBottom: `1px solid ${theme.palette.divider}`,
"& > .MuiToolbar-root": {
margin: "auto",
height: 69,
width: "100%",
maxWidth: 1100,
},
@ -17,8 +27,15 @@ const useStyles = makeStyles((theme) => ({
width: "100vw",
},
link: {
...theme.typography.body1,
color: theme.palette.text.primary,
marginLeft: theme.spacing(6),
[theme.breakpoints.down("xs")]: {
marginLeft: theme.spacing(2),
},
"&.active": {
color: theme.palette.secondary.light,
},
},
content: {
[theme.breakpoints.up("sm")]: {
@ -36,13 +53,58 @@ function App() {
<>
<AppBar position="static" color="inherit" className={classes.appBar}>
<Toolbar>
<img src={wormholeLogo} alt="Wormhole Logo" />
<img src={wormholeLogo} alt="Wormhole Logo" style={{ height: 45 }} />
<div className={classes.spacer} />
<Hidden implementation="css" xsDown>
<div style={{ display: "flex", alignItems: "center" }}>
<Link component={NavLink} to="/transfer" className={classes.link}>
Transfer
</Link>
<Link component={NavLink} to="/attest" className={classes.link}>
Attest
</Link>
<IconButton
href="https://github.com/certusone/wormhole"
target="_blank"
size="small"
className={classes.link}
>
<GitHub />
</IconButton>
</div>
</Hidden>
<Hidden implementation="css" smUp>
<IconButton
component={NavLink}
to="/transfer"
size="small"
className={classes.link}
>
<Send />
</IconButton>
<IconButton
component={NavLink}
to="/attest"
size="small"
className={classes.link}
>
<Publish />
</IconButton>
</Hidden>
</Toolbar>
</AppBar>
<div className={classes.content}>
<Attest />
<Transfer />
<Switch>
<Route exact path="/transfer">
<Transfer />
</Route>
<Route exact path="/attest">
<Attest />
</Route>
<Route>
<Redirect to="/transfer" />
</Route>
</Switch>
</div>
</>
);

View File

@ -0,0 +1,32 @@
import { makeStyles } from "@material-ui/core";
import hole from "../images/hole.svg";
const useStyles = makeStyles((theme) => ({
root: {
position: "fixed",
top: 0,
right: 0,
bottom: 0,
left: 0,
background: `radial-gradient(100% 100% at 100% 125%,${theme.palette.secondary.dark} 0,rgba(255,255,255,0) 100%)`,
},
hole: {
position: "fixed",
bottom: 0,
right: 0,
opacity: 0.3,
filter: "blur(1px)",
},
}));
const RadialGradient = () => {
const classes = useStyles();
return (
<>
<img src={hole} alt="" className={classes.hole} />
<div className={classes.root} />
</>
);
};
export default RadialGradient;

View File

@ -1,20 +1,16 @@
<svg width="178" height="33" viewBox="0 0 178 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M48.5187 22.3901H47.9445L44.817 9.57212H41.0327L38.3514 22.3901H37.7772L34.1085 9.047H31.4272L35.823 24.6022H36.4634H37.8887H38.3845H39.6941H40.1899L42.929 11.6685L46.0977 24.6022H46.6803H47.9899H48.4857H49.911H50.4357L54.2448 9.047H51.7123L48.5187 22.3901Z" fill="white"/>
<path d="M71.0428 11.0442C70.3028 10.2612 69.4117 9.63658 68.4235 9.20832C67.3095 8.73612 66.1091 8.50236 64.8994 8.52198C63.691 8.50159 62.4918 8.73539 61.3795 9.20832C60.3901 9.63454 59.4987 10.2594 58.7602 11.0442C58.0515 11.7928 57.497 12.6738 57.1283 13.6368C56.7649 14.57 56.5772 15.5625 56.5747 16.5642V17.0893C56.5793 18.0785 56.7612 19.0588 57.1118 19.9837C57.4743 20.9382 58.0187 21.8131 58.7148 22.5597C59.4496 23.3473 60.3364 23.9775 61.3217 24.4121C62.4509 24.8975 63.6707 25.1358 64.8994 25.1109C66.1294 25.1347 67.3504 24.8965 68.4813 24.4121C69.4641 23.9753 70.3492 23.3454 71.0841 22.5597C71.7802 21.8139 72.3234 20.9387 72.6829 19.9837C73.0369 19.0596 73.2203 18.0789 73.2241 17.0893V16.5642C73.2217 15.5625 73.034 14.57 72.6705 13.6368C72.3022 12.6745 71.7492 11.7938 71.0428 11.0442ZM69.7744 19.7687C69.3501 20.6219 68.6944 21.3383 67.8823 21.8361C66.9818 22.3726 65.947 22.6409 64.8994 22.6093C63.8518 22.6413 62.8169 22.3731 61.9166 21.8361C61.1045 21.3383 60.4488 20.6219 60.0244 19.7687C59.5774 18.8526 59.3523 17.844 59.3675 16.8247C59.3493 15.7939 59.5804 14.774 60.0409 13.8518C60.4697 12.9937 61.1349 12.2763 61.9579 11.7844C62.8498 11.2651 63.8679 11.0031 64.8994 11.0277C65.9353 10.9995 66.9584 11.2616 67.8534 11.7844C68.6699 12.2805 69.33 12.9971 69.7579 13.8518C70.2185 14.774 70.4495 15.7939 70.4313 16.8247C70.4465 17.844 70.2215 18.8526 69.7744 19.7687Z" fill="white"/>
<path d="M81.0079 10.4612C80.2202 11.3802 79.7379 12.5218 79.628 13.7277V9.04708H77.4136V24.6023H80.2105V16.1837C80.2105 14.629 80.6237 13.4424 81.4499 12.6154C82.2762 11.7885 83.4784 11.375 85.0318 11.375H86.0234V8.86926H85.4987C83.5046 8.87202 82.0077 9.40264 81.0079 10.4612Z" fill="white"/>
<path d="M109.981 9.42741C109.073 8.84226 108.007 8.55333 106.928 8.60045H106.812C105.736 8.55203 104.672 8.84114 103.768 9.42741C102.929 10.0346 102.295 10.8825 101.95 11.8587C101.875 12.0489 101.818 12.2722 101.756 12.4665C101.698 12.2598 101.64 12.053 101.57 11.8587C101.242 10.881 100.616 10.0308 99.7808 9.42741C98.8782 8.8412 97.8151 8.55207 96.7401 8.60045H96.6245C95.5533 8.55076 94.4937 8.84011 93.5962 9.42741C92.7653 10.0355 92.1409 10.8841 91.8073 11.8587C91.7099 12.1185 91.6272 12.3835 91.5594 12.6526V9.04704H89.3491V24.6022H92.1626V15.2823C92.1626 13.9799 92.5096 12.9668 93.212 12.2391C93.5704 11.8731 94.0017 11.5865 94.4777 11.3978C94.9538 11.209 95.4642 11.1224 95.9758 11.1434C96.4571 11.1169 96.9383 11.196 97.3858 11.3753C97.8333 11.5546 98.2362 11.8296 98.5662 12.1812C99.1859 12.8676 99.4958 13.8434 99.4958 15.1087V24.6187H102.293V15.2989C102.293 13.995 102.641 12.9806 103.338 12.2556C103.696 11.8896 104.128 11.6031 104.604 11.4143C105.08 11.2256 105.59 11.1389 106.102 11.1599C106.583 11.1334 107.064 11.2126 107.512 11.3919C107.959 11.5711 108.362 11.8462 108.692 12.1978C109.317 12.8842 109.629 13.86 109.626 15.1252V24.6353H112.406V15.7496C112.439 14.4385 112.237 13.1321 111.811 11.8918C111.475 10.8981 110.835 10.0358 109.981 9.42741Z" fill="white"/>
<path d="M125.379 8.5839H125.263C124.127 8.53453 123.005 8.85038 122.061 9.48527C121.266 10.0813 120.66 10.8937 120.314 11.8256V3.33679H117.521V24.6022H120.314V15.6296C120.26 14.4444 120.661 13.2834 121.433 12.3838C121.81 11.972 122.273 11.6477 122.788 11.4334C123.303 11.2191 123.859 11.1202 124.416 11.1433C124.922 11.1233 125.427 11.2061 125.899 11.3866C126.372 11.5671 126.804 11.8416 127.168 12.1936C127.536 12.5849 127.82 13.0477 128.003 13.5534C128.186 14.059 128.263 14.5968 128.229 15.1334V24.6022H131.026V15.7165C131.026 13.4258 130.55 11.6643 129.597 10.4322C128.644 9.19998 127.238 8.5839 125.379 8.5839Z" fill="white"/>
<path d="M149.448 11.0441C148.709 10.2602 147.818 9.6355 146.829 9.20825C145.717 8.73532 144.517 8.50152 143.309 8.52191C142.099 8.50106 140.899 8.73487 139.785 9.20825C138.796 9.6355 137.905 10.2602 137.166 11.0441C136.458 11.7926 135.905 12.6737 135.538 13.6367C135.172 14.5694 134.985 15.5623 134.984 16.5641V17.0892C134.987 18.0786 135.169 19.0593 135.521 19.9836C135.882 20.9389 136.427 21.8141 137.124 22.5596C137.858 23.3471 138.743 23.9773 139.727 24.412C140.858 24.8965 142.079 25.1347 143.309 25.1108C144.538 25.1348 145.757 24.8966 146.887 24.412C147.872 23.9764 148.758 23.3464 149.494 22.5596C150.189 21.813 150.732 20.9381 151.093 19.9836C151.445 19.0593 151.627 18.0786 151.63 17.0892V16.5641C151.629 15.5627 151.442 14.5702 151.08 13.6367C150.71 12.6743 150.156 11.7935 149.448 11.0441ZM148.184 19.7686C147.758 20.6209 147.103 21.3371 146.292 21.836C145.391 22.3719 144.357 22.6401 143.309 22.6092C142.261 22.6413 141.227 22.373 140.326 21.836C139.513 21.3393 138.857 20.6226 138.434 19.7686C137.987 18.8526 137.762 17.844 137.777 16.8246C137.76 15.7943 137.989 14.7749 138.446 13.8517C138.878 12.9943 139.544 12.2773 140.368 11.7843C141.259 11.2646 142.278 11.0026 143.309 11.0276C144.345 10.9994 145.368 11.2615 146.263 11.7843C147.079 12.2816 147.738 12.9979 148.168 13.8517C148.625 14.7749 148.854 15.7943 148.837 16.8246C148.851 17.8434 148.628 18.8516 148.184 19.7686Z" fill="white"/>
<path d="M153.844 3.34094V5.55307H155.996V24.6022H158.789V5.55307V3.34094H155.996H153.844Z" fill="white"/>
<path d="M178 16.0969C178.008 14.8286 177.735 13.5744 177.198 12.4252C176.663 11.2781 175.817 10.3041 174.757 9.61351C173.503 8.84431 172.05 8.46443 170.58 8.52192C169.412 8.49533 168.254 8.72978 167.188 9.20826C166.269 9.63187 165.458 10.2598 164.817 11.0441C164.196 11.8069 163.726 12.6812 163.433 13.6201C163.132 14.5723 162.98 15.5654 162.982 16.5641V17.0893C162.983 18.0715 163.135 19.0477 163.433 19.9836C163.726 20.9226 164.196 21.7969 164.817 22.5596C165.47 23.354 166.297 23.9878 167.234 24.412C168.341 24.9012 169.543 25.1399 170.754 25.1108C171.885 25.1319 173.009 24.9238 174.059 24.4989C174.998 24.1132 175.827 23.5027 176.475 22.7209C177.127 21.9206 177.567 20.9695 177.756 19.9547H175.137C174.934 20.7396 174.439 21.4172 173.753 21.8484C172.869 22.4291 171.826 22.7183 170.77 22.6754C169.75 22.7199 168.74 22.45 167.878 21.9022C167.127 21.3881 166.55 20.6567 166.226 19.8058C165.914 19.0139 165.738 18.1752 165.705 17.3249H178.025L178 16.0969ZM167.829 11.7264C168.646 11.196 169.607 10.9316 170.58 10.9697C171.509 10.9335 172.428 11.1661 173.228 11.6395C173.931 12.0916 174.479 12.7482 174.798 13.5209C175.029 14.074 175.179 14.6575 175.244 15.2534H165.788C165.872 14.7532 166.01 14.2638 166.201 13.7938C166.528 12.9592 167.094 12.2399 167.829 11.7264Z" fill="white"/>
<path d="M11.4106 16.4979C11.4209 11.3373 9.41314 6.37758 5.81677 2.6794C5.68541 2.54747 5.5071 2.47311 5.321 2.47266H0.702138C0.519155 2.47266 0.343676 2.54541 0.214287 2.67491C0.0848984 2.8044 0.012207 2.98 0.012207 3.16314V7.91404C0.0128761 8.08995 0.0801841 8.25908 0.20057 8.38724C0.320955 8.5154 0.485455 8.59306 0.660835 8.60458C2.64046 8.76756 4.48639 9.66985 5.83195 11.1322C7.17751 12.5946 7.92422 14.51 7.92376 16.4979C7.92422 18.4859 7.17751 20.4014 5.83195 21.8637C4.48639 23.3261 2.64046 24.2284 0.660835 24.3913C0.485802 24.4038 0.321872 24.4817 0.201679 24.6097C0.0814862 24.7376 0.0138413 24.9062 0.012207 25.0818V29.8534C0.012207 29.9441 0.030059 30.0339 0.0647317 30.1177C0.0994043 30.2014 0.15022 30.2776 0.214287 30.3417C0.278354 30.4058 0.354396 30.4567 0.438103 30.4914C0.52181 30.5261 0.611534 30.544 0.702138 30.544H5.321C5.5071 30.5435 5.68541 30.4691 5.81677 30.3372C9.4189 26.6344 11.4272 21.6659 11.4106 16.4979Z" fill="#FD3503"/>
<path d="M28.0271 25.0818C28.0254 24.9062 27.9578 24.7376 27.8376 24.6097C27.7174 24.4817 27.5535 24.4038 27.3784 24.3913C25.3992 24.2274 23.5538 23.3249 22.2084 21.8627C20.863 20.4006 20.116 18.4856 20.1155 16.4979C20.116 14.5102 20.863 12.5954 22.2084 11.1332C23.5538 9.67107 25.3992 8.76849 27.3784 8.60458C27.5538 8.59306 27.7183 8.5154 27.8387 8.38724C27.9591 8.25908 28.0264 8.08995 28.0271 7.91404V3.16314C28.0271 2.98 27.9544 2.8044 27.825 2.67491C27.6956 2.54541 27.5201 2.47266 27.3371 2.47266H22.7182C22.5322 2.47311 22.3539 2.54747 22.2225 2.6794C18.6216 6.37559 16.6093 11.3356 16.6162 16.4979C16.6084 21.6605 18.6209 26.6208 22.2225 30.3165C22.3539 30.4485 22.5322 30.5228 22.7182 30.5233H27.3371C27.5201 30.5233 27.6956 30.4505 27.825 30.321C27.9544 30.1915 28.0271 30.0159 28.0271 29.8327V25.0818Z" fill="#0074FF"/>
<path d="M10.4898 0C10.3629 0.000640413 10.2382 0.0321867 10.1263 0.0919129C10.0144 0.151639 9.91871 0.237725 9.84752 0.342768C9.77633 0.447811 9.73178 0.568628 9.71771 0.694773C9.70364 0.820918 9.72048 0.948599 9.76678 1.06677C11.6862 5.98497 12.6739 11.2178 12.6794 16.4979C12.6738 21.7793 11.6862 27.0135 9.76678 31.9332C9.72048 32.0514 9.70364 32.1791 9.71771 32.3052C9.73178 32.4313 9.77633 32.5522 9.84752 32.6572C9.91871 32.7622 10.0144 32.8483 10.1263 32.9081C10.2382 32.9678 10.3629 32.9993 10.4898 33H17.5131C17.6399 32.9996 17.7647 32.9683 17.8766 32.9085C17.9885 32.8488 18.0841 32.7625 18.155 32.6573C18.226 32.5521 18.27 32.431 18.2834 32.3048C18.2968 32.1786 18.2792 32.051 18.2319 31.9332C16.3196 27.0122 15.339 21.778 15.34 16.4979C15.3389 11.2191 16.3196 5.98632 18.2319 1.06677C18.2792 0.94896 18.2968 0.821348 18.2834 0.695126C18.27 0.568905 18.226 0.447903 18.155 0.342667C18.0841 0.237431 17.9885 0.151197 17.8766 0.0914587C17.7647 0.0317204 17.6399 0.000325328 17.5131 0H10.4898Z" fill="#00EFD8"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="178" height="33" fill="white"/>
</clipPath>
</defs>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 351.65 87.18">
<defs>
<style>.cls-1{fill:#fff;}.cls-2{fill:red;}.cls-3{fill:#0073ff;}.cls-4{fill:#00f3d7;}</style>
</defs>
<polygon class="cls-1" points="113.06 53.74 112.03 53.74 106.41 30.71 99.6 30.71 94.78 53.74 93.75 53.74 87.15 29.77 82.33 29.77 90.23 57.72 91.39 57.72 93.95 57.72 94.84 57.72 97.19 57.72 98.08 57.72 103.01 34.48 108.71 57.72 109.75 57.72 112.11 57.72 113 57.72 115.56 57.72 116.51 57.72 123.36 29.77 118.81 29.77 113.06 53.74"/>
<path class="cls-1" d="M153.56,33.36a14.28,14.28,0,0,0-4.71-3.3,16.93,16.93,0,0,0-12.67,0,14.25,14.25,0,0,0-7.64,8,14.64,14.64,0,0,0-1,5.26v.95a14.59,14.59,0,0,0,1,5.23,13.94,13.94,0,0,0,2.88,4.63,14.14,14.14,0,0,0,4.68,3.32,17.06,17.06,0,0,0,12.87,0,14.15,14.15,0,0,0,7.57-7.95,14.8,14.8,0,0,0,1-5.23v-.95a14.64,14.64,0,0,0-1-5.26A14.23,14.23,0,0,0,153.56,33.36ZM151.28,49a9.09,9.09,0,0,1-3.4,3.74,11,11,0,0,1-10.73,0,9.16,9.16,0,0,1-3.4-3.74,11.72,11.72,0,0,1-1.18-5.29,11.46,11.46,0,0,1,1.21-5.33,9.1,9.1,0,0,1,3.45-3.72,11,11,0,0,1,10.6,0,9.26,9.26,0,0,1,3.43,3.72,12.44,12.44,0,0,1,0,10.62Z"/>
<path class="cls-1" d="M171.48,32.31A10.42,10.42,0,0,0,169,38.18V29.77h-4v28h5V42.59a8.61,8.61,0,0,1,2.25-6.41A8.79,8.79,0,0,1,178.73,34h1.78v-4.5h-.94Q174.19,29.46,171.48,32.31Z"/>
<path class="cls-1" d="M223.58,30.45a9.43,9.43,0,0,0-5.49-1.52h-.21a9.34,9.34,0,0,0-5.47,1.52,9.14,9.14,0,0,0-3.27,4.37c-.13.35-.24.72-.35,1.09-.1-.37-.2-.74-.33-1.09a8.88,8.88,0,0,0-3.22-4.37,9.34,9.34,0,0,0-5.47-1.52h-.21a8.5,8.5,0,0,0-8.66,5.89,14.1,14.1,0,0,0-.45,1.43V29.77h-4v28h5V41a7.56,7.56,0,0,1,1.89-5.47,6.55,6.55,0,0,1,5-2A6,6,0,0,1,203,35.4a7.62,7.62,0,0,1,1.67,5.26V57.72h5V41a7.56,7.56,0,0,1,1.89-5.47,6.55,6.55,0,0,1,5-2,6,6,0,0,1,4.66,1.86,7.62,7.62,0,0,1,1.67,5.26V57.72h5v-16a19.68,19.68,0,0,0-1.08-6.94A8.9,8.9,0,0,0,223.58,30.45Z"/>
<path class="cls-1" d="M251.27,28.93h-.21a9.62,9.62,0,0,0-5.76,1.63,9.26,9.26,0,0,0-3.14,4.2V19.51h-5V57.72h5V41.6a8.35,8.35,0,0,1,2-5.84,6.88,6.88,0,0,1,5.36-2.22,6.79,6.79,0,0,1,5,1.88,7.12,7.12,0,0,1,1.91,5.29v17h5v-16q0-6.18-2.56-9.5T251.27,28.93Z"/>
<path class="cls-1" d="M294.55,33.36a14.28,14.28,0,0,0-4.71-3.3,16.93,16.93,0,0,0-12.67,0,14.25,14.25,0,0,0-7.64,8,14.64,14.64,0,0,0-1,5.26v.95a14.59,14.59,0,0,0,1,5.23,13.94,13.94,0,0,0,2.88,4.63,14.14,14.14,0,0,0,4.68,3.32,17.06,17.06,0,0,0,12.87,0,14.15,14.15,0,0,0,7.57-7.95,14.8,14.8,0,0,0,1-5.23v-.95a14.64,14.64,0,0,0-1-5.26A14.23,14.23,0,0,0,294.55,33.36ZM292.27,49a9.09,9.09,0,0,1-3.4,3.74,11,11,0,0,1-10.73,0,9.16,9.16,0,0,1-3.4-3.74,11.59,11.59,0,0,1-1.18-5.29,11.46,11.46,0,0,1,1.21-5.33,9.1,9.1,0,0,1,3.45-3.72,11,11,0,0,1,10.6,0,9.26,9.26,0,0,1,3.43,3.72,12.44,12.44,0,0,1,0,10.62Z"/>
<polygon class="cls-1" points="302.45 19.51 302.45 23.49 306.32 23.49 306.32 57.72 311.35 57.72 311.35 23.49 311.35 19.51 306.32 19.51 302.45 19.51"/>
<path class="cls-1" d="M345.89,42.44a15.43,15.43,0,0,0-1.44-6.6,12.09,12.09,0,0,0-4.4-5.05,13.28,13.28,0,0,0-7.5-2,14.07,14.07,0,0,0-6.1,1.23,12,12,0,0,0-4.27,3.3A14.09,14.09,0,0,0,319.7,38a17.13,17.13,0,0,0-.81,5.28v.95a17,17,0,0,0,.81,5.23,14.09,14.09,0,0,0,2.48,4.63,12.07,12.07,0,0,0,4.35,3.32,14.71,14.71,0,0,0,6.33,1.26,15.15,15.15,0,0,0,5.91-1.1,10.89,10.89,0,0,0,6.65-8.16h-4.71a5.7,5.7,0,0,1-2.49,3.4,10.49,10.49,0,0,1-10.54.08,8.14,8.14,0,0,1-3-3.77,13.74,13.74,0,0,1-.93-4.42h22.15ZM327.6,34.59a8.47,8.47,0,0,1,4.95-1.36,8.73,8.73,0,0,1,4.76,1.2,7.37,7.37,0,0,1,2.82,3.37,11.69,11.69,0,0,1,.81,3.12h-17a12.45,12.45,0,0,1,.74-2.62A8.09,8.09,0,0,1,327.6,34.59Z"/>
<path class="cls-2" d="M33.39,43.59A47.78,47.78,0,0,0,19.81,10.17a1.68,1.68,0,0,0-1.2-.5H7.44a1.68,1.68,0,0,0-1.68,1.67V22.83A1.68,1.68,0,0,0,7.33,24.5a19.15,19.15,0,0,1,0,38.18,1.68,1.68,0,0,0-1.57,1.67V75.84a1.68,1.68,0,0,0,1.68,1.67H18.61a1.68,1.68,0,0,0,1.2-.5A47.78,47.78,0,0,0,33.39,43.59Z"/>
<path class="cls-3" d="M73.6,64.35A1.68,1.68,0,0,0,72,62.68,19.15,19.15,0,0,1,72,24.5a1.68,1.68,0,0,0,1.57-1.67V11.34a1.67,1.67,0,0,0-1.67-1.67H60.75a1.7,1.7,0,0,0-1.2.5,47.94,47.94,0,0,0,0,66.84,1.7,1.7,0,0,0,1.2.5H71.93a1.67,1.67,0,0,0,1.67-1.67Z"/>
<path class="cls-4" d="M31.15,3.69a1.88,1.88,0,0,0-1.74,2.58,102.82,102.82,0,0,1,7,37.32,102.82,102.82,0,0,1-7,37.32,1.88,1.88,0,0,0,1.74,2.58h17a1.88,1.88,0,0,0,1.74-2.58,102.3,102.3,0,0,1,0-74.64,1.88,1.88,0,0,0-1.74-2.58Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -2,19 +2,24 @@ import { CssBaseline } from "@material-ui/core";
import { ThemeProvider } from "@material-ui/core/styles";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import { HashRouter } from "react-router-dom";
import App from "./App";
import { store } from "./store";
import RadialGradient from "./components/RadialGradient";
import { EthereumProviderProvider } from "./contexts/EthereumProviderContext";
import { SolanaWalletProvider } from "./contexts/SolanaWalletContext.tsx";
import { theme } from "./muiTheme";
import { store } from "./store";
ReactDOM.render(
<Provider store={store}>
<ThemeProvider theme={theme}>
<CssBaseline />
<RadialGradient />
<SolanaWalletProvider>
<EthereumProviderProvider>
<App />
<HashRouter>
<App />
</HashRouter>
</EthereumProviderProvider>
</SolanaWalletProvider>
</ThemeProvider>

View File

@ -14,6 +14,7 @@ export const theme = responsiveFontSizes(
},
secondary: {
main: "rgb(0,239,216,0.8)", // #00EFD8
light: "rgb(51, 242, 223, 1)",
},
error: {
main: "#FD3503",