Summary of Results
Model 2 has an F-statistic of 6011.491 and a p-value of <2.2e^-16 less than the alpha level of 0.05, therefore we conclude that the model is a good predictor of salary and these results are significant and less likely to be due to chance.
Model2 Multiple Linear Regression
l_salary=1.233+0.111(No_payments)+0.983(Age)+0.011(Gender)
Subset of Dataset used for regression analysis
Variables chosen for Analysis
After filtering the data, to include only observations with credit transactions, there were 883 observations for 100 unique customers left,
THe data was summarized to find the total number of credit transactions for each individual customer_id.
[1] 2 14
Questions guiding my analysis
Range indicates that the respondents had between two and 14 credit transactions.
1.Why are some people paid more than once a month? Eg. Abigail had 13 credit transactions while Alexander had 6 credit transactions?
2.Why did not some people receive a payment in a month? Eg. Diana was paid a weekly amount of 1,013.67 AUD during the 3-month period-at total of 13 payments. While, Ronald had only two transactions 6,111.57 AUD in September and 10,753.02 AUD in October.
3.Are the respondents with fewer credit payments freelance consultants while the respondents with more credit payments salaried employees?
4.Do the people work in the same place?
Confidence Interval for Model1
Confidence interval of beta1 for Model1, no_payments is (-185, 73). Since zero 0 is in the middle of the interval, the results are not significant, evidenced by low t-statistic =-0.847 and the p-value = 0.3972 meaning that we are likely to observe such a (substantial) association between no_payments and salary by chance.
2.5 % 97.5 %
(Intercept) 16026.5556 18841.94903
no_payments -185.2392 73.55536
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using method = 'loess' and formula 'y ~ x'
`geom_smooth()` using method = 'loess' and formula 'y ~ x'

Residuals versus Fitted plot
The Residuals versus Fitted plot for the simple linear regression model above shows that number of credit payments is not linearly related to the total 3-month salary.
Also from the model summary above the R-squared value was 0.08% meaning that number of payments only explained 0.08% of the variation in the salary.
Thus, the next step to find the appropriate model is add more independent variables to explain the variation in the salary.
Plotting histograms of salary, average 3-month salary, age and number of credit transactions showed that these variables needed to be transformed using the natural log to approximate a normal distribution.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Histograms after natural log transformations of total 3-month Salary and average 3-month salary
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Histograms after natural log transformations of Age and Number if Credit payments
Multiple Linear Regression
Multiple Linear Regression=ln (total_3_month_Salary)~ln(Number of credit transactions)+ln(average_3_month_salary)+ln(age)+gender
l_salary=1.233+0.111(No_payments)+0.983(Age)+0.011(Gender)
model2=lm(l_salary~no_payments+l_avg_salary+age+gender, data=pay2)
summary(model2)
Call:
lm(formula = l_salary ~ no_payments + l_avg_salary + age + gender,
data = pay2)
Residuals:
Min 1Q Median 3Q Max
-0.62821 -0.00931 0.00337 0.01709 0.07246
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.2330488 0.0568215 21.700 <2e-16 ***
no_payments 0.1113100 0.0010231 108.799 <2e-16 ***
l_avg_salary 0.9830141 0.0064506 152.390 <2e-16 ***
age 0.0001063 0.0002020 0.526 0.5990
genderM 0.0109763 0.0049655 2.211 0.0273 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.07179 on 878 degrees of freedom
Multiple R-squared: 0.9648, Adjusted R-squared: 0.9646
F-statistic: 6011 on 4 and 878 DF, p-value: < 2.2e-16
plot(model2)




Explanation of Multiple Linear Regression results
Residuals versus Fitted plot The points are gathered randomly around the residual= 0 line indicating that the assumption that there is a linear relationship between the response variable (Salary) and the Predictor variables is reasonable.
However, the points around(10,-0.6) show that there are outliers in the data.
Normal Q-Q Plot The Normal Q-Q Plot shows that there are a lot of negative residual values. Since the relationship between the Standardized and theoretical residuals is not linear, the assumption of linear regression that the error terms are normally distributed is not met.
The Comparison of the Residual vs Fitted plots for Model1 and Model2 show that Model2 is a better fit for the data to predict the salary.
Model2 has an adjusted R-squared value of 96.46% meaning that 96.46% of the variation in ln(salary) is explained by the predictor variables, ln(average 3-month salary),age,gender and number of credit payments.
Model 2 has an F-statistic of 6011.491 and a p-value of <2.2e^-16 less than the alpha level of 0.05, therefore we conclude that the model is a good predictor of salary and these results are significant and less likely to be due to chance.
$model1
$model2
NA
chu
LS0tDQp0aXRsZTogIkxpbmVhciBSZWdyZXNzaW9uIEFuYWx5c2lzIg0KYXV0aG9yOiBBbWEgS29yYW50ZW1hIE93dXN1LURhcmtvDQpkYXRlOiAxN3RoIEp1bmUsIDIwMjANCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIyMgKipVc2luZyBMaW5lYXIgUmVncmVzc2lvbiB0byBwcmVkaWN0IHRoZSB0b3RhbCAzLW1vbnRoIHNhbGFyeSBmb3IgMTAwIHJlc3BvbmRlbnRzIGZyb20gdGhlIEFOWiBkYXRhc2V0cyoqDQoNCipEYXRhIGZyb20gSW5zaWRlU2hlcnBhIERhdGFAQU5aIFZpcnR1YWwgSW50ZXJuc2hpcCoNCmh0dHBzOi8vd3d3Lmluc2lkZXNoZXJwYS5jb20vbW9kdWxlcy9aTEpDc3Jwa0hvOXBaQkpOWS9CbndDVHVidHg4Tlc1VzVLcg0KDQojIyMjICoqU3VtbWFyeSBvZiBSZXN1bHRzKioNCg0KKipNb2RlbCAyIGhhcyBhbiBGLXN0YXRpc3RpYyBvZiA2MDExLjQ5MSBhbmQgYSBwLXZhbHVlIG9mIDwyLjJlXi0xNiBsZXNzIHRoYW4gdGhlIGFscGhhIGxldmVsIG9mIDAuMDUsIHRoZXJlZm9yZSB3ZSBjb25jbHVkZSB0aGF0IHRoZSBtb2RlbCBpcyBhIGdvb2QgcHJlZGljdG9yIG9mIHNhbGFyeSBhbmQgdGhlc2UgcmVzdWx0cyBhcmUgc2lnbmlmaWNhbnQgYW5kIGxlc3MgbGlrZWx5IHRvIGJlIGR1ZSB0byBjaGFuY2UuKioNCg0KDQojIyMjICpNb2RlbDIgTXVsdGlwbGUgTGluZWFyIFJlZ3Jlc3Npb24qDQoNCipsX3NhbGFyeSo9MS4yMzMrMC4xMTEoKk5vX3BheW1lbnRzKikrMC45ODMoKkFnZSopKzAuMDExKCpHZW5kZXIqKQ0KDQojIyMjICoqU3Vic2V0IG9mIERhdGFzZXQgdXNlZCBmb3IgcmVncmVzc2lvbiBhbmFseXNpcyoqDQpgYGB7ciByZXN1bHRzPSdhc2lzJyxlY2hvPUZBTFNFfQ0KDQpEVDo6ZGF0YXRhYmxlKHBheTVbLGMoMTo2LDEwKV0pDQpgYGANCiMjIyMgKipWYXJpYWJsZXMgY2hvc2VuIGZvciBBbmFseXNpcyoqDQoNCkFmdGVyIGZpbHRlcmluZyB0aGUgZGF0YSwgdG8gaW5jbHVkZSBvbmx5IG9ic2VydmF0aW9ucyB3aXRoIGNyZWRpdCB0cmFuc2FjdGlvbnMsIHRoZXJlIHdlcmUgODgzIG9ic2VydmF0aW9ucyBmb3IgMTAwIHVuaXF1ZSBjdXN0b21lcnMgbGVmdCwNCg0KVEhlIGRhdGEgd2FzIHN1bW1hcml6ZWQgdG8gZmluZCB0aGUgdG90YWwgbnVtYmVyIG9mIGNyZWRpdCB0cmFuc2FjdGlvbnMgZm9yIGVhY2ggaW5kaXZpZHVhbCBjdXN0b21lcl9pZC4NCmBgYHtyIGRhdGEsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCnBheT1kYXRhJT4lDQogIGZpbHRlcihtb3ZlbWVudD09ImNyZWRpdCIpDQpjdXN0b21lcl90cmFuc2FjdGlvbnM9ZGF0YS5mcmFtZShzMSRmaXJzdF9uYW1lLHMxJGN1c3RvbWVyX2lkLHMxJG4pDQoNCkRUOjpkYXRhdGFibGUoY3VzdG9tZXJfdHJhbnNhY3Rpb25zKQ0KDQpgYGANCg0KYGBge3IsZWNobz1GQUxTRX0NCg0KcmFuZ2UocGF5MiRub19wYXltZW50cykNCmBgYA0KDQojIyMjICoqUXVlc3Rpb25zIGd1aWRpbmcgbXkgYW5hbHlzaXMqKg0KDQpSYW5nZSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVzcG9uZGVudHMgaGFkIGJldHdlZW4gdHdvIGFuZCAxNCBjcmVkaXQgdHJhbnNhY3Rpb25zLg0KDQoqKjEuV2h5IGFyZSBzb21lIHBlb3BsZSBwYWlkIG1vcmUgdGhhbiBvbmNlIGEgbW9udGg/IEVnLiBBYmlnYWlsIGhhZCAxMyBjcmVkaXQgdHJhbnNhY3Rpb25zIHdoaWxlIEFsZXhhbmRlciBoYWQgNiBjcmVkaXQgdHJhbnNhY3Rpb25zPyoqDQoNCioqMi4qKldoeSBkaWQgbm90IHNvbWUgcGVvcGxlIHJlY2VpdmUgYSBwYXltZW50IGluIGEgbW9udGg/IEVnLiBEaWFuYSB3YXMgcGFpZCBhIHdlZWtseSBhbW91bnQgb2YgMSwwMTMuNjcgQVVEIGR1cmluZyB0aGUgMy1tb250aCBwZXJpb2QtYXQgdG90YWwgb2YgMTMgcGF5bWVudHMuIFdoaWxlLCBSb25hbGQgaGFkIG9ubHkgdHdvIHRyYW5zYWN0aW9ucyA2LDExMS41NyBBVUQgaW4gU2VwdGVtYmVyIGFuZCAxMCw3NTMuMDIgQVVEIGluIE9jdG9iZXIuDQoNCioqMy5BcmUgdGhlIHJlc3BvbmRlbnRzIHdpdGggZmV3ZXIgY3JlZGl0IHBheW1lbnRzIGZyZWVsYW5jZSBjb25zdWx0YW50cyB3aGlsZSB0aGUgcmVzcG9uZGVudHMgd2l0aCBtb3JlIGNyZWRpdCBwYXltZW50cyBzYWxhcmllZCBlbXBsb3llZXM/KioNCg0KKio0LioqRG8gdGhlIHBlb3BsZSB3b3JrIGluIHRoZSBzYW1lIHBsYWNlPw0KDQoNCg0KIyMjIyAqKlBlcmZvcm1pbmcgU2ltcGxlIExpbmVhciBSZWdyZXNzaW9uIFNhbGFyeX5BdmVyYWdlX1NhbGFyeSoqDQoqRXhwbGFuYXRpb24gb2YgbW9kZWwxIFNhbGFyeSB2ZXJzdXMgTnVtYmVyIG9mIFBheW1lbnRzKiANCg0KKipCZXRhLW5vdWdodD0qKndoZW4gbm9fcGF5bWVudHMgaXMgemVybywgdGhlIGF2ZXJhZ2Ugc2FsYXJ5IGlzICoqMTcsNDM0IEFVRCoqDQoNCioqQmV0YTE9KiogRm9yIGV2ZXJ5IG9uZSB1bml0IGluY3JlYXNlIGluIHRoZSBub19wYXltZW50cywgdGhlIGF2ZXJhZ2Ugc2FsYXJ5IHdvdWxkIA0KZGVjcmVhc2UgYnkgKio1NS43NCBBVUQqKg0KUnNxdWFyZWQ9IDAuMDglDQoNClRoZSB2ZXJ5IGxvdyBGLXN0YXRpc3RpYywgKiowLjcxNzQqKiBhbmQgdGhlICoqcC12YWx1ZT0gMC4zOTcqKiBpbmRpY2F0ZSB0aGF0IGF0IHRoZSBhbHBoYSBsZXZlbCBvZiAwLjA1LCB0aGVyZSBpcyBubyBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSBub19wYXltZW50cyBhbmQgdGhlIHNhbGFyeSBvZiByZXNwb25kZW50cy4NCg0KKipUaHVzLCB3ZSBjYW4gY29uY2x1ZGUgdGhhdCB0aGVyZSBpcyBubyBzaWduaWZpY2FudCBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG5vX3BheW1lbnRzIGFuZCB0aGUgc2FsYXJ5IG9mIHJlc3BvbmRlbnRzLioqDQoNCg0KDQpgYGB7ciBleHBsYW5hdGlvbiBvZiBtb2RlbDF9DQptb2RlbDE9bG0oc2FsYXJ5fm5vX3BheW1lbnRzLCBkYXRhPXBheTIpDQpzdW1tYXJ5KG1vZGVsMSkNCg0KYGBgDQojIyMjICoqQ29uZmlkZW5jZSBJbnRlcnZhbCBmb3IgTW9kZWwxKioNCipDb25maWRlbmNlIGludGVydmFsIG9mIGJldGExIGZvciBNb2RlbDEsIG5vX3BheW1lbnRzIGlzICgtMTg1LCA3MykuKiANClNpbmNlIHplcm8gMCBpcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBpbnRlcnZhbCwgdGhlIHJlc3VsdHMgYXJlIG5vdCBzaWduaWZpY2FudCwgZXZpZGVuY2VkIGJ5ICoqbG93IHQtc3RhdGlzdGljID0tMC44NDcgYW5kIHRoZSBwLXZhbHVlID0gMC4zOTcyICoqIG1lYW5pbmcgdGhhdCB3ZSBhcmUgbGlrZWx5IHRvIG9ic2VydmUgc3VjaCBhIChzdWJzdGFudGlhbCkgYXNzb2NpYXRpb24gYmV0d2VlbiBub19wYXltZW50cyBhbmQgc2FsYXJ5IGJ5IGNoYW5jZS4NCmBgYHtyIGNvbmZpbnQsZWNobz1GQUxTRX0NCmxpYnJhcnkoYnJvb20pDQpjb25maW50KG1vZGVsMSkNCg0KYTE9Z2dwbG90KHBheTIsYWVzKG5vX3BheW1lbnRzLHNhbGFyeSkpKw0KICBnZW9tX3BvaW50KCkrZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikrDQogIGdlb21fc21vb3RoKHNlID1GLCBjb2xvcj0gInJlZCIpK2dndGl0bGUoIiNwYXltZW50cyB2ZXJzdXMgU2FsYXJ5IikNCg0KbW9kZWwxX3Jlc3VsdHMgPC1hdWdtZW50KG1vZGVsMSwgcGF5MikNCmIxPWdncGxvdChtb2RlbDFfcmVzdWx0cywgYWVzKC5maXR0ZWQsIC5yZXNpZCkpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2VvbV9zbW9vdGgoc2UgPSBGQUxTRSkgKw0KICBnZ3RpdGxlKCJSZXNpZHVhbHMgdnMgRml0dGVkIikNCg0KZ2dwdWJyOjpnZ2FycmFuZ2UoYTEsYjEpDQoNCmBgYA0KDQojIyMjICoqUmVzaWR1YWxzIHZlcnN1cyBGaXR0ZWQgcGxvdCoqDQogVGhlIFJlc2lkdWFscyB2ZXJzdXMgRml0dGVkIHBsb3QgZm9yIHRoZSBzaW1wbGUgbGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwgYWJvdmUgc2hvd3MgdGhhdCBudW1iZXIgb2YgY3JlZGl0IHBheW1lbnRzIGlzIG5vdCBsaW5lYXJseSByZWxhdGVkIHRvIHRoZSB0b3RhbCAzLW1vbnRoIHNhbGFyeS4NCiANCiBBbHNvIGZyb20gdGhlIG1vZGVsIHN1bW1hcnkgYWJvdmUgdGhlIFItc3F1YXJlZCB2YWx1ZSB3YXMgMC4wOCUgbWVhbmluZyB0aGF0IG51bWJlciBvZiBwYXltZW50cyBvbmx5IGV4cGxhaW5lZCAwLjA4JSBvZiB0aGUgdmFyaWF0aW9uIGluIHRoZSBzYWxhcnkuDQogDQogVGh1cywgdGhlIG5leHQgc3RlcCB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZSBtb2RlbCBpcyBhZGQgbW9yZSBpbmRlcGVuZGVudCB2YXJpYWJsZXMgdG8gZXhwbGFpbiB0aGUgdmFyaWF0aW9uIGluIHRoZSBzYWxhcnkuDQogDQotLS0gDQogDQogUGxvdHRpbmcgaGlzdG9ncmFtcyBvZiBzYWxhcnksIGF2ZXJhZ2UgMy1tb250aCBzYWxhcnksIGFnZSBhbmQgbnVtYmVyIG9mIGNyZWRpdCB0cmFuc2FjdGlvbnMgc2hvd2VkIHRoYXQgdGhlc2UgdmFyaWFibGVzIG5lZWRlZCB0byBiZSB0cmFuc2Zvcm1lZCB1c2luZyB0aGUgbmF0dXJhbCBsb2cgdG8gYXBwcm94aW1hdGUgYSBub3JtYWwgZGlzdHJpYnV0aW9uLg0KDQpgYGB7ciBoaXN0b2dyYW0sIGVjaG89RkFMU0V9DQphPWdncGxvdChwYXkyLGFlcyhzYWxhcnkpKStnZW9tX2hpc3RvZ3JhbShjb2xvcj0iYmx1ZSIpK2dndGl0bGUoIkhpc3RvZ3JhbSBvZiBTYWxhcnkiKQ0KDQphMT1nZ3Bsb3QocGF5MixhZXMobF9zYWxhcnkpKStnZW9tX2hpc3RvZ3JhbShjb2xvcj0iYmx1ZSIpK2dndGl0bGUoIkhpc3RvZ3JhbSBvZiBsbihTYWxhcnkpIikNCg0KYjE9Z2dwbG90KHBheTIsYWVzKGF2Z19zYWxhcnkpKStnZW9tX2hpc3RvZ3JhbShjb2xvcj0iYmx1ZSIpK2dndGl0bGUoIkhpc3RvZ3JhbSBBdmdfU2FsYXJ5IikNCg0KYj1nZ3Bsb3QocGF5MixhZXMobF9hdmdfc2FsYXJ5KSkrZ2VvbV9oaXN0b2dyYW0oY29sb3I9ImJsdWUiKStnZ3RpdGxlKCJIaXN0b2dyYW0gbG4oQXZnX1NhbGFyeSkiKQ0KDQpnZ3B1YnI6OmdnYXJyYW5nZShhLGExLGIxLGIsIG5jb2w9MiwgbnJvdz0yKQ0KYGBgDQoqKkhpc3RvZ3JhbXMgYWZ0ZXIgbmF0dXJhbCBsb2cgdHJhbnNmb3JtYXRpb25zIG9mIHRvdGFsIDMtbW9udGggU2FsYXJ5IGFuZCBhdmVyYWdlIDMtbW9udGggc2FsYXJ5KiogDQoNCmBgYHtyIGxuIGhpc3RvZ3JhbSwgZWNobz1GQUxTRX0NCg0KZDE9Z2dwbG90KHBheTIsYWVzKGFnZSkpK2dlb21faGlzdG9ncmFtKGNvbG9yPSJibHVlIikrZ2d0aXRsZSgiSGlzdG9ncmFtIG9mIEFnZSIpDQoNCmQ9Z2dwbG90KHBheTIsYWVzKGxfYWdlKSkrZ2VvbV9oaXN0b2dyYW0oY29sb3I9ImJsdWUiKStnZ3RpdGxlKCJIaXN0b2dyYW0gb2YgbG4oQWdlKSIpDQoNCmM9Z2dwbG90KHBheTIsYWVzKG5vX3BheW1lbnRzKSkrZ2VvbV9oaXN0b2dyYW0oY29sb3I9ImJsdWUiKStnZ3RpdGxlKCJIaXN0b2dyYW0gb2YgIyBjcmVkaXQgcGF5bWVudHMiKQ0KDQpjMT1nZ3Bsb3QocGF5MixhZXMobF9ub19wYXltZW50cykpK2dlb21faGlzdG9ncmFtKGNvbG9yPSJibHVlIikrZ2d0aXRsZSgiSGlzdG9ncmFtIG9mIGxuKCNjcmVkaXQgcGF5bWVudHMpIikNCg0KZ2dwdWJyOjpnZ2FycmFuZ2UoZDEsZCxjLGMxLCBuY29sPTIsIG5yb3c9MikNCmBgYA0KKipIaXN0b2dyYW1zIGFmdGVyIG5hdHVyYWwgbG9nIHRyYW5zZm9ybWF0aW9ucyBvZiBBZ2UgYW5kIE51bWJlciBpZiBDcmVkaXQgcGF5bWVudHMqKg0KDQoNCiMjIyMgKipNdWx0aXBsZSBMaW5lYXIgUmVncmVzc2lvbioqDQogKipNdWx0aXBsZSBMaW5lYXIgUmVncmVzc2lvbj1sbiAodG90YWxfM19tb250aF9TYWxhcnkpfmxuKE51bWJlciBvZiBjcmVkaXQgdHJhbnNhY3Rpb25zKStsbihhdmVyYWdlXzNfbW9udGhfc2FsYXJ5KStsbihhZ2UpK2dlbmRlcioqDQoNCipsX3NhbGFyeSo9MS4yMzMrMC4xMTEoKk5vX3BheW1lbnRzKikrMC45ODMoKkFnZSopKzAuMDExKCpHZW5kZXIqKQ0KDQoNCmBgYHtyIG1vZGVsMn0NCm1vZGVsMj1sbShsX3NhbGFyeX5ub19wYXltZW50cytsX2F2Z19zYWxhcnkrYWdlK2dlbmRlciwgZGF0YT1wYXkyKQ0KDQpzdW1tYXJ5KG1vZGVsMikNCnBsb3QobW9kZWwyKQ0KYGBgDQoNCiMjIyMgKipFeHBsYW5hdGlvbiBvZiBNdWx0aXBsZSBMaW5lYXIgUmVncmVzc2lvbiByZXN1bHRzKioNCg0KKipSZXNpZHVhbHMgdmVyc3VzIEZpdHRlZCBwbG90KioNClRoZSBwb2ludHMgYXJlIGdhdGhlcmVkIHJhbmRvbWx5IGFyb3VuZCB0aGUgcmVzaWR1YWw9IDAgbGluZSBpbmRpY2F0aW5nIHRoYXQgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGVyZSBpcyBhIGxpbmVhciByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcmVzcG9uc2UgdmFyaWFibGUgKFNhbGFyeSkgYW5kIHRoZSBQcmVkaWN0b3IgdmFyaWFibGVzIGlzIHJlYXNvbmFibGUuDQoNCkhvd2V2ZXIsIHRoZSBwb2ludHMgYXJvdW5kKDEwLC0wLjYpIHNob3cgdGhhdCB0aGVyZSBhcmUgb3V0bGllcnMgaW4gdGhlIGRhdGEuDQoNCioqTm9ybWFsIFEtUSBQbG90KioNClRoZSBOb3JtYWwgUS1RIFBsb3Qgc2hvd3MgdGhhdCB0aGVyZSBhcmUgYSBsb3Qgb2YgbmVnYXRpdmUgcmVzaWR1YWwgdmFsdWVzLiBTaW5jZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIFN0YW5kYXJkaXplZCBhbmQgdGhlb3JldGljYWwgcmVzaWR1YWxzIGlzIG5vdCBsaW5lYXIsIHRoZSBhc3N1bXB0aW9uIG9mIGxpbmVhciByZWdyZXNzaW9uIHRoYXQgdGhlIGVycm9yIHRlcm1zIGFyZSBub3JtYWxseSBkaXN0cmlidXRlZCBpcyBub3QgbWV0LiANCg0KDQotLS0tDQpUaGUgQ29tcGFyaXNvbiBvZiB0aGUgUmVzaWR1YWwgdnMgRml0dGVkIHBsb3RzIGZvciBNb2RlbDEgYW5kIE1vZGVsMiBzaG93IHRoYXQgTW9kZWwyIGlzIGEgYmV0dGVyIGZpdCBmb3IgdGhlIGRhdGEgdG8gcHJlZGljdCB0aGUgc2FsYXJ5Lg0KDQoqKk1vZGVsMiBoYXMgYW4gYWRqdXN0ZWQgUi1zcXVhcmVkIHZhbHVlIG9mIDk2LjQ2JSoqIG1lYW5pbmcgdGhhdCA5Ni40NiUgb2YgdGhlIHZhcmlhdGlvbiBpbiBsbihzYWxhcnkpIGlzIGV4cGxhaW5lZCBieSB0aGUgcHJlZGljdG9yIHZhcmlhYmxlcywgbG4oYXZlcmFnZSAzLW1vbnRoIHNhbGFyeSksYWdlLGdlbmRlciBhbmQgbnVtYmVyIG9mIGNyZWRpdCBwYXltZW50cy4NCg0KKipNb2RlbCAyIGhhcyBhbiBGLXN0YXRpc3RpYyBvZiA2MDExLjQ5MSBhbmQgYSBwLXZhbHVlIG9mIDwyLjJlXi0xNiBsZXNzIHRoYW4gdGhlIGFscGhhIGxldmVsIG9mIDAuMDUsIHRoZXJlZm9yZSB3ZSBjb25jbHVkZSB0aGF0IHRoZSBtb2RlbCBpcyBhIGdvb2QgcHJlZGljdG9yIG9mIHNhbGFyeSBhbmQgdGhlc2UgcmVzdWx0cyBhcmUgc2lnbmlmaWNhbnQgYW5kIGxlc3MgbGlrZWx5IHRvIGJlIGR1ZSB0byBjaGFuY2UuKioNCg0KYGBge3IsIGVjaG89RkFMU0V9DQpsaXN0KG1vZGVsMSA9IGdsYW5jZShtb2RlbDEpLCBtb2RlbDIgPSBnbGFuY2UobW9kZWwyKSkNCmBgYA0KDQoNCg0KIGNodQ==