From 12a2787842203596b2304e128773adb36cae3380 Mon Sep 17 00:00:00 2001 From: Jake Runyan Date: Sat, 11 Jan 2025 12:32:14 -0800 Subject: [PATCH] Update jakeswestcoast --- package-lock.json | 266 ++++++++++++++++++++++++++++++++++ package.json | 1 + src/App.css | 29 ++++ src/App.js | 55 ++++--- src/components/Projects.css | 39 ++++- src/components/Projects.js | 52 ++++++- src/static/github-icon.png | Bin 0 -> 4570 bytes src/static/instagram-icon.png | Bin 0 -> 5752 bytes src/static/youtube-icon.png | Bin 0 -> 2994 bytes 9 files changed, 413 insertions(+), 29 deletions(-) create mode 100644 src/static/github-icon.png create mode 100644 src/static/instagram-icon.png create mode 100644 src/static/youtube-icon.png diff --git a/package-lock.json b/package-lock.json index af4f143..1ab2558 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "cra-template": "1.2.0", + "googleapis": "^144.0.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router-dom": "^7.1.1", @@ -5017,6 +5018,26 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -5048,6 +5069,15 @@ "node": "*" } }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -5202,6 +5232,12 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -6658,6 +6694,15 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7752,6 +7797,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -8305,6 +8356,70 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -8526,6 +8641,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/google-auth-library": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", + "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis": { + "version": "144.0.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-144.0.0.tgz", + "integrity": "sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==", + "license": "Apache-2.0", + "dependencies": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", + "integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.7.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -8550,6 +8725,19 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "license": "MIT" }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "license": "MIT", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -10736,6 +10924,15 @@ "node": ">=6" } }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -10837,6 +11034,27 @@ "node": ">=4.0" } }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -11358,6 +11576,48 @@ "tslib": "^2.0.3" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -16363,6 +16623,12 @@ "requires-port": "^1.0.0" } }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==", + "license": "BSD" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index b74e4c7..888c85f 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "cra-template": "1.2.0", + "googleapis": "^144.0.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router-dom": "^7.1.1", diff --git a/src/App.css b/src/App.css index 0134aaa..f05add9 100644 --- a/src/App.css +++ b/src/App.css @@ -33,3 +33,32 @@ nav ul li a:hover { .page { padding: 20px; } + +.navbar { + display: flex; + justify-content: space-between; /* Space between links and icons */ + align-items: center; + padding: 10px 20px; + background-color: #333; /* Background color */ + color: white; /* Text color */ +} + +.nav-links a { + color: white; /* Link color */ + margin: 0 15px; /* Spacing between links */ + text-decoration: none; /* Remove underline */ +} + +.social-icons a { + margin-left: 15px; /* Spacing between icons */ +} + +.social-icons img { + width: 24px; /* Icon size */ + height: 24px; /* Icon size */ + transition: transform 0.2s; /* Animation on hover */ +} + +.social-icons img:hover { + transform: scale(1.1); /* Scale up on hover */ +} diff --git a/src/App.js b/src/App.js index d275e30..8137560 100644 --- a/src/App.js +++ b/src/App.js @@ -1,28 +1,43 @@ import React from 'react'; import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'; import './App.css'; - -import Home from './components/Home' -import About from './components/About' -import Projects from './components/Projects' +import Home from './components/Home'; +import About from './components/About'; +import Projects from './components/Projects'; +import instagramIcon from './static/instagram-icon.png'; +import githubIcon from './static/github-icon.png'; +import youtubeIcon from './static/youtube-icon.png'; function App() { - return ( - - - - } /> - } /> - } /> - - - ); + return ( + +
+ + + } /> + } /> + } /> + +
+
+ ); } export default App; diff --git a/src/components/Projects.css b/src/components/Projects.css index 54f0cb5..cc4bceb 100644 --- a/src/components/Projects.css +++ b/src/components/Projects.css @@ -1,3 +1,40 @@ .page { padding: 20px; - } \ No newline at end of file + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 100vh; +} + +.video-cards { + display: flex; + flex-wrap: wrap; + gap: 20px; + justify-content: center; +} + +.video-card { + border: 1px solid #ccc; + border-radius: 8px; + padding: 10px; + width: 100%; /* Full width for the card */ + max-width: 560px; /* Max width to match the video */ + text-align: center; + position: relative; /* Positioning for the iframe */ + overflow: hidden; /* Hide overflow */ +} + +/* Responsive iframe */ +.video-card iframe { + width: 100%; /* Full width for the iframe */ + height: auto; /* Maintain aspect ratio */ + aspect-ratio: 16 / 9; /* Maintain 16:9 aspect ratio */ +} + +/* Responsive styles */ +@media (max-width: 600px) { + .video-card { + width: 100%; /* Full width on small screens */ + } +} \ No newline at end of file diff --git a/src/components/Projects.js b/src/components/Projects.js index 8867bea..e368aa5 100644 --- a/src/components/Projects.js +++ b/src/components/Projects.js @@ -1,12 +1,48 @@ import './Projects.css'; +import React from 'react'; function Projects() { - return ( -
-

Projects

-

Here you can find my climbing routes, expeditions, and other mountaineering projects.

-
- ); - } + const videos = [ + { + title: 'The Bay Tour', + url: 'https://www.youtube.com/watch?v=xhDQMUUZdio', + description: 'A full loop of the bay area, starting in the South Bay and continuing counterclockwise over the 150 mile stretch.', + }, + { + title: 'America\'s Most Beautiful Bike Ride', + url: 'https://www.youtube.com/watch?v=O4eEIqxIGCs', + description: 'Footage from the 2024 America\'s Most Beautiful Bike Ride in Lake Tahoe. 80 miles of beautiful scenery and lake views.', + }, + { + title: 'Alpine Dam', + url: 'https://www.youtube.com/watch?v=_z7g9PyfrK8', + description: 'A relaxed group ride into Marin county to Alpine Dam. Lots of climbing from city to dam to the ridgeline.', + }, + // Add more video objects as needed + ]; - export default Projects; \ No newline at end of file + return ( +
+

Projects

+

Some of the larger projects we've done over the history of my channel.

+
+ {videos.map((video, index) => ( +
+

{video.title}

+ +

{video.description}

+
+ ))} +
+
+ ); +} + +export default Projects; \ No newline at end of file diff --git a/src/static/github-icon.png b/src/static/github-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d89656f6886d9cbbeeca07e667513379d3aa350a GIT binary patch literal 4570 zcmbtXX;@QNw_YbRAt3?7WDufN#4-pnh?e0XA}S8CB107oN&+ZI1gbcoCxBFiDhevK z2(g0mQ>a)#>u?}N)JCB=frtdE#!`of0|7z49khPmb8qkcac_9SIoW%??|S#%Yp=cb zcJaJmE_);!0JyVePX7{sf?g@WVxY(Cv|IfESXO*spm%Qv|LBsl9n+Lz}_}$VYk)z!3n~Cmwx8;2I^hC>>9k9Xl zvdBJ0W}UL9AS)@oec|NWQ3bJmy@QeID{m~v@v%GIRA;tN-WKbXnEA?YO`*ATuf8bl zeyOpUe{$4I{kJK#Qbla`_0*Nc-gBHR?nT6}2=nmlitpNX;?IJKF+O2alGfb0w&>3J z@mr!Dj+Q&69K6Fai}=-S>^8AD$Vl3gXB@twiB?;ZgZ5MeF?LRnE@IwAV>g z%e&5VTd6MVh(qH8y`yzF1nB|60_@ zOr141i1{aGED#DV`F_PmP1dPF5vhSmiHXwHsSubfjZT%uh}OlY#)*Pw%@v0$Oe_I- zr)NzM2u-{9tUV;TZ6=>4#tyBLA9`mu+t_w`<>|n+;z`G9kDlncV4OQQHQav3>Bo=g zi23i&ljxVG_{5~@w%~gIyYB{97ZVhi!}?l^2>>S@SxSJ6rEWk6n(q$G0Ypz1uyG6& zyQTpfSQ`r{V!$8aMzeUCh8S{7L2{1j(=yU}9vY z}??6GsuLG9$fq1i+hKO~UV+abNVG59zEI$K8q{o5~q?TuZur}kS zh*(E8K+uSD_D+A=CgUx^ji|eTdO&=W~Vqgyw8z2Tv|3qwn7_9z-SdWQm?8WJ{ zIy76{nY0TST+ zAXQ@gKO0Bs!vXkln^Z5~@(5=<;sZtW2ih!iG-Sd|=j%^nf#R~~$fO}?p?qxRhYe2- zxpp(kaFlQ3+#bBgD(Ec7VJVvR<+g`ZCn6NTym+pSZ(nM2>(zl1jU$sE%x>?^b;jHL zYp5HZVQ>0WPa(NMyPw#%C5~Bnr}MRsWT~d+?yC@@1d}_gdzWNoC6ZKNO|w!)3MH?{i8 z&-%crL<;XvY|a@PmE8}{aL-u?%`l_PFKxov|IOk z)a!v=e>lRmWi~2irrq1>l|_tQmw4Wl52dZ$FPo&wkte*5vbpbGzWDV*dfaWzjk76= z*qAj}Y&-&u?t89tesSIbObR<6=IS}^?!9v`d5w)L^;+c{&i#q*Q#(1%Ci_&j^^Wa=Cv8v**Y-iyDRO)!;EpNX*tYYPDxqtR8C{SXz*CI;)S` zo_H}76)M`#Dcp;Bp>QU1jYiBL?FO&&pqIsqhjuAstnJtv-xyff@FFg1>bgCnqs3%oZHL5zNHAL7e9hiNu#*3(I+(7(-xeSegI9z-ymOu}e{ z6FTa?;ga-$E@N;CJ9xEbk5M3x!W8V-2E6gtT(!ZhQg+2xbk87NjsWOTmB0czqvwg*X3 zSHyjt-WNTWZ1eZOZX^U?l|tMDkmXSbV-~&%(~WY6rG6Xw!?W9LGF%<&CV-02Jg{N1=qIgYlUDr%5{V~3uhC?yh1wd zE1SZEizd)H|FKgw<_a8Oo$r0_$A)aoVGwnW@q4uwo%@p>S8;(st7)Tccw?%&t*qce zZR3)h%=&c&sK!ti{eF=`fSasfIdk9&Kl!COmgN`vUCw5f?gwU^C_%XI8Y=5{b|&`LO%|(aWuV}NU-zRc@fNF* zY;2m{WdSUP%;}?XOKo8qI&KI{)kDWwL&a>7+Wlk|}3ChY=lqKYmVOl!)qL zc^kdoQ07Lp^_2xswyiQgJ0DA_XNY8AWY@VX7EAPkn{DUj5@fACoKx@nx__DODVF+{ zZ#Dz!E(Kva`yXgErDPj2`!-(AnTHdykkZssz^OsG_nfPiX1?oYZ#j z=^9w^BP|g)_81eFWBgFR#qi22m6~S}dME#eu-NU!_Y@+4g|9}Ox>icsRdzdKC~+pv zj*NijjP9o;bTI{b9v?5ka3fuB@2SyE-Cg%6o8E8Y1{1ltU!{}!T&(Buk#a~tWh#L? z8x!)WFH+t{Qq}6xJ1XBtleLSymn`&OMIWEvac;YHmm^H8#;SxjD(5RwpG{Oa6OHXn z4Nu8AMouun@@#j&$@i_s=>kyiYgp<#1to~1InLVscZNuZTctwXGE|R)I&Bj@&uX6w=1^Z} zCxlEMsvnxCed&04R7251VA=9rSkEWRzNg^2Jb9$N+O1Ilbk4l4fO7qpDGv z4%p*N6VfRR2h#NdFTij|RgrV96vos9ynUm*R)9 zFfwYaza>gJ39!To+}T2C1E}4_C5)L8i)gAuh^}J@YKp0C3>gV%mr%w=d3iaNNCZi- zgi7QX7mjWLWXReq00Fw)9R?)}Wvl}OoZ&qCPkq({9AMCEZngkoG2l4-Aaw0w17pV+ zl$z-18pR)QfKn41DY{3pp$c6pgAF;7=5IblY;z>U)HUMZ0__Mo)McOQ>`s{aeQA$5 z9OX`0#w9cj3`kl!?ivvtvbFMw%?}^};W_UuN|5k{7ri&4r$|_L#wX>5kPQMWb+%h< yk*AhJhaH?)sM$@mv8n`2S{ literal 0 HcmV?d00001 diff --git a/src/static/instagram-icon.png b/src/static/instagram-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..553675f34e8c00298e11cba5b83a005c15e7cc03 GIT binary patch literal 5752 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