├── .gitignore
├── .vscode
├── init.sh
└── settings.json
├── LICENSE
├── README.md
├── css
├── h1-blue.css
├── h1-green.css
├── h1-red.css
├── style.card.css
└── style.css
├── html
├── incremental.html
├── no-script-dcl.html
├── parser-blocking.html
├── render-blocking.html
├── rendering.html
└── script-blocking.html
├── js
├── common.js
├── main.js
├── sample.js
└── vendor.js
├── lib
├── crp.png
├── cssom.png
├── dom.png
└── render-tree.png
├── package-lock.json
├── package.json
├── res
└── nature.jpg
└── server.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/.vscode/init.sh:
--------------------------------------------------------------------------------
1 | export PS1='🔥 '
2 |
3 | # commit alias
4 | commit() {
5 | git add -A && git commit -m "$*"
6 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | // integrated terminal settings
3 | "terminal.integrated.shell.osx": "/bin/bash",
4 | "terminal.integrated.shellArgs.osx": [
5 | "--init-file", ".vscode/init.sh"
6 | ],
7 |
8 | // VSCode UI settings
9 | "workbench.activityBar.visible": false,
10 | "workbench.statusBar.visible": false,
11 | "window.title": "${activeEditorShort}",
12 | "editor.foldingHighlight": false,
13 | "editor.renderLineHighlight": "none",
14 | "editor.occurrencesHighlight": false,
15 | "editor.selectionHighlight": false,
16 | "editor.matchBrackets": "never",
17 | "editor.minimap.enabled": false,
18 |
19 | // disable git
20 | "git.enabled": false,
21 | "gitlens.mode.active": "zen",
22 | "gitlens.codeLens.enabled": false,
23 |
24 | // custom CSS plugin config
25 | // https://marketplace.visualstudio.com/items?itemName=iocave.customize-ui
26 | "customizeUI.stylesheet": {
27 | ".tabs-and-actions-container .editor-actions": "display: none !important;",
28 | ".split-view-container .split-view-view:nth-child(2) .part.panel.bottom .composite.title .title-actions": "display: none !important",
29 | ".monaco-workbench .part.titlebar > .window-title": "display: none !important",
30 | ".monaco-workbench .part.titlebar": "background-color: rgb(37, 37, 38) !important",
31 | ".decorationsOverviewRuler": "opacity: 0 !important",
32 | ".monaco-scrollable-element>.visible": "opacity: 0 !important",
33 | ".monaco-workbench .monaco-scrollable-element > .scrollbar > .slider": "opacity: 0 !important",
34 | ".editor-container": "margin-top: 10px !important;",
35 | ".monaco-editor .scroll-decoration": "box-shadow: unset !important;",
36 | ".monaco-workbench .part.editor>.content .editor-group-container>.title .tabs-container>.tab": "background-color: transparent !important;",
37 | ".monaco-workbench .part.panel.bottom .composite.title": "margin-bottom: 10px !important;",
38 | }
39 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Uday Hiwarale
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # browser-rendering-test
2 | Sample code base to test how a browser renders a webpage.
3 |
4 | ## Web Server
5 | ## Start Server
6 | ```
7 | node server.js
8 | ```
9 |
10 | ## Access a file
11 | ```
12 | http://localhost:8088/directory/file
13 | http://localhost:8088/delay-in-ms/directory/file
14 |
15 | Example:
16 | http://localhost:8088/html/incremental.html
17 | http://localhost:8088/10000/html/incremental.html
18 | ```
--------------------------------------------------------------------------------
/css/h1-blue.css:
--------------------------------------------------------------------------------
1 | h1 {
2 | color: blue;
3 | }
--------------------------------------------------------------------------------
/css/h1-green.css:
--------------------------------------------------------------------------------
1 | h1 {
2 | color: green;
3 | }
--------------------------------------------------------------------------------
/css/h1-red.css:
--------------------------------------------------------------------------------
1 | h1 {
2 | color: red;
3 | }
--------------------------------------------------------------------------------
/css/style.card.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | font-size: 14px;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
4 | padding: 0;
5 | margin: 0;
6 | text-align: center;
7 | }
8 |
9 | * {
10 | box-sizing: border-box;
11 | line-height: 1;
12 | margin: 0;
13 | }
14 |
15 | .container {
16 | margin: 20px;
17 | padding: 30px;
18 | width: 500px;
19 | height: 300px;
20 | border-radius: 10px;
21 | background: linear-gradient(-30deg, #6227b0, #3F51B5);
22 |
23 | display: inline-flex;
24 | box-shadow: 2px 2px 10px rgba(0,0,0,0.5);
25 | flex-direction: column;
26 | justify-content: center;
27 | align-items: center;
28 |
29 | color: white;
30 | }
31 |
32 | .container > h1 {
33 | text-transform: uppercase;
34 | letter-spacing: 1px;
35 | margin-bottom: 20px;
36 | color: #42e699;
37 | }
38 |
39 | .container > p {
40 | font-size: 16px;
41 | font-weight: 100;
42 | font-family: monospace;
43 | }
--------------------------------------------------------------------------------
/css/style.css:
--------------------------------------------------------------------------------
1 | html {
2 | padding: 0;
3 | margin: 0;
4 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
5 | }
6 |
7 | body {
8 | font-size: 14px;
9 | }
10 |
11 | img {
12 | height: 100px;
13 | }
14 |
15 | h1 { color: #3b23b5; }
16 | h2 { color: #7d23b5; }
17 | h3 { color: #a0116c; }
--------------------------------------------------------------------------------
/html/incremental.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Incremental Parsing
7 |
8 |
9 |
10 | 🍏 apple: 1
11 | 🍏 apple: 2
12 | 🍏 apple: 3
13 | 🍏 apple: 4
14 | 🍏 apple: 5
15 | 🍏 apple: 6
16 | 🍏 apple: 7
17 | 🍏 apple: 8
18 | 🍏 apple: 9
19 | 🍏 apple: 10
20 | 🍏 apple: 11
21 | 🍏 apple: 12
22 | 🍏 apple: 13
23 | 🍏 apple: 14
24 | 🍏 apple: 15
25 | 🍏 apple: 16
26 | 🍏 apple: 17
27 | 🍏 apple: 18
28 | 🍏 apple: 19
29 | 🍏 apple: 20
30 | 🍏 apple: 21
31 | 🍏 apple: 22
32 | 🍏 apple: 23
33 | 🍏 apple: 24
34 | 🍏 apple: 25
35 | 🍏 apple: 26
36 | 🍏 apple: 27
37 | 🍏 apple: 28
38 | 🍏 apple: 29
39 | 🍏 apple: 30
40 | 🍏 apple: 31
41 | 🍏 apple: 32
42 | 🍏 apple: 33
43 | 🍏 apple: 34
44 | 🍏 apple: 35
45 | 🍏 apple: 36
46 | 🍏 apple: 37
47 | 🍏 apple: 38
48 | 🍏 apple: 39
49 | 🍏 apple: 40
50 | 🍏 apple: 41
51 | 🍏 apple: 42
52 | 🍏 apple: 43
53 | 🍏 apple: 44
54 | 🍏 apple: 45
55 | 🍏 apple: 46
56 | 🍏 apple: 47
57 | 🍏 apple: 48
58 | 🍏 apple: 49
59 | 🍏 apple: 50
60 | 🍏 apple: 51
61 | 🍏 apple: 52
62 | 🍏 apple: 53
63 | 🍏 apple: 54
64 | 🍏 apple: 55
65 | 🍏 apple: 56
66 | 🍏 apple: 57
67 | 🍏 apple: 58
68 | 🍏 apple: 59
69 | 🍏 apple: 60
70 | 🍏 apple: 61
71 | 🍏 apple: 62
72 | 🍏 apple: 63
73 | 🍏 apple: 64
74 | 🍏 apple: 65
75 | 🍏 apple: 66
76 | 🍏 apple: 67
77 | 🍏 apple: 68
78 | 🍏 apple: 69
79 | 🍏 apple: 70
80 | 🍏 apple: 71
81 | 🍏 apple: 72
82 | 🍏 apple: 73
83 | 🍏 apple: 74
84 | 🍏 apple: 75
85 | 🍏 apple: 76
86 | 🍏 apple: 77
87 | 🍏 apple: 78
88 | 🍏 apple: 79
89 | 🍏 apple: 80
90 | 🍏 apple: 81
91 | 🍏 apple: 82
92 | 🍏 apple: 83
93 | 🍏 apple: 84
94 | 🍏 apple: 85
95 | 🍏 apple: 86
96 | 🍏 apple: 87
97 | 🍏 apple: 88
98 | 🍏 apple: 89
99 | 🍏 apple: 90
100 | 🍏 apple: 91
101 | 🍏 apple: 92
102 | 🍏 apple: 93
103 | 🍏 apple: 94
104 | 🍏 apple: 95
105 | 🍏 apple: 96
106 | 🍏 apple: 97
107 | 🍏 apple: 98
108 | 🍏 apple: 99
109 | 🍏 apple: 100
110 | 🍏 apple: 101
111 | 🍏 apple: 102
112 | 🍏 apple: 103
113 | 🍏 apple: 104
114 | 🍏 apple: 105
115 | 🍏 apple: 106
116 | 🍏 apple: 107
117 | 🍏 apple: 108
118 | 🍏 apple: 109
119 | 🍏 apple: 110
120 | 🍏 apple: 111
121 | 🍏 apple: 112
122 | 🍏 apple: 113
123 | 🍏 apple: 114
124 | 🍏 apple: 115
125 | 🍏 apple: 116
126 | 🍏 apple: 117
127 | 🍏 apple: 118
128 | 🍏 apple: 119
129 | 🍏 apple: 120
130 | 🍏 apple: 121
131 | 🍏 apple: 122
132 | 🍏 apple: 123
133 | 🍏 apple: 124
134 | 🍏 apple: 125
135 | 🍏 apple: 126
136 | 🍏 apple: 127
137 | 🍏 apple: 128
138 | 🍏 apple: 129
139 | 🍏 apple: 130
140 | 🍏 apple: 131
141 | 🍏 apple: 132
142 | 🍏 apple: 133
143 | 🍏 apple: 134
144 | 🍏 apple: 135
145 | 🍏 apple: 136
146 | 🍏 apple: 137
147 | 🍏 apple: 138
148 | 🍏 apple: 139
149 | 🍏 apple: 140
150 | 🍏 apple: 141
151 | 🍏 apple: 142
152 | 🍏 apple: 143
153 | 🍏 apple: 144
154 | 🍏 apple: 145
155 | 🍏 apple: 146
156 | 🍏 apple: 147
157 | 🍏 apple: 148
158 | 🍏 apple: 149
159 | 🍏 apple: 150
160 | 🍏 apple: 151
161 | 🍏 apple: 152
162 | 🍏 apple: 153
163 | 🍏 apple: 154
164 | 🍏 apple: 155
165 | 🍏 apple: 156
166 | 🍏 apple: 157
167 | 🍏 apple: 158
168 | 🍏 apple: 159
169 | 🍏 apple: 160
170 | 🍏 apple: 161
171 | 🍏 apple: 162
172 | 🍏 apple: 163
173 | 🍏 apple: 164
174 | 🍏 apple: 165
175 | 🍏 apple: 166
176 | 🍏 apple: 167
177 | 🍏 apple: 168
178 | 🍏 apple: 169
179 | 🍏 apple: 170
180 | 🍏 apple: 171
181 | 🍏 apple: 172
182 | 🍏 apple: 173
183 | 🍏 apple: 174
184 | 🍏 apple: 175
185 | 🍏 apple: 176
186 | 🍏 apple: 177
187 | 🍏 apple: 178
188 | 🍏 apple: 179
189 | 🍏 apple: 180
190 | 🍏 apple: 181
191 | 🍏 apple: 182
192 | 🍏 apple: 183
193 | 🍏 apple: 184
194 | 🍏 apple: 185
195 | 🍏 apple: 186
196 | 🍏 apple: 187
197 | 🍏 apple: 188
198 | 🍏 apple: 189
199 | 🍏 apple: 190
200 | 🍏 apple: 191
201 | 🍏 apple: 192
202 | 🍏 apple: 193
203 | 🍏 apple: 194
204 | 🍏 apple: 195
205 | 🍏 apple: 196
206 | 🍏 apple: 197
207 | 🍏 apple: 198
208 | 🍏 apple: 199
209 | 🍏 apple: 200
210 | 🍏 apple: 201
211 | 🍏 apple: 202
212 | 🍏 apple: 203
213 | 🍏 apple: 204
214 | 🍏 apple: 205
215 | 🍏 apple: 206
216 | 🍏 apple: 207
217 | 🍏 apple: 208
218 | 🍏 apple: 209
219 | 🍏 apple: 210
220 | 🍏 apple: 211
221 | 🍏 apple: 212
222 | 🍏 apple: 213
223 | 🍏 apple: 214
224 | 🍏 apple: 215
225 | 🍏 apple: 216
226 | 🍏 apple: 217
227 | 🍏 apple: 218
228 | 🍏 apple: 219
229 | 🍏 apple: 220
230 | 🍏 apple: 221
231 | 🍏 apple: 222
232 | 🍏 apple: 223
233 | 🍏 apple: 224
234 | 🍏 apple: 225
235 | 🍏 apple: 226
236 | 🍏 apple: 227
237 | 🍏 apple: 228
238 | 🍏 apple: 229
239 | 🍏 apple: 230
240 | 🍏 apple: 231
241 | 🍏 apple: 232
242 | 🍏 apple: 233
243 | 🍏 apple: 234
244 | 🍏 apple: 235
245 | 🍏 apple: 236
246 | 🍏 apple: 237
247 | 🍏 apple: 238
248 | 🍏 apple: 239
249 | 🍏 apple: 240
250 | 🍏 apple: 241
251 | 🍏 apple: 242
252 | 🍏 apple: 243
253 | 🍏 apple: 244
254 | 🍏 apple: 245
255 | 🍏 apple: 246
256 | 🍏 apple: 247
257 | 🍏 apple: 248
258 | 🍏 apple: 249
259 | 🍏 apple: 250
260 | 🍏 apple: 251
261 | 🍏 apple: 252
262 | 🍏 apple: 253
263 | 🍏 apple: 254
264 | 🍏 apple: 255
265 | 🍏 apple: 256
266 | 🍏 apple: 257
267 | 🍏 apple: 258
268 | 🍏 apple: 259
269 | 🍏 apple: 260
270 | 🍏 apple: 261
271 | 🍏 apple: 262
272 | 🍏 apple: 263
273 | 🍏 apple: 264
274 | 🍏 apple: 265
275 | 🍏 apple: 266
276 | 🍏 apple: 267
277 | 🍏 apple: 268
278 | 🍏 apple: 269
279 | 🍏 apple: 270
280 | 🍏 apple: 271
281 | 🍏 apple: 272
282 | 🍏 apple: 273
283 | 🍏 apple: 274
284 | 🍏 apple: 275
285 | 🍏 apple: 276
286 | 🍏 apple: 277
287 | 🍏 apple: 278
288 | 🍏 apple: 279
289 | 🍏 apple: 280
290 | 🍏 apple: 281
291 | 🍏 apple: 282
292 | 🍏 apple: 283
293 | 🍏 apple: 284
294 | 🍏 apple: 285
295 | 🍏 apple: 286
296 | 🍏 apple: 287
297 | 🍏 apple: 288
298 | 🍏 apple: 289
299 | 🍏 apple: 290
300 | 🍏 apple: 291
301 | 🍏 apple: 292
302 | 🍏 apple: 293
303 | 🍏 apple: 294
304 | 🍏 apple: 295
305 | 🍏 apple: 296
306 | 🍏 apple: 297
307 | 🍏 apple: 298
308 | 🍏 apple: 299
309 | 🍏 apple: 300
310 | 🍏 apple: 301
311 | 🍏 apple: 302
312 | 🍏 apple: 303
313 | 🍏 apple: 304
314 | 🍏 apple: 305
315 | 🍏 apple: 306
316 | 🍏 apple: 307
317 | 🍏 apple: 308
318 | 🍏 apple: 309
319 | 🍏 apple: 310
320 | 🍏 apple: 311
321 | 🍏 apple: 312
322 | 🍏 apple: 313
323 | 🍏 apple: 314
324 | 🍏 apple: 315
325 | 🍏 apple: 316
326 | 🍏 apple: 317
327 | 🍏 apple: 318
328 | 🍏 apple: 319
329 | 🍏 apple: 320
330 | 🍏 apple: 321
331 | 🍏 apple: 322
332 | 🍏 apple: 323
333 | 🍏 apple: 324
334 | 🍏 apple: 325
335 | 🍏 apple: 326
336 | 🍏 apple: 327
337 | 🍏 apple: 328
338 | 🍏 apple: 329
339 | 🍏 apple: 330
340 | 🍏 apple: 331
341 | 🍏 apple: 332
342 | 🍏 apple: 333
343 | 🍏 apple: 334
344 | 🍏 apple: 335
345 | 🍏 apple: 336
346 | 🍏 apple: 337
347 | 🍏 apple: 338
348 | 🍏 apple: 339
349 | 🍏 apple: 340
350 | 🍏 apple: 341
351 | 🍏 apple: 342
352 | 🍏 apple: 343
353 | 🍏 apple: 344
354 | 🍏 apple: 345
355 | 🍏 apple: 346
356 | 🍏 apple: 347
357 | 🍏 apple: 348
358 | 🍏 apple: 349
359 | 🍏 apple: 350
360 | 🍏 apple: 351
361 | 🍏 apple: 352
362 | 🍏 apple: 353
363 | 🍏 apple: 354
364 | 🍏 apple: 355
365 | 🍏 apple: 356
366 | 🍏 apple: 357
367 | 🍏 apple: 358
368 | 🍏 apple: 359
369 | 🍏 apple: 360
370 | 🍏 apple: 361
371 | 🍏 apple: 362
372 | 🍏 apple: 363
373 | 🍏 apple: 364
374 | 🍏 apple: 365
375 | 🍏 apple: 366
376 | 🍏 apple: 367
377 | 🍏 apple: 368
378 | 🍏 apple: 369
379 | 🍏 apple: 370
380 | 🍏 apple: 371
381 | 🍏 apple: 372
382 | 🍏 apple: 373
383 | 🍏 apple: 374
384 | 🍏 apple: 375
385 | 🍏 apple: 376
386 | 🍏 apple: 377
387 | 🍏 apple: 378
388 | 🍏 apple: 379
389 | 🍏 apple: 380
390 | 🍏 apple: 381
391 | 🍏 apple: 382
392 | 🍏 apple: 383
393 | 🍏 apple: 384
394 | 🍏 apple: 385
395 | 🍏 apple: 386
396 | 🍏 apple: 387
397 | 🍏 apple: 388
398 | 🍏 apple: 389
399 | 🍏 apple: 390
400 | 🍏 apple: 391
401 | 🍏 apple: 392
402 | 🍏 apple: 393
403 | 🍏 apple: 394
404 | 🍏 apple: 395
405 | 🍏 apple: 396
406 | 🍏 apple: 397
407 | 🍏 apple: 398
408 | 🍏 apple: 399
409 | 🍏 apple: 400
410 | 🍏 apple: 401
411 | 🍏 apple: 402
412 | 🍏 apple: 403
413 | 🍏 apple: 404
414 | 🍏 apple: 405
415 | 🍏 apple: 406
416 | 🍏 apple: 407
417 | 🍏 apple: 408
418 | 🍏 apple: 409
419 | 🍏 apple: 410
420 | 🍏 apple: 411
421 | 🍏 apple: 412
422 | 🍏 apple: 413
423 | 🍏 apple: 414
424 | 🍏 apple: 415
425 | 🍏 apple: 416
426 | 🍏 apple: 417
427 | 🍏 apple: 418
428 | 🍏 apple: 419
429 | 🍏 apple: 420
430 | 🍏 apple: 421
431 | 🍏 apple: 422
432 | 🍏 apple: 423
433 | 🍏 apple: 424
434 | 🍏 apple: 425
435 | 🍏 apple: 426
436 | 🍏 apple: 427
437 | 🍏 apple: 428
438 | 🍏 apple: 429
439 | 🍏 apple: 430
440 | 🍏 apple: 431
441 | 🍏 apple: 432
442 | 🍏 apple: 433
443 | 🍏 apple: 434
444 | 🍏 apple: 435
445 | 🍏 apple: 436
446 | 🍏 apple: 437
447 | 🍏 apple: 438
448 | 🍏 apple: 439
449 | 🍏 apple: 440
450 | 🍏 apple: 441
451 | 🍏 apple: 442
452 | 🍏 apple: 443
453 | 🍏 apple: 444
454 | 🍏 apple: 445
455 | 🍏 apple: 446
456 | 🍏 apple: 447
457 | 🍏 apple: 448
458 | 🍏 apple: 449
459 | 🍏 apple: 450
460 | 🍏 apple: 451
461 | 🍏 apple: 452
462 | 🍏 apple: 453
463 | 🍏 apple: 454
464 | 🍏 apple: 455
465 | 🍏 apple: 456
466 | 🍏 apple: 457
467 | 🍏 apple: 458
468 | 🍏 apple: 459
469 | 🍏 apple: 460
470 | 🍏 apple: 461
471 | 🍏 apple: 462
472 | 🍏 apple: 463
473 | 🍏 apple: 464
474 | 🍏 apple: 465
475 | 🍏 apple: 466
476 | 🍏 apple: 467
477 | 🍏 apple: 468
478 | 🍏 apple: 469
479 | 🍏 apple: 470
480 | 🍏 apple: 471
481 | 🍏 apple: 472
482 | 🍏 apple: 473
483 | 🍏 apple: 474
484 | 🍏 apple: 475
485 | 🍏 apple: 476
486 | 🍏 apple: 477
487 | 🍏 apple: 478
488 | 🍏 apple: 479
489 | 🍏 apple: 480
490 | 🍏 apple: 481
491 | 🍏 apple: 482
492 | 🍏 apple: 483
493 | 🍏 apple: 484
494 | 🍏 apple: 485
495 | 🍏 apple: 486
496 | 🍏 apple: 487
497 | 🍏 apple: 488
498 | 🍏 apple: 489
499 | 🍏 apple: 490
500 | 🍏 apple: 491
501 | 🍏 apple: 492
502 | 🍏 apple: 493
503 | 🍏 apple: 494
504 | 🍏 apple: 495
505 | 🍏 apple: 496
506 | 🍏 apple: 497
507 | 🍏 apple: 498
508 | 🍏 apple: 499
509 | 🍏 apple: 500
510 | 🍏 apple: 501
511 | 🍏 apple: 502
512 | 🍏 apple: 503
513 | 🍏 apple: 504
514 | 🍏 apple: 505
515 | 🍏 apple: 506
516 | 🍏 apple: 507
517 | 🍏 apple: 508
518 | 🍏 apple: 509
519 | 🍏 apple: 510
520 | 🍏 apple: 511
521 | 🍏 apple: 512
522 | 🍏 apple: 513
523 | 🍏 apple: 514
524 | 🍏 apple: 515
525 | 🍏 apple: 516
526 | 🍏 apple: 517
527 | 🍏 apple: 518
528 | 🍏 apple: 519
529 | 🍏 apple: 520
530 | 🍏 apple: 521
531 | 🍏 apple: 522
532 | 🍏 apple: 523
533 | 🍏 apple: 524
534 | 🍏 apple: 525
535 | 🍏 apple: 526
536 | 🍏 apple: 527
537 | 🍏 apple: 528
538 | 🍏 apple: 529
539 | 🍏 apple: 530
540 | 🍏 apple: 531
541 | 🍏 apple: 532
542 | 🍏 apple: 533
543 | 🍏 apple: 534
544 | 🍏 apple: 535
545 | 🍏 apple: 536
546 | 🍏 apple: 537
547 | 🍏 apple: 538
548 | 🍏 apple: 539
549 | 🍏 apple: 540
550 | 🍏 apple: 541
551 | 🍏 apple: 542
552 | 🍏 apple: 543
553 | 🍏 apple: 544
554 | 🍏 apple: 545
555 | 🍏 apple: 546
556 | 🍏 apple: 547
557 | 🍏 apple: 548
558 | 🍏 apple: 549
559 | 🍏 apple: 550
560 | 🍏 apple: 551
561 | 🍏 apple: 552
562 | 🍏 apple: 553
563 | 🍏 apple: 554
564 | 🍏 apple: 555
565 | 🍏 apple: 556
566 | 🍏 apple: 557
567 | 🍏 apple: 558
568 | 🍏 apple: 559
569 | 🍏 apple: 560
570 | 🍏 apple: 561
571 | 🍏 apple: 562
572 | 🍏 apple: 563
573 | 🍏 apple: 564
574 | 🍏 apple: 565
575 | 🍏 apple: 566
576 | 🍏 apple: 567
577 | 🍏 apple: 568
578 | 🍏 apple: 569
579 | 🍏 apple: 570
580 | 🍏 apple: 571
581 | 🍏 apple: 572
582 | 🍏 apple: 573
583 | 🍏 apple: 574
584 | 🍏 apple: 575
585 | 🍏 apple: 576
586 | 🍏 apple: 577
587 | 🍏 apple: 578
588 | 🍏 apple: 579
589 | 🍏 apple: 580
590 | 🍏 apple: 581
591 | 🍏 apple: 582
592 | 🍏 apple: 583
593 | 🍏 apple: 584
594 | 🍏 apple: 585
595 | 🍏 apple: 586
596 | 🍏 apple: 587
597 | 🍏 apple: 588
598 | 🍏 apple: 589
599 | 🍏 apple: 590
600 | 🍏 apple: 591
601 | 🍏 apple: 592
602 | 🍏 apple: 593
603 | 🍏 apple: 594
604 | 🍏 apple: 595
605 | 🍏 apple: 596
606 | 🍏 apple: 597
607 | 🍏 apple: 598
608 | 🍏 apple: 599
609 | 🍏 apple: 600
610 | 🍏 apple: 601
611 | 🍏 apple: 602
612 | 🍏 apple: 603
613 | 🍏 apple: 604
614 | 🍏 apple: 605
615 | 🍏 apple: 606
616 | 🍏 apple: 607
617 | 🍏 apple: 608
618 | 🍏 apple: 609
619 | 🍏 apple: 610
620 | 🍏 apple: 611
621 | 🍏 apple: 612
622 | 🍏 apple: 613
623 | 🍏 apple: 614
624 | 🍏 apple: 615
625 | 🍏 apple: 616
626 | 🍏 apple: 617
627 | 🍏 apple: 618
628 | 🍏 apple: 619
629 | 🍏 apple: 620
630 | 🍏 apple: 621
631 | 🍏 apple: 622
632 | 🍏 apple: 623
633 | 🍏 apple: 624
634 | 🍏 apple: 625
635 | 🍏 apple: 626
636 | 🍏 apple: 627
637 | 🍏 apple: 628
638 | 🍏 apple: 629
639 | 🍏 apple: 630
640 | 🍏 apple: 631
641 | 🍏 apple: 632
642 | 🍏 apple: 633
643 | 🍏 apple: 634
644 | 🍏 apple: 635
645 | 🍏 apple: 636
646 | 🍏 apple: 637
647 | 🍏 apple: 638
648 | 🍏 apple: 639
649 | 🍏 apple: 640
650 | 🍏 apple: 641
651 | 🍏 apple: 642
652 | 🍏 apple: 643
653 | 🍏 apple: 644
654 | 🍏 apple: 645
655 | 🍏 apple: 646
656 | 🍏 apple: 647
657 | 🍏 apple: 648
658 | 🍏 apple: 649
659 | 🍏 apple: 650
660 | 🍏 apple: 651
661 | 🍏 apple: 652
662 | 🍏 apple: 653
663 | 🍏 apple: 654
664 | 🍏 apple: 655
665 | 🍏 apple: 656
666 | 🍏 apple: 657
667 | 🍏 apple: 658
668 | 🍏 apple: 659
669 | 🍏 apple: 660
670 | 🍏 apple: 661
671 | 🍏 apple: 662
672 | 🍏 apple: 663
673 | 🍏 apple: 664
674 | 🍏 apple: 665
675 | 🍏 apple: 666
676 | 🍏 apple: 667
677 | 🍏 apple: 668
678 | 🍏 apple: 669
679 | 🍏 apple: 670
680 | 🍏 apple: 671
681 | 🍏 apple: 672
682 | 🍏 apple: 673
683 | 🍏 apple: 674
684 | 🍏 apple: 675
685 | 🍏 apple: 676
686 | 🍏 apple: 677
687 | 🍏 apple: 678
688 | 🍏 apple: 679
689 | 🍏 apple: 680
690 | 🍏 apple: 681
691 | 🍏 apple: 682
692 | 🍏 apple: 683
693 | 🍏 apple: 684
694 | 🍏 apple: 685
695 | 🍏 apple: 686
696 | 🍏 apple: 687
697 | 🍏 apple: 688
698 | 🍏 apple: 689
699 | 🍏 apple: 690
700 | 🍏 apple: 691
701 | 🍏 apple: 692
702 | 🍏 apple: 693
703 | 🍏 apple: 694
704 | 🍏 apple: 695
705 | 🍏 apple: 696
706 | 🍏 apple: 697
707 | 🍏 apple: 698
708 | 🍏 apple: 699
709 | 🍏 apple: 700
710 | 🍏 apple: 701
711 | 🍏 apple: 702
712 | 🍏 apple: 703
713 | 🍏 apple: 704
714 | 🍏 apple: 705
715 | 🍏 apple: 706
716 | 🍏 apple: 707
717 | 🍏 apple: 708
718 | 🍏 apple: 709
719 | 🍏 apple: 710
720 | 🍏 apple: 711
721 | 🍏 apple: 712
722 | 🍏 apple: 713
723 | 🍏 apple: 714
724 | 🍏 apple: 715
725 | 🍏 apple: 716
726 | 🍏 apple: 717
727 | 🍏 apple: 718
728 | 🍏 apple: 719
729 | 🍏 apple: 720
730 | 🍏 apple: 721
731 | 🍏 apple: 722
732 | 🍏 apple: 723
733 | 🍏 apple: 724
734 | 🍏 apple: 725
735 | 🍏 apple: 726
736 | 🍏 apple: 727
737 | 🍏 apple: 728
738 | 🍏 apple: 729
739 | 🍏 apple: 730
740 | 🍏 apple: 731
741 | 🍏 apple: 732
742 | 🍏 apple: 733
743 | 🍏 apple: 734
744 | 🍏 apple: 735
745 | 🍏 apple: 736
746 | 🍏 apple: 737
747 | 🍏 apple: 738
748 | 🍏 apple: 739
749 | 🍏 apple: 740
750 | 🍏 apple: 741
751 | 🍏 apple: 742
752 | 🍏 apple: 743
753 | 🍏 apple: 744
754 | 🍏 apple: 745
755 | 🍏 apple: 746
756 | 🍏 apple: 747
757 | 🍏 apple: 748
758 | 🍏 apple: 749
759 | 🍏 apple: 750
760 | 🍏 apple: 751
761 | 🍏 apple: 752
762 | 🍏 apple: 753
763 | 🍏 apple: 754
764 | 🍏 apple: 755
765 | 🍏 apple: 756
766 | 🍏 apple: 757
767 | 🍏 apple: 758
768 | 🍏 apple: 759
769 | 🍏 apple: 760
770 | 🍏 apple: 761
771 | 🍏 apple: 762
772 | 🍏 apple: 763
773 | 🍏 apple: 764
774 | 🍏 apple: 765
775 | 🍏 apple: 766
776 | 🍏 apple: 767
777 | 🍏 apple: 768
778 | 🍏 apple: 769
779 | 🍏 apple: 770
780 | 🍏 apple: 771
781 | 🍏 apple: 772
782 | 🍏 apple: 773
783 | 🍏 apple: 774
784 | 🍏 apple: 775
785 | 🍏 apple: 776
786 | 🍏 apple: 777
787 | 🍏 apple: 778
788 | 🍏 apple: 779
789 | 🍏 apple: 780
790 | 🍏 apple: 781
791 | 🍏 apple: 782
792 | 🍏 apple: 783
793 | 🍏 apple: 784
794 | 🍏 apple: 785
795 | 🍏 apple: 786
796 | 🍏 apple: 787
797 | 🍏 apple: 788
798 | 🍏 apple: 789
799 | 🍏 apple: 790
800 | 🍏 apple: 791
801 | 🍏 apple: 792
802 | 🍏 apple: 793
803 | 🍏 apple: 794
804 | 🍏 apple: 795
805 | 🍏 apple: 796
806 | 🍏 apple: 797
807 | 🍏 apple: 798
808 | 🍏 apple: 799
809 | 🍏 apple: 800
810 | 🍏 apple: 801
811 | 🍏 apple: 802
812 | 🍏 apple: 803
813 | 🍏 apple: 804
814 | 🍏 apple: 805
815 | 🍏 apple: 806
816 | 🍏 apple: 807
817 | 🍏 apple: 808
818 | 🍏 apple: 809
819 | 🍏 apple: 810
820 | 🍏 apple: 811
821 | 🍏 apple: 812
822 | 🍏 apple: 813
823 | 🍏 apple: 814
824 | 🍏 apple: 815
825 | 🍏 apple: 816
826 | 🍏 apple: 817
827 | 🍏 apple: 818
828 | 🍏 apple: 819
829 | 🍏 apple: 820
830 | 🍏 apple: 821
831 | 🍏 apple: 822
832 | 🍏 apple: 823
833 | 🍏 apple: 824
834 | 🍏 apple: 825
835 | 🍏 apple: 826
836 | 🍏 apple: 827
837 | 🍏 apple: 828
838 | 🍏 apple: 829
839 | 🍏 apple: 830
840 | 🍏 apple: 831
841 | 🍏 apple: 832
842 | 🍏 apple: 833
843 | 🍏 apple: 834
844 | 🍏 apple: 835
845 | 🍏 apple: 836
846 | 🍏 apple: 837
847 | 🍏 apple: 838
848 | 🍏 apple: 839
849 | 🍏 apple: 840
850 | 🍏 apple: 841
851 | 🍏 apple: 842
852 | 🍏 apple: 843
853 | 🍏 apple: 844
854 | 🍏 apple: 845
855 | 🍏 apple: 846
856 | 🍏 apple: 847
857 | 🍏 apple: 848
858 | 🍏 apple: 849
859 | 🍏 apple: 850
860 | 🍏 apple: 851
861 | 🍏 apple: 852
862 | 🍏 apple: 853
863 | 🍏 apple: 854
864 | 🍏 apple: 855
865 | 🍏 apple: 856
866 | 🍏 apple: 857
867 | 🍏 apple: 858
868 | 🍏 apple: 859
869 | 🍏 apple: 860
870 | 🍏 apple: 861
871 | 🍏 apple: 862
872 | 🍏 apple: 863
873 | 🍏 apple: 864
874 | 🍏 apple: 865
875 | 🍏 apple: 866
876 | 🍏 apple: 867
877 | 🍏 apple: 868
878 | 🍏 apple: 869
879 | 🍏 apple: 870
880 | 🍏 apple: 871
881 | 🍏 apple: 872
882 | 🍏 apple: 873
883 | 🍏 apple: 874
884 | 🍏 apple: 875
885 | 🍏 apple: 876
886 | 🍏 apple: 877
887 | 🍏 apple: 878
888 | 🍏 apple: 879
889 | 🍏 apple: 880
890 | 🍏 apple: 881
891 | 🍏 apple: 882
892 | 🍏 apple: 883
893 | 🍏 apple: 884
894 | 🍏 apple: 885
895 | 🍏 apple: 886
896 | 🍏 apple: 887
897 | 🍏 apple: 888
898 | 🍏 apple: 889
899 | 🍏 apple: 890
900 | 🍏 apple: 891
901 | 🍏 apple: 892
902 | 🍏 apple: 893
903 | 🍏 apple: 894
904 | 🍏 apple: 895
905 | 🍏 apple: 896
906 | 🍏 apple: 897
907 | 🍏 apple: 898
908 | 🍏 apple: 899
909 | 🍏 apple: 900
910 | 🍏 apple: 901
911 | 🍏 apple: 902
912 | 🍏 apple: 903
913 | 🍏 apple: 904
914 | 🍏 apple: 905
915 | 🍏 apple: 906
916 | 🍏 apple: 907
917 | 🍏 apple: 908
918 | 🍏 apple: 909
919 | 🍏 apple: 910
920 | 🍏 apple: 911
921 | 🍏 apple: 912
922 | 🍏 apple: 913
923 | 🍏 apple: 914
924 | 🍏 apple: 915
925 | 🍏 apple: 916
926 | 🍏 apple: 917
927 | 🍏 apple: 918
928 | 🍏 apple: 919
929 | 🍏 apple: 920
930 | 🍏 apple: 921
931 | 🍏 apple: 922
932 | 🍏 apple: 923
933 | 🍏 apple: 924
934 | 🍏 apple: 925
935 | 🍏 apple: 926
936 | 🍏 apple: 927
937 | 🍏 apple: 928
938 | 🍏 apple: 929
939 | 🍏 apple: 930
940 | 🍏 apple: 931
941 | 🍏 apple: 932
942 | 🍏 apple: 933
943 | 🍏 apple: 934
944 | 🍏 apple: 935
945 | 🍏 apple: 936
946 | 🍏 apple: 937
947 | 🍏 apple: 938
948 | 🍏 apple: 939
949 | 🍏 apple: 940
950 | 🍏 apple: 941
951 | 🍏 apple: 942
952 | 🍏 apple: 943
953 | 🍏 apple: 944
954 | 🍏 apple: 945
955 | 🍏 apple: 946
956 | 🍏 apple: 947
957 | 🍏 apple: 948
958 | 🍏 apple: 949
959 | 🍏 apple: 950
960 | 🍏 apple: 951
961 | 🍏 apple: 952
962 | 🍏 apple: 953
963 | 🍏 apple: 954
964 | 🍏 apple: 955
965 | 🍏 apple: 956
966 | 🍏 apple: 957
967 | 🍏 apple: 958
968 | 🍏 apple: 959
969 | 🍏 apple: 960
970 | 🍏 apple: 961
971 | 🍏 apple: 962
972 | 🍏 apple: 963
973 | 🍏 apple: 964
974 | 🍏 apple: 965
975 | 🍏 apple: 966
976 | 🍏 apple: 967
977 | 🍏 apple: 968
978 | 🍏 apple: 969
979 | 🍏 apple: 970
980 | 🍏 apple: 971
981 | 🍏 apple: 972
982 | 🍏 apple: 973
983 | 🍏 apple: 974
984 | 🍏 apple: 975
985 | 🍏 apple: 976
986 | 🍏 apple: 977
987 | 🍏 apple: 978
988 | 🍏 apple: 979
989 | 🍏 apple: 980
990 | 🍏 apple: 981
991 | 🍏 apple: 982
992 | 🍏 apple: 983
993 | 🍏 apple: 984
994 | 🍏 apple: 985
995 | 🍏 apple: 986
996 | 🍏 apple: 987
997 | 🍏 apple: 988
998 | 🍏 apple: 989
999 | 🍏 apple: 990
1000 | 🍏 apple: 991
1001 | 🍏 apple: 992
1002 | 🍏 apple: 993
1003 | 🍏 apple: 994
1004 | 🍏 apple: 995
1005 | 🍏 apple: 996
1006 | 🍏 apple: 997
1007 | 🍏 apple: 998
1008 | 🍏 apple: 999
1009 | 🍏 apple: 1000
1010 |
1011 |
1012 |
--------------------------------------------------------------------------------
/html/no-script-dcl.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | No Script DCL
7 |
8 |
9 |
12 |
13 |
14 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | 🍏 apple: 1
29 | 🍏 apple: 2
30 | 🍏 apple: 3
31 |
32 |
33 |
34 |
35 | 🍏 apple: 4
36 | 🍏 apple: 5
37 | 🍏 apple: 6
38 |
39 |
40 |
41 |
42 | 🍏 apple: 7
43 | 🍏 apple: 8
44 | 🍏 apple: 9
45 | 🍏 apple: 10
46 |
47 |
48 |
--------------------------------------------------------------------------------
/html/parser-blocking.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Parser Blocking
7 |
8 |
9 |
10 | 🍏 apple: 1
11 | 🍏 apple: 2
12 | 🍏 apple: 3
13 | 🍏 apple: 4
14 | 🍏 apple: 5
15 | 🍏 apple: 6
16 | 🍏 apple: 7
17 | 🍏 apple: 8
18 | 🍏 apple: 9
19 | 🍏 apple: 10
20 | 🍏 apple: 11
21 | 🍏 apple: 12
22 | 🍏 apple: 13
23 | 🍏 apple: 14
24 | 🍏 apple: 15
25 | 🍏 apple: 16
26 | 🍏 apple: 17
27 | 🍏 apple: 18
28 | 🍏 apple: 19
29 | 🍏 apple: 20
30 | 🍏 apple: 21
31 | 🍏 apple: 22
32 | 🍏 apple: 23
33 | 🍏 apple: 24
34 | 🍏 apple: 25
35 | 🍏 apple: 26
36 | 🍏 apple: 27
37 | 🍏 apple: 28
38 | 🍏 apple: 29
39 | 🍏 apple: 30
40 |
41 |
42 |
43 |
44 | 🍏 apple: 31
45 | 🍏 apple: 32
46 | 🍏 apple: 33
47 | 🍏 apple: 34
48 | 🍏 apple: 35
49 | 🍏 apple: 36
50 | 🍏 apple: 37
51 | 🍏 apple: 38
52 | 🍏 apple: 39
53 | 🍏 apple: 40
54 |
55 |
56 |
57 |
58 | 🍏 apple: 41
59 | 🍏 apple: 42
60 | 🍏 apple: 43
61 | 🍏 apple: 44
62 | 🍏 apple: 45
63 | 🍏 apple: 46
64 | 🍏 apple: 47
65 | 🍏 apple: 48
66 | 🍏 apple: 49
67 | 🍏 apple: 50
68 |
69 | 🍏 apple: 51
70 | 🍏 apple: 52
71 | 🍏 apple: 53
72 | 🍏 apple: 54
73 | 🍏 apple: 55
74 | 🍏 apple: 56
75 | 🍏 apple: 57
76 | 🍏 apple: 58
77 | 🍏 apple: 59
78 | 🍏 apple: 60
79 | 🍏 apple: 61
80 | 🍏 apple: 62
81 | 🍏 apple: 63
82 | 🍏 apple: 64
83 | 🍏 apple: 65
84 | 🍏 apple: 66
85 | 🍏 apple: 67
86 | 🍏 apple: 68
87 | 🍏 apple: 69
88 | 🍏 apple: 70
89 | 🍏 apple: 71
90 | 🍏 apple: 72
91 | 🍏 apple: 73
92 | 🍏 apple: 74
93 | 🍏 apple: 75
94 | 🍏 apple: 76
95 | 🍏 apple: 77
96 | 🍏 apple: 78
97 | 🍏 apple: 79
98 | 🍏 apple: 80
99 | 🍏 apple: 81
100 | 🍏 apple: 82
101 | 🍏 apple: 83
102 | 🍏 apple: 84
103 | 🍏 apple: 85
104 | 🍏 apple: 86
105 | 🍏 apple: 87
106 | 🍏 apple: 88
107 | 🍏 apple: 89
108 | 🍏 apple: 90
109 | 🍏 apple: 91
110 | 🍏 apple: 92
111 | 🍏 apple: 93
112 | 🍏 apple: 94
113 | 🍏 apple: 95
114 | 🍏 apple: 96
115 | 🍏 apple: 97
116 | 🍏 apple: 98
117 | 🍏 apple: 99
118 | 🍏 apple: 100
119 | 🍏 apple: 101
120 | 🍏 apple: 102
121 | 🍏 apple: 103
122 | 🍏 apple: 104
123 | 🍏 apple: 105
124 | 🍏 apple: 106
125 | 🍏 apple: 107
126 | 🍏 apple: 108
127 | 🍏 apple: 109
128 | 🍏 apple: 110
129 | 🍏 apple: 111
130 | 🍏 apple: 112
131 | 🍏 apple: 113
132 | 🍏 apple: 114
133 | 🍏 apple: 115
134 | 🍏 apple: 116
135 | 🍏 apple: 117
136 | 🍏 apple: 118
137 | 🍏 apple: 119
138 | 🍏 apple: 120
139 | 🍏 apple: 121
140 | 🍏 apple: 122
141 | 🍏 apple: 123
142 | 🍏 apple: 124
143 | 🍏 apple: 125
144 | 🍏 apple: 126
145 | 🍏 apple: 127
146 | 🍏 apple: 128
147 | 🍏 apple: 129
148 | 🍏 apple: 130
149 | 🍏 apple: 131
150 | 🍏 apple: 132
151 | 🍏 apple: 133
152 | 🍏 apple: 134
153 | 🍏 apple: 135
154 | 🍏 apple: 136
155 | 🍏 apple: 137
156 | 🍏 apple: 138
157 | 🍏 apple: 139
158 | 🍏 apple: 140
159 | 🍏 apple: 141
160 | 🍏 apple: 142
161 | 🍏 apple: 143
162 | 🍏 apple: 144
163 | 🍏 apple: 145
164 | 🍏 apple: 146
165 | 🍏 apple: 147
166 | 🍏 apple: 148
167 | 🍏 apple: 149
168 | 🍏 apple: 150
169 | 🍏 apple: 151
170 | 🍏 apple: 152
171 | 🍏 apple: 153
172 | 🍏 apple: 154
173 | 🍏 apple: 155
174 | 🍏 apple: 156
175 | 🍏 apple: 157
176 | 🍏 apple: 158
177 | 🍏 apple: 159
178 | 🍏 apple: 160
179 | 🍏 apple: 161
180 | 🍏 apple: 162
181 | 🍏 apple: 163
182 | 🍏 apple: 164
183 | 🍏 apple: 165
184 | 🍏 apple: 166
185 | 🍏 apple: 167
186 | 🍏 apple: 168
187 | 🍏 apple: 169
188 | 🍏 apple: 170
189 | 🍏 apple: 171
190 | 🍏 apple: 172
191 | 🍏 apple: 173
192 | 🍏 apple: 174
193 | 🍏 apple: 175
194 | 🍏 apple: 176
195 | 🍏 apple: 177
196 | 🍏 apple: 178
197 | 🍏 apple: 179
198 | 🍏 apple: 180
199 | 🍏 apple: 181
200 | 🍏 apple: 182
201 | 🍏 apple: 183
202 | 🍏 apple: 184
203 | 🍏 apple: 185
204 | 🍏 apple: 186
205 | 🍏 apple: 187
206 | 🍏 apple: 188
207 | 🍏 apple: 189
208 | 🍏 apple: 190
209 | 🍏 apple: 191
210 | 🍏 apple: 192
211 | 🍏 apple: 193
212 | 🍏 apple: 194
213 | 🍏 apple: 195
214 | 🍏 apple: 196
215 | 🍏 apple: 197
216 | 🍏 apple: 198
217 | 🍏 apple: 199
218 | 🍏 apple: 200
219 | 🍏 apple: 201
220 | 🍏 apple: 202
221 | 🍏 apple: 203
222 | 🍏 apple: 204
223 | 🍏 apple: 205
224 | 🍏 apple: 206
225 | 🍏 apple: 207
226 | 🍏 apple: 208
227 | 🍏 apple: 209
228 | 🍏 apple: 210
229 | 🍏 apple: 211
230 | 🍏 apple: 212
231 | 🍏 apple: 213
232 | 🍏 apple: 214
233 | 🍏 apple: 215
234 | 🍏 apple: 216
235 | 🍏 apple: 217
236 | 🍏 apple: 218
237 | 🍏 apple: 219
238 | 🍏 apple: 220
239 | 🍏 apple: 221
240 | 🍏 apple: 222
241 | 🍏 apple: 223
242 | 🍏 apple: 224
243 | 🍏 apple: 225
244 | 🍏 apple: 226
245 | 🍏 apple: 227
246 | 🍏 apple: 228
247 | 🍏 apple: 229
248 | 🍏 apple: 230
249 | 🍏 apple: 231
250 | 🍏 apple: 232
251 | 🍏 apple: 233
252 | 🍏 apple: 234
253 | 🍏 apple: 235
254 | 🍏 apple: 236
255 | 🍏 apple: 237
256 | 🍏 apple: 238
257 | 🍏 apple: 239
258 | 🍏 apple: 240
259 | 🍏 apple: 241
260 | 🍏 apple: 242
261 | 🍏 apple: 243
262 | 🍏 apple: 244
263 | 🍏 apple: 245
264 | 🍏 apple: 246
265 | 🍏 apple: 247
266 | 🍏 apple: 248
267 | 🍏 apple: 249
268 | 🍏 apple: 250
269 | 🍏 apple: 251
270 | 🍏 apple: 252
271 | 🍏 apple: 253
272 | 🍏 apple: 254
273 | 🍏 apple: 255
274 | 🍏 apple: 256
275 | 🍏 apple: 257
276 | 🍏 apple: 258
277 | 🍏 apple: 259
278 | 🍏 apple: 260
279 | 🍏 apple: 261
280 | 🍏 apple: 262
281 | 🍏 apple: 263
282 | 🍏 apple: 264
283 | 🍏 apple: 265
284 | 🍏 apple: 266
285 | 🍏 apple: 267
286 | 🍏 apple: 268
287 | 🍏 apple: 269
288 | 🍏 apple: 270
289 | 🍏 apple: 271
290 | 🍏 apple: 272
291 | 🍏 apple: 273
292 | 🍏 apple: 274
293 | 🍏 apple: 275
294 | 🍏 apple: 276
295 | 🍏 apple: 277
296 | 🍏 apple: 278
297 | 🍏 apple: 279
298 | 🍏 apple: 280
299 | 🍏 apple: 281
300 | 🍏 apple: 282
301 | 🍏 apple: 283
302 | 🍏 apple: 284
303 | 🍏 apple: 285
304 | 🍏 apple: 286
305 | 🍏 apple: 287
306 | 🍏 apple: 288
307 | 🍏 apple: 289
308 | 🍏 apple: 290
309 | 🍏 apple: 291
310 | 🍏 apple: 292
311 | 🍏 apple: 293
312 | 🍏 apple: 294
313 | 🍏 apple: 295
314 | 🍏 apple: 296
315 | 🍏 apple: 297
316 | 🍏 apple: 298
317 | 🍏 apple: 299
318 | 🍏 apple: 300
319 | 🍏 apple: 301
320 | 🍏 apple: 302
321 | 🍏 apple: 303
322 | 🍏 apple: 304
323 | 🍏 apple: 305
324 | 🍏 apple: 306
325 | 🍏 apple: 307
326 | 🍏 apple: 308
327 | 🍏 apple: 309
328 | 🍏 apple: 310
329 | 🍏 apple: 311
330 | 🍏 apple: 312
331 | 🍏 apple: 313
332 | 🍏 apple: 314
333 | 🍏 apple: 315
334 | 🍏 apple: 316
335 | 🍏 apple: 317
336 | 🍏 apple: 318
337 | 🍏 apple: 319
338 | 🍏 apple: 320
339 | 🍏 apple: 321
340 | 🍏 apple: 322
341 | 🍏 apple: 323
342 | 🍏 apple: 324
343 | 🍏 apple: 325
344 | 🍏 apple: 326
345 | 🍏 apple: 327
346 | 🍏 apple: 328
347 | 🍏 apple: 329
348 | 🍏 apple: 330
349 | 🍏 apple: 331
350 | 🍏 apple: 332
351 | 🍏 apple: 333
352 | 🍏 apple: 334
353 | 🍏 apple: 335
354 | 🍏 apple: 336
355 | 🍏 apple: 337
356 | 🍏 apple: 338
357 | 🍏 apple: 339
358 | 🍏 apple: 340
359 | 🍏 apple: 341
360 | 🍏 apple: 342
361 | 🍏 apple: 343
362 | 🍏 apple: 344
363 | 🍏 apple: 345
364 | 🍏 apple: 346
365 | 🍏 apple: 347
366 | 🍏 apple: 348
367 | 🍏 apple: 349
368 | 🍏 apple: 350
369 | 🍏 apple: 351
370 | 🍏 apple: 352
371 | 🍏 apple: 353
372 | 🍏 apple: 354
373 | 🍏 apple: 355
374 | 🍏 apple: 356
375 | 🍏 apple: 357
376 | 🍏 apple: 358
377 | 🍏 apple: 359
378 | 🍏 apple: 360
379 | 🍏 apple: 361
380 | 🍏 apple: 362
381 | 🍏 apple: 363
382 | 🍏 apple: 364
383 | 🍏 apple: 365
384 | 🍏 apple: 366
385 | 🍏 apple: 367
386 | 🍏 apple: 368
387 | 🍏 apple: 369
388 | 🍏 apple: 370
389 | 🍏 apple: 371
390 | 🍏 apple: 372
391 | 🍏 apple: 373
392 | 🍏 apple: 374
393 | 🍏 apple: 375
394 | 🍏 apple: 376
395 | 🍏 apple: 377
396 | 🍏 apple: 378
397 | 🍏 apple: 379
398 | 🍏 apple: 380
399 | 🍏 apple: 381
400 | 🍏 apple: 382
401 | 🍏 apple: 383
402 | 🍏 apple: 384
403 | 🍏 apple: 385
404 | 🍏 apple: 386
405 | 🍏 apple: 387
406 | 🍏 apple: 388
407 | 🍏 apple: 389
408 | 🍏 apple: 390
409 | 🍏 apple: 391
410 | 🍏 apple: 392
411 | 🍏 apple: 393
412 | 🍏 apple: 394
413 | 🍏 apple: 395
414 | 🍏 apple: 396
415 | 🍏 apple: 397
416 | 🍏 apple: 398
417 | 🍏 apple: 399
418 | 🍏 apple: 400
419 | 🍏 apple: 401
420 | 🍏 apple: 402
421 | 🍏 apple: 403
422 | 🍏 apple: 404
423 | 🍏 apple: 405
424 | 🍏 apple: 406
425 | 🍏 apple: 407
426 | 🍏 apple: 408
427 | 🍏 apple: 409
428 | 🍏 apple: 410
429 | 🍏 apple: 411
430 | 🍏 apple: 412
431 | 🍏 apple: 413
432 | 🍏 apple: 414
433 | 🍏 apple: 415
434 | 🍏 apple: 416
435 | 🍏 apple: 417
436 | 🍏 apple: 418
437 | 🍏 apple: 419
438 | 🍏 apple: 420
439 | 🍏 apple: 421
440 | 🍏 apple: 422
441 | 🍏 apple: 423
442 | 🍏 apple: 424
443 | 🍏 apple: 425
444 | 🍏 apple: 426
445 | 🍏 apple: 427
446 | 🍏 apple: 428
447 | 🍏 apple: 429
448 | 🍏 apple: 430
449 | 🍏 apple: 431
450 | 🍏 apple: 432
451 | 🍏 apple: 433
452 | 🍏 apple: 434
453 | 🍏 apple: 435
454 | 🍏 apple: 436
455 | 🍏 apple: 437
456 | 🍏 apple: 438
457 | 🍏 apple: 439
458 | 🍏 apple: 440
459 | 🍏 apple: 441
460 | 🍏 apple: 442
461 | 🍏 apple: 443
462 | 🍏 apple: 444
463 | 🍏 apple: 445
464 | 🍏 apple: 446
465 | 🍏 apple: 447
466 | 🍏 apple: 448
467 | 🍏 apple: 449
468 | 🍏 apple: 450
469 | 🍏 apple: 451
470 | 🍏 apple: 452
471 | 🍏 apple: 453
472 | 🍏 apple: 454
473 | 🍏 apple: 455
474 | 🍏 apple: 456
475 | 🍏 apple: 457
476 | 🍏 apple: 458
477 | 🍏 apple: 459
478 | 🍏 apple: 460
479 | 🍏 apple: 461
480 | 🍏 apple: 462
481 | 🍏 apple: 463
482 | 🍏 apple: 464
483 | 🍏 apple: 465
484 | 🍏 apple: 466
485 | 🍏 apple: 467
486 | 🍏 apple: 468
487 | 🍏 apple: 469
488 | 🍏 apple: 470
489 | 🍏 apple: 471
490 | 🍏 apple: 472
491 | 🍏 apple: 473
492 | 🍏 apple: 474
493 | 🍏 apple: 475
494 | 🍏 apple: 476
495 | 🍏 apple: 477
496 | 🍏 apple: 478
497 | 🍏 apple: 479
498 | 🍏 apple: 480
499 | 🍏 apple: 481
500 | 🍏 apple: 482
501 | 🍏 apple: 483
502 | 🍏 apple: 484
503 | 🍏 apple: 485
504 | 🍏 apple: 486
505 | 🍏 apple: 487
506 | 🍏 apple: 488
507 | 🍏 apple: 489
508 | 🍏 apple: 490
509 | 🍏 apple: 491
510 | 🍏 apple: 492
511 | 🍏 apple: 493
512 | 🍏 apple: 494
513 | 🍏 apple: 495
514 | 🍏 apple: 496
515 | 🍏 apple: 497
516 | 🍏 apple: 498
517 | 🍏 apple: 499
518 | 🍏 apple: 500
519 | 🍏 apple: 501
520 | 🍏 apple: 502
521 | 🍏 apple: 503
522 | 🍏 apple: 504
523 | 🍏 apple: 505
524 | 🍏 apple: 506
525 | 🍏 apple: 507
526 | 🍏 apple: 508
527 | 🍏 apple: 509
528 | 🍏 apple: 510
529 | 🍏 apple: 511
530 | 🍏 apple: 512
531 | 🍏 apple: 513
532 | 🍏 apple: 514
533 | 🍏 apple: 515
534 | 🍏 apple: 516
535 | 🍏 apple: 517
536 | 🍏 apple: 518
537 | 🍏 apple: 519
538 | 🍏 apple: 520
539 | 🍏 apple: 521
540 | 🍏 apple: 522
541 | 🍏 apple: 523
542 | 🍏 apple: 524
543 | 🍏 apple: 525
544 | 🍏 apple: 526
545 | 🍏 apple: 527
546 | 🍏 apple: 528
547 | 🍏 apple: 529
548 | 🍏 apple: 530
549 | 🍏 apple: 531
550 | 🍏 apple: 532
551 | 🍏 apple: 533
552 | 🍏 apple: 534
553 | 🍏 apple: 535
554 | 🍏 apple: 536
555 | 🍏 apple: 537
556 | 🍏 apple: 538
557 | 🍏 apple: 539
558 | 🍏 apple: 540
559 | 🍏 apple: 541
560 | 🍏 apple: 542
561 | 🍏 apple: 543
562 | 🍏 apple: 544
563 | 🍏 apple: 545
564 | 🍏 apple: 546
565 | 🍏 apple: 547
566 | 🍏 apple: 548
567 | 🍏 apple: 549
568 | 🍏 apple: 550
569 | 🍏 apple: 551
570 | 🍏 apple: 552
571 | 🍏 apple: 553
572 | 🍏 apple: 554
573 | 🍏 apple: 555
574 | 🍏 apple: 556
575 | 🍏 apple: 557
576 | 🍏 apple: 558
577 | 🍏 apple: 559
578 | 🍏 apple: 560
579 | 🍏 apple: 561
580 | 🍏 apple: 562
581 | 🍏 apple: 563
582 | 🍏 apple: 564
583 | 🍏 apple: 565
584 | 🍏 apple: 566
585 | 🍏 apple: 567
586 | 🍏 apple: 568
587 | 🍏 apple: 569
588 | 🍏 apple: 570
589 | 🍏 apple: 571
590 | 🍏 apple: 572
591 | 🍏 apple: 573
592 | 🍏 apple: 574
593 | 🍏 apple: 575
594 | 🍏 apple: 576
595 | 🍏 apple: 577
596 | 🍏 apple: 578
597 | 🍏 apple: 579
598 | 🍏 apple: 580
599 | 🍏 apple: 581
600 | 🍏 apple: 582
601 | 🍏 apple: 583
602 | 🍏 apple: 584
603 | 🍏 apple: 585
604 | 🍏 apple: 586
605 | 🍏 apple: 587
606 | 🍏 apple: 588
607 | 🍏 apple: 589
608 | 🍏 apple: 590
609 | 🍏 apple: 591
610 | 🍏 apple: 592
611 | 🍏 apple: 593
612 | 🍏 apple: 594
613 | 🍏 apple: 595
614 | 🍏 apple: 596
615 | 🍏 apple: 597
616 | 🍏 apple: 598
617 | 🍏 apple: 599
618 | 🍏 apple: 600
619 | 🍏 apple: 601
620 | 🍏 apple: 602
621 | 🍏 apple: 603
622 | 🍏 apple: 604
623 | 🍏 apple: 605
624 | 🍏 apple: 606
625 | 🍏 apple: 607
626 | 🍏 apple: 608
627 | 🍏 apple: 609
628 | 🍏 apple: 610
629 | 🍏 apple: 611
630 | 🍏 apple: 612
631 | 🍏 apple: 613
632 | 🍏 apple: 614
633 | 🍏 apple: 615
634 | 🍏 apple: 616
635 | 🍏 apple: 617
636 | 🍏 apple: 618
637 | 🍏 apple: 619
638 | 🍏 apple: 620
639 | 🍏 apple: 621
640 | 🍏 apple: 622
641 | 🍏 apple: 623
642 | 🍏 apple: 624
643 | 🍏 apple: 625
644 | 🍏 apple: 626
645 | 🍏 apple: 627
646 | 🍏 apple: 628
647 | 🍏 apple: 629
648 | 🍏 apple: 630
649 | 🍏 apple: 631
650 | 🍏 apple: 632
651 | 🍏 apple: 633
652 | 🍏 apple: 634
653 | 🍏 apple: 635
654 | 🍏 apple: 636
655 | 🍏 apple: 637
656 | 🍏 apple: 638
657 | 🍏 apple: 639
658 | 🍏 apple: 640
659 | 🍏 apple: 641
660 | 🍏 apple: 642
661 | 🍏 apple: 643
662 | 🍏 apple: 644
663 | 🍏 apple: 645
664 | 🍏 apple: 646
665 | 🍏 apple: 647
666 | 🍏 apple: 648
667 | 🍏 apple: 649
668 | 🍏 apple: 650
669 | 🍏 apple: 651
670 | 🍏 apple: 652
671 | 🍏 apple: 653
672 | 🍏 apple: 654
673 | 🍏 apple: 655
674 | 🍏 apple: 656
675 | 🍏 apple: 657
676 | 🍏 apple: 658
677 | 🍏 apple: 659
678 | 🍏 apple: 660
679 | 🍏 apple: 661
680 | 🍏 apple: 662
681 | 🍏 apple: 663
682 | 🍏 apple: 664
683 | 🍏 apple: 665
684 | 🍏 apple: 666
685 | 🍏 apple: 667
686 | 🍏 apple: 668
687 | 🍏 apple: 669
688 | 🍏 apple: 670
689 | 🍏 apple: 671
690 | 🍏 apple: 672
691 | 🍏 apple: 673
692 | 🍏 apple: 674
693 | 🍏 apple: 675
694 | 🍏 apple: 676
695 | 🍏 apple: 677
696 | 🍏 apple: 678
697 | 🍏 apple: 679
698 | 🍏 apple: 680
699 | 🍏 apple: 681
700 | 🍏 apple: 682
701 | 🍏 apple: 683
702 | 🍏 apple: 684
703 | 🍏 apple: 685
704 | 🍏 apple: 686
705 | 🍏 apple: 687
706 | 🍏 apple: 688
707 | 🍏 apple: 689
708 | 🍏 apple: 690
709 | 🍏 apple: 691
710 | 🍏 apple: 692
711 | 🍏 apple: 693
712 | 🍏 apple: 694
713 | 🍏 apple: 695
714 | 🍏 apple: 696
715 | 🍏 apple: 697
716 | 🍏 apple: 698
717 | 🍏 apple: 699
718 | 🍏 apple: 700
719 | 🍏 apple: 701
720 | 🍏 apple: 702
721 | 🍏 apple: 703
722 | 🍏 apple: 704
723 | 🍏 apple: 705
724 | 🍏 apple: 706
725 | 🍏 apple: 707
726 | 🍏 apple: 708
727 | 🍏 apple: 709
728 | 🍏 apple: 710
729 | 🍏 apple: 711
730 | 🍏 apple: 712
731 | 🍏 apple: 713
732 | 🍏 apple: 714
733 | 🍏 apple: 715
734 | 🍏 apple: 716
735 | 🍏 apple: 717
736 | 🍏 apple: 718
737 | 🍏 apple: 719
738 | 🍏 apple: 720
739 | 🍏 apple: 721
740 | 🍏 apple: 722
741 | 🍏 apple: 723
742 | 🍏 apple: 724
743 | 🍏 apple: 725
744 | 🍏 apple: 726
745 | 🍏 apple: 727
746 | 🍏 apple: 728
747 | 🍏 apple: 729
748 | 🍏 apple: 730
749 | 🍏 apple: 731
750 | 🍏 apple: 732
751 | 🍏 apple: 733
752 | 🍏 apple: 734
753 | 🍏 apple: 735
754 | 🍏 apple: 736
755 | 🍏 apple: 737
756 | 🍏 apple: 738
757 | 🍏 apple: 739
758 | 🍏 apple: 740
759 | 🍏 apple: 741
760 | 🍏 apple: 742
761 | 🍏 apple: 743
762 | 🍏 apple: 744
763 | 🍏 apple: 745
764 | 🍏 apple: 746
765 | 🍏 apple: 747
766 | 🍏 apple: 748
767 | 🍏 apple: 749
768 | 🍏 apple: 750
769 | 🍏 apple: 751
770 | 🍏 apple: 752
771 | 🍏 apple: 753
772 | 🍏 apple: 754
773 | 🍏 apple: 755
774 | 🍏 apple: 756
775 | 🍏 apple: 757
776 | 🍏 apple: 758
777 | 🍏 apple: 759
778 | 🍏 apple: 760
779 | 🍏 apple: 761
780 | 🍏 apple: 762
781 | 🍏 apple: 763
782 | 🍏 apple: 764
783 | 🍏 apple: 765
784 | 🍏 apple: 766
785 | 🍏 apple: 767
786 | 🍏 apple: 768
787 | 🍏 apple: 769
788 | 🍏 apple: 770
789 | 🍏 apple: 771
790 | 🍏 apple: 772
791 | 🍏 apple: 773
792 | 🍏 apple: 774
793 | 🍏 apple: 775
794 | 🍏 apple: 776
795 | 🍏 apple: 777
796 | 🍏 apple: 778
797 | 🍏 apple: 779
798 | 🍏 apple: 780
799 | 🍏 apple: 781
800 | 🍏 apple: 782
801 | 🍏 apple: 783
802 | 🍏 apple: 784
803 | 🍏 apple: 785
804 | 🍏 apple: 786
805 | 🍏 apple: 787
806 | 🍏 apple: 788
807 | 🍏 apple: 789
808 | 🍏 apple: 790
809 | 🍏 apple: 791
810 | 🍏 apple: 792
811 | 🍏 apple: 793
812 | 🍏 apple: 794
813 | 🍏 apple: 795
814 | 🍏 apple: 796
815 | 🍏 apple: 797
816 | 🍏 apple: 798
817 | 🍏 apple: 799
818 | 🍏 apple: 800
819 | 🍏 apple: 801
820 | 🍏 apple: 802
821 | 🍏 apple: 803
822 | 🍏 apple: 804
823 | 🍏 apple: 805
824 | 🍏 apple: 806
825 | 🍏 apple: 807
826 | 🍏 apple: 808
827 | 🍏 apple: 809
828 | 🍏 apple: 810
829 | 🍏 apple: 811
830 | 🍏 apple: 812
831 | 🍏 apple: 813
832 | 🍏 apple: 814
833 | 🍏 apple: 815
834 | 🍏 apple: 816
835 | 🍏 apple: 817
836 | 🍏 apple: 818
837 | 🍏 apple: 819
838 | 🍏 apple: 820
839 | 🍏 apple: 821
840 | 🍏 apple: 822
841 | 🍏 apple: 823
842 | 🍏 apple: 824
843 | 🍏 apple: 825
844 | 🍏 apple: 826
845 | 🍏 apple: 827
846 | 🍏 apple: 828
847 | 🍏 apple: 829
848 | 🍏 apple: 830
849 | 🍏 apple: 831
850 | 🍏 apple: 832
851 | 🍏 apple: 833
852 | 🍏 apple: 834
853 | 🍏 apple: 835
854 | 🍏 apple: 836
855 | 🍏 apple: 837
856 | 🍏 apple: 838
857 | 🍏 apple: 839
858 | 🍏 apple: 840
859 | 🍏 apple: 841
860 | 🍏 apple: 842
861 | 🍏 apple: 843
862 | 🍏 apple: 844
863 | 🍏 apple: 845
864 | 🍏 apple: 846
865 | 🍏 apple: 847
866 | 🍏 apple: 848
867 | 🍏 apple: 849
868 | 🍏 apple: 850
869 | 🍏 apple: 851
870 | 🍏 apple: 852
871 | 🍏 apple: 853
872 | 🍏 apple: 854
873 | 🍏 apple: 855
874 | 🍏 apple: 856
875 | 🍏 apple: 857
876 | 🍏 apple: 858
877 | 🍏 apple: 859
878 | 🍏 apple: 860
879 | 🍏 apple: 861
880 | 🍏 apple: 862
881 | 🍏 apple: 863
882 | 🍏 apple: 864
883 | 🍏 apple: 865
884 | 🍏 apple: 866
885 | 🍏 apple: 867
886 | 🍏 apple: 868
887 | 🍏 apple: 869
888 | 🍏 apple: 870
889 | 🍏 apple: 871
890 | 🍏 apple: 872
891 | 🍏 apple: 873
892 | 🍏 apple: 874
893 | 🍏 apple: 875
894 | 🍏 apple: 876
895 | 🍏 apple: 877
896 | 🍏 apple: 878
897 | 🍏 apple: 879
898 | 🍏 apple: 880
899 | 🍏 apple: 881
900 | 🍏 apple: 882
901 | 🍏 apple: 883
902 | 🍏 apple: 884
903 | 🍏 apple: 885
904 | 🍏 apple: 886
905 | 🍏 apple: 887
906 | 🍏 apple: 888
907 | 🍏 apple: 889
908 | 🍏 apple: 890
909 | 🍏 apple: 891
910 | 🍏 apple: 892
911 | 🍏 apple: 893
912 | 🍏 apple: 894
913 | 🍏 apple: 895
914 | 🍏 apple: 896
915 | 🍏 apple: 897
916 | 🍏 apple: 898
917 | 🍏 apple: 899
918 | 🍏 apple: 900
919 | 🍏 apple: 901
920 | 🍏 apple: 902
921 | 🍏 apple: 903
922 | 🍏 apple: 904
923 | 🍏 apple: 905
924 | 🍏 apple: 906
925 | 🍏 apple: 907
926 | 🍏 apple: 908
927 | 🍏 apple: 909
928 | 🍏 apple: 910
929 | 🍏 apple: 911
930 | 🍏 apple: 912
931 | 🍏 apple: 913
932 | 🍏 apple: 914
933 | 🍏 apple: 915
934 | 🍏 apple: 916
935 | 🍏 apple: 917
936 | 🍏 apple: 918
937 | 🍏 apple: 919
938 | 🍏 apple: 920
939 | 🍏 apple: 921
940 | 🍏 apple: 922
941 | 🍏 apple: 923
942 | 🍏 apple: 924
943 | 🍏 apple: 925
944 | 🍏 apple: 926
945 | 🍏 apple: 927
946 | 🍏 apple: 928
947 | 🍏 apple: 929
948 | 🍏 apple: 930
949 | 🍏 apple: 931
950 | 🍏 apple: 932
951 | 🍏 apple: 933
952 | 🍏 apple: 934
953 | 🍏 apple: 935
954 | 🍏 apple: 936
955 | 🍏 apple: 937
956 | 🍏 apple: 938
957 | 🍏 apple: 939
958 | 🍏 apple: 940
959 | 🍏 apple: 941
960 | 🍏 apple: 942
961 | 🍏 apple: 943
962 | 🍏 apple: 944
963 | 🍏 apple: 945
964 | 🍏 apple: 946
965 | 🍏 apple: 947
966 | 🍏 apple: 948
967 | 🍏 apple: 949
968 | 🍏 apple: 950
969 | 🍏 apple: 951
970 | 🍏 apple: 952
971 | 🍏 apple: 953
972 | 🍏 apple: 954
973 | 🍏 apple: 955
974 | 🍏 apple: 956
975 | 🍏 apple: 957
976 | 🍏 apple: 958
977 | 🍏 apple: 959
978 | 🍏 apple: 960
979 | 🍏 apple: 961
980 | 🍏 apple: 962
981 | 🍏 apple: 963
982 | 🍏 apple: 964
983 | 🍏 apple: 965
984 | 🍏 apple: 966
985 | 🍏 apple: 967
986 | 🍏 apple: 968
987 | 🍏 apple: 969
988 | 🍏 apple: 970
989 | 🍏 apple: 971
990 | 🍏 apple: 972
991 | 🍏 apple: 973
992 | 🍏 apple: 974
993 | 🍏 apple: 975
994 | 🍏 apple: 976
995 | 🍏 apple: 977
996 | 🍏 apple: 978
997 | 🍏 apple: 979
998 | 🍏 apple: 980
999 | 🍏 apple: 981
1000 | 🍏 apple: 982
1001 | 🍏 apple: 983
1002 | 🍏 apple: 984
1003 | 🍏 apple: 985
1004 | 🍏 apple: 986
1005 | 🍏 apple: 987
1006 | 🍏 apple: 988
1007 | 🍏 apple: 989
1008 | 🍏 apple: 990
1009 | 🍏 apple: 991
1010 | 🍏 apple: 992
1011 | 🍏 apple: 993
1012 | 🍏 apple: 994
1013 | 🍏 apple: 995
1014 | 🍏 apple: 996
1015 | 🍏 apple: 997
1016 | 🍏 apple: 998
1017 | 🍏 apple: 999
1018 | 🍏 apple: 1000
1019 |
1020 |
1021 |
--------------------------------------------------------------------------------
/html/render-blocking.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Render Blocking
7 |
8 |
9 |
10 | 🍏 apple: 1
11 | 🍏 apple: 2
12 | 🍏 apple: 3
13 |
14 |
15 |
16 |
17 | 🍏 apple: 4
18 | 🍏 apple: 5
19 | 🍏 apple: 6
20 |
21 |
22 |
23 |
24 | 🍏 apple: 7
25 | 🍏 apple: 8
26 | 🍏 apple: 9
27 | 🍏 apple: 10
28 |
29 |
30 |
--------------------------------------------------------------------------------
/html/rendering.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Rendering Test
4 |
5 |
6 |
7 |
8 |
9 | I am first!
10 |
11 |
12 |
13 | I am second!
14 |
15 |
16 |
17 | I am third!
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/html/script-blocking.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Script Blocking
7 |
8 |
9 |
10 | 🍏 apple: 1
11 | 🍏 apple: 2
12 | 🍏 apple: 3
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 🍏 apple: 4
21 | 🍏 apple: 5
22 | 🍏 apple: 6
23 | 🍏 apple: 7
24 | 🍏 apple: 8
25 | 🍏 apple: 9
26 | 🍏 apple: 10
27 |
28 |
29 |
--------------------------------------------------------------------------------
/js/common.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/course-one/browser-rendering-test/d09896e6b970c984ffddd9ec5dd7e50349b8923b/js/common.js
--------------------------------------------------------------------------------
/js/main.js:
--------------------------------------------------------------------------------
1 | // start timer
2 | console.time('DOMContentLoaded');
3 | console.time('window.onload');
4 |
5 | // log DOMContentLoaded event
6 | document.addEventListener( 'DOMContentLoaded', () => {
7 | console.log( 'DOMContentLoaded' );
8 | console.timeEnd('DOMContentLoaded');
9 | } );
10 |
11 | // log window.onload event
12 | window.addEventListener( 'load', () => {
13 | console.log( 'window.onload' );
14 | console.timeEnd('window.onload');
15 | } );
--------------------------------------------------------------------------------
/js/sample.js:
--------------------------------------------------------------------------------
1 | console.log( 'Hello World!' );
--------------------------------------------------------------------------------
/js/vendor.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/course-one/browser-rendering-test/d09896e6b970c984ffddd9ec5dd7e50349b8923b/js/vendor.js
--------------------------------------------------------------------------------
/lib/crp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/course-one/browser-rendering-test/d09896e6b970c984ffddd9ec5dd7e50349b8923b/lib/crp.png
--------------------------------------------------------------------------------
/lib/cssom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/course-one/browser-rendering-test/d09896e6b970c984ffddd9ec5dd7e50349b8923b/lib/cssom.png
--------------------------------------------------------------------------------
/lib/dom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/course-one/browser-rendering-test/d09896e6b970c984ffddd9ec5dd7e50349b8923b/lib/dom.png
--------------------------------------------------------------------------------
/lib/render-tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/course-one/browser-rendering-test/d09896e6b970c984ffddd9ec5dd7e50349b8923b/lib/render-tree.png
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "browser-rendering-test",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "accepts": {
8 | "version": "1.3.7",
9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
10 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
11 | "requires": {
12 | "mime-types": "~2.1.24",
13 | "negotiator": "0.6.2"
14 | }
15 | },
16 | "array-flatten": {
17 | "version": "1.1.1",
18 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
19 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
20 | },
21 | "body-parser": {
22 | "version": "1.19.0",
23 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
24 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
25 | "requires": {
26 | "bytes": "3.1.0",
27 | "content-type": "~1.0.4",
28 | "debug": "2.6.9",
29 | "depd": "~1.1.2",
30 | "http-errors": "1.7.2",
31 | "iconv-lite": "0.4.24",
32 | "on-finished": "~2.3.0",
33 | "qs": "6.7.0",
34 | "raw-body": "2.4.0",
35 | "type-is": "~1.6.17"
36 | }
37 | },
38 | "bytes": {
39 | "version": "3.1.0",
40 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
41 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
42 | },
43 | "content-disposition": {
44 | "version": "0.5.3",
45 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
46 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
47 | "requires": {
48 | "safe-buffer": "5.1.2"
49 | }
50 | },
51 | "content-type": {
52 | "version": "1.0.4",
53 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
54 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
55 | },
56 | "cookie": {
57 | "version": "0.4.0",
58 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
59 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
60 | },
61 | "cookie-signature": {
62 | "version": "1.0.6",
63 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
64 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
65 | },
66 | "debug": {
67 | "version": "2.6.9",
68 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
69 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
70 | "requires": {
71 | "ms": "2.0.0"
72 | }
73 | },
74 | "depd": {
75 | "version": "1.1.2",
76 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
77 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
78 | },
79 | "destroy": {
80 | "version": "1.0.4",
81 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
82 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
83 | },
84 | "ee-first": {
85 | "version": "1.1.1",
86 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
87 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
88 | },
89 | "encodeurl": {
90 | "version": "1.0.2",
91 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
92 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
93 | },
94 | "escape-html": {
95 | "version": "1.0.3",
96 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
97 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
98 | },
99 | "etag": {
100 | "version": "1.8.1",
101 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
102 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
103 | },
104 | "express": {
105 | "version": "4.17.1",
106 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
107 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
108 | "requires": {
109 | "accepts": "~1.3.7",
110 | "array-flatten": "1.1.1",
111 | "body-parser": "1.19.0",
112 | "content-disposition": "0.5.3",
113 | "content-type": "~1.0.4",
114 | "cookie": "0.4.0",
115 | "cookie-signature": "1.0.6",
116 | "debug": "2.6.9",
117 | "depd": "~1.1.2",
118 | "encodeurl": "~1.0.2",
119 | "escape-html": "~1.0.3",
120 | "etag": "~1.8.1",
121 | "finalhandler": "~1.1.2",
122 | "fresh": "0.5.2",
123 | "merge-descriptors": "1.0.1",
124 | "methods": "~1.1.2",
125 | "on-finished": "~2.3.0",
126 | "parseurl": "~1.3.3",
127 | "path-to-regexp": "0.1.7",
128 | "proxy-addr": "~2.0.5",
129 | "qs": "6.7.0",
130 | "range-parser": "~1.2.1",
131 | "safe-buffer": "5.1.2",
132 | "send": "0.17.1",
133 | "serve-static": "1.14.1",
134 | "setprototypeof": "1.1.1",
135 | "statuses": "~1.5.0",
136 | "type-is": "~1.6.18",
137 | "utils-merge": "1.0.1",
138 | "vary": "~1.1.2"
139 | }
140 | },
141 | "finalhandler": {
142 | "version": "1.1.2",
143 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
144 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
145 | "requires": {
146 | "debug": "2.6.9",
147 | "encodeurl": "~1.0.2",
148 | "escape-html": "~1.0.3",
149 | "on-finished": "~2.3.0",
150 | "parseurl": "~1.3.3",
151 | "statuses": "~1.5.0",
152 | "unpipe": "~1.0.0"
153 | }
154 | },
155 | "forwarded": {
156 | "version": "0.1.2",
157 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
158 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
159 | },
160 | "fresh": {
161 | "version": "0.5.2",
162 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
163 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
164 | },
165 | "http-errors": {
166 | "version": "1.7.2",
167 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
168 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
169 | "requires": {
170 | "depd": "~1.1.2",
171 | "inherits": "2.0.3",
172 | "setprototypeof": "1.1.1",
173 | "statuses": ">= 1.5.0 < 2",
174 | "toidentifier": "1.0.0"
175 | }
176 | },
177 | "iconv-lite": {
178 | "version": "0.4.24",
179 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
180 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
181 | "requires": {
182 | "safer-buffer": ">= 2.1.2 < 3"
183 | }
184 | },
185 | "inherits": {
186 | "version": "2.0.3",
187 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
188 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
189 | },
190 | "ipaddr.js": {
191 | "version": "1.9.1",
192 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
193 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
194 | },
195 | "media-typer": {
196 | "version": "0.3.0",
197 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
198 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
199 | },
200 | "merge-descriptors": {
201 | "version": "1.0.1",
202 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
203 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
204 | },
205 | "methods": {
206 | "version": "1.1.2",
207 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
208 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
209 | },
210 | "mime": {
211 | "version": "1.6.0",
212 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
213 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
214 | },
215 | "mime-db": {
216 | "version": "1.44.0",
217 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
218 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
219 | },
220 | "mime-types": {
221 | "version": "2.1.27",
222 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
223 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
224 | "requires": {
225 | "mime-db": "1.44.0"
226 | }
227 | },
228 | "ms": {
229 | "version": "2.0.0",
230 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
231 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
232 | },
233 | "negotiator": {
234 | "version": "0.6.2",
235 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
236 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
237 | },
238 | "on-finished": {
239 | "version": "2.3.0",
240 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
241 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
242 | "requires": {
243 | "ee-first": "1.1.1"
244 | }
245 | },
246 | "parseurl": {
247 | "version": "1.3.3",
248 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
249 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
250 | },
251 | "path-to-regexp": {
252 | "version": "0.1.7",
253 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
254 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
255 | },
256 | "proxy-addr": {
257 | "version": "2.0.6",
258 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
259 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
260 | "requires": {
261 | "forwarded": "~0.1.2",
262 | "ipaddr.js": "1.9.1"
263 | }
264 | },
265 | "qs": {
266 | "version": "6.7.0",
267 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
268 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
269 | },
270 | "range-parser": {
271 | "version": "1.2.1",
272 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
273 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
274 | },
275 | "raw-body": {
276 | "version": "2.4.0",
277 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
278 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
279 | "requires": {
280 | "bytes": "3.1.0",
281 | "http-errors": "1.7.2",
282 | "iconv-lite": "0.4.24",
283 | "unpipe": "1.0.0"
284 | }
285 | },
286 | "safe-buffer": {
287 | "version": "5.1.2",
288 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
289 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
290 | },
291 | "safer-buffer": {
292 | "version": "2.1.2",
293 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
294 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
295 | },
296 | "send": {
297 | "version": "0.17.1",
298 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
299 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
300 | "requires": {
301 | "debug": "2.6.9",
302 | "depd": "~1.1.2",
303 | "destroy": "~1.0.4",
304 | "encodeurl": "~1.0.2",
305 | "escape-html": "~1.0.3",
306 | "etag": "~1.8.1",
307 | "fresh": "0.5.2",
308 | "http-errors": "~1.7.2",
309 | "mime": "1.6.0",
310 | "ms": "2.1.1",
311 | "on-finished": "~2.3.0",
312 | "range-parser": "~1.2.1",
313 | "statuses": "~1.5.0"
314 | },
315 | "dependencies": {
316 | "ms": {
317 | "version": "2.1.1",
318 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
319 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
320 | }
321 | }
322 | },
323 | "serve-static": {
324 | "version": "1.14.1",
325 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
326 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
327 | "requires": {
328 | "encodeurl": "~1.0.2",
329 | "escape-html": "~1.0.3",
330 | "parseurl": "~1.3.3",
331 | "send": "0.17.1"
332 | }
333 | },
334 | "setprototypeof": {
335 | "version": "1.1.1",
336 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
337 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
338 | },
339 | "statuses": {
340 | "version": "1.5.0",
341 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
342 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
343 | },
344 | "toidentifier": {
345 | "version": "1.0.0",
346 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
347 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
348 | },
349 | "type-is": {
350 | "version": "1.6.18",
351 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
352 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
353 | "requires": {
354 | "media-typer": "0.3.0",
355 | "mime-types": "~2.1.24"
356 | }
357 | },
358 | "unpipe": {
359 | "version": "1.0.0",
360 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
361 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
362 | },
363 | "utils-merge": {
364 | "version": "1.0.1",
365 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
366 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
367 | },
368 | "vary": {
369 | "version": "1.1.2",
370 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
371 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
372 | }
373 | }
374 | }
375 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "browser-rendering-test",
3 | "version": "1.0.0",
4 | "description": "Sample code base to test how a browser renders a webpage.",
5 | "private": true,
6 | "dependencies": {
7 | "express": "^4.17.1"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/res/nature.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/course-one/browser-rendering-test/d09896e6b970c984ffddd9ec5dd7e50349b8923b/res/nature.jpg
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | const express = require( 'express' );
2 | const path = require( 'path' );
3 |
4 | // create react app
5 | const app = express();
6 |
7 | // return file immediately (parent directory)
8 | app.get( '/:file', ( req, res ) => {
9 | res.sendFile( path.resolve( __dirname, req.params.file ) );
10 | } );
11 |
12 | // return file immediately (nested directory)
13 | app.get( '/:dir/:file', ( req, res ) => {
14 | res.sendFile( path.resolve( __dirname, req.params.dir, req.params.file ) );
15 | } );
16 |
17 | // return a file with provided delay
18 | app.get( '/:delay/:dir/:file', ( req, res ) => {
19 | setTimeout( () => {
20 | res.sendFile( path.resolve( __dirname, req.params.dir, req.params.file ) );
21 | }, Number( req.params.delay ) );
22 | } );
23 |
24 | // serve express application
25 | app.listen( 8088, () => console.log( 'Server started on port: 8088' ) );
26 |
--------------------------------------------------------------------------------