Introduction

For this assignment, I used the data set “Students’ Academic Performance Data set” from Kaggle. This is an educational data set which is collected from learning management system (LMS) called Kalboard 360. The data is collected using a learning activity tracker tool which is called experience API. The data set contains 480 student records of which 305 are male and 175 are female. There are a total of 16 variables in this data set that are classified into three major categories: (1) Demographic features such as gender and nationality, (2) Academic background features such as educational stage, grade level and section, (3) Behavioral Features such as raised hand in class, viewing resources, answering survey by parents, and school satisfaction.

Research Question and Hypotheses

The purpose of this analysis is to examine how males and females differ in terms of using resources, raising their hands, academic performance, etc. using ggplot extensions. I created visualizations using ggplot extensions to demonstrate the relationship between various variables which I hypothesize affects student success in school. I believe students who visit resources the most often will obtain high grade marks because this enables students to refresh their minds about the course content. Students who are serious and want to perform well in a course will continue to go back to the resources to learn much as possible about the course requirements and assignments. The number of times students visit resources will be positively correlated with high grade marks. I also believe students who raise their hands the most in school will have high grades because the more questions students ask or the more questions they answer during school demonstrate the level of understanding of students in different subjects. I will investigate the strength of the relationship between the number of times students raised their hands in class with the number of times they visit resources. Discussion groups is another interesting variable I explored because participation is an important part of the overall grade. I want to see the relationship between males and females who participate in discussion groups and view announcements often to their overall grades and see if this affects their success. Lastly, I will explore the relationship between participation is discussion groups and raised hands among males and females.

Defining Variables

grades1: grade level of the student (Ordered Categorical Dependent Variable)

The students are classified into three numerical intervals based on their total grade/mark:

Low-Level: interval includes values from 0 to 69,

Middle-Level: interval includes values from 70 to 89,

High-Level: interval includes values from 90-100.

visitedresources: how many times the student visits a course content(numeric:0-100)

raisedhands: how many times the student raises his/her hand in the classroom (numeric:0-100)

discussiongroups: how many times the student participate in discussion groups (numeric:0-100)

gender: whether the student is male of female

Importing and previewing the data set

library(readr)
Student_Academic_Data<-read_csv("C:\\Users\\Sangita Roy\\Desktop\\Student_Academic_Data.csv")
head(Student_Academic_Data)
nrow(Student_Academic_Data)
[1] 480

Cleaning up the data set

library(dplyr)
Student_Data1<- Student_Academic_Data %>% 
  rename(Nationality=NationalITy,
  visitedresources=VisITedResources,
  Grades=Class) %>%
  mutate(grades1= factor(Grades, ordered=TRUE, levels=c("L", "M", "H")),
         gender = as.factor(gender),
         StudentAbsenceDays=as.factor(StudentAbsenceDays),
         StageID=as.factor(StageID)) %>%
  mutate(Relation=as.factor(Relation))
  head(Student_Data1)

Viewing the differences in student performance based on the average number of hands raised in class

library(ggplot2)
ggplot(data=Student_Data1)+geom_col(aes(x=grades1, y=mean(raisedhands), fill=grades1))

Grouping the data by gender and grades

Summarizing the data by the average number of hands raised, announcements viewed, participation in discussion groups, and visited resources

student2<-Student_Data1%>%
  group_by(gender, grades1)%>%
   summarize(N=n(), raisedhands=mean(raisedhands),
            AnnouncementsView=mean(AnnouncementsView), 
            discussion=mean(Discussion),
            resources=mean(visitedresources))
print(student2)

Gender differences in academic performance, number of times hands raised, announcements viewed, participation in discussion groups, and viewed resources

studentF<-student2%>%
  filter(gender=="F")%>%
mutate(percent=N/sum(.$N)*100)
print(studentF)
studentM<-student2%>%
  filter(gender=="M")%>%
  mutate(percent=N/sum(.$N)*100)
print(studentM)

Gender differences in student academic performance

library(ggplot2)
library(cowplot)
femalegrades<-ggplot(data=studentF)+geom_col(aes(x=grades1, y=percent, fill=grades1))
malegrades<-ggplot(data=studentM)+geom_col(aes(x=grades1, y=percent, fill=grades1))
plot_grid(femalegrades, malegrades, labels=c("females", "males"))

Gender differences in student performance based on the relationship between the number of raised hands and visited resources

library(ggplot2)
library(ggthemes)
ggplot(data=Student_Data1)+
  geom_point(aes(x=raisedhands, y=visitedresources, color=grades1))+
  facet_wrap(~gender)+
  theme_solarized()

NA

Gender differences in student performance based on the relationship between the number of announcements viewed and participation in discussion groups

ggplot(data=Student_Data1)+
  geom_point(aes(x=AnnouncementsView, y=Discussion, color=grades1))+
  facet_wrap(~gender)+
  theme_grey()

Gender differences in student performance based on the relationship between the number of raised hands and participation in discussion groups

ggplot(data=Student_Data1)+
  geom_point(aes(x=raisedhands, y=Discussion, color=grades1))+
  facet_wrap(~gender)+
  theme_igray()

References

Amrieh, E. A., Hamtini, T., & Aljarah, I. (2016). Mining Educational Data to Predict Student’s academic Performance using Ensemble Methods. International Journal of Database Theory and Application, 9(8), 119-136.

Amrieh, E. A., Hamtini, T., & Aljarah, I. (2015, November). Preprocessing and analyzing educational data set using X-API for improving student’s performance. In Applied Electrical Engineering and Computing Technologies (AEECT), 2015 IEEE Jordan Conference on (pp. 1-5). IEEE.

LS0tDQp0aXRsZTogIlZpc3VhbGl6YXRpb25zIG9mIERpZmZlcmVuY2VzIGluIFN0dWRlbnQgQWNhZGVtaWMgQWNoaWV2ZW1lbnQiDQphdXRob3I6ICJTYW5naXRhIFJveSINCmRhdGU6ICJBcHJpbCAxNSwgMjAxOCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjKipJbnRyb2R1Y3Rpb24qKg0KDQpGb3IgdGhpcyBhc3NpZ25tZW50LCBJIHVzZWQgdGhlIGRhdGEgc2V0ICJTdHVkZW50cycgQWNhZGVtaWMgUGVyZm9ybWFuY2UgRGF0YSBzZXQiIGZyb20gS2FnZ2xlLiBUaGlzIGlzIGFuIGVkdWNhdGlvbmFsIGRhdGEgc2V0IHdoaWNoIGlzIGNvbGxlY3RlZCBmcm9tIGxlYXJuaW5nIG1hbmFnZW1lbnQgc3lzdGVtIChMTVMpIGNhbGxlZCBLYWxib2FyZCAzNjAuIFRoZSBkYXRhIGlzIGNvbGxlY3RlZCB1c2luZyBhIGxlYXJuaW5nIGFjdGl2aXR5IHRyYWNrZXIgdG9vbCB3aGljaCBpcyBjYWxsZWQgZXhwZXJpZW5jZSBBUEkuIFRoZSBkYXRhIHNldCBjb250YWlucyA0ODAgc3R1ZGVudCByZWNvcmRzIG9mIHdoaWNoIDMwNSBhcmUgbWFsZSBhbmQgMTc1IGFyZSBmZW1hbGUuIFRoZXJlIGFyZSBhIHRvdGFsIG9mIDE2IHZhcmlhYmxlcyBpbiB0aGlzIGRhdGEgc2V0IHRoYXQgYXJlIGNsYXNzaWZpZWQgaW50byB0aHJlZSBtYWpvciBjYXRlZ29yaWVzOiAoMSkgRGVtb2dyYXBoaWMgZmVhdHVyZXMgc3VjaCBhcyBnZW5kZXIgYW5kIG5hdGlvbmFsaXR5LCAoMikgQWNhZGVtaWMgYmFja2dyb3VuZCBmZWF0dXJlcyBzdWNoIGFzIGVkdWNhdGlvbmFsIHN0YWdlLCBncmFkZSBsZXZlbCBhbmQgc2VjdGlvbiwgKDMpIEJlaGF2aW9yYWwgRmVhdHVyZXMgc3VjaCBhcyByYWlzZWQgaGFuZCBpbiBjbGFzcywgdmlld2luZyByZXNvdXJjZXMsIGFuc3dlcmluZyBzdXJ2ZXkgYnkgcGFyZW50cywgYW5kIHNjaG9vbCBzYXRpc2ZhY3Rpb24uDQoNCg0KIyMqKlJlc2VhcmNoIFF1ZXN0aW9uIGFuZCBIeXBvdGhlc2VzKioNClRoZSBwdXJwb3NlIG9mIHRoaXMgYW5hbHlzaXMgaXMgdG8gZXhhbWluZSBob3cgbWFsZXMgYW5kIGZlbWFsZXMgZGlmZmVyIGluIHRlcm1zIG9mIHVzaW5nIHJlc291cmNlcywgcmFpc2luZyB0aGVpciBoYW5kcywgYWNhZGVtaWMgcGVyZm9ybWFuY2UsIGV0Yy4gdXNpbmcgZ2dwbG90IGV4dGVuc2lvbnMuIEkgY3JlYXRlZCB2aXN1YWxpemF0aW9ucyB1c2luZyBnZ3Bsb3QgZXh0ZW5zaW9ucyB0byBkZW1vbnN0cmF0ZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdmFyaW91cyB2YXJpYWJsZXMgd2hpY2ggSSBoeXBvdGhlc2l6ZSBhZmZlY3RzIHN0dWRlbnQgc3VjY2VzcyBpbiBzY2hvb2wuIEkgYmVsaWV2ZSBzdHVkZW50cyB3aG8gdmlzaXQgcmVzb3VyY2VzIHRoZSBtb3N0IG9mdGVuIHdpbGwgb2J0YWluIGhpZ2ggZ3JhZGUgbWFya3MgYmVjYXVzZSB0aGlzIGVuYWJsZXMgc3R1ZGVudHMgdG8gcmVmcmVzaCB0aGVpciBtaW5kcyBhYm91dCB0aGUgY291cnNlIGNvbnRlbnQuIFN0dWRlbnRzIHdobyBhcmUgc2VyaW91cyBhbmQgd2FudCB0byBwZXJmb3JtIHdlbGwgaW4gYSBjb3Vyc2Ugd2lsbCBjb250aW51ZSB0byBnbyBiYWNrIHRvIHRoZSByZXNvdXJjZXMgdG8gbGVhcm4gbXVjaCBhcyBwb3NzaWJsZSBhYm91dCB0aGUgY291cnNlIHJlcXVpcmVtZW50cyBhbmQgYXNzaWdubWVudHMuIFRoZSBudW1iZXIgb2YgdGltZXMgc3R1ZGVudHMgdmlzaXQgcmVzb3VyY2VzIHdpbGwgYmUgcG9zaXRpdmVseSBjb3JyZWxhdGVkIHdpdGggaGlnaCBncmFkZSBtYXJrcy4gSSBhbHNvIGJlbGlldmUgc3R1ZGVudHMgd2hvIHJhaXNlIHRoZWlyIGhhbmRzIHRoZSBtb3N0IGluIHNjaG9vbCB3aWxsIGhhdmUgaGlnaCBncmFkZXMgYmVjYXVzZSB0aGUgbW9yZSBxdWVzdGlvbnMgc3R1ZGVudHMgYXNrIG9yIHRoZSBtb3JlIHF1ZXN0aW9ucyB0aGV5IGFuc3dlciBkdXJpbmcgc2Nob29sIGRlbW9uc3RyYXRlIHRoZSBsZXZlbCBvZiB1bmRlcnN0YW5kaW5nIG9mIHN0dWRlbnRzIGluIGRpZmZlcmVudCBzdWJqZWN0cy4gSSB3aWxsIGludmVzdGlnYXRlIHRoZSBzdHJlbmd0aCBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIG51bWJlciBvZiB0aW1lcyBzdHVkZW50cyByYWlzZWQgdGhlaXIgaGFuZHMgaW4gY2xhc3Mgd2l0aCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZXkgdmlzaXQgcmVzb3VyY2VzLiBEaXNjdXNzaW9uIGdyb3VwcyBpcyBhbm90aGVyIGludGVyZXN0aW5nIHZhcmlhYmxlIEkgZXhwbG9yZWQgYmVjYXVzZSBwYXJ0aWNpcGF0aW9uIGlzIGFuIGltcG9ydGFudCBwYXJ0IG9mIHRoZSBvdmVyYWxsIGdyYWRlLiBJIHdhbnQgdG8gc2VlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtYWxlcyBhbmQgZmVtYWxlcyB3aG8gcGFydGljaXBhdGUgaW4gZGlzY3Vzc2lvbiBncm91cHMgYW5kIHZpZXcgYW5ub3VuY2VtZW50cyBvZnRlbiB0byB0aGVpciBvdmVyYWxsIGdyYWRlcyBhbmQgc2VlIGlmIHRoaXMgYWZmZWN0cyB0aGVpciBzdWNjZXNzLiBMYXN0bHksIEkgd2lsbCBleHBsb3JlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYXJ0aWNpcGF0aW9uIGlzIGRpc2N1c3Npb24gZ3JvdXBzIGFuZCByYWlzZWQgaGFuZHMgYW1vbmcgbWFsZXMgYW5kIGZlbWFsZXMuIA0KDQoNCiMjRGVmaW5pbmcgVmFyaWFibGVzDQoNCioqZ3JhZGVzMSoqOiBncmFkZSBsZXZlbCBvZiB0aGUgc3R1ZGVudCAoT3JkZXJlZCBDYXRlZ29yaWNhbCBEZXBlbmRlbnQgVmFyaWFibGUpIA0KDQpUaGUgc3R1ZGVudHMgYXJlIGNsYXNzaWZpZWQgaW50byB0aHJlZSBudW1lcmljYWwgaW50ZXJ2YWxzIGJhc2VkIG9uIHRoZWlyIHRvdGFsIGdyYWRlL21hcms6DQoNCkxvdy1MZXZlbDogaW50ZXJ2YWwgaW5jbHVkZXMgdmFsdWVzIGZyb20gMCB0byA2OSwNCg0KTWlkZGxlLUxldmVsOiBpbnRlcnZhbCBpbmNsdWRlcyB2YWx1ZXMgZnJvbSA3MCB0byA4OSwNCg0KSGlnaC1MZXZlbDogaW50ZXJ2YWwgaW5jbHVkZXMgdmFsdWVzIGZyb20gOTAtMTAwLg0KDQoNCioqdmlzaXRlZHJlc291cmNlcyoqOiBob3cgbWFueSB0aW1lcyB0aGUgc3R1ZGVudCB2aXNpdHMgYSBjb3Vyc2UgDQpjb250ZW50KG51bWVyaWM6MC0xMDApDQoNCioqcmFpc2VkaGFuZHMqKjogaG93IG1hbnkgdGltZXMgdGhlIHN0dWRlbnQgcmFpc2VzIGhpcy9oZXIgaGFuZCBpbiB0aGUgY2xhc3Nyb29tIChudW1lcmljOjAtMTAwKQ0KDQoqKmRpc2N1c3Npb25ncm91cHMqKjogaG93IG1hbnkgdGltZXMgdGhlIHN0dWRlbnQgcGFydGljaXBhdGUgaW4gZGlzY3Vzc2lvbiBncm91cHMgKG51bWVyaWM6MC0xMDApDQoNCioqZ2VuZGVyKio6IHdoZXRoZXIgdGhlIHN0dWRlbnQgaXMgbWFsZSBvZiBmZW1hbGUNCg0KDQojI0ltcG9ydGluZyBhbmQgcHJldmlld2luZyB0aGUgZGF0YSBzZXQNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KHJlYWRyKQ0KU3R1ZGVudF9BY2FkZW1pY19EYXRhPC1yZWFkX2NzdigiQzpcXFVzZXJzXFxTYW5naXRhIFJveVxcRGVza3RvcFxcU3R1ZGVudF9BY2FkZW1pY19EYXRhLmNzdiIpDQpoZWFkKFN0dWRlbnRfQWNhZGVtaWNfRGF0YSkNCm5yb3coU3R1ZGVudF9BY2FkZW1pY19EYXRhKQ0KYGBgDQoNCg0KIyNDbGVhbmluZyB1cCB0aGUgZGF0YSBzZXQNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGRwbHlyKQ0KU3R1ZGVudF9EYXRhMTwtIFN0dWRlbnRfQWNhZGVtaWNfRGF0YSAlPiUgDQogIHJlbmFtZShOYXRpb25hbGl0eT1OYXRpb25hbElUeSwNCiAgdmlzaXRlZHJlc291cmNlcz1WaXNJVGVkUmVzb3VyY2VzLA0KICBHcmFkZXM9Q2xhc3MpICU+JQ0KICBtdXRhdGUoZ3JhZGVzMT0gZmFjdG9yKEdyYWRlcywgb3JkZXJlZD1UUlVFLCBsZXZlbHM9YygiTCIsICJNIiwgIkgiKSksDQogICAgICAgICBnZW5kZXIgPSBhcy5mYWN0b3IoZ2VuZGVyKSwNCiAgICAgICAgIFN0dWRlbnRBYnNlbmNlRGF5cz1hcy5mYWN0b3IoU3R1ZGVudEFic2VuY2VEYXlzKSwNCiAgICAgICAgIFN0YWdlSUQ9YXMuZmFjdG9yKFN0YWdlSUQpKSAlPiUNCiAgbXV0YXRlKFJlbGF0aW9uPWFzLmZhY3RvcihSZWxhdGlvbikpDQoNCiAgaGVhZChTdHVkZW50X0RhdGExKQ0KYGBgDQoNCiMjIFZpZXdpbmcgdGhlIGRpZmZlcmVuY2VzIGluIHN0dWRlbnQgcGVyZm9ybWFuY2UgYmFzZWQgb24gdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIGhhbmRzIHJhaXNlZCBpbiBjbGFzcw0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZ2dwbG90MikNCmdncGxvdChkYXRhPVN0dWRlbnRfRGF0YTEpK2dlb21fY29sKGFlcyh4PWdyYWRlczEsIHk9bWVhbihyYWlzZWRoYW5kcyksIGZpbGw9Z3JhZGVzMSkpDQpgYGANCg0KIyMjR3JvdXBpbmcgdGhlIGRhdGEgYnkgZ2VuZGVyIGFuZCBncmFkZXMNCiMjI1N1bW1hcml6aW5nIHRoZSBkYXRhIGJ5IHRoZSBhdmVyYWdlIG51bWJlciBvZiBoYW5kcyByYWlzZWQsIGFubm91bmNlbWVudHMgdmlld2VkLCBwYXJ0aWNpcGF0aW9uIGluIGRpc2N1c3Npb24gZ3JvdXBzLCBhbmQgdmlzaXRlZCByZXNvdXJjZXMNCmBgYHtyfQ0Kc3R1ZGVudDI8LVN0dWRlbnRfRGF0YTElPiUNCiAgZ3JvdXBfYnkoZ2VuZGVyLCBncmFkZXMxKSU+JQ0KICAgc3VtbWFyaXplKE49bigpLCByYWlzZWRoYW5kcz1tZWFuKHJhaXNlZGhhbmRzKSwNCiAgICAgICAgICAgIEFubm91bmNlbWVudHNWaWV3PW1lYW4oQW5ub3VuY2VtZW50c1ZpZXcpLCANCiAgICAgICAgICAgIGRpc2N1c3Npb249bWVhbihEaXNjdXNzaW9uKSwNCiAgICAgICAgICAgIHJlc291cmNlcz1tZWFuKHZpc2l0ZWRyZXNvdXJjZXMpKQ0KcHJpbnQoc3R1ZGVudDIpDQpgYGANCg0KIyMjR2VuZGVyIGRpZmZlcmVuY2VzIGluIGFjYWRlbWljIHBlcmZvcm1hbmNlLCBudW1iZXIgb2YgdGltZXMgaGFuZHMgcmFpc2VkLCBhbm5vdW5jZW1lbnRzIHZpZXdlZCwgcGFydGljaXBhdGlvbiBpbiBkaXNjdXNzaW9uIGdyb3VwcywgYW5kIHZpZXdlZCByZXNvdXJjZXMNCmBgYHtyfQ0Kc3R1ZGVudEY8LXN0dWRlbnQyJT4lDQogIGZpbHRlcihnZW5kZXI9PSJGIiklPiUNCm11dGF0ZShwZXJjZW50PU4vc3VtKC4kTikqMTAwKQ0KcHJpbnQoc3R1ZGVudEYpDQoNCnN0dWRlbnRNPC1zdHVkZW50MiU+JQ0KICBmaWx0ZXIoZ2VuZGVyPT0iTSIpJT4lDQogIG11dGF0ZShwZXJjZW50PU4vc3VtKC4kTikqMTAwKQ0KcHJpbnQoc3R1ZGVudE0pDQoNCmBgYA0KDQojIyMgR2VuZGVyIGRpZmZlcmVuY2VzIGluIHN0dWRlbnQgYWNhZGVtaWMgcGVyZm9ybWFuY2UNCmBgYHtyIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTgsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGNvd3Bsb3QpDQpmZW1hbGVncmFkZXM8LWdncGxvdChkYXRhPXN0dWRlbnRGKStnZW9tX2NvbChhZXMoeD1ncmFkZXMxLCB5PXBlcmNlbnQsIGZpbGw9Z3JhZGVzMSkpDQoNCm1hbGVncmFkZXM8LWdncGxvdChkYXRhPXN0dWRlbnRNKStnZW9tX2NvbChhZXMoeD1ncmFkZXMxLCB5PXBlcmNlbnQsIGZpbGw9Z3JhZGVzMSkpDQpwbG90X2dyaWQoZmVtYWxlZ3JhZGVzLCBtYWxlZ3JhZGVzLCBsYWJlbHM9YygiZmVtYWxlcyIsICJtYWxlcyIpKQ0KYGBgDQoNCg0KIyMjR2VuZGVyIGRpZmZlcmVuY2VzIGluIHN0dWRlbnQgcGVyZm9ybWFuY2UgYmFzZWQgb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBudW1iZXIgb2YgcmFpc2VkIGhhbmRzIGFuZCB2aXNpdGVkIHJlc291cmNlcyANCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGdndGhlbWVzKQ0KZ2dwbG90KGRhdGE9U3R1ZGVudF9EYXRhMSkrDQogIGdlb21fcG9pbnQoYWVzKHg9cmFpc2VkaGFuZHMsIHk9dmlzaXRlZHJlc291cmNlcywgY29sb3I9Z3JhZGVzMSkpKw0KICBmYWNldF93cmFwKH5nZW5kZXIpKw0KICB0aGVtZV9zb2xhcml6ZWQoKQ0KICANCmBgYA0KDQojIyNHZW5kZXIgZGlmZmVyZW5jZXMgaW4gc3R1ZGVudCBwZXJmb3JtYW5jZSBiYXNlZCBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIG51bWJlciBvZiBhbm5vdW5jZW1lbnRzIHZpZXdlZCBhbmQgcGFydGljaXBhdGlvbiBpbiBkaXNjdXNzaW9uIGdyb3VwcyANCmBgYHtyfQ0KZ2dwbG90KGRhdGE9U3R1ZGVudF9EYXRhMSkrDQogIGdlb21fcG9pbnQoYWVzKHg9QW5ub3VuY2VtZW50c1ZpZXcsIHk9RGlzY3Vzc2lvbiwgY29sb3I9Z3JhZGVzMSkpKw0KICBmYWNldF93cmFwKH5nZW5kZXIpKw0KICB0aGVtZV9ncmV5KCkNCmBgYA0KDQojIyNHZW5kZXIgZGlmZmVyZW5jZXMgaW4gc3R1ZGVudCBwZXJmb3JtYW5jZSBiYXNlZCBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIG51bWJlciBvZiByYWlzZWQgaGFuZHMgYW5kIHBhcnRpY2lwYXRpb24gaW4gZGlzY3Vzc2lvbiBncm91cHMgDQpgYGB7cn0NCmdncGxvdChkYXRhPVN0dWRlbnRfRGF0YTEpKw0KICBnZW9tX3BvaW50KGFlcyh4PXJhaXNlZGhhbmRzLCB5PURpc2N1c3Npb24sIGNvbG9yPWdyYWRlczEpKSsNCiAgZmFjZXRfd3JhcCh+Z2VuZGVyKSsNCiAgdGhlbWVfaWdyYXkoKQ0KYGBgDQoNCg0KDQoNCiMjKipSZWZlcmVuY2VzKioNCkFtcmllaCwgRS4gQS4sIEhhbXRpbmksIFQuLCAmIEFsamFyYWgsIEkuICgyMDE2KS4gTWluaW5nIEVkdWNhdGlvbmFsIERhdGEgdG8gUHJlZGljdCBTdHVkZW50J3MgYWNhZGVtaWMgUGVyZm9ybWFuY2UgdXNpbmcgRW5zZW1ibGUgTWV0aG9kcy4gSW50ZXJuYXRpb25hbCBKb3VybmFsIG9mIERhdGFiYXNlIFRoZW9yeSBhbmQgQXBwbGljYXRpb24sIDkoOCksIDExOS0xMzYuDQoNCkFtcmllaCwgRS4gQS4sIEhhbXRpbmksIFQuLCAmIEFsamFyYWgsIEkuICgyMDE1LCBOb3ZlbWJlcikuIFByZXByb2Nlc3NpbmcgYW5kIGFuYWx5emluZyBlZHVjYXRpb25hbCBkYXRhIHNldCB1c2luZyBYLUFQSSBmb3IgaW1wcm92aW5nIHN0dWRlbnQncyBwZXJmb3JtYW5jZS4gSW4gQXBwbGllZCBFbGVjdHJpY2FsIEVuZ2luZWVyaW5nIGFuZCBDb21wdXRpbmcgVGVjaG5vbG9naWVzIChBRUVDVCksIDIwMTUgSUVFRSBKb3JkYW4gQ29uZmVyZW5jZSBvbiAocHAuIDEtNSkuIElFRUUu