Skip to content

Commit 940f68c

Browse files
committed
fix: graph editor now auto-removes invalid edges rather than failing to render, also fixed ragdoll popup
1 parent e85e3da commit 940f68c

13 files changed

Lines changed: 173 additions & 134 deletions

File tree

assets/animation_graphs/blend_parameters.animgraph.ron

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
inner: {
1515
"bevy_animation_graph::builtin_nodes::SubF32": (),
1616
},
17-
should_debug: true,
17+
should_debug: false,
1818
),
1919
(
2020
id: "36ac78ef-ca35-4f62-9917-2b166dbc4a6c",
@@ -84,8 +84,8 @@
8484
NodeData("82e508f7-e4d6-49c1-867d-8af6328763ea", "in_b"): NodeData("6cd7bd3f-a58a-470a-b71e-a2547aaf9275", "out"),
8585
NodeData("cf89215b-57f5-4495-b977-4e07fd6ef284", "in_b"): InputData(Passthrough("blend_start")),
8686
OutputData("blend_fac"): NodeData("6cd7bd3f-a58a-470a-b71e-a2547aaf9275", "out"),
87-
NodeData("21e0d546-635d-4afd-9a0b-eb7ebff2072d", "in_a"): NodeData("cf89215b-57f5-4495-b977-4e07fd6ef284", "out"),
8887
NodeData("6cd7bd3f-a58a-470a-b71e-a2547aaf9275", "max"): InputData(Passthrough("1")),
88+
NodeData("21e0d546-635d-4afd-9a0b-eb7ebff2072d", "in_a"): NodeData("cf89215b-57f5-4495-b977-4e07fd6ef284", "out"),
8989
NodeData("36ac78ef-ca35-4f62-9917-2b166dbc4a6c", "in_b"): NodeData("07f25d63-3b40-4c70-a03c-f461446c8673", "out"),
9090
NodeData("36ac78ef-ca35-4f62-9917-2b166dbc4a6c", "in_a"): NodeData("ccb16daf-ccb9-4857-a15e-fa73db9f7b10", "out"),
9191
NodeData("372a50d9-a084-4dd8-b81f-66a849911f95", "in_a"): InputData(Passthrough("speed")),
@@ -113,13 +113,13 @@
113113
"speed_fac": F32,
114114
},
115115
input_order: {
116-
Data(Passthrough("walk_speed")): 1,
116+
Data(Passthrough("blend_start")): 0,
117117
Data(Passthrough("speed")): 4,
118+
Data(Passthrough("0")): 5,
118119
Data(Passthrough("blend_end")): 2,
119120
Data(Passthrough("run_speed")): 3,
121+
Data(Passthrough("walk_speed")): 1,
120122
Data(Passthrough("1")): 6,
121-
Data(Passthrough("blend_start")): 0,
122-
Data(Passthrough("0")): 5,
123123
},
124124
output_order: {
125125
Data("blend_fac"): 0,

assets/animation_graphs/blend_transition.animgraph.ron

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"bevy_animation_graph::builtin_nodes::BlendNode": (
88
mode: LinearInterpolate,
99
sync_mode: Absolute,
10+
use_bone_mask: false,
1011
),
1112
},
1213
should_debug: false,

assets/animation_graphs/human.animgraph.ron

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,18 @@
102102
},
103103
should_debug: false,
104104
),
105+
(
106+
id: "82b72c1e-ac41-4778-b5e2-b8d7d2ab2860",
107+
name: "wave_additive",
108+
inner: {
109+
"bevy_animation_graph::builtin_nodes::BlendNode": (
110+
mode: Additive,
111+
sync_mode: NoSync,
112+
use_bone_mask: false,
113+
),
114+
},
115+
should_debug: false,
116+
),
105117
(
106118
id: "13af4c51-1ab5-4f1d-a9d3-fc53c50e4a38",
107119
name: "flip walk",
@@ -120,16 +132,6 @@
120132
},
121133
should_debug: false,
122134
),
123-
(
124-
id: "b3d1c53f-1a14-4a75-b2c7-62bbe8eef87c",
125-
name: "chain run",
126-
inner: {
127-
"bevy_animation_graph::builtin_nodes::ChainNode": (
128-
interpolation_period: 0.5,
129-
),
130-
},
131-
should_debug: false,
132-
),
133135
(
134136
id: "d8636d07-9e62-4413-b3bb-761fc8461ae0",
135137
name: "run clip 2",
@@ -153,13 +155,11 @@
153155
should_debug: false,
154156
),
155157
(
156-
id: "82b72c1e-ac41-4778-b5e2-b8d7d2ab2860",
157-
name: "wave_additive",
158+
id: "b3d1c53f-1a14-4a75-b2c7-62bbe8eef87c",
159+
name: "chain run",
158160
inner: {
159-
"bevy_animation_graph::builtin_nodes::BlendNode": (
160-
mode: Additive,
161-
sync_mode: NoSync,
162-
use_bone_mask: false,
161+
"bevy_animation_graph::builtin_nodes::ChainNode": (
162+
interpolation_period: 0.5,
163163
),
164164
},
165165
should_debug: false,
@@ -226,15 +226,14 @@
226226
NodeTime("82b72c1e-ac41-4778-b5e2-b8d7d2ab2860", "time_a"): NodeTime("9a66fcae-9d35-48e6-b993-54fe42511df8"),
227227
NodeData("ae04ba83-7b08-4eaf-a552-09b7fa10e54d", "pose_a"): NodeData("0ddfb1a3-4248-4be3-ace3-98e20841ccf3", "pose"),
228228
NodeData("8a3262a8-d9b0-4c23-bb1f-a170b3bf4e6a", "pose_b"): NodeData("b3d1c53f-1a14-4a75-b2c7-62bbe8eef87c", "pose"),
229-
OutputTime: NodeTime("11960072-0e9c-4f59-af64-ee7f82247bcb"),
229+
OutputTime: NodeTime("82b72c1e-ac41-4778-b5e2-b8d7d2ab2860"),
230230
NodeTime("9a66fcae-9d35-48e6-b993-54fe42511df8", "time"): NodeTime("84b0b602-cb74-429d-8825-5b4bb730ca93"),
231231
NodeTime("73c0c063-104a-433a-83e3-74792f9bc1a5", "time_b"): NodeTime("a7e8c955-64dd-4f48-8925-22d1580eb855"),
232232
NodeData("13af4c51-1ab5-4f1d-a9d3-fc53c50e4a38", "pose"): NodeData("3451ae58-0ff4-49d1-a67a-8249e1dd2d88", "pose"),
233233
NodeData("11960072-0e9c-4f59-af64-ee7f82247bcb", "bone_mask"): InputData(Passthrough("rotation_bone")),
234234
NodeData("82b72c1e-ac41-4778-b5e2-b8d7d2ab2860", "factor"): InputData(Passthrough("1")),
235235
OutputData("pose"): NodeData("11960072-0e9c-4f59-af64-ee7f82247bcb", "pose"),
236236
NodeData("82b72c1e-ac41-4778-b5e2-b8d7d2ab2860", "pose_a"): NodeData("9a66fcae-9d35-48e6-b993-54fe42511df8", "pose"),
237-
NodeTime("11960072-0e9c-4f59-af64-ee7f82247bcb", "time"): NodeTime("82b72c1e-ac41-4778-b5e2-b8d7d2ab2860"),
238237
NodeData("b3d1c53f-1a14-4a75-b2c7-62bbe8eef87c", "pose_b"): NodeData("098be6e7-c3f5-4caf-b36d-3f9e069aee6e", "pose"),
239238
NodeData("84b0b602-cb74-429d-8825-5b4bb730ca93", "pose"): NodeData("8a3262a8-d9b0-4c23-bb1f-a170b3bf4e6a", "pose"),
240239
NodeTime("ae04ba83-7b08-4eaf-a552-09b7fa10e54d", "time_b"): NodeTime("13af4c51-1ab5-4f1d-a9d3-fc53c50e4a38"),
@@ -300,12 +299,12 @@
300299
"098be6e7-c3f5-4caf-b36d-3f9e069aee6e": (-81.71484, 232.32422),
301300
"8064d95a-b8f5-4304-8534-31ead6304068": (-220.2539, 54.296875),
302301
"ae04ba83-7b08-4eaf-a552-09b7fa10e54d": (66.21484, -236.3125),
303-
"11960072-0e9c-4f59-af64-ee7f82247bcb": (885.22266, -141.2539),
302+
"11960072-0e9c-4f59-af64-ee7f82247bcb": (874.59375, -172.5039),
303+
"82b72c1e-ac41-4778-b5e2-b8d7d2ab2860": (721.76953, -58.65625),
304304
"13af4c51-1ab5-4f1d-a9d3-fc53c50e4a38": (-85.3125, -113.33594),
305-
"b3d1c53f-1a14-4a75-b2c7-62bbe8eef87c": (79.66797, 116.296875),
306305
"d8636d07-9e62-4413-b3bb-761fc8461ae0": (-219.4336, 221.21094),
307306
"84b0b602-cb74-429d-8825-5b4bb730ca93": (434.14844, -27.535156),
308-
"82b72c1e-ac41-4778-b5e2-b8d7d2ab2860": (721.76953, -58.65625),
307+
"b3d1c53f-1a14-4a75-b2c7-62bbe8eef87c": (79.66797, 116.296875),
309308
"3f82e055-c95e-483f-a182-5d125ee5431c": (505.4922, -350.09766),
310309
"9a66fcae-9d35-48e6-b993-54fe42511df8": (570.3086, -45.046875),
311310
"a7e8c955-64dd-4f48-8925-22d1580eb855": (-196.65234, 582.8086),

assets/animation_graphs/human_bone_mask.animgraph.ron

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,4 @@
123123
output_data_order: {},
124124
output_pose_order: {},
125125
),
126-
)
126+
)

assets/animation_graphs/human_fsm_toplevel.animgraph.ron

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
fsm: "fsm/locomotion.fsm.ron",
99
),
1010
},
11-
should_debug: true,
11+
should_debug: false,
1212
),
1313
],
1414
edges_inverted: {
1515
OutputData("pose"): NodeData("d8f44a29-a50e-474f-a4cd-d606020c0041", "pose"),
1616
OutputTime: NodeTime("d8f44a29-a50e-474f-a4cd-d606020c0041"),
17-
NodeData("d8f44a29-a50e-474f-a4cd-d606020c0041", "driver_events"): InputData(Passthrough("user_events")),
1817
NodeData("d8f44a29-a50e-474f-a4cd-d606020c0041", "speed"): InputData(Passthrough("speed")),
18+
NodeData("d8f44a29-a50e-474f-a4cd-d606020c0041", "driver_events"): InputData(Passthrough("user_events")),
1919
},
2020
io_spec: (
2121
input_times: [],
@@ -53,4 +53,4 @@
5353
output_data_order: {},
5454
output_pose_order: {},
5555
),
56-
)
56+
)

assets/animation_graphs/human_ik.animgraph.ron

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
NodeData("f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50", "target_position"): InputData(Passthrough("target_hand_pos")),
2424
NodeData("66a220c6-c546-468f-bcce-6725de2c11ab", "target_speed"): InputData(Passthrough("target_speed")),
2525
OutputData("pose"): NodeData("f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50", "pose"),
26-
OutputTime: NodeTime("f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50"),
27-
NodeTime("f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50", "time"): NodeTime("66a220c6-c546-468f-bcce-6725de2c11ab"),
26+
OutputTime: NodeTime("66a220c6-c546-468f-bcce-6725de2c11ab"),
2827
NodeData("f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50", "target_path"): InputData(Passthrough("right_hand")),
2928
NodeData("f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50", "pose"): NodeData("66a220c6-c546-468f-bcce-6725de2c11ab", "pose"),
3029
NodeData("66a220c6-c546-468f-bcce-6725de2c11ab", "target_direction"): InputData(Passthrough("target_direction")),
@@ -71,10 +70,10 @@
7170
editor_metadata: (
7271
node_positions: {
7372
"66a220c6-c546-468f-bcce-6725de2c11ab": (202.19531, 507.92578),
74-
"f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50": (362.46875, 373.8203),
73+
"f7c1cfe1-dd28-4ae9-b322-e1b85ae09a50": (362.54297, 316.78125),
7574
},
7675
input_position: (39.851563, 365.96484),
77-
output_position: (524.9297, 369.23438),
76+
output_position: (559.89844, 405.0664),
7877
input_param_order: {},
7978
input_time_order: {},
8079
output_data_order: {},

assets/animation_graphs/human_ragdoll.animgraph.ron

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
fsm: "fsm/ragdoll.fsm.ron",
99
),
1010
},
11-
should_debug: true,
11+
should_debug: false,
1212
),
1313
(
1414
id: "017606cd-5fcf-4650-a159-6f6e73fc9a1a",
@@ -71,9 +71,9 @@
7171
},
7272
editor_metadata: (
7373
node_positions: {
74+
"525e57c8-2acd-43e5-a788-0be33905a253": (236.26563, 263.76953),
7475
"017606cd-5fcf-4650-a159-6f6e73fc9a1a": (235.78906, -32.01953),
7576
"d3f9be56-ea53-49bf-aefd-c991c78c3b83": (402.15234, 115.07031),
76-
"525e57c8-2acd-43e5-a788-0be33905a253": (236.26563, 263.76953),
7777
},
7878
input_position: (-40.609375, 115.5),
7979
output_position: (647.9531, 101.83203),
@@ -82,4 +82,4 @@
8282
output_data_order: {},
8383
output_pose_order: {},
8484
),
85-
)
85+
)

assets/animation_graphs/run.animgraph.ron

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
(
22
nodes: [
33
(
4-
id: "262373b6-5b35-4ca2-a508-3c4b3e471fda",
4+
id: "c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f",
55
name: "",
66
inner: {
7-
"bevy_animation_graph::builtin_nodes::EventMarkupNode": (
8-
event_tracks: {},
7+
"bevy_animation_graph::builtin_nodes::FlipLRNode": (
8+
config: (
9+
name_mapper: Pattern((
10+
key_1: "L",
11+
key_2: "R",
12+
pattern_before: "^.*",
13+
pattern_after: "$",
14+
)),
15+
mode: MirrorX,
16+
),
917
),
1018
},
1119
should_debug: false,
@@ -55,19 +63,11 @@
5563
should_debug: false,
5664
),
5765
(
58-
id: "c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f",
66+
id: "262373b6-5b35-4ca2-a508-3c4b3e471fda",
5967
name: "",
6068
inner: {
61-
"bevy_animation_graph::builtin_nodes::FlipLRNode": (
62-
config: (
63-
name_mapper: Pattern((
64-
key_1: "L",
65-
key_2: "R",
66-
pattern_before: "^.*",
67-
pattern_after: "$",
68-
)),
69-
mode: MirrorX,
70-
),
69+
"bevy_animation_graph::builtin_nodes::EventMarkupNode": (
70+
event_tracks: {},
7171
),
7272
},
7373
should_debug: false,
@@ -77,7 +77,6 @@
7777
NodeTime("c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f", "time"): NodeTime("939ac6ef-20da-4151-90e6-11461812b22d"),
7878
NodeData("262373b6-5b35-4ca2-a508-3c4b3e471fda", "pose"): NodeData("75a8c5f5-28a4-411b-993c-8e3f15b1867f", "pose"),
7979
NodeData("75a8c5f5-28a4-411b-993c-8e3f15b1867f", "pose"): NodeData("6cb9db31-c8aa-4d7b-a7af-d6a3206c9da8", "pose"),
80-
NodeData("6cb9db31-c8aa-4d7b-a7af-d6a3206c9da8", "pose_b"): NodeData("c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f", "pose"),
8180
NodeTime("75a8c5f5-28a4-411b-993c-8e3f15b1867f", "time"): NodeTime("6cb9db31-c8aa-4d7b-a7af-d6a3206c9da8"),
8281
OutputData("pose"): NodeData("262373b6-5b35-4ca2-a508-3c4b3e471fda", "pose"),
8382
OutputTime: NodeTime("262373b6-5b35-4ca2-a508-3c4b3e471fda"),
@@ -87,6 +86,7 @@
8786
NodeTime("6cb9db31-c8aa-4d7b-a7af-d6a3206c9da8", "time_b"): NodeTime("c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f"),
8887
NodeTime("262373b6-5b35-4ca2-a508-3c4b3e471fda", "time"): NodeTime("75a8c5f5-28a4-411b-993c-8e3f15b1867f"),
8988
NodeTime("6cb9db31-c8aa-4d7b-a7af-d6a3206c9da8", "time_a"): NodeTime("5298fece-5bca-4327-802b-70966468855e"),
89+
NodeData("6cb9db31-c8aa-4d7b-a7af-d6a3206c9da8", "pose_b"): NodeData("c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f", "pose"),
9090
},
9191
io_spec: (
9292
input_times: [],
@@ -106,12 +106,12 @@
106106
default_data: {},
107107
editor_metadata: (
108108
node_positions: {
109-
"262373b6-5b35-4ca2-a508-3c4b3e471fda": (445.35938, 117.71484),
109+
"c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f": (-34.76953, 225.59375),
110110
"939ac6ef-20da-4151-90e6-11461812b22d": (-183.46875, 221.38672),
111111
"5298fece-5bca-4327-802b-70966468855e": (-79.09766, 38.570313),
112112
"6cb9db31-c8aa-4d7b-a7af-d6a3206c9da8": (133.85547, 109.23828),
113113
"75a8c5f5-28a4-411b-993c-8e3f15b1867f": (287.90234, 113.95703),
114-
"c16dc0d9-7fb4-40b6-ab59-ee7c4361db1f": (-34.76953, 225.59375),
114+
"262373b6-5b35-4ca2-a508-3c4b3e471fda": (445.35938, 117.71484),
115115
},
116116
input_position: (132.7539, 482.0586),
117117
output_position: (627.91016, 117.34766),

assets/animation_graphs/walk.animgraph.ron

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
11
(
22
nodes: [
3+
(
4+
id: "dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1",
5+
name: "",
6+
inner: {
7+
"bevy_animation_graph::builtin_nodes::ChainNode": (
8+
interpolation_period: 0.5,
9+
),
10+
},
11+
should_debug: false,
12+
),
13+
(
14+
id: "8db3807a-3f93-48e4-9678-7cb08c00958f",
15+
name: "",
16+
inner: {
17+
"bevy_animation_graph::builtin_nodes::ClipNode": (
18+
clip: "animations/human_walk.anim.ron",
19+
override_duration: None,
20+
override_interpolation: None,
21+
),
22+
},
23+
should_debug: false,
24+
),
325
(
426
id: "0b62862d-ae56-47dd-bf71-6e47e6c7199e",
527
name: "",
@@ -40,40 +62,18 @@
4062
},
4163
should_debug: false,
4264
),
43-
(
44-
id: "dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1",
45-
name: "",
46-
inner: {
47-
"bevy_animation_graph::builtin_nodes::ChainNode": (
48-
interpolation_period: 0.5,
49-
),
50-
},
51-
should_debug: false,
52-
),
53-
(
54-
id: "8db3807a-3f93-48e4-9678-7cb08c00958f",
55-
name: "",
56-
inner: {
57-
"bevy_animation_graph::builtin_nodes::ClipNode": (
58-
clip: "animations/human_walk.anim.ron",
59-
override_duration: None,
60-
override_interpolation: None,
61-
),
62-
},
63-
should_debug: false,
64-
),
6565
],
6666
edges_inverted: {
6767
NodeData("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1", "pose_a"): NodeData("c10d559a-4b48-4975-8a43-425863275490", "pose"),
6868
OutputData("pose"): NodeData("30bddca1-a767-4b2f-b1a1-e4860b344f3a", "pose"),
6969
OutputTime: NodeTime("30bddca1-a767-4b2f-b1a1-e4860b344f3a"),
70-
NodeTime("0b62862d-ae56-47dd-bf71-6e47e6c7199e", "time"): NodeTime("8db3807a-3f93-48e4-9678-7cb08c00958f"),
70+
NodeTime("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1", "time_a"): NodeTime("c10d559a-4b48-4975-8a43-425863275490"),
7171
NodeData("30bddca1-a767-4b2f-b1a1-e4860b344f3a", "pose"): NodeData("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1", "pose"),
7272
NodeTime("30bddca1-a767-4b2f-b1a1-e4860b344f3a", "time"): NodeTime("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1"),
7373
NodeData("0b62862d-ae56-47dd-bf71-6e47e6c7199e", "pose"): NodeData("8db3807a-3f93-48e4-9678-7cb08c00958f", "pose"),
74-
NodeData("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1", "pose_b"): NodeData("0b62862d-ae56-47dd-bf71-6e47e6c7199e", "pose"),
75-
NodeTime("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1", "time_a"): NodeTime("c10d559a-4b48-4975-8a43-425863275490"),
7674
NodeTime("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1", "time_b"): NodeTime("0b62862d-ae56-47dd-bf71-6e47e6c7199e"),
75+
NodeData("dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1", "pose_b"): NodeData("0b62862d-ae56-47dd-bf71-6e47e6c7199e", "pose"),
76+
NodeTime("0b62862d-ae56-47dd-bf71-6e47e6c7199e", "time"): NodeTime("8db3807a-3f93-48e4-9678-7cb08c00958f"),
7777
},
7878
io_spec: (
7979
input_times: [],
@@ -91,11 +91,11 @@
9191
default_data: {},
9292
editor_metadata: (
9393
node_positions: {
94+
"dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1": (376.26172, 190.8125),
95+
"8db3807a-3f93-48e4-9678-7cb08c00958f": (68.35156, 257.61328),
9496
"0b62862d-ae56-47dd-bf71-6e47e6c7199e": (219.66406, 258.26563),
9597
"c10d559a-4b48-4975-8a43-425863275490": (130.17188, 72.56641),
9698
"30bddca1-a767-4b2f-b1a1-e4860b344f3a": (566.8203, 191.83984),
97-
"dfeef5de-88c1-406d-a6ce-d60b2c9e1fb1": (376.26172, 190.8125),
98-
"8db3807a-3f93-48e4-9678-7cb08c00958f": (68.35156, 257.61328),
9999
},
100100
input_position: (95.69141, 511.03125),
101101
output_position: (760.6875, 188.83203),

0 commit comments

Comments
 (0)