hist(
Diabetes$Insulin,
breaks = 20, # Increase the number of bins for better resolution
main = "Histogram plot of Insulin Levels",
col.main = "#008080",
cex.main = 1.5, # Adjust the size of the title
cex.lab = 1.3,
col.lab = c("Maroon"),
font.main = 1, # Use plain (non-bold) font for the title
xlab = "Insulin",
col = adjustcolor("purple", alpha = 0.7), # Adjust alpha for transparency
border = "white", # White borders for better separation
xlim = c(min(Diabetes$Insulin, na.rm = TRUE), max(Diabetes$Insulin, na.rm = TRUE))
)
# Add axis labels
axis(1, at = pretty(Diabetes$Insulin, n = 10), labels = TRUE, col.axis = "darkgray")
axis(2, labels = TRUE, col.axis = "darkgray")
# Addition of a grid for better readability
grid()

NA
NA
NA
This histogram plot illustrates the distribution of the “Insulin”
feature in the “Diabetes” dataset.
The x-axis represents different ranges or bins of insulin values,
and the y-axis shows the frequency of observations within each bin.
The color “purple” is used to fill the bars for visual
distinction.
5.c) Boxplot of SkinThickness column
boxplot(
Diabetes$SkinThickness,
ylab = "Skin Thickness",
col = "#48b5c4",
pch = 19,
border = "black",
main = "Boxplot of Skin Thickness"
)

NA
NA
NA
This boxplot visualizes the distribution of “SkinThickness”
values.
The box represents the interquartile range (IQR), the line inside
the box is the median, and the whiskers extend to the minimum and
maximum values providing insights into the central tendency and spread
of the data.
There’s an outlier in the boxplot close to SKinThickness value,
100.
6.Using ggplot library functions to plot
a) Scatterplot of all combinations of two features- Pregnancies and
Glucose
library(ggplot2)
Warning: package ‘ggplot2’ was built under R version 4.3.2
# Scatter plot using ggplot2
ggplot(Diabetes, aes(x = Pregnancies, y = Glucose, color = factor(Outcome))) +
geom_point(size=2.8, alpha = 1) +
labs(
x = "Pregnancies",
y = "Glucose",
title = "Scatter Plot of Pregnancies and Glucose",
caption = "Source: Iskulghar",
color = "Outcome"
) +
theme_minimal() +
theme(
text = element_text(color = "darkblue", size = 14), # Adjust font color and size
legend.position = "top", # Place legends at the top
axis.text.x = element_text(color = "#FF7F7F", size = 14),
axis.text.y = element_text(color = "#C4A484", size = 14),
plot.title = element_text(color= "maroon", hjust = 0.5),
legend.title = element_text(color = "darkgreen")
)

NA
This scatter plot represents all combinations of the “Glucose” and
“BMI” features, with points colored based on the “Outcome” class (0 or
1).
It includes proper axis labels, title, and a caption. Font colors
and sizes are adjusted for readability, and the legend is positioned at
the top.
b) Boxplot of all column following all instructions
library(reshape2)
Warning: package ‘reshape2’ was built under R version 4.3.2
# Melting data into long format
melted_data <- melt(Diabetes)
No id variables; using all as measure variables
# Boxplot of all columns
ggplot(melted_data, aes(x = variable, y = value, fill = variable)) +
geom_boxplot() +
labs(
x = "Columns",
y = "Values",
title = "Boxplot of All Columns",
caption = "Source: Iskulghar"
) +
theme_bw() +
theme(
text = element_text(color = "darkblue", size = 10.5),
legend.position = "top",
legend.title = element_text(color = "#FF7F7F", size = 13), # Legend title color and size
plot.title = element_text(color= "maroon", hjust = 0.5)
) +
facet_wrap(~variable, scale= "free") # Creation of a facet grid for each column

This boxplot visualizes the distribution of values for all columns
in the “Diabetes” dataset.
The data is melted into long format for easier plotting. Proper axis
labels, title, and a caption are provided.
Font colors and sizes are adjusted, and the legend is positioned at
the top for clarity.
DQoNCg0KLS0tDQp0aXRsZTogIkRhdGEgU2NpZW5jZSBQcm9qZWN0Ig0KYXV0aG9yOiAiU2hvYWliIElibmUgSGFtaWQiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KKipBZmZpbGlhdGlvbioqOiBVbml2ZXJzaXR5IG9mIENoaXR0YWdvbmcNCiAgDQoNCiMjIyBMb2FkaW5nIHRoZSBhc3NpZ25lZCBkYXRhc2V0IGludG8gUiBub3RlYm9vazoNCiMjIyMgQXNzaWduZWQgZGF0YXNldCA9IGRpYWJldHMuY3N2DQojIyMjIyBUaGlzIGRhdGFzZXQgb3JpZ2luYXRlcyBmcm9tIHRoZSBOYXRpb25hbCBJbnN0aXR1dGUgb2YgRGlhYmV0ZXMgYW5kIERpZ2VzdGl2ZSBhbmQgS2lkbmV5IERpc2Vhc2VzLiBUaGUgYWltIGlzIHRvIGZvcmVjYXN0LCBiYXNlZCBvbiBkaWFnbm9zdGljIG1lYXN1cmVtZW50cywgd2hldGhlciBhIHBhdGllbnQgaXMgYWZmbGljdGVkIHdpdGggZGlhYmV0ZXMuIFN0cmluZ2VudCBjcml0ZXJpYSB3ZXJlIGFwcGxpZWQgaW4gc2VsZWN0aW5nIGluc3RhbmNlcyBmcm9tIGEgbGFyZ2VyIGRhdGFiYXNlLCBlbnN1cmluZyB0aGF0IGFsbCBwYXRpZW50cyBpbiB0aGlzIGRhdGFzZXQgYXJlIGZlbWFsZXMsIGF0IGxlYXN0IDIxIHllYXJzIG9sZCwgYW5kIG9mIFBpbWEgSW5kaWFuIGhlcml0YWdlLiBBbGwgY29sdW1ucyBpbiB0aGlzIGRhdGFzZXQgY29uc2lzdCBvZiBudW1lcmljYWwgdmFsdWVzLg0KIyMjIyMgUHJlZ25hbmNpZXM6IE51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBwcmVnbmFuY3kNCiMjIyMjIEdsdWNvc2U6IFBsYXNtYSBnbHVjb3NlIGNvbmNlbnRyYXRpb24gdHdvIGhvdXJzIGFmdGVyIGFuIG9yYWwgZ2x1Y29zZSB0b2xlcmFuY2UgdGVzdA0KIyMjIyMgQmxvb2RQcmVzc3VyZTogIERpYXN0b2xpYyBibG9vZCBwcmVzc3VyZSAobW0gSGcpDQojIyMjIyBTa2luVGhpY2tuZXNzOiBUcmljZXBzIHNraW4gZm9sZCB0aGlja25lc3MgKG1tKQ0KIyMjIyMgSW5zdWxpbjogMi1Ib3VyIHNlcnVtIGluc3VsaW4gKG11IFUvbWwpDQojIyMjIyBCTUk6IEJvZHkgbWFzcyBpbmRleCAod2VpZ2h0IGluIGtnLyhoZWlnaHQgaW4gbSleMikNCiMjIyMjIERpYWJldGVzUGVkaWdyZWVGdW5jdGlvbjogRGlhYmV0ZXMgcGVkaWdyZWUgZnVuY3Rpb24NCiMjIyMjIEFnZTogQWdlICh5ZWFycykNCiMjIyMjIE91dGNvbWU6ICBDbGFzcyB2YXJpYWJsZSAoMCBvciAxKS4gVGhpcyBzZXJ2ZXMgYXMgdGhlIHRhcmdldCBjb2x1bW4sIHdoZXJlICcwJyBpbmRpY2F0ZXMgbm8gZGlzZWFzZSwgYW5kICcxJyBpbmRpY2F0ZXMgdGhlIHByZXNlbmNlIG9mIGRpc2Vhc2UuDQoNCg0KDQoNCiMjIyMjIDEuIFRoZSBhc3NpZ25lZCBkYXRhc2V0ICJkaWFiZXRlcyIgd2FzIGRvd25sb2FkZWQgYW5kIG1vdmVkIGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiBSIHN0dWRpby4NCg0KIyMjIyMgMi4gVGhlbiwgYSBub3RlYm9vayBmaWxlIGlzIGNyZWF0ZWQgaW4gUiBzdHVkaW8gYW5kIHRoZSBkYXRhc2V0IHdhcyBsb2FkZWQgaW50byBhIHZhcmlhYmxlLg0KDQoNCjxzdHlsZT4NCmRpdi50ZWFsIHByZSB7IGJhY2tncm91bmQtY29sb3I6IzkwZWU5MCA7IH0NCmRpdi50ZWFsIHByZS5yIHsgYmFja2dyb3VuZC1jb2xvcjojOTBlZTkwOyB9DQo8L3N0eWxlPg0KDQo8ZGl2IGNsYXNzPSJ0ZWFsIj4NCmBgYHtyfQ0KRGlhYmV0ZXMgPSByZWFkLmNzdigiZGlhYmV0ZXMuY3N2IikNCnByaW50KGhlYWQoRGlhYmV0ZXMpKQ0KDQpgYGANCg0KIyMjIDMuIFNvbWUgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlICJEaWFiYXRlcyIgZGF0YXNldA0KDQoNCiMjIyMgVG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHRoZWlyIG5hbWVzDQo8c3R5bGU+DQpkaXYub2ZmZWUgcHJlIHsgYmFja2dyb3VuZC1jb2xvcjogIzk5ZTdmMDsgfQ0KZGl2Lm9mZmVlIHByZS5yIHsgYmFja2dyb3VuZC1jb2xvcjogIzk5ZTdmMDsgfQ0KPC9zdHlsZT4NCg0KPGRpdiBjbGFzcz0ib2ZmZWUiPg0KYGBge3J9DQoNCmNvbHVtbl9uYW1lcyA8LSBjb2xuYW1lcyhEaWFiZXRlcykNCm51bV9jb2x1bW5zIDwtIGxlbmd0aChjb2x1bW5fbmFtZXMpDQoNCiMgY29sdW1uIG5hbWVzIGFuZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMNCmNhdCgiQ29sdW1uIG5hbWVzIG9mIERpYWJldGVzIGFyZSIsIGNvbHVtbl9uYW1lcywgIlxuIiwiXG4iKQ0KY2F0KCJUb3RhbCBudW1iZXIgb2YgY29sdW1ucyBpcyIsIG51bV9jb2x1bW5zKQ0KYGBgDQoNCiMjIyBhKSBGaW5kaW5nIG91dCB0aGUgbnVtZXJpY2FsIGNvbHVtbnMNCg0KPHN0eWxlPg0KZGl2Lmx5ZWxsIHByZSB7IGJhY2tncm91bmQtY29sb3I6ICNmZmZkYWY7IH0NCmRpdi5seWVsbCBwcmUuciB7IGJhY2tncm91bmQtY29sb3I6ICNmZmZkYWY7IH0NCjwvc3R5bGU+DQoNCjxkaXYgY2xhc3M9Imx5ZWxsIj4NCmBgYHtyfQ0KDQpudW1lcmljYWxfY29sdW1ucyA8LSBzYXBwbHkoRGlhYmV0ZXMsIGlzLm51bWVyaWMpICNleHRyYWN0aW9uIG9mIHRoZSBudW1lcmljYWwgY29sdW1ucw0KDQpudW1lcmljYWxfY29sdW1uX25hbWVzIDwtIG5hbWVzKG51bWVyaWNhbF9jb2x1bW5zKVtudW1lcmljYWxfY29sdW1uc10NCg0KcHJpbnQobnVtZXJpY2FsX2NvbHVtbl9uYW1lcykNCg0KYGBgDQojIyMjIyBBbGwgOSBjb2x1bW5zIG9mIHRoZSBkYXRhc2V0cyBhcmUgbnVtZXJpY2FsLg0KDQojIyMgYikgRmluZGluZyBvdXQgdGhlIGNoYXJhY3RlciBjb2x1bW5zDQoNCg0KYGBge3J9DQpjaGFyYWN0ZXJfY29sdW1ucyA8LSBzYXBwbHkoRGlhYmV0ZXMsIGlzLmNoYXJhY3RlcikgIyBFeHRyYWN0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgY29sdW1ucw0KDQpjaGFyYWN0ZXJfY29sdW1uX25hbWVzIDwtIG5hbWVzKGNoYXJhY3Rlcl9jb2x1bW5zKVtjaGFyYWN0ZXJfY29sdW1uc10NCg0KcHJpbnQoY2hhcmFjdGVyX2NvbHVtbl9uYW1lcykNCmBgYA0KIyMjIyBTbywgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIGNvbHVtbnMgaW4gdGhlIGRhdGFzZXQuDQoNCg0KDQojIyMjIGMpIFRhcmdldCB2YXJpYWJsZSBvZiB0aGUgZGF0YXNldCBpcyAiT3V0Y29tZSIuDQoNCg0KDQoNCiMjIyMgNC4gVGhlcmUgYXJlIG5vIGNhdGVnb3JpY2FsIGNvbHVtbnMgaW4gdGhlIGRhdGFzZXQuDQoNCg0KIyMjIDUuYSkgU2NhdHRlciBwbG90IG9mIFByZWduYW5jaWVzIGFuZCBCbG9vZFByZXNzdXJlDQoNCjxzdHlsZT4NCmRpdi5nbHVlIHByZSB7IGJhY2tncm91bmQtY29sb3I6ICAjQ0JDM0UzOyB9DQpkaXYuZ2x1ZSBwcmUuciB7IGJhY2tncm91bmQtY29sb3I6ICAjQ0JDM0UzOyB9DQo8L3N0eWxlPg0KDQo8ZGl2IGNsYXNzPSJnbHVlIj4NCmBgYHtyfQ0KRGlhYmV0ZXMgPC0gbmEub21pdChEaWFiZXRlcykgICAjIGRhdGFfY2xlYW5pbmcNCnByaW50KERpYWJldGVzKQ0KdmFyaWV0eV9jb2xvciA9IGFzLm51bWVyaWMoZmFjdG9yKERpYWJldGVzJE91dGNvbWUpKQ0KDQpwbG90KA0KICB4ID0gRGlhYmV0ZXMkUHJlZ25hbmNpZXMsDQogIHkgPSBEaWFiZXRlcyRCbG9vZFByZXNzdXJlLA0KICBjb2wgPSB2YXJpZXR5X2NvbG9yLA0KICBwY2ggPSAxOSwNCiAgY2V4ID0gMS4zLA0KICANCiAgeGxhYiA9ICJQcmVnbmFuY2llcyIsDQogIHlsYWIgPSAiQmxvb2QgUHJlc3N1cmUiLA0KICBtYWluID0gIlNjYXR0ZXIgUGxvdCBvZiBQcmVnbmFuY2llcyB2cyBCbG9vZCBQcmVzc3VyZSIsDQopDQoNCiMgQSBsZWdlbmQgd2l0aCBtb3JlIGRlc2NyaXB0aXZlIGxhYmVscw0KbGVnZW5kKA0KICAidG9wcmlnaHQiLA0KICBsZWdlbmQgPSBjKCJObyBEaWFiZXRlcyIsICJEaWFiZXRlcyIpLCAgIyBEZXNjcmlwdGl2ZSBsYWJlbHMNCiAgY29sPSAxOjIsDQogIHBjaCA9IDE5LA0KICB0aXRsZSA9ICJPdXRjb21lIg0KKQ0KYGBgDQojIyMjIyBUaGlzIHNjYXR0ZXIgcGxvdCB2aXN1YWxpemVzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBQcmVnbmFuY2llcyBhbmQgQmxvb2QgLg0KIyMjIyMgRWFjaCBwb2ludCBpcyBjb2xvcmVkIGJhc2VkIG9uIHRoZSAiT3V0Y29tZSIgKDAgb3IgMSksIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgY2xhc3Nlcy4gVGhlIGxlZ2VuZCBpbmRpY2F0ZXMgd2hpY2ggY29sb3IgY29ycmVzcG9uZHMgdG8gZWFjaCBjbGFzcy4NCg0KDQoNCg0KIyMjIDUuYikgSGlzdG9ncmFtIG9mIEluc3VsaW4gY29sdW1uDQo8c3R5bGU+DQpkaXYuY29mIHByZSB7IGJhY2tncm91bmQtY29sb3I6ICNmOWYwOWE7IH0NCmRpdi5jb2YgcHJlLnIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmMDlhOyB9DQo8L3N0eWxlPg0KDQo8ZGl2IGNsYXNzPSJjb2YiPg0KYGBge3J9DQpoaXN0KA0KICBEaWFiZXRlcyRJbnN1bGluLA0KICBicmVha3MgPSAyMCwgICMgSW5jcmVhc2UgdGhlIG51bWJlciBvZiBiaW5zIGZvciBiZXR0ZXIgcmVzb2x1dGlvbg0KICBtYWluID0gIkhpc3RvZ3JhbSBwbG90IG9mIEluc3VsaW4gTGV2ZWxzIiwNCiAgDQogIGNvbC5tYWluID0gIiMwMDgwODAiLA0KICBjZXgubWFpbiA9IDEuNSwgICAgIyBBZGp1c3QgdGhlIHNpemUgb2YgdGhlIHRpdGxlDQogIGNleC5sYWIgPSAxLjMsDQogIGNvbC5sYWIgPSBjKCJNYXJvb24iKSwNCiAgZm9udC5tYWluID0gMSwgICAgICAjIFVzZSBwbGFpbiAobm9uLWJvbGQpIGZvbnQgZm9yIHRoZSB0aXRsZQ0KICB4bGFiID0gIkluc3VsaW4iLA0KICBjb2wgPSBhZGp1c3Rjb2xvcigicHVycGxlIiwgYWxwaGEgPSAwLjcpLCAgIyBBZGp1c3QgYWxwaGEgZm9yIHRyYW5zcGFyZW5jeQ0KICBib3JkZXIgPSAid2hpdGUiLCAgIyBXaGl0ZSBib3JkZXJzIGZvciBiZXR0ZXIgc2VwYXJhdGlvbg0KICB4bGltID0gYyhtaW4oRGlhYmV0ZXMkSW5zdWxpbiwgbmEucm0gPSBUUlVFKSwgbWF4KERpYWJldGVzJEluc3VsaW4sIG5hLnJtID0gVFJVRSkpDQopDQoNCiMgQWRkIGF4aXMgbGFiZWxzDQpheGlzKDEsIGF0ID0gcHJldHR5KERpYWJldGVzJEluc3VsaW4sIG4gPSAxMCksIGxhYmVscyA9IFRSVUUsIGNvbC5heGlzID0gImRhcmtncmF5IikNCmF4aXMoMiwgbGFiZWxzID0gVFJVRSwgY29sLmF4aXMgPSAiZGFya2dyYXkiKQ0KDQojIEFkZGl0aW9uIG9mIGEgZ3JpZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5DQpncmlkKCkNCg0KDQoNCmBgYA0KDQoNCiMjIyMjICBUaGlzIGhpc3RvZ3JhbSBwbG90IGlsbHVzdHJhdGVzIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlICJJbnN1bGluIiBmZWF0dXJlIGluIHRoZSAiRGlhYmV0ZXMiIGRhdGFzZXQuDQojIyMjIyBUaGUgeC1heGlzIHJlcHJlc2VudHMgZGlmZmVyZW50IHJhbmdlcyBvciBiaW5zIG9mIGluc3VsaW4gdmFsdWVzLCBhbmQgdGhlIHktYXhpcyBzaG93cyB0aGUgZnJlcXVlbmN5IG9mIG9ic2VydmF0aW9ucyB3aXRoaW4gZWFjaCBiaW4uDQojIyMjIyBUaGUgY29sb3IgInB1cnBsZSIgaXMgdXNlZCB0byBmaWxsIHRoZSBiYXJzIGZvciB2aXN1YWwgZGlzdGluY3Rpb24uDQoNCg0KDQoNCiMjIyA1LmMpIEJveHBsb3Qgb2YgU2tpblRoaWNrbmVzcyBjb2x1bW4NCjxzdHlsZT4NCmRpdi5jb2ZmZSBwcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjQjZGRkJCOyB9DQpkaXYuY29mZmUgcHJlLnIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjQjZGRkJCOyB9DQo8L3N0eWxlPg0KDQo8ZGl2IGNsYXNzPSJjb2ZmZSI+DQpgYGB7cn0NCmJveHBsb3QoDQogIERpYWJldGVzJFNraW5UaGlja25lc3MsDQogIHlsYWIgPSAiU2tpbiBUaGlja25lc3MiLA0KICBjb2wgPSAiIzQ4YjVjNCIsDQogIHBjaCA9IDE5LA0KICBib3JkZXIgPSAiYmxhY2siLA0KICBtYWluID0gIkJveHBsb3Qgb2YgU2tpbiBUaGlja25lc3MiDQopDQoNCg0KICAgICAgICANCmBgYA0KIyMjIyMgVGhpcyBib3hwbG90IHZpc3VhbGl6ZXMgdGhlIGRpc3RyaWJ1dGlvbiBvZiAiU2tpblRoaWNrbmVzcyIgdmFsdWVzLg0KIyMjIyMgVGhlIGJveCByZXByZXNlbnRzIHRoZSBpbnRlcnF1YXJ0aWxlIHJhbmdlIChJUVIpLCB0aGUgbGluZSBpbnNpZGUgdGhlIGJveCBpcyB0aGUgbWVkaWFuLCBhbmQgdGhlIHdoaXNrZXJzIGV4dGVuZCB0byB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgcHJvdmlkaW5nIGluc2lnaHRzIGludG8gdGhlIGNlbnRyYWwgdGVuZGVuY3kgYW5kIHNwcmVhZCBvZiB0aGUgZGF0YS4NCiMjIyMjIFRoZXJlJ3MgYW4gb3V0bGllciBpbiB0aGUgYm94cGxvdCBjbG9zZSB0byBTS2luVGhpY2tuZXNzIHZhbHVlLCAxMDAuDQoNCg0KDQoNCiMgNi5Vc2luZyBnZ3Bsb3QgbGlicmFyeSBmdW5jdGlvbnMgdG8gcGxvdA0KDQojIyMgYSkgU2NhdHRlcnBsb3Qgb2YgYWxsIGNvbWJpbmF0aW9ucyBvZiB0d28gZmVhdHVyZXMtIFByZWduYW5jaWVzIGFuZCBHbHVjb3NlDQo8c3R5bGU+DQpkaXYuc29yYW5nZSBwcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiZTkwOyB9DQpkaXYuc29yYW5nZSBwcmUuciB7IGJhY2tncm91bmQtY29sb3I6ICNmZmJlOTA7IH0NCjwvc3R5bGU+DQoNCjxkaXYgY2xhc3M9InNvcmFuZ2UiPg0KYGBge3J9DQoNCg0KbGlicmFyeShnZ3Bsb3QyKQ0KDQojIFNjYXR0ZXIgcGxvdCB1c2luZyBnZ3Bsb3QyDQpnZ3Bsb3QoRGlhYmV0ZXMsIGFlcyh4ID0gUHJlZ25hbmNpZXMsIHkgPSBHbHVjb3NlLCBjb2xvciA9IGZhY3RvcihPdXRjb21lKSkpICsNCiAgZ2VvbV9wb2ludChzaXplPTIuOCwgYWxwaGEgPSAxKSArDQogIGxhYnMoDQogICAgeCA9ICJQcmVnbmFuY2llcyIsDQogICAgeSA9ICJHbHVjb3NlIiwNCiAgICB0aXRsZSA9ICJTY2F0dGVyIFBsb3Qgb2YgUHJlZ25hbmNpZXMgYW5kIEdsdWNvc2UiLA0KICAgIGNhcHRpb24gPSAiU291cmNlOiBJc2t1bGdoYXIiLA0KICAgIGNvbG9yID0gIk91dGNvbWUiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgdGhlbWUoDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJkYXJrYmx1ZSIsIHNpemUgPSAxNCksICAjIEFkanVzdCBmb250IGNvbG9yIGFuZCBzaXplDQogICAgbGVnZW5kLnBvc2l0aW9uID0gInRvcCIsICAjIFBsYWNlIGxlZ2VuZHMgYXQgdGhlIHRvcA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIiNGRjdGN0YiLCBzaXplID0gMTQpLA0KICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIiNDNEE0ODQiLCBzaXplID0gMTQpLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3I9ICJtYXJvb24iLCBoanVzdCA9IDAuNSksDQogIA0KICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJkYXJrZ3JlZW4iKQ0KICApDQogIA0KYGBgDQojIyMjIyBUaGlzIHNjYXR0ZXIgcGxvdCByZXByZXNlbnRzIGFsbCBjb21iaW5hdGlvbnMgb2YgdGhlICJHbHVjb3NlIiBhbmQgIkJNSSIgZmVhdHVyZXMsIHdpdGggcG9pbnRzIGNvbG9yZWQgYmFzZWQgb24gdGhlICJPdXRjb21lIiBjbGFzcyAoMCBvciAxKS4NCiMjIyMjIEl0IGluY2x1ZGVzIHByb3BlciBheGlzIGxhYmVscywgdGl0bGUsIGFuZCBhIGNhcHRpb24uIEZvbnQgY29sb3JzIGFuZCBzaXplcyBhcmUgYWRqdXN0ZWQgZm9yIHJlYWRhYmlsaXR5LCBhbmQgdGhlIGxlZ2VuZCBpcyBwb3NpdGlvbmVkIGF0IHRoZSB0b3AuDQoNCiMjIyBiKSBCb3hwbG90IG9mIGFsbCBjb2x1bW4gZm9sbG93aW5nIGFsbCBpbnN0cnVjdGlvbnMNCjxzdHlsZT4NCmRpdi5jb2ZmZWUgcHJlIHsgYmFja2dyb3VuZC1jb2xvcjogI2Y1YzJjMjsgfQ0KZGl2LmNvZmZlZSBwcmUuciB7IGJhY2tncm91bmQtY29sb3I6ICNmNWMyYzI7IH0NCjwvc3R5bGU+DQoNCjxkaXYgY2xhc3M9ImNvZmZlZSI+DQpgYGB7cn0NCmxpYnJhcnkocmVzaGFwZTIpDQoNCg0KIyBNZWx0aW5nIGRhdGEgaW50byBsb25nIGZvcm1hdA0KbWVsdGVkX2RhdGEgPC0gbWVsdChEaWFiZXRlcykNCiMgQm94cGxvdCBvZiBhbGwgY29sdW1ucw0KZ2dwbG90KG1lbHRlZF9kYXRhLCBhZXMoeCA9IHZhcmlhYmxlLCB5ID0gdmFsdWUsIGZpbGwgPSB2YXJpYWJsZSkpICsNCiAgZ2VvbV9ib3hwbG90KCkgKw0KICBsYWJzKA0KICAgIHggPSAiQ29sdW1ucyIsDQogICAgeSA9ICJWYWx1ZXMiLA0KICAgIHRpdGxlID0gIkJveHBsb3Qgb2YgQWxsIENvbHVtbnMiLA0KICAgIGNhcHRpb24gPSAiU291cmNlOiBJc2t1bGdoYXIiDQogICkgKw0KICB0aGVtZV9idygpICsNCiAgdGhlbWUoDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJkYXJrYmx1ZSIsIHNpemUgPSAxMC41KSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIiwNCiAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiI0ZGN0Y3RiIsIHNpemUgPSAxMyksICAjIExlZ2VuZCB0aXRsZSBjb2xvciBhbmQgc2l6ZQ0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3I9ICJtYXJvb24iLCBoanVzdCA9IDAuNSkNCiAgKSArDQogIGZhY2V0X3dyYXAofnZhcmlhYmxlLCBzY2FsZT0gImZyZWUiKSAgIyBDcmVhdGlvbiBvZiBhIGZhY2V0IGdyaWQgZm9yIGVhY2ggY29sdW1uDQoNCmBgYA0KIyMjIyMgVGhpcyBib3hwbG90IHZpc3VhbGl6ZXMgdGhlIGRpc3RyaWJ1dGlvbiBvZiB2YWx1ZXMgZm9yIGFsbCBjb2x1bW5zIGluIHRoZSAiRGlhYmV0ZXMiIGRhdGFzZXQuDQojIyMjIyBUaGUgZGF0YSBpcyBtZWx0ZWQgaW50byBsb25nIGZvcm1hdCBmb3IgZWFzaWVyIHBsb3R0aW5nLiBQcm9wZXIgYXhpcyBsYWJlbHMsIHRpdGxlLCBhbmQgYSBjYXB0aW9uIGFyZSBwcm92aWRlZC4NCiMjIyMjIEZvbnQgY29sb3JzIGFuZCBzaXplcyBhcmUgYWRqdXN0ZWQsIGFuZCB0aGUgbGVnZW5kIGlzIHBvc2l0aW9uZWQgYXQgdGhlIHRvcCBmb3IgY2xhcml0eS4NCg==