Introduction
This data set looks at the Dallas Wings WNBA team’s game data from
the 2025 year. The team did not make it to the playoffs. They won 9
games and lost 31. Below are Tables 1 and 2. Table 1 describes the
overall season results for all teams, while Table 2 describes a summary
of Dallas Wings’s results from the season. Based on the data from this
season, we will try to predict the point score for a median game for the
Dallas Wings
Tables/Season
Summary
summary %>%
kbl(caption = "team score summary", digits = 2) %>%
kable_classic(full_width = F)
team score summary
|
team_name
|
mean_score
|
sd_score
|
mean_rebounds
|
sd_rebounds
|
mean_field_goal_pct
|
sd_field_goal_pct
|
mean_3PFGper
|
sd_3PFGper
|
mean_steals
|
sd_steals
|
|
Aces
|
85.52
|
9.56
|
33.78
|
5.88
|
45.27
|
5.82
|
35.27
|
7.08
|
6.80
|
2.67
|
|
Dream
|
76.93
|
10.59
|
35.95
|
4.41
|
41.28
|
6.78
|
30.83
|
9.32
|
7.14
|
2.82
|
|
Fever
|
84.50
|
10.17
|
35.10
|
5.49
|
45.56
|
5.38
|
35.00
|
8.99
|
5.88
|
2.29
|
|
Liberty
|
84.98
|
9.92
|
36.90
|
5.77
|
44.53
|
5.61
|
35.38
|
10.06
|
7.75
|
2.19
|
|
Lynx
|
82.36
|
11.39
|
33.15
|
5.06
|
45.21
|
6.34
|
37.80
|
9.43
|
8.36
|
3.17
|
|
Mercury
|
81.93
|
12.60
|
32.26
|
5.39
|
44.28
|
7.34
|
32.97
|
10.34
|
6.55
|
2.12
|
|
Mystics
|
79.30
|
8.69
|
31.85
|
4.66
|
43.36
|
4.82
|
36.64
|
8.69
|
7.28
|
2.24
|
|
Sky
|
77.40
|
9.62
|
36.60
|
5.57
|
42.44
|
5.22
|
31.74
|
11.62
|
7.00
|
3.30
|
|
Sparks
|
78.40
|
10.57
|
32.67
|
5.52
|
42.63
|
6.15
|
32.09
|
11.00
|
7.30
|
2.78
|
|
Storm
|
82.67
|
9.65
|
34.67
|
6.02
|
43.43
|
5.39
|
28.35
|
9.03
|
9.24
|
3.27
|
|
Sun
|
80.36
|
9.89
|
33.43
|
4.62
|
44.30
|
5.28
|
32.84
|
11.67
|
7.89
|
3.29
|
|
Wings
|
84.20
|
11.47
|
34.75
|
4.65
|
44.47
|
5.24
|
32.06
|
11.75
|
7.12
|
2.95
|
my_team_win %>%
kbl(caption = "Wings Win Summary", digits = 2) %>%
kable_classic(full_width = F)
Wings Win Summary
|
team_winner
|
mean
|
sd
|
|
FALSE
|
80.97
|
9.83
|
|
TRUE
|
95.33
|
9.96
|
Box Plots
below are my histograms and here is a great and wonderful discussion,
through a few sentences, on all they have to offer. looking at winning
vs losing and now here they are so special and great, right? Below are
two boxplots based on the points scored by game result (win or
lose).
#i refuse to have a 6-7 joke in my coding. you cannot make me
p <- data %>%
ggplot(aes(x=team_score, fill = team_winner)) +
geom_histogram(color = "#e9ecef", alpha=0.6, position = 'identity') +
scale_fill_manual(values=c("#002b5c", "#c4d600"))
boxplot(team_score ~ result, data = df_hist, notch = FALSE,
col = c("#002b5c", "#c4d600"),
main = "Points score by game result",
xlab = "Result", ylab = "Points")

Models
Interaction Models
Call: lm(formula = team_score ~ field_goal_pct + total_rebounds +
three_point_field_goal_pct + field_goal_pct * total_rebounds +
field_goal_pct * three_point_field_goal_pct + total_rebounds *
three_point_field_goal_pct, data = my_team)
Residuals: Min 1Q Median 3Q Max -20.0621 -2.8317 0.2787 3.8935
16.3294
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept)
22.297634 95.796054 0.233 0.817 field_goal_pct 0.800250 2.399886 0.333
0.741 total_rebounds -0.237118 2.587190 -0.092 0.928
three_point_field_goal_pct -0.034367 1.249697 -0.028 0.978
field_goal_pct:total_rebounds 0.016969 0.063750 0.266 0.792
field_goal_pct:three_point_field_goal_pct 0.001972 0.023458 0.084 0.934
total_rebounds:three_point_field_goal_pct 0.006036 0.027642 0.218
0.829
Residual standard error: 7.467 on 33 degrees of freedom Multiple
R-squared: 0.6414, Adjusted R-squared: 0.5762 F-statistic: 9.836 on 6
and 33 DF, p-value: 3.182e-06
\(~\)
After after running all models and reducing models, my final model is
team_score= -12.3047153 + 1.4462277 * field_goal_pct + 0.6871829 *
total_rebounds + 0.2593569 * three_point_field_goal_pct.
This model significantly predicts team score, F(3, 36) = 21.2378708,
p<.0001, 0.6088799.
See table below for results:
|
|
|
|
Dependent variable:
|
|
|
|
|
|
team_score
|
|
|
|
field_goal_pct
|
1.446***
|
|
|
(0.253)
|
|
|
|
|
total_rebounds
|
0.687**
|
|
|
(0.255)
|
|
|
|
|
three_point_field_goal_pct
|
0.259**
|
|
|
(0.112)
|
|
|
|
|
Constant
|
-12.305
|
|
|
(14.869)
|
|
|
|
|
|
|
Observations
|
40
|
|
R2
|
0.639
|
|
Adjusted R2
|
0.609
|
|
Residual Std. Error
|
7.173 (df = 36)
|
|
F Statistic
|
21.238*** (df = 3; 36)
|
|
|
|
Note:
|
p<0.1; p<0.05;
p<0.01
|
Residuals
#residual plots of a variety of times
ols_plot_resid_fit(model4)

ols_plot_resid_hist(model4)

ols_plot_resid_stud(model4)

ols_plot_resid_lev(model4, threshold = 3)

ols_plot_cooksd_chart(model4)

Prediction
I built this model to predict my team’s points for a game in which
they achieve the median value for each variable. The predicted team
score is 83.908595, with 95% confidence interval (81.5603447,
86.2568453).
LS0tCnRpdGxlOiAiQXNzaWdubWVudCA2IFNUQTMxOSBTcHJpbmcgMjAyNiIKYXV0aG9yOiAiIgpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OiAKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDQKICAgIHRvY19mbG9hdDogeWVzCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcwogICAgdG9jX2NvbGxhcHNlZDogeWVzCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGNvZGVfZG93bmxvYWQ6IHllcwogICAgc21vb3RoX3Njcm9sbDogeWVzCiAgICB0aGVtZTogbHVtZW4KICBwZGZfZG9jdW1lbnQ6IAogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogNAogICAgZmlnX2NhcHRpb246IHllcwogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIGZpZ193aWR0aDogMwogICAgZmlnX2hlaWdodDogMwogIHdvcmRfZG9jdW1lbnQ6IAogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogNAogICAgZmlnX2NhcHRpb246IHllcwogICAga2VlcF9tZDogeWVzCmVkaXRvcl9vcHRpb25zOiAKICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lCi0tLQoKYGBge2NzcywgZWNobyA9IEZBTFNFfQojVE9DOjpiZWZvcmUgewogIGNvbnRlbnQ6ICJUYWJsZSBvZiBDb250ZW50cyI7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZm9udC1zaXplOiAxLjJlbTsKICBkaXNwbGF5OiBibG9jazsKICBjb2xvcjogbmF2eTsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgoKZGl2I1RPQyBsaSB7ICAgICAvKiB0YWJsZSBvZiBjb250ZW50ICAqLwogICAgbGlzdC1zdHlsZTp1cHBlci1yb21hbjsKICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsKICAgIGJhY2tncm91bmQtcmVwZWF0Om5vbmU7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7Cn0KCmgxLnRpdGxlIHsgICAgLyogbGV2ZWwgMSBoZWFkZXIgb2YgdGl0bGUgICovCiAgZm9udC1zaXplOiAyMnB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiBEYXJrUmVkOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LWZhbWlseTogIkdpbGwgU2FucyIsIHNhbnMtc2VyaWY7Cn0KCmg0LmF1dGhvciB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovCiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7CiAgY29sb3I6IG5hdnk7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgpoNC5kYXRlIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8KICBmb250LXNpemU6IDE4cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOwogIGNvbG9yOiBEYXJrQmx1ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCmgxIHsgLyogSGVhZGVyIDEgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8KICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgICBjb2xvcjogZGFya3JlZDsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCmgyIHsgLyogSGVhZGVyIDIgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8KICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgICBjb2xvcjogbmF2eTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCmgzIHsgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8KICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgICBjb2xvcjogbmF2eTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCmg0IHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8KICAgIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogYm9sZDsKICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOwogICAgY29sb3I6IGRhcmtyZWQ7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgovKiBBZGQgZG90cyBhZnRlciBudW1iZXJlZCBoZWFkZXJzICovCi5oZWFkZXItc2VjdGlvbi1udW1iZXI6OmFmdGVyIHsKICBjb250ZW50OiAiLiI7Cgpib2R5IHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQoKLmhpZ2hsaWdodG1lIHsgYmFja2dyb3VuZC1jb2xvcjp5ZWxsb3c7IH0KCnAgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9Cgp9CmBgYAoKCmBgYCB7ciBzZXR1cCwgaW5jbHVkZT1GfQogc2V0d2QoIn4vRGVza3RvcC9Db2xsZWdlL1NUQTMxOSIpCgpkYXRhPXJlYWQuY3N2KCJXTkJBXzIwMjVfYm94LXNjb3Jlcy5jc3YiLCBoZWFkZXI9VCkKCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShkcGx5cikKI3ZpZiBmdW5jdGlvbiBpbiB0aGUgY2FyIHBhY2thZ2UKbGlicmFyeShjYXIpCmxpYnJhcnkob2xzcnIpCiNrYWJsZWV4dHJhIGZvciBuaWNlIG1hcmtkb3duIHRhYmxlcwpsaWJyYXJ5KGthYmxlRXh0cmEpCgpgYGAKCgpgYGB7ciB3cmFuZ2xpbmcsIGluY2x1ZGU9Rn0Kc3VtbWFyeShkYXRhKQpsaWJyYXJ5KGRwbHlyKQoKI2ZpbHRlcmluZyBvdXQgZXh0cmFuZW91cyBvYnNlcnZhdGlvbnMsIGFsbCBXTkJBIHRlYW1zIGluY2x1ZGVkLCByZW1vdmUgc2NvcmVzIGZyb20gQUxMIHN0YXJ0IGdhbWUKZGF0YSA9IGRhdGEgJT4lCiAgZmlsdGVyKHRlYW1fbmFtZSAhPSAiVGVhbSBXTkJBIiAmIHRlYW1fbmFtZSAhPSAiVGVhbSBVU0EiKQoKI2dyb3VwIGRhdGEgYnkgdGVhbSwgZmluZCBNIGFuZCBTRCBvZiBhbGwgdmFyaWFibGVzCnN1bW1hcnkgPSBkYXRhICU+JQogIGdyb3VwX2J5KHRlYW1fbmFtZSkgJT4lCiAgc3VtbWFyaXNlKG1lYW5fc2NvcmU9bWVhbih0ZWFtX3Njb3JlKSwgc2Rfc2NvcmU9c2QodGVhbV9zY29yZSksCiAgICAgICAgICAgIG1lYW5fcmVib3VuZHM9bWVhbih0b3RhbF9yZWJvdW5kcyksIHNkX3JlYm91bmRzPXNkKHRvdGFsX3JlYm91bmRzKSwKICAgICAgICAgICAgbWVhbl9maWVsZF9nb2FsX3BjdD1tZWFuKGZpZWxkX2dvYWxfcGN0KSwKICAgICAgICAgICAgc2RfZmllbGRfZ29hbF9wY3Q9c2QoZmllbGRfZ29hbF9wY3QpLAogICAgICAgICAgICBtZWFuXzNQRkdwZXI9bWVhbih0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCksCiAgICAgICAgICAgIHNkXzNQRkdwZXI9c2QodGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QpLAogICAgICAgICAgICBtZWFuX3N0ZWFscz1tZWFuKHN0ZWFscyksIHNkX3N0ZWFscz1zZChzdGVhbHMpCiAgICAgICAgICAgICkKCiNzZWxlY3RpbmcgdmFyaWFibGVzIHdlIG5lZWQgYW5kIGZpbHRlciBteSB0ZWFtLCB3aW5ncyBkaWQgTk9UIG1ha2UgdGhlIHBsYXlvZmZzLCBiIGFuZCBzb21lIG9mIGQKbXlfdGVhbSA9IGRhdGEgJT4lIAogIHNlbGVjdCh0ZWFtX3Njb3JlLCBmaWVsZF9nb2FsX3BjdCwgdG90YWxfcmVib3VuZHMsIAogICAgICAgICB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCwgc3RlYWxzLCB0ZWFtX25hbWUsIHRlYW1fd2lubmVyKSAlPiUgCiAgZmlsdGVyKHRlYW1fbmFtZSA9PSAiV2luZ3MiKQoKI2dyb3VwcyBjYXNlcyBieSB3aW4gdnMgbG9zcwojc3VtbWFyaXplIGFsbCB2YXJpYWJsZXMgd2l0aCBtZWFuIGFuZCBTRApteV90ZWFtX3dpbiA9IG15X3RlYW0gJT4lCiAgZ3JvdXBfYnkodGVhbV93aW5uZXIpICU+JQogIHN1bW1hcmlzZShtZWFuPW1lYW4odGVhbV9zY29yZSksIHNkPXNkKHRlYW1fc2NvcmUpKQoKZGZfaGlzdCA9IGRhdGEgJT4lCiAgZmlsdGVyKHRlYW1fbmFtZSA9PSAiV2luZ3MiKSU+JQogIG11dGF0ZShyZXN1bHQgPSBjYXNlX3doZW4odGVhbV93aW5uZXI9PVRSVUUgfiJXaW4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYW1fd2lubmVyPT1GQUxTRSB+ICJMb3NzIikpCmRmX21vZGVsMSA9IGRhdGEgJT4lCiAgZmlsdGVyKHRlYW1fbmFtZSA9PSAiV2luZ3MiKQpgYGAKCiMgSW50cm9kdWN0aW9uClRoaXMgZGF0YSBzZXQgbG9va3MgYXQgdGhlIERhbGxhcyBXaW5ncyBXTkJBIHRlYW0ncyBnYW1lIGRhdGEgZnJvbSB0aGUgMjAyNSB5ZWFyLiBUaGUgdGVhbSBkaWQgbm90IG1ha2UgaXQgdG8gdGhlIHBsYXlvZmZzLiBUaGV5IHdvbiA5IGdhbWVzIGFuZCBsb3N0IDMxLiBCZWxvdyBhcmUgVGFibGVzIDEgYW5kIDIuIFRhYmxlIDEgZGVzY3JpYmVzIHRoZSBvdmVyYWxsIHNlYXNvbiByZXN1bHRzIGZvciBhbGwgdGVhbXMsIHdoaWxlIFRhYmxlIDIgZGVzY3JpYmVzIGEgc3VtbWFyeSBvZiBEYWxsYXMgV2luZ3MncyByZXN1bHRzIGZyb20gdGhlIHNlYXNvbi4gQmFzZWQgb24gdGhlIGRhdGEgZnJvbSB0aGlzIHNlYXNvbiwgd2Ugd2lsbCB0cnkgdG8gcHJlZGljdCB0aGUgcG9pbnQgc2NvcmUgZm9yIGEgbWVkaWFuIGdhbWUgZm9yIHRoZSBEYWxsYXMgV2luZ3MKCiMgVGFibGVzL1NlYXNvbiBTdW1tYXJ5CgpgYGB7ciB0YWJsZXMsIGluY2x1ZGU9VH0Kc3VtbWFyeSAlPiUKICBrYmwoY2FwdGlvbiA9ICJ0ZWFtIHNjb3JlIHN1bW1hcnkiLCBkaWdpdHMgPSAyKSAlPiUKICBrYWJsZV9jbGFzc2ljKGZ1bGxfd2lkdGggPSBGKQoKbXlfdGVhbV93aW4gJT4lCiAga2JsKGNhcHRpb24gPSAiV2luZ3MgV2luIFN1bW1hcnkiLCBkaWdpdHMgPSAyKSAlPiUKICBrYWJsZV9jbGFzc2ljKGZ1bGxfd2lkdGggPSBGKQoKYGBgCgojIEJveCBQbG90cwpiZWxvdyBhcmUgbXkgaGlzdG9ncmFtcyBhbmQgaGVyZSBpcyBhIGdyZWF0IGFuZCB3b25kZXJmdWwgZGlzY3Vzc2lvbiwgdGhyb3VnaCBhIGZldyBzZW50ZW5jZXMsIG9uIGFsbCB0aGV5IGhhdmUgdG8gb2ZmZXIuIGxvb2tpbmcgYXQgd2lubmluZyB2cyBsb3NpbmcgYW5kIG5vdyBoZXJlIHRoZXkgYXJlIHNvIHNwZWNpYWwgYW5kIGdyZWF0LCByaWdodD8KQmVsb3cgYXJlIHR3byBib3hwbG90cyBiYXNlZCBvbiB0aGUgcG9pbnRzIHNjb3JlZCBieSBnYW1lIHJlc3VsdCAod2luIG9yIGxvc2UpLiAKCgpgYGB7ciBncmFwaHMsIGluY2x1ZGU9VCwgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9N30KI2kgcmVmdXNlIHRvIGhhdmUgYSA2LTcgam9rZSBpbiBteSBjb2RpbmcuIHlvdSBjYW5ub3QgbWFrZSBtZQpwIDwtIGRhdGEgJT4lCiAgZ2dwbG90KGFlcyh4PXRlYW1fc2NvcmUsIGZpbGwgPSB0ZWFtX3dpbm5lcikpICsKICAgIGdlb21faGlzdG9ncmFtKGNvbG9yID0gIiNlOWVjZWYiLCBhbHBoYT0wLjYsIHBvc2l0aW9uID0gJ2lkZW50aXR5JykgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiMwMDJiNWMiLCAiI2M0ZDYwMCIpKSAKCmJveHBsb3QodGVhbV9zY29yZSB+IHJlc3VsdCwgZGF0YSA9IGRmX2hpc3QsIG5vdGNoID0gRkFMU0UsIAogICAgICAgIGNvbCA9IGMoIiMwMDJiNWMiLCAiI2M0ZDYwMCIpLAogICAgICAgIG1haW4gPSAiUG9pbnRzIHNjb3JlIGJ5IGdhbWUgcmVzdWx0IiwKICAgICAgICB4bGFiID0gIlJlc3VsdCIsIHlsYWIgPSAiUG9pbnRzIikKYGBgCgojIE1vZGVscwoKYGBge3IgRmlyc3QgT3JkZXIgTW9kZWwsIGluY2x1ZGUgPSBGfQoKI2NyZWF0aW5nIG1vZGVsIDEKbW9kZWwxPWxtKHRlYW1fc2NvcmV+ZmllbGRfZ29hbF9wY3QrdG90YWxfcmVib3VuZHMrdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QrCiAgICAgICAgICAgIHN0ZWFscywgZGF0YT1teV90ZWFtKQpzdW1tYXJ5KG1vZGVsMSkKCiNjcmVhdGluZyBjb3JyZWxhdGlvbiBtYXRyaXgKY29yX2RhdGEgPSBteV90ZWFtICU+JQogIHNlbGVjdCh0ZWFtX3Njb3JlLCBmaWVsZF9nb2FsX3BjdCwgdG90YWxfcmVib3VuZHMsIAogICAgICAgICB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCwgc3RlYWxzKQoKY29yKGNvcl9kYXRhKQoKI2ZpbmRpbmcgdmlmIHZhbHVlcwp2aWYobW9kZWwxKQoKCiNjcmVhdGluZyBtb2RlbCAyLCBzYW1lIGFzIG1vZGVsIDEgZHVlIHRvIG5vIGhpZ2hseSBjb3JyZWxhdGVkIHBhaXJzCm1vZGVsMj1sbSh0ZWFtX3Njb3JlfmZpZWxkX2dvYWxfcGN0K3RvdGFsX3JlYm91bmRzK3RocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0KwogICAgICAgICAgICBzdGVhbHMsIGRhdGE9bXlfdGVhbSkKc3VtbWFyeShtb2RlbDIpCgpgYGAKCiMgSW50ZXJhY3Rpb24gTW9kZWxzCgpgYGB7ciBJbnRlcmFjdGlvbiBNb2RlbCwgcmVzdWx0cz0nYXNpcycsIGVjaG89RiwgaW5jbHVkZSA9IFQsIGNvbW1lbnQ9TkF9CiNjcmVhdGluZyBtb2RlbCAzCm1vZGVsMz1sbSh0ZWFtX3Njb3JlfmZpZWxkX2dvYWxfcGN0K3RvdGFsX3JlYm91bmRzK3RocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0ICsgZmllbGRfZ29hbF9wY3QqdG90YWxfcmVib3VuZHMgKyBmaWVsZF9nb2FsX3BjdCp0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCt0b3RhbF9yZWJvdW5kcyp0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCwgZGF0YT1teV90ZWFtKQpzdW1tYXJ5KG1vZGVsMykKCiNtb2RlbDMgaGFkIG5vIHNpZ25pZmljYW50IGVmZmVjdHMsIHNvIHRoaXMgaXMgYSByZWR1Y2VkIG1vZGVsIGluY2x1ZGluZyB0aGUgcmVtb3ZhbCBvZiBzdGVhbHMgZHVlIHRvIGl0IG5vdCBiZWluZyBzaWduaWZpY2FudCBldmVuIHdpdGhvdXQgdGhlIGludGVyYWN0aW9uIGVmZmVjdHMKbW9kZWw0PWxtKHRlYW1fc2NvcmV+ZmllbGRfZ29hbF9wY3QrdG90YWxfcmVib3VuZHMrdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QsIGRhdGE9bXlfdGVhbSkKbW9kZWw0c3VtPXN1bW1hcnkobW9kZWw0KQoKCmBgYAoKJH4kCgpBZnRlciBhZnRlciBydW5uaW5nIGFsbCBtb2RlbHMgYW5kIHJlZHVjaW5nIG1vZGVscywgbXkgZmluYWwgbW9kZWwgaXMgdGVhbV9zY29yZT0gYHIgbW9kZWw0JGNvZWZmaWNpZW50c1sxXWAgKyBgciBtb2RlbDQkY29lZmZpY2llbnRzWzJdYCAqIGZpZWxkX2dvYWxfcGN0ICsgYHIgbW9kZWw0JGNvZWZmaWNpZW50c1szXWAgKiB0b3RhbF9yZWJvdW5kcyArIGByIG1vZGVsNCRjb2VmZmljaWVudHNbNF1gICogdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QuCgpUaGlzIG1vZGVsIHNpZ25pZmljYW50bHkgcHJlZGljdHMgdGVhbSBzY29yZSwgRihgciBtb2RlbDRzdW0kZnN0YXRpc3RpY1syXWAsIGByIG1vZGVsNHN1bSRmc3RhdGlzdGljWzNdYCkgPSBgciBtb2RlbDRzdW0kZnN0YXRpc3RpY1sxXWAsIHA8LjAwMDEsIGByIG1vZGVsNHN1bSRhZGouci5zcXVhcmVkYC4KClNlZSB0YWJsZSBiZWxvdyBmb3IgcmVzdWx0czoKYGBge3IsIGluY2x1ZGU9VCwgZWNobz1GLCByZXN1bHRzPSJhc2lzIiwgbWVzc2FnZT1GfQpsaWJyYXJ5KHN0YXJnYXplcikKc3RhcmdhemVyKG1vZGVsNCwgdHlwZSA9ICJodG1sIikKYGBgCgojIFJlc2lkdWFscwoKYGBge3IgUmVzaWR1YWxzfQojcmVzaWR1YWwgcGxvdHMgb2YgYSB2YXJpZXR5IG9mIHRpbWVzCm9sc19wbG90X3Jlc2lkX2ZpdChtb2RlbDQpCm9sc19wbG90X3Jlc2lkX2hpc3QobW9kZWw0KQpvbHNfcGxvdF9yZXNpZF9zdHVkKG1vZGVsNCkKb2xzX3Bsb3RfcmVzaWRfbGV2KG1vZGVsNCwgdGhyZXNob2xkID0gMykKb2xzX3Bsb3RfY29va3NkX2NoYXJ0KG1vZGVsNCkKYGBgCgojIFByZWRpY3Rpb24KCmBgYHtyIFByZWRpY3Rpb24sIGluY2x1ZGUgPSBGfQojZm9yIGZpbmRpbmcgbWVkaWFuIHZhbHVlcwpzdW1tYXJ5KGNvcl9kYXRhKQoKI25ldyBkYXRhIGZyYW1lIGZvciB0aGUgbWVkaWFuIGdhbWUKbmV3ZGF0YT1kYXRhLmZyYW1lKGZpZWxkX2dvYWxfcGN0PTQ0LjQwLCB0b3RhbF9yZWJvdW5kcz0zNC4wMCwgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3Q9MzMuMzAsIHN0ZWFscz02LjUwKQoKI3ByZWRpY3RpbmcgbWVkaWFuIGdhbWUKcHJlZGljdGlvbiA9IHByZWRpY3QobW9kZWw0LCBuZXdkYXRhLCBpbnRlcnZhbCA9ICJjb25maWRlbmNlIiwgbGV2ZWw9Ljk1KQpgYGAKSSBidWlsdCB0aGlzIG1vZGVsIHRvIHByZWRpY3QgbXkgdGVhbSdzIHBvaW50cyBmb3IgYSBnYW1lIGluIHdoaWNoIHRoZXkgYWNoaWV2ZSB0aGUgbWVkaWFuIHZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiBUaGUgcHJlZGljdGVkIHRlYW0gc2NvcmUgaXMgYHIgcHJlZGljdGlvblsxXWAsIHdpdGggOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgKGByIHByZWRpY3Rpb25bMl1gLCBgciBwcmVkaWN0aW9uWzNdYCkuCgogICAgIA==