library(tidyverse)
library(gtsummary)
library(broom)
library(gt)
view(ncd)
Preview data
head(ncd)
#Interpretation of the Dataset The dataset contains information on
six participants, identified by unique participant IDs, with variables
including age, sex, residence, education, occupation, and body mass
index (BMI). Among them, five participants are male and only one is
female, indicating a male-dominated sample. Most of the participants
(five out of six) live in urban areas, while only one resides in a rural
setting.
In terms of educational background, the participants show varying
levels of education — ranging from no formal education to higher
education. This suggests a mixed educational profile within the group.
Occupations also vary, including service, business, farming,
unemployment, and retirement, reflecting diverse socioeconomic
conditions.
The ages of the participants range from 31 to 56 years, representing
adults in early to late middle age. The BMI values of the participants
range from 18.9 to 30.1, with one person classified as obese (BMI ≥ 30),
three as overweight (BMI 25–29.9), and two as having a normal BMI
(18.5–24.9). This indicates that the majority of participants are either
overweight or obese, particularly among the urban male participants.
Overall, the dataset portrays a small, urban-dominated group of
adults with varied educational and occupational backgrounds, where
excess body weight appears relatively common.
ncd %>%
tbl_summary()
| Characteristic |
N = 220 |
| participant_id |
111 (56, 166) |
| age |
50 (38, 67) |
| sex |
|
| Female |
118 (54%) |
| Male |
102 (46%) |
| residence |
|
| Rural |
133 (60%) |
| Urban |
87 (40%) |
| education |
|
| Higher |
50 (23%) |
| No formal |
25 (11%) |
| Primary |
66 (30%) |
| Secondary |
79 (36%) |
| occupation |
|
| Business |
46 (21%) |
| Farmer |
61 (28%) |
| Retired |
24 (11%) |
| Service |
66 (30%) |
| Unemployed |
23 (10%) |
| bmi |
25.4 (21.3, 28.3) |
| systolic_bp |
134 (114, 165) |
| diastolic_bp |
91 (76, 107) |
| diabetes |
51 (23%) |
| hypertension |
84 (38%) |
#interpretation The dataset represents a total of 2,201 participants,
with a median participant ID of 111 (interquartile range: 56–166),
indicating the sample covers a wide range of respondents. The median age
is 50 years (IQR: 38–67), suggesting that the majority of participants
are middle-aged adults, with some younger and older individuals
included.
In terms of sex distribution, 54% of participants are female (n=118)
and 46% are male (n=102), showing a slight predominance of females in
the study population. Regarding residence, the majority of participants
reside in rural areas (60%), while 40% live in urban settings,
indicating that the sample is more representative of rural
communities.
With respect to educational attainment, 36% of respondents have
completed secondary education, followed by 30% with primary education,
23% with higher education, and 11% with no formal education. This
distribution reflects a relatively diverse educational profile, though
most participants have at least some formal schooling.
In terms of occupation, the largest groups are those engaged in
service (30%) and farming (28%), followed by business (21%), retired
individuals (11%), and unemployed persons (10%). This suggests that the
majority of participants are economically active, with a notable portion
involved in agriculture and service-based work.
The median Body Mass Index (BMI) is 25.4 (IQR: 21.3–28.3), which
falls within the overweight range according to WHO classification. This
indicates that many participants are likely to be overweight, with some
individuals in the normal and obese categories as well.
Overall, the data describe a middle-aged, predominantly rural, and
moderately educated population, with a balanced gender ratio and a
tendency toward overweight BMI levels. The occupational diversity also
highlights a mix of professional, agricultural, and informal sector
engagement among the respondents.
ncd %>%
tbl_summary(
by = residence)
| Characteristic |
Rural
N = 133 |
Urban
N = 87 |
| participant_id |
108 (64, 156) |
115 (44, 176) |
| age |
51 (38, 69) |
49 (37, 65) |
| sex |
|
|
| Female |
74 (56%) |
44 (51%) |
| Male |
59 (44%) |
43 (49%) |
| education |
|
|
| Higher |
33 (25%) |
17 (20%) |
| No formal |
13 (9.8%) |
12 (14%) |
| Primary |
38 (29%) |
28 (32%) |
| Secondary |
49 (37%) |
30 (34%) |
| occupation |
|
|
| Business |
20 (15%) |
26 (30%) |
| Farmer |
39 (29%) |
22 (25%) |
| Retired |
14 (11%) |
10 (11%) |
| Service |
42 (32%) |
24 (28%) |
| Unemployed |
18 (14%) |
5 (5.7%) |
| bmi |
25.5 (21.1, 28.3) |
24.9 (21.9, 28.4) |
| systolic_bp |
136 (114, 166) |
131 (111, 164) |
| diastolic_bp |
91 (74, 104) |
93 (77, 108) |
| diabetes |
34 (26%) |
17 (20%) |
| hypertension |
55 (41%) |
29 (33%) |
interpretation
The dataset includes a total of 2,202 participants, of which 1,331
(60%) are from rural areas and 871 (40%) are from urban areas, showing
that the study population is more rural-dominated.
The median participant ID for rural respondents is 108 (IQR: 64–156),
while for urban respondents it is 115 (IQR: 44–176), suggesting a
similar spread of participant identifiers in both groups. The median age
among rural participants is 51 years (38–69), slightly higher than that
of urban participants at 49 years (37–65). This indicates that the rural
group tends to be somewhat older on average.
Regarding sex distribution, females make up a slightly higher
proportion in both groups—56% in rural and 51% in urban—showing a near
gender balance across both populations.
In terms of education, both groups have comparable patterns. In rural
areas, 37% of participants have secondary education, 29% have primary
education, 25% have higher education, and 9.8% have no formal education.
Similarly, in urban areas, 34% have secondary education, 32% have
primary education, 20% have higher education, and 14% have no formal
education. This suggests that educational attainment is relatively
similar across both settings, though higher education is slightly more
common in rural areas in this sample.
Occupational distribution varies more notably. In rural areas, the
largest proportions are in service (32%) and farming (29%), followed by
business (15%), unemployed (14%), and retired (11%). In contrast, urban
residents are more often engaged in business (30%) and service (28%),
with fewer in farming (25%), and smaller proportions of retired (11%)
and unemployed (5.7%) individuals. This indicates that agriculture
dominates in rural settings, while business and formal jobs are more
prevalent in urban areas.
The median Body Mass Index (BMI) is 25.5 (21.1–28.3) for rural
participants and 24.9 (21.9–28.4) for urban participants — both values
fall within the overweight range, suggesting a common tendency toward
overweight or obesity in both populations.
Blood pressure readings show that rural participants have a slightly
higher median systolic blood pressure (136 mmHg) compared to urban
participants (131 mmHg), while diastolic blood pressure is nearly
similar, 91 mmHg in rural and 93 mmHg in urban areas.
The prevalence of diabetes is higher among rural participants (26%)
compared to urban participants (20%), and hypertension is also more
common in the rural group (41%) than in the urban group (33%).
Overall, the descriptive results indicate that the rural participants
are slightly older, more often involved in farming or service work, and
show higher levels of diabetes and hypertension, along with marginally
higher BMI and blood pressure values. In contrast, urban participants
tend to engage more in business-related occupations and have slightly
lower rates of chronic conditions.
model <- glm( factor(hypertension) ~ age + sex + bmi + residence + education + occupation + diabetes, data = ncd, family = binomial)
tbl_regression(model)
| Characteristic |
log(OR) |
95% CI |
p-value |
| age |
0.00 |
-0.02, 0.02 |
0.8 |
| sex |
|
|
|
| Female |
— |
— |
|
| Male |
0.30 |
-0.27, 0.87 |
0.3 |
| bmi |
-0.01 |
-0.07, 0.04 |
0.6 |
| residence |
|
|
|
| Rural |
— |
— |
|
| Urban |
-0.41 |
-1.0, 0.18 |
0.2 |
| education |
|
|
|
| Higher |
— |
— |
|
| No formal |
0.52 |
-0.48, 1.5 |
0.3 |
| Primary |
0.05 |
-0.72, 0.84 |
0.9 |
| Secondary |
0.09 |
-0.66, 0.85 |
0.8 |
| occupation |
|
|
|
| Business |
— |
— |
|
| Farmer |
-0.41 |
-1.2, 0.41 |
0.3 |
| Retired |
-0.56 |
-1.7, 0.49 |
0.3 |
| Service |
-0.12 |
-0.91, 0.67 |
0.8 |
| Unemployed |
-0.26 |
-1.4, 0.80 |
0.6 |
| diabetes |
|
|
|
| No |
— |
— |
|
| Yes |
0.06 |
-0.61, 0.71 |
0.9 |
| Abbreviations: CI = Confidence Interval, OR = Odds Ratio |
#interpretation The table presents the results of a logistic
regression analysis showing the log odds ratios (log[OR]), their 95%
confidence intervals (CI), and p-values for the relationship between
selected characteristics and the outcome variable.
The results indicate that age has a log(OR) of 0.00 (95% CI: -0.02 to
0.02, p = 0.8), suggesting that age has no significant association with
the outcome. Similarly, sex shows that males have a log(OR) of 0.30 (95%
CI: -0.27 to 0.87, p = 0.3) compared to females (reference group),
indicating that although males have slightly higher odds, the
association is not statistically significant.
For BMI, the log(OR) is -0.01 (95% CI: -0.07 to 0.04, p = 0.6),
showing no significant relationship between BMI and the outcome
variable.
In terms of residence, urban participants have a log(OR) of -0.41
(95% CI: -1.0 to 0.18, p = 0.2) compared to rural participants. This
suggests that living in an urban area may be associated with lower odds
of the outcome, but the association is not statistically
significant.
For education, using higher education as the reference group, those
with no formal education (log[OR] = 0.52, 95% CI: -0.48 to 1.5, p =
0.3), primary education (log[OR] = 0.05, 95% CI: -0.72 to 0.84, p =
0.9), and secondary education (log[OR] = 0.09, 95% CI: -0.66 to 0.85, p
= 0.8) all show no significant association with the outcome.
Regarding occupation, farmers have a log(OR) of -0.41 (95% CI: -1.2
to 0.41, p = 0.3) compared to those in business (reference group). This
suggests that farmers may have slightly lower odds of the outcome, but
again, this association is not statistically significant.
🔍 Summary of Findings
None of the variables — age, sex, BMI, residence, education, or
occupation — show a statistically significant relationship with the
outcome (all p-values > 0.05).
The confidence intervals for all predictors include zero, indicating
no strong evidence of effect.
While some variables (e.g., urban residence, farming occupation) show
a tendency toward lower odds, these differences are not meaningful
statistically.
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShndHN1bW1hcnkpDQpsaWJyYXJ5KGJyb29tKQ0KbGlicmFyeShndCkNCmBgYA0KDQpgYGB7cn0NCnZpZXcobmNkKQ0KYGBgDQoNCiMgUHJldmlldyBkYXRhDQoNCmBgYHtyfQ0KaGVhZChuY2QpDQpgYGANCg0KI0ludGVycHJldGF0aW9uIG9mIHRoZSBEYXRhc2V0DQpUaGUgZGF0YXNldCBjb250YWlucyBpbmZvcm1hdGlvbiBvbiBzaXggcGFydGljaXBhbnRzLCBpZGVudGlmaWVkIGJ5IHVuaXF1ZSBwYXJ0aWNpcGFudCBJRHMsIHdpdGggdmFyaWFibGVzIGluY2x1ZGluZyBhZ2UsIHNleCwgcmVzaWRlbmNlLCBlZHVjYXRpb24sIG9jY3VwYXRpb24sIGFuZCBib2R5IG1hc3MgaW5kZXggKEJNSSkuIEFtb25nIHRoZW0sIGZpdmUgcGFydGljaXBhbnRzIGFyZSBtYWxlIGFuZCBvbmx5IG9uZSBpcyBmZW1hbGUsIGluZGljYXRpbmcgYSBtYWxlLWRvbWluYXRlZCBzYW1wbGUuIE1vc3Qgb2YgdGhlIHBhcnRpY2lwYW50cyAoZml2ZSBvdXQgb2Ygc2l4KSBsaXZlIGluIHVyYmFuIGFyZWFzLCB3aGlsZSBvbmx5IG9uZSByZXNpZGVzIGluIGEgcnVyYWwgc2V0dGluZy4NCg0KSW4gdGVybXMgb2YgZWR1Y2F0aW9uYWwgYmFja2dyb3VuZCwgdGhlIHBhcnRpY2lwYW50cyBzaG93IHZhcnlpbmcgbGV2ZWxzIG9mIGVkdWNhdGlvbiDigJQgcmFuZ2luZyBmcm9tIG5vIGZvcm1hbCBlZHVjYXRpb24gdG8gaGlnaGVyIGVkdWNhdGlvbi4gVGhpcyBzdWdnZXN0cyBhIG1peGVkIGVkdWNhdGlvbmFsIHByb2ZpbGUgd2l0aGluIHRoZSBncm91cC4gT2NjdXBhdGlvbnMgYWxzbyB2YXJ5LCBpbmNsdWRpbmcgc2VydmljZSwgYnVzaW5lc3MsIGZhcm1pbmcsIHVuZW1wbG95bWVudCwgYW5kIHJldGlyZW1lbnQsIHJlZmxlY3RpbmcgZGl2ZXJzZSBzb2Npb2Vjb25vbWljIGNvbmRpdGlvbnMuDQoNClRoZSBhZ2VzIG9mIHRoZSBwYXJ0aWNpcGFudHMgcmFuZ2UgZnJvbSAzMSB0byA1NiB5ZWFycywgcmVwcmVzZW50aW5nIGFkdWx0cyBpbiBlYXJseSB0byBsYXRlIG1pZGRsZSBhZ2UuIFRoZSBCTUkgdmFsdWVzIG9mIHRoZSBwYXJ0aWNpcGFudHMgcmFuZ2UgZnJvbSAxOC45IHRvIDMwLjEsIHdpdGggb25lIHBlcnNvbiBjbGFzc2lmaWVkIGFzIG9iZXNlIChCTUkg4omlIDMwKSwgdGhyZWUgYXMgb3ZlcndlaWdodCAoQk1JIDI14oCTMjkuOSksIGFuZCB0d28gYXMgaGF2aW5nIGEgbm9ybWFsIEJNSSAoMTguNeKAkzI0LjkpLiBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSBtYWpvcml0eSBvZiBwYXJ0aWNpcGFudHMgYXJlIGVpdGhlciBvdmVyd2VpZ2h0IG9yIG9iZXNlLCBwYXJ0aWN1bGFybHkgYW1vbmcgdGhlIHVyYmFuIG1hbGUgcGFydGljaXBhbnRzLg0KDQpPdmVyYWxsLCB0aGUgZGF0YXNldCBwb3J0cmF5cyBhIHNtYWxsLCB1cmJhbi1kb21pbmF0ZWQgZ3JvdXAgb2YgYWR1bHRzIHdpdGggdmFyaWVkIGVkdWNhdGlvbmFsIGFuZCBvY2N1cGF0aW9uYWwgYmFja2dyb3VuZHMsIHdoZXJlIGV4Y2VzcyBib2R5IHdlaWdodCBhcHBlYXJzIHJlbGF0aXZlbHkgY29tbW9uLg0KDQpgYGB7cn0NCm5jZCAlPiUgDQogICB0Ymxfc3VtbWFyeSgpDQpgYGANCg0KI2ludGVycHJldGF0aW9uIFRoZSBkYXRhc2V0IA0KcmVwcmVzZW50cyBhIHRvdGFsIG9mIDIsMjAxIHBhcnRpY2lwYW50cywgd2l0aCBhIG1lZGlhbiBwYXJ0aWNpcGFudCBJRCBvZiAxMTEgKGludGVycXVhcnRpbGUgcmFuZ2U6IDU24oCTMTY2KSwgaW5kaWNhdGluZyB0aGUgc2FtcGxlIGNvdmVycyBhIHdpZGUgcmFuZ2Ugb2YgcmVzcG9uZGVudHMuIFRoZSBtZWRpYW4gYWdlIGlzIDUwIHllYXJzIChJUVI6IDM44oCTNjcpLCBzdWdnZXN0aW5nIHRoYXQgdGhlIG1ham9yaXR5IG9mIHBhcnRpY2lwYW50cyBhcmUgbWlkZGxlLWFnZWQgYWR1bHRzLCB3aXRoIHNvbWUgeW91bmdlciBhbmQgb2xkZXIgaW5kaXZpZHVhbHMgaW5jbHVkZWQuDQoNCkluIHRlcm1zIG9mIHNleCBkaXN0cmlidXRpb24sIDU0JSBvZiBwYXJ0aWNpcGFudHMgYXJlIGZlbWFsZSAobj0xMTgpIGFuZCA0NiUgYXJlIG1hbGUgKG49MTAyKSwgc2hvd2luZyBhIHNsaWdodCBwcmVkb21pbmFuY2Ugb2YgZmVtYWxlcyBpbiB0aGUgc3R1ZHkgcG9wdWxhdGlvbi4gUmVnYXJkaW5nIHJlc2lkZW5jZSwgdGhlIG1ham9yaXR5IG9mIHBhcnRpY2lwYW50cyByZXNpZGUgaW4gcnVyYWwgYXJlYXMgKDYwJSksIHdoaWxlIDQwJSBsaXZlIGluIHVyYmFuIHNldHRpbmdzLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHNhbXBsZSBpcyBtb3JlIHJlcHJlc2VudGF0aXZlIG9mIHJ1cmFsIGNvbW11bml0aWVzLg0KDQpXaXRoIHJlc3BlY3QgdG8gZWR1Y2F0aW9uYWwgYXR0YWlubWVudCwgMzYlIG9mIHJlc3BvbmRlbnRzIGhhdmUgY29tcGxldGVkIHNlY29uZGFyeSBlZHVjYXRpb24sIGZvbGxvd2VkIGJ5IDMwJSB3aXRoIHByaW1hcnkgZWR1Y2F0aW9uLCAyMyUgd2l0aCBoaWdoZXIgZWR1Y2F0aW9uLCBhbmQgMTElIHdpdGggbm8gZm9ybWFsIGVkdWNhdGlvbi4gVGhpcyBkaXN0cmlidXRpb24gcmVmbGVjdHMgYSByZWxhdGl2ZWx5IGRpdmVyc2UgZWR1Y2F0aW9uYWwgcHJvZmlsZSwgdGhvdWdoIG1vc3QgcGFydGljaXBhbnRzIGhhdmUgYXQgbGVhc3Qgc29tZSBmb3JtYWwgc2Nob29saW5nLg0KDQpJbiB0ZXJtcyBvZiBvY2N1cGF0aW9uLCB0aGUgbGFyZ2VzdCBncm91cHMgYXJlIHRob3NlIGVuZ2FnZWQgaW4gc2VydmljZSAoMzAlKSBhbmQgZmFybWluZyAoMjglKSwgZm9sbG93ZWQgYnkgYnVzaW5lc3MgKDIxJSksIHJldGlyZWQgaW5kaXZpZHVhbHMgKDExJSksIGFuZCB1bmVtcGxveWVkIHBlcnNvbnMgKDEwJSkuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgbWFqb3JpdHkgb2YgcGFydGljaXBhbnRzIGFyZSBlY29ub21pY2FsbHkgYWN0aXZlLCB3aXRoIGEgbm90YWJsZSBwb3J0aW9uIGludm9sdmVkIGluIGFncmljdWx0dXJlIGFuZCBzZXJ2aWNlLWJhc2VkIHdvcmsuDQoNClRoZSBtZWRpYW4gQm9keSBNYXNzIEluZGV4IChCTUkpIGlzIDI1LjQgKElRUjogMjEuM+KAkzI4LjMpLCB3aGljaCBmYWxscyB3aXRoaW4gdGhlIG92ZXJ3ZWlnaHQgcmFuZ2UgYWNjb3JkaW5nIHRvIFdITyBjbGFzc2lmaWNhdGlvbi4gVGhpcyBpbmRpY2F0ZXMgdGhhdCBtYW55IHBhcnRpY2lwYW50cyBhcmUgbGlrZWx5IHRvIGJlIG92ZXJ3ZWlnaHQsIHdpdGggc29tZSBpbmRpdmlkdWFscyBpbiB0aGUgbm9ybWFsIGFuZCBvYmVzZSBjYXRlZ29yaWVzIGFzIHdlbGwuDQoNCk92ZXJhbGwsIHRoZSBkYXRhIGRlc2NyaWJlIGEgbWlkZGxlLWFnZWQsIHByZWRvbWluYW50bHkgcnVyYWwsIGFuZCBtb2RlcmF0ZWx5IGVkdWNhdGVkIHBvcHVsYXRpb24sIHdpdGggYSBiYWxhbmNlZCBnZW5kZXIgcmF0aW8gYW5kIGEgdGVuZGVuY3kgdG93YXJkIG92ZXJ3ZWlnaHQgQk1JIGxldmVscy4gVGhlIG9jY3VwYXRpb25hbCBkaXZlcnNpdHkgYWxzbyBoaWdobGlnaHRzIGEgbWl4IG9mIHByb2Zlc3Npb25hbCwgYWdyaWN1bHR1cmFsLCBhbmQgaW5mb3JtYWwgc2VjdG9yIGVuZ2FnZW1lbnQgYW1vbmcgdGhlIHJlc3BvbmRlbnRzLg0KDQpgYGB7cn0NCm5jZCAlPiUNCiAgdGJsX3N1bW1hcnkoDQogICAgYnkgPSByZXNpZGVuY2UpDQpgYGANCg0KIyBpbnRlcnByZXRhdGlvbg0KVGhlIGRhdGFzZXQgaW5jbHVkZXMgYSB0b3RhbCBvZiAyLDIwMiBwYXJ0aWNpcGFudHMsIG9mIHdoaWNoIDEsMzMxICg2MCUpIGFyZSBmcm9tIHJ1cmFsIGFyZWFzIGFuZCA4NzEgKDQwJSkgYXJlIGZyb20gdXJiYW4gYXJlYXMsIHNob3dpbmcgdGhhdCB0aGUgc3R1ZHkgcG9wdWxhdGlvbiBpcyBtb3JlIHJ1cmFsLWRvbWluYXRlZC4NCg0KVGhlIG1lZGlhbiBwYXJ0aWNpcGFudCBJRCBmb3IgcnVyYWwgcmVzcG9uZGVudHMgaXMgMTA4IChJUVI6IDY04oCTMTU2KSwgd2hpbGUgZm9yIHVyYmFuIHJlc3BvbmRlbnRzIGl0IGlzIDExNSAoSVFSOiA0NOKAkzE3NiksIHN1Z2dlc3RpbmcgYSBzaW1pbGFyIHNwcmVhZCBvZiBwYXJ0aWNpcGFudCBpZGVudGlmaWVycyBpbiBib3RoIGdyb3Vwcy4gVGhlIG1lZGlhbiBhZ2UgYW1vbmcgcnVyYWwgcGFydGljaXBhbnRzIGlzIDUxIHllYXJzICgzOOKAkzY5KSwgc2xpZ2h0bHkgaGlnaGVyIHRoYW4gdGhhdCBvZiB1cmJhbiBwYXJ0aWNpcGFudHMgYXQgNDkgeWVhcnMgKDM34oCTNjUpLiBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSBydXJhbCBncm91cCB0ZW5kcyB0byBiZSBzb21ld2hhdCBvbGRlciBvbiBhdmVyYWdlLg0KDQpSZWdhcmRpbmcgc2V4IGRpc3RyaWJ1dGlvbiwgZmVtYWxlcyBtYWtlIHVwIGEgc2xpZ2h0bHkgaGlnaGVyIHByb3BvcnRpb24gaW4gYm90aCBncm91cHPigJQ1NiUgaW4gcnVyYWwgYW5kIDUxJSBpbiB1cmJhbuKAlHNob3dpbmcgYSBuZWFyIGdlbmRlciBiYWxhbmNlIGFjcm9zcyBib3RoIHBvcHVsYXRpb25zLg0KDQpJbiB0ZXJtcyBvZiBlZHVjYXRpb24sIGJvdGggZ3JvdXBzIGhhdmUgY29tcGFyYWJsZSBwYXR0ZXJucy4gSW4gcnVyYWwgYXJlYXMsIDM3JSBvZiBwYXJ0aWNpcGFudHMgaGF2ZSBzZWNvbmRhcnkgZWR1Y2F0aW9uLCAyOSUgaGF2ZSBwcmltYXJ5IGVkdWNhdGlvbiwgMjUlIGhhdmUgaGlnaGVyIGVkdWNhdGlvbiwgYW5kIDkuOCUgaGF2ZSBubyBmb3JtYWwgZWR1Y2F0aW9uLiBTaW1pbGFybHksIGluIHVyYmFuIGFyZWFzLCAzNCUgaGF2ZSBzZWNvbmRhcnkgZWR1Y2F0aW9uLCAzMiUgaGF2ZSBwcmltYXJ5IGVkdWNhdGlvbiwgMjAlIGhhdmUgaGlnaGVyIGVkdWNhdGlvbiwgYW5kIDE0JSBoYXZlIG5vIGZvcm1hbCBlZHVjYXRpb24uIFRoaXMgc3VnZ2VzdHMgdGhhdCBlZHVjYXRpb25hbCBhdHRhaW5tZW50IGlzIHJlbGF0aXZlbHkgc2ltaWxhciBhY3Jvc3MgYm90aCBzZXR0aW5ncywgdGhvdWdoIGhpZ2hlciBlZHVjYXRpb24gaXMgc2xpZ2h0bHkgbW9yZSBjb21tb24gaW4gcnVyYWwgYXJlYXMgaW4gdGhpcyBzYW1wbGUuDQoNCk9jY3VwYXRpb25hbCBkaXN0cmlidXRpb24gdmFyaWVzIG1vcmUgbm90YWJseS4gSW4gcnVyYWwgYXJlYXMsIHRoZSBsYXJnZXN0IHByb3BvcnRpb25zIGFyZSBpbiBzZXJ2aWNlICgzMiUpIGFuZCBmYXJtaW5nICgyOSUpLCBmb2xsb3dlZCBieSBidXNpbmVzcyAoMTUlKSwgdW5lbXBsb3llZCAoMTQlKSwgYW5kIHJldGlyZWQgKDExJSkuIEluIGNvbnRyYXN0LCB1cmJhbiByZXNpZGVudHMgYXJlIG1vcmUgb2Z0ZW4gZW5nYWdlZCBpbiBidXNpbmVzcyAoMzAlKSBhbmQgc2VydmljZSAoMjglKSwgd2l0aCBmZXdlciBpbiBmYXJtaW5nICgyNSUpLCBhbmQgc21hbGxlciBwcm9wb3J0aW9ucyBvZiByZXRpcmVkICgxMSUpIGFuZCB1bmVtcGxveWVkICg1LjclKSBpbmRpdmlkdWFscy4gVGhpcyBpbmRpY2F0ZXMgdGhhdCBhZ3JpY3VsdHVyZSBkb21pbmF0ZXMgaW4gcnVyYWwgc2V0dGluZ3MsIHdoaWxlIGJ1c2luZXNzIGFuZCBmb3JtYWwgam9icyBhcmUgbW9yZSBwcmV2YWxlbnQgaW4gdXJiYW4gYXJlYXMuDQoNClRoZSBtZWRpYW4gQm9keSBNYXNzIEluZGV4IChCTUkpIGlzIDI1LjUgKDIxLjHigJMyOC4zKSBmb3IgcnVyYWwgcGFydGljaXBhbnRzIGFuZCAyNC45ICgyMS454oCTMjguNCkgZm9yIHVyYmFuIHBhcnRpY2lwYW50cyDigJQgYm90aCB2YWx1ZXMgZmFsbCB3aXRoaW4gdGhlIG92ZXJ3ZWlnaHQgcmFuZ2UsIHN1Z2dlc3RpbmcgYSBjb21tb24gdGVuZGVuY3kgdG93YXJkIG92ZXJ3ZWlnaHQgb3Igb2Jlc2l0eSBpbiBib3RoIHBvcHVsYXRpb25zLg0KDQpCbG9vZCBwcmVzc3VyZSByZWFkaW5ncyBzaG93IHRoYXQgcnVyYWwgcGFydGljaXBhbnRzIGhhdmUgYSBzbGlnaHRseSBoaWdoZXIgbWVkaWFuIHN5c3RvbGljIGJsb29kIHByZXNzdXJlICgxMzYgbW1IZykgY29tcGFyZWQgdG8gdXJiYW4gcGFydGljaXBhbnRzICgxMzEgbW1IZyksIHdoaWxlIGRpYXN0b2xpYyBibG9vZCBwcmVzc3VyZSBpcyBuZWFybHkgc2ltaWxhciwgOTEgbW1IZyBpbiBydXJhbCBhbmQgOTMgbW1IZyBpbiB1cmJhbiBhcmVhcy4NCg0KVGhlIHByZXZhbGVuY2Ugb2YgZGlhYmV0ZXMgaXMgaGlnaGVyIGFtb25nIHJ1cmFsIHBhcnRpY2lwYW50cyAoMjYlKSBjb21wYXJlZCB0byB1cmJhbiBwYXJ0aWNpcGFudHMgKDIwJSksIGFuZCBoeXBlcnRlbnNpb24gaXMgYWxzbyBtb3JlIGNvbW1vbiBpbiB0aGUgcnVyYWwgZ3JvdXAgKDQxJSkgdGhhbiBpbiB0aGUgdXJiYW4gZ3JvdXAgKDMzJSkuDQoNCk92ZXJhbGwsIHRoZSBkZXNjcmlwdGl2ZSByZXN1bHRzIGluZGljYXRlIHRoYXQgdGhlIHJ1cmFsIHBhcnRpY2lwYW50cyBhcmUgc2xpZ2h0bHkgb2xkZXIsIG1vcmUgb2Z0ZW4gaW52b2x2ZWQgaW4gZmFybWluZyBvciBzZXJ2aWNlIHdvcmssIGFuZCBzaG93IGhpZ2hlciBsZXZlbHMgb2YgZGlhYmV0ZXMgYW5kIGh5cGVydGVuc2lvbiwgYWxvbmcgd2l0aCBtYXJnaW5hbGx5IGhpZ2hlciBCTUkgYW5kIGJsb29kIHByZXNzdXJlIHZhbHVlcy4gSW4gY29udHJhc3QsIHVyYmFuIHBhcnRpY2lwYW50cyB0ZW5kIHRvIGVuZ2FnZSBtb3JlIGluIGJ1c2luZXNzLXJlbGF0ZWQgb2NjdXBhdGlvbnMgYW5kIGhhdmUgc2xpZ2h0bHkgbG93ZXIgcmF0ZXMgb2YgY2hyb25pYyBjb25kaXRpb25zLg0KDQpgYGB7cn0NCm1vZGVsIDwtIGdsbSggZmFjdG9yKGh5cGVydGVuc2lvbikgfiBhZ2UgKyBzZXggKyBibWkgKyByZXNpZGVuY2UgKyBlZHVjYXRpb24gKyBvY2N1cGF0aW9uICsgZGlhYmV0ZXMsIGRhdGEgPSBuY2QsIGZhbWlseSA9IGJpbm9taWFsKQ0KdGJsX3JlZ3Jlc3Npb24obW9kZWwpDQpgYGANCg0KI2ludGVycHJldGF0aW9uIFRoZSB0YWJsZSBwcmVzZW50cyB0aGUgcmVzdWx0cyBvZiBhIGxvZ2lzdGljIHJlZ3Jlc3Npb24gYW5hbHlzaXMgc2hvd2luZyB0aGUgbG9nIG9kZHMgcmF0aW9zIChsb2dbT1JdKSwgdGhlaXIgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIChDSSksIGFuZCBwLXZhbHVlcyBmb3IgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHNlbGVjdGVkIGNoYXJhY3RlcmlzdGljcyBhbmQgdGhlIG91dGNvbWUgdmFyaWFibGUuDQoNClRoZSByZXN1bHRzIGluZGljYXRlIHRoYXQgYWdlIGhhcyBhIGxvZyhPUikgb2YgMC4wMCAoOTUlIENJOiAtMC4wMiB0byAwLjAyLCBwID0gMC44KSwgc3VnZ2VzdGluZyB0aGF0IGFnZSBoYXMgbm8gc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2l0aCB0aGUgb3V0Y29tZS4gU2ltaWxhcmx5LCBzZXggc2hvd3MgdGhhdCBtYWxlcyBoYXZlIGEgbG9nKE9SKSBvZiAwLjMwICg5NSUgQ0k6IC0wLjI3IHRvIDAuODcsIHAgPSAwLjMpIGNvbXBhcmVkIHRvIGZlbWFsZXMgKHJlZmVyZW5jZSBncm91cCksIGluZGljYXRpbmcgdGhhdCBhbHRob3VnaCBtYWxlcyBoYXZlIHNsaWdodGx5IGhpZ2hlciBvZGRzLCB0aGUgYXNzb2NpYXRpb24gaXMgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQuDQoNCkZvciBCTUksIHRoZSBsb2coT1IpIGlzIC0wLjAxICg5NSUgQ0k6IC0wLjA3IHRvIDAuMDQsIHAgPSAwLjYpLCBzaG93aW5nIG5vIHNpZ25pZmljYW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIEJNSSBhbmQgdGhlIG91dGNvbWUgdmFyaWFibGUuDQoNCkluIHRlcm1zIG9mIHJlc2lkZW5jZSwgdXJiYW4gcGFydGljaXBhbnRzIGhhdmUgYSBsb2coT1IpIG9mIC0wLjQxICg5NSUgQ0k6IC0xLjAgdG8gMC4xOCwgcCA9IDAuMikgY29tcGFyZWQgdG8gcnVyYWwgcGFydGljaXBhbnRzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgbGl2aW5nIGluIGFuIHVyYmFuIGFyZWEgbWF5IGJlIGFzc29jaWF0ZWQgd2l0aCBsb3dlciBvZGRzIG9mIHRoZSBvdXRjb21lLCBidXQgdGhlIGFzc29jaWF0aW9uIGlzIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50Lg0KDQpGb3IgZWR1Y2F0aW9uLCB1c2luZyBoaWdoZXIgZWR1Y2F0aW9uIGFzIHRoZSByZWZlcmVuY2UgZ3JvdXAsIHRob3NlIHdpdGggbm8gZm9ybWFsIGVkdWNhdGlvbiAobG9nW09SXSA9IDAuNTIsIDk1JSBDSTogLTAuNDggdG8gMS41LCBwID0gMC4zKSwgcHJpbWFyeSBlZHVjYXRpb24gKGxvZ1tPUl0gPSAwLjA1LCA5NSUgQ0k6IC0wLjcyIHRvIDAuODQsIHAgPSAwLjkpLCBhbmQgc2Vjb25kYXJ5IGVkdWNhdGlvbiAobG9nW09SXSA9IDAuMDksIDk1JSBDSTogLTAuNjYgdG8gMC44NSwgcCA9IDAuOCkgYWxsIHNob3cgbm8gc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2l0aCB0aGUgb3V0Y29tZS4NCg0KUmVnYXJkaW5nIG9jY3VwYXRpb24sIGZhcm1lcnMgaGF2ZSBhIGxvZyhPUikgb2YgLTAuNDEgKDk1JSBDSTogLTEuMiB0byAwLjQxLCBwID0gMC4zKSBjb21wYXJlZCB0byB0aG9zZSBpbiBidXNpbmVzcyAocmVmZXJlbmNlIGdyb3VwKS4gVGhpcyBzdWdnZXN0cyB0aGF0IGZhcm1lcnMgbWF5IGhhdmUgc2xpZ2h0bHkgbG93ZXIgb2RkcyBvZiB0aGUgb3V0Y29tZSwgYnV0IGFnYWluLCB0aGlzIGFzc29jaWF0aW9uIGlzIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50Lg0KDQrwn5SNIFN1bW1hcnkgb2YgRmluZGluZ3MNCg0KTm9uZSBvZiB0aGUgdmFyaWFibGVzIOKAlCBhZ2UsIHNleCwgQk1JLCByZXNpZGVuY2UsIGVkdWNhdGlvbiwgb3Igb2NjdXBhdGlvbiDigJQgc2hvdyBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwIHdpdGggdGhlIG91dGNvbWUgKGFsbCBwLXZhbHVlcyBcPiAwLjA1KS4NCg0KVGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGZvciBhbGwgcHJlZGljdG9ycyBpbmNsdWRlIHplcm8sIGluZGljYXRpbmcgbm8gc3Ryb25nIGV2aWRlbmNlIG9mIGVmZmVjdC4NCg0KV2hpbGUgc29tZSB2YXJpYWJsZXMgKGUuZy4sIHVyYmFuIHJlc2lkZW5jZSwgZmFybWluZyBvY2N1cGF0aW9uKSBzaG93IGEgdGVuZGVuY3kgdG93YXJkIGxvd2VyIG9kZHMsIHRoZXNlIGRpZmZlcmVuY2VzIGFyZSBub3QgbWVhbmluZ2Z1bCBzdGF0aXN0aWNhbGx5Lg0K