@yz-social/civildefense.io 4.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +68 -0
  2. package/announce.js +24 -0
  3. package/docs/YZ-Brief.pdf +0 -0
  4. package/index.js +2 -0
  5. package/movie/camera.jpg +0 -0
  6. package/movie/movie.js +151 -0
  7. package/movie/script.js +272 -0
  8. package/movie/test.js +2 -0
  9. package/nginx/nginx.conf +83 -0
  10. package/nginx/yz.social +81 -0
  11. package/package.json +34 -0
  12. package/public/.well-known/appspecific/com.chrome.devtools.json +1 -0
  13. package/public/about/CivilDefense.mp4 +0 -0
  14. package/public/about/In case of Nazis, use CivilDefense.io.png +0 -0
  15. package/public/about/broadcast.png +0 -0
  16. package/public/about/civil-defense.png +0 -0
  17. package/public/about/conversation-and-image-high.png +0 -0
  18. package/public/about/conversation-and-image.png +0 -0
  19. package/public/about/en.html +157 -0
  20. package/public/about/es.html +142 -0
  21. package/public/about/flood-fire-ice-high.png +0 -0
  22. package/public/about/flood-fire-ice.png +0 -0
  23. package/public/about/hero-high.png +0 -0
  24. package/public/about/hero.png +0 -0
  25. package/public/about/index.html +8 -0
  26. package/public/about/nazis.png +0 -0
  27. package/public/about/script.js +69 -0
  28. package/public/about/streaming-radio-high.png +0 -0
  29. package/public/about/streaming-radio.png +0 -0
  30. package/public/about/style.css +306 -0
  31. package/public/control-safe-rectangle.html +40 -0
  32. package/public/favicon.ico +0 -0
  33. package/public/images/Achtung.png +0 -0
  34. package/public/images/YZ Owl.png +0 -0
  35. package/public/images/civil-defense-122.png +0 -0
  36. package/public/images/civil-defense-192.png +0 -0
  37. package/public/images/civil-defense-240.png +0 -0
  38. package/public/images/civil-defense-512.png +0 -0
  39. package/public/images/civil-defense.png +0 -0
  40. package/public/images/hero-small.png +0 -0
  41. package/public/images/qr-scan.svg +2 -0
  42. package/public/images/qr.png +0 -0
  43. package/public/images/qr.svg +155 -0
  44. package/public/images/recenter.svg +5 -0
  45. package/public/images/share.png +0 -0
  46. package/public/images/share.svg +2 -0
  47. package/public/index.html +170 -0
  48. package/public/javascripts/agent.js +324 -0
  49. package/public/javascripts/display.js +25 -0
  50. package/public/javascripts/hashtags.js +205 -0
  51. package/public/javascripts/main.js +394 -0
  52. package/public/javascripts/map.js +725 -0
  53. package/public/javascripts/p2pWebNetwork.js +245 -0
  54. package/public/javascripts/s2.js +77 -0
  55. package/public/javascripts/scripting.js +112 -0
  56. package/public/javascripts/service-manager.js +149 -0
  57. package/public/javascripts/translations.js +139 -0
  58. package/public/javascripts/versions.js +23 -0
  59. package/public/manifest.json +25 -0
  60. package/public/owl.ico +0 -0
  61. package/public/platformer.html +52 -0
  62. package/public/robots.txt +6 -0
  63. package/public/service-worker.js +218 -0
  64. package/public/stylesheets/style.css +442 -0
  65. package/routes/index.js +123 -0
  66. package/server/app.js +116 -0
  67. package/server/bridge.js +397 -0
  68. package/server/dirname.js +15 -0
  69. package/server/getLocation.js +18 -0
  70. package/server/identity.js +111 -0
  71. package/server/location.json +12 -0
  72. package/spec/axonSpec.gratuitousNameChangeForSignal +246 -0
  73. package/spec/axonSpec.js +280 -0
  74. package/spec/axonSpec.jsRemoveThePartAfterJS +252 -0
  75. package/spec/civildefenseSpec.js +61 -0
  76. package/spec/pubsubSpec.js +128 -0
  77. package/spec/support/jasmine.mjs +14 -0
@@ -0,0 +1,306 @@
1
+ /* ── Tokens ─────────────────────────────────────────────── */
2
+ :root {
3
+ --navy: #1A3A8F;
4
+ --navy-dark: #112566;
5
+ --navy-mid: #1E4BAD;
6
+ --red: #C41230;
7
+ --red-light: #E8192C;
8
+ --white: #FFFFFF;
9
+ --off-white: #F4F6FC;
10
+ --grey-light: #E2E8F5;
11
+ --grey-text: #5A6A8A;
12
+ --body-text: #1C2A45;
13
+ --font-display: 'Barlow Condensed', sans-serif;
14
+ --font-body: 'Inter', sans-serif;
15
+ }
16
+
17
+ /* ── Reset ──────────────────────────────────────────────── */
18
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
19
+ html { scroll-behavior: smooth; }
20
+ body {
21
+ font-family: var(--font-body);
22
+ font-size: 16px;
23
+ color: var(--body-text);
24
+ background: var(--off-white);
25
+ line-height: 1.65;
26
+ }
27
+ img { max-width: 100%; display: block; }
28
+ a { color: var(--navy-mid); text-decoration: underline; }
29
+ a:hover { color: var(--red); }
30
+
31
+ /* ── Header / Hero ──────────────────────────────────────── */
32
+ .hero {
33
+ background: var(--navy-dark);
34
+ position: relative;
35
+ overflow: hidden;
36
+ padding: 3rem 1.5rem 3.5rem;
37
+ text-align: center;
38
+ }
39
+ /* Diagonal alert stripe — the signature element */
40
+ .hero::before {
41
+ content: '';
42
+ position: absolute;
43
+ top: -60px; left: -80px;
44
+ width: 320px; height: 320px;
45
+ background: var(--red);
46
+ opacity: 0.12;
47
+ transform: rotate(-30deg);
48
+ border-radius: 24px;
49
+ pointer-events: none;
50
+ }
51
+ .hero::after {
52
+ content: '';
53
+ position: absolute;
54
+ bottom: -80px; right: -60px;
55
+ width: 280px; height: 280px;
56
+ background: var(--red);
57
+ opacity: 0.09;
58
+ transform: rotate(-30deg);
59
+ border-radius: 24px;
60
+ pointer-events: none;
61
+ }
62
+ .language-selector {
63
+ position: absolute;
64
+ top: 5px;
65
+ right: 10px;
66
+ }
67
+ .hero-inner {
68
+ position: relative;
69
+ z-index: 1;
70
+ max-width: 680px;
71
+ margin: 0 auto;
72
+ }
73
+ .hero-logo {
74
+ width: 80px;
75
+ height: 80px;
76
+ margin: 0 auto 1.25rem;
77
+ border-radius: 50%;
78
+ box-shadow: 0 4px 24px rgba(0,0,0,0.4);
79
+ }
80
+ .hero h1 {
81
+ font-family: var(--font-display);
82
+ font-weight: 800;
83
+ font-size: clamp(2.4rem, 8vw, 4rem);
84
+ letter-spacing: 0.04em;
85
+ text-transform: uppercase;
86
+ color: var(--white);
87
+ line-height: 1;
88
+ margin-bottom: 0.75rem;
89
+ }
90
+ .hero h1 span { color: var(--red-light); }
91
+ .hero-tagline {
92
+ font-size: clamp(0.95rem, 2.5vw, 1.1rem);
93
+ color: rgba(255,255,255,0.75);
94
+ margin: 0 auto;
95
+ }
96
+ .hero-divider {
97
+ width: 64px;
98
+ height: 4px;
99
+ background: var(--red);
100
+ margin: 1.25rem auto 1.25rem;
101
+ border-radius: 2px;
102
+ }
103
+
104
+ /* ── Carousel ───────────────────────────────────────────── */
105
+ .carousel-section {
106
+ background: var(--navy);
107
+ padding: 2.5rem 0 2rem;
108
+ }
109
+ .carousel-section h2 {
110
+ font-family: var(--font-display);
111
+ font-weight: 700;
112
+ font-size: clamp(1.3rem, 4vw, 1.7rem);
113
+ letter-spacing: 0.06em;
114
+ text-transform: uppercase;
115
+ color: var(--white);
116
+ text-align: center;
117
+ margin-bottom: 1.5rem;
118
+ }
119
+ .carousel-wrap {
120
+ position: relative;
121
+ max-width: 760px;
122
+ margin: auto;
123
+ margin: 0 auto;
124
+ padding: 0 1rem;
125
+ }
126
+ .carousel-track-outer {
127
+ overflow: hidden;
128
+ border-radius: 10px;
129
+ box-shadow: 0 8px 40px rgba(0,0,0,0.45);
130
+ }
131
+ .carousel-track {
132
+ display: flex;
133
+ transition: transform 0.45s cubic-bezier(0.4,0,0.2,1);
134
+ will-change: transform;
135
+ }
136
+ .carousel-slide {
137
+ min-width: 100%;
138
+ position: relative;
139
+ background: #0e2060;
140
+ }
141
+ .carousel-slide img, .carousel-slide video {
142
+ width: 100%;
143
+ max-height: 70vh;
144
+ height: auto;
145
+ display: block;
146
+ object-fit: contain;
147
+ }
148
+ .carousel-caption {
149
+ background: rgba(10, 24, 70, 0.92);
150
+ color: rgba(255,255,255,0.88);
151
+ padding: 0.8rem 1.1rem;
152
+ font-size: 18px;
153
+ line-height: 1.5;
154
+ text-align: center;
155
+ border-top: 2px solid var(--red);
156
+ min-height: 3.4rem;
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: center;
160
+ }
161
+ /* Prev / Next buttons */
162
+ .carousel-btn {
163
+ position: absolute;
164
+ top: 50%;
165
+ transform: translateY(calc(-50% - 1.5rem));
166
+ background: rgba(10, 24, 70, 0.82);
167
+ border: 2px solid var(--red);
168
+ color: var(--white);
169
+ width: 42px;
170
+ height: 42px;
171
+ border-radius: 50%;
172
+ cursor: pointer;
173
+ font-size: 1.2rem;
174
+ display: flex; align-items: center; justify-content: center;
175
+ z-index: 10;
176
+ transition: background 0.2s, transform 0.15s;
177
+ -webkit-tap-highlight-color: transparent;
178
+ }
179
+ .carousel-btn:hover { background: var(--red); transform: translateY(calc(-50% - 1.5rem)) scale(1.07); }
180
+ .carousel-btn.prev { left: -4px; }
181
+ .carousel-btn.next { right: -4px; }
182
+ /* Dots */
183
+ .carousel-dots {
184
+ display: flex;
185
+ justify-content: center;
186
+ gap: 10px;
187
+ margin-top: 1.1rem;
188
+ }
189
+ .dot {
190
+ width: 10px; height: 10px;
191
+ border-radius: 50%;
192
+ background: rgba(255,255,255,0.3);
193
+ border: none;
194
+ cursor: pointer;
195
+ transition: background 0.2s, transform 0.2s;
196
+ padding: 0;
197
+ }
198
+ .dot.active {
199
+ background: var(--red);
200
+ transform: scale(1.25);
201
+ }
202
+
203
+ /* ── Main content ───────────────────────────────────────── */
204
+ .content-wrap {
205
+ max-width: 740px;
206
+ margin: 0 auto;
207
+ padding: 2.5rem 1.25rem 4rem;
208
+ }
209
+
210
+ /* Section headings */
211
+ .content-wrap h1 {
212
+ font-family: var(--font-display);
213
+ font-weight: 800;
214
+ font-size: clamp(1.6rem, 5vw, 2.4rem);
215
+ letter-spacing: 0.03em;
216
+ text-transform: uppercase;
217
+ color: var(--navy-dark);
218
+ padding-top: 2.5rem;
219
+ padding-bottom: 0.3rem;
220
+ border-bottom: 3px solid var(--red);
221
+ margin-bottom: 1rem;
222
+ }
223
+ .content-wrap h2 {
224
+ font-family: var(--font-display);
225
+ font-weight: 700;
226
+ font-size: clamp(1.25rem, 4vw, 1.7rem);
227
+ letter-spacing: 0.04em;
228
+ text-transform: uppercase;
229
+ color: var(--navy);
230
+ padding-top: 2rem;
231
+ margin-bottom: 0.75rem;
232
+ }
233
+ .content-wrap h3 {
234
+ font-family: var(--font-display);
235
+ font-weight: 600;
236
+ font-size: clamp(1rem, 3vw, 1.2rem);
237
+ letter-spacing: 0.05em;
238
+ text-transform: uppercase;
239
+ color: var(--red);
240
+ padding-top: 1.25rem;
241
+ margin-bottom: 0.4rem;
242
+ }
243
+ .content-wrap p {
244
+ margin-bottom: 0.9rem;
245
+ color: var(--body-text);
246
+ }
247
+ .content-wrap ul {
248
+ margin: 0.4rem 0 1rem 1.2rem;
249
+ }
250
+ .content-wrap li {
251
+ margin-bottom: 0.5rem;
252
+ color: var(--body-text);
253
+ }
254
+
255
+ /* Red rule between major sections */
256
+ .rule {
257
+ border: none;
258
+ height: 2px;
259
+ background: linear-gradient(90deg, var(--red) 0%, rgba(196,18,48,0.15) 100%);
260
+ margin: 2.5rem 0;
261
+ }
262
+
263
+ .launch-btn {
264
+ display: block;
265
+ margin: 0 auto;
266
+ width: fit-content;
267
+ align-items: center;
268
+ gap: 10px;
269
+ background: #FF5A00;
270
+ color: #fff;
271
+ font-family: 'Rajdhani', sans-serif;
272
+ font-size: 1.1rem;
273
+ font-weight: 700;
274
+ letter-spacing: 0.08em;
275
+ text-transform: uppercase;
276
+ padding: 14px 38px;
277
+ border-radius: 4px;
278
+ text-decoration: none;
279
+ box-shadow: 0 4px 28px rgba(255,90,0,0.45);
280
+ transition: background 0.2s, box-shadow 0.2s, transform 0.15s;
281
+ }
282
+ .launch-btn:hover {
283
+ background: #ff7020;
284
+ box-shadow: 0 6px 36px rgba(255,90,0,0.65);
285
+ transform: translateY(-2px);
286
+ }
287
+ .centered {
288
+ display: block;
289
+ margin: 0 auto;
290
+ width: fit-content;
291
+ padding-bottom: 20px;
292
+ }
293
+ /* ── Footer ─────────────────────────────────────────────── */
294
+ footer {
295
+ background: var(--navy-dark);
296
+ color: rgba(255,255,255,0.5);
297
+ text-align: center;
298
+ font-size: 0.8rem;
299
+ padding: 1.5rem 1rem;
300
+ }
301
+ footer a { color: rgba(255,255,255,0.7); }
302
+
303
+ /* ── Responsive tweaks ──────────────────────────────────── */
304
+ <!-- @media (max-width: 520px) { -->
305
+ <!-- .carousel-btn { display: none; } -->
306
+ <!-- } -->
@@ -0,0 +1,40 @@
1
+ <html>
2
+ <head>
3
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
4
+ <style>
5
+ html, body { /* eg: 393 x 641 on my phone */
6
+ padding: 0;
7
+ margin: 0;
8
+ }
9
+ /*
10
+ apple "compact" setting in portrait:
11
+ top is below notch and top bar
12
+ bottom is through the middle of the overlayed control bars
13
+ apple "bottom" setting in portrait:
14
+ top is below notch and top bar
15
+ bottom is through lower third of overlayed control bars - probably same position
16
+ apple "top" setting in portrait:
17
+ top is blow address bar
18
+ bottom is at bezel, with control bars overlayed
19
+ apple landscape with "landscape tab bar" off.
20
+ full screen
21
+ */
22
+ .full {
23
+ background: red;
24
+ height: 100vh; /* vw = lvw = 852; dvw = svw = 641*/
25
+ width: 100vw; /* vw = lvw = dvw = 393*/
26
+ position: absolute;
27
+ }
28
+ .safe {
29
+ background: green;
30
+ height: calc(100dvh - env(safe-area-inset-bottom, 0));
31
+ width: clac(100dvw - env(safe-area-inset-left, 0));
32
+ }
33
+ </style>
34
+ </head>
35
+ <body>
36
+ <div class="full">
37
+ <div class="safe"></div>
38
+ </div>
39
+ </body>
40
+ </html>
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
2
+ <svg fill="#0A2E7C" width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1"><path d="M8,21H4a1,1,0,0,1-1-1V16a1,1,0,0,0-2,0v4a3,3,0,0,0,3,3H8a1,1,0,0,0,0-2Zm14-6a1,1,0,0,0-1,1v4a1,1,0,0,1-1,1H16a1,1,0,0,0,0,2h4a3,3,0,0,0,3-3V16A1,1,0,0,0,22,15ZM20,1H16a1,1,0,0,0,0,2h4a1,1,0,0,1,1,1V8a1,1,0,0,0,2,0V4A3,3,0,0,0,20,1ZM2,9A1,1,0,0,0,3,8V4A1,1,0,0,1,4,3H8A1,1,0,0,0,8,1H4A3,3,0,0,0,1,4V8A1,1,0,0,0,2,9Zm8-4H6A1,1,0,0,0,5,6v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,10,5ZM9,9H7V7H9Zm5,2h4a1,1,0,0,0,1-1V6a1,1,0,0,0-1-1H14a1,1,0,0,0-1,1v4A1,1,0,0,0,14,11Zm1-4h2V9H15Zm-5,6H6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V14A1,1,0,0,0,10,13ZM9,17H7V15H9Zm5-1a1,1,0,0,0,1-1,1,1,0,0,0,0-2H14a1,1,0,0,0-1,1v1A1,1,0,0,0,14,16Zm4-3a1,1,0,0,0-1,1v3a1,1,0,0,0,0,2h1a1,1,0,0,0,1-1V14A1,1,0,0,0,18,13Zm-4,4a1,1,0,1,0,1,1A1,1,0,0,0,14,17Z"/></svg>
Binary file
@@ -0,0 +1,155 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg fill="#0A2E7C" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 512 512" xml:space="preserve">
5
+ <g>
6
+ <g>
7
+ <rect x="51.2" y="51.2" width="51.2" height="51.2"/>
8
+ </g>
9
+ </g>
10
+ <g>
11
+ <g>
12
+ <path d="M358.4,0v25.6h-25.6v25.6h25.6v102.4H384v25.6h-25.6v25.6H384h25.6v-51.2h76.8v25.6H512v-25.6V0H358.4z M486.4,128H384
13
+ V25.6h102.4V128z"/>
14
+ </g>
15
+ </g>
16
+ <g>
17
+ <g>
18
+ <rect x="409.6" y="51.2" width="51.2" height="51.2"/>
19
+ </g>
20
+ </g>
21
+ <g>
22
+ <g>
23
+ <rect x="51.2" y="409.6" width="51.2" height="51.2"/>
24
+ </g>
25
+ </g>
26
+ <g>
27
+ <g>
28
+ <rect x="358.4" y="358.4" width="25.6" height="25.6"/>
29
+ </g>
30
+ </g>
31
+ <g>
32
+ <g>
33
+ <rect x="230.4" y="486.4" width="25.6" height="25.6"/>
34
+ </g>
35
+ </g>
36
+ <g>
37
+ <g>
38
+ <rect x="256" y="384" width="25.6" height="25.6"/>
39
+ </g>
40
+ </g>
41
+ <g>
42
+ <g>
43
+ <rect x="256" y="435.2" width="25.6" height="25.6"/>
44
+ </g>
45
+ </g>
46
+ <g>
47
+ <g>
48
+ <rect x="486.4" y="307.2" width="25.6" height="25.6"/>
49
+ </g>
50
+ </g>
51
+ <g>
52
+ <g>
53
+ <rect y="307.2" width="25.6" height="25.6"/>
54
+ </g>
55
+ </g>
56
+ <g>
57
+ <g>
58
+ <rect y="179.2" width="25.6" height="25.6"/>
59
+ </g>
60
+ </g>
61
+ <g>
62
+ <g>
63
+ <polygon points="281.6,25.6 281.6,51.2 230.4,51.2 230.4,76.8 307.2,76.8 307.2,51.2 307.2,25.6 "/>
64
+ </g>
65
+ </g>
66
+ <g>
67
+ <g>
68
+ <path d="M486.4,204.8v25.6h-51.2V256h-76.8v-25.6h-25.6V256h-51.2v25.6h76.8v25.6h-51.2h-25.6v-25.6H256v25.6h-25.6v-25.6h-25.6
69
+ v25.6h-25.6v25.6h51.2v25.6H256v-25.6h51.2v25.6h-25.6V384h25.6v51.2h25.6v25.6h25.6v-25.6h76.8V384h25.6v-25.6h-25.6v-51.2H384
70
+ v-25.6h51.2v25.6h25.6v-25.6h25.6V256H512v-25.6v-25.6H486.4z M409.6,332.8v76.8h-76.8v-76.8H409.6z"/>
71
+ </g>
72
+ </g>
73
+ <g>
74
+ <g>
75
+ <polygon points="332.8,153.6 307.2,153.6 307.2,179.2 281.6,179.2 281.6,204.8 281.6,230.4 307.2,230.4 307.2,204.8 332.8,204.8
76
+ 332.8,179.2 358.4,179.2 358.4,153.6 "/>
77
+ </g>
78
+ </g>
79
+ <g>
80
+ <g>
81
+ <rect x="281.6" y="486.4" width="51.2" height="25.6"/>
82
+ </g>
83
+ </g>
84
+ <g>
85
+ <g>
86
+ <rect x="204.8" y="25.6" width="25.6" height="25.6"/>
87
+ </g>
88
+ </g>
89
+ <g>
90
+ <g>
91
+ <rect x="409.6" y="204.8" width="25.6" height="25.6"/>
92
+ </g>
93
+ </g>
94
+ <g>
95
+ <g>
96
+ <rect x="435.2" y="179.2" width="25.6" height="25.6"/>
97
+ </g>
98
+ </g>
99
+ <g>
100
+ <g>
101
+ <rect x="102.4" y="307.2" width="25.6" height="25.6"/>
102
+ </g>
103
+ </g>
104
+ <g>
105
+ <g>
106
+ <path d="M153.6,486.4V384h25.6v-25.6v-25.6h-25.6v25.6H76.8v-25.6H51.2H25.6v25.6H0V512h153.6h51.2v-25.6H153.6z M128,486.4H25.6
107
+ V384H128V486.4z"/>
108
+ </g>
109
+ </g>
110
+ <g>
111
+ <g>
112
+ <rect x="153.6" y="153.6" width="25.6" height="25.6"/>
113
+ </g>
114
+ </g>
115
+ <g>
116
+ <g>
117
+ <path d="M179.2,0h-25.6H0v153.6h25.6v25.6h25.6v-25.6h25.6v25.6h25.6v-25.6h51.2v-51.2h25.6V76.8h-25.6V25.6h25.6h25.6V0H179.2z
118
+ M128,128H25.6V25.6H128V128z"/>
119
+ </g>
120
+ </g>
121
+ <g>
122
+ <g>
123
+ <rect x="307.2" y="76.8" width="25.6" height="25.6"/>
124
+ </g>
125
+ </g>
126
+ <g>
127
+ <g>
128
+ <rect x="256" width="25.6" height="25.6"/>
129
+ </g>
130
+ </g>
131
+ <g>
132
+ <g>
133
+ <path d="M307.2,153.6V128h-25.6v-25.6H256V128h-51.2v-25.6h-25.6V128v25.6h25.6v51.2H128v-25.6h-25.6v25.6H25.6v25.6h51.2V256H0
134
+ v25.6h76.8v25.6h25.6v-25.6H128v25.6h25.6v-25.6h51.2V256h-25.6v-25.6h25.6h25.6V256H256h25.6v-25.6H256v-25.6h-25.6v-51.2H307.2z
135
+ M153.6,256h-51.2v-25.6h51.2V256z"/>
136
+ </g>
137
+ </g>
138
+ <g>
139
+ <g>
140
+ <polygon points="230.4,409.6 230.4,384 230.4,358.4 204.8,358.4 204.8,384 179.2,384 179.2,409.6 204.8,409.6 204.8,435.2
141
+ 179.2,435.2 179.2,460.8 230.4,460.8 230.4,435.2 256,435.2 256,409.6 "/>
142
+ </g>
143
+ </g>
144
+ <g>
145
+ <g>
146
+ <polygon points="460.8,460.8 460.8,435.2 435.2,435.2 435.2,460.8 358.4,460.8 358.4,486.4 409.6,486.4 409.6,512 435.2,512
147
+ 435.2,486.4 486.4,486.4 486.4,512 512,512 512,486.4 512,460.8 "/>
148
+ </g>
149
+ </g>
150
+ <g>
151
+ <g>
152
+ <polygon points="486.4,358.4 486.4,384 460.8,384 460.8,409.6 512,409.6 512,384 512,358.4 "/>
153
+ </g>
154
+ </g>
155
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" fill="none" viewBox="0 0 128 128" id="recenter">
2
+ <path stroke="#0A2E7C" stroke-linecap="round" stroke-linejoin="round" stroke-width="7" d="M38 74L49 63.5 38 53M53.5 37.5L64 48.5 74.5 37.5M90 53L79 63.5 90 74M74.5 89.5L64 78.5 53.5 89.5"></path>
3
+ <path stroke="#0A2E7C" stroke-linecap="round" stroke-width="7" d="M44 64L16 64M63.5 43.5L63.5 15.5M84 63L112 63M64.5 83.5L64.5 111.5"></path>
4
+ <circle cx="64" cy="64" r="5" fill="#0A2E7C"></circle>
5
+ </svg>
Binary file
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
2
+ <svg fill="#0A2E7C" width="800px" height="800px" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg"><path d="M30.3 13.7L25 8.4l-5.3 5.3-1.4-1.4L25 5.6l6.7 6.7z"/><path d="M24 7h2v21h-2z"/><path d="M35 40H15c-1.7 0-3-1.3-3-3V19c0-1.7 1.3-3 3-3h7v2h-7c-.6 0-1 .4-1 1v18c0 .6.4 1 1 1h20c.6 0 1-.4 1-1V19c0-.6-.4-1-1-1h-7v-2h7c1.7 0 3 1.3 3 3v18c0 1.7-1.3 3-3 3z"/></svg>