ProAudience commited on
Commit
16ed0c5
·
verified ·
1 Parent(s): 5d27847

Deploy FlowAct-R2 static site

Browse files
.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ static/images/logo-r2.png filter=lfs diff=lfs merge=lfs -text
37
+ static/images/method_v10.png filter=lfs diff=lfs merge=lfs -text
38
+ static/images/teaser_v5.png filter=lfs diff=lfs merge=lfs -text
.nojekyll ADDED
@@ -0,0 +1 @@
 
 
1
+
MANIFEST.json ADDED
@@ -0,0 +1,706 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "pages": [
3
+ "index.html",
4
+ "index1.html",
5
+ "index_blog.html",
6
+ "index_bytedance_blog.html"
7
+ ],
8
+ "unique_videos": 55,
9
+ "external_urls": [
10
+ "https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css",
11
+ "https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro",
12
+ "https://www.googletagmanager.com/gtag/js?id=G-PYVRSFMDRL"
13
+ ],
14
+ "files": [
15
+ {
16
+ "path": "README.md",
17
+ "bytes": 538,
18
+ "sha256": "195c13e11d7d19ee03380d442306e8f728691d171241f7e1fa6db954956fb8da"
19
+ },
20
+ {
21
+ "path": "index.html",
22
+ "bytes": 32571,
23
+ "sha256": "da3ee12569fbd0f2d503baa5736f393150395dc0ef1345d698c7538a8d249105"
24
+ },
25
+ {
26
+ "path": "index1.html",
27
+ "bytes": 34094,
28
+ "sha256": "b581c1db3f1663480e4bd22b6256593f0e99cd7899142dc10af9922a397cacf3"
29
+ },
30
+ {
31
+ "path": "index_blog.html",
32
+ "bytes": 56426,
33
+ "sha256": "cb60d1fc9422564b1b4bb641cc44732963bbebac84054f2cef1c2f159e36adef"
34
+ },
35
+ {
36
+ "path": "index_bytedance_blog.html",
37
+ "bytes": 56380,
38
+ "sha256": "77ff109da5c243589cd59140103252c58f3e4dde4bd83af50a22faa669a1e0f2"
39
+ },
40
+ {
41
+ "path": "serve.py",
42
+ "bytes": 3216,
43
+ "sha256": "b4b60cbfcd256d43e4656c7d10910f3ce70f2325d501b400646610e8e977a27a"
44
+ },
45
+ {
46
+ "path": "static/css/blog.css",
47
+ "bytes": 14296,
48
+ "sha256": "090198d4a0979d648e3508fe8551d289b62b3f40248e6a19095f1a6e9918ab4a"
49
+ },
50
+ {
51
+ "path": "static/css/bulma-carousel.min.css",
52
+ "bytes": 3645,
53
+ "sha256": "9d586b0d953f9dedc8ff3e8b5d611bc943849afefdb0f18a11bb0fed258b9072"
54
+ },
55
+ {
56
+ "path": "static/css/bulma-slider.min.css",
57
+ "bytes": 13782,
58
+ "sha256": "9bd5f05ad71360d0e87f21dd3d07d94c080486342f335ff041f5394c6aa6dac9"
59
+ },
60
+ {
61
+ "path": "static/css/bulma.min.css",
62
+ "bytes": 204030,
63
+ "sha256": "58b28659220961ead137cb5b346b5759562750ce703094d70fc786e0db467033"
64
+ },
65
+ {
66
+ "path": "static/css/bytedance-blog.css",
67
+ "bytes": 8723,
68
+ "sha256": "733c164ef3e58bfdecba2044aac022051fe4830f0577d883199594a4789a9820"
69
+ },
70
+ {
71
+ "path": "static/css/fontawesome.all.min.css",
72
+ "bytes": 59344,
73
+ "sha256": "af1e6edc875a382b338bb25bd7c5c3f474a7f1b36212002a5896dd06f2186325"
74
+ },
75
+ {
76
+ "path": "static/css/index.css",
77
+ "bytes": 7581,
78
+ "sha256": "d80c42f0bfdaf40abfe5c95aa7b90f2a533109bf8c845e49d2c21f7aafa14344"
79
+ },
80
+ {
81
+ "path": "static/fonts/inter-latin-wght-normal.woff2",
82
+ "bytes": 48256,
83
+ "sha256": "3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62"
84
+ },
85
+ {
86
+ "path": "static/images/logo-r2.png",
87
+ "bytes": 538526,
88
+ "sha256": "a8f1b8d200bb04ee147421dac6e470392e4355e6b18c039d6a05514eb1c3c3f0"
89
+ },
90
+ {
91
+ "path": "static/images/method_v10.png",
92
+ "bytes": 5108935,
93
+ "sha256": "711a31240888067898588cc229cb0644c89db9cfdb16fbd21b260e5a5f4a12f7"
94
+ },
95
+ {
96
+ "path": "static/images/teaser_v5.png",
97
+ "bytes": 10566459,
98
+ "sha256": "3b3597aa350efc5e4e59c367d498e52f69800fda2dc92c4c4e401bdb1c2f7c2d"
99
+ },
100
+ {
101
+ "path": "static/js/blog.js",
102
+ "bytes": 5932,
103
+ "sha256": "7267789e8aee36423250b4341a4971905c48a678be73ba0206e2800b8bc8171b"
104
+ },
105
+ {
106
+ "path": "static/js/bulma-carousel.min.js",
107
+ "bytes": 40723,
108
+ "sha256": "a8a47bef2cd50640d82aea128360690086ccb6617c6858ee4c71559c88e4a732"
109
+ },
110
+ {
111
+ "path": "static/js/bulma-slider.min.js",
112
+ "bytes": 6926,
113
+ "sha256": "e520e9ef6e3223ecfbb50b4649d238af5a85af9161800ad1d003dac80d748f24"
114
+ },
115
+ {
116
+ "path": "static/js/fontawesome.all.min.js",
117
+ "bytes": 1194960,
118
+ "sha256": "20a3ef6979bbe5e4de1afaecc703e1d34cbc5e3ceab36d378539506327692d72"
119
+ },
120
+ {
121
+ "path": "static/js/index.js",
122
+ "bytes": 13181,
123
+ "sha256": "27ea471b963d63697cc5b04c28f612485b85aad26e1b6f20e823df5415f68f20"
124
+ },
125
+ {
126
+ "path": "static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.jpg",
127
+ "bytes": 135641,
128
+ "sha256": "f991ef9fbde7eebb27d63e2981b5ddcd65eeb7c581ef237322679fb1723addec"
129
+ },
130
+ {
131
+ "path": "static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.mp4",
132
+ "bytes": 46463824,
133
+ "sha256": "03339299f83dbe3ea225e3b96a36d9cd0b9ca0a357d8363a89483237cf7cee18"
134
+ },
135
+ {
136
+ "path": "static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.jpg",
137
+ "bytes": 110902,
138
+ "sha256": "6af88c4d838dce6ae23faba52f016e26a4c5d868ebe1809cf84c1d181390974d"
139
+ },
140
+ {
141
+ "path": "static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.mp4",
142
+ "bytes": 38462721,
143
+ "sha256": "e6de378c46d32ac9d21dd198eef25fe3784bb6896d0331c6aea3a098215cb381"
144
+ },
145
+ {
146
+ "path": "static/videos/IG/r2_audience_danmaku_compressed_crf28/vlog_shichahai_v5_online_20260812_011014.jpg",
147
+ "bytes": 72957,
148
+ "sha256": "a1b623fe63aa277f8510ce064c93d80dcd69301566730f3ae35de19d44de88c1"
149
+ },
150
+ {
151
+ "path": "static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.jpg",
152
+ "bytes": 30204,
153
+ "sha256": "3fa48618291923573746fd34d9c7e1894ac8896dae9446c0fe89925b440531c3"
154
+ },
155
+ {
156
+ "path": "static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.mp4",
157
+ "bytes": 47587559,
158
+ "sha256": "39cd35d489bb5b401c13d2941a084d0fd94196ccf7d62341906e6afde660c90d"
159
+ },
160
+ {
161
+ "path": "static/videos/entertainment_final_danmaku_only/chat4_faststart.jpg",
162
+ "bytes": 45649,
163
+ "sha256": "9afe6b6dc244259723747c34d79ec23ac5094c05ac7813b80577d3256cd673ac"
164
+ },
165
+ {
166
+ "path": "static/videos/entertainment_final_danmaku_only/chat4_faststart.mp4",
167
+ "bytes": 146037187,
168
+ "sha256": "b99852a51ac0053067024c3c889838ccf577bc5cac97105067c286ca4543ba5e"
169
+ },
170
+ {
171
+ "path": "static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg",
172
+ "bytes": 44746,
173
+ "sha256": "35288f14b4e47f3fea9d5cc71e301cd80cb4c385fe85d9b0774c66f1d7fda1b7"
174
+ },
175
+ {
176
+ "path": "static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/teaser/nono_with_aigc_refs.mp4",
177
+ "bytes": 70885752,
178
+ "sha256": "aabf5466f6fe7a6ebf8036912601a5c8154871b984a291ccb7956266023eca3c"
179
+ },
180
+ {
181
+ "path": "static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4",
182
+ "bytes": 24301306,
183
+ "sha256": "5d56a2311be7d1c8cdc6387ee9cffe80f97c66a48def850e011652f0d9752cb6"
184
+ },
185
+ {
186
+ "path": "static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/03_qiaopixiaoyima.mp4",
187
+ "bytes": 54271453,
188
+ "sha256": "888b107a543d3f28ade8fdc7427f724d8f7f9e4a2023237a244bc2cdc2cb98d1"
189
+ },
190
+ {
191
+ "path": "static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/04_yizhiyu.mp4",
192
+ "bytes": 34128171,
193
+ "sha256": "353f0e4cea28e3f09312237ea218e497ff119f9dcf88ca296bf109d2dd2d231c"
194
+ },
195
+ {
196
+ "path": "static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/05_zhangheyi.mp4",
197
+ "bytes": 34854568,
198
+ "sha256": "743e99110c4ad228f0ba616bbeeb1d369f8757e791fbc793ddcb7f1e5d185328"
199
+ },
200
+ {
201
+ "path": "static/videos/entertainment_final_danmaku_only/instrument1_faststart.jpg",
202
+ "bytes": 40775,
203
+ "sha256": "6fc5c7e0ca9d6647f0df9d1e57ebecf36e13533aee15ae09837e75790f636b30"
204
+ },
205
+ {
206
+ "path": "static/videos/entertainment_final_danmaku_only/instrument1_faststart.mp4",
207
+ "bytes": 19387975,
208
+ "sha256": "c46b1d30eb954f593abd14383df1a154df984a07e73f8aa1d111b5dcf2af70fc"
209
+ },
210
+ {
211
+ "path": "static/videos/entertainment_final_danmaku_only/nono_20260624_185701_647_withrefaudio_faststart.jpg",
212
+ "bytes": 31947,
213
+ "sha256": "86c45804f0bf6d987e691486f003adba5bfd0d4a54b0761ec3f4650fd1a13dbe"
214
+ },
215
+ {
216
+ "path": "static/videos/entertainment_final_danmaku_only/qiaopixiaoyima_faststart.jpg",
217
+ "bytes": 37617,
218
+ "sha256": "6203965f48d5c57979625f806f3648d564aec9d1d279c09221993351fce6ce03"
219
+ },
220
+ {
221
+ "path": "static/videos/entertainment_final_danmaku_only/sing1_faststart.jpg",
222
+ "bytes": 56222,
223
+ "sha256": "960f4ecaf541ec1f9402baa9e7d4d9a4921fe46be03d2ca89c11d4fc81350925"
224
+ },
225
+ {
226
+ "path": "static/videos/entertainment_final_danmaku_only/sing1_faststart.mp4",
227
+ "bytes": 32407260,
228
+ "sha256": "7452ba8f0cdca68d773c1d335c61237c8456875916250509ac17fb27a351eb41"
229
+ },
230
+ {
231
+ "path": "static/videos/entertainment_final_danmaku_only/yizhiyu_faststart.jpg",
232
+ "bytes": 38697,
233
+ "sha256": "6ee644f6bc2c25f4c3d044175d83781151fb71e6c9a9627f13797ef4d7a2cdfe"
234
+ },
235
+ {
236
+ "path": "static/videos/entertainment_final_danmaku_only/zhangheyi_faststart.jpg",
237
+ "bytes": 38222,
238
+ "sha256": "fa9141fed0ed400e1650a857514eb80c3029302ef9b707664d20d9e6e6d62af2"
239
+ },
240
+ {
241
+ "path": "static/videos/offline_videos_comressed/1.jpg",
242
+ "bytes": 30221,
243
+ "sha256": "b401f20484f5666fac72305536d8abac056185bf4c273f6206d99d11ec2c7dfc"
244
+ },
245
+ {
246
+ "path": "static/videos/offline_videos_comressed/1.mp4",
247
+ "bytes": 9258088,
248
+ "sha256": "b9cbdb12465bd8a8fec06a1e0d0b419c66cd8bfb29b8ae0186b33326605d73a7"
249
+ },
250
+ {
251
+ "path": "static/videos/offline_videos_comressed/15.jpg",
252
+ "bytes": 105016,
253
+ "sha256": "a26534e0fe7c3821cec3aeaf9106d29b1aed33b5b5dfaf8310e6cac82920714a"
254
+ },
255
+ {
256
+ "path": "static/videos/offline_videos_comressed/15.mp4",
257
+ "bytes": 29589517,
258
+ "sha256": "0be3474fb8139f53e524313d206595f1bb0333b44e6676975654387cdf878659"
259
+ },
260
+ {
261
+ "path": "static/videos/offline_videos_comressed/24.jpg",
262
+ "bytes": 125395,
263
+ "sha256": "8fe1b2cc7215b95f1f79e0ccc77fb07b7856dbc9b9b10465ad13ff45c2ecfe8a"
264
+ },
265
+ {
266
+ "path": "static/videos/offline_videos_comressed/24.mp4",
267
+ "bytes": 30959562,
268
+ "sha256": "aaef3954744deb020efb1bf93818c8d678a0b1467d4226c841efbf2d1f1ca317"
269
+ },
270
+ {
271
+ "path": "static/videos/offline_videos_comressed/4.jpg",
272
+ "bytes": 23638,
273
+ "sha256": "2ed6606de75a1a6b72923a44c78c39283232c85fd1bee910ff4dabe44709678c"
274
+ },
275
+ {
276
+ "path": "static/videos/offline_videos_comressed/4.mp4",
277
+ "bytes": 8048787,
278
+ "sha256": "482e3d5a8511ae8e9cacabe8acddb083596bc18bb67f57979e1f718cd9ca9369"
279
+ },
280
+ {
281
+ "path": "static/videos/offline_videos_comressed/5.jpg",
282
+ "bytes": 29316,
283
+ "sha256": "df8509c46bcb7e7ac58419cb9f35db0b5f4085e30ae0583932fddf68943a4830"
284
+ },
285
+ {
286
+ "path": "static/videos/offline_videos_comressed/5.mp4",
287
+ "bytes": 5417564,
288
+ "sha256": "1234b08e63176afe348efb77dd413938e4bc1dfaf8368ddcbeb3e304eb272621"
289
+ },
290
+ {
291
+ "path": "static/videos/offline_videos_comressed/9.jpg",
292
+ "bytes": 46029,
293
+ "sha256": "0f0cb596c8dc4eb38d38984617686848cd8b5ff0a7136c5ab26477420aede6e3"
294
+ },
295
+ {
296
+ "path": "static/videos/offline_videos_comressed/9.mp4",
297
+ "bytes": 23768784,
298
+ "sha256": "728d23c7b38731aff9cc03095f40bec0a561f02fe43c70c0bc9416c6f5e5e77e"
299
+ },
300
+ {
301
+ "path": "static/videos/shop/case_034.jpg",
302
+ "bytes": 41474,
303
+ "sha256": "490cb6712748bf983aabad9e7bfe11b283cb95af1343d716d7c437227c6bf030"
304
+ },
305
+ {
306
+ "path": "static/videos/shop/case_034.mp4",
307
+ "bytes": 58466240,
308
+ "sha256": "6c3c2682d147b5b688312194a6bba574e560ac65f7dcbb9e761bec59260bccea"
309
+ },
310
+ {
311
+ "path": "static/videos/shop/case_061.jpg",
312
+ "bytes": 66118,
313
+ "sha256": "b5d766678b3df3bed76c42299c6cf92cd39013474d6503fd4c41345dad43cfc9"
314
+ },
315
+ {
316
+ "path": "static/videos/shop/case_061.mp4",
317
+ "bytes": 80481152,
318
+ "sha256": "2bf56518134878872d3087c0b412fa83c767755ee9cd0619d68c30661678ec39"
319
+ },
320
+ {
321
+ "path": "static/videos/shop/case_104.jpg",
322
+ "bytes": 50540,
323
+ "sha256": "df9e6f8a925e8c5342154e6b47f32b636072ae89549caa0d920453e613cf8e80"
324
+ },
325
+ {
326
+ "path": "static/videos/shop/case_104.mp4",
327
+ "bytes": 72441122,
328
+ "sha256": "5a90764f23334e98dfeba2672d3ecc7a01f3e4fd1fded38d77c596c05559e13b"
329
+ },
330
+ {
331
+ "path": "static/videos/shop/case_108.jpg",
332
+ "bytes": 51787,
333
+ "sha256": "772e145d007ef4e687fd4d8614fdaea6c1253a185592d522b9413fb39a709d64"
334
+ },
335
+ {
336
+ "path": "static/videos/shop/case_108.mp4",
337
+ "bytes": 59136503,
338
+ "sha256": "b70e84ab97f64c3a73363d0e53ad9005fb705383a75abc9bfe63152c9fca5809"
339
+ },
340
+ {
341
+ "path": "static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.jpg",
342
+ "bytes": 37900,
343
+ "sha256": "5c6f1db20775d50aafc5f45dbeeecace26572ff439887f34f77aba5d5ed62d74"
344
+ },
345
+ {
346
+ "path": "static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.mp4",
347
+ "bytes": 36531221,
348
+ "sha256": "5d738abed534d4f564232ac9c04c85dc467c09bd88164378075a59271b860a38"
349
+ },
350
+ {
351
+ "path": "static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.jpg",
352
+ "bytes": 45408,
353
+ "sha256": "fcef0d4ab62ca589cfc1c7030da4f604be91740a8673eb63803195ee7bcf8817"
354
+ },
355
+ {
356
+ "path": "static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024_first_frame.jpg",
357
+ "bytes": 102230,
358
+ "sha256": "d7b35994456af5a3de1e7fb093296e00d22dd8efe6496a93473e23ec7571e60c"
359
+ },
360
+ {
361
+ "path": "static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4",
362
+ "bytes": 48000612,
363
+ "sha256": "c9e87deb4c8698100aa64c38e5a96908902ebaf77948f52809a00bd966be1e13"
364
+ },
365
+ {
366
+ "path": "static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.jpg",
367
+ "bytes": 53284,
368
+ "sha256": "5d476611a4a1c880edc3de2792035094f53323efc2709c6250c9c37d4b14c94d"
369
+ },
370
+ {
371
+ "path": "static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4",
372
+ "bytes": 40966228,
373
+ "sha256": "abca07efa9b64279fbdf8d107cd0bdd5c2da44c76f58ef1bebaecd270947bb8d"
374
+ },
375
+ {
376
+ "path": "static/videos/shop/multigood_0902/case_001_002_003.jpg",
377
+ "bytes": 36012,
378
+ "sha256": "2908687c819a2c9f0c652abbf1cebed5d0f4ec9d62ddeeef9b6c44baaf9301c0"
379
+ },
380
+ {
381
+ "path": "static/videos/shop/multigood_0902/case_001_002_003.mp4",
382
+ "bytes": 54543162,
383
+ "sha256": "ecc24c28ae554011c0b671821d39a03878eb21eb644a543dd6d346401fb84319"
384
+ },
385
+ {
386
+ "path": "static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg",
387
+ "bytes": 170216,
388
+ "sha256": "991fa3579766f57e9bfe62c90a44f166b708d1f5c11a092a920dec8845019790"
389
+ },
390
+ {
391
+ "path": "static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4",
392
+ "bytes": 121011685,
393
+ "sha256": "51339391ae41a70804f7fef1eb900be18ec390b06ebbef1530c9125ec8750b69"
394
+ },
395
+ {
396
+ "path": "static/videos/teaser/teaser_with_refs_20260907/vlog_shichahai_v5_online_20260812_011014_withrefs.mp4",
397
+ "bytes": 125605464,
398
+ "sha256": "a1c7fb44e16ddd8221eed3425f1d80315493b3b99b4b34845065a74fc2c65e8f"
399
+ },
400
+ {
401
+ "path": "static/videos/videochat/0903/EMP-02_crop_compressed_faststart.jpg",
402
+ "bytes": 37303,
403
+ "sha256": "e838f16e65a9c1f2c83d23d755c36119039d24f58858ee9e34ffad0e508070cf"
404
+ },
405
+ {
406
+ "path": "static/videos/videochat/0903/EMP-02_crop_compressed_faststart.mp4",
407
+ "bytes": 27929096,
408
+ "sha256": "091598e35bf75e504486b963066284287df8e7a50252a2921053eb48cd5aa5de"
409
+ },
410
+ {
411
+ "path": "static/videos/videochat/0903_compressed_crf28/GIR-02_crop.jpg",
412
+ "bytes": 25570,
413
+ "sha256": "4122799499597a5f918bea825572d05b7856dd4d5cd92470e3c16d535d49459d"
414
+ },
415
+ {
416
+ "path": "static/videos/videochat/0903_compressed_crf28/GIR-02_crop.mp4",
417
+ "bytes": 11793659,
418
+ "sha256": "5471c6dfe63766a41a8029b65187e0fd3cf8e596c6336c2256735d31297f9154"
419
+ },
420
+ {
421
+ "path": "static/videos/videochat/0903_compressed_crf28/TRV-03_crop.jpg",
422
+ "bytes": 36383,
423
+ "sha256": "1778eb3dd3f115b596f8c2ced45d9b9bad3994c810d39613e4ac1a000f63e633"
424
+ },
425
+ {
426
+ "path": "static/videos/videochat/0903_compressed_crf28/TRV-03_crop.mp4",
427
+ "bytes": 14848367,
428
+ "sha256": "0de310b8e9bbf8130fb9d43850d2eeab2f36dee3dca8147865412b468c7cd2fc"
429
+ },
430
+ {
431
+ "path": "static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.jpg",
432
+ "bytes": 43199,
433
+ "sha256": "8efbdcea0e59afc5c92ffc531c7bbee0a0790199395a3b2f1910b2af0e5191a3"
434
+ },
435
+ {
436
+ "path": "static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.mp4",
437
+ "bytes": 14719206,
438
+ "sha256": "3158baeb09e930c239a0c863cbe8bdc2ad770ab60daa92df79ff2af9bf44caf1"
439
+ },
440
+ {
441
+ "path": "static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.jpg",
442
+ "bytes": 28573,
443
+ "sha256": "f710d249615c80946c8741a6f0d18d8da641b117a14b0e3a600ca3fb72ed8a04"
444
+ },
445
+ {
446
+ "path": "static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.mp4",
447
+ "bytes": 11954401,
448
+ "sha256": "2cef1dc610f209c1c08b2328750484f328f0695c7e108ff7febd71c8f301aef3"
449
+ },
450
+ {
451
+ "path": "static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.jpg",
452
+ "bytes": 51383,
453
+ "sha256": "53424970024b81a65b7199c71597159b0daaa7f04fe5d763d1d9f31cf27a47a5"
454
+ },
455
+ {
456
+ "path": "static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.mp4",
457
+ "bytes": 51866365,
458
+ "sha256": "9564407c77d369d09909683d5b647247aed413a251a20b95aebc887b2009044b"
459
+ },
460
+ {
461
+ "path": "static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.jpg",
462
+ "bytes": 36975,
463
+ "sha256": "24c1eb2bb74cc42e382b804619fa7034fb90b6c3e06b29b331600f94d4ee91da"
464
+ },
465
+ {
466
+ "path": "static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.mp4",
467
+ "bytes": 24419727,
468
+ "sha256": "1cb507d117e8246b9d82fb2e741b84f2bcf9b3fa50ab55589a172aa7d624d70e"
469
+ },
470
+ {
471
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.jpg",
472
+ "bytes": 78289,
473
+ "sha256": "46688e7fc140434e619cee9af6e3b327d1e5445c2b476ba2d8ce18f21f35391c"
474
+ },
475
+ {
476
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.mp4",
477
+ "bytes": 4075836,
478
+ "sha256": "dcde5d4cac9ab97a7d88295d1264f29369cf347157d225541737d39071c2a3b5"
479
+ },
480
+ {
481
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.jpg",
482
+ "bytes": 104403,
483
+ "sha256": "eabeddccf155f289e90994f550a2aa31483b39590de7362e247ce9153e05305e"
484
+ },
485
+ {
486
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.mp4",
487
+ "bytes": 21701380,
488
+ "sha256": "ec18e0d60b56725adf1303b0bd4380581b8e4ab90d37845f387136e269f5a1d8"
489
+ },
490
+ {
491
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.jpg",
492
+ "bytes": 129748,
493
+ "sha256": "bada308efed81bb126cfb91dd5dde235ad4fc6a199f21e6c007f5506d9d79fe9"
494
+ },
495
+ {
496
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.mp4",
497
+ "bytes": 6272735,
498
+ "sha256": "1631a881627b6f0fbfbbb9099c6e74dd7686fcad1ff00e44cb11b620b827a4e0"
499
+ },
500
+ {
501
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.jpg",
502
+ "bytes": 96752,
503
+ "sha256": "664c6ff92bca5223838a46863e3158ad63f6f0e5b9f1f6cadb0ee2968f4c9eba"
504
+ },
505
+ {
506
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.mp4",
507
+ "bytes": 6821382,
508
+ "sha256": "74bd1377ab43d333fde331a905d2dda857c4497f3af068900ca390ca6f1f1e9f"
509
+ },
510
+ {
511
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.jpg",
512
+ "bytes": 97147,
513
+ "sha256": "440a7fd065e89988f4aed0bd3a7d6264b3fc406e520a8b1e106a7969529ca5c9"
514
+ },
515
+ {
516
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.mp4",
517
+ "bytes": 7959357,
518
+ "sha256": "706406a7eae6a40241a952642e738bac60a65f2fce0f87bc10822b5ff3a0ff12"
519
+ },
520
+ {
521
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.jpg",
522
+ "bytes": 92400,
523
+ "sha256": "33c359d06958dd3e2eb9cb032777a2d893bda18ab1ec47ce105e6ba06155800e"
524
+ },
525
+ {
526
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.mp4",
527
+ "bytes": 7867797,
528
+ "sha256": "5b9401fbfbd11ce2ee39352ba34f0937a0c6771770b302923b4c29f5b9818a2a"
529
+ },
530
+ {
531
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.jpg",
532
+ "bytes": 86684,
533
+ "sha256": "87fa26db250709372a9ac1d952ab34cfb3d28eb177a1321a8d1b4b39fded20f6"
534
+ },
535
+ {
536
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.mp4",
537
+ "bytes": 5753326,
538
+ "sha256": "d9117ae5939974a29d8fda9f3b2e09f665b81416298012ca7151c25fd6225914"
539
+ },
540
+ {
541
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.jpg",
542
+ "bytes": 82848,
543
+ "sha256": "7969eb13258ba972001caa0eeb743443668e1be0d321c2c28559bf7876abe808"
544
+ },
545
+ {
546
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.mp4",
547
+ "bytes": 9329230,
548
+ "sha256": "82ab65a707842aaa60b9cc1bc3f534d2bad4f5c337ec134c9c122ed4b890a1b4"
549
+ },
550
+ {
551
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.jpg",
552
+ "bytes": 54161,
553
+ "sha256": "c3455bdf0ee7cfb7930beaeb87af55c31f250e92988b3579f3242ef993243fab"
554
+ },
555
+ {
556
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.mp4",
557
+ "bytes": 3103716,
558
+ "sha256": "286e7b70c40bfb9550b1a840ef8b3e10236ef4d88217725a9f2c099f32a86695"
559
+ },
560
+ {
561
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.jpg",
562
+ "bytes": 68738,
563
+ "sha256": "bb02b69ae06fdbc845731b9de7367182d9d05483315c69d34ec8fac52708179a"
564
+ },
565
+ {
566
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.mp4",
567
+ "bytes": 8560912,
568
+ "sha256": "2a8d346155532527d9c5fcd81be75d16dabec21367f89f12fecce18eef0bcb93"
569
+ },
570
+ {
571
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.jpg",
572
+ "bytes": 77385,
573
+ "sha256": "6ad72ab05371bcf1676e63a6729a70027e17c0b18dcfff0126a28066eb0b80c9"
574
+ },
575
+ {
576
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.mp4",
577
+ "bytes": 5294687,
578
+ "sha256": "6817979f572ce37b85e4f20008bd685f557e9e0655b3a5078e693a0eeedea2a5"
579
+ },
580
+ {
581
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.jpg",
582
+ "bytes": 72569,
583
+ "sha256": "b5de2e27e0b64396dda87450343b6cf01ddefcb4d93aeca4f9a8dbf15ab4cffd"
584
+ },
585
+ {
586
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.mp4",
587
+ "bytes": 8457663,
588
+ "sha256": "56ccd67fa992dbe6d8d7331d0c481a47eea42c138bff1af61abbcbcdbe6a69b2"
589
+ },
590
+ {
591
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.jpg",
592
+ "bytes": 71636,
593
+ "sha256": "e851265a7346656ef140a8f1daad9260ddbd099d1eaa7dacc66549eb489f0c15"
594
+ },
595
+ {
596
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.mp4",
597
+ "bytes": 5566984,
598
+ "sha256": "375101e02e9cb3b4d1291974c2bac068c74088acbee38a59906cdce580512c2b"
599
+ },
600
+ {
601
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.jpg",
602
+ "bytes": 59803,
603
+ "sha256": "c045d834ad9d4cf0db23b84ba54a963daf099630e573a56a99a1c9179f8dd67a"
604
+ },
605
+ {
606
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.mp4",
607
+ "bytes": 2743425,
608
+ "sha256": "9dace53beb78d4ced4f8e8db9b49bbe0ab4dc0acc3acdc6a905e6ff026f943a6"
609
+ },
610
+ {
611
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.jpg",
612
+ "bytes": 77707,
613
+ "sha256": "5df395c178a79c260709ad46a06537037dd03566f2b4e121fcfc64923ded01df"
614
+ },
615
+ {
616
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.mp4",
617
+ "bytes": 5901554,
618
+ "sha256": "ed342ac16a89f9843028f89e9de56a1876e6b8b4dfe71ae8d0b7ebb8deabbd3d"
619
+ },
620
+ {
621
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.jpg",
622
+ "bytes": 109824,
623
+ "sha256": "e14e246e87576caf85173ac21c62a09dc8175f0a7f60a81b6057205fca395cea"
624
+ },
625
+ {
626
+ "path": "static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.mp4",
627
+ "bytes": 23990524,
628
+ "sha256": "008a2f7e2ea0a787b0cf23e0a09d942a66df6cb4efb5b91b10986665380a3f0e"
629
+ },
630
+ {
631
+ "path": "static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.jpg",
632
+ "bytes": 88370,
633
+ "sha256": "10b1b1bf01ae32aea337d48de77d9b167f44356b6fe0de2dcbe460a2921e479d"
634
+ },
635
+ {
636
+ "path": "static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.mp4",
637
+ "bytes": 10220438,
638
+ "sha256": "2de1ae05bc0c04098b75ff73665349594aa6ef223cb373a2df7ebe9f5db173fd"
639
+ },
640
+ {
641
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.jpg",
642
+ "bytes": 102761,
643
+ "sha256": "e7d81063aeb32f176acad5b797cf592247d2dbd5fd3165e2456d32c16940d288"
644
+ },
645
+ {
646
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.mp4",
647
+ "bytes": 15073440,
648
+ "sha256": "62892eb959873caebc9e17ab6f69ffb410e8aefe4553c6fa3881031ce6332076"
649
+ },
650
+ {
651
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.jpg",
652
+ "bytes": 109606,
653
+ "sha256": "35b5eb9a77ca19aa3a1b6da044c902e2f8f15388692847d2d30b14694b229217"
654
+ },
655
+ {
656
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.mp4",
657
+ "bytes": 7092963,
658
+ "sha256": "a245f7f58060f3014f99f7ad65126a13c085f0afd548e349363f8707740de432"
659
+ },
660
+ {
661
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref.mp4",
662
+ "bytes": 12001867,
663
+ "sha256": "48ec2bf3a156fcff027588dc11cd8f547ea9df2f0a1a12483e1280b15037d505"
664
+ },
665
+ {
666
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref_first_frame.jpg",
667
+ "bytes": 83450,
668
+ "sha256": "ca5d835b2bc3e26afce7fd799d919aeef074e6bd444451c10b7ff37ba7fd19ad"
669
+ },
670
+ {
671
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/rtc-997708579890794496-1789543866428_with_product_refs.jpg",
672
+ "bytes": 91676,
673
+ "sha256": "3bec329789334840e2bb6d99b96c90e7cc3cf874edf121cec7f71ec4c7b931b1"
674
+ },
675
+ {
676
+ "path": "static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/rtc-997708579890794496-1789543866428_with_product_refs.mp4",
677
+ "bytes": 5571388,
678
+ "sha256": "2fbecf180b9f52e4b4aaa651a47d20f7c8b996f07a0ac4ff1dff5cd3378f55c3"
679
+ },
680
+ {
681
+ "path": "static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.jpg",
682
+ "bytes": 125535,
683
+ "sha256": "ecfca22e516c2444ddec4aca1ecf0ec2c30d01528892c4af141fe52deb5a27dd"
684
+ },
685
+ {
686
+ "path": "static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.mp4",
687
+ "bytes": 8475987,
688
+ "sha256": "cd2bc9c9a3ac0ffdfe110dfc38282cc613d7afbad772655635c37b5926bda111"
689
+ },
690
+ {
691
+ "path": "static/webfonts/fa-brands-400.woff2",
692
+ "bytes": 78460,
693
+ "sha256": "71b3ce72680f4183d28db86b184542051fd533bb1146933233e4f6a20cf98cba"
694
+ },
695
+ {
696
+ "path": "static/webfonts/fa-regular-400.woff2",
697
+ "bytes": 13548,
698
+ "sha256": "ce20ed8a323117c8a718ff1ddc6dabb997373b575a8e896f2bf02b846c082c9d"
699
+ },
700
+ {
701
+ "path": "static/webfonts/fa-solid-900.woff2",
702
+ "bytes": 80300,
703
+ "sha256": "6b555920e358f8a25a422988b448615c33bcccb4f932e8331cebfc8e2a737fc7"
704
+ }
705
+ ]
706
+ }
README.md CHANGED
@@ -1,11 +1,30 @@
1
  ---
2
  title: FlowAct R2
3
- emoji: 🚀
4
- colorFrom: yellow
5
- colorTo: blue
6
  sdk: static
 
7
  pinned: false
8
- short_description: FlowAct-R2 project showcase
9
  ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  title: FlowAct R2
3
+ emoji: 🎬
4
+ colorFrom: gray
5
+ colorTo: red
6
  sdk: static
7
+ app_file: index.html
8
  pinned: false
 
9
  ---
10
 
11
+ # FlowAct-R2 Project Clean Export
12
+
13
+ This bundle contains all four deployable project pages:
14
+
15
+ - `index.html`
16
+ - `index1.html`
17
+ - `index_blog.html`
18
+ - `index_bytedance_blog.html`
19
+
20
+ Only local files referenced by those pages are included. It excludes unused
21
+ videos, backups, prior download archives, Git metadata, and debug caches.
22
+
23
+ ## Run
24
+
25
+ ```sh
26
+ python3 serve.py --bind 127.0.0.1 --port 8123 --directory .
27
+ ```
28
+
29
+ Open `http://127.0.0.1:8123/index.html`. The included server supports HTTP
30
+ Range requests required by the native video seek controls.
index.html CHANGED
@@ -1,19 +1,742 @@
1
- <!doctype html>
 
2
  <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+
3
  <html>
4
+ <head>
5
+ <meta charset="utf-8"/>
6
+ <meta content="FlowAct-R2: " name="description"/>
7
+ <meta content="Diffusion Transformer, Agentic Video Generation, Streaming Video Generation" name="keywords"/>
8
+ <meta content="width=device-width, initial-scale=1" name="viewport"/>
9
+ <title>FlowAct-R2: </title>
10
+
11
+ <script async="" src="https://www.googletagmanager.com/gtag/js?id=G-PYVRSFMDRL"></script>
12
+ <script>
13
+ window.dataLayer = window.dataLayer || [];
14
+
15
+ function gtag() {
16
+ dataLayer.push(arguments);
17
+ }
18
+
19
+ gtag('js', new Date());
20
+
21
+ gtag('config', 'G-PYVRSFMDRL');
22
+ </script>
23
+ <link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro" rel="stylesheet"/>
24
+ <link href="./static/css/bulma.min.css" rel="stylesheet"/>
25
+ <link href="./static/css/bulma-carousel.min.css" rel="stylesheet"/>
26
+ <link href="./static/css/bulma-slider.min.css" rel="stylesheet"/>
27
+ <link href="./static/css/fontawesome.all.min.css" rel="stylesheet"/>
28
+ <link href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css" rel="stylesheet"/>
29
+ <link href="./static/css/index.css?v=20260916_vidu_s2" rel="stylesheet"/>
30
+ <link href="./static/images/logo-r2.png" rel="icon"/>
31
+ <script defer="" src="./static/js/fontawesome.all.min.js"></script>
32
+ <script src="./static/js/bulma-carousel.min.js"></script>
33
+ <script src="./static/js/bulma-slider.min.js"></script>
34
+ <script src="./static/js/index.js?v=20260916_vidu_s2"></script>
35
+ <style>
36
+ .section {
37
+ margin-top: 0rem; /* 增加章节之间的间距 */
38
+ margin-bottom: 0rem; /* 增加章节之间的间距 */
39
+ }
40
+
41
+ .content {
42
+ margin-bottom: 0rem; /* 减小章节内的间距 */
43
+ }
44
+
45
+ h2.title {
46
+ margin-bottom: 0rem; /* 恢复章节标题和正文之间的间距 */
47
+ }
48
+ </style>
49
+ </head>
50
+ <body>
51
+ <nav aria-label="main navigation" class="navbar" role="navigation">
52
+ <div class="navbar-brand">
53
+ <a aria-expanded="false" aria-label="menu" class="navbar-burger" role="button">
54
+ <span aria-hidden="true"></span>
55
+ <span aria-hidden="true"></span>
56
+ <span aria-hidden="true"></span>
57
+ </a>
58
+ </div>
59
+ <div class="navbar-menu">
60
+ <div class="navbar-start" style="flex-grow: 1; justify-content: center;">
61
+ <div class="navbar-item has-dropdown is-hoverable">
62
+ <a class="navbar-link">
63
+ More Research
64
+ </a>
65
+ <div class="navbar-dropdown">
66
+ <a class="navbar-item" href="https://grisoon.github.io/INFP/">
67
+ INFP
68
+ </a>
69
+ <a class="navbar-item" href="https://grisoon.github.io/PersonaTalk/">
70
+ PersonaTalk
71
+ </a>
72
+ <a class="navbar-item" href="https://grisoon.github.io/FlowAct-R1/">
73
+ FlowAct-R1
74
+ </a>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </nav>
80
+
81
+ <section class="hero">
82
+ <div class="hero-body">
83
+ <div class="container is-max-widescreen">
84
+ <div class="columns is-centered">
85
+ <div class="column has-text-centered">
86
+ <h1 class="title is-2 publication-title" style="display: inline-block; text-align: center;">
87
+ <img alt="FlowAct-R2 Logo" class="img-responsive" src="./static/images/logo-r2.png" style="height: 1.1em; width: auto; vertical-align: middle; display: inline-block;"/>
88
+
89
+
90
+ <span style="vertical-align: middle;">: Beyond Talking Avatar via Streaming Multimodal References and Proactive Agent Planning</span>
91
+ </h1>
92
+
93
+ <div class="is-size-5 publication-authors">
94
+ <span class="author-block">
95
+ <a href="">Ziyao Huang</a><sup>*</sup>,
96
+ </span>
97
+ <span class="author-block">
98
+ <a href="">Zhengkun Rong</a><sup>*</sup>,
99
+ </span>
100
+ <span class="author-block">
101
+ <a href="">Shiyang Qin</a><sup>*</sup>,
102
+ </span>
103
+ <span class="author-block">
104
+ <a href="">Shuang Liang</a><sup>*</sup>,
105
+ </span>
106
+ <span class="author-block">
107
+ <a href="">Wentao Hu</a><sup>*</sup>,
108
+ </span>
109
+
110
+
111
+
112
+ <span class="author-block">
113
+ <a href="">Yuxuan Luo</a><sup>*†</sup>,
114
+ </span>
115
+ <span class="author-block">
116
+ <a href="">Yuan Zhang</a>,
117
+ </span>
118
+ <span class="author-block">
119
+ <a href="">Mingyuan Gao</a>
120
+ </span>
121
+ </div>
122
+ <div class="is-size-5 publication-authors">
123
+ <span class="author-block">Bytedance Intelligent Creation</span>
124
+ </div>
125
+ <div class="is-size-5 publication-authors">
126
+ <span class="eql-cntrb"><small><sup>*</sup>Core Contributors</small></span>
127
+ <span class="eql-cntrb"><small><sup>†</sup>Corresponding Author</small></span>
128
+ </div>
129
+ <div class="column has-text-centered">
130
+ <div class="publication-links">
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </section>
146
+
147
+ <section class="hero teaser">
148
+ <div class="container is-max-widescreen">
149
+ <div class="hero-body">
150
+
151
+ <div class="has-text-centered" style="margin-bottom: 2rem;">
152
+ <img alt="FlowAct-R2 Overview" class="img-responsive" src="./static/images/teaser_v5.png" style="max-width: 100%; height: auto; border-radius: 10px;"/>
153
+ </div>
154
+ <h2 class="subtitle has-text-justified">
155
+ <p>
156
+ We present <span class="dnerf">FlowAct-R2</span>, a next-generation framework for proactive, multimodal, and highly interactive humanoid video generation, enabling intelligent real-time streaming with rich behaviors across diverse live scenarios.
157
+ </p>
158
+ <ul style="list-style-type: disc; padding-left: 20px;">
159
+ <li><strong>Streaming Multimodal Reference Generation:</strong> By extending diffusion forcing from chunkwise generation to streaming multimodal references, FlowAct-R2 enables real-time video generation with rolling prompts and multimodal references, including continuously updated images, audio, and video, and supports hour‑level ultra‑long video generation with 720p. </li>
160
+ <li><strong>Proactive Interaction Agent:</strong>
161
+ To enable digital humans to autonomously drive their behavior when no external input is present, while seamlessly responding when interactions arise, FlowAct-R2 introduce an agent workflow with pre-online planning and online scheduling and response, which supports persona-driven behaviors, interruption handling, and skill execution for autonomous live interactions.</li>
162
+
163
+ <li><strong>Rich Behaviors Across Diverse Live Scenarios:</strong> FlowAct-R2 supports real-time text and audio interactions across four representative scenarios—video chatting, live shopping, entertainment streaming, and interactive gaming—generating not only conversational responses but also expressive behaviors and task-oriented actions beyond conventional question answering.</li>
164
+
165
+ </ul>
166
+ </h2>
167
+ <div class="columns results-carousel" id="results-carousel">
168
+ <div class="column">
169
+ <video controls="" height="100%" id="teaser2" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/nono_20260624_185701_647_withrefaudio_faststart.jpg?v=20260907">
170
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/teaser/nono_with_aigc_refs.mp4" type="video/mp4"/>
171
+ </video>
172
+ </div>
173
+ <div class="column">
174
+ <video controls="" height="100%" id="teaser3" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first">
175
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/>
176
+ </video>
177
+ </div>
178
+ <div class="column">
179
+ <video controls="" height="100%" id="teaser4" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/r2_audience_danmaku_compressed_crf28/vlog_shichahai_v5_online_20260812_011014.jpg?v=20260907">
180
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/vlog_shichahai_v5_online_20260812_011014_withrefs.mp4" type="video/mp4"/>
181
+ </video>
182
+ </div>
183
+ <div class="column">
184
+ <video controls="" height="100%" id="teaser1" loop="" playsinline="">
185
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.mp4" type="video/mp4"/>
186
+ </video>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ </section>
192
+ <section class="section">
193
+ <div class="container is-max-widescreen">
194
+
195
+
196
+
197
+
198
+ <div class="columns is-centered has-text-centered">
199
+ <div class="column is-full" style="max-width: 100%;">
200
+ <h2 class="title is-4">Method Overview</h2>
201
+ <img alt="Interpolate start reference image." class="interpolation-image" src="./static/images/method_v10.png" style="max-width: 100%; height: auto;">
202
+ <div class="content has-text-justified">
203
+ <p></p>
204
+ <p class="subtitle">
205
+ FlowAct-R2 introduces a <strong>Streaming Multimodal Reference DiT</strong> for streaming digital human video generation, built by adapting the pretrained Seedance 2.0 Mini reference-to-video backbone. By extending Diffusion Forcing to streaming multimodal references, the model continuously incorporates rolling action prompts, audio, and dynamically updated image, audio, and video references while preserving bidirectional spatiotemporal modeling. A video-driven RoPE aligns incoming reference chunks with the generation timeline, enabling references to be updated or switched during an ongoing stream. FlowAct-R2 further combines explicitly trained reference-plus-image conditioning with partially noised historical motion frames to preserve identity and appearance while reducing error accumulation.
206
+ </p>
207
+ <p class="subtitle">
208
+ Complementing the video generator, the <strong>Proactive Interaction Agent</strong> enables a digital human to proactively sustain a live session while remaining responsive to audience interactions. Offline, the agent derives a persona from multimodal character assets, organizes the session into a long-horizon agenda, and compiles complex behaviors into reusable multimodal skills. Online, it combines the prepared agenda and skills with audience events and summarized interaction history to determine what behavior to perform and how it should be scheduled. By initiating, overlaying, deferring, interrupting, or resuming behaviors according to the current context, the digital human can continue purposeful activities without continuous user prompts while responding naturally when new interactions arise.
209
+ </p>
210
+
211
+
212
+
213
+
214
+
215
+
216
+ </div>
217
+ </img></div>
218
+
219
+
220
+
221
+
222
+ </div>
223
+ </div></section>
224
+ <section class="section">
225
+ <div class="container is-max-widescreen">
226
+
227
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Entertainment Streaming</h2>
228
+ <div class="content has-text-justified">
229
+ <p class="subtitle">
230
+ FlowAct-R2 simulates lifelike entertainment streamers that interact with live audience messages and invoke skills to perform singing, dancing, and other talent-driven behaviors.
231
+ </p>
232
+ </div>
233
+ <div class="carousel results-carousel" id="entertainment-carousel" style="margin: 0 3rem;">
234
+ <div class="item control-item">
235
+ <video controls="" height="100%" id="entertainment7" loop="" playsinline="">
236
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/sing1_faststart.mp4" type="video/mp4"/>
237
+ </video>
238
+ </div>
239
+ <div class="item control-item">
240
+ <video controls="" height="100%" id="entertainment3" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914">
241
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/>
242
+ </video>
243
+ </div>
244
+
245
+ <div class="item control-item">
246
+ <video controls="" height="100%" id="entertainment6" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/qiaopixiaoyima_faststart.jpg?v=20260914">
247
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/03_qiaopixiaoyima.mp4" type="video/mp4"/>
248
+ </video>
249
+ </div>
250
+ <div class="item control-item">
251
+ <video controls="" height="100%" id="entertainment9" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/zhangheyi_faststart.jpg?v=20260914">
252
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/05_zhangheyi.mp4" type="video/mp4"/>
253
+ </video>
254
+ </div>
255
+ <div class="item control-item">
256
+ <video controls="" height="100%" id="entertainment8" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/yizhiyu_faststart.jpg?v=20260914">
257
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/04_yizhiyu.mp4" type="video/mp4"/>
258
+ </video>
259
+ </div>
260
+ <div class="item control-item">
261
+ <video controls="" height="100%" id="entertainment1" loop="" playsinline="">
262
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.mp4" type="video/mp4"/>
263
+ </video>
264
+ </div>
265
+ <div class="item control-item">
266
+ <video controls="" height="100%" id="entertainment4" loop="" playsinline="">
267
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/instrument1_faststart.mp4" type="video/mp4"/>
268
+ </video>
269
+ </div>
270
+ <div class="item control-item">
271
+ <video controls="" height="100%" id="entertainment2" loop="" playsinline="">
272
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat4_faststart.mp4" type="video/mp4"/>
273
+ </video>
274
+ </div>
275
+ </div>
276
+
277
+ <div class="carousel results-carousel" id="offline-carousel" style="margin: 0 3rem;">
278
+
279
+ <div class="item control-item">
280
+ <video controls="" height="100%" id="offline1" loop="" playsinline="">
281
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/1.mp4" type="video/mp4"/>
282
+ </video>
283
+ </div>
284
+
285
+
286
+
287
+ <div class="item control-item">
288
+ <video controls="" height="100%" id="offline3" loop="" playsinline="">
289
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/4.mp4" type="video/mp4"/>
290
+ </video>
291
+ </div>
292
+
293
+ <div class="item control-item">
294
+ <video controls="" height="100%" id="offline4" loop="" playsinline="">
295
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/5.mp4" type="video/mp4"/>
296
+ </video>
297
+ </div>
298
+
299
+
300
+
301
+
302
+
303
+ <div class="item control-item">
304
+ <video controls="" height="100%" id="offline8" loop="" playsinline="">
305
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/9.mp4" type="video/mp4"/>
306
+ </video>
307
+ </div>
308
+
309
+ <div class="item control-item">
310
+ <video controls="" height="100%" id="interaction7" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.jpg?v=20260906">
311
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.mp4" type="video/mp4"/>
312
+ </video>
313
+ </div>
314
+
315
+ <div class="item control-item">
316
+ <video controls="" height="100%" id="interaction7" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.jpg?v=20260906">
317
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.mp4" type="video/mp4"/>
318
+ </video>
319
+ </div>
320
+
321
+ </div>
322
+
323
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Live Shopping</h2>
324
+ <div class="content has-text-justified">
325
+ <p class="subtitle">
326
+ With streaming multi-reference conditioning, FlowAct-R2 enables live shopping avatars to hold products, try on items, and respond to audience feedback in interactive product-selling streams.
327
+ </p>
328
+ </div>
329
+ <div class="carousel results-carousel" id="shopping-carousel" style="margin: 0 3rem;">
330
+
331
+ <div class="item control-item">
332
+ <video controls="" height="100%" id="shopping1" loop="" playsinline="">
333
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_001_002_003.mp4" type="video/mp4"/>
334
+ </video>
335
+ </div>
336
+
337
+
338
+
339
+ <div class="item control-item">
340
+ <video controls="" height="100%" id="shopping3" loop="" playsinline="">
341
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/>
342
+ </video>
343
+ </div>
344
+
345
+ <div class="item control-item">
346
+ <video controls="" height="100%" id="shopping4" loop="" playsinline="">
347
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_061.mp4" type="video/mp4"/>
348
+ </video>
349
+ </div>
350
+
351
+ <div class="item control-item">
352
+ <video controls="" height="100%" id="shopping10" loop="" playsinline="">
353
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_104.mp4" type="video/mp4"/>
354
+ </video>
355
+ </div>
356
+
357
+ <div class="item control-item">
358
+ <video controls="" height="100%" id="shopping5" loop="" playsinline="">
359
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.mp4" type="video/mp4"/>
360
+ </video>
361
+ </div>
362
+
363
+ <div class="item control-item">
364
+ <video controls="" height="100%" id="shopping6" loop="" playsinline="">
365
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/>
366
+ </video>
367
+ </div>
368
+
369
+ <div class="item control-item">
370
+ <video controls="" height="100%" id="shopping7" loop="" playsinline="">
371
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/>
372
+ </video>
373
+ </div>
374
+
375
+ <div class="item control-item">
376
+ <video controls="" height="100%" id="shopping8" loop="" playsinline="">
377
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_034.mp4" type="video/mp4"/>
378
+ </video>
379
+ </div>
380
+
381
+
382
+
383
+
384
+ </div>
385
+ <div class="columns is-variable is-5 scenario-split">
386
+ <div class="column">
387
+
388
+
389
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Video Chatting</h2>
390
+ <div class="content has-text-justified">
391
+ <p class="subtitle">
392
+ FlowAct-R2 enables natural video chatting with responsive listening, expressive turn-taking, and lifelike avatar behaviors for seamless real-time interaction.
393
+ </p>
394
+ </div>
395
+ <div class="carousel results-carousel" id="video-chatting-carousel" style="margin: 0 1rem;">
396
+ <div class="item">
397
+ <video controls="" height="100%" id="live1" loop="" playsinline="">
398
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/GIR-02_crop.mp4" type="video/mp4"/>
399
+ </video>
400
+ </div>
401
+ <div class="item">
402
+ <video controls="" height="100%" id="live3" loop="" playsinline="">
403
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.mp4" type="video/mp4"/>
404
+ </video>
405
+ </div>
406
+ <div class="item">
407
+ <video controls="" height="100%" id="videochat-emp03" loop="" playsinline="">
408
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.mp4" type="video/mp4"/>
409
+ </video>
410
+ </div>
411
+ <div class="item">
412
+ <video controls="" height="100%" id="live4" loop="" playsinline="">
413
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.mp4" type="video/mp4"/>
414
+ </video>
415
+ </div>
416
+ <div class="item">
417
+ <video controls="" height="100%" id="live5" loop="" playsinline="">
418
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903/EMP-02_crop_compressed_faststart.mp4" type="video/mp4"/>
419
+ </video>
420
+ </div>
421
+ </div>
422
+ </div>
423
+ <div class="column">
424
+
425
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Live Vlogging</h2>
426
+ <div class="content has-text-justified">
427
+ <p class="subtitle">
428
+ FlowAct-R2 supports vlog streams with multi-scene switching and audience-driven branching, allowing live viewer inputs to steer the next scenario and action.
429
+ </p>
430
+ </div>
431
+ <div class="carousel results-carousel" id="gaming-carousel" style="margin: 0 1rem;">
432
+ <div class="item control-item">
433
+ <video controls="" height="100%" id="gaming-xianshi" loop="" playsinline="">
434
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.mp4" type="video/mp4"/>
435
+ </video>
436
+ </div>
437
+ <div class="item">
438
+ <video controls="" height="100%" id="live2" loop="" playsinline="">
439
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/TRV-03_crop.mp4" type="video/mp4"/>
440
+ </video>
441
+ </div>
442
+
443
+ <div class="item control-item">
444
+ <video controls="" height="100%" id="gaming1" loop="" playsinline="">
445
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.mp4" type="video/mp4"/>
446
+ </video>
447
+ </div>
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+ </div>
458
+ </div>
459
+ </div>
460
+ <h2 class="title is-3" style="margin-top: 4rem;">Comparing to Vidu-S1</h2>
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+ <div class="content has-text-justified">
471
+ <p class="subtitle">
472
+ Enabled by the planning capabilities of its proactive agent, FlowAct-R2 delivers clearer videos, more natural and expressive motions, stronger action responsiveness, and more accurate, contextually appropriate dialogue than Vidu-S1, achieving GSB scores of +54.76% for video quality and +40.48% for real-time interaction in human evaluations, whereas Vidu-S1 is comparatively static and may introduce unrelated conversational memory.
473
+ </p>
474
+ </div>
475
+
476
+ <div class="carousel results-carousel comparison-carousel" id="sota-video-carousel">
477
+ <div class="item comparison-item">
478
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
479
+ <div class="column comparison-method">
480
+ <div class="comparison-method-label">FlowAct-R2</div>
481
+ <video controls="" height="100%" id="sota-ours-01" loop="" playsinline="">
482
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.mp4" type="video/mp4"/>
483
+ </video>
484
+ </div>
485
+ <div class="column comparison-method">
486
+ <div class="comparison-method-label">Vidu-S1</div>
487
+ <video controls="" height="100%" id="sota-vidu-01" loop="" playsinline="">
488
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.mp4" type="video/mp4"/>
489
+ </video>
490
+ </div>
491
+ </div>
492
+ </div>
493
+ <div class="item comparison-item">
494
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
495
+ <div class="column comparison-method">
496
+ <div class="comparison-method-label">FlowAct-R2</div>
497
+ <video controls="" height="100%" id="sota-ours-02" loop="" playsinline="">
498
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.mp4" type="video/mp4"/>
499
+ </video>
500
+ </div>
501
+ <div class="column comparison-method">
502
+ <div class="comparison-method-label">Vidu-S1</div>
503
+ <video controls="" height="100%" id="sota-vidu-02" loop="" playsinline="">
504
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.mp4" type="video/mp4"/>
505
+ </video>
506
+ </div>
507
+ </div>
508
+ </div>
509
+ <div class="item comparison-item">
510
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
511
+ <div class="column comparison-method">
512
+ <div class="comparison-method-label">FlowAct-R2</div>
513
+ <video controls="" height="100%" id="sota-ours-03" loop="" playsinline="">
514
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.mp4" type="video/mp4"/>
515
+ </video>
516
+ </div>
517
+ <div class="column comparison-method">
518
+ <div class="comparison-method-label">Vidu-S1</div>
519
+ <video controls="" height="100%" id="sota-vidu-03" loop="" playsinline="">
520
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.mp4" type="video/mp4"/>
521
+ </video>
522
+ </div>
523
+ </div>
524
+ </div>
525
+ <div class="item comparison-item">
526
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
527
+ <div class="column comparison-method">
528
+ <div class="comparison-method-label">FlowAct-R2</div>
529
+ <video controls="" height="100%" id="sota-ours-04" loop="" playsinline="">
530
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.mp4" type="video/mp4"/>
531
+ </video>
532
+ </div>
533
+ <div class="column comparison-method">
534
+ <div class="comparison-method-label">Vidu-S1</div>
535
+ <video controls="" height="100%" id="sota-vidu-04" loop="" playsinline="">
536
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.mp4" type="video/mp4"/>
537
+ </video>
538
+ </div>
539
+ </div>
540
+ </div>
541
+ <div class="item comparison-item">
542
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
543
+ <div class="column comparison-method">
544
+ <div class="comparison-method-label">FlowAct-R2</div>
545
+ <video controls="" height="100%" id="sota-ours-05" loop="" playsinline="">
546
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.mp4" type="video/mp4"/>
547
+ </video>
548
+ </div>
549
+ <div class="column comparison-method">
550
+ <div class="comparison-method-label">Vidu-S1</div>
551
+ <video controls="" height="100%" id="sota-vidu-05" loop="" playsinline="">
552
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.mp4" type="video/mp4"/>
553
+ </video>
554
+ </div>
555
+ </div>
556
+ </div>
557
+ <div class="item comparison-item">
558
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
559
+ <div class="column comparison-method">
560
+ <div class="comparison-method-label">FlowAct-R2</div>
561
+ <video controls="" height="100%" id="sota-ours-06" loop="" playsinline="">
562
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.mp4" type="video/mp4"/>
563
+ </video>
564
+ </div>
565
+ <div class="column comparison-method">
566
+ <div class="comparison-method-label">Vidu-S1</div>
567
+ <video controls="" height="100%" id="sota-vidu-06" loop="" playsinline="">
568
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.mp4" type="video/mp4"/>
569
+ </video>
570
+ </div>
571
+ </div>
572
+ </div>
573
+ <div class="item comparison-item">
574
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
575
+ <div class="column comparison-method">
576
+ <div class="comparison-method-label">FlowAct-R2</div>
577
+ <video controls="" height="100%" id="sota-ours-07" loop="" playsinline="">
578
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.mp4" type="video/mp4"/>
579
+ </video>
580
+ </div>
581
+ <div class="column comparison-method">
582
+ <div class="comparison-method-label">Vidu-S1</div>
583
+ <video controls="" height="100%" id="sota-vidu-07" loop="" playsinline="">
584
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.mp4" type="video/mp4"/>
585
+ </video>
586
+ </div>
587
+ </div>
588
+ </div>
589
+ <div class="item comparison-item">
590
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
591
+ <div class="column comparison-method">
592
+ <div class="comparison-method-label">FlowAct-R2</div>
593
+ <video controls="" height="100%" id="sota-ours-08" loop="" playsinline="">
594
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.mp4" type="video/mp4"/>
595
+ </video>
596
+ </div>
597
+ <div class="column comparison-method">
598
+ <div class="comparison-method-label">Vidu-S1</div>
599
+ <video controls="" height="100%" id="sota-vidu-08" loop="" playsinline="">
600
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.mp4" type="video/mp4"/>
601
+ </video>
602
+ </div>
603
+ </div>
604
+ </div>
605
+ </div>
606
+ <h2 class="title is-3" id="vidu-s2-comparison" style="margin-top: 4rem;">Comparing to Vidu-S2</h2>
607
+ <div class="content has-text-justified">
608
+ <p class="subtitle">
609
+ Compared with Vidu-S2, FlowAct-R2 better preserves the appearance of referenced objects and switches more naturally between product references, demonstrating stronger object consistency and reference switching in these live shopping examples. Both Vidu-S2 and FlowAct-R2 can trigger dance from text; FlowAct-R2 further supports reference-video conditioning, enabling more expressive dance generation.
610
+ </p>
611
+ </div>
612
+ <div class="carousel results-carousel comparison-carousel comparison-portrait" id="vidu-s2-video-carousel">
613
+ <div class="item comparison-item">
614
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
615
+ <div class="column comparison-method">
616
+ <div class="comparison-method-label">FlowAct-R2</div>
617
+ <video controls="" height="100%" id="s2-ours-01" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first">
618
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/>
619
+ </video>
620
+ </div>
621
+ <div class="column comparison-method">
622
+ <div class="comparison-method-label">Vidu-S2</div>
623
+ <video controls="" height="100%" id="s2-vidu-01" loop="" playsinline="">
624
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.mp4" type="video/mp4"/>
625
+ </video>
626
+ </div>
627
+ </div>
628
+ </div>
629
+ <div class="item comparison-item">
630
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
631
+ <div class="column comparison-method">
632
+ <div class="comparison-method-label">FlowAct-R2</div>
633
+ <video controls="" height="100%" id="s2-ours-02" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024_first_frame.jpg?v=20260921_first">
634
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/>
635
+ </video>
636
+ </div>
637
+ <div class="column comparison-method">
638
+ <div class="comparison-method-label">Vidu-S2</div>
639
+ <video controls="" height="100%" id="s2-vidu-02" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref_first_frame.jpg?v=20260921_first">
640
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref.mp4" type="video/mp4"/>
641
+ </video>
642
+ </div>
643
+ </div>
644
+ </div>
645
+ <div class="item comparison-item">
646
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
647
+ <div class="column comparison-method">
648
+ <div class="comparison-method-label">FlowAct-R2</div>
649
+ <video controls="" height="100%" id="s2-ours-03" loop="" playsinline="">
650
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/>
651
+ </video>
652
+ </div>
653
+ <div class="column comparison-method">
654
+ <div class="comparison-method-label">Vidu-S2</div>
655
+ <video controls="" height="100%" id="s2-vidu-03" loop="" playsinline="">
656
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.mp4" type="video/mp4"/>
657
+ </video>
658
+ </div>
659
+ </div>
660
+ </div>
661
+ <div class="item comparison-item">
662
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
663
+ <div class="column comparison-method">
664
+ <div class="comparison-method-label">FlowAct-R2</div>
665
+ <video controls="" height="100%" id="s2-ours-04" loop="" playsinline="">
666
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/>
667
+ </video>
668
+ </div>
669
+ <div class="column comparison-method">
670
+ <div class="comparison-method-label">Vidu-S2</div>
671
+ <video controls="" height="100%" id="s2-vidu-04" loop="" playsinline="">
672
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.mp4" type="video/mp4"/>
673
+ </video>
674
+ </div>
675
+ </div>
676
+ </div>
677
+ <div class="item comparison-item">
678
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
679
+ <div class="column comparison-method">
680
+ <div class="comparison-method-label">FlowAct-R2</div>
681
+ <video controls="" height="100%" id="s2-ours-05" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914">
682
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/>
683
+ </video>
684
+ </div>
685
+ <div class="column comparison-method">
686
+ <div class="comparison-method-label">Vidu-S2</div>
687
+ <video controls="" height="100%" id="s2-vidu-05" loop="" playsinline="">
688
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.mp4" type="video/mp4"/>
689
+ </video>
690
+ </div>
691
+ </div>
692
+ </div>
693
+ </div>
694
+ </div>
695
+ </section>
696
+ <section class="section" id="BibTeX">
697
+ <div class="container is-max-desktop content">
698
+ <h2 class="title">BibTeX</h2>
699
+ <pre><code>
700
+ @online{2026flowact-R2,
701
+ title={FlowAct-R2: Beyond Talking Avatar via Streaming Multimodal References and Proactive Agent Planning},
702
+ author={Ziyao Huang, Zhengkun Rong, Shiyang Qin, Shuang Liang, Wentao Hu, Yuxuan Luo, Yuan Zhang, Mingyuan Gao},
703
+ year={2026},
704
+ url={https://bone-11.github.io/Flowact-R2/},
705
+ }
706
+
707
+ @article{wang2026flowact,
708
+ title={FlowAct-R1: Towards Interactive Humanoid Video Generation},
709
+ author={Wang, Lizhen and Zhu, Yongming and Ge, Zhipeng and Zheng, Youwei and Zhang, Longhao and Hu, Tianshu and Qin, Shiyang and Luo, Mingshuang and Zhang, Jiaxu and Chen, Xin and others},
710
+ journal={arXiv preprint arXiv:2601.10103},
711
+ year={2026}
712
+ }
713
+
714
+ @article{zhu2024infp,
715
+ title={INFP: Audio-driven interactive head generation in dyadic conversations},
716
+ author={Zhu, Yongming and Zhang, Longhao and Rong, Zhengkun and Hu, Tianshu and Liang, Shuang and Ge, Zhipeng},
717
+ journal={arXiv preprint arXiv:2412.04037},
718
+ year={2024}
719
+ }
720
+ </code></pre>
721
+ </div>
722
+ </section>
723
+ <footer class="footer">
724
+ <div class="container">
725
+ <div class="columns is-centered">
726
+ <div class="column is-8">
727
+ <div class="content">
728
+ <h2 class="title is-4">Ethics Concerns</h2>
729
+ <p>
730
+ All human images used in our demonstrations were generated by AI tools, and are intended solely to showcase the capabilities of this research. Please contact us (luoyuxuan@bytedance.com) if there are any concerns, and we will delete it in time.
731
+ </p>
732
+ <h2 class="title is-4">Acknowledgement</h2>
733
+ <p>
734
+ We would like to thank <a href="https://nerfies.github.io/">Nerfies</a> for providing the website template.
735
+ </p>
736
+ </div>
737
+ </div>
738
+ </div>
739
+ </div>
740
+ </footer>
741
+ </body>
742
  </html>
index1.html ADDED
@@ -0,0 +1,729 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="utf-8"/>
6
+ <meta content="FlowAct-R2: " name="description"/>
7
+ <meta content="Diffusion Transformer, Agentic Video Generation, Streaming Video Generation" name="keywords"/>
8
+ <meta content="width=device-width, initial-scale=1" name="viewport"/>
9
+ <title>FlowAct-R2: </title>
10
+
11
+ <script async="" src="https://www.googletagmanager.com/gtag/js?id=G-PYVRSFMDRL"></script>
12
+ <script>
13
+ window.dataLayer = window.dataLayer || [];
14
+
15
+ function gtag() {
16
+ dataLayer.push(arguments);
17
+ }
18
+
19
+ gtag('js', new Date());
20
+
21
+ gtag('config', 'G-PYVRSFMDRL');
22
+ </script>
23
+ <link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro" rel="stylesheet"/>
24
+ <link href="./static/css/bulma.min.css" rel="stylesheet"/>
25
+ <link href="./static/css/bulma-carousel.min.css" rel="stylesheet"/>
26
+ <link href="./static/css/bulma-slider.min.css" rel="stylesheet"/>
27
+ <link href="./static/css/fontawesome.all.min.css" rel="stylesheet"/>
28
+ <link href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css" rel="stylesheet"/>
29
+ <link href="./static/css/index.css?v=20260916_vidu_s2" rel="stylesheet"/>
30
+ <link href="./static/images/logo-r2.png" rel="icon"/>
31
+ <script defer="" src="./static/js/fontawesome.all.min.js"></script>
32
+ <script src="./static/js/bulma-carousel.min.js"></script>
33
+ <script src="./static/js/bulma-slider.min.js"></script>
34
+ <script src="./static/js/index.js?v=20260916_vidu_s2"></script>
35
+ <style>
36
+ .section {
37
+ margin-top: 0rem; /* 增加章节之间的间距 */
38
+ margin-bottom: 0rem; /* 增加章节之间的间距 */
39
+ }
40
+
41
+ .content {
42
+ margin-bottom: 0rem; /* 减小章节内的间距 */
43
+ }
44
+
45
+ h2.title {
46
+ margin-bottom: 0rem; /* 恢复章节标题和正文之间的间距 */
47
+ }
48
+ </style>
49
+ </head>
50
+ <body>
51
+ <nav aria-label="main navigation" class="navbar" role="navigation">
52
+ <div class="navbar-brand">
53
+ <a aria-expanded="false" aria-label="menu" class="navbar-burger" role="button">
54
+ <span aria-hidden="true"></span>
55
+ <span aria-hidden="true"></span>
56
+ <span aria-hidden="true"></span>
57
+ </a>
58
+ </div>
59
+ <div class="navbar-menu">
60
+ <div class="navbar-start" style="flex-grow: 1; justify-content: center;">
61
+ <div class="navbar-item has-dropdown is-hoverable">
62
+ <a class="navbar-link">
63
+ More Research
64
+ </a>
65
+ <div class="navbar-dropdown">
66
+ <a class="navbar-item" href="https://grisoon.github.io/INFP/">
67
+ INFP
68
+ </a>
69
+ <a class="navbar-item" href="https://grisoon.github.io/PersonaTalk/">
70
+ PersonaTalk
71
+ </a>
72
+ <a class="navbar-item" href="https://grisoon.github.io/FlowAct-R1/">
73
+ FlowAct-R1
74
+ </a>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </nav>
80
+
81
+ <section class="hero">
82
+ <div class="hero-body">
83
+ <div class="container is-max-widescreen">
84
+ <div class="columns is-centered">
85
+ <div class="column has-text-centered">
86
+ <h1 class="title is-2 publication-title" style="display: inline-block; text-align: center;">
87
+ <img alt="FlowAct-R2 Logo" class="img-responsive" src="./static/images/logo-r2.png" style="height: 1.1em; width: auto; vertical-align: middle; display: inline-block;"/>
88
+
89
+ <span style="vertical-align: middle;">: Live Humanoid Video Stream Generation with Streaming Multimodal References and Proactive Agent</span>
90
+ </h1>
91
+
92
+ <div class="is-size-5 publication-authors">
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+ </div>
101
+ <div class="is-size-5 publication-authors">
102
+ <span class="author-block">Bytedance Intelligent Creation</span>
103
+ </div>
104
+
105
+ <div class="column has-text-centered">
106
+ <div class="publication-links">
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </section>
122
+
123
+ <section class="hero teaser">
124
+ <div class="container is-max-widescreen">
125
+ <div class="hero-body">
126
+
127
+ <div class="has-text-centered" style="margin-bottom: 2rem;">
128
+ <img alt="FlowAct-R2 Overview" class="img-responsive" src="./static/images/teaser_v5.png" style="max-width: 100%; height: auto; border-radius: 10px;"/>
129
+ </div>
130
+ <h2 class="subtitle has-text-justified">
131
+ <p>
132
+ We present <span class="dnerf">FlowAct-R2</span>, a next-generation framework for proactive, multimodal, and highly interactive humanoid video generation, enabling intelligent real-time streaming with rich behaviors across diverse live scenarios.
133
+ </p>
134
+ <ul style="list-style-type: disc; padding-left: 20px;">
135
+ <li><strong>Streaming Multimodal Reference Generation:</strong> By extending diffusion forcing from chunkwise generation to streaming multimodal references, FlowAct-R2 enables real-time video generation with rolling prompts and multimodal references, including continuously updated images, audio, and video, and supports hour‑level ultra‑long video generation with 720p. </li>
136
+ <li><strong>Proactive Interaction Agent:</strong>
137
+ To enable digital humans to autonomously drive their behavior when no external input is present, while seamlessly responding when interactions arise, FlowAct-R2 introduce an agent workflow with pre-online planning and online scheduling and response, which supports persona-driven behaviors, interruption handling, and skill execution for autonomous live interactions.</li>
138
+
139
+ <li><strong>Rich Behaviors Across Diverse Live Scenarios:</strong> FlowAct-R2 supports real-time text and audio interactions across four representative scenarios—video chatting, live shopping, entertainment streaming, and interactive gaming—generating not only conversational responses but also expressive behaviors and task-oriented actions beyond conventional question answering.</li>
140
+
141
+ </ul>
142
+ </h2>
143
+ <div class="columns results-carousel" id="results-carousel">
144
+ <div class="column">
145
+ <video controls="" height="100%" id="teaser1" loop="" playsinline="">
146
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.mp4" type="video/mp4"/>
147
+ </video>
148
+ </div>
149
+ <div class="column">
150
+ <video controls="" height="100%" id="teaser2" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/nono_20260624_185701_647_withrefaudio_faststart.jpg?v=20260907">
151
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/teaser/nono_with_aigc_refs.mp4" type="video/mp4"/>
152
+ </video>
153
+ </div>
154
+ <div class="column">
155
+ <video controls="" height="100%" id="teaser3" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first">
156
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/>
157
+ </video>
158
+ </div>
159
+ <div class="column">
160
+ <video controls="" height="100%" id="teaser4" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/r2_audience_danmaku_compressed_crf28/vlog_shichahai_v5_online_20260812_011014.jpg?v=20260907">
161
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/vlog_shichahai_v5_online_20260812_011014_withrefs.mp4" type="video/mp4"/>
162
+ </video>
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </div>
167
+ </section>
168
+ <section class="section">
169
+ <div class="container is-max-widescreen">
170
+
171
+
172
+
173
+
174
+ <div class="columns is-centered has-text-centered">
175
+ <div class="column is-full" style="max-width: 100%;">
176
+ <h2 class="title is-4">Method Overview</h2>
177
+ <img alt="Interpolate start reference image." class="interpolation-image" src="./static/images/method_v10.png" style="max-width: 100%; height: auto;">
178
+ <div class="content has-text-justified">
179
+ <p>
180
+ Overview of <span class="dnerf">FlowAct-R2</span>.
181
+ FlowAct-R2 enables proactive, lifelike humanoid video generation by coupling a two-stage proactive agent with a streaming multi-reference DiT. The agent pre-plans long-horizon agendas and reusable multimodal skills offline, and dynamically orchestrates online responses, tool execution, and real-time interruptions. Conditioned on rolling action prompts and streaming audio, the generative backbone incorporates video-driven RoPE and an explicitly trained (R+I)2V multi-reference mechanism—supporting dynamic image, audio, and video references to suppress cumulative drift and synthesize high-fidelity 720p avatar videos in real time.
182
+
183
+
184
+ </p>
185
+ <h3 class="title is-5" style="margin-top: 1.5rem;">Streaming Multimoal Reference DiT</h3>
186
+ <p class="subtitle">
187
+ Existing streaming video generation methods are typically adapted from image-to-video (I2V) or text-to-video (T2V) models, limiting their ability to incorporate dynamically evolving references and often requiring substantial architectural modifications for long-horizon consistency. However, interactive digital humans demand continuous multimodal control across diverse scenarios, such as e-commerce livestreaming, talent performances, and scene exploration.
188
+ </p>
189
+ <p class="subtitle">
190
+ We present FlowAct-R2, a streaming adaptation of Seedance 2.0 Mini designed for interactive digital humans. Rather than augmenting an I2V model with attention sinks, FlowAct-R2 builds directly on a pre-trained reference-to-video (R2V) backbone, inheriting its strong reference preservation capability. We employ Diffusion Forcing to enable autoregressive streaming inference while preserving the backbone and its bidirectional spatiotemporal attention. We further extend Diffusion Forcing to streaming multimodal reference generation, allowing image, audio, and video references, together with text prompts, to be continuously updated or switched during inference. A modified RoPE aligns incoming reference chunks with the corresponding generation timeline, ensuring temporally synchronized control.
191
+ </p>
192
+ <p class="subtitle">
193
+ The strong reference conditioning of the R2V backbone already substantially reduces autoregressive drift by continuously anchoring generation to the reference content. To further suppress residual error accumulation, we condition the model on partially noised historical motion frames rather than clean ones, improving its robustness to imperfect generated histories. Specialized audio-driven training enhances synchronization among speech, lip movements, expressions, and head poses, while coarse-to-fine inference progressively restores visual details. Together, these designs enable stable, hour-long, real-time 720p digital human generation under continuous multimodal control.
194
+ </p>
195
+
196
+ <h3 class="title is-5" style="margin-top: 1.5rem;">Proactive Interaction Agent</h3>
197
+ <p class="subtitle">
198
+ Proactivity in a streaming digital human extends beyond generating timely responses to user inputs: the digital human must continuously determine what to do next, even in the absence of explicit instructions, while maintaining a coherent persona and pursuing the long-term objectives of the live session. This creates a fundamental tension between long-horizon preparation and online adaptation. Purely online planning is often too myopic and latency-sensitive to organize an entire session or synthesize complex behaviors on demand, whereas a fixed offline script cannot accommodate unpredictable audience interactions or evolving contexts.
199
+ </p>
200
+ <p class="subtitle">
201
+ FlowAct-R2 therefore adopts a two-stage agent architecture. Offline, it derives a persona from multimodal character assets, organizes the session into a long-horizon agenda, and compiles complex behaviors into reusable skills. Online, a scheduling agent integrates the agenda, interaction events, and historical context to determine when to initiate, overlay, defer, interrupt, or resume behaviors, while invoking the appropriate skills for execution. This design enables the digital human to autonomously sustain the live session while remaining responsive to interactions.
202
+ </p>
203
+ </div>
204
+ </img></div>
205
+
206
+
207
+
208
+
209
+ </div>
210
+ </div></section>
211
+ <section class="section">
212
+ <div class="container is-max-widescreen">
213
+
214
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Entertainment Streaming</h2>
215
+ <div class="content has-text-justified">
216
+ <p class="subtitle">
217
+ FlowAct-R2 simulates lifelike entertainment streamers that interact with live audience messages and invoke skills to perform singing, dancing, and other talent-driven behaviors.
218
+ </p>
219
+ </div>
220
+ <div class="carousel results-carousel" id="entertainment-carousel" style="margin: 0 3rem;">
221
+ <div class="item control-item">
222
+ <video controls="" height="100%" id="entertainment7" loop="" playsinline="">
223
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/sing1_faststart.mp4" type="video/mp4"/>
224
+ </video>
225
+ </div>
226
+ <div class="item control-item">
227
+ <video controls="" height="100%" id="entertainment3" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914">
228
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/>
229
+ </video>
230
+ </div>
231
+
232
+ <div class="item control-item">
233
+ <video controls="" height="100%" id="entertainment6" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/qiaopixiaoyima_faststart.jpg?v=20260914">
234
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/03_qiaopixiaoyima.mp4" type="video/mp4"/>
235
+ </video>
236
+ </div>
237
+ <div class="item control-item">
238
+ <video controls="" height="100%" id="entertainment9" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/zhangheyi_faststart.jpg?v=20260914">
239
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/05_zhangheyi.mp4" type="video/mp4"/>
240
+ </video>
241
+ </div>
242
+ <div class="item control-item">
243
+ <video controls="" height="100%" id="entertainment8" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/yizhiyu_faststart.jpg?v=20260914">
244
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/04_yizhiyu.mp4" type="video/mp4"/>
245
+ </video>
246
+ </div>
247
+ <div class="item control-item">
248
+ <video controls="" height="100%" id="entertainment1" loop="" playsinline="">
249
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.mp4" type="video/mp4"/>
250
+ </video>
251
+ </div>
252
+ <div class="item control-item">
253
+ <video controls="" height="100%" id="entertainment4" loop="" playsinline="">
254
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/instrument1_faststart.mp4" type="video/mp4"/>
255
+ </video>
256
+ </div>
257
+ <div class="item control-item">
258
+ <video controls="" height="100%" id="entertainment2" loop="" playsinline="">
259
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat4_faststart.mp4" type="video/mp4"/>
260
+ </video>
261
+ </div>
262
+ </div>
263
+
264
+ <div class="carousel results-carousel" id="offline-carousel" style="margin: 0 3rem;">
265
+
266
+ <div class="item control-item">
267
+ <video controls="" height="100%" id="offline1" loop="" playsinline="">
268
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/1.mp4" type="video/mp4"/>
269
+ </video>
270
+ </div>
271
+
272
+
273
+
274
+ <div class="item control-item">
275
+ <video controls="" height="100%" id="offline3" loop="" playsinline="">
276
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/4.mp4" type="video/mp4"/>
277
+ </video>
278
+ </div>
279
+
280
+ <div class="item control-item">
281
+ <video controls="" height="100%" id="offline4" loop="" playsinline="">
282
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/5.mp4" type="video/mp4"/>
283
+ </video>
284
+ </div>
285
+
286
+
287
+
288
+
289
+
290
+ <div class="item control-item">
291
+ <video controls="" height="100%" id="offline8" loop="" playsinline="">
292
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/9.mp4" type="video/mp4"/>
293
+ </video>
294
+ </div>
295
+
296
+ <div class="item control-item">
297
+ <video controls="" height="100%" id="interaction7" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.jpg?v=20260906">
298
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.mp4" type="video/mp4"/>
299
+ </video>
300
+ </div>
301
+
302
+ <div class="item control-item">
303
+ <video controls="" height="100%" id="interaction7" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.jpg?v=20260906">
304
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.mp4" type="video/mp4"/>
305
+ </video>
306
+ </div>
307
+
308
+ </div>
309
+
310
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Live Shopping</h2>
311
+ <div class="content has-text-justified">
312
+ <p class="subtitle">
313
+ With streaming multi-reference conditioning, FlowAct-R2 enables live shopping avatars to hold products, try on items, and respond to audience feedback in interactive product-selling streams.
314
+ </p>
315
+ </div>
316
+ <div class="carousel results-carousel" id="shopping-carousel" style="margin: 0 3rem;">
317
+
318
+ <div class="item control-item">
319
+ <video controls="" height="100%" id="shopping1" loop="" playsinline="">
320
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_001_002_003.mp4" type="video/mp4"/>
321
+ </video>
322
+ </div>
323
+
324
+
325
+
326
+ <div class="item control-item">
327
+ <video controls="" height="100%" id="shopping3" loop="" playsinline="">
328
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/>
329
+ </video>
330
+ </div>
331
+
332
+ <div class="item control-item">
333
+ <video controls="" height="100%" id="shopping4" loop="" playsinline="">
334
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_061.mp4" type="video/mp4"/>
335
+ </video>
336
+ </div>
337
+
338
+ <div class="item control-item">
339
+ <video controls="" height="100%" id="shopping10" loop="" playsinline="">
340
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_104.mp4" type="video/mp4"/>
341
+ </video>
342
+ </div>
343
+
344
+ <div class="item control-item">
345
+ <video controls="" height="100%" id="shopping5" loop="" playsinline="">
346
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.mp4" type="video/mp4"/>
347
+ </video>
348
+ </div>
349
+
350
+ <div class="item control-item">
351
+ <video controls="" height="100%" id="shopping6" loop="" playsinline="">
352
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/>
353
+ </video>
354
+ </div>
355
+
356
+ <div class="item control-item">
357
+ <video controls="" height="100%" id="shopping7" loop="" playsinline="">
358
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/>
359
+ </video>
360
+ </div>
361
+
362
+ <div class="item control-item">
363
+ <video controls="" height="100%" id="shopping8" loop="" playsinline="">
364
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_034.mp4" type="video/mp4"/>
365
+ </video>
366
+ </div>
367
+
368
+
369
+
370
+
371
+ </div>
372
+ <div class="columns is-variable is-5 scenario-split">
373
+ <div class="column">
374
+
375
+
376
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Video Chatting</h2>
377
+ <div class="content has-text-justified">
378
+ <p class="subtitle">
379
+ FlowAct-R2 enables natural video chatting with responsive listening, expressive turn-taking, and lifelike avatar behaviors for seamless real-time interaction.
380
+ </p>
381
+ </div>
382
+ <div class="carousel results-carousel" id="video-chatting-carousel" style="margin: 0 1rem;">
383
+ <div class="item">
384
+ <video controls="" height="100%" id="live1" loop="" playsinline="">
385
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/GIR-02_crop.mp4" type="video/mp4"/>
386
+ </video>
387
+ </div>
388
+ <div class="item">
389
+ <video controls="" height="100%" id="live3" loop="" playsinline="">
390
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.mp4" type="video/mp4"/>
391
+ </video>
392
+ </div>
393
+ <div class="item">
394
+ <video controls="" height="100%" id="videochat-emp03" loop="" playsinline="">
395
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.mp4" type="video/mp4"/>
396
+ </video>
397
+ </div>
398
+ <div class="item">
399
+ <video controls="" height="100%" id="live4" loop="" playsinline="">
400
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.mp4" type="video/mp4"/>
401
+ </video>
402
+ </div>
403
+ <div class="item">
404
+ <video controls="" height="100%" id="live5" loop="" playsinline="">
405
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903/EMP-02_crop_compressed_faststart.mp4" type="video/mp4"/>
406
+ </video>
407
+ </div>
408
+ </div>
409
+ </div>
410
+ <div class="column">
411
+
412
+ <h2 class="title is-3" style="margin-bottom: 1rem;">Live Vlogging</h2>
413
+ <div class="content has-text-justified">
414
+ <p class="subtitle">
415
+ FlowAct-R2 supports vlog streams with multi-scene switching and audience-driven branching, allowing live viewer inputs to steer the next scenario and action.
416
+ </p>
417
+ </div>
418
+ <div class="carousel results-carousel" id="gaming-carousel" style="margin: 0 1rem;">
419
+ <div class="item control-item">
420
+ <video controls="" height="100%" id="gaming-xianshi" loop="" playsinline="">
421
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.mp4" type="video/mp4"/>
422
+ </video>
423
+ </div>
424
+ <div class="item">
425
+ <video controls="" height="100%" id="live2" loop="" playsinline="">
426
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/TRV-03_crop.mp4" type="video/mp4"/>
427
+ </video>
428
+ </div>
429
+
430
+ <div class="item control-item">
431
+ <video controls="" height="100%" id="gaming1" loop="" playsinline="">
432
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.mp4" type="video/mp4"/>
433
+ </video>
434
+ </div>
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+ </div>
445
+ </div>
446
+ </div>
447
+ <h2 class="title is-3" style="margin-top: 4rem;">Comparing to Vidu-S1</h2>
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+ <div class="content has-text-justified">
458
+ <p class="subtitle">
459
+ Enabled by the planning capabilities of its proactive agent, FlowAct-R2 delivers clearer videos, more natural and expressive motions, stronger action responsiveness, and more accurate, contextually appropriate dialogue than Vidu-S1, achieving GSB scores of +54.76% for video quality and +40.48% for real-time interaction in human evaluations, whereas Vidu-S1 is comparatively static and may introduce unrelated conversational memory.
460
+ </p>
461
+ </div>
462
+
463
+ <div class="carousel results-carousel comparison-carousel" id="sota-video-carousel">
464
+ <div class="item comparison-item">
465
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
466
+ <div class="column comparison-method">
467
+ <div class="comparison-method-label">FlowAct-R2</div>
468
+ <video controls="" height="100%" id="sota-ours-01" loop="" playsinline="">
469
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.mp4" type="video/mp4"/>
470
+ </video>
471
+ </div>
472
+ <div class="column comparison-method">
473
+ <div class="comparison-method-label">Vidu-S1</div>
474
+ <video controls="" height="100%" id="sota-vidu-01" loop="" playsinline="">
475
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.mp4" type="video/mp4"/>
476
+ </video>
477
+ </div>
478
+ </div>
479
+ </div>
480
+ <div class="item comparison-item">
481
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
482
+ <div class="column comparison-method">
483
+ <div class="comparison-method-label">FlowAct-R2</div>
484
+ <video controls="" height="100%" id="sota-ours-02" loop="" playsinline="">
485
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.mp4" type="video/mp4"/>
486
+ </video>
487
+ </div>
488
+ <div class="column comparison-method">
489
+ <div class="comparison-method-label">Vidu-S1</div>
490
+ <video controls="" height="100%" id="sota-vidu-02" loop="" playsinline="">
491
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.mp4" type="video/mp4"/>
492
+ </video>
493
+ </div>
494
+ </div>
495
+ </div>
496
+ <div class="item comparison-item">
497
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
498
+ <div class="column comparison-method">
499
+ <div class="comparison-method-label">FlowAct-R2</div>
500
+ <video controls="" height="100%" id="sota-ours-03" loop="" playsinline="">
501
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.mp4" type="video/mp4"/>
502
+ </video>
503
+ </div>
504
+ <div class="column comparison-method">
505
+ <div class="comparison-method-label">Vidu-S1</div>
506
+ <video controls="" height="100%" id="sota-vidu-03" loop="" playsinline="">
507
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.mp4" type="video/mp4"/>
508
+ </video>
509
+ </div>
510
+ </div>
511
+ </div>
512
+ <div class="item comparison-item">
513
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
514
+ <div class="column comparison-method">
515
+ <div class="comparison-method-label">FlowAct-R2</div>
516
+ <video controls="" height="100%" id="sota-ours-04" loop="" playsinline="">
517
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.mp4" type="video/mp4"/>
518
+ </video>
519
+ </div>
520
+ <div class="column comparison-method">
521
+ <div class="comparison-method-label">Vidu-S1</div>
522
+ <video controls="" height="100%" id="sota-vidu-04" loop="" playsinline="">
523
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.mp4" type="video/mp4"/>
524
+ </video>
525
+ </div>
526
+ </div>
527
+ </div>
528
+ <div class="item comparison-item">
529
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
530
+ <div class="column comparison-method">
531
+ <div class="comparison-method-label">FlowAct-R2</div>
532
+ <video controls="" height="100%" id="sota-ours-05" loop="" playsinline="">
533
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.mp4" type="video/mp4"/>
534
+ </video>
535
+ </div>
536
+ <div class="column comparison-method">
537
+ <div class="comparison-method-label">Vidu-S1</div>
538
+ <video controls="" height="100%" id="sota-vidu-05" loop="" playsinline="">
539
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.mp4" type="video/mp4"/>
540
+ </video>
541
+ </div>
542
+ </div>
543
+ </div>
544
+ <div class="item comparison-item">
545
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
546
+ <div class="column comparison-method">
547
+ <div class="comparison-method-label">FlowAct-R2</div>
548
+ <video controls="" height="100%" id="sota-ours-06" loop="" playsinline="">
549
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.mp4" type="video/mp4"/>
550
+ </video>
551
+ </div>
552
+ <div class="column comparison-method">
553
+ <div class="comparison-method-label">Vidu-S1</div>
554
+ <video controls="" height="100%" id="sota-vidu-06" loop="" playsinline="">
555
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.mp4" type="video/mp4"/>
556
+ </video>
557
+ </div>
558
+ </div>
559
+ </div>
560
+ <div class="item comparison-item">
561
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
562
+ <div class="column comparison-method">
563
+ <div class="comparison-method-label">FlowAct-R2</div>
564
+ <video controls="" height="100%" id="sota-ours-07" loop="" playsinline="">
565
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.mp4" type="video/mp4"/>
566
+ </video>
567
+ </div>
568
+ <div class="column comparison-method">
569
+ <div class="comparison-method-label">Vidu-S1</div>
570
+ <video controls="" height="100%" id="sota-vidu-07" loop="" playsinline="">
571
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.mp4" type="video/mp4"/>
572
+ </video>
573
+ </div>
574
+ </div>
575
+ </div>
576
+ <div class="item comparison-item">
577
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
578
+ <div class="column comparison-method">
579
+ <div class="comparison-method-label">FlowAct-R2</div>
580
+ <video controls="" height="100%" id="sota-ours-08" loop="" playsinline="">
581
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.mp4" type="video/mp4"/>
582
+ </video>
583
+ </div>
584
+ <div class="column comparison-method">
585
+ <div class="comparison-method-label">Vidu-S1</div>
586
+ <video controls="" height="100%" id="sota-vidu-08" loop="" playsinline="">
587
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.mp4" type="video/mp4"/>
588
+ </video>
589
+ </div>
590
+ </div>
591
+ </div>
592
+ </div>
593
+ <h2 class="title is-3" id="vidu-s2-comparison" style="margin-top: 4rem;">Comparing to Vidu-S2</h2>
594
+ <div class="content has-text-justified">
595
+ <p class="subtitle">
596
+ Compared with Vidu-S2, FlowAct-R2 better preserves the appearance of referenced objects and switches more naturally between product references, demonstrating stronger object consistency and reference switching in these live shopping examples. Both Vidu-S2 and FlowAct-R2 can trigger dance from text; FlowAct-R2 further supports reference-video conditioning, enabling more expressive dance generation.
597
+ </p>
598
+ </div>
599
+ <div class="carousel results-carousel comparison-carousel comparison-portrait" id="vidu-s2-video-carousel">
600
+ <div class="item comparison-item">
601
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
602
+ <div class="column comparison-method">
603
+ <div class="comparison-method-label">FlowAct-R2</div>
604
+ <video controls="" height="100%" id="s2-ours-01" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first">
605
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/>
606
+ </video>
607
+ </div>
608
+ <div class="column comparison-method">
609
+ <div class="comparison-method-label">Vidu-S2</div>
610
+ <video controls="" height="100%" id="s2-vidu-01" loop="" playsinline="">
611
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.mp4" type="video/mp4"/>
612
+ </video>
613
+ </div>
614
+ </div>
615
+ </div>
616
+ <div class="item comparison-item">
617
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
618
+ <div class="column comparison-method">
619
+ <div class="comparison-method-label">FlowAct-R2</div>
620
+ <video controls="" height="100%" id="s2-ours-02" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024_first_frame.jpg?v=20260921_first">
621
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/>
622
+ </video>
623
+ </div>
624
+ <div class="column comparison-method">
625
+ <div class="comparison-method-label">Vidu-S2</div>
626
+ <video controls="" height="100%" id="s2-vidu-02" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref_first_frame.jpg?v=20260921_first">
627
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref.mp4" type="video/mp4"/>
628
+ </video>
629
+ </div>
630
+ </div>
631
+ </div>
632
+ <div class="item comparison-item">
633
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
634
+ <div class="column comparison-method">
635
+ <div class="comparison-method-label">FlowAct-R2</div>
636
+ <video controls="" height="100%" id="s2-ours-03" loop="" playsinline="">
637
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/>
638
+ </video>
639
+ </div>
640
+ <div class="column comparison-method">
641
+ <div class="comparison-method-label">Vidu-S2</div>
642
+ <video controls="" height="100%" id="s2-vidu-03" loop="" playsinline="">
643
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.mp4" type="video/mp4"/>
644
+ </video>
645
+ </div>
646
+ </div>
647
+ </div>
648
+ <div class="item comparison-item">
649
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
650
+ <div class="column comparison-method">
651
+ <div class="comparison-method-label">FlowAct-R2</div>
652
+ <video controls="" height="100%" id="s2-ours-04" loop="" playsinline="">
653
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/>
654
+ </video>
655
+ </div>
656
+ <div class="column comparison-method">
657
+ <div class="comparison-method-label">Vidu-S2</div>
658
+ <video controls="" height="100%" id="s2-vidu-04" loop="" playsinline="">
659
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.mp4" type="video/mp4"/>
660
+ </video>
661
+ </div>
662
+ </div>
663
+ </div>
664
+ <div class="item comparison-item">
665
+ <div class="columns is-mobile is-variable is-3 comparison-pair">
666
+ <div class="column comparison-method">
667
+ <div class="comparison-method-label">FlowAct-R2</div>
668
+ <video controls="" height="100%" id="s2-ours-05" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914">
669
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/>
670
+ </video>
671
+ </div>
672
+ <div class="column comparison-method">
673
+ <div class="comparison-method-label">Vidu-S2</div>
674
+ <video controls="" height="100%" id="s2-vidu-05" loop="" playsinline="">
675
+ <source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.mp4" type="video/mp4"/>
676
+ </video>
677
+ </div>
678
+ </div>
679
+ </div>
680
+ </div>
681
+ </div>
682
+ </section>
683
+ <section class="section" id="BibTeX">
684
+ <div class="container is-max-desktop content">
685
+ <h2 class="title">BibTeX</h2>
686
+ <pre><code>
687
+ @article{2026flowact-R2,
688
+ title={FlowAct-R2: },
689
+ author={},
690
+ journal={arXiv preprint arXiv:},
691
+ year={2026}
692
+ }
693
+
694
+ @article{wang2026flowact,
695
+ title={FlowAct-R1: Towards Interactive Humanoid Video Generation},
696
+ author={Wang, Lizhen and Zhu, Yongming and Ge, Zhipeng and Zheng, Youwei and Zhang, Longhao and Hu, Tianshu and Qin, Shiyang and Luo, Mingshuang and Zhang, Jiaxu and Chen, Xin and others},
697
+ journal={arXiv preprint arXiv:2601.10103},
698
+ year={2026}
699
+ }
700
+
701
+ @article{zhu2024infp,
702
+ title={INFP: Audio-driven interactive head generation in dyadic conversations},
703
+ author={Zhu, Yongming and Zhang, Longhao and Rong, Zhengkun and Hu, Tianshu and Liang, Shuang and Ge, Zhipeng},
704
+ journal={arXiv preprint arXiv:2412.04037},
705
+ year={2024}
706
+ }
707
+ </code></pre>
708
+ </div>
709
+ </section>
710
+ <footer class="footer">
711
+ <div class="container">
712
+ <div class="columns is-centered">
713
+ <div class="column is-8">
714
+ <div class="content">
715
+ <h2 class="title is-4">Ethics Concerns</h2>
716
+ <p>
717
+ All human images used in our demonstrations were generated by AI tools, and are intended solely to showcase the capabilities of this research. Please contact us (luoyuxuan@bytedance.com) if there are any concerns, and we will delete it in time.
718
+ </p>
719
+ <h2 class="title is-4">Acknowledgement</h2>
720
+ <p>
721
+ We would like to thank <a href="https://nerfies.github.io/">Nerfies</a> for providing the website template.
722
+ </p>
723
+ </div>
724
+ </div>
725
+ </div>
726
+ </div>
727
+ </footer>
728
+ </body>
729
+ </html>
index_blog.html ADDED
@@ -0,0 +1,436 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+
3
+ <html lang="en"><head>
4
+ <meta charset="utf-8"/><meta content="width=device-width, initial-scale=1" name="viewport"/>
5
+ <meta content="FlowAct-R2: Beyond Talking Avatar via Streaming Multimodal References and Proactive Agent Planning." name="description"/>
6
+ <meta content="#ffffff" name="theme-color"/><title>FlowAct-R2 | Research</title>
7
+ <link href="./static/css/blog.css?v=20260916_vidu_s2" rel="stylesheet"/>
8
+ <script defer="" src="./static/js/fontawesome.all.min.js"></script>
9
+ <script defer="" src="./static/js/blog.js?v=20260916_vidu_s2"></script>
10
+ </head><body>
11
+ <a class="skip-link" href="#overview">Skip to article</a>
12
+ <header class="site-header" id="top">
13
+ <a class="wordmark" href="#top">FlowAct<span class="wordmark-version">R2</span></a>
14
+ <nav aria-label="Site navigation"><a href="#method">Research</a><a href="#entertainment">Demos</a>
15
+ <a class="project-link" href="./index.html">Project page <i aria-hidden="true" class="fas fa-arrow-up"></i></a></nav>
16
+ </header><main>
17
+ <header class="article-header">
18
+ <div class="article-meta"><span class="eyebrow">Research / Technical blog</span><span>Bytedance Intelligent Creation</span></div>
19
+ <h1>FlowAct-R2</h1>
20
+ <div class="article-author-byline"><div class="is-size-5 publication-authors">
21
+ <span class="author-block">
22
+ Ziyao Huang<sup>*</sup>,
23
+ </span>
24
+ <span class="author-block">
25
+ Zhengkun Rong<sup>*</sup>,
26
+ </span>
27
+ <span class="author-block">
28
+ Shiyang Qin<sup>*</sup>,
29
+ </span>
30
+ <span class="author-block">
31
+ Shuang Liang<sup>*</sup>,
32
+ </span>
33
+ <span class="author-block">
34
+ Wentao Hu<sup>*</sup>,
35
+ </span>
36
+ <span class="author-block">
37
+ Yuxuan Luo<sup>*†</sup>,
38
+ </span>
39
+ <span class="author-block">
40
+ Yuan Zhang,
41
+ </span>
42
+ <span class="author-block">
43
+ Mingyuan Gao
44
+ </span>
45
+ </div><div class="is-size-5 publication-authors">
46
+ <span class="author-block">Bytedance Intelligent Creation</span>
47
+ </div><div class="is-size-5 publication-authors">
48
+ <span class="eql-cntrb"><small><sup>*</sup>Core Contributors</small></span>
49
+ <span class="eql-cntrb"><small><sup>†</sup>Corresponding Author</small></span>
50
+ </div></div>
51
+ <a class="text-link" href="#method">Explore the research <i aria-hidden="true" class="fas fa-arrow-down"></i></a>
52
+ </header>
53
+ <div aria-label="Featured demonstrations" class="featured-media"><figure><div class="video-shell">
54
+ <video aria-label="Entertainment streaming" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/nono_20260624_185701_647_withrefaudio_faststart.jpg?v=20260907" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/teaser/nono_with_aigc_refs.mp4" type="video/mp4"/></video>
55
+ <button aria-label="Play Entertainment streaming" class="video-play" title="Play Entertainment streaming" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
56
+ <span class="video-error" hidden="" role="status"></span>
57
+ </div><figcaption><span>01</span>Entertainment streaming</figcaption></figure><figure><div class="video-shell">
58
+ <video aria-label="Live shopping" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/></video>
59
+ <button aria-label="Play Live shopping" class="video-play" title="Play Live shopping" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
60
+ <span class="video-error" hidden="" role="status"></span>
61
+ </div><figcaption><span>02</span>Live shopping</figcaption></figure><figure><div class="video-shell">
62
+ <video aria-label="Live vlogging" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/r2_audience_danmaku_compressed_crf28/vlog_shichahai_v5_online_20260812_011014.jpg?v=20260907" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/vlog_shichahai_v5_online_20260812_011014_withrefs.mp4" type="video/mp4"/></video>
63
+ <button aria-label="Play Live vlogging" class="video-play" title="Play Live vlogging" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
64
+ <span class="video-error" hidden="" role="status"></span>
65
+ </div><figcaption><span>03</span>Live vlogging</figcaption></figure><figure><div class="video-shell">
66
+ <video aria-label="Video chatting" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.jpg?v=20260916_vidu_s2" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.mp4" type="video/mp4"/></video>
67
+ <button aria-label="Play Video chatting" class="video-play" title="Play Video chatting" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
68
+ <span class="video-error" hidden="" role="status"></span>
69
+ </div><figcaption><span>04</span>Video chatting</figcaption></figure></div>
70
+ <div class="article-layout">
71
+ <aside class="contents"><nav aria-label="Article contents"><span class="eyebrow">Contents</span><a href="#overview"><span>00</span>Overview</a><a href="#method"><span>01</span>Method</a><a href="#entertainment"><span>02</span>Entertainment</a><a href="#shopping"><span>03</span>Live shopping</a><a href="#chatting"><span>04</span>Video chatting</a><a href="#vlogging"><span>05</span>Live vlogging</a><a href="#evaluation"><span>06</span>Comparing to Vidu-S1</a><a href="#evaluation-s2"><span>07</span>Vidu-S2 comparison</a><a href="#references"><span>08</span>References</a>
72
+ <a class="back-top" href="#top">Back to top <i aria-hidden="true" class="fas fa-arrow-up"></i></a></nav></aside>
73
+ <article><section aria-labelledby="overview-heading" class="article-section" id="overview">
74
+ <div class="section-heading"><span class="section-number">00</span><h2 id="overview-heading">Beyond talking avatars</h2></div>
75
+ <div class="prose"><p class="lead">We present FlowAct-R2, a next-generation framework for proactive, multimodal, and highly interactive humanoid video generation, enabling intelligent real-time streaming with rich behaviors across diverse live scenarios.</p>
76
+ <p>Streaming multimodal references and proactive agent planning bring expressive behaviors and task-oriented actions to continuous live interactions.</p></div>
77
+ <div class="capabilities">
78
+ <div><span class="capability-value">720p</span><span>Real-time video generation</span></div>
79
+ <div><span class="capability-value">Hour-scale</span><span>Continuous streaming</span></div>
80
+ <div><span class="capability-value">Multimodal</span><span>Image, audio &amp; video references</span></div>
81
+ </div></section><section aria-labelledby="method-heading" class="article-section" id="method">
82
+ <div class="section-heading"><span class="section-number">01</span><h2 id="method-heading">From planning to performance</h2></div>
83
+ <figure class="method-figure">
84
+ <a href="./static/images/method_v10.png" rel="noopener" target="_blank" title="Open method diagram at full resolution">
85
+ <img alt="FlowAct-R2 architecture: offline planning, online agent scheduling, and streaming multimodal-reference video generation." height="2850" loading="lazy" src="./static/images/method_v10.png?v=20260916_vidu_s2" width="5885"/>
86
+ <span class="diagram-expand"><i aria-hidden="true" class="fas fa-expand"></i><span class="sr-only">Open full diagram</span></span>
87
+ </a><figcaption>Offline preparation, online interaction, continuous generation.</figcaption>
88
+ </figure><div class="prose"><p>
89
+ FlowAct-R2 introduces a <strong>Streaming Multimodal Reference DiT</strong> for streaming digital human video generation, built by adapting the pretrained Seedance 2.0 Mini reference-to-video backbone. By extending Diffusion Forcing to streaming multimodal references, the model continuously incorporates rolling action prompts, audio, and dynamically updated image, audio, and video references while preserving bidirectional spatiotemporal modeling. A video-driven RoPE aligns incoming reference chunks with the generation timeline, enabling references to be updated or switched during an ongoing stream. FlowAct-R2 further combines explicitly trained reference-plus-image conditioning with partially noised historical motion frames to preserve identity and appearance while reducing error accumulation.
90
+ </p><p>
91
+ Complementing the video generator, the <strong>Proactive Interaction Agent</strong> enables a digital human to proactively sustain a live session while remaining responsive to audience interactions. Offline, the agent derives a persona from multimodal character assets, organizes the session into a long-horizon agenda, and compiles complex behaviors into reusable multimodal skills. Online, it combines the prepared agenda and skills with audience events and summarized interaction history to determine what behavior to perform and how it should be scheduled. By initiating, overlaying, deferring, interrupting, or resuming behaviors according to the current context, the digital human can continue purposeful activities without continuous user prompts while responding naturally when new interactions arise.
92
+ </p></div></section><section aria-labelledby="entertainment-heading" class="article-section" id="entertainment">
93
+ <div class="section-heading"><span class="section-number">02</span><h2 id="entertainment-heading">Entertainment streaming</h2></div>
94
+ <div class="prose"><p>
95
+ FlowAct-R2 simulates lifelike entertainment streamers that interact with live audience messages and invoke skills to perform singing, dancing, and other talent-driven behaviors.
96
+ </p></div><div class="gallery" data-gallery="">
97
+ <div class="gallery-toolbar"><span>Live performances</span>
98
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
99
+ <button aria-label="Previous Live performances" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
100
+ <button aria-label="Next Live performances" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
101
+ </div>
102
+ </div>
103
+ <div aria-label="Live performances videos" class="gallery-track" id="blog-entertainment-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell">
104
+ <video aria-label="Live performances 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/sing1_faststart.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/sing1_faststart.mp4" type="video/mp4"/></video>
105
+ <button aria-label="Play Live performances 1" class="video-play" title="Play Live performances 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
106
+ <span class="video-error" hidden="" role="status"></span>
107
+ </div></div><div class="gallery-item"><div class="video-shell">
108
+ <video aria-label="Live performances 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/></video>
109
+ <button aria-label="Play Live performances 2" class="video-play" title="Play Live performances 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
110
+ <span class="video-error" hidden="" role="status"></span>
111
+ </div></div><div class="gallery-item"><div class="video-shell">
112
+ <video aria-label="Live performances 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/qiaopixiaoyima_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/03_qiaopixiaoyima.mp4" type="video/mp4"/></video>
113
+ <button aria-label="Play Live performances 3" class="video-play" title="Play Live performances 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
114
+ <span class="video-error" hidden="" role="status"></span>
115
+ </div></div><div class="gallery-item"><div class="video-shell">
116
+ <video aria-label="Live performances 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/zhangheyi_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/05_zhangheyi.mp4" type="video/mp4"/></video>
117
+ <button aria-label="Play Live performances 4" class="video-play" title="Play Live performances 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
118
+ <span class="video-error" hidden="" role="status"></span>
119
+ </div></div><div class="gallery-item"><div class="video-shell">
120
+ <video aria-label="Live performances 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/yizhiyu_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/04_yizhiyu.mp4" type="video/mp4"/></video>
121
+ <button aria-label="Play Live performances 5" class="video-play" title="Play Live performances 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
122
+ <span class="video-error" hidden="" role="status"></span>
123
+ </div></div><div class="gallery-item"><div class="video-shell">
124
+ <video aria-label="Live performances 6" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.mp4" type="video/mp4"/></video>
125
+ <button aria-label="Play Live performances 6" class="video-play" title="Play Live performances 6" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
126
+ <span class="video-error" hidden="" role="status"></span>
127
+ </div></div><div class="gallery-item"><div class="video-shell">
128
+ <video aria-label="Live performances 7" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/instrument1_faststart.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/instrument1_faststart.mp4" type="video/mp4"/></video>
129
+ <button aria-label="Play Live performances 7" class="video-play" title="Play Live performances 7" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
130
+ <span class="video-error" hidden="" role="status"></span>
131
+ </div></div><div class="gallery-item"><div class="video-shell">
132
+ <video aria-label="Live performances 8" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat4_faststart.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat4_faststart.mp4" type="video/mp4"/></video>
133
+ <button aria-label="Play Live performances 8" class="video-play" title="Play Live performances 8" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
134
+ <span class="video-error" hidden="" role="status"></span>
135
+ </div></div></div>
136
+ </div><div class="gallery" data-gallery="">
137
+ <div class="gallery-toolbar"><span>Prepared performances</span>
138
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
139
+ <button aria-label="Previous Prepared performances" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
140
+ <button aria-label="Next Prepared performances" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
141
+ </div>
142
+ </div>
143
+ <div aria-label="Prepared performances videos" class="gallery-track" id="blog-offline-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell">
144
+ <video aria-label="Prepared performances 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/1.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/1.mp4" type="video/mp4"/></video>
145
+ <button aria-label="Play Prepared performances 1" class="video-play" title="Play Prepared performances 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
146
+ <span class="video-error" hidden="" role="status"></span>
147
+ </div></div><div class="gallery-item"><div class="video-shell">
148
+ <video aria-label="Prepared performances 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/4.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/4.mp4" type="video/mp4"/></video>
149
+ <button aria-label="Play Prepared performances 2" class="video-play" title="Play Prepared performances 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
150
+ <span class="video-error" hidden="" role="status"></span>
151
+ </div></div><div class="gallery-item"><div class="video-shell">
152
+ <video aria-label="Prepared performances 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/5.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/5.mp4" type="video/mp4"/></video>
153
+ <button aria-label="Play Prepared performances 3" class="video-play" title="Play Prepared performances 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
154
+ <span class="video-error" hidden="" role="status"></span>
155
+ </div></div><div class="gallery-item"><div class="video-shell">
156
+ <video aria-label="Prepared performances 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/9.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/9.mp4" type="video/mp4"/></video>
157
+ <button aria-label="Play Prepared performances 4" class="video-play" title="Play Prepared performances 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
158
+ <span class="video-error" hidden="" role="status"></span>
159
+ </div></div><div class="gallery-item"><div class="video-shell">
160
+ <video aria-label="Prepared performances 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.jpg?v=20260906" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.mp4" type="video/mp4"/></video>
161
+ <button aria-label="Play Prepared performances 5" class="video-play" title="Play Prepared performances 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
162
+ <span class="video-error" hidden="" role="status"></span>
163
+ </div></div><div class="gallery-item"><div class="video-shell">
164
+ <video aria-label="Prepared performances 6" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.jpg?v=20260906" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.mp4" type="video/mp4"/></video>
165
+ <button aria-label="Play Prepared performances 6" class="video-play" title="Play Prepared performances 6" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
166
+ <span class="video-error" hidden="" role="status"></span>
167
+ </div></div></div>
168
+ </div></section><section aria-labelledby="shopping-heading" class="article-section" id="shopping">
169
+ <div class="section-heading"><span class="section-number">03</span><h2 id="shopping-heading">Live shopping</h2></div>
170
+ <div class="prose"><p>
171
+ With streaming multi-reference conditioning, FlowAct-R2 enables live shopping avatars to hold products, try on items, and respond to audience feedback in interactive product-selling streams.
172
+ </p></div><div class="gallery" data-gallery="">
173
+ <div class="gallery-toolbar"><span>Product demonstrations</span>
174
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
175
+ <button aria-label="Previous Product demonstrations" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
176
+ <button aria-label="Next Product demonstrations" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
177
+ </div>
178
+ </div>
179
+ <div aria-label="Product demonstrations videos" class="gallery-track" id="blog-shopping-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell">
180
+ <video aria-label="Product demonstrations 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_001_002_003.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_001_002_003.mp4" type="video/mp4"/></video>
181
+ <button aria-label="Play Product demonstrations 1" class="video-play" title="Play Product demonstrations 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
182
+ <span class="video-error" hidden="" role="status"></span>
183
+ </div></div><div class="gallery-item"><div class="video-shell">
184
+ <video aria-label="Product demonstrations 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/></video>
185
+ <button aria-label="Play Product demonstrations 2" class="video-play" title="Play Product demonstrations 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
186
+ <span class="video-error" hidden="" role="status"></span>
187
+ </div></div><div class="gallery-item"><div class="video-shell">
188
+ <video aria-label="Product demonstrations 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_061.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_061.mp4" type="video/mp4"/></video>
189
+ <button aria-label="Play Product demonstrations 3" class="video-play" title="Play Product demonstrations 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
190
+ <span class="video-error" hidden="" role="status"></span>
191
+ </div></div><div class="gallery-item"><div class="video-shell">
192
+ <video aria-label="Product demonstrations 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_104.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_104.mp4" type="video/mp4"/></video>
193
+ <button aria-label="Play Product demonstrations 4" class="video-play" title="Play Product demonstrations 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
194
+ <span class="video-error" hidden="" role="status"></span>
195
+ </div></div><div class="gallery-item"><div class="video-shell">
196
+ <video aria-label="Product demonstrations 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.mp4" type="video/mp4"/></video>
197
+ <button aria-label="Play Product demonstrations 5" class="video-play" title="Play Product demonstrations 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
198
+ <span class="video-error" hidden="" role="status"></span>
199
+ </div></div><div class="gallery-item"><div class="video-shell">
200
+ <video aria-label="Product demonstrations 6" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/></video>
201
+ <button aria-label="Play Product demonstrations 6" class="video-play" title="Play Product demonstrations 6" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
202
+ <span class="video-error" hidden="" role="status"></span>
203
+ </div></div><div class="gallery-item"><div class="video-shell">
204
+ <video aria-label="Product demonstrations 7" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024_first_frame.jpg?v=20260921_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/></video>
205
+ <button aria-label="Play Product demonstrations 7" class="video-play" title="Play Product demonstrations 7" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
206
+ <span class="video-error" hidden="" role="status"></span>
207
+ </div></div><div class="gallery-item"><div class="video-shell">
208
+ <video aria-label="Product demonstrations 8" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_034.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_034.mp4" type="video/mp4"/></video>
209
+ <button aria-label="Play Product demonstrations 8" class="video-play" title="Play Product demonstrations 8" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
210
+ <span class="video-error" hidden="" role="status"></span>
211
+ </div></div></div>
212
+ </div></section><section aria-labelledby="chatting-heading" class="article-section" id="chatting">
213
+ <div class="section-heading"><span class="section-number">04</span><h2 id="chatting-heading">Video chatting</h2></div>
214
+ <div class="prose"><p>
215
+ FlowAct-R2 enables natural video chatting with responsive listening, expressive turn-taking, and lifelike avatar behaviors for seamless real-time interaction.
216
+ </p></div><div class="gallery" data-gallery="">
217
+ <div class="gallery-toolbar"><span>Conversations</span>
218
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
219
+ <button aria-label="Previous Conversations" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
220
+ <button aria-label="Next Conversations" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
221
+ </div>
222
+ </div>
223
+ <div aria-label="Conversations videos" class="gallery-track" id="blog-video-chatting-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell">
224
+ <video aria-label="Conversations 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/GIR-02_crop.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/GIR-02_crop.mp4" type="video/mp4"/></video>
225
+ <button aria-label="Play Conversations 1" class="video-play" title="Play Conversations 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
226
+ <span class="video-error" hidden="" role="status"></span>
227
+ </div></div><div class="gallery-item"><div class="video-shell">
228
+ <video aria-label="Conversations 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.mp4" type="video/mp4"/></video>
229
+ <button aria-label="Play Conversations 2" class="video-play" title="Play Conversations 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
230
+ <span class="video-error" hidden="" role="status"></span>
231
+ </div></div><div class="gallery-item"><div class="video-shell">
232
+ <video aria-label="Conversations 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.mp4" type="video/mp4"/></video>
233
+ <button aria-label="Play Conversations 3" class="video-play" title="Play Conversations 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
234
+ <span class="video-error" hidden="" role="status"></span>
235
+ </div></div><div class="gallery-item"><div class="video-shell">
236
+ <video aria-label="Conversations 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.mp4" type="video/mp4"/></video>
237
+ <button aria-label="Play Conversations 4" class="video-play" title="Play Conversations 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
238
+ <span class="video-error" hidden="" role="status"></span>
239
+ </div></div><div class="gallery-item"><div class="video-shell">
240
+ <video aria-label="Conversations 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903/EMP-02_crop_compressed_faststart.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903/EMP-02_crop_compressed_faststart.mp4" type="video/mp4"/></video>
241
+ <button aria-label="Play Conversations 5" class="video-play" title="Play Conversations 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
242
+ <span class="video-error" hidden="" role="status"></span>
243
+ </div></div></div>
244
+ </div></section><section aria-labelledby="vlogging-heading" class="article-section" id="vlogging">
245
+ <div class="section-heading"><span class="section-number">05</span><h2 id="vlogging-heading">Live vlogging</h2></div>
246
+ <div class="prose"><p>
247
+ FlowAct-R2 supports vlog streams with multi-scene switching and audience-driven branching, allowing live viewer inputs to steer the next scenario and action.
248
+ </p></div><div class="gallery" data-gallery="">
249
+ <div class="gallery-toolbar"><span>Scene exploration</span>
250
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
251
+ <button aria-label="Previous Scene exploration" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
252
+ <button aria-label="Next Scene exploration" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
253
+ </div>
254
+ </div>
255
+ <div aria-label="Scene exploration videos" class="gallery-track" id="blog-gaming-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell">
256
+ <video aria-label="Scene exploration 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.mp4" type="video/mp4"/></video>
257
+ <button aria-label="Play Scene exploration 1" class="video-play" title="Play Scene exploration 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
258
+ <span class="video-error" hidden="" role="status"></span>
259
+ </div></div><div class="gallery-item"><div class="video-shell">
260
+ <video aria-label="Scene exploration 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/TRV-03_crop.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/TRV-03_crop.mp4" type="video/mp4"/></video>
261
+ <button aria-label="Play Scene exploration 2" class="video-play" title="Play Scene exploration 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
262
+ <span class="video-error" hidden="" role="status"></span>
263
+ </div></div><div class="gallery-item"><div class="video-shell">
264
+ <video aria-label="Scene exploration 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.mp4" type="video/mp4"/></video>
265
+ <button aria-label="Play Scene exploration 3" class="video-play" title="Play Scene exploration 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
266
+ <span class="video-error" hidden="" role="status"></span>
267
+ </div></div></div>
268
+ </div></section><section aria-labelledby="evaluation-heading" class="article-section" id="evaluation">
269
+ <div class="section-heading"><span class="section-number">06</span><h2 id="evaluation-heading">Comparing to Vidu-S1</h2></div>
270
+ <div class="evaluation-summary"><span class="eyebrow">FlowAct-R2 vs. Vidu-S1</span>
271
+ <div class="evaluation-scores">
272
+ <div><span class="score">+54.76<span>%</span></span><span>Video quality <span class="score-unit">GSB</span></span></div>
273
+ <div><span class="score">+40.48<span>%</span></span><span>Real-time interaction <span class="score-unit">GSB</span></span></div>
274
+ </div></div><div class="prose"><p>
275
+ Enabled by the planning capabilities of its proactive agent, FlowAct-R2 delivers clearer videos, more natural and expressive motions, stronger action responsiveness, and more accurate, contextually appropriate dialogue than Vidu-S1, achieving GSB scores of +54.76% for video quality and +40.48% for real-time interaction in human evaluations, whereas Vidu-S1 is comparatively static and may introduce unrelated conversational memory.
276
+ </p></div>
277
+ <div class="gallery comparison-gallery" data-gallery="">
278
+ <div class="gallery-toolbar"><span>Side-by-side comparisons</span>
279
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
280
+ <button aria-label="Previous Side-by-side comparisons" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
281
+ <button aria-label="Next Side-by-side comparisons" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
282
+ </div>
283
+ </div>
284
+ <div aria-label="Side-by-side comparisons videos" class="gallery-track" id="blog-sota-video-carousel" tabindex="0"><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
285
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.mp4" type="video/mp4"/></video>
286
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
287
+ <span class="video-error" hidden="" role="status"></span>
288
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
289
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.mp4" type="video/mp4"/></video>
290
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
291
+ <span class="video-error" hidden="" role="status"></span>
292
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
293
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.mp4" type="video/mp4"/></video>
294
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
295
+ <span class="video-error" hidden="" role="status"></span>
296
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
297
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.mp4" type="video/mp4"/></video>
298
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
299
+ <span class="video-error" hidden="" role="status"></span>
300
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
301
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.mp4" type="video/mp4"/></video>
302
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
303
+ <span class="video-error" hidden="" role="status"></span>
304
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
305
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.mp4" type="video/mp4"/></video>
306
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
307
+ <span class="video-error" hidden="" role="status"></span>
308
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
309
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.mp4" type="video/mp4"/></video>
310
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
311
+ <span class="video-error" hidden="" role="status"></span>
312
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
313
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.mp4" type="video/mp4"/></video>
314
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
315
+ <span class="video-error" hidden="" role="status"></span>
316
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
317
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.mp4" type="video/mp4"/></video>
318
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
319
+ <span class="video-error" hidden="" role="status"></span>
320
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
321
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.mp4" type="video/mp4"/></video>
322
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
323
+ <span class="video-error" hidden="" role="status"></span>
324
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
325
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.mp4" type="video/mp4"/></video>
326
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
327
+ <span class="video-error" hidden="" role="status"></span>
328
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
329
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.mp4" type="video/mp4"/></video>
330
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
331
+ <span class="video-error" hidden="" role="status"></span>
332
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
333
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.mp4" type="video/mp4"/></video>
334
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
335
+ <span class="video-error" hidden="" role="status"></span>
336
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
337
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.mp4" type="video/mp4"/></video>
338
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
339
+ <span class="video-error" hidden="" role="status"></span>
340
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell">
341
+ <video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.mp4" type="video/mp4"/></video>
342
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
343
+ <span class="video-error" hidden="" role="status"></span>
344
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
345
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.mp4" type="video/mp4"/></video>
346
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
347
+ <span class="video-error" hidden="" role="status"></span>
348
+ </div></div></div></div>
349
+ </div></section><section aria-labelledby="evaluation-s2-heading" class="article-section" id="evaluation-s2">
350
+ <div class="section-heading"><span class="section-number">07</span><h2 id="evaluation-s2-heading">Comparing to Vidu-S2</h2></div>
351
+ <div class="prose"><p>
352
+ Compared with Vidu-S2, FlowAct-R2 better preserves the appearance of referenced objects and switches more naturally between product references, demonstrating stronger object consistency and reference switching in these live shopping examples. Both Vidu-S2 and FlowAct-R2 can trigger dance from text; FlowAct-R2 further supports reference-video conditioning, enabling more expressive dance generation.
353
+ </p></div><div class="gallery comparison-gallery comparison-portrait" data-gallery="">
354
+ <div class="gallery-toolbar"><span>Vidu-S2 comparisons</span>
355
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
356
+ <button aria-label="Previous Vidu-S2 comparisons" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
357
+ <button aria-label="Next Vidu-S2 comparisons" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
358
+ </div>
359
+ </div>
360
+ <div aria-label="Vidu-S2 comparisons videos" class="gallery-track" id="blog-vidu-s2-video-carousel" tabindex="0"><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell">
361
+ <video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.mp4" type="video/mp4"/></video>
362
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
363
+ <span class="video-error" hidden="" role="status"></span>
364
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
365
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/></video>
366
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
367
+ <span class="video-error" hidden="" role="status"></span>
368
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell">
369
+ <video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref_first_frame.jpg?v=20260921_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref.mp4" type="video/mp4"/></video>
370
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
371
+ <span class="video-error" hidden="" role="status"></span>
372
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
373
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024_first_frame.jpg?v=20260921_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/></video>
374
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
375
+ <span class="video-error" hidden="" role="status"></span>
376
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell">
377
+ <video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.mp4" type="video/mp4"/></video>
378
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
379
+ <span class="video-error" hidden="" role="status"></span>
380
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
381
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/></video>
382
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
383
+ <span class="video-error" hidden="" role="status"></span>
384
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell">
385
+ <video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.mp4" type="video/mp4"/></video>
386
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
387
+ <span class="video-error" hidden="" role="status"></span>
388
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
389
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/></video>
390
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
391
+ <span class="video-error" hidden="" role="status"></span>
392
+ </div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell">
393
+ <video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.jpg?v=20260916_vidu_s2" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.mp4" type="video/mp4"/></video>
394
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
395
+ <span class="video-error" hidden="" role="status"></span>
396
+ </div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell">
397
+ <video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/></video>
398
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
399
+ <span class="video-error" hidden="" role="status"></span>
400
+ </div></div></div></div>
401
+ </div></section><section aria-labelledby="references-heading" class="article-section" id="references">
402
+ <div class="section-heading"><span class="section-number">08</span><h2 id="references-heading">References</h2></div>
403
+ <details class="citation"><summary>BibTeX <i aria-hidden="true" class="fas fa-plus"></i></summary>
404
+ <div class="citation-content"><button aria-label="Copy BibTeX" class="icon-button copy-citation" title="Copy BibTeX" type="button"><i aria-hidden="true" class="fas fa-copy"></i></button>
405
+ <pre><code id="citation-code">@online{2026flowact-R2,
406
+ title={FlowAct-R2: Beyond Talking Avatar via Streaming Multimodal References and Proactive Agent Planning},
407
+ author={Ziyao Huang, Zhengkun Rong, Shiyang Qin, Shuang Liang, Wentao Hu, Yuxuan Luo, Yuan Zhang, Mingyuan Gao},
408
+ year={2026},
409
+ url={https://bone-11.github.io/Flowact-R2/},
410
+ }
411
+
412
+ @article{wang2026flowact,
413
+ title={FlowAct-R1: Towards Interactive Humanoid Video Generation},
414
+ author={Wang, Lizhen and Zhu, Yongming and Ge, Zhipeng and Zheng, Youwei and Zhang, Longhao and Hu, Tianshu and Qin, Shiyang and Luo, Mingshuang and Zhang, Jiaxu and Chen, Xin and others},
415
+ journal={arXiv preprint arXiv:2601.10103},
416
+ year={2026}
417
+ }
418
+
419
+ @article{zhu2024infp,
420
+ title={INFP: Audio-driven interactive head generation in dyadic conversations},
421
+ author={Zhu, Yongming and Zhang, Longhao and Rong, Zhengkun and Hu, Tianshu and Liang, Shuang and Ge, Zhipeng},
422
+ journal={arXiv preprint arXiv:2412.04037},
423
+ year={2024}
424
+ }</code></pre><span class="copy-status" role="status"></span></div>
425
+ </details><div class="related-research">
426
+ <a href="https://grisoon.github.io/FlowAct-R1/"><span>FlowAct-R1</span><i aria-hidden="true" class="fas fa-arrow-up"></i></a>
427
+ <a href="https://grisoon.github.io/INFP/"><span>INFP</span><i aria-hidden="true" class="fas fa-arrow-up"></i></a>
428
+ <a href="https://grisoon.github.io/PersonaTalk/"><span>PersonaTalk</span><i aria-hidden="true" class="fas fa-arrow-up"></i></a>
429
+ </div></section>
430
+ <section class="ethics prose"><h2>Ethics &amp; acknowledgements</h2><p>All human images used in our demonstrations were generated by AI tools, and are intended solely to showcase the capabilities of this research. Please contact us (luoyuxuan@bytedance.com) if there are any concerns, and we will delete it in time.</p>
431
+ <p>Our original project page builds on the <a href="https://nerfies.github.io/">Nerfies</a> website template.</p></section>
432
+ </article>
433
+ </div>
434
+ </main><footer class="site-footer"><a class="wordmark" href="#top">FlowAct<span class="wordmark-version">R2</span></a>
435
+ <span>Bytedance Intelligent Creation</span><a href="./index.html">Project page <i aria-hidden="true" class="fas fa-arrow-up"></i></a></footer>
436
+ </body></html>
index_bytedance_blog.html ADDED
@@ -0,0 +1,320 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+
3
+ <html lang="en"><head>
4
+ <meta charset="utf-8"/><meta content="width=device-width, initial-scale=1" name="viewport"/>
5
+ <meta content="FlowAct-R2 research and demonstrations." name="description"/>
6
+ <meta content="#ffffff" name="theme-color"/><title>FlowAct-R2 | Research</title>
7
+ <link href="./static/css/blog.css?v=20260916_vidu_s2" rel="stylesheet"/>
8
+ <script defer="" src="./static/js/fontawesome.all.min.js"></script>
9
+ <script defer="" src="./static/js/blog.js?v=20260916_vidu_s2"></script>
10
+ <link href="./static/css/bytedance-blog.css?v=20260909_no_category" rel="stylesheet"/><link href="./static/images/logo-r2.png" rel="icon"/><link as="font" crossorigin="" href="./static/fonts/inter-latin-wght-normal.woff2" rel="preload" type="font/woff2"/></head><body class="bytedance-blog">
11
+ <a class="skip-link" href="#overview">Skip to article</a>
12
+ <header class="site-header" id="top">
13
+ <a aria-label="FlowAct-R2" class="research-brand" href="#top"><img alt="FlowAct-R2 Logo" class="project-logo" src="./static/images/logo-r2.png"/></a>
14
+ <nav aria-label="Site navigation">
15
+ <a href="#overview">Overview</a><a href="#method">Method</a>
16
+ <a href="#entertainment">Demos</a><a href="#evaluation">Evaluation</a>
17
+ </nav>
18
+ <a class="header-project-link" href="./index.html">Project page <i aria-hidden="true" class="fas fa-arrow-up"></i></a>
19
+ </header><main>
20
+ <header class="article-header"><h1>FlowAct-R2</h1></header>
21
+ <div class="article-layout">
22
+ <aside class="contents">
23
+ <div class="article-information">
24
+ <dl class="article-metadata">
25
+ <div class="author-information"><dt>Authors</dt><dd class="article-authors"><div>
26
+ <span>
27
+ <span>Ziyao Huang</span><sup>*</sup>,
28
+ </span>
29
+ <span>
30
+ <span>Zhengkun Rong</span><sup>*</sup>,
31
+ </span>
32
+ <span>
33
+ <span>Shiyang Qin</span><sup>*</sup>,
34
+ </span>
35
+ <span>
36
+ <span>Shuang Liang</span><sup>*</sup>,
37
+ </span>
38
+ <span>
39
+ <span>Wentao Hu</span><sup>*</sup>,
40
+ </span>
41
+ <span>
42
+ <span>Yuxuan Luo</span><sup>*†</sup>,
43
+ </span>
44
+ <span>
45
+ <span>Yuan Zhang</span>,
46
+ </span>
47
+ <span>
48
+ <span>Mingyuan Gao</span>
49
+ </span>
50
+ </div></dd></div>
51
+ <div class="affiliation-information"><dt>Affiliation</dt><dd class="article-affiliation"><div>
52
+ <span>Bytedance Intelligent Creation</span>
53
+ </div></dd></div>
54
+ <div class="author-notes"><dd><div>
55
+ <span><small><sup>*</sup>Core Contributors</small></span>
56
+ <span><small><sup>†</sup>Corresponding Author</small></span>
57
+ </div></dd></div>
58
+ </dl>
59
+ </div>
60
+ <nav aria-label="Article contents"><span class="eyebrow">Contents</span><a href="#overview">Overview</a><a href="#method">Method</a><a href="#entertainment">Entertainment</a><a href="#shopping">Live shopping</a><a href="#chatting">Video chatting</a><a href="#vlogging">Live vlogging</a><a href="#evaluation">Comparing to Vidu-S1</a><a href="#evaluation-s2">Vidu-S2 comparison</a><a href="#references">References</a>
61
+ <a class="back-top" href="#top">Back to top <i aria-hidden="true" class="fas fa-arrow-up"></i></a></nav></aside>
62
+ <article><section aria-label="Overview" class="article-section" id="overview"><figure class="overview-figure"><img alt="FlowAct-R2 Overview" class="overview-image" height="1984" src="./static/images/teaser_v5.png" width="9592"/></figure><div class="prose"><p>
63
+ We present <span>FlowAct-R2</span>, a next-generation framework for proactive, multimodal, and highly interactive humanoid video generation, enabling intelligent real-time streaming with rich behaviors across diverse live scenarios.
64
+ </p><ul class="research-highlights">
65
+ <li><strong>Streaming Multimodal Reference Generation:</strong> By extending diffusion forcing from chunkwise generation to streaming multimodal references, FlowAct-R2 enables real-time video generation with rolling prompts and multimodal references, including continuously updated images, audio, and video, and supports hour‑level ultra‑long video generation with 720p. </li>
66
+ <li><strong>Proactive Interaction Agent:</strong>
67
+ To enable digital humans to autonomously drive their behavior when no external input is present, while seamlessly responding when interactions arise, FlowAct-R2 introduce an agent workflow with pre-online planning and online scheduling and response, which supports persona-driven behaviors, interruption handling, and skill execution for autonomous live interactions.</li>
68
+ <li><strong>Rich Behaviors Across Diverse Live Scenarios:</strong> FlowAct-R2 supports real-time text and audio interactions across four representative scenarios—video chatting, live shopping, entertainment streaming, and interactive gaming—generating not only conversational responses but also expressive behaviors and task-oriented actions beyond conventional question answering.</li>
69
+ </ul></div><div aria-label="Featured demonstrations" class="featured-media"><figure><div class="video-shell"><video aria-label="Entertainment streaming" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/nono_20260624_185701_647_withrefaudio_faststart.jpg?v=20260907" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/teaser/nono_with_aigc_refs.mp4" type="video/mp4"/></video>
70
+ <button aria-label="Play Entertainment streaming" class="video-play" title="Play Entertainment streaming" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
71
+ <span class="video-error" hidden="" role="status"></span></div><figcaption>Entertainment streaming</figcaption></figure><figure><div class="video-shell"><video aria-label="Live shopping" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/></video>
72
+ <button aria-label="Play Live shopping" class="video-play" title="Play Live shopping" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
73
+ <span class="video-error" hidden="" role="status"></span></div><figcaption>Live shopping</figcaption></figure><figure><div class="video-shell"><video aria-label="Live vlogging" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/r2_audience_danmaku_compressed_crf28/vlog_shichahai_v5_online_20260812_011014.jpg?v=20260907" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/vlog_shichahai_v5_online_20260812_011014_withrefs.mp4" type="video/mp4"/></video>
74
+ <button aria-label="Play Live vlogging" class="video-play" title="Play Live vlogging" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
75
+ <span class="video-error" hidden="" role="status"></span></div><figcaption>Live vlogging</figcaption></figure><figure><div class="video-shell"><video aria-label="Video chatting" controls="" loop="" playsinline="" poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.jpg?v=20260909_no_category" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/P0_talk_1_s2s_roleplay_20260820_v26_more_human_empathy_sophie_bgm010_20260826_faststart.mp4" type="video/mp4"/></video>
76
+ <button aria-label="Play Video chatting" class="video-play" title="Play Video chatting" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
77
+ <span class="video-error" hidden="" role="status"></span></div><figcaption>Video chatting</figcaption></figure></div></section><section aria-labelledby="method-heading" class="article-section" id="method">
78
+ <div class="section-heading"><h2 id="method-heading">Method Overview</h2></div>
79
+ <figure class="method-figure">
80
+ <a href="./static/images/method_v10.png" rel="noopener" target="_blank" title="Open method diagram at full resolution">
81
+ <img alt="FlowAct-R2 architecture: offline planning, online agent scheduling, and streaming multimodal-reference video generation." height="2850" loading="lazy" src="./static/images/method_v10.png?v=20260909_no_category" width="5885"/>
82
+ <span class="diagram-expand"><i aria-hidden="true" class="fas fa-expand"></i><span class="sr-only">Open full diagram</span></span>
83
+ </a>
84
+ </figure><div class="prose"><p>
85
+ FlowAct-R2 introduces a <strong>Streaming Multimodal Reference DiT</strong> for streaming digital human video generation, built by adapting the pretrained Seedance 2.0 Mini reference-to-video backbone. By extending Diffusion Forcing to streaming multimodal references, the model continuously incorporates rolling action prompts, audio, and dynamically updated image, audio, and video references while preserving bidirectional spatiotemporal modeling. A video-driven RoPE aligns incoming reference chunks with the generation timeline, enabling references to be updated or switched during an ongoing stream. FlowAct-R2 further combines explicitly trained reference-plus-image conditioning with partially noised historical motion frames to preserve identity and appearance while reducing error accumulation.
86
+ </p><p>
87
+ Complementing the video generator, the <strong>Proactive Interaction Agent</strong> enables a digital human to proactively sustain a live session while remaining responsive to audience interactions. Offline, the agent derives a persona from multimodal character assets, organizes the session into a long-horizon agenda, and compiles complex behaviors into reusable multimodal skills. Online, it combines the prepared agenda and skills with audience events and summarized interaction history to determine what behavior to perform and how it should be scheduled. By initiating, overlaying, deferring, interrupting, or resuming behaviors according to the current context, the digital human can continue purposeful activities without continuous user prompts while responding naturally when new interactions arise.
88
+ </p></div></section><section aria-labelledby="entertainment-heading" class="article-section" id="entertainment">
89
+ <div class="section-heading"><h2 id="entertainment-heading">Entertainment Streaming</h2></div>
90
+ <div class="prose"><p>
91
+ FlowAct-R2 simulates lifelike entertainment streamers that interact with live audience messages and invoke skills to perform singing, dancing, and other talent-driven behaviors.
92
+ </p></div><div class="gallery" data-gallery="">
93
+ <div class="gallery-toolbar"><span>Live performances</span>
94
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
95
+ <button aria-label="Previous Live performances" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
96
+ <button aria-label="Next Live performances" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
97
+ </div>
98
+ </div>
99
+ <div aria-label="Live performances videos" class="gallery-track" id="blog-entertainment-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/sing1_faststart.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/sing1_faststart.mp4" type="video/mp4"/></video>
100
+ <button aria-label="Play Live performances 1" class="video-play" title="Play Live performances 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
101
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/></video>
102
+ <button aria-label="Play Live performances 2" class="video-play" title="Play Live performances 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
103
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/qiaopixiaoyima_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/03_qiaopixiaoyima.mp4" type="video/mp4"/></video>
104
+ <button aria-label="Play Live performances 3" class="video-play" title="Play Live performances 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
105
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/zhangheyi_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/05_zhangheyi.mp4" type="video/mp4"/></video>
106
+ <button aria-label="Play Live performances 4" class="video-play" title="Play Live performances 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
107
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/yizhiyu_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/04_yizhiyu.mp4" type="video/mp4"/></video>
108
+ <button aria-label="Play Live performances 5" class="video-play" title="Play Live performances 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
109
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 6" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat2_sing1_faststart.mp4" type="video/mp4"/></video>
110
+ <button aria-label="Play Live performances 6" class="video-play" title="Play Live performances 6" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
111
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 7" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/instrument1_faststart.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/instrument1_faststart.mp4" type="video/mp4"/></video>
112
+ <button aria-label="Play Live performances 7" class="video-play" title="Play Live performances 7" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
113
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Live performances 8" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat4_faststart.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/chat4_faststart.mp4" type="video/mp4"/></video>
114
+ <button aria-label="Play Live performances 8" class="video-play" title="Play Live performances 8" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
115
+ <span class="video-error" hidden="" role="status"></span></div></div></div>
116
+ </div><div class="gallery" data-gallery="">
117
+ <div class="gallery-toolbar"><span>Prepared performances</span>
118
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
119
+ <button aria-label="Previous Prepared performances" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
120
+ <button aria-label="Next Prepared performances" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
121
+ </div>
122
+ </div>
123
+ <div aria-label="Prepared performances videos" class="gallery-track" id="blog-offline-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell"><video aria-label="Prepared performances 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/1.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/1.mp4" type="video/mp4"/></video>
124
+ <button aria-label="Play Prepared performances 1" class="video-play" title="Play Prepared performances 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
125
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Prepared performances 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/4.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/4.mp4" type="video/mp4"/></video>
126
+ <button aria-label="Play Prepared performances 2" class="video-play" title="Play Prepared performances 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
127
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Prepared performances 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/5.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/5.mp4" type="video/mp4"/></video>
128
+ <button aria-label="Play Prepared performances 3" class="video-play" title="Play Prepared performances 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
129
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Prepared performances 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/9.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/9.mp4" type="video/mp4"/></video>
130
+ <button aria-label="Play Prepared performances 4" class="video-play" title="Play Prepared performances 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
131
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Prepared performances 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.jpg?v=20260906" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/15.mp4" type="video/mp4"/></video>
132
+ <button aria-label="Play Prepared performances 5" class="video-play" title="Play Prepared performances 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
133
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Prepared performances 6" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.jpg?v=20260906" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/offline_videos_comressed/24.mp4" type="video/mp4"/></video>
134
+ <button aria-label="Play Prepared performances 6" class="video-play" title="Play Prepared performances 6" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
135
+ <span class="video-error" hidden="" role="status"></span></div></div></div>
136
+ </div></section><section aria-labelledby="shopping-heading" class="article-section" id="shopping">
137
+ <div class="section-heading"><h2 id="shopping-heading">Live Shopping</h2></div>
138
+ <div class="prose"><p>
139
+ With streaming multi-reference conditioning, FlowAct-R2 enables live shopping avatars to hold products, try on items, and respond to audience feedback in interactive product-selling streams.
140
+ </p></div><div class="gallery" data-gallery="">
141
+ <div class="gallery-toolbar"><span>Product demonstrations</span>
142
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
143
+ <button aria-label="Previous Product demonstrations" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
144
+ <button aria-label="Next Product demonstrations" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
145
+ </div>
146
+ </div>
147
+ <div aria-label="Product demonstrations videos" class="gallery-track" id="blog-shopping-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_001_002_003.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_001_002_003.mp4" type="video/mp4"/></video>
148
+ <button aria-label="Play Product demonstrations 1" class="video-play" title="Play Product demonstrations 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
149
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/></video>
150
+ <button aria-label="Play Product demonstrations 2" class="video-play" title="Play Product demonstrations 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
151
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_061.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_061.mp4" type="video/mp4"/></video>
152
+ <button aria-label="Play Product demonstrations 3" class="video-play" title="Play Product demonstrations 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
153
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_104.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_104.mp4" type="video/mp4"/></video>
154
+ <button aria-label="Play Product demonstrations 4" class="video-play" title="Play Product demonstrations 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
155
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_004.mp4" type="video/mp4"/></video>
156
+ <button aria-label="Play Product demonstrations 5" class="video-play" title="Play Product demonstrations 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
157
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 6" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/></video>
158
+ <button aria-label="Play Product demonstrations 6" class="video-play" title="Play Product demonstrations 6" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
159
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 7" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024_first_frame.jpg?v=20260921_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/></video>
160
+ <button aria-label="Play Product demonstrations 7" class="video-play" title="Play Product demonstrations 7" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
161
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Product demonstrations 8" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_034.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_034.mp4" type="video/mp4"/></video>
162
+ <button aria-label="Play Product demonstrations 8" class="video-play" title="Play Product demonstrations 8" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
163
+ <span class="video-error" hidden="" role="status"></span></div></div></div>
164
+ </div></section><div class="scenario-row"><section aria-labelledby="chatting-heading" class="article-section" id="chatting">
165
+ <div class="section-heading"><h2 id="chatting-heading">Video Chatting</h2></div>
166
+ <div class="prose"><p>
167
+ FlowAct-R2 enables natural video chatting with responsive listening, expressive turn-taking, and lifelike avatar behaviors for seamless real-time interaction.
168
+ </p></div><div class="gallery" data-gallery="">
169
+ <div class="gallery-toolbar"><span>Conversations</span>
170
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
171
+ <button aria-label="Previous Conversations" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
172
+ <button aria-label="Next Conversations" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
173
+ </div>
174
+ </div>
175
+ <div aria-label="Conversations videos" class="gallery-track" id="blog-video-chatting-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell"><video aria-label="Conversations 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/GIR-02_crop.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/GIR-02_crop.mp4" type="video/mp4"/></video>
176
+ <button aria-label="Play Conversations 1" class="video-play" title="Play Conversations 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
177
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Conversations 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_PET-03_20260901_personavoice_v2.mp4" type="video/mp4"/></video>
178
+ <button aria-label="Play Conversations 2" class="video-play" title="Play Conversations 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
179
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Conversations 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/20260831/chat50_EMP-03_20260814_chat50fix_audience_faststart.mp4" type="video/mp4"/></video>
180
+ <button aria-label="Play Conversations 3" class="video-play" title="Play Conversations 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
181
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Conversations 4" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/chat50_TRN-04_20260901_personavoice_v2.mp4" type="video/mp4"/></video>
182
+ <button aria-label="Play Conversations 4" class="video-play" title="Play Conversations 4" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
183
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Conversations 5" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903/EMP-02_crop_compressed_faststart.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903/EMP-02_crop_compressed_faststart.mp4" type="video/mp4"/></video>
184
+ <button aria-label="Play Conversations 5" class="video-play" title="Play Conversations 5" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
185
+ <span class="video-error" hidden="" role="status"></span></div></div></div>
186
+ </div></section><section aria-labelledby="vlogging-heading" class="article-section" id="vlogging">
187
+ <div class="section-heading"><h2 id="vlogging-heading">Live Vlogging</h2></div>
188
+ <div class="prose"><p>
189
+ FlowAct-R2 supports vlog streams with multi-scene switching and audience-driven branching, allowing live viewer inputs to steer the next scenario and action.
190
+ </p></div><div class="gallery" data-gallery="">
191
+ <div class="gallery-toolbar"><span>Scene exploration</span>
192
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
193
+ <button aria-label="Previous Scene exploration" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
194
+ <button aria-label="Next Scene exploration" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
195
+ </div>
196
+ </div>
197
+ <div aria-label="Scene exploration videos" class="gallery-track" id="blog-gaming-carousel" tabindex="0"><div class="gallery-item"><div class="video-shell"><video aria-label="Scene exploration 1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/GAME-GAL-XIANSHI-scenehold-v3b_20260904_manualfix_v1_bgm018_speechfit_scene3gpt2v3_useredit1_danmaku.mp4" type="video/mp4"/></video>
198
+ <button aria-label="Play Scene exploration 1" class="video-play" title="Play Scene exploration 1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
199
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Scene exploration 2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/TRV-03_crop.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/0903_compressed_crf28/TRV-03_crop.mp4" type="video/mp4"/></video>
200
+ <button aria-label="Play Scene exploration 2" class="video-play" title="Play Scene exploration 2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
201
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="gallery-item"><div class="video-shell"><video aria-label="Scene exploration 3" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/IG/20260911_danmaku/EDU-HIS-v1-fxwalk-interactive-v4b-scenehold_20260904_manualfix_v1_bgm018_speechfit_useredit1_danmaku.mp4" type="video/mp4"/></video>
202
+ <button aria-label="Play Scene exploration 3" class="video-play" title="Play Scene exploration 3" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
203
+ <span class="video-error" hidden="" role="status"></span></div></div></div>
204
+ </div></section></div><section aria-labelledby="evaluation-heading" class="article-section" id="evaluation">
205
+ <div class="section-heading"><h2 id="evaluation-heading">Comparing to Vidu-S1</h2></div>
206
+ <div class="prose"><p>
207
+ Enabled by the planning capabilities of its proactive agent, FlowAct-R2 delivers clearer videos, more natural and expressive motions, stronger action responsiveness, and more accurate, contextually appropriate dialogue than Vidu-S1, achieving GSB scores of +54.76% for video quality and +40.48% for real-time interaction in human evaluations, whereas Vidu-S1 is comparatively static and may introduce unrelated conversational memory.
208
+ </p></div>
209
+ <div class="gallery comparison-gallery" data-gallery="">
210
+ <div class="gallery-toolbar"><span>Side-by-side comparisons</span>
211
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
212
+ <button aria-label="Previous Side-by-side comparisons" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
213
+ <button aria-label="Next Side-by-side comparisons" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
214
+ </div>
215
+ </div>
216
+ <div aria-label="Side-by-side comparisons videos" class="gallery-track" id="blog-sota-video-carousel" tabindex="0"><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/01_TRN-04_Q6_vidu.mp4" type="video/mp4"/></video>
217
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
218
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/01_TRN-04_Q6_ours.mp4" type="video/mp4"/></video>
219
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
220
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/02_TRV-03_Q1-Q3_vidu.mp4" type="video/mp4"/></video>
221
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
222
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/02_TRV-03_Q1-Q3_ours.mp4" type="video/mp4"/></video>
223
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
224
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/03_PET-03_Q3-Q4_vidu.mp4" type="video/mp4"/></video>
225
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
226
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/03_PET-03_Q3-Q4_ours.mp4" type="video/mp4"/></video>
227
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
228
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/04_MKT-04_Q5_vidu.mp4" type="video/mp4"/></video>
229
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
230
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/04_MKT-04_Q5_ours.mp4" type="video/mp4"/></video>
231
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
232
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/05_MKT-04_Q7_vidu.mp4" type="video/mp4"/></video>
233
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
234
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/05_MKT-04_Q7_ours.mp4" type="video/mp4"/></video>
235
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
236
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/06_MKT-05_Q1_vidu.mp4" type="video/mp4"/></video>
237
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
238
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/06_MKT-05_Q1_ours.mp4" type="video/mp4"/></video>
239
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
240
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/07_CSV-01_Q4_vidu.mp4" type="video/mp4"/></video>
241
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
242
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/07_CSV-01_Q4_ours.mp4" type="video/mp4"/></video>
243
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
244
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S1</span><div class="video-shell"><video aria-label="Vidu-S1" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/vidu/08_CSV-04_Q4-Q5_vidu.mp4" type="video/mp4"/></video>
245
+ <button aria-label="Play Vidu-S1" class="video-play" title="Play Vidu-S1" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
246
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/videochat/comp/marked_showcase_20260904/ours/08_CSV-04_Q4-Q5_ours.mp4" type="video/mp4"/></video>
247
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
248
+ <span class="video-error" hidden="" role="status"></span></div></div></div></div>
249
+ </div></section><section aria-labelledby="evaluation-s2-heading" class="article-section" id="evaluation-s2">
250
+ <div class="section-heading"><h2 id="evaluation-s2-heading">Comparing to Vidu-S2</h2></div>
251
+ <div class="prose"><p>
252
+ Compared with Vidu-S2, FlowAct-R2 better preserves the appearance of referenced objects and switches more naturally between product references, demonstrating stronger object consistency and reference switching in these live shopping examples. Both Vidu-S2 and FlowAct-R2 can trigger dance from text; FlowAct-R2 further supports reference-video conditioning, enabling more expressive dance generation.
253
+ </p></div><div class="gallery comparison-gallery comparison-portrait" data-gallery="">
254
+ <div class="gallery-toolbar"><span>Vidu-S2 comparisons</span>
255
+ <div class="gallery-actions"><span aria-live="polite" class="gallery-counter"></span>
256
+ <button aria-label="Previous Vidu-S2 comparisons" class="icon-button" data-direction="-1" title="Previous videos" type="button"><i aria-hidden="true" class="fas fa-arrow-left"></i></button>
257
+ <button aria-label="Next Vidu-S2 comparisons" class="icon-button" data-direction="1" title="Next videos" type="button"><i aria-hidden="true" class="fas fa-arrow-right"></i></button>
258
+ </div>
259
+ </div>
260
+ <div aria-label="Vidu-S2 comparisons videos" class="gallery-track" id="blog-vidu-s2-video-carousel" tabindex="0"><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell"><video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/01_case_004_005_006_crop1_comp_danmaku_withrefs/rtc-997660459551166464-1789532435952_with_product_refs.mp4" type="video/mp4"/></video>
261
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
262
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/multigood_0902/case_004_005_006_crop1_comp_danmaku_first_frame.jpg?v=20260907_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/teaser/teaser_with_refs_20260907/case_004_005_006_crop1_comp_danmaku_withrefs.mp4" type="video/mp4"/></video>
263
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
264
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell"><video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref_first_frame.jpg?v=20260921_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/07_case_024/07_case_024_first_image_with_product_ref.mp4" type="video/mp4"/></video>
265
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
266
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024_first_frame.jpg?v=20260921_first" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_024.mp4" type="video/mp4"/></video>
267
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
268
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell"><video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/vidu_hd_ack3s_corrected_02_09_first_image_20260916_with_product_refs/02_case_085_first_image_with_product_ref.mp4" type="video/mp4"/></video>
269
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
270
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/generation_maihuo_0902_danmaku_compressed/case_085.mp4" type="video/mp4"/></video>
271
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
272
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell"><video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/image_reference_eval_cases_20260915_with_product_refs/04_case_108/rtc-997707938619473920-1789543699407_with_product_refs.mp4" type="video/mp4"/></video>
273
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
274
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/shop/case_108.mp4" type="video/mp4"/></video>
275
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
276
+ <span class="video-error" hidden="" role="status"></span></div></div></div><div class="gallery-item comparison-pair"><div class="comparison-method"><span class="method-label">Vidu-S2</span><div class="video-shell"><video aria-label="Vidu-S2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.jpg?v=20260909_no_category" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/vidu-s2-comp/dance_action_library_all_cases_no_nono_20260916/P0_dance_2_custom_action_clone_voice_no_bgm_hd.mp4" type="video/mp4"/></video>
277
+ <button aria-label="Play Vidu-S2" class="video-play" title="Play Vidu-S2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
278
+ <span class="video-error" hidden="" role="status"></span></div></div><div class="comparison-method"><span class="method-label">FlowAct-R2</span><div class="video-shell"><video aria-label="FlowAct-R2" controls="" data-poster="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance2_faststart.jpg?v=20260914" loop="" playsinline="" preload="none"><source data-src="https://avatar-agent.tos-cn-beijing.volces.com/flowact-r2-project-clean-20260920/static/videos/entertainment_final_danmaku_only/dance_copyright_clean_20260914/videos/01_dance2.mp4" type="video/mp4"/></video>
279
+ <button aria-label="Play FlowAct-R2" class="video-play" title="Play FlowAct-R2" type="button"><i aria-hidden="true" class="fas fa-play"></i></button>
280
+ <span class="video-error" hidden="" role="status"></span></div></div></div></div>
281
+ </div></section><section aria-labelledby="references-heading" class="article-section" id="references">
282
+ <div class="section-heading"><h2 id="references-heading">BibTeX</h2></div>
283
+ <details class="citation" open=""><summary>BibTeX <i aria-hidden="true" class="fas fa-plus"></i></summary>
284
+ <div class="citation-content"><button aria-label="Copy BibTeX" class="icon-button copy-citation" title="Copy BibTeX" type="button"><i aria-hidden="true" class="fas fa-copy"></i></button>
285
+ <pre><code id="citation-code">@online{2026flowact-R2,
286
+ title={FlowAct-R2: Beyond Talking Avatar via Streaming Multimodal References and Proactive Agent Planning},
287
+ author={Ziyao Huang, Zhengkun Rong, Shiyang Qin, Shuang Liang, Wentao Hu, Yuxuan Luo, Yuan Zhang, Mingyuan Gao},
288
+ year={2026},
289
+ url={https://bone-11.github.io/Flowact-R2/},
290
+ }
291
+
292
+ @article{wang2026flowact,
293
+ title={FlowAct-R1: Towards Interactive Humanoid Video Generation},
294
+ author={Wang, Lizhen and Zhu, Yongming and Ge, Zhipeng and Zheng, Youwei and Zhang, Longhao and Hu, Tianshu and Qin, Shiyang and Luo, Mingshuang and Zhang, Jiaxu and Chen, Xin and others},
295
+ journal={arXiv preprint arXiv:2601.10103},
296
+ year={2026}
297
+ }
298
+
299
+ @article{zhu2024infp,
300
+ title={INFP: Audio-driven interactive head generation in dyadic conversations},
301
+ author={Zhu, Yongming and Zhang, Longhao and Rong, Zhengkun and Hu, Tianshu and Liang, Shuang and Ge, Zhipeng},
302
+ journal={arXiv preprint arXiv:2412.04037},
303
+ year={2024}
304
+ }</code></pre><span class="copy-status" role="status"></span></div>
305
+ </details><div class="related-research"><h3>More Research</h3><a href="https://grisoon.github.io/INFP/">
306
+ INFP
307
+ </a><a href="https://grisoon.github.io/PersonaTalk/">
308
+ PersonaTalk
309
+ </a><a href="https://grisoon.github.io/FlowAct-R1/">
310
+ FlowAct-R1
311
+ </a></div></section>
312
+ <section class="ethics prose"><h2>Ethics Concerns</h2><p>
313
+ All human images used in our demonstrations were generated by AI tools, and are intended solely to showcase the capabilities of this research. Please contact us (luoyuxuan@bytedance.com) if there are any concerns, and we will delete it in time.
314
+ </p><h2>Acknowledgement</h2><p>
315
+ We would like to thank <a href="https://nerfies.github.io/">Nerfies</a> for providing the website template.
316
+ </p></section>
317
+ </article>
318
+ </div>
319
+ </main><footer class="site-footer"><a href="#top">FlowAct-R2</a><a href="./index.html">Project page</a></footer>
320
+ </body></html>
serve.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+
3
+ import argparse
4
+ import os
5
+ import re
6
+ from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
7
+
8
+
9
+ class RangeRequestHandler(SimpleHTTPRequestHandler):
10
+ protocol_version = "HTTP/1.1"
11
+
12
+ def send_head(self):
13
+ path = self.translate_path(self.path)
14
+ if os.path.isdir(path) or "Range" not in self.headers:
15
+ response = super().send_head()
16
+ if response and not os.path.isdir(path):
17
+ self._range = None
18
+ return response
19
+
20
+ try:
21
+ file_handle = open(path, "rb")
22
+ except OSError:
23
+ self.send_error(404, "File not found")
24
+ return None
25
+
26
+ file_size = os.fstat(file_handle.fileno()).st_size
27
+ match = re.fullmatch(r"bytes=(\d*)-(\d*)", self.headers["Range"].strip())
28
+ if not match:
29
+ file_handle.close()
30
+ self.send_error(400, "Invalid Range header")
31
+ return None
32
+
33
+ start_text, end_text = match.groups()
34
+ if not start_text:
35
+ suffix_length = int(end_text)
36
+ start = max(file_size - suffix_length, 0)
37
+ end = file_size - 1
38
+ else:
39
+ start = int(start_text)
40
+ end = int(end_text) if end_text else file_size - 1
41
+
42
+ if start >= file_size or start > end:
43
+ file_handle.close()
44
+ self.send_response(416)
45
+ self.send_header("Content-Range", f"bytes */{file_size}")
46
+ self.send_header("Content-Length", "0")
47
+ self.end_headers()
48
+ return None
49
+
50
+ end = min(end, file_size - 1)
51
+ content_length = end - start + 1
52
+ self._range = (start, end)
53
+
54
+ self.send_response(206)
55
+ self.send_header("Content-Type", self.guess_type(path))
56
+ self.send_header("Accept-Ranges", "bytes")
57
+ self.send_header("Content-Range", f"bytes {start}-{end}/{file_size}")
58
+ self.send_header("Content-Length", str(content_length))
59
+ self.send_header("Last-Modified", self.date_time_string(os.path.getmtime(path)))
60
+ self.end_headers()
61
+ file_handle.seek(start)
62
+ return file_handle
63
+
64
+ def copyfile(self, source, outputfile):
65
+ if not getattr(self, "_range", None):
66
+ return super().copyfile(source, outputfile)
67
+
68
+ remaining = self._range[1] - self._range[0] + 1
69
+ while remaining:
70
+ chunk = source.read(min(64 * 1024, remaining))
71
+ if not chunk:
72
+ break
73
+ outputfile.write(chunk)
74
+ remaining -= len(chunk)
75
+
76
+
77
+ def main():
78
+ parser = argparse.ArgumentParser(description="Serve static files with HTTP Range support.")
79
+ parser.add_argument("--bind", default="0.0.0.0")
80
+ parser.add_argument("--port", type=int, default=8123)
81
+ parser.add_argument("--directory", default=".")
82
+ args = parser.parse_args()
83
+
84
+ handler = lambda *handler_args, **handler_kwargs: RangeRequestHandler(
85
+ *handler_args, directory=args.directory, **handler_kwargs
86
+ )
87
+ server = ThreadingHTTPServer((args.bind, args.port), handler)
88
+ print(f"Serving {os.path.abspath(args.directory)} on http://{args.bind}:{args.port}")
89
+ server.serve_forever()
90
+
91
+
92
+ if __name__ == "__main__":
93
+ main()
static/css/blog.css ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Standalone editorial theme; no shared project-page selectors or overrides. */
2
+ :root {
3
+ color-scheme: light;
4
+ --ink: #171918;
5
+ --muted: #6b706d;
6
+ --line: #dedfdd;
7
+ --paper: #fff;
8
+ --soft: #f3f4f2;
9
+ --accent: #057866;
10
+ --max: 1384px;
11
+ }
12
+ * { box-sizing: border-box; letter-spacing: 0; }
13
+ html { scroll-behavior: smooth; scroll-padding-top: 36px; }
14
+ body { margin: 0; background: var(--paper); color: var(--ink); font-family: Arial, Helvetica, sans-serif; -webkit-font-smoothing: antialiased; }
15
+ a { color: inherit; text-decoration: none; }
16
+ a, button, summary { -webkit-tap-highlight-color: transparent; }
17
+ a:focus-visible, button:focus-visible, summary:focus-visible, .gallery-track:focus-visible { outline: 2px solid var(--accent); outline-offset: 5px; }
18
+ button { font: inherit; cursor: pointer; }
19
+ button:disabled { cursor: default; opacity: .3; }
20
+ button, a { touch-action: manipulation; }
21
+ figure, h1, h2, p { margin: 0; }
22
+ svg.svg-inline--fa { width: 1em; height: 1em; }
23
+ [hidden] { display: none !important; }
24
+ .sr-only, .skip-link:not(:focus) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
25
+ .skip-link:focus { display: block; padding: 16px; }
26
+ .site-header, .site-footer { max-width: var(--max); margin: auto; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
27
+ .site-header { min-height: 92px; padding: 0 48px; }
28
+ .wordmark { display: inline-flex; align-items: baseline; gap: 5px; font-size: 23px; font-weight: 700; }
29
+ .wordmark-version { color: var(--accent); font-weight: 400; font-size: 14px; }
30
+ .site-header nav { display: flex; align-items: center; gap: 32px; font-size: 14px; }
31
+ .site-header nav a:hover, .text-link:hover, .site-footer a:hover { color: var(--accent); }
32
+ .site-header .project-link { margin-left: 22px; }
33
+ .project-link svg, .site-footer > a:last-child svg, .related-research svg { transform: rotate(45deg); margin-left: 8px; font-size: 12px; }
34
+ .article-header { max-width: var(--max); padding: 66px 48px 48px 300px; margin: auto; }
35
+ .article-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 36px; color: var(--muted); font-size: 13px; margin-bottom: 30px; }
36
+ .eyebrow { font-family: 'Courier New', monospace; text-transform: uppercase; font-size: 11px; font-weight: 600; }
37
+ .article-meta .eyebrow { color: var(--accent); }
38
+ h1 { font-size: 88px; line-height: 1.04; font-weight: 500; }
39
+ .article-deck { font-size: 34px; line-height: 1.23; max-width: 830px; margin-top: 22px; font-weight: 400; text-wrap: balance; }
40
+ .article-author-byline { max-width: 830px; margin-top: 22px; color: var(--muted); font-size: 14px; line-height: 1.6; }
41
+ .article-author-byline .publication-authors { margin-top: 4px; }
42
+ .article-author-byline .publication-authors:first-child { color: var(--ink); }
43
+ .article-author-byline .author-block { display: inline; }
44
+ .article-author-byline small { font-size: 12px; }
45
+ .text-link { display: inline-flex; align-items: center; gap: 16px; font-size: 14px; padding: 12px 0; margin-top: 23px; }
46
+ .text-link svg { font-size: 12px; transition: transform .2s; }
47
+ .text-link:hover svg { transform: translateY(3px); }
48
+ .featured-media { max-width: var(--max); padding: 0 48px; margin: 0 auto 88px; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; }
49
+ .featured-media figcaption { display: flex; gap: 13px; font-size: 12px; line-height: 1.5; padding-top: 16px; }
50
+ .featured-media figcaption > span { color: var(--muted); font-family: 'Courier New', monospace; }
51
+ .video-shell { position: relative; isolation: isolate; background: #e9ebe8; border-radius: 4px; overflow: hidden; }
52
+ .video-shell video { display: block; width: 100%; height: 100%; aspect-ratio: 3 / 4; object-fit: contain; background: #111; }
53
+ /* Show portrait posters without letterbox padding; playback always preserves the full frame. */
54
+ .video-shell:not(.is-loaded) video { object-fit: cover; }
55
+ .video-shell:not(.is-loaded) video::-webkit-media-controls { display: none; }
56
+ .video-play { display: grid; place-items: center; position: absolute; inset: 0; margin: auto; width: 50px; height: 50px; color: var(--ink); background: #fff; border: 0; border-radius: 50%; box-shadow: 0 2px 12px #0002; transition: transform .2s, background .2s; z-index: 1; }
57
+ .video-play svg { font-size: 13px; margin-left: 2px; }
58
+ .video-play:hover { transform: scale(1.07); background: #e1fff0; }
59
+ .video-shell.is-loaded .video-play { display: none; }
60
+ .video-shell.is-loaded video { background: #080908; }
61
+ .video-error { position: absolute; top: 12px; left: 12px; right: 12px; padding: 10px; color: #fff; background: #262927; font-size: 12px; line-height: 1.5; z-index: 2; }
62
+ .article-layout { max-width: var(--max); margin: auto; padding: 0 48px; display: grid; grid-template-columns: 188px minmax(0, 1fr); gap: 64px; }
63
+ .contents { min-width: 0; }
64
+ .contents nav { position: sticky; top: 36px; display: flex; flex-direction: column; gap: 6px; padding-top: 8px; }
65
+ .contents .eyebrow { margin-bottom: 17px; color: #858b86; }
66
+ .contents a { display: flex; gap: 13px; padding: 9px 0; font-size: 12px; color: var(--muted); line-height: 1.4; }
67
+ .contents a > span { font-family: 'Courier New', monospace; color: #909690; }
68
+ .contents a:hover, .contents a[aria-current="location"] { color: var(--ink); }
69
+ .contents a[aria-current="location"] { font-weight: 600; }
70
+ .contents a[aria-current="location"] > span { color: var(--accent); }
71
+ .contents .back-top { border-top: 1px solid var(--line); margin-top: 20px; padding-top: 20px; align-items: center; }
72
+ .contents .back-top svg { font-size: 10px; }
73
+ article { min-width: 0; }
74
+ .article-section { border-top: 1px solid var(--line); padding: 38px 0 74px; scroll-margin-top: 28px; }
75
+ .section-heading { display: flex; align-items: baseline; gap: 20px; margin-bottom: 32px; }
76
+ .section-number { color: var(--accent); font-family: 'Courier New', monospace; font-size: 12px; flex-shrink: 0; }
77
+ .section-heading h2 { font-size: 32px; line-height: 1.2; font-weight: 500; text-wrap: balance; }
78
+ .prose { max-width: 700px; }
79
+ .prose p { font-size: 17px; line-height: 1.8; color: #414641; margin-bottom: 24px; overflow-wrap: break-word; }
80
+ .prose p:last-child { margin-bottom: 0; }
81
+ .prose .lead { color: var(--ink); font-size: 23px; line-height: 1.55; }
82
+ .prose strong { color: var(--ink); font-weight: 600; }
83
+ .prose a { text-decoration: underline; text-underline-offset: 4px; }
84
+ .capabilities { margin-top: 40px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-top: 1px solid var(--line); padding-top: 25px; gap: 20px; }
85
+ .capabilities > div { display: flex; flex-direction: column; gap: 12px; font-size: 12px; line-height: 1.5; color: var(--muted); }
86
+ .capability-value { font-size: 27px; color: var(--ink); font-weight: 400; }
87
+ .method-figure { margin: 0 0 40px; }
88
+ .method-figure > a { position: relative; display: block; }
89
+ .method-figure img { width: 100%; height: auto; display: block; background: #fff; }
90
+ .diagram-expand { position: absolute; right: 0; bottom: 0; display: grid; place-items: center; width: 34px; height: 34px; background: #fff; border: 1px solid var(--line); border-radius: 50%; font-size: 12px; }
91
+ .method-figure figcaption { font-size: 12px; line-height: 1.5; color: var(--muted); margin-top: 16px; }
92
+ .gallery { margin-top: 32px; --columns: 3; }
93
+ .gallery-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 15px; font-size: 12px; color: var(--muted); }
94
+ .gallery-actions { display: flex; gap: 10px; align-items: center; flex-shrink: 0; }
95
+ .gallery-counter { font-size: 11px; font-family: 'Courier New', monospace; min-width: 50px; text-align: right; margin-right: 4px; }
96
+ .icon-button { width: 34px; height: 34px; padding: 0; display: inline-grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: transparent; color: var(--ink); font-size: 12px; flex-shrink: 0; }
97
+ .icon-button:hover:not(:disabled) { background: var(--soft); }
98
+ .gallery-track { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - (var(--columns) - 1) * 14px) / var(--columns)); gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: #c5cac5 transparent; padding-bottom: 12px; overscroll-behavior-x: contain; }
99
+ .gallery-item { min-width: 0; scroll-snap-align: start; }
100
+ .gallery-item .video-shell video { aspect-ratio: 3 / 4; }
101
+ .comparison-gallery { --columns: 2; }
102
+ .comparison-pair { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0; }
103
+ .comparison-method { min-width: 0; }
104
+ .method-label { display: block; text-align: center; color: var(--muted); font-size: 11px; margin-bottom: 12px; }
105
+ .comparison-method:last-child .method-label { color: var(--accent); }
106
+ .comparison-method .video-shell { border-radius: 4px 0 0 4px; }
107
+ .comparison-method:last-child .video-shell { border-radius: 0 4px 4px 0; }
108
+ .comparison-method .video-shell video { object-fit: contain; }
109
+ .comparison-gallery.comparison-portrait .video-shell video { aspect-ratio: 9 / 16; }
110
+ .comparison-method .video-play { width: 36px; height: 36px; }
111
+ .evaluation-summary { background: #171c19; color: #fff; padding: 30px 34px; margin: 0 0 32px; }
112
+ .evaluation-summary .eyebrow { color: #b0bcb4; }
113
+ .evaluation-scores { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 28px; margin-top: 20px; }
114
+ .evaluation-scores > div { display: flex; flex-direction: column; gap: 15px; font-size: 13px; }
115
+ .score { font-size: 48px; line-height: 1.2; font-weight: 400; color: #d0f4dd; }
116
+ .score > span { font-size: 29px; }
117
+ .score-unit { font-size: 10px; color: #aebcb2; margin-left: 10px; }
118
+ .citation { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
119
+ .citation summary { list-style: none; padding: 22px 0; display: flex; align-items: center; justify-content: space-between; font-size: 17px; cursor: pointer; }
120
+ .citation summary::-webkit-details-marker { display: none; }
121
+ .citation summary svg { font-size: 12px; transition: transform .2s; }
122
+ .citation[open] summary svg { transform: rotate(45deg); }
123
+ .citation-content { position: relative; background: var(--soft); padding: 52px 24px 24px; }
124
+ .copy-citation { position: absolute; right: 15px; top: 12px; }
125
+ .citation pre { margin: 0; font-size: 12px; line-height: 1.7; overflow-x: auto; white-space: pre-wrap; overflow-wrap: anywhere; }
126
+ .copy-status { display: block; margin-top: 12px; font-size: 12px; color: var(--accent); }
127
+ .related-research { margin-top: 24px; }
128
+ .related-research a { display: flex; justify-content: space-between; align-items: center; padding: 19px 0; border-bottom: 1px solid var(--line); font-size: 18px; }
129
+ .related-research a:hover { color: var(--accent); }
130
+ .ethics { padding: 0 0 70px; }
131
+ .ethics h2 { font-size: 16px; font-weight: 500; margin-bottom: 18px; }
132
+ .ethics p { font-size: 13px; line-height: 1.7; color: var(--muted); }
133
+ .site-footer { border-top: 1px solid var(--line); padding: 36px 48px; font-size: 12px; color: var(--muted); }
134
+ .site-footer .wordmark { color: var(--ink); }
135
+ @media (min-width: 1600px) { .article-header { padding-top: 78px; } }
136
+ @media (max-width: 1100px) {
137
+ .article-layout { grid-template-columns: 150px minmax(0,1fr); gap: 36px; }
138
+ .article-header { padding: 36px 48px 36px 234px; }
139
+ .article-deck { font-size: 30px; }
140
+ .gallery { --columns: 2; }
141
+ .comparison-gallery { --columns: 1; }
142
+ .score { font-size: 38px; }
143
+ .score > span { font-size: 23px; }
144
+ .section-heading h2 { font-size: 28px; }
145
+ .capability-value { font-size: 23px; }
146
+ }
147
+ @media (max-width: 800px) {
148
+ .site-header { padding: 0 24px; min-height: 76px; }
149
+ .site-header nav { gap: 20px; font-size: 12px; }
150
+ .site-header .project-link { margin-left: 0; }
151
+ .article-header { padding: 40px 24px 32px; }
152
+ h1 { font-size: 64px; }
153
+ .article-deck { font-size: 29px; }
154
+ .article-meta { margin-bottom: 24px; font-size: 12px; }
155
+ .featured-media { padding: 0 24px; gap: 12px; margin-bottom: 52px; grid-template-columns: repeat(2,minmax(0,1fr)); row-gap: 26px; }
156
+ .featured-media figcaption { font-size: 12px; padding-top: 12px; }
157
+ .article-layout { display: block; padding: 0 24px; }
158
+ .contents { margin-bottom: 36px; }
159
+ .contents nav { position: static; flex-direction: row; overflow-x: auto; gap: 24px; border-top: 1px solid var(--line); padding: 15px 0; scrollbar-width: thin; }
160
+ .contents a { white-space: nowrap; gap: 8px; }
161
+ .contents .eyebrow, .contents .back-top { display: none; }
162
+ .gallery { --columns: 2; }
163
+ .comparison-gallery { --columns: 1; }
164
+ .article-section { padding: 30px 0 54px; }
165
+ .section-heading { margin-bottom: 24px; gap: 14px; }
166
+ .prose p { font-size: 16px; line-height: 1.75; }
167
+ .prose .lead { font-size: 21px; }
168
+ .site-footer { padding: 28px 24px; flex-wrap: wrap; }
169
+ .site-footer > span { order: 3; flex-basis: 100%; }
170
+ }
171
+ @media (max-width: 480px) {
172
+ .site-header nav > a:first-child { display: none; }
173
+ .site-header nav { gap: 18px; }
174
+ .wordmark { font-size: 21px; }
175
+ .article-header { padding-top: 24px; }
176
+ h1 { font-size: 52px; }
177
+ .article-deck { font-size: 25px; line-height: 1.25; }
178
+ .article-meta { gap: 12px; }
179
+ .text-link { margin-top: 17px; }
180
+ .featured-media { gap: 10px; row-gap: 20px; }
181
+ .featured-media figcaption { gap: 6px; font-size: 11px; }
182
+ .video-play { width: 40px; height: 40px; }
183
+ .section-heading h2 { font-size: 26px; }
184
+ .capabilities { grid-template-columns: 1fr; gap: 0; padding-top: 0; }
185
+ .capabilities > div { flex-direction: row; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); padding: 18px 0; gap: 16px; }
186
+ .capabilities > div > span:last-child { max-width: 50%; text-align: right; }
187
+ .gallery:not(.comparison-gallery) .gallery-track { grid-auto-columns: 72%; }
188
+ .gallery-toolbar { gap: 8px; font-size: 11px; }
189
+ .gallery-actions { gap: 6px; }
190
+ .gallery-counter { min-width: 42px; }
191
+ .icon-button { width: 32px; height: 32px; }
192
+ .evaluation-summary { padding: 24px 20px; }
193
+ .evaluation-scores { gap: 12px; }
194
+ .score { font-size: 31px; }
195
+ .score > span { font-size: 20px; }
196
+ .evaluation-scores > div { font-size: 11px; line-height: 1.5; }
197
+ .score-unit { display: block; margin-left: 0; }
198
+ }
199
+ @media (prefers-reduced-motion: reduce) {
200
+ html { scroll-behavior: auto; }
201
+ *, *::before, *::after { transition: none !important; }
202
+ }
static/css/bulma-carousel.min.css ADDED
@@ -0,0 +1 @@
 
 
1
+ @-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.slider{position:relative;width:100%}.slider-container{display:flex;flex-wrap:nowrap;flex-direction:row;overflow:hidden;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);min-height:100%}.slider-container.is-vertical{flex-direction:column}.slider-container .slider-item{flex:none}.slider-container .slider-item .image.is-covered img{-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center;height:100%;width:100%}.slider-container .slider-item .video-container{height:0;padding-bottom:0;padding-top:56.25%;margin:0;position:relative}.slider-container .slider-item .video-container.is-1by1,.slider-container .slider-item .video-container.is-square{padding-top:100%}.slider-container .slider-item .video-container.is-4by3{padding-top:75%}.slider-container .slider-item .video-container.is-21by9{padding-top:42.857143%}.slider-container .slider-item .video-container embed,.slider-container .slider-item .video-container iframe,.slider-container .slider-item .video-container object{position:absolute;top:0;left:0;width:100%!important;height:100%!important}.slider-navigation-next,.slider-navigation-previous{display:flex;justify-content:center;align-items:center;position:absolute;width:42px;height:42px;background:#fff center center no-repeat;background-size:20px 20px;border:1px solid #fff;border-radius:25091983px;box-shadow:0 2px 5px #3232321a;top:50%;margin-top:-20px;left:0;cursor:pointer;transition:opacity .3s,-webkit-transform .3s;transition:transform .3s,opacity .3s;transition:transform .3s,opacity .3s,-webkit-transform .3s}.slider-navigation-next:hover,.slider-navigation-previous:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.slider-navigation-next.is-hidden,.slider-navigation-previous.is-hidden{display:none;opacity:0}.slider-navigation-next svg,.slider-navigation-previous svg{width:25%}.slider-navigation-next{left:auto;right:0;background:#fff center center no-repeat;background-size:20px 20px}.slider-pagination{display:none;justify-content:center;align-items:center;position:absolute;bottom:0;left:0;right:0;padding:.5rem 1rem;text-align:center}.slider-pagination .slider-page{background:#fff;width:10px;height:10px;border-radius:25091983px;display:inline-block;margin:0 3px;box-shadow:0 2px 5px #3232321a;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;cursor:pointer}.slider-pagination .slider-page.is-active,.slider-pagination .slider-page:hover{-webkit-transform:scale(1.4);transform:scale(1.4)}@media screen and (min-width:800px){.slider-pagination{display:flex}}.hero.has-carousel{position:relative}.hero.has-carousel+.hero-body,.hero.has-carousel+.hero-footer,.hero.has-carousel+.hero-head{z-index:10;overflow:hidden}.hero.has-carousel .hero-carousel{position:absolute;top:0;left:0;bottom:0;right:0;height:auto;border:none;margin:auto;padding:0;z-index:0}.hero.has-carousel .hero-carousel .slider{width:100%;max-width:100%;overflow:hidden;height:100%!important;max-height:100%;z-index:0}.hero.has-carousel .hero-carousel .slider .has-background{max-height:100%}.hero.has-carousel .hero-carousel .slider .has-background .is-background{-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center;height:100%;width:100%}.hero.has-carousel .hero-body{margin:0 3rem;z-index:10}
static/css/bulma-slider.min.css ADDED
@@ -0,0 +1 @@
 
 
1
+ @-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}input[type=range].slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:1rem 0;background:0 0;touch-action:none}input[type=range].slider.is-fullwidth{display:block;width:100%}input[type=range].slider:focus{outline:0}input[type=range].slider:not([orient=vertical])::-webkit-slider-runnable-track{width:100%}input[type=range].slider:not([orient=vertical])::-moz-range-track{width:100%}input[type=range].slider:not([orient=vertical])::-ms-track{width:100%}input[type=range].slider:not([orient=vertical]).has-output+output,input[type=range].slider:not([orient=vertical]).has-output-tooltip+output{width:3rem;background:#4a4a4a;border-radius:4px;padding:.4rem .8rem;font-size:.75rem;line-height:.75rem;text-align:center;text-overflow:ellipsis;white-space:nowrap;color:#fff;overflow:hidden;pointer-events:none;z-index:200}input[type=range].slider:not([orient=vertical]).has-output-tooltip:disabled+output,input[type=range].slider:not([orient=vertical]).has-output:disabled+output{opacity:.5}input[type=range].slider:not([orient=vertical]).has-output{display:inline-block;vertical-align:middle;width:calc(100% - (4.2rem))}input[type=range].slider:not([orient=vertical]).has-output+output{display:inline-block;margin-left:.75rem;vertical-align:middle}input[type=range].slider:not([orient=vertical]).has-output-tooltip{display:block}input[type=range].slider:not([orient=vertical]).has-output-tooltip+output{position:absolute;left:0;top:-.1rem}input[type=range].slider[orient=vertical]{-webkit-appearance:slider-vertical;-moz-appearance:slider-vertical;appearance:slider-vertical;-webkit-writing-mode:bt-lr;-ms-writing-mode:bt-lr;writing-mode:bt-lr}input[type=range].slider[orient=vertical]::-webkit-slider-runnable-track{height:100%}input[type=range].slider[orient=vertical]::-moz-range-track{height:100%}input[type=range].slider[orient=vertical]::-ms-track{height:100%}input[type=range].slider::-webkit-slider-runnable-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-moz-range-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-ms-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-ms-fill-lower{background:#dbdbdb;border-radius:4px}input[type=range].slider::-ms-fill-upper{background:#dbdbdb;border-radius:4px}input[type=range].slider::-webkit-slider-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-moz-range-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-ms-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none}input[type=range].slider.is-circle::-webkit-slider-thumb{border-radius:290486px}input[type=range].slider.is-circle::-moz-range-thumb{border-radius:290486px}input[type=range].slider.is-circle::-ms-thumb{border-radius:290486px}input[type=range].slider:active::-webkit-slider-thumb{-webkit-transform:scale(1.25);transform:scale(1.25)}input[type=range].slider:active::-moz-range-thumb{transform:scale(1.25)}input[type=range].slider:active::-ms-thumb{transform:scale(1.25)}input[type=range].slider:disabled{opacity:.5;cursor:not-allowed}input[type=range].slider:disabled::-webkit-slider-thumb{cursor:not-allowed;-webkit-transform:scale(1);transform:scale(1)}input[type=range].slider:disabled::-moz-range-thumb{cursor:not-allowed;transform:scale(1)}input[type=range].slider:disabled::-ms-thumb{cursor:not-allowed;transform:scale(1)}input[type=range].slider:not([orient=vertical]){min-height:calc((1rem + 2px) * 1.25)}input[type=range].slider:not([orient=vertical])::-webkit-slider-runnable-track{height:.5rem}input[type=range].slider:not([orient=vertical])::-moz-range-track{height:.5rem}input[type=range].slider:not([orient=vertical])::-ms-track{height:.5rem}input[type=range].slider[orient=vertical]::-webkit-slider-runnable-track{width:.5rem}input[type=range].slider[orient=vertical]::-moz-range-track{width:.5rem}input[type=range].slider[orient=vertical]::-ms-track{width:.5rem}input[type=range].slider::-webkit-slider-thumb{height:1rem;width:1rem}input[type=range].slider::-moz-range-thumb{height:1rem;width:1rem}input[type=range].slider::-ms-thumb{height:1rem;width:1rem}input[type=range].slider::-ms-thumb{margin-top:0}input[type=range].slider::-webkit-slider-thumb{margin-top:-.25rem}input[type=range].slider[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.25rem}input[type=range].slider.is-small:not([orient=vertical]){min-height:calc((.75rem + 2px) * 1.25)}input[type=range].slider.is-small:not([orient=vertical])::-webkit-slider-runnable-track{height:.375rem}input[type=range].slider.is-small:not([orient=vertical])::-moz-range-track{height:.375rem}input[type=range].slider.is-small:not([orient=vertical])::-ms-track{height:.375rem}input[type=range].slider.is-small[orient=vertical]::-webkit-slider-runnable-track{width:.375rem}input[type=range].slider.is-small[orient=vertical]::-moz-range-track{width:.375rem}input[type=range].slider.is-small[orient=vertical]::-ms-track{width:.375rem}input[type=range].slider.is-small::-webkit-slider-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-moz-range-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-ms-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-ms-thumb{margin-top:0}input[type=range].slider.is-small::-webkit-slider-thumb{margin-top:-.1875rem}input[type=range].slider.is-small[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.1875rem}input[type=range].slider.is-medium:not([orient=vertical]){min-height:calc((1.25rem + 2px) * 1.25)}input[type=range].slider.is-medium:not([orient=vertical])::-webkit-slider-runnable-track{height:.625rem}input[type=range].slider.is-medium:not([orient=vertical])::-moz-range-track{height:.625rem}input[type=range].slider.is-medium:not([orient=vertical])::-ms-track{height:.625rem}input[type=range].slider.is-medium[orient=vertical]::-webkit-slider-runnable-track{width:.625rem}input[type=range].slider.is-medium[orient=vertical]::-moz-range-track{width:.625rem}input[type=range].slider.is-medium[orient=vertical]::-ms-track{width:.625rem}input[type=range].slider.is-medium::-webkit-slider-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-moz-range-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-ms-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-ms-thumb{margin-top:0}input[type=range].slider.is-medium::-webkit-slider-thumb{margin-top:-.3125rem}input[type=range].slider.is-medium[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.3125rem}input[type=range].slider.is-large:not([orient=vertical]){min-height:calc((1.5rem + 2px) * 1.25)}input[type=range].slider.is-large:not([orient=vertical])::-webkit-slider-runnable-track{height:.75rem}input[type=range].slider.is-large:not([orient=vertical])::-moz-range-track{height:.75rem}input[type=range].slider.is-large:not([orient=vertical])::-ms-track{height:.75rem}input[type=range].slider.is-large[orient=vertical]::-webkit-slider-runnable-track{width:.75rem}input[type=range].slider.is-large[orient=vertical]::-moz-range-track{width:.75rem}input[type=range].slider.is-large[orient=vertical]::-ms-track{width:.75rem}input[type=range].slider.is-large::-webkit-slider-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-moz-range-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-ms-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-ms-thumb{margin-top:0}input[type=range].slider.is-large::-webkit-slider-thumb{margin-top:-.375rem}input[type=range].slider.is-large[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.375rem}input[type=range].slider.is-white::-moz-range-track{background:#fff!important}input[type=range].slider.is-white::-webkit-slider-runnable-track{background:#fff!important}input[type=range].slider.is-white::-ms-track{background:#fff!important}input[type=range].slider.is-white::-ms-fill-lower{background:#fff}input[type=range].slider.is-white::-ms-fill-upper{background:#fff}input[type=range].slider.is-white .has-output-tooltip+output,input[type=range].slider.is-white.has-output+output{background-color:#fff;color:#0a0a0a}input[type=range].slider.is-black::-moz-range-track{background:#0a0a0a!important}input[type=range].slider.is-black::-webkit-slider-runnable-track{background:#0a0a0a!important}input[type=range].slider.is-black::-ms-track{background:#0a0a0a!important}input[type=range].slider.is-black::-ms-fill-lower{background:#0a0a0a}input[type=range].slider.is-black::-ms-fill-upper{background:#0a0a0a}input[type=range].slider.is-black .has-output-tooltip+output,input[type=range].slider.is-black.has-output+output{background-color:#0a0a0a;color:#fff}input[type=range].slider.is-light::-moz-range-track{background:#f5f5f5!important}input[type=range].slider.is-light::-webkit-slider-runnable-track{background:#f5f5f5!important}input[type=range].slider.is-light::-ms-track{background:#f5f5f5!important}input[type=range].slider.is-light::-ms-fill-lower{background:#f5f5f5}input[type=range].slider.is-light::-ms-fill-upper{background:#f5f5f5}input[type=range].slider.is-light .has-output-tooltip+output,input[type=range].slider.is-light.has-output+output{background-color:#f5f5f5;color:#363636}input[type=range].slider.is-dark::-moz-range-track{background:#363636!important}input[type=range].slider.is-dark::-webkit-slider-runnable-track{background:#363636!important}input[type=range].slider.is-dark::-ms-track{background:#363636!important}input[type=range].slider.is-dark::-ms-fill-lower{background:#363636}input[type=range].slider.is-dark::-ms-fill-upper{background:#363636}input[type=range].slider.is-dark .has-output-tooltip+output,input[type=range].slider.is-dark.has-output+output{background-color:#363636;color:#f5f5f5}input[type=range].slider.is-primary::-moz-range-track{background:#00d1b2!important}input[type=range].slider.is-primary::-webkit-slider-runnable-track{background:#00d1b2!important}input[type=range].slider.is-primary::-ms-track{background:#00d1b2!important}input[type=range].slider.is-primary::-ms-fill-lower{background:#00d1b2}input[type=range].slider.is-primary::-ms-fill-upper{background:#00d1b2}input[type=range].slider.is-primary .has-output-tooltip+output,input[type=range].slider.is-primary.has-output+output{background-color:#00d1b2;color:#fff}input[type=range].slider.is-link::-moz-range-track{background:#3273dc!important}input[type=range].slider.is-link::-webkit-slider-runnable-track{background:#3273dc!important}input[type=range].slider.is-link::-ms-track{background:#3273dc!important}input[type=range].slider.is-link::-ms-fill-lower{background:#3273dc}input[type=range].slider.is-link::-ms-fill-upper{background:#3273dc}input[type=range].slider.is-link .has-output-tooltip+output,input[type=range].slider.is-link.has-output+output{background-color:#3273dc;color:#fff}input[type=range].slider.is-info::-moz-range-track{background:#209cee!important}input[type=range].slider.is-info::-webkit-slider-runnable-track{background:#209cee!important}input[type=range].slider.is-info::-ms-track{background:#209cee!important}input[type=range].slider.is-info::-ms-fill-lower{background:#209cee}input[type=range].slider.is-info::-ms-fill-upper{background:#209cee}input[type=range].slider.is-info .has-output-tooltip+output,input[type=range].slider.is-info.has-output+output{background-color:#209cee;color:#fff}input[type=range].slider.is-success::-moz-range-track{background:#23d160!important}input[type=range].slider.is-success::-webkit-slider-runnable-track{background:#23d160!important}input[type=range].slider.is-success::-ms-track{background:#23d160!important}input[type=range].slider.is-success::-ms-fill-lower{background:#23d160}input[type=range].slider.is-success::-ms-fill-upper{background:#23d160}input[type=range].slider.is-success .has-output-tooltip+output,input[type=range].slider.is-success.has-output+output{background-color:#23d160;color:#fff}input[type=range].slider.is-warning::-moz-range-track{background:#ffdd57!important}input[type=range].slider.is-warning::-webkit-slider-runnable-track{background:#ffdd57!important}input[type=range].slider.is-warning::-ms-track{background:#ffdd57!important}input[type=range].slider.is-warning::-ms-fill-lower{background:#ffdd57}input[type=range].slider.is-warning::-ms-fill-upper{background:#ffdd57}input[type=range].slider.is-warning .has-output-tooltip+output,input[type=range].slider.is-warning.has-output+output{background-color:#ffdd57;color:rgba(0,0,0,.7)}input[type=range].slider.is-danger::-moz-range-track{background:#ff3860!important}input[type=range].slider.is-danger::-webkit-slider-runnable-track{background:#ff3860!important}input[type=range].slider.is-danger::-ms-track{background:#ff3860!important}input[type=range].slider.is-danger::-ms-fill-lower{background:#ff3860}input[type=range].slider.is-danger::-ms-fill-upper{background:#ff3860}input[type=range].slider.is-danger .has-output-tooltip+output,input[type=range].slider.is-danger.has-output+output{background-color:#ff3860;color:#fff}
static/css/bulma.min.css ADDED
The diff for this file is too large to render. See raw diff
 
static/css/bytedance-blog.css ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Match the measured Seed article typography and 30/70 metadata/body layout.
2
+ Native video behavior remains in blog.css and blog.js. */
3
+ @font-face {
4
+ font-family: Inter;
5
+ font-style: normal;
6
+ font-weight: 100 900;
7
+ font-display: swap;
8
+ src: url("../fonts/inter-latin-wght-normal.woff2") format("woff2");
9
+ }
10
+ .bytedance-blog {
11
+ --ink: #111;
12
+ --muted: #85858d;
13
+ --accent: #337aff;
14
+ --line: #e1e3e9;
15
+ --soft: #f7f8fa;
16
+ font-family: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;
17
+ }
18
+ .bytedance-blog .site-header,
19
+ .bytedance-blog .article-header,
20
+ .bytedance-blog .article-layout,
21
+ .bytedance-blog .site-footer { width: 90%; max-width: 1600px; margin-left: auto; margin-right: auto; padding-left: 0; padding-right: 0; }
22
+ .bytedance-blog .site-header { min-height: 112px; gap: 36px; }
23
+ .research-brand { display: flex; flex-shrink: 0; }
24
+ .project-logo { width: 210px; height: auto; display: block; }
25
+ .bytedance-blog .site-header nav { flex: 1; justify-content: center; gap: 44px; font-size: 15px; color: #525252; }
26
+ .header-project-link { font-size: 14px; color: var(--muted); white-space: nowrap; }
27
+ .header-project-link svg { font-size: 11px; margin-left: 8px; transform: rotate(45deg); }
28
+ .header-project-link:hover { color: var(--accent); }
29
+ .bytedance-blog .article-header { padding-top: 64px; padding-bottom: 88px; }
30
+ .bytedance-blog h1 { font-size: 48px; font-weight: 500; line-height: 1.1; text-wrap: wrap; }
31
+ .bytedance-blog .article-layout {
32
+ border-top: 1px solid var(--line);
33
+ grid-template-columns: minmax(0, calc(30% - 80px)) minmax(0, 1fr);
34
+ gap: 80px;
35
+ align-items: start;
36
+ }
37
+ .bytedance-blog .contents { position: sticky; top: 40px; padding: 26px 0 24px; max-height: calc(100vh - 60px); overflow-y: auto; scrollbar-width: thin; }
38
+ .article-information { padding: 2px 0 30px; }
39
+ .article-metadata { margin: 0; }
40
+ .article-metadata > div { padding: 0 0 17px; }
41
+ .article-metadata > div + div { border-top: 1px solid var(--line); padding-top: 17px; }
42
+ .article-information dt { margin-bottom: 8px; color: var(--muted); font-size: 11px; font-weight: 500; letter-spacing: .04em; text-transform: uppercase; }
43
+ .article-information dd { margin: 0; color: #33343a; font-size: 13px; line-height: 1.65; font-weight: 400; }
44
+ .article-authors span { display: inline; }
45
+ .article-authors a { color: var(--accent); }
46
+ .article-affiliation { color: var(--muted); }
47
+ .author-notes { color: var(--muted); }
48
+ .author-notes dd { font-size: 11px; line-height: 1.6; }
49
+ .bytedance-blog .contents nav { position: static; border-top: 1px solid var(--line); padding-top: 20px; gap: 0; }
50
+ .bytedance-blog .contents .eyebrow { font-family: inherit; font-size: 12px; font-weight: 400; text-transform: none; margin-bottom: 12px; color: #777; }
51
+ .bytedance-blog .contents nav a { padding: 7px 0; font-size: 12px; color: #777; }
52
+ .bytedance-blog .contents a[aria-current="location"] { color: var(--accent); font-weight: 400; }
53
+ .bytedance-blog .contents .back-top { margin-top: 16px; padding-top: 15px; }
54
+ .bytedance-blog .article-section { border: 0; padding: 0 0 64px; scroll-margin-top: 32px; }
55
+ .bytedance-blog #overview { padding-top: 26px; }
56
+ .overview-figure { margin: 0 0 32px; }
57
+ .overview-image { display: block; width: 100%; height: auto; }
58
+ .bytedance-blog .section-heading { margin-bottom: 30px; }
59
+ .bytedance-blog .section-heading h2 { font-size: 32px; line-height: 1.2; font-weight: 700; text-wrap: wrap; }
60
+ .bytedance-blog .prose { max-width: none; }
61
+ .bytedance-blog .prose p { font-size: 16px; line-height: 1.6; color: #242424; font-weight: 400; margin-bottom: 24px; }
62
+ .bytedance-blog .prose p:last-child { margin-bottom: 0; }
63
+ .bytedance-blog .prose strong { font-weight: 700; }
64
+ .research-highlights { margin: 24px 0 0; padding-left: 32px; font-size: 16px; line-height: 1.6; color: #242424; }
65
+ .research-highlights li + li { margin-top: 16px; }
66
+ .publication-resources { border-left: 3px solid var(--line); margin-top: 28px; padding-left: 16px; display: flex; flex-wrap: wrap; gap: 20px; }
67
+ .publication-resources a { color: var(--accent); }
68
+ .bytedance-blog .featured-media { max-width: none; padding: 0; margin: 32px 0 0; gap: 14px; }
69
+ .bytedance-blog .featured-media figcaption { display: block; padding-top: 12px; text-align: center; font-size: 11px; color: #777; }
70
+ .bytedance-blog .video-shell { border-radius: 6px; }
71
+ .bytedance-blog .video-play { width: 42px; height: 42px; box-shadow: none; }
72
+ .bytedance-blog .video-play:hover { background: #edf2ff; }
73
+ .bytedance-blog .method-figure { margin: 0 0 32px; }
74
+ .bytedance-blog .gallery { margin-top: 28px; }
75
+ .bytedance-blog .gallery + .gallery { margin-top: 36px; }
76
+ .bytedance-blog .gallery-toolbar { margin-bottom: 16px; color: #777; }
77
+ .bytedance-blog .gallery-counter { font-family: inherit; }
78
+ .bytedance-blog .icon-button { color: #555; }
79
+ .bytedance-blog .icon-button:hover:not(:disabled) { color: var(--accent); background: #f3f6fc; }
80
+ .bytedance-blog .scenario-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; }
81
+ .bytedance-blog .scenario-row > section { min-width: 0; display: flex; flex-direction: column; }
82
+ .bytedance-blog .scenario-row .section-heading h2 { font-size: 28px; }
83
+ .bytedance-blog .scenario-row .gallery { --columns: 2; margin-top: auto; padding-top: 24px; }
84
+ .bytedance-blog .comparison-method .video-shell { border-radius: 5px 0 0 5px; }
85
+ .bytedance-blog .comparison-method:last-child .video-shell { border-radius: 0 5px 5px 0; }
86
+ .bytedance-blog .comparison-method .video-play { width: 34px; height: 34px; }
87
+ .bytedance-blog .citation { border: 0; }
88
+ .bytedance-blog .citation summary { font-size: 14px; padding: 0 0 20px; color: #777; }
89
+ .bytedance-blog .citation-content { border-radius: 0; padding: 48px 24px 24px; background: #f7f7f8; }
90
+ .bytedance-blog .related-research { margin-top: 48px; }
91
+ .related-research h3 { font-size: 20px; line-height: 1.4; font-weight: 600; margin: 0 0 16px; }
92
+ .bytedance-blog .related-research a { border: 0; display: inline-block; margin-right: 28px; padding: 8px 0; font-size: 16px; color: var(--accent); }
93
+ .bytedance-blog .ethics { padding-bottom: 64px; }
94
+ .bytedance-blog .ethics h2 { font-size: 24px; line-height: 1.35; font-weight: 600; margin: 0 0 24px; }
95
+ .bytedance-blog .ethics p { font-size: 16px; line-height: 1.6; margin-bottom: 36px; color: #242424; }
96
+ .bytedance-blog .ethics a { color: var(--accent); }
97
+ .bytedance-blog .site-footer { padding-top: 32px; padding-bottom: 40px; min-height: 112px; font-size: 14px; }
98
+ @media (max-width: 1180px) {
99
+ .bytedance-blog .site-header nav { gap: 24px; font-size: 13px; }
100
+ .project-logo { width: 176px; }
101
+ .header-project-link { font-size: 12px; }
102
+ .bytedance-blog .article-header { padding-top: 44px; padding-bottom: 56px; }
103
+ .bytedance-blog h1 { font-size: 40px; }
104
+ .bytedance-blog .article-layout { grid-template-columns: 210px minmax(0, 1fr); gap: 42px; }
105
+ .bytedance-blog .featured-media { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 24px; }
106
+ .bytedance-blog .scenario-row .gallery { --columns: 1; }
107
+ .bytedance-blog .scenario-row .section-heading h2 { font-size: 25px; }
108
+ }
109
+ @media (max-width: 800px) {
110
+ .bytedance-blog .site-header { min-height: 80px; }
111
+ .bytedance-blog .site-header nav { display: none; }
112
+ .project-logo { width: 160px; }
113
+ .bytedance-blog .article-header { padding-top: 24px; padding-bottom: 32px; }
114
+ .bytedance-blog h1 { font-size: 34px; line-height: 1.2; }
115
+ .bytedance-blog .article-layout { display: block; }
116
+ .bytedance-blog .contents { position: static; max-height: none; padding: 20px 0 0; margin: 0; overflow: visible; }
117
+ .article-information { padding: 0 0 20px; }
118
+ .article-metadata { margin: 0; }
119
+ .article-metadata > div { padding-bottom: 12px; }
120
+ .article-metadata > div + div { padding-top: 12px; }
121
+ .article-information dt { font-size: 10px; margin-bottom: 5px; }
122
+ .article-information dd { font-size: 12px; }
123
+ .author-notes dd { font-size: 10px; }
124
+ .bytedance-blog .contents nav { padding: 10px 0; gap: 24px; border-bottom: 1px solid var(--line); overflow-x: auto; }
125
+ .bytedance-blog .contents nav a { padding: 7px 0; white-space: nowrap; }
126
+ .bytedance-blog #overview { padding-top: 26px; }
127
+ .bytedance-blog .section-heading h2 { font-size: 28px; }
128
+ .bytedance-blog .scenario-row { display: block; }
129
+ .bytedance-blog .scenario-row .gallery { --columns: 2; margin-top: 28px; padding-top: 0; }
130
+ .bytedance-blog .article-section { padding-bottom: 48px; }
131
+ }
132
+ @media (max-width: 480px) {
133
+ .bytedance-blog h1 { font-size: 28px; }
134
+ .bytedance-blog .article-header { padding-top: 16px; padding-bottom: 28px; }
135
+ .bytedance-blog .section-heading h2 { font-size: 26px; }
136
+ .bytedance-blog .featured-media figcaption { font-size: 10px; }
137
+ .research-highlights { padding-left: 24px; }
138
+ }
static/css/fontawesome.all.min.css ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ /*!
2
+ * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ */
5
+ .fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
static/css/index.css ADDED
@@ -0,0 +1,458 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ font-family: 'Noto Sans', sans-serif;
3
+ }
4
+
5
+ /* 增加段落和列表项之间的间距 */
6
+ h2.subtitle p {
7
+ margin-bottom: 1.1rem;
8
+ }
9
+
10
+ ul li {
11
+ margin-bottom: 0.6rem;
12
+ }
13
+
14
+
15
+ .footer .icon-link {
16
+ font-size: 25px;
17
+ color: #000;
18
+ }
19
+
20
+ .link-block a {
21
+ margin-top: 5px;
22
+ margin-bottom: 5px;
23
+ }
24
+
25
+ .dnerf {
26
+ font-variant: small-caps;
27
+ }
28
+
29
+
30
+ .teaser .hero-body {
31
+ padding-top: 0;
32
+ padding-bottom: 3rem;
33
+ }
34
+
35
+ .teaser {
36
+ font-family: 'Google Sans', sans-serif;
37
+ }
38
+
39
+
40
+ .publication-title {
41
+ font-size: 2.05rem !important;
42
+ line-height: 1.18;
43
+ max-width: 1100px;
44
+ }
45
+
46
+ .publication-banner {
47
+ max-height: parent;
48
+
49
+ }
50
+
51
+ .publication-banner video {
52
+ position: relative;
53
+ left: auto;
54
+ top: auto;
55
+ transform: none;
56
+ object-fit: fit;
57
+ }
58
+
59
+ .publication-header .hero-body {
60
+ }
61
+
62
+ .publication-title {
63
+ font-family: 'Google Sans', sans-serif;
64
+ }
65
+
66
+ @media (max-width: 1024px) {
67
+ .publication-title {
68
+ font-size: 1.75rem !important;
69
+ }
70
+ }
71
+
72
+ .publication-authors {
73
+ font-family: 'Google Sans', sans-serif;
74
+ }
75
+
76
+ .publication-venue {
77
+ color: #555;
78
+ width: fit-content;
79
+ font-weight: bold;
80
+ }
81
+
82
+ .publication-awards {
83
+ color: #ff3860;
84
+ width: fit-content;
85
+ font-weight: bolder;
86
+ }
87
+
88
+ .publication-authors {
89
+ }
90
+
91
+ .publication-authors a {
92
+ color: hsl(204, 86%, 53%) !important;
93
+ }
94
+
95
+ .publication-authors a:hover {
96
+ text-decoration: underline;
97
+ }
98
+
99
+ .author-block {
100
+ display: inline-block;
101
+ }
102
+
103
+ .publication-banner img {
104
+ }
105
+
106
+ .publication-authors {
107
+ /*color: #4286f4;*/
108
+ }
109
+
110
+ .publication-video {
111
+ position: relative;
112
+ width: 100%;
113
+ height: 0;
114
+ padding-bottom: 56.25%;
115
+
116
+ overflow: hidden;
117
+ border-radius: 10px !important;
118
+ }
119
+
120
+ .publication-video iframe {
121
+ position: absolute;
122
+ top: 0;
123
+ left: 0;
124
+ width: 100%;
125
+ height: 100%;
126
+ }
127
+
128
+ .publication-body img {
129
+ }
130
+
131
+ .results-carousel {
132
+ overflow: hidden;
133
+ }
134
+
135
+ .results-carousel .item {
136
+ margin: 5px;
137
+ overflow: hidden;
138
+ border-radius: 10px;
139
+ padding: 0;
140
+ font-size: 0;
141
+ text-align: center;
142
+ }
143
+
144
+ .results-carousel video {
145
+ display: block;
146
+ width: 100%;
147
+ height: 420px;
148
+ margin: 0 auto;
149
+ background: #000;
150
+ object-fit: contain;
151
+ }
152
+
153
+ .results-carousel .slider-pagination {
154
+ position: relative;
155
+ left: auto;
156
+ right: auto;
157
+ bottom: auto;
158
+ padding: 0.35rem 1rem 0;
159
+ margin-top: 0.25rem;
160
+ }
161
+
162
+ .results-carousel .slider-navigation-previous,
163
+ .results-carousel .slider-navigation-next {
164
+ z-index: 4;
165
+ }
166
+
167
+ .comparison-subtitle {
168
+ margin-top: 1.5rem;
169
+ margin-bottom: 0.75rem !important;
170
+ }
171
+
172
+ .comparison-carousel .comparison-item {
173
+ padding: 0 3rem 0.25rem;
174
+ overflow: visible;
175
+ font-size: 1rem;
176
+ }
177
+
178
+ .comparison-pair {
179
+ flex-direction: row-reverse;
180
+ align-items: stretch;
181
+ justify-content: center;
182
+ gap: 0;
183
+ margin: 0 !important;
184
+ }
185
+
186
+ .comparison-method {
187
+ flex: 0 1 315px;
188
+ width: min(50%, 315px);
189
+ max-width: 50%;
190
+ min-width: 0;
191
+ padding: 0 !important;
192
+ }
193
+
194
+ .comparison-method-label {
195
+ min-height: 1.75rem;
196
+ margin-bottom: 0.4rem;
197
+ color: #4a4a4a;
198
+ font-size: 0.95rem;
199
+ font-weight: 600;
200
+ line-height: 1.4;
201
+ text-align: center;
202
+ }
203
+
204
+ .comparison-carousel .comparison-method video {
205
+ width: 100%;
206
+ height: auto;
207
+ aspect-ratio: 3 / 4;
208
+ border-radius: 5px;
209
+ background: #000;
210
+ object-fit: contain;
211
+ }
212
+
213
+ .comparison-carousel.comparison-portrait .comparison-method video {
214
+ aspect-ratio: 9 / 16;
215
+ }
216
+
217
+ .comparison-method:first-child video {
218
+ border-radius: 0 5px 5px 0;
219
+ }
220
+
221
+ .comparison-method:last-child video {
222
+ border-radius: 5px 0 0 5px;
223
+ }
224
+
225
+ .comparison-carousel .slider-navigation-previous,
226
+ .comparison-carousel .slider-navigation-next {
227
+ top: 50%;
228
+ z-index: 6;
229
+ width: 48px;
230
+ height: 48px;
231
+ margin-top: -24px;
232
+ border: 2px solid #dbdbdb;
233
+ background: rgba(255, 255, 255, 0.96);
234
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.22);
235
+ }
236
+
237
+ .comparison-carousel .slider-navigation-previous {
238
+ left: 3.25rem;
239
+ }
240
+
241
+ .comparison-carousel .slider-navigation-next {
242
+ right: 3.25rem;
243
+ }
244
+
245
+ .comparison-carousel .slider-navigation-previous svg,
246
+ .comparison-carousel .slider-navigation-next svg {
247
+ width: 30%;
248
+ }
249
+
250
+ .video-shell {
251
+ position: relative;
252
+ }
253
+
254
+ .video-play-overlay {
255
+ position: absolute;
256
+ left: 50%;
257
+ top: 50%;
258
+ width: 56px;
259
+ height: 56px;
260
+ transform: translate(-50%, -50%);
261
+ border: 0;
262
+ border-radius: 50%;
263
+ background: rgba(0, 0, 0, 0.58);
264
+ cursor: pointer;
265
+ z-index: 2;
266
+ }
267
+
268
+ .video-play-overlay::before {
269
+ content: "";
270
+ position: absolute;
271
+ left: 22px;
272
+ top: 17px;
273
+ width: 0;
274
+ height: 0;
275
+ border-top: 11px solid transparent;
276
+ border-bottom: 11px solid transparent;
277
+ border-left: 17px solid #fff;
278
+ }
279
+
280
+ .video-shell.video-loaded .video-play-overlay,
281
+ .video-shell:has(video[data-loaded="true"]) .video-play-overlay {
282
+ display: none;
283
+ }
284
+
285
+ video.video-awaiting-click {
286
+ cursor: pointer;
287
+ }
288
+
289
+
290
+ .interpolation-panel {
291
+ background: #f5f5f5;
292
+ border-radius: 10px;
293
+ }
294
+
295
+ .interpolation-panel .interpolation-image {
296
+ width: 100%;
297
+ border-radius: 5px;
298
+ }
299
+
300
+ .interpolation-panel .slider {
301
+ margin: 0 !important;
302
+ }
303
+
304
+ .interpolation-panel .slider {
305
+ margin: 0 !important;
306
+ }
307
+
308
+ #interpolation-image-wrapper {
309
+ width: 100%;
310
+ }
311
+ #interpolation-image-wrapper img {
312
+ border-radius: 5px;
313
+ }
314
+
315
+ .control-item {
316
+ height: auto; /* 使用auto高度,让容器根据内容自适应 */
317
+ display: flex;
318
+ flex-direction: column;
319
+ align-items: center;
320
+ padding: 10px;
321
+ }
322
+
323
+ .control-item .content {
324
+ flex: 0 0 auto;
325
+ margin-bottom: 1rem; /* 调整文字和视频的间距 */
326
+ }
327
+
328
+ .control-item video {
329
+ flex: 0 0 420px;
330
+ width: 100%;
331
+ height: 420px;
332
+ background: #000;
333
+ object-fit: contain;
334
+ border-radius: 5px; /* 添加圆角,美化显示 */
335
+ }
336
+
337
+ /* 特殊处理第三个unit(两个视频的情况) */
338
+ .control-item .columns {
339
+ flex: 1;
340
+ max-height: 600px;
341
+ }
342
+
343
+ .control-item .columns video {
344
+ height: 420px;
345
+ width: 100%;
346
+ background: #000;
347
+ object-fit: contain;
348
+ }
349
+
350
+ .scenario-split {
351
+ margin-top: 3rem;
352
+ display: grid;
353
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
354
+ gap: 1.5rem;
355
+ }
356
+
357
+ .scenario-split > .column {
358
+ min-width: 0;
359
+ overflow: hidden;
360
+ width: auto;
361
+ }
362
+
363
+ .scenario-split .title {
364
+ font-size: 1.6rem;
365
+ }
366
+
367
+ .scenario-split .subtitle {
368
+ font-size: 1rem;
369
+ line-height: 1.5;
370
+ }
371
+
372
+ .scenario-split .results-carousel video,
373
+ .scenario-split .control-item video {
374
+ height: 360px;
375
+ flex-basis: 360px;
376
+ }
377
+
378
+ @media (max-width: 768px) {
379
+ .results-carousel video,
380
+ .control-item video,
381
+ .control-item .columns video {
382
+ height: 300px;
383
+ }
384
+
385
+ .control-item video {
386
+ flex-basis: 300px;
387
+ }
388
+
389
+ .scenario-split .results-carousel video,
390
+ .scenario-split .control-item video {
391
+ height: 300px;
392
+ flex-basis: 300px;
393
+ }
394
+
395
+ .comparison-carousel .comparison-item {
396
+ padding: 0 1.75rem 0.25rem;
397
+ }
398
+
399
+ .comparison-carousel .comparison-method video {
400
+ width: 100%;
401
+ height: auto;
402
+ aspect-ratio: 3 / 4;
403
+ }
404
+
405
+ .comparison-pair {
406
+ gap: 0;
407
+ }
408
+
409
+ .comparison-method {
410
+ padding: 0 !important;
411
+ }
412
+
413
+ .comparison-carousel .slider-navigation-previous,
414
+ .comparison-carousel .slider-navigation-next {
415
+ width: 40px;
416
+ height: 40px;
417
+ margin-top: -20px;
418
+ }
419
+
420
+ .comparison-carousel .slider-navigation-previous {
421
+ left: 1rem;
422
+ }
423
+
424
+ .comparison-carousel .slider-navigation-next {
425
+ right: 1rem;
426
+ }
427
+
428
+ .comparison-method-label {
429
+ font-size: 0.85rem;
430
+ }
431
+ }
432
+
433
+ .rainbow-text {
434
+ background: linear-gradient(
435
+ to right,
436
+ #ff0000,
437
+ #ff7f00,
438
+ #ffff00,
439
+ #00ff00,
440
+ #0000ff,
441
+ #4b0082,
442
+ #8f00ff
443
+ );
444
+ -webkit-background-clip: text;
445
+ background-clip: text;
446
+ color: transparent;
447
+ animation: rainbow 5s linear infinite;
448
+ background-size: 200% auto;
449
+ }
450
+
451
+ @keyframes rainbow {
452
+ 0% {
453
+ background-position: 0% center;
454
+ }
455
+ 100% {
456
+ background-position: 200% center;
457
+ }
458
+ }
static/fonts/inter-latin-wght-normal.woff2 ADDED
Binary file (48.3 kB). View file
 
static/images/logo-r2.png ADDED

Git LFS Details

  • SHA256: a8f1b8d200bb04ee147421dac6e470392e4355e6b18c039d6a05514eb1c3c3f0
  • Pointer size: 131 Bytes
  • Size of remote file: 539 kB
static/images/method_v10.png ADDED

Git LFS Details

  • SHA256: 711a31240888067898588cc229cb0644c89db9cfdb16fbd21b260e5a5f4a12f7
  • Pointer size: 132 Bytes
  • Size of remote file: 5.11 MB
static/images/teaser_v5.png ADDED

Git LFS Details

  • SHA256: 3b3597aa350efc5e4e59c367d498e52f69800fda2dc92c4c4e401bdb1c2f7c2d
  • Pointer size: 133 Bytes
  • Size of remote file: 10.6 MB
static/js/blog.js ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ // Native video controls own all pointer/drag events; gallery navigation never intercepts them.
4
+ const videos = Array.from(document.querySelectorAll('video'));
5
+ function playVideo(video) {
6
+ const shell = video.closest('.video-shell');
7
+ const error = shell.querySelector('.video-error');
8
+ error.hidden = true;
9
+ if (!video.dataset.loaded || video.error) {
10
+ video.querySelectorAll('source[data-src]').forEach(source => { source.src = source.dataset.src; });
11
+ video.dataset.loaded = 'true';
12
+ video.load();
13
+ }
14
+ shell.classList.add('is-loaded');
15
+ video.muted = false;
16
+ video.volume = 1;
17
+ video.play().catch(reason => {
18
+ if (reason.name === 'AbortError') return;
19
+ shell.classList.remove('is-loaded');
20
+ error.textContent = 'Playback could not start. Please try again.';
21
+ error.hidden = false;
22
+ });
23
+ }
24
+
25
+ videos.forEach(video => {
26
+ const shell = video.closest('.video-shell');
27
+ shell.querySelector('.video-play').addEventListener('click', () => playVideo(video));
28
+ video.addEventListener('click', () => { if (!video.dataset.loaded) playVideo(video); });
29
+ video.addEventListener('error', () => {
30
+ shell.classList.remove('is-loaded');
31
+ const error = shell.querySelector('.video-error');
32
+ error.textContent = 'Video unavailable. Select play to retry.';
33
+ error.hidden = false;
34
+ });
35
+ });
36
+ document.addEventListener('play', event => {
37
+ if (!(event.target instanceof HTMLVideoElement)) return;
38
+ videos.forEach(video => { if (video !== event.target && !video.paused) video.pause(); });
39
+ }, true);
40
+
41
+ if ('IntersectionObserver' in window) {
42
+ const posters = new IntersectionObserver(entries => {
43
+ entries.forEach(entry => {
44
+ if (!entry.isIntersecting) return;
45
+ const video = entry.target;
46
+ video.poster = video.dataset.poster;
47
+ posters.unobserve(video);
48
+ });
49
+ }, { rootMargin: '400px' });
50
+ videos.filter(video => video.dataset.poster).forEach(video => posters.observe(video));
51
+ } else {
52
+ videos.filter(video => video.dataset.poster).forEach(video => { video.poster = video.dataset.poster; });
53
+ }
54
+
55
+ const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
56
+ document.querySelectorAll('[data-gallery]').forEach(gallery => {
57
+ const track = gallery.querySelector('.gallery-track');
58
+ const items = Array.from(track.children);
59
+ const previous = gallery.querySelector('[data-direction="-1"]');
60
+ const next = gallery.querySelector('[data-direction="1"]');
61
+ const counter = gallery.querySelector('.gallery-counter');
62
+ previous.setAttribute('aria-controls', track.id);
63
+ next.setAttribute('aria-controls', track.id);
64
+ function update() {
65
+ const box = track.getBoundingClientRect();
66
+ const visible = items.map((item, index) => ({ box: item.getBoundingClientRect(), index }))
67
+ .filter(item => item.box.right > box.left + 3 && item.box.left < box.right - 3);
68
+ if (visible.length) counter.textContent = (visible[0].index + 1) + '-' + (visible.at(-1).index + 1) + ' / ' + items.length;
69
+ previous.disabled = track.scrollLeft < 3;
70
+ next.disabled = track.scrollLeft >= track.scrollWidth - track.clientWidth - 3;
71
+ }
72
+ function navigate(direction) {
73
+ const stride = items[0].getBoundingClientRect().width + parseFloat(getComputedStyle(track).gap);
74
+ const step = Math.max(1, Math.round(track.clientWidth / stride));
75
+ const index = Math.round(track.scrollLeft / stride);
76
+ track.scrollTo({ left: Math.max(0, (index + direction * step) * stride), behavior: reducedMotion.matches ? 'instant' : 'smooth' });
77
+ }
78
+ previous.addEventListener('click', () => navigate(-1));
79
+ next.addEventListener('click', () => navigate(1));
80
+ track.addEventListener('keydown', event => {
81
+ if (event.target !== track) return;
82
+ if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
83
+ event.preventDefault();
84
+ navigate(event.key === 'ArrowLeft' ? -1 : 1);
85
+ }
86
+ });
87
+ track.addEventListener('scroll', update, { passive: true });
88
+ if ('ResizeObserver' in window) new ResizeObserver(update).observe(track);
89
+ else window.addEventListener('resize', update, { passive: true });
90
+ update();
91
+ });
92
+
93
+ const sections = Array.from(document.querySelectorAll('.article-section'));
94
+ const links = Array.from(document.querySelectorAll('.contents a[href]'));
95
+ let scheduled = false;
96
+ function markCurrentSection() {
97
+ scheduled = false;
98
+ let current = sections[0];
99
+ sections.forEach(section => { if (section.getBoundingClientRect().top <= 160) current = section; });
100
+ links.forEach(link => {
101
+ if (link.hash === '#' + current.id) link.setAttribute('aria-current', 'location');
102
+ else link.removeAttribute('aria-current');
103
+ });
104
+ }
105
+ window.addEventListener('scroll', () => {
106
+ if (!scheduled) { scheduled = true; requestAnimationFrame(markCurrentSection); }
107
+ }, { passive: true });
108
+ markCurrentSection();
109
+
110
+ document.querySelector('.copy-citation').addEventListener('click', async () => {
111
+ const code = document.querySelector('#citation-code');
112
+ const status = document.querySelector('.copy-status');
113
+ try {
114
+ if (navigator.clipboard && window.isSecureContext) {
115
+ await navigator.clipboard.writeText(code.textContent);
116
+ } else {
117
+ // Legacy fallback supports the project's plain-HTTP LAN preview.
118
+ const field = document.createElement('textarea');
119
+ field.value = code.textContent;
120
+ field.style.cssText = 'position:fixed;left:-9999px;top:0';
121
+ document.body.appendChild(field);
122
+ field.select();
123
+ const copied = document.execCommand('copy');
124
+ field.remove();
125
+ document.querySelector('.copy-citation').focus();
126
+ if (!copied) throw new Error('Clipboard unavailable');
127
+ }
128
+ status.textContent = 'Copied.';
129
+ } catch (error) {
130
+ const range = document.createRange();
131
+ range.selectNodeContents(code);
132
+ const selection = window.getSelection();
133
+ selection.removeAllRanges();
134
+ selection.addRange(range);
135
+ status.textContent = 'Could not copy. Citation text selected.';
136
+ }
137
+ });
static/js/bulma-carousel.min.js ADDED
@@ -0,0 +1 @@
 
 
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bulmaCarousel=e():t.bulmaCarousel=e()}("undefined"!=typeof self?self:this,function(){return function(i){var n={};function s(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return i[t].call(e.exports,e,e.exports,s),e.l=!0,e.exports}return s.m=i,s.c=n,s.d=function(t,e,i){s.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=5)}([function(t,e,i){"use strict";i.d(e,"d",function(){return s}),i.d(e,"e",function(){return r}),i.d(e,"b",function(){return o}),i.d(e,"c",function(){return a}),i.d(e,"a",function(){return l});var n=i(2),s=function(e,t){(t=Array.isArray(t)?t:t.split(" ")).forEach(function(t){e.classList.remove(t)})},r=function(t){return t.getBoundingClientRect().width||t.offsetWidth},o=function(t){return t.getBoundingClientRect().height||t.offsetHeight},a=function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=t.offsetHeight;if(e){var n=window.getComputedStyle(t);i+=parseInt(n.marginTop)+parseInt(n.marginBottom)}return i},l=function(t,e){if(!e)return window.getComputedStyle(t);if(Object(n.b)(e)){var i="";Object.keys(e).forEach(function(t){i+=t+": "+e[t]+";"}),t.style.cssText+=i}}},function(t,e,i){"use strict";e.a=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch(t){}return t}},function(t,e,i){"use strict";i.d(e,"a",function(){return s}),i.d(e,"c",function(){return r}),i.d(e,"b",function(){return o});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=function(t){return"function"==typeof t},r=function(t){return"string"==typeof t||!!t&&"object"===(void 0===t?"undefined":n(t))&&"[object String]"===Object.prototype.toString.call(t)},o=function(t){return("function"==typeof t||"object"===(void 0===t?"undefined":n(t))&&!!t)&&!Array.isArray(t)}},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=function(){function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.events=new Map(t)}return n(e,[{key:"on",value:function(t,e){var i=this;return this.events.set(t,[].concat(function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(this.events.has(t)?this.events.get(t):[]),[e])),function(){return i.events.set(t,i.events.get(t).filter(function(t){return t!==e}))}}},{key:"emit",value:function(t){for(var e=arguments.length,i=Array(1<e?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return this.events.has(t)&&this.events.get(t).map(function(t){return t.apply(void 0,i)})}}]),e}();e.a=s},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=function(){function s(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),this._x=t,this._y=e}return n(s,[{key:"add",value:function(t){return new s(this._x+t._x,this._y+t._y)}},{key:"sub",value:function(t){return new s(this._x-t._x,this._y-t._y)}},{key:"distance",value:function(t){var e=this._x-t._x,i=this._y-t._y;return Math.sqrt(Math.pow(e,2)+Math.pow(i,2))}},{key:"max",value:function(t){return new s(Math.max(this._x,t._x),Math.max(this._y,t._y))}},{key:"equals",value:function(t){return this==t||!(!t||null==t)&&(this._x==t._x&&this._y==t._y)}},{key:"inside",value:function(t,e){return this._x>=t._x&&this._x<=e._x&&this._y>=t._y&&this._y<=e._y}},{key:"constrain",value:function(t,e){if(t._x>e._x||t._y>e._y)return this;var i=this._x,n=this._y;return null!==t._x&&(i=Math.max(i,t._x)),null!==e._x&&(i=Math.min(i,e._x)),null!==t._y&&(n=Math.max(n,t._y)),null!==e._y&&(n=Math.min(n,e._y)),new s(i,n)}},{key:"reposition",value:function(t){t.style.top=this._y+"px",t.style.left=this._x+"px"}},{key:"toString",value:function(){return"("+this._x+","+this._y+")"}},{key:"x",get:function(){return this._x},set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;return this._x=t,this}},{key:"y",get:function(){return this._y},set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;return this._y=t,this}}]),s}();e.a=s},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(6),s=i(0),a=i(2),r=i(3),l=i(7),h=i(9),u=i(10),d=i(11),c=i(13),f=i(15),p=i(18),v=i(19),y=i(22),_=i(23),g=i(24),b=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},w=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(t){function o(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));if(r.element=Object(a.c)(t)?document.querySelector(t):t,!r.element)throw new Error("An invalid selector or non-DOM node has been provided.");r._clickEvents=["click","touch"];var i=r.element.dataset?Object.keys(r.element.dataset).filter(function(t){return Object.keys(y.a).includes(t)}).reduce(function(t,e){return b({},t,(i={},n=e,s=r.element.dataset[e],n in i?Object.defineProperty(i,n,{value:s,enumerable:!0,configurable:!0,writable:!0}):i[n]=s,i));var i,n,s},{}):{};return r.options=b({},y.a,e,i),r._id=Object(n.a)("slider"),r.onShow=r.onShow.bind(r),r._init(),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,r["a"]),w(o,[{key:"_init",value:function(){return this._items=Array.from(this.element.children),this._breakpoint=new h.a(this),this._autoplay=new l.a(this),this._navigation=new c.a(this),this._pagination=new f.a(this),this._infinite=new u.a(this),this._loop=new d.a(this),this._swipe=new p.a(this),this._build(),Object(a.a)(this.options.onReady)&&this.options.onReady(this),this}},{key:"_build",value:function(){var i=this;this.node=document.createRange().createContextualFragment(Object(_.a)(this.id)),this._ui={wrapper:this.node.firstChild,container:this.node.querySelector(".slider-container")},this.element.appendChild(this.node),this._ui.wrapper.classList.add("is-loading"),this._ui.container.style.opacity=0,this._transitioner=new v.a(this),this._slides=this._items.map(function(t,e){return i._createSlide(t,e)}),this.reset(),this._bindEvents(),this._ui.container.style.opacity=1,this._ui.wrapper.classList.remove("is-loading")}},{key:"_bindEvents",value:function(){this.on("show",this.onShow)}},{key:"_unbindEvents",value:function(){this.off("show",this.onShow)}},{key:"_createSlide",value:function(t,e){var i=document.createRange().createContextualFragment(Object(g.a)()).firstChild;return i.dataset.sliderIndex=e,i.appendChild(t),i}},{key:"_setDimensions",value:function(){var e=this;this.options.vertical?(this._ui.wrapper.style.height=Object(s.c)(this._slides[0])*this.slidesToShow,this.options.centerMode&&(this._ui.wrapper.style.padding=this.options.centerPadding+" 0px")):this.options.centerMode&&(this._ui.wrapper.style.padding="0px "+this.options.centerPadding),this._wrapperWidth=Object(s.e)(this._ui.wrapper),this._wrapperHeight=Object(s.c)(this._ui.wrapper),this.options.vertical?(this._slideWidth=Math.ceil(this._wrapperWidth),this._containerHeight=Math.ceil(Object(s.c)(this._slides[0])*this._slides.length),this._ui.container.style.height=this._containerHeight+"px"):(this._slideWidth=Math.ceil(this._wrapperWidth/this.slidesToShow),this._containerWidth=Math.ceil(this._slideWidth*this._slides.length),this._ui.container.style.width=this._containerWidth+"px"),this._slides.forEach(function(t){t.style.width=e._slideWidth+"px"})}},{key:"_setHeight",value:function(){"translate"!==this.options.effect&&(this._ui.container.style.height=Object(s.c)(this._slides[this.state.index])+"px")}},{key:"_setClasses",value:function(){var e=this;this._slides.forEach(function(t){Object(s.d)(t,"is-active is-current is-slide-previous is-slide-next"),Math.abs((e.state.index-1)%e.state.length)===parseInt(t.dataset.sliderIndex,10)&&t.classList.add("is-slide-previous"),Math.abs(e.state.index%e.state.length)===parseInt(t.dataset.sliderIndex,10)&&t.classList.add("is-current"),Math.abs((e.state.index+1)%e.state.length)===parseInt(t.dataset.sliderIndex,10)&&t.classList.add("is-slide-next")})}},{key:"onShow",value:function(t){this._navigation.refresh(),this._pagination.refresh(),this._setClasses()}},{key:"next",value:function(){!this.options.loop&&!this.options.infinite&&this.state.index+this.slidesToScroll>this.state.length-this.slidesToShow&&!this.options.centerMode?this.state.next=this.state.index:this.state.next=this.state.index+this.slidesToScroll,this.show()}},{key:"previous",value:function(){this.options.loop||this.options.infinite||0!==this.state.index?this.state.next=this.state.index-this.slidesToScroll:this.state.next=this.state.index,this.show()}},{key:"start",value:function(){this._autoplay.start()}},{key:"pause",value:function(){this._autoplay.pause()}},{key:"stop",value:function(){this._autoplay.stop()}},{key:"show",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1];!this.state.length||this.state.length<=this.slidesToShow||("Number"==typeof t&&(this.state.next=t),this.options.loop&&this._loop.apply(),this.options.infinite&&this._infinite.apply(),this.state.index!==this.state.next&&(this.emit("before:show",this.state),this._transitioner.apply(e,this._setHeight.bind(this)),this.emit("after:show",this.state),this.emit("show",this)))}},{key:"reset",value:function(){var e=this;this.state={length:this._items.length,index:Math.abs(this.options.initialSlide),next:Math.abs(this.options.initialSlide),prev:void 0},this.options.loop&&this.options.infinite&&(this.options.loop=!1),this.options.slidesToScroll>this.options.slidesToShow&&(this.options.slidesToScroll=this.slidesToShow),this._breakpoint.init(),this.state.index>=this.state.length&&0!==this.state.index&&(this.state.index=this.state.index-this.slidesToScroll),this.state.length<=this.slidesToShow&&(this.state.index=0),this._ui.wrapper.appendChild(this._navigation.init().render()),this._ui.wrapper.appendChild(this._pagination.init().render()),this.options.navigationSwipe?this._swipe.bindEvents():this._swipe._bindEvents(),this._breakpoint.apply(),this._slides.forEach(function(t){return e._ui.container.appendChild(t)}),this._transitioner.init().apply(!0,this._setHeight.bind(this)),this.options.autoplay&&this._autoplay.init().start()}},{key:"destroy",value:function(){var e=this;this._unbindEvents(),this._items.forEach(function(t){e.element.appendChild(t)}),this.node.remove()}},{key:"id",get:function(){return this._id}},{key:"index",set:function(t){this._index=t},get:function(){return this._index}},{key:"length",set:function(t){this._length=t},get:function(){return this._length}},{key:"slides",get:function(){return this._slides},set:function(t){this._slides=t}},{key:"slidesToScroll",get:function(){return"translate"===this.options.effect?this._breakpoint.getSlidesToScroll():1}},{key:"slidesToShow",get:function(){return"translate"===this.options.effect?this._breakpoint.getSlidesToShow():1}},{key:"direction",get:function(){return"rtl"===this.element.dir.toLowerCase()||"rtl"===this.element.style.direction?"rtl":"ltr"}},{key:"wrapper",get:function(){return this._ui.wrapper}},{key:"wrapperWidth",get:function(){return this._wrapperWidth||0}},{key:"container",get:function(){return this._ui.container}},{key:"containerWidth",get:function(){return this._containerWidth||0}},{key:"slideWidth",get:function(){return this._slideWidth||0}},{key:"transitioner",get:function(){return this._transitioner}}],[{key:"attach",value:function(){var i=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:".slider",n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=new Array,e=Object(a.c)(t)?document.querySelectorAll(t):Array.isArray(t)?t:[t];return[].forEach.call(e,function(t){if(void 0===t[i.constructor.name]){var e=new o(t,n);t[i.constructor.name]=e,s.push(e)}else s.push(t[i.constructor.name])}),s}}]),o}();e.default=o},function(t,e,i){"use strict";i.d(e,"a",function(){return n});var n=function(){return(0<arguments.length&&void 0!==arguments[0]?arguments[0]:"")+([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)})}},function(t,e,i){"use strict";var n=i(3),s=i(8),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();Symbol("onVisibilityChange"),Symbol("onMouseEnter"),Symbol("onMouseLeave");var o=function(t){function i(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i);var e=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(i.__proto__||Object.getPrototypeOf(i)).call(this));return e.slider=t,e.onVisibilityChange=e.onVisibilityChange.bind(e),e.onMouseEnter=e.onMouseEnter.bind(e),e.onMouseLeave=e.onMouseLeave.bind(e),e}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(i,n["a"]),r(i,[{key:"init",value:function(){return this._bindEvents(),this}},{key:"_bindEvents",value:function(){document.addEventListener("visibilitychange",this.onVisibilityChange),this.slider.options.pauseOnHover&&(this.slider.container.addEventListener(s.a,this.onMouseEnter),this.slider.container.addEventListener(s.b,this.onMouseLeave))}},{key:"_unbindEvents",value:function(){document.removeEventListener("visibilitychange",this.onVisibilityChange),this.slider.container.removeEventListener(s.a,this.onMouseEnter),this.slider.container.removeEventListener(s.b,this.onMouseLeave)}},{key:"start",value:function(){var t=this;this.stop(),this.slider.options.autoplay&&(this.emit("start",this),this._interval=setInterval(function(){t._hovering&&t.slider.options.pauseOnHover||(!t.slider.options.centerMode&&t.slider.state.next>=t.slider.state.length-t.slider.slidesToShow&&!t.slider.options.loop&&!t.slider.options.infinite?t.stop():t.slider.next())},this.slider.options.autoplaySpeed))}},{key:"stop",value:function(){this._interval=clearInterval(this._interval),this.emit("stop",this)}},{key:"pause",value:function(){var t=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;this.paused||(this.timer&&this.stop(),this.paused=!0,0===e?(this.paused=!1,this.start()):this.slider.on("transition:end",function(){t&&(t.paused=!1,t.run?t.start():t.stop())}))}},{key:"onVisibilityChange",value:function(t){document.hidden?this.stop():this.start()}},{key:"onMouseEnter",value:function(t){this._hovering=!0,this.slider.options.pauseOnHover&&this.pause()}},{key:"onMouseLeave",value:function(t){this._hovering=!1,this.slider.options.pauseOnHover&&this.pause()}}]),i}();e.a=o},function(t,e,i){"use strict";i.d(e,"a",function(){return o}),i.d(e,"b",function(){return a});window.navigator.pointerEnabled||window.navigator.msPointerEnabled,window.navigator.msPointerEnabled&&1<window.navigator.msMaxTouchPoints||window.navigator.pointerEnabled&&window.navigator.maxTouchPoints,navigator.userAgent.match(/(Android);?[\s\/]+([\d.]+)?/),navigator.userAgent.match(/(iPad).*OS\s([\d_]+)/),navigator.userAgent.match(/(iPod)(.*OS\s([\d_]+))?/),!navigator.userAgent.match(/(iPad).*OS\s([\d_]+)/)&&navigator.userAgent.match(/(iPhone\sOS)\s([\d_]+)/),0<=navigator.userAgent.toLowerCase().indexOf("safari")&&navigator.userAgent.toLowerCase().indexOf("chrome")<0&&navigator.userAgent.toLowerCase().indexOf("android"),/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent);var n=!!("ontouchstart"in window),s=!!("PointerEvent"in window),r=n||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,o=r&&s?"pointerenter":"mouseenter",a=r&&s?"pointerleave":"mouseleave"},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=Symbol("onResize"),r=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this.options=t.options,this[s]=this[s].bind(this),this._bindEvents()}return n(e,[{key:"init",value:function(){return this._defaultBreakpoint={slidesToShow:this.options.slidesToShow,slidesToScroll:this.options.slidesToScroll},this.options.breakpoints.sort(function(t,e){return parseInt(t.changePoint,10)>parseInt(e.changePoint,10)}),this._currentBreakpoint=this._getActiveBreakpoint(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){window.addEventListener("resize",this[s]),window.addEventListener("orientationchange",this[s])}},{key:"_unbindEvents",value:function(){window.removeEventListener("resize",this[s]),window.removeEventListener("orientationchange",this[s])}},{key:"_getActiveBreakpoint",value:function(){var t=!0,e=!1,i=void 0;try{for(var n,s=this.options.breakpoints[Symbol.iterator]();!(t=(n=s.next()).done);t=!0){var r=n.value;if(r.changePoint>=window.innerWidth)return r}}catch(t){e=!0,i=t}finally{try{!t&&s.return&&s.return()}finally{if(e)throw i}}return this._defaultBreakpoint}},{key:"getSlidesToShow",value:function(){return this._currentBreakpoint?this._currentBreakpoint.slidesToShow:this._defaultBreakpoint.slidesToShow}},{key:"getSlidesToScroll",value:function(){return this._currentBreakpoint?this._currentBreakpoint.slidesToScroll:this._defaultBreakpoint.slidesToScroll}},{key:"apply",value:function(){this.slider.state.index>=this.slider.state.length&&0!==this.slider.state.index&&(this.slider.state.index=this.slider.state.index-this._currentBreakpoint.slidesToScroll),this.slider.state.length<=this._currentBreakpoint.slidesToShow&&(this.slider.state.index=0),this.options.loop&&this.slider._loop.init().apply(),this.options.infinite&&this.slider._infinite.init().apply(),this.slider._setDimensions(),this.slider._transitioner.init().apply(!0,this.slider._setHeight.bind(this.slider)),this.slider._setClasses(),this.slider._navigation.refresh(),this.slider._pagination.refresh()}},{key:s,value:function(t){var e=this._getActiveBreakpoint();e.slidesToShow!==this._currentBreakpoint.slidesToShow&&(this._currentBreakpoint=e,this.apply())}}]),e}();e.a=r},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t}return n(e,[{key:"init",value:function(){if(this.slider.options.infinite&&"translate"===this.slider.options.effect){this.slider.options.centerMode?this._infiniteCount=Math.ceil(this.slider.slidesToShow+this.slider.slidesToShow/2):this._infiniteCount=this.slider.slidesToShow;for(var t=[],e=0,i=this.slider.state.length;i>this.slider.state.length-1-this._infiniteCount;i-=1)e=i-1,t.unshift(this._cloneSlide(this.slider.slides[e],e-this.slider.state.length));for(var n=[],s=0;s<this._infiniteCount+this.slider.state.length;s+=1)n.push(this._cloneSlide(this.slider.slides[s%this.slider.state.length],s+this.slider.state.length));this.slider.slides=[].concat(t,function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(this.slider.slides),n)}return this}},{key:"apply",value:function(){}},{key:"onTransitionEnd",value:function(t){this.slider.options.infinite&&(this.slider.state.next>=this.slider.state.length?(this.slider.state.index=this.slider.state.next=this.slider.state.next-this.slider.state.length,this.slider.transitioner.apply(!0)):this.slider.state.next<0&&(this.slider.state.index=this.slider.state.next=this.slider.state.length+this.slider.state.next,this.slider.transitioner.apply(!0)))}},{key:"_cloneSlide",value:function(t,e){var i=t.cloneNode(!0);return i.dataset.sliderIndex=e,i.dataset.cloned=!0,(i.querySelectorAll("[id]")||[]).forEach(function(t){t.setAttribute("id","")}),i}}]),e}();e.a=s},function(t,e,i){"use strict";var n=i(12),s=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var r=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t}return s(e,[{key:"init",value:function(){return this}},{key:"apply",value:function(){this.slider.options.loop&&(0<this.slider.state.next?this.slider.state.next<this.slider.state.length?this.slider.state.next>this.slider.state.length-this.slider.slidesToShow&&Object(n.a)(this.slider._slides[this.slider.state.length-1],this.slider.wrapper)?this.slider.state.next=0:this.slider.state.next=Math.min(Math.max(this.slider.state.next,0),this.slider.state.length-this.slider.slidesToShow):this.slider.state.next=0:this.slider.state.next<=0-this.slider.slidesToScroll?this.slider.state.next=this.slider.state.length-this.slider.slidesToShow:this.slider.state.next=0)}}]),e}();e.a=r},function(t,e,i){"use strict";i.d(e,"a",function(){return n});var n=function(t,e){var i=t.getBoundingClientRect();return e=e||document.documentElement,0<=i.top&&0<=i.left&&i.bottom<=(window.innerHeight||e.clientHeight)&&i.right<=(window.innerWidth||e.clientWidth)}},function(t,e,i){"use strict";var n=i(14),s=i(1),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this._clickEvents=["click","touch"],this._supportsPassive=Object(s.a)(),this.onPreviousClick=this.onPreviousClick.bind(this),this.onNextClick=this.onNextClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this)}return r(e,[{key:"init",value:function(){return this.node=document.createRange().createContextualFragment(Object(n.a)(this.slider.options.icons)),this._ui={previous:this.node.querySelector(".slider-navigation-previous"),next:this.node.querySelector(".slider-navigation-next")},this._unbindEvents(),this._bindEvents(),this.refresh(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){var e=this;this.slider.wrapper.addEventListener("keyup",this.onKeyUp),this._clickEvents.forEach(function(t){e._ui.previous.addEventListener(t,e.onPreviousClick),e._ui.next.addEventListener(t,e.onNextClick)})}},{key:"_unbindEvents",value:function(){var e=this;this.slider.wrapper.removeEventListener("keyup",this.onKeyUp),this._clickEvents.forEach(function(t){e._ui.previous.removeEventListener(t,e.onPreviousClick),e._ui.next.removeEventListener(t,e.onNextClick)})}},{key:"onNextClick",value:function(t){this._supportsPassive||t.preventDefault(),this.slider.options.navigation&&this.slider.next()}},{key:"onPreviousClick",value:function(t){this._supportsPassive||t.preventDefault(),this.slider.options.navigation&&this.slider.previous()}},{key:"onKeyUp",value:function(t){this.slider.options.keyNavigation&&("ArrowRight"===t.key||"Right"===t.key?this.slider.next():"ArrowLeft"!==t.key&&"Left"!==t.key||this.slider.previous())}},{key:"refresh",value:function(){this.slider.options.loop||this.slider.options.infinite||(this.slider.options.navigation&&this.slider.state.length>this.slider.slidesToShow?(this._ui.previous.classList.remove("is-hidden"),this._ui.next.classList.remove("is-hidden"),0===this.slider.state.next?(this._ui.previous.classList.add("is-hidden"),this._ui.next.classList.remove("is-hidden")):this.slider.state.next>=this.slider.state.length-this.slider.slidesToShow&&!this.slider.options.centerMode?(this._ui.previous.classList.remove("is-hidden"),this._ui.next.classList.add("is-hidden")):this.slider.state.next>=this.slider.state.length-1&&this.slider.options.centerMode&&(this._ui.previous.classList.remove("is-hidden"),this._ui.next.classList.add("is-hidden"))):(this._ui.previous.classList.add("is-hidden"),this._ui.next.classList.add("is-hidden")))}},{key:"render",value:function(){return this.node}}]),e}();e.a=o},function(t,e,i){"use strict";e.a=function(t){return'<div class="slider-navigation-previous">'+t.previous+'</div>\n<div class="slider-navigation-next">'+t.next+"</div>"}},function(t,e,i){"use strict";var n=i(16),s=i(17),r=i(1),o=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var a=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this._clickEvents=["click","touch"],this._supportsPassive=Object(r.a)(),this.onPageClick=this.onPageClick.bind(this),this.onResize=this.onResize.bind(this)}return o(e,[{key:"init",value:function(){return this._pages=[],this.node=document.createRange().createContextualFragment(Object(n.a)()),this._ui={container:this.node.firstChild},this._count=Math.ceil((this.slider.state.length-this.slider.slidesToShow)/this.slider.slidesToScroll),this._draw(),this.refresh(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){var i=this;window.addEventListener("resize",this.onResize),window.addEventListener("orientationchange",this.onResize),this._clickEvents.forEach(function(e){i._pages.forEach(function(t){return t.addEventListener(e,i.onPageClick)})})}},{key:"_unbindEvents",value:function(){var i=this;window.removeEventListener("resize",this.onResize),window.removeEventListener("orientationchange",this.onResize),this._clickEvents.forEach(function(e){i._pages.forEach(function(t){return t.removeEventListener(e,i.onPageClick)})})}},{key:"_draw",value:function(){if(this._ui.container.innerHTML="",this.slider.options.pagination&&this.slider.state.length>this.slider.slidesToShow){for(var t=0;t<=this._count;t++){var e=document.createRange().createContextualFragment(Object(s.a)()).firstChild;e.dataset.index=t*this.slider.slidesToScroll,this._pages.push(e),this._ui.container.appendChild(e)}this._bindEvents()}}},{key:"onPageClick",value:function(t){this._supportsPassive||t.preventDefault(),this.slider.state.next=t.currentTarget.dataset.index,this.slider.show()}},{key:"onResize",value:function(){this._draw()}},{key:"refresh",value:function(){var e=this,t=void 0;(t=this.slider.options.infinite?Math.ceil(this.slider.state.length-1/this.slider.slidesToScroll):Math.ceil((this.slider.state.length-this.slider.slidesToShow)/this.slider.slidesToScroll))!==this._count&&(this._count=t,this._draw()),this._pages.forEach(function(t){t.classList.remove("is-active"),parseInt(t.dataset.index,10)===e.slider.state.next%e.slider.state.length&&t.classList.add("is-active")})}},{key:"render",value:function(){return this.node}}]),e}();e.a=a},function(t,e,i){"use strict";e.a=function(){return'<div class="slider-pagination"></div>'}},function(t,e,i){"use strict";e.a=function(){return'<div class="slider-page"></div>'}},function(t,e,i){"use strict";var n=i(4),s=i(1),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this._supportsPassive=Object(s.a)(),this.onStartDrag=this.onStartDrag.bind(this),this.onMoveDrag=this.onMoveDrag.bind(this),this.onStopDrag=this.onStopDrag.bind(this),this._init()}return r(e,[{key:"_init",value:function(){}},{key:"bindEvents",value:function(){var e=this;this.slider.container.addEventListener("dragstart",function(t){e._supportsPassive||t.preventDefault()}),this.slider.container.addEventListener("mousedown",this.onStartDrag),this.slider.container.addEventListener("touchstart",this.onStartDrag),window.addEventListener("mousemove",this.onMoveDrag),window.addEventListener("touchmove",this.onMoveDrag),window.addEventListener("mouseup",this.onStopDrag),window.addEventListener("touchend",this.onStopDrag),window.addEventListener("touchcancel",this.onStopDrag)}},{key:"unbindEvents",value:function(){var e=this;this.slider.container.removeEventListener("dragstart",function(t){e._supportsPassive||t.preventDefault()}),this.slider.container.removeEventListener("mousedown",this.onStartDrag),this.slider.container.removeEventListener("touchstart",this.onStartDrag),window.removeEventListener("mousemove",this.onMoveDrag),window.removeEventListener("touchmove",this.onMoveDrag),window.removeEventListener("mouseup",this.onStopDrag),window.removeEventListener("mouseup",this.onStopDrag),window.removeEventListener("touchcancel",this.onStopDrag)}},{key:"onStartDrag",value:function(t){if(t.touches){if(1<t.touches.length)return;t=t.touches[0]}this._origin=new n.a(t.screenX,t.screenY),this.width=this.slider.wrapperWidth,this.slider.transitioner.disable()}},{key:"onMoveDrag",value:function(t){if(this._origin){var e=t.touches?t.touches[0]:t;this._lastTranslate=new n.a(e.screenX-this._origin.x,e.screenY-this._origin.y),t.touches&&Math.abs(this._lastTranslate.x)>Math.abs(this._lastTranslate.y)&&(this._supportsPassive||t.preventDefault(),t.stopPropagation())}}},{key:"onStopDrag",value:function(t){this._origin&&this._lastTranslate&&(Math.abs(this._lastTranslate.x)>.2*this.width?this._lastTranslate.x<0?this.slider.next():this.slider.previous():this.slider.show(!0)),this._origin=null,this._lastTranslate=null}}]),e}();e.a=o},function(t,e,i){"use strict";var n=i(20),s=i(21),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this.options=t.options,this._animating=!1,this._animation=void 0,this._translate=new s.a(this,t,t.options),this._fade=new n.a(this,t,t.options)}return r(e,[{key:"init",value:function(){return this._fade.init(),this._translate.init(),this}},{key:"isAnimating",value:function(){return this._animating}},{key:"enable",value:function(){this._animation&&this._animation.enable()}},{key:"disable",value:function(){this._animation&&this._animation.disable()}},{key:"apply",value:function(t,e){if(!this._animating||t){switch(this.options.effect){case"fade":this._animation=this._fade;break;case"translate":default:this._animation=this._translate}this._animationCallback=e,t?this._animation&&this._animation.disable():(this._animation&&this._animation.enable(),this._animating=!0),this._animation&&this._animation.apply(),t&&this.end()}}},{key:"end",value:function(){this._animating=!1,this._animation=void 0,this.slider.state.index=this.slider.state.next,this._animationCallback&&this._animationCallback()}}]),e}();e.a=o},function(t,e,i){"use strict";var s=i(0),r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},o=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var n=function(){function n(t,e){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),this.transitioner=t,this.slider=e,this.options=r({},i)}return o(n,[{key:"init",value:function(){var i=this;return"fade"===this.options.effect&&this.slider.slides.forEach(function(t,e){Object(s.a)(t,{position:"absolute",left:0,top:0,bottom:0,"z-index":t.dataset.sliderIndex==i.slider.state.index?0:-2,opacity:t.dataset.sliderIndex==i.slider.state.index?1:0})}),this}},{key:"enable",value:function(){var e=this;this._oldSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.index})[0],this._newSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],this._newSlide&&(this._newSlide.addEventListener("transitionend",this.onTransitionEnd.bind(this)),this._newSlide.style.transition=this.options.duration+"ms "+this.options.timing,this._oldSlide&&(this._oldSlide.addEventListener("transitionend",this.onTransitionEnd.bind(this)),this._oldSlide.style.transition=this.options.duration+"ms "+this.options.timing))}},{key:"disable",value:function(){var e=this;this._oldSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.index})[0],this._newSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],this._newSlide&&(this._newSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this)),this._newSlide.style.transition="none",this._oldSlide&&(this._oldSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this)),this._oldSlide.style.transition="none"))}},{key:"apply",value:function(t){var e=this;this._oldSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.index})[0],this._newSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],this._oldSlide&&this._newSlide&&(Object(s.a)(this._oldSlide,{opacity:0}),Object(s.a)(this._newSlide,{opacity:1,"z-index":t?0:-1}))}},{key:"onTransitionEnd",value:function(t){"fade"===this.options.effect&&(this.transitioner.isAnimating()&&t.target==this._newSlide&&(this._newSlide&&(Object(s.a)(this._newSlide,{"z-index":0}),this._newSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this))),this._oldSlide&&(Object(s.a)(this._oldSlide,{"z-index":-2}),this._oldSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this)))),this.transitioner.end())}}]),n}();e.a=n},function(t,e,i){"use strict";var r=i(4),o=i(0),s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},a=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var n=function(){function n(t,e){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),this.transitioner=t,this.slider=e,this.options=s({},i),this.onTransitionEnd=this.onTransitionEnd.bind(this)}return a(n,[{key:"init",value:function(){return this._position=new r.a(this.slider.container.offsetLeft,this.slider.container.offsetTop),this._bindEvents(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){this.slider.container.addEventListener("transitionend",this.onTransitionEnd)}},{key:"_unbindEvents",value:function(){this.slider.container.removeEventListener("transitionend",this.onTransitionEnd)}},{key:"enable",value:function(){this.slider.container.style.transition=this.options.duration+"ms "+this.options.timing}},{key:"disable",value:function(){this.slider.container.style.transition="none"}},{key:"apply",value:function(){var e=this,t=void 0;if("translate"===this.options.effect){var i=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],n=new r.a(i.offsetLeft,i.offsetTop);t=this.options.centerMode?new r.a(Math.round(Object(o.e)(this.slider.container)),Math.round(Object(o.b)(this.slider.container))):new r.a(Math.round(Object(o.e)(this.slider.container)-Object(o.e)(this.slider.wrapper)),Math.round(Object(o.b)(this.slider.container)-Object(o.b)(this.slider.wrapper)));var s=new r.a(Math.min(Math.max(-1*n.x,-1*t.x),0),Math.min(Math.max(-1*n.y,-1*t.y),0));this.options.loop&&(!this.options.vertical&&Math.abs(this._position.x)>t.x?(s.x=0,this.slider.state.next=0):this.options.vertical&&Math.abs(this._position.y)>t.y&&(s.y=0,this.slider.state.next=0)),this._position.x=s.x,this._position.y=s.y,this.options.centerMode&&(this._position.x=this._position.x+this.slider.wrapperWidth/2-Object(o.e)(i)/2),"rtl"===this.slider.direction&&(this._position.x=-this._position.x,this._position.y=-this._position.y),this.slider.container.style.transform="translate3d("+this._position.x+"px, "+this._position.y+"px, 0)",n.x>t.x&&this.slider.transitioner.end()}}},{key:"onTransitionEnd",value:function(t){"translate"===this.options.effect&&(this.transitioner.isAnimating()&&t.target==this.slider.container&&this.options.infinite&&this.slider._infinite.onTransitionEnd(t),this.transitioner.end())}}]),n}();e.a=n},function(t,e,i){"use strict";e.a={initialSlide:0,slidesToScroll:1,slidesToShow:1,navigation:!0,navigationKeys:!0,navigationSwipe:!0,pagination:!0,loop:!1,infinite:!1,effect:"translate",duration:300,timing:"ease",autoplay:!1,autoplaySpeed:3e3,pauseOnHover:!0,breakpoints:[{changePoint:480,slidesToShow:1,slidesToScroll:1},{changePoint:640,slidesToShow:2,slidesToScroll:2},{changePoint:768,slidesToShow:3,slidesToScroll:3}],onReady:null,icons:{previous:'<svg viewBox="0 0 50 80" xml:space="preserve">\n <polyline fill="currentColor" stroke-width=".5em" stroke-linecap="round" stroke-linejoin="round" points="45.63,75.8 0.375,38.087 45.63,0.375 "/>\n </svg>',next:'<svg viewBox="0 0 50 80" xml:space="preserve">\n <polyline fill="currentColor" stroke-width=".5em" stroke-linecap="round" stroke-linejoin="round" points="0.375,0.375 45.63,38.087 0.375,75.8 "/>\n </svg>'}}},function(t,e,i){"use strict";e.a=function(t){return'<div id="'+t+'" class="slider" tabindex="0">\n <div class="slider-container"></div>\n </div>'}},function(t,e,i){"use strict";e.a=function(){return'<div class="slider-item"></div>'}}]).default});
static/js/bulma-slider.min.js ADDED
@@ -0,0 +1 @@
 
 
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bulmaSlider=e():t.bulmaSlider=e()}("undefined"!=typeof self?self:this,function(){return function(n){var r={};function i(t){if(r[t])return r[t].exports;var e=r[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}return i.m=n,i.c=r,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"isString",function(){return l});var r=n(1),i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},u=function(){function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}}(),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};var l=function(t){return"string"==typeof t||!!t&&"object"===(void 0===t?"undefined":o(t))&&"[object String]"===Object.prototype.toString.call(t)},a=function(t){function o(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));if(n.element="string"==typeof t?document.querySelector(t):t,!n.element)throw new Error("An invalid selector or non-DOM node has been provided.");return n._clickEvents=["click"],n.options=i({},e),n.onSliderInput=n.onSliderInput.bind(n),n.init(),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,r["a"]),u(o,[{key:"init",value:function(){if(this._id="bulmaSlider"+(new Date).getTime()+Math.floor(Math.random()*Math.floor(9999)),this.output=this._findOutputForSlider(),this._bindEvents(),this.output&&this.element.classList.contains("has-output-tooltip")){var t=this._getSliderOutputPosition();this.output.style.left=t.position}this.emit("bulmaslider:ready",this.element.value)}},{key:"_findOutputForSlider",value:function(){var e=this,n=null,t=document.getElementsByTagName("output")||[];return Array.from(t).forEach(function(t){if(t.htmlFor==e.element.getAttribute("id"))return n=t,!0}),n}},{key:"_getSliderOutputPosition",value:function(){var t,e=window.getComputedStyle(this.element,null),n=parseInt(e.getPropertyValue("width"),10);t=this.element.getAttribute("min")?this.element.getAttribute("min"):0;var r=(this.element.value-t)/(this.element.getAttribute("max")-t);return{position:(r<0?0:1<r?n:n*r)+"px"}}},{key:"_bindEvents",value:function(){this.output&&this.element.addEventListener("input",this.onSliderInput,!1)}},{key:"onSliderInput",value:function(t){if(t.preventDefault(),this.element.classList.contains("has-output-tooltip")){var e=this._getSliderOutputPosition();this.output.style.left=e.position}var n=this.output.hasAttribute("data-prefix")?this.output.getAttribute("data-prefix"):"",r=this.output.hasAttribute("data-postfix")?this.output.getAttribute("data-postfix"):"";this.output.value=n+this.element.value+r,this.emit("bulmaslider:ready",this.element.value)}}],[{key:"attach",value:function(){var n=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:'input[type="range"].slider',r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=new Array;return(l(t)?document.querySelectorAll(t):Array.isArray(t)?t:[t]).forEach(function(t){if(void 0===t[n.constructor.name]){var e=new o(t,r);t[n.constructor.name]=e,i.push(e)}else i.push(t[n.constructor.name])}),i}}]),o}();e.default=a},function(t,e,n){"use strict";var r=function(){function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}}();var i=function(){function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this._listeners=new Map(t),this._middlewares=new Map}return r(e,[{key:"listenerCount",value:function(t){return this._listeners.has(t)?this._listeners.get(t).length:0}},{key:"removeListeners",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,n=1<arguments.length&&void 0!==arguments[1]&&arguments[1];null!==t?Array.isArray(t)?name.forEach(function(t){return e.removeListeners(t,n)}):(this._listeners.delete(t),n&&this.removeMiddleware(t)):this._listeners=new Map}},{key:"middleware",value:function(t,e){var n=this;Array.isArray(t)?name.forEach(function(t){return n.middleware(t,e)}):(Array.isArray(this._middlewares.get(t))||this._middlewares.set(t,[]),this._middlewares.get(t).push(e))}},{key:"removeMiddleware",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;null!==t?Array.isArray(t)?name.forEach(function(t){return e.removeMiddleware(t)}):this._middlewares.delete(t):this._middlewares=new Map}},{key:"on",value:function(t,e){var n=this,r=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if(Array.isArray(t))t.forEach(function(t){return n.on(t,e)});else{var i=(t=t.toString()).split(/,|, | /);1<i.length?i.forEach(function(t){return n.on(t,e)}):(Array.isArray(this._listeners.get(t))||this._listeners.set(t,[]),this._listeners.get(t).push({once:r,callback:e}))}}},{key:"once",value:function(t,e){this.on(t,e,!0)}},{key:"emit",value:function(n,r){var i=this,o=2<arguments.length&&void 0!==arguments[2]&&arguments[2];n=n.toString();var u=this._listeners.get(n),l=null,a=0,s=o;if(Array.isArray(u))for(u.forEach(function(t,e){o||(l=i._middlewares.get(n),Array.isArray(l)?(l.forEach(function(t){t(r,function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;null!==t&&(r=t),a++},n)}),a>=l.length&&(s=!0)):s=!0),s&&(t.once&&(u[e]=null),t.callback(r))});-1!==u.indexOf(null);)u.splice(u.indexOf(null),1)}}]),e}();e.a=i}]).default});
static/js/fontawesome.all.min.js ADDED
The diff for this file is too large to render. See raw diff
 
static/js/index.js ADDED
@@ -0,0 +1,380 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.HELP_IMPROVE_VIDEOJS = false;
2
+
3
+ var POSTER_CACHE_VERSION = '20260903_case085_poster';
4
+
5
+ // #region debug-point shared:reporter
6
+ function reportVideoSeekDebug(hypothesisId, location, msg, data) {
7
+ fetch('http://10.37.198.211:7777/event', { method: 'POST', body: JSON.stringify({ sessionId: 'video-seek-failure', runId: 'post-fix', hypothesisId: hypothesisId, location: location, msg: '[DEBUG] ' + msg, data: data, ts: Date.now() }) }).catch(function() {});
8
+ }
9
+ // #endregion
10
+ var INTERP_BASE = "./static/interpolation/stacked";
11
+ var NUM_INTERP_FRAMES = 240;
12
+
13
+ var interp_images = [];
14
+ function preloadInterpolationImages() {
15
+ for (var i = 0; i < NUM_INTERP_FRAMES; i++) {
16
+ var path = INTERP_BASE + '/' + String(i).padStart(6, '0') + '.jpg';
17
+ interp_images[i] = new Image();
18
+ interp_images[i].src = path;
19
+ }
20
+ }
21
+
22
+ function setInterpolationImage(i) {
23
+ var image = interp_images[i];
24
+ image.ondragstart = function() { return false; };
25
+ image.oncontextmenu = function() { return false; };
26
+ var wrapper = document.getElementById('interpolation-image-wrapper');
27
+ if (wrapper) {
28
+ wrapper.textContent = '';
29
+ wrapper.appendChild(image);
30
+ }
31
+ }
32
+
33
+ function onReady(callback) {
34
+ if (document.readyState === 'loading') {
35
+ document.addEventListener('DOMContentLoaded', callback);
36
+ } else {
37
+ callback();
38
+ }
39
+ }
40
+
41
+ function hydrateVideo(video) {
42
+ if (video.dataset.loaded === 'true') {
43
+ return;
44
+ }
45
+
46
+ var sources = video.querySelectorAll('source[data-src]');
47
+ sources.forEach(function(source) {
48
+ source.src = source.dataset.src;
49
+ });
50
+ video.dataset.loaded = 'true';
51
+ video.classList.remove('video-awaiting-click');
52
+ var shell = video.closest('.video-shell');
53
+ if (shell) {
54
+ shell.classList.add('video-loaded');
55
+ }
56
+ video.load();
57
+
58
+ // #region debug-point A,D:hydrate
59
+ var debugSourceUrl = sources[0] && sources[0].src;
60
+ reportVideoSeekDebug('D', 'static/js/index.js:hydrateVideo', 'Video hydrated', { id: video.id, source: debugSourceUrl, readyState: video.readyState, networkState: video.networkState });
61
+ if (debugSourceUrl) {
62
+ fetch(debugSourceUrl, { headers: { Range: 'bytes=0-1' } }).then(function(response) {
63
+ if (response.body) response.body.cancel().catch(function() {});
64
+ reportVideoSeekDebug('A', 'static/js/index.js:hydrateVideo', 'Video range probe', { id: video.id, source: debugSourceUrl, status: response.status, acceptRanges: response.headers.get('accept-ranges'), contentRange: response.headers.get('content-range'), contentLength: response.headers.get('content-length') });
65
+ }).catch(function(error) { reportVideoSeekDebug('A', 'static/js/index.js:hydrateVideo', 'Video range probe failed', { id: video.id, source: debugSourceUrl, error: String(error) }); });
66
+ }
67
+ // #endregion
68
+ }
69
+
70
+ function playVideo(video) {
71
+ hydrateVideo(video);
72
+ video.muted = false;
73
+ video.volume = 1;
74
+ video.play().catch(function() {});
75
+ }
76
+
77
+ function setupLazyVideos() {
78
+ function posterPathFromVideo(video) {
79
+ var source = video.querySelector('source[data-src]');
80
+ if (!source) {
81
+ return '';
82
+ }
83
+
84
+ return source.dataset.src.replace(/\.mp4$/i, '.jpg') + '?v=' + POSTER_CACHE_VERSION;
85
+ }
86
+
87
+ function observeVideo(video) {
88
+ if (video.__flowactLazyReady === true) {
89
+ return;
90
+ }
91
+
92
+ video.__flowactLazyReady = true;
93
+ video.dataset.lazyReady = 'true';
94
+ video.preload = 'none';
95
+ video.classList.add('video-awaiting-click');
96
+
97
+ var posterPath = posterPathFromVideo(video);
98
+ if (posterPath && !video.getAttribute('poster')) {
99
+ video.setAttribute('poster', posterPath);
100
+ }
101
+
102
+ var shell = video.closest('.comparison-method') || video.closest('.item') || video.parentElement;
103
+ if (shell && !shell.classList.contains('video-shell')) {
104
+ shell.classList.add('video-shell');
105
+ }
106
+
107
+ if (shell && !shell.querySelector('.video-play-overlay')) {
108
+ var playButton = document.createElement('button');
109
+ playButton.type = 'button';
110
+ playButton.className = 'video-play-overlay';
111
+ playButton.setAttribute('aria-label', 'Play video');
112
+ shell.appendChild(playButton);
113
+ }
114
+
115
+ // #region debug-point C:pointer-events
116
+ ['pointerdown', 'pointerup'].forEach(function(eventName) {
117
+ video.addEventListener(eventName, function(event) {
118
+ var rect = video.getBoundingClientRect();
119
+ reportVideoSeekDebug('C', 'static/js/index.js:observeVideo', 'Video pointer event', { id: video.id, event: eventName, xRatio: rect.width ? (event.clientX - rect.left) / rect.width : null, yRatio: rect.height ? (event.clientY - rect.top) / rect.height : null, defaultPrevented: event.defaultPrevented });
120
+ }, true);
121
+ });
122
+ // #endregion
123
+
124
+ // #region debug-point B,D,E:media-state
125
+ ['loadedmetadata', 'progress', 'seeking', 'seeked', 'error'].forEach(function(eventName) {
126
+ video.addEventListener(eventName, function() {
127
+ var ranges = [];
128
+ for (var i = 0; i < video.seekable.length; i++) ranges.push([video.seekable.start(i), video.seekable.end(i)]);
129
+ reportVideoSeekDebug(eventName === 'error' ? 'E' : 'B,D', 'static/js/index.js:observeVideo', 'Video media state', { id: video.id, event: eventName, source: video.currentSrc, duration: video.duration, currentTime: video.currentTime, readyState: video.readyState, networkState: video.networkState, seekable: ranges, errorCode: video.error && video.error.code, h264: video.canPlayType('video/mp4; codecs="avc1.42E01E"'), hevc: video.canPlayType('video/mp4; codecs="hvc1"') });
130
+ });
131
+ });
132
+ // #endregion
133
+ }
134
+
135
+ function currentVideos() {
136
+ return Array.from(document.querySelectorAll('video'));
137
+ }
138
+
139
+ function scanVideos() {
140
+ currentVideos().forEach(function(video) {
141
+ observeVideo(video);
142
+ });
143
+ }
144
+
145
+ document.addEventListener('click', function(event) {
146
+ var playOverlay = event.target.closest && event.target.closest('.video-play-overlay');
147
+ if (playOverlay) {
148
+ event.preventDefault();
149
+ event.stopPropagation();
150
+ var video = playOverlay.closest('.video-shell').querySelector('video');
151
+ playVideo(video);
152
+ }
153
+ }, true);
154
+
155
+ document.addEventListener('play', function(event) {
156
+ if (event.target && event.target.tagName === 'VIDEO') {
157
+ currentVideos().forEach(function(video) {
158
+ if (video !== event.target && !video.paused) {
159
+ video.pause();
160
+ }
161
+ });
162
+ hydrateVideo(event.target);
163
+ }
164
+ }, true);
165
+
166
+ scanVideos();
167
+
168
+ if ('MutationObserver' in window) {
169
+ var mutationObserver = new MutationObserver(scanVideos);
170
+ mutationObserver.observe(document.body, {
171
+ childList: true,
172
+ subtree: true
173
+ });
174
+ }
175
+ }
176
+
177
+ function setupInterpolationImages() {
178
+ if (!document.getElementById('interpolation-slider') || !document.getElementById('interpolation-image-wrapper')) {
179
+ return;
180
+ }
181
+
182
+ preloadInterpolationImages();
183
+
184
+ var interpolationSlider = document.getElementById('interpolation-slider');
185
+ interpolationSlider.addEventListener('input', function() {
186
+ setInterpolationImage(this.value);
187
+ });
188
+ setInterpolationImage(0);
189
+ interpolationSlider.max = NUM_INTERP_FRAMES - 1;
190
+ }
191
+
192
+
193
+ onReady(function() {
194
+ setupLazyVideos();
195
+
196
+ // Check for click events on the navbar burger icon
197
+ document.querySelectorAll('.navbar-burger').forEach(function(burger) {
198
+ burger.addEventListener('click', function() {
199
+ // Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
200
+ document.querySelectorAll('.navbar-burger').forEach(function(item) {
201
+ item.classList.toggle('is-active');
202
+ });
203
+ document.querySelectorAll('.navbar-menu').forEach(function(item) {
204
+ item.classList.toggle('is-active');
205
+ });
206
+
207
+ });
208
+ });
209
+
210
+ // Teaser carousel options (显示2个视频)
211
+ var teaserOptions = {
212
+ slidesToScroll: 1,
213
+ slidesToShow: 2,
214
+ loop: true,
215
+ infinite: true,
216
+ autoplay: false,
217
+ autoplaySpeed: 3000,
218
+ }
219
+
220
+ // Diversity carousel options (显示4个视频)
221
+ var diversityOptions = {
222
+ slidesToScroll: 1,
223
+ slidesToShow: 4,
224
+ loop: true,
225
+ infinite: true,
226
+ autoplay: false,
227
+ autoplaySpeed: 3000,
228
+ }
229
+
230
+ // Pose carousel options (显示3个视频)
231
+ var poseOptions = {
232
+ slidesToScroll: 1,
233
+ slidesToShow: 3,
234
+ loop: true,
235
+ infinite: true,
236
+ autoplay: false,
237
+ autoplaySpeed: 3000,
238
+ }
239
+
240
+ // 所有carousel的通用配置
241
+ var carouselOptions = {
242
+ navigation: true,
243
+ pagination: true,
244
+ loop: true,
245
+ infinite: true,
246
+ autoplay: false,
247
+ autoplaySpeed: 3000,
248
+ }
249
+
250
+ function attachCarousel(selector, options) {
251
+ if (!document.querySelector(selector) || typeof bulmaCarousel === 'undefined') {
252
+ return null;
253
+ }
254
+
255
+ var instances = bulmaCarousel.attach(selector, options);
256
+ instances.forEach(function(instance) {
257
+ if (instance._swipe && typeof instance._swipe.unbindEvents === 'function') {
258
+ instance._swipe.unbindEvents();
259
+ }
260
+
261
+ [
262
+ { element: instance.wrapper.querySelector('.slider-navigation-previous'), label: 'Previous slide' },
263
+ { element: instance.wrapper.querySelector('.slider-navigation-next'), label: 'Next slide' },
264
+ ].forEach(function(control) {
265
+ if (!control.element) {
266
+ return;
267
+ }
268
+ control.element.setAttribute('role', 'button');
269
+ control.element.setAttribute('tabindex', '0');
270
+ control.element.setAttribute('aria-label', control.label);
271
+ control.element.addEventListener('keydown', function(event) {
272
+ if (event.key === 'Enter' || event.key === ' ') {
273
+ event.preventDefault();
274
+ control.element.click();
275
+ }
276
+ });
277
+ });
278
+ });
279
+ return instances;
280
+ }
281
+
282
+ // 不再使用轮播功能,移除teaser轮播的初始化代码
283
+ // var teaserCarousel = bulmaCarousel.attach('#results-carousel', {
284
+ // ...carouselOptions,
285
+ // slidesToShow: 4,
286
+ // slidesToScroll: 1,
287
+ // loop: true
288
+ // });
289
+
290
+ attachCarousel('#video-chatting-carousel', {
291
+ ...carouselOptions,
292
+ slidesToShow: 1,
293
+ slidesToScroll: 1,
294
+ });
295
+
296
+ attachCarousel('#entertainment-carousel', {
297
+ ...carouselOptions,
298
+ slidesToShow: 4,
299
+ slidesToScroll: 1,
300
+ });
301
+
302
+ attachCarousel('#offline-carousel', {
303
+ ...carouselOptions,
304
+ slidesToShow: 4,
305
+ slidesToScroll: 1,
306
+ });
307
+
308
+ attachCarousel('#shopping-carousel', {
309
+ ...carouselOptions,
310
+ slidesToShow: 4,
311
+ slidesToScroll: 1,
312
+ });
313
+
314
+ attachCarousel('#gaming-carousel', {
315
+ ...carouselOptions,
316
+ slidesToShow: 1,
317
+ slidesToScroll: 1,
318
+ });
319
+
320
+ attachCarousel('.comparison-carousel', {
321
+ ...carouselOptions,
322
+ slidesToShow: 2,
323
+ slidesToScroll: 2,
324
+ loop: true,
325
+ infinite: false,
326
+ breakpoints: [
327
+ { changePoint: 480, slidesToShow: 1, slidesToScroll: 1 },
328
+ { changePoint: 640, slidesToShow: 1, slidesToScroll: 1 },
329
+ { changePoint: 768, slidesToShow: 1, slidesToScroll: 1 },
330
+ ],
331
+ });
332
+
333
+ // Keep the comparison videos static; bulmaCarousel empties this block.
334
+ // attachCarousel('#pose-carousel', {
335
+ // ...carouselOptions,
336
+ // slidesToShow: 1,
337
+ // slidesToScroll: 1,
338
+ // });
339
+
340
+ attachCarousel('#portrait-carousel', {
341
+ ...carouselOptions,
342
+ slidesToShow: 1,
343
+ slidesToScroll: 1,
344
+ });
345
+
346
+ // Access to bulmaCarousel instance of an element
347
+ var element = document.querySelector('#my-element');
348
+ if (element && element.bulmaCarousel) {
349
+ // bulmaCarousel instance is available as element.bulmaCarousel
350
+ element.bulmaCarousel.on('before-show', function(state) {
351
+ console.log(state);
352
+ });
353
+ }
354
+
355
+ /*var player = document.getElementById('interpolation-video');
356
+ player.addEventListener('loadedmetadata', function() {
357
+ $('#interpolation-slider').on('input', function(event) {
358
+ console.log(this.value, player.duration);
359
+ player.currentTime = player.duration / 100 * this.value;
360
+ })
361
+ }, false);*/
362
+ setupInterpolationImages();
363
+
364
+ if (typeof bulmaSlider !== 'undefined') {
365
+ bulmaSlider.attach();
366
+ }
367
+
368
+ attachCarousel('#control-carousel', {
369
+ ...carouselOptions,
370
+ slidesToShow: 2,
371
+ slidesToScroll: 1,
372
+ });
373
+
374
+ attachCarousel('#interaction-carousel', {
375
+ ...carouselOptions,
376
+ slidesToShow: 2,
377
+ slidesToScroll: 1,
378
+ });
379
+
380
+ })
static/webfonts/fa-brands-400.woff2 ADDED
Binary file (78.5 kB). View file
 
static/webfonts/fa-regular-400.woff2 ADDED
Binary file (13.5 kB). View file
 
static/webfonts/fa-solid-900.woff2 ADDED
Binary file (80.3 kB). View file