R Markdown
Introduction
This is the space where I’ll describe the data set and my team and
the year…
Below are tables one and two that describe the overall summary for
the 2025 season, as well as my team, NY Liberty. …
Table 1 – my team did make the playoffs, etc. … Table 2 –
#table for Team Summaries 2c
summary %>%
kbl(digits = 2, caption = "Team Summaries") %>%
kable_paper("hover", full_width = F, html_font = "Cambria")
Team Summaries
|
team_name
|
mean_score
|
sd_score
|
mean_fgp
|
sd_fgp
|
mean_rebounds
|
sd_rebounds
|
mean_three
|
sd_three
|
mean_steals
|
sd_steals
|
|
Aces
|
85.52
|
9.56
|
45.27
|
5.82
|
33.78
|
5.88
|
35.27
|
7.08
|
6.80
|
2.67
|
|
Dream
|
76.93
|
10.59
|
41.28
|
6.78
|
35.95
|
4.41
|
30.83
|
9.32
|
7.14
|
2.82
|
|
Fever
|
84.50
|
10.17
|
45.56
|
5.38
|
35.10
|
5.49
|
35.00
|
8.99
|
5.88
|
2.29
|
|
Liberty
|
84.98
|
9.92
|
44.53
|
5.61
|
36.90
|
5.77
|
35.38
|
10.06
|
7.75
|
2.19
|
|
Lynx
|
82.36
|
11.39
|
45.21
|
6.34
|
33.15
|
5.06
|
37.80
|
9.43
|
8.36
|
3.17
|
|
Mercury
|
81.93
|
12.60
|
44.28
|
7.34
|
32.26
|
5.39
|
32.97
|
10.34
|
6.55
|
2.12
|
|
Mystics
|
79.30
|
8.69
|
43.36
|
4.82
|
31.85
|
4.66
|
36.64
|
8.69
|
7.28
|
2.24
|
|
Sky
|
77.40
|
9.62
|
42.44
|
5.22
|
36.60
|
5.57
|
31.74
|
11.62
|
7.00
|
3.30
|
|
Sparks
|
78.40
|
10.57
|
42.63
|
6.15
|
32.67
|
5.52
|
32.09
|
11.00
|
7.30
|
2.78
|
|
Storm
|
82.67
|
9.65
|
43.43
|
5.39
|
34.67
|
6.02
|
28.35
|
9.03
|
9.24
|
3.27
|
|
Sun
|
80.36
|
9.89
|
44.30
|
5.28
|
33.43
|
4.62
|
32.84
|
11.67
|
7.89
|
3.29
|
|
Wings
|
84.20
|
11.47
|
44.47
|
5.24
|
34.75
|
4.65
|
32.06
|
11.75
|
7.12
|
2.95
|
#table for My Team 2d
my_team_results %>%
kbl(digits = 1, caption = "My Team Wins/Losses") %>%
kable_paper("hover", full_width = F, html_font = "Cambria")
My Team Wins/Losses
|
team_winner
|
mean
|
|
FALSE
|
80.0
|
|
TRUE
|
86.5
|
Histograms
Histogram discussion… Here are side by side histograms for …
library(ggplot2)
p = df_hist %>%
ggplot(aes(x=team_score, fill= result)) + geom_histogram(color = "blue", alpha=0.6, position = 'identity') +
scale_fill_manual(values=c( "purple", "lightblue"))
boxplot(team_score ~ result, data = df_hist,
col = c('lightblue', 'lightgreen'),
main = "Points scored by game result",
xlab = "Result", ylab = "Points")

Models
\(~\)
After all models were run and model reduction was completed, my final
model is team_score= 3.2455521+ 1.1788679 * field_goal_pct + 0.5183829 *
total_rebounds + 0.285623 * three_point_field_goal_pct .
This model significantly predicts team score, f(3, 48) = 32.2409164,
p,.00001, adjusted R^2= 0.6476021 .
|
|
|
|
Dependent variable:
|
|
|
|
|
|
team_score
|
|
|
|
field_goal_pct
|
1.179***
|
|
|
(0.181)
|
|
|
|
|
total_rebounds
|
0.518***
|
|
|
(0.151)
|
|
|
|
|
three_point_field_goal_pct
|
0.286***
|
|
|
(0.101)
|
|
|
|
|
Constant
|
3.246
|
|
|
(10.049)
|
|
|
|
|
|
|
Observations
|
52
|
|
R2
|
0.668
|
|
Adjusted R2
|
0.648
|
|
Residual Std. Error
|
5.887 (df = 48)
|
|
F Statistic
|
32.241*** (df = 3; 48)
|
|
|
|
Note:
|
p<0.1; p<0.05;
p<0.01
|
hist(model3$residuals)

plot(model3$fitted.values, model3$residuals)

ols_plot_cooksd_bar(model3)

ols_plot_resid_lev(model3, threshold = 3)

I built this model to predict my team’s points for a game in which
they archive the median value for each variable. The predicted team
score is 84.6709881, with 95% confidence interval (83.0084105,
86.3335656)
LS0tCnRpdGxlOiAiUiBBc3NpZ25tZW50IDYiCmF1dGhvcjogIkxlYWggWnVyZmx1ZWgiCmRhdGU6ICJBcHJpbCAyNywgMjAyNiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6IAogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogNAogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMKICAgIHRoZW1lOiBsdW1lbgogIHBkZl9kb2N1bWVudDogCiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiA0CiAgICBmaWdfY2FwdGlvbjogeWVzCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcwogICAgZmlnX3dpZHRoOiAzCiAgICBmaWdfaGVpZ2h0OiAzCiAgd29yZF9kb2N1bWVudDogCiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiA0CiAgICBmaWdfY2FwdGlvbjogeWVzCiAgICBrZWVwX21kOiB5ZXMKZWRpdG9yX29wdGlvbnM6IAogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUKLS0tCgpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9CiNUT0M6OmJlZm9yZSB7CiAgY29udGVudDogIlRhYmxlIG9mIENvbnRlbnRzIjsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDEuMmVtOwogIGRpc3BsYXk6IGJsb2NrOwogIGNvbG9yOiBuYXZ5OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCgpkaXYjVE9DIGxpIHsgICAgIC8qIHRhYmxlIG9mIGNvbnRlbnQgICovCiAgICBsaXN0LXN0eWxlOnVwcGVyLXJvbWFuOwogICAgYmFja2dyb3VuZC1pbWFnZTpub25lOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6bm9uZTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsKfQoKaDEudGl0bGUgeyAgICAvKiBsZXZlbCAxIGhlYWRlciBvZiB0aXRsZSAgKi8KICBmb250LXNpemU6IDIycHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6IERhcmtSZWQ7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtZmFtaWx5OiAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsKfQoKaDQuYXV0aG9yIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8KICBmb250LXNpemU6IDE1cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTsKICBjb2xvcjogbmF2eTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCmg0LmRhdGUgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLwogIGZvbnQtc2l6ZTogMThweDsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LWZhbWlseTogIkdpbGwgU2FucyIsIHNhbnMtc2VyaWY7CiAgY29sb3I6IERhcmtCbHVlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKaDEgeyAvKiBIZWFkZXIgMSAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLwogICAgZm9udC1zaXplOiAyMHB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICAgIGNvbG9yOiBkYXJrcmVkOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKaDIgeyAvKiBIZWFkZXIgMiAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLwogICAgZm9udC1zaXplOiAxOHB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICAgIGNvbG9yOiBuYXZ5OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKaDMgeyAvKiBIZWFkZXIgMyAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICAgIGNvbG9yOiBuYXZ5OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKaDQgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLwogICAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgICBjb2xvcjogZGFya3JlZDsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi8qIEFkZCBkb3RzIGFmdGVyIG51bWJlcmVkIGhlYWRlcnMgKi8KLmhlYWRlci1zZWN0aW9uLW51bWJlcjo6YWZ0ZXIgewogIGNvbnRlbnQ6ICIuIjsKCmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9CgouaGlnaGxpZ2h0bWUgeyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdzsgfQoKcCB7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0KCn0KYGBgCgoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKCnNldHdkKCJ+L0xpYnJhcnkvQ2xvdWRTdG9yYWdlL09uZURyaXZlLVdlc3RDaGVzdGVyVW5pdmVyc2l0eW9mUEEvU1RBIDMxOSBzcHJpbmcgMjAyNiIpCgpkYXRhPXJlYWQuY3N2KCJXTkJBXzIwMjVfYm94LXNjb3Jlcy5jc3YiLCBoZWFkZXIgPSBUKQoKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGNhcikKbGlicmFyeShvbHNycikKbGlicmFyeShrYWJsZUV4dHJhKQoKYGBgCgojIyBSIE1hcmtkb3duCgoKYGBge3Igd3JhbmdsaW5nLCBpbmNsdWRlPUZBTFNFfQoKc3VtbWFyeShkYXRhKQpsaWJyYXJ5KGRwbHlyKQoKI0FsbCBXQk5BIHRlYW1zIGluY2x1ZGVkLCByZW1vdmUgc2NvcmVzIGZyb20gQWxsIHN0YXIgZ2FtZSAKZGF0YSA9IGRhdGEgJT4lCiAgZmlsdGVyKHRlYW1fbmFtZSAhPSAiVGVhbSBXTkJBIiAmIHRlYW1fbmFtZSAhPSAiVGVhbSBVU0EiKQoKIyBncm91cCBkYXRhIGJ5IHRlYW0sIGZpbmQgbWVhbi9zZCBvZiBhbGwgdmFyaWFibGVzCnN1bW1hcnkgPSBkYXRhICU+JQogIGdyb3VwX2J5KHRlYW1fbmFtZSkgJT4lIAogIHN1bW1hcmlzZShtZWFuX3Njb3JlPW1lYW4odGVhbV9zY29yZSksIHNkX3Njb3JlPXNkKHRlYW1fc2NvcmUpLCAKICAgICAgICAgICAgbWVhbl9mZ3A9bWVhbihmaWVsZF9nb2FsX3BjdCksIHNkX2ZncD1zZChmaWVsZF9nb2FsX3BjdCksIAogICAgICAgICAgIG1lYW5fcmVib3VuZHM9bWVhbih0b3RhbF9yZWJvdW5kcyksIHNkX3JlYm91bmRzPXNkKHRvdGFsX3JlYm91bmRzKSwKICAgICAgICAgICBtZWFuX3RocmVlPW1lYW4odGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QpLCBzZF90aHJlZT1zZCh0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCksCiAgICAgICAgICAgbWVhbl9zdGVhbHM9bWVhbihzdGVhbHMpLCBzZF9zdGVhbHM9c2Qoc3RlYWxzKSkgCgogIAojc2VsZWN0IG9ubHkgdmFyaWFibGVzIHdlIG5lZWQgYW5kIGZpbHRlciBvbiBteSB0ZWFtCm15X3RlYW0gPSBkYXRhICU+JQogIHNlbGVjdCh0ZWFtX3Njb3JlLCBmaWVsZF9nb2FsX3BjdCwgdG90YWxfcmVib3VuZHMsIAogICAgICAgICB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCwgc3RlYWxzLCB0ZWFtX25hbWUsIHRlYW1fd2lubmVyKSAlPiUKICBmaWx0ZXIodGVhbV9uYW1lID09ICJMaWJlcnR5IikKCiNncm91cHMgY2FzZXMgYnkgd2luIHZzLiBsb3NzCiMgc3VtbWFyaXplIGFsbCB2YXJpYmFsZXMgd2l0aCBtZWFuIGFuZCBzZApteV90ZWFtX3Jlc3VsdHMgPSBteV90ZWFtICU+JSAKICBncm91cF9ieSh0ZWFtX3dpbm5lcikgJT4lCiAgc3VtbWFyaXNlKG1lYW49bWVhbih0ZWFtX3Njb3JlKSkKCmRmX2hpc3QgPSBkYXRhICU+JSAKICAgIGZpbHRlcih0ZWFtX25hbWUgPT0gIkxpYmVydHkiKSAlPiUKICAgIG11dGF0ZSAocmVzdWx0PSBjYXNlX3doZW4odGVhbV93aW5uZXIgPT0gVFJVRSB+ICJ3aW4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhbV93aW5uZXIgPT0gRkFMU0UgfiAibG9zcyIpKQoKYGBgCgojIEludHJvZHVjdGlvbgoKVGhpcyBpcyB0aGUgc3BhY2Ugd2hlcmUgSSdsbCBkZXNjcmliZSB0aGUgZGF0YSBzZXQgYW5kIG15IHRlYW0gYW5kIHRoZSB5ZWFyLi4uCgpCZWxvdyBhcmUgdGFibGVzIG9uZSBhbmQgdHdvIHRoYXQgZGVzY3JpYmUgdGhlIG92ZXJhbGwgc3VtbWFyeSBmb3IgdGhlIDIwMjUgc2Vhc29uLCBhcyB3ZWxsIGFzIG15IHRlYW0sIE5ZIExpYmVydHkuIC4uLgoKVGFibGUgMSAtLSBteSB0ZWFtIGRpZCBtYWtlIHRoZSBwbGF5b2ZmcywgZXRjLiAuLi4KVGFibGUgMiAtLSAKCmBgYHtyIHRhYmxlcywgaW5jbHVkZT1UUlVFfQojdGFibGUgZm9yIFRlYW0gU3VtbWFyaWVzIDJjCnN1bW1hcnkgJT4lCiAga2JsKGRpZ2l0cyA9IDIsIGNhcHRpb24gPSAiVGVhbSBTdW1tYXJpZXMiKSAlPiUKICBrYWJsZV9wYXBlcigiaG92ZXIiLCBmdWxsX3dpZHRoID0gRiwgaHRtbF9mb250ID0gIkNhbWJyaWEiKSAKICAKI3RhYmxlIGZvciBNeSBUZWFtIDJkCm15X3RlYW1fcmVzdWx0cyAlPiUKICBrYmwoZGlnaXRzID0gMSwgY2FwdGlvbiA9ICJNeSBUZWFtIFdpbnMvTG9zc2VzIikgJT4lCiAga2FibGVfcGFwZXIoImhvdmVyIiwgZnVsbF93aWR0aCA9IEYsIGh0bWxfZm9udCA9ICJDYW1icmlhIikKCmBgYAoKIyBIaXN0b2dyYW1zCgpIaXN0b2dyYW0gZGlzY3Vzc2lvbi4uLiAKICBIZXJlIGFyZSBzaWRlIGJ5IHNpZGUgaGlzdG9ncmFtcyBmb3IgLi4uCgoKYGBge3IgZ3JhcGhzLCBpbmNsdWRlPVRSVUUsIGZpZy53aWR0aD00LCBmaWcuaGVpZ2h0PTR9CgpsaWJyYXJ5KGdncGxvdDIpCgpwID0gZGZfaGlzdCAlPiUgCiAgZ2dwbG90KGFlcyh4PXRlYW1fc2NvcmUsIGZpbGw9IHJlc3VsdCkpICsgZ2VvbV9oaXN0b2dyYW0oY29sb3IgPSAiYmx1ZSIsIGFscGhhPTAuNiwgcG9zaXRpb24gPSAnaWRlbnRpdHknKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoICJwdXJwbGUiLCAibGlnaHRibHVlIikpIAogIApib3hwbG90KHRlYW1fc2NvcmUgfiByZXN1bHQsIGRhdGEgPSBkZl9oaXN0LCAKICAgICAgICBjb2wgPSBjKCdsaWdodGJsdWUnLCAnbGlnaHRncmVlbicpLAogICAgICAgIG1haW4gPSAiUG9pbnRzIHNjb3JlZCBieSBnYW1lIHJlc3VsdCIsIAogICAgICAgIHhsYWIgPSAiUmVzdWx0IiwgeWxhYiA9ICJQb2ludHMiKSAgCgpgYGAKCiMgTW9kZWxzCgoKYGBge3IgZmlyc3Qgb3JkZXIgbW9kZWwsIGluY2x1ZGU9RkFMU0V9CiNtb2RlbCAxIGlzIGEgZmlyc3Qgb3JkZXIgbW9kZWwgd2l0aCA0IHRlcm1zIAptb2RlbCA9IGxtKHRlYW1fc2NvcmV+IGZpZWxkX2dvYWxfcGN0ICsgdG90YWxfcmVib3VuZHMgKyB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCsgc3RlYWxzLCBkYXRhPW15X3RlYW0pCnN1bW1hcnkgKG1vZGVsKQoKI2NvcnJlbGF0aW9uIG1hdHJpeCByZXF1aXJlcyBhbGwgcXVhbnRpdGF0aXZlIHZhcmlhYmxlcyBzbyBrZWVwIG9ubHkgdGhvc2UgdmFyaWFibGVzCmNvcl9kYXRhPSBteV90ZWFtICU+JQogIHNlbGVjdCh0ZWFtX3Njb3JlLCBmaWVsZF9nb2FsX3BjdCwgdG90YWxfcmVib3VuZHMsIAogICAgICAgICB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCwgc3RlYWxzKQojY29ycmVsYXRpb24gbWF0cml4CmNvcihjb3JfZGF0YSkKCiNubyB2YXJpYWJsZSBpbnRlcmFjdGlvbnMsIHNvIG5vIG5lZWQgZm9yIGEgcmVkdWNlZCBtb2RlbAoKYGBgCgoKYGBge3IgaW50ZXJhY3Rpb24gbW9kZWwscmVzdWx0cz0nYXNpcycsIGluY2x1ZGU9Rn0KCm1vZGVsMj1sbSh0ZWFtX3Njb3JlfiBmaWVsZF9nb2FsX3BjdCt0b3RhbF9yZWJvdW5kcysKICAgICAgICAgICAgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3Qrc3RlYWxzKwogICAgICAgICAgZmllbGRfZ29hbF9wY3QqdG90YWxfcmVib3VuZHMrIAogICAgICAgICAgICBmaWVsZF9nb2FsX3BjdCp0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCsKICAgICAgICAgICAgZmllbGRfZ29hbF9wY3Qqc3RlYWxzKwogICAgICAgICAgICB0b3RhbF9yZWJvdW5kcyp0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCsKICAgICAgICAgICAgdG90YWxfcmVib3VuZHMqc3RlYWxzKwogICAgICAgICAgICB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCpzdGVhbHMsIGRhdGE9bXlfdGVhbSkKc3VtbWFyeShtb2RlbDIpCgptb2RlbDMgPSBsbSh0ZWFtX3Njb3JlfiBmaWVsZF9nb2FsX3BjdCArIHRvdGFsX3JlYm91bmRzICsgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QsIGRhdGE9bXlfdGVhbSkKbW9kZWwzc3VtPXN1bW1hcnkgKG1vZGVsMykKCgpgYGAKJH4kCgpBZnRlciBhbGwgbW9kZWxzIHdlcmUgcnVuIGFuZCBtb2RlbCByZWR1Y3Rpb24gd2FzIGNvbXBsZXRlZCwgbXkgZmluYWwgbW9kZWwgaXMgdGVhbV9zY29yZT0gYHIgbW9kZWwzJGNvZWZmaWNpZW50c1sxXWArIGByIG1vZGVsMyRjb2VmZmljaWVudHNbMl1gICogZmllbGRfZ29hbF9wY3QgKyBgciBtb2RlbDMkY29lZmZpY2llbnRzWzNdYCAqIHRvdGFsX3JlYm91bmRzICsgYHIgbW9kZWwzJGNvZWZmaWNpZW50c1s0XWAgKiB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCAuIAoKVGhpcyBtb2RlbCBzaWduaWZpY2FudGx5IHByZWRpY3RzIHRlYW0gc2NvcmUsIGYoYHIgbW9kZWwzc3VtJGZzdGF0aXN0aWNbMl1gLCBgciBtb2RlbDNzdW0kZnN0YXRpc3RpY1szXWApID0gYHIgbW9kZWwzc3VtJGZzdGF0aXN0aWNbMV1gLCBwLC4wMDAwMSwgYWRqdXN0ZWQgUl4yPSBgciBtb2RlbDNzdW0kYWRqLnIuc3F1YXJlZGAgLgoKYGBgIHtyIGZpbmFsIHRhYmxlLCByZXN1bHRzPSdhc2lzJywgZWNobz1GLCBpbmNsdWRlPSBULCBtZXNzYWdlPUZ9CmxpYnJhcnkoc3RhcmdhemVyKQpzdGFyZ2F6ZXIobW9kZWwzLCB0eXBlID0gImh0bWwiKQogCmBgYAoKYGBge3IgcmVzaWR1YWxzfQoKaGlzdChtb2RlbDMkcmVzaWR1YWxzKQpwbG90KG1vZGVsMyRmaXR0ZWQudmFsdWVzLCBtb2RlbDMkcmVzaWR1YWxzKQpvbHNfcGxvdF9jb29rc2RfYmFyKG1vZGVsMykKb2xzX3Bsb3RfcmVzaWRfbGV2KG1vZGVsMywgdGhyZXNob2xkID0gMykKYGBgCgoKYGBge3IgcHJlZGljdGlvbiwgaW5jbHVkZT1GQUxTRX0KI3RoaXMgc3VtbWFyeSBpcyBmb3IgZmluZGluZyB0aGUgbWVkaWFuIHZhbHVlcwpzdW1tYXJ5KGNvcl9kYXRhKQojdGhpcyBpcyBhIG5ldyBkYXRhIGZyYW1lIGZvciB0aGUgbWVkaWFuIGdhbWUKbmV3ZGF0YT1kYXRhLmZyYW1lKGZpZWxkX2dvYWxfcGN0PSA0NC4yNSAsIHRvdGFsX3JlYm91bmRzPSAzNi41LCB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdD0gMzYuMjApCiNwcmVkaWN0aW5nIHRoZSBtZWRpYW4gZ2FtZQpwcmVkaWN0aW9uPXByZWRpY3QobW9kZWwzLCBuZXdkYXRhLCBpbnRlcnZhbD0gImNvbmZpZGVuY2UiLCBsZXZlbD0uOTUpCgpgYGAKSSBidWlsdCB0aGlzIG1vZGVsIHRvIHByZWRpY3QgbXkgdGVhbSdzIHBvaW50cyBmb3IgYSBnYW1lIGluIHdoaWNoIHRoZXkgYXJjaGl2ZSB0aGUgbWVkaWFuIHZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiBUaGUgcHJlZGljdGVkIHRlYW0gc2NvcmUgaXMgYHIgcHJlZGljdGlvblsxXWAsIHdpdGggOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgKGByIHByZWRpY3Rpb25bMl1gLCBgciBwcmVkaWN0aW9uWzNdYCkKCg==