

Email          : brigita.melantika@student.matanauniversity.ac.id
RPubs         : https://rpubs.com/brigitatiaraem/
Jurusan      : Statistika
Address     : ARA Center, Matana University Tower
             Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.
Pengertian
Model Regresi ini dapat digunakan untuk mendeskripsikan hubungan antar variabel dengan menyesuaikan garis ke data yang diobservasi. Pada model regresi linear lebih mengacu pada garis lurus. Berbeda dengan model regresi logistic dan nonlinear yang lebih megggunakan garis lengkung. Adanya regresi ini dapat memudahkan dalam mengestimasi bagaimana perubahan yang terjadi pada variabel terikat bila variabel bebas berubah.
Regresi Linear Sederhana juga digunakakan dalam mengestimasi hubungan antara dua variabel kuantitatif serta mengetahui:
Seberapa kuat relasi antar kedua variabel.
Nilai dari variabel terikat di berbagai variasi nilai variabel bebas.
Contoh
Asumsikan anda adalah seorang social researcher yang ingin meneliti relasi antara pendapatan dan kebahagiaan. Anda melakukan survey dari 500 orang yang incomenya berkisar antara /$15k sampai /$75k dan meminta mereka untuk mengskalakan kebahagiaan mereka dari 1 sampai 10. Variabel bebas (Pendapatan) dan Variabel terikat (kebahagiaan) keduanya bersifat kuantitatif, sehingga anda bisa melakukan analisis regresi untuk melihat apakah ada hubungan linear antara kedua hal itu.
Jika Anda memiliki lebih dari satu variabel independen, gunakan regresi linier berganda sebagai gantinya.
Asumsi regresi linier sederhana
Regresi linier sederhana adalah uji parametrik (asumsi tertentu tentang data). Asumsi ini adalah:
Homogenitas varians (homoscedasticity): ukuran kesalahan dalam prediksi kami tidak berubah secara signifikan di seluruh nilai variabel independen.
Independensi pengamatan: pengamatan dalam kumpulan data dikumpulkan menggunakan metode pengambilan sampel yang valid secara statistik, dan tidak ada hubungan tersembunyi di antara pengamatan.
Normalitas: Data mengikuti distribusi normal.
Hubungan antara variabel independen dan dependen adalah linier: garis yang paling sesuai melalui titik-titik data adalah garis lurus (bukan kurva atau semacam faktor pengelompokan).
Jika data Anda tidak memenuhi asumsi homoskedastisitas atau normalitas, Anda mungkin dapat menggunakan uji nonparametrik, seperti uji peringkat Spearman.
Bagaimana melakukan regresi linier sederhana
Rumus regresi linier sederhana

Keterangan :
X mewakili variabel respon, variabel hasil, atau variabel bebas.
β0 adalah intersep dimana nilai prediksi y ketika x adalah 0.
β1 adalah parameter atau koefisien kemiringan (slope).
Y^ adalah nilai estimasi dari Y (dependen) berdasarkan X (independen).
x adalah variabel bebas yang mempengaruhi y.
e adalah error atau galat pada estimasi.
Regresi linier menemukan garis yang paling sesuai melalui data Anda dengan mencari koefisien regresi (B1) yang meminimalkan kesalahan total (e) model.
Simple linear regression in R
Berikut contoh pendapatan dan kebahagiaan kami dengan file csv.
## [1] "D:/brigita tiara KULIAH/kuliah sem4/Ekono"
## [1] "D:/brigita tiara KULIAH/kuliah sem4/Ekono"
incomedata <- read.csv("D:/brigita tiara KULIAH/kuliah sem4/Ekono/incomedata.csv")
Kode R untuk regresi linier sederhana
income.happiness.lm <- lm(happiness ~ income, data = incomedata)
income.happiness.lm
##
## Call:
## lm(formula = happiness ~ income, data = incomedata)
##
## Coefficients:
## (Intercept) income
## 0.2043 0.7138
Kode ini mengambil data yang telah Anda kumpulkan data = income.data dan menghitung pengaruh variabel independen income terhadap variabel dependen happinessmenggunakan persamaan untuk model linier: lm().
Menafsirkan hasil
Untuk melihat hasil model, Anda dapat menggunakan fungsi summary() di R seperti berikut.
summary(income.happiness.lm)
##
## Call:
## lm(formula = happiness ~ income, data = incomedata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.02479 -0.48526 0.04078 0.45898 2.37805
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.20427 0.08884 2.299 0.0219 *
## income 0.71383 0.01854 38.505 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7181 on 496 degrees of freedom
## Multiple R-squared: 0.7493, Adjusted R-squared: 0.7488
## F-statistic: 1483 on 1 and 496 DF, p-value: < 2.2e-16
Tabel tersebut menyatakan bahwa untuk menyatakan hasil dengan menggunakan ('Call') dan meringkas model residu ('Residuals') yang mana ini memberikan gambaran seberapa cocok model dengan data sebenarnya.
Pada tabel ‘Koefisien’ di baris pertama menunjukan perkiraan perpotongan y (Intercept) dengan nilai 0,20 dan baris kedua menunjukan koefisien regresi model.
Untuk menghitung prediksi nilai kebahagiaan di seluruh rentang pendapatan yang telah diamati dapat menggunakan nilai dari Intercept ke dalam persamaan regresi.
nilai kebahagiaan = 0.20 + 0.71(income)±0.018
Pada baris pendapatan yang menggambarkan perkiraan efek pendapatan pada kebahagiaan yang dapat dijelaskan seperti berikut.
Kolom Estimate adalah efek Estimate yang diperkirakan atau koefisien regresi atau nilai r^2 . Pada tabel tertera 0,713 yang dapat diartikan pada setiap satu unit peningkatan pendapatan (di mana satu unit pendapatan = $10.000) ada peningkatan 0,71 unit terkait dalam kebahagiaan yang dilaporkan (di mana kebahagiaan adalah skala 1 - 10).
Kolom Std. Error menunhjukan kesalahan atau galat standar estimasi yang menunjukkan berapa banyak variasi yang ada dalam perkiraan kami tentang hubungan antara pendapatan dan kebahagiaan.
Kolom t value menunjukan statistik uji . Kecuali jika Anda menentukan sebaliknya, statistik uji yang digunakan dalam regresi linier adalah nilai - t dari uji-t dua sisi . Semakin besar statistik uji, semakin kecil kemungkinan hasil kami terjadi secara kebetulan.
Kolom Pr(>| t |) menunjukkan p -value, seberapa besar kemungkinan untuk melihat perkiraan efek pendapatan terhadap kebahagiaan jika hipotesis nol tentang tidak ada efek itu benar.
Diketahui nilai p < 0,001 sehingga dapat * hipotesis nol ditolak* dan menyimpulkan bahwa pendapatan memiliki pengaruh yang signifikan secara statistik terhadap kebahagiaan.
Tiga baris terakhir dari ringkasan model adalah statistik tentang model secara keseluruhan. Hal terpenting yang harus diperhatikan di sini adalah nilai p dari model. Di sini signifikan ( p < 0,001), yang berarti model ini cocok untuk data yang diamati.
Mempresentasikan hasil Uji Asumsi
hubungan yang signifikan ( p <0,001) antara pendapatan dan kebahagiaan (R 2 = 0,71 ± 0,018 ), dengan peningkatan 0,71 unit dalam kebahagiaan yang dilaporkan untuk setiap peningkatan pendapatan $10.000.
Independensi pengamatan
Independensi pengamatan ini tidak memiliki autokorelasi dan pada model ini hanya ada satu variabel bebas dan satu variabel terikat sehingga tidak diperlukannya pengujian hubungan diantara variabel tersebut.
Normalitas
Untuk mengecek normalitasnya dengan menggunakan fungsi hist() seperti berikut.
hist(incomedata$happiness)

Linearitas
Pada hubungan antar variabel bebas dan terikat ini harus linear sehingga dapat dilakukan dilakukan pengujian dengan plot untuk melihat pada distribusi titik datanya apakah dapat di gambarkan dengan linear.
plot(happiness~income,data=incomedata)

Pada plot diatas dapat diamati bahwa dapat disebut linear.
LS0tDQp0aXRsZTogIkVLT05PTUVUUklLIg0Kc3VidGl0bGU6ICJXRUVLIDIiDQphdXRob3I6ICJCcmlnaXRhIFRpYXJhIEVsZ2l0eWFuYSBNZWxhbnRpa2EgKDIwMjA0OTIwMDAxKSINCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGh0bWxfZG9jdW1lbnQ6IG51bGwNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICB0aGVtZTogc2FuZHN0b25lDQogICAgY3NzOiBzdHlsZTEuY3NzDQogICAgaGlnaGxpZ2h0OiBtb25vY2hyb21lDQotLS0NCg0KDQo8aW1nIHN0eWxlPSJmbG9hdDogcmlnaHQ7IG1hcmdpbjogMHB4IDEwMHB4IDBweCAwcHg7IHdpZHRoOjI1JSIgc3JjPSJmb3Rva3UuanBnIi8+IA0KDQpgYGB7ciBsb2dvLCBlY2hvPUZBTFNFLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzMwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygibG9nb21hdGFuYS5wbmciKQ0KYGBgDQoNCkVtYWlsICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOzogIGJyaWdpdGEubWVsYW50aWthQHN0dWRlbnQubWF0YW5hdW5pdmVyc2l0eS5hYy5pZCA8YnI+DQpSUHVicyAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBodHRwczovL3JwdWJzLmNvbS9icmlnaXRhdGlhcmFlbS8gPGJyPg0KSnVydXNhbiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBbU3RhdGlzdGlrYV0oaHR0cHM6Ly9tYXRhbmF1bml2ZXJzaXR5LmFjLmlkLz9seT1hY2FkZW1pYyZjPXNiKSA8YnI+DQpBZGRyZXNzICAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgOiBBUkEgQ2VudGVyLCBNYXRhbmEgVW5pdmVyc2l0eSBUb3dlciA8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOyBKbC4gQ0JEIEJhcmF0IEthdiwgUlQuMSwgQ3VydWcgU2FuZ2VyZW5nLCBLZWxhcGEgRHVhLCBUYW5nZXJhbmcsIEJhbnRlbiAxNTgxMC4NCg0KKioqKg0KDQojIFBlbmdlcnRpYW4NCg0KKk1vZGVsIFJlZ3Jlc2kqIGluaSBkYXBhdCBkaWd1bmFrYW4gdW50dWsgbWVuZGVza3JpcHNpa2FuIGh1YnVuZ2FuIGFudGFyIHZhcmlhYmVsIGRlbmdhbiBtZW55ZXN1YWlrYW4gZ2FyaXMga2UgZGF0YSB5YW5nIGRpb2JzZXJ2YXNpLiBQYWRhIG1vZGVsIHJlZ3Jlc2kgbGluZWFyIGxlYmloIG1lbmdhY3UgcGFkYSBnYXJpcyBsdXJ1cy4gQmVyYmVkYSBkZW5nYW4gbW9kZWwgcmVncmVzaSBsb2dpc3RpYyBkYW4gbm9ubGluZWFyIHlhbmcgbGViaWggbWVnZ2d1bmFrYW4gZ2FyaXMgbGVuZ2t1bmcuIEFkYW55YSByZWdyZXNpIGluaSBkYXBhdCBtZW11ZGFoa2FuIGRhbGFtIG1lbmdlc3RpbWFzaSBiYWdhaW1hbmEgcGVydWJhaGFuIHlhbmcgdGVyamFkaSBwYWRhIHZhcmlhYmVsIHRlcmlrYXQgYmlsYSB2YXJpYWJlbCBiZWJhcyBiZXJ1YmFoLg0KDQpSZWdyZXNpIExpbmVhciBTZWRlcmhhbmEganVnYSBkaWd1bmFrYWthbiBkYWxhbSBtZW5nZXN0aW1hc2kgaHVidW5nYW4gYW50YXJhIGR1YSB2YXJpYWJlbCBrdWFudGl0YXRpZiBzZXJ0YSBtZW5nZXRhaHVpOg0KDQoxLiBTZWJlcmFwYSBrdWF0IHJlbGFzaSBhbnRhciBrZWR1YSB2YXJpYWJlbC4NCg0KMi4gTmlsYWkgZGFyaSB2YXJpYWJlbCB0ZXJpa2F0IGRpIGJlcmJhZ2FpIHZhcmlhc2kgbmlsYWkgdmFyaWFiZWwgYmViYXMuDQoNCipDb250b2gqIA0KDQpBc3Vtc2lrYW4gYW5kYSBhZGFsYWggc2VvcmFuZyBzb2NpYWwgcmVzZWFyY2hlciB5YW5nIGluZ2luIG1lbmVsaXRpIHJlbGFzaSBhbnRhcmEgcGVuZGFwYXRhbiBkYW4ga2ViYWhhZ2lhYW4uIEFuZGEgbWVsYWt1a2FuIHN1cnZleSBkYXJpIDUwMCBvcmFuZyB5YW5nIGluY29tZW55YSBiZXJraXNhciBhbnRhcmEgLyQxNWsgc2FtcGFpIC8kNzVrIGRhbiBtZW1pbnRhIG1lcmVrYSB1bnR1ayBtZW5nc2thbGFrYW4ga2ViYWhhZ2lhYW4gbWVyZWthIGRhcmkgMSBzYW1wYWkgMTAuIFZhcmlhYmVsIGJlYmFzIChQZW5kYXBhdGFuKSBkYW4gVmFyaWFiZWwgdGVyaWthdCAoa2ViYWhhZ2lhYW4pIGtlZHVhbnlhIGJlcnNpZmF0IGt1YW50aXRhdGlmLCBzZWhpbmdnYSBhbmRhIGJpc2EgbWVsYWt1a2FuIGFuYWxpc2lzIHJlZ3Jlc2kgdW50dWsgbWVsaWhhdCBhcGFrYWggYWRhIGh1YnVuZ2FuIGxpbmVhciBhbnRhcmEga2VkdWEgaGFsIGl0dS4NCg0KSmlrYSBBbmRhIG1lbWlsaWtpIGxlYmloIGRhcmkgc2F0dSB2YXJpYWJlbCBpbmRlcGVuZGVuLCBndW5ha2FuIHJlZ3Jlc2kgbGluaWVyIGJlcmdhbmRhIHNlYmFnYWkgZ2FudGlueWEuDQoNCiMgQXN1bXNpIHJlZ3Jlc2kgbGluaWVyIHNlZGVyaGFuYQ0KDQpSZWdyZXNpIGxpbmllciBzZWRlcmhhbmEgYWRhbGFoIHVqaSBwYXJhbWV0cmlrIChhc3Vtc2kgdGVydGVudHUgdGVudGFuZyBkYXRhKS4gQXN1bXNpIGluaSBhZGFsYWg6DQoNCjEuIEhvbW9nZW5pdGFzIHZhcmlhbnMgKGhvbW9zY2VkYXN0aWNpdHkpOiB1a3VyYW4ga2VzYWxhaGFuIGRhbGFtIHByZWRpa3NpIGthbWkgdGlkYWsgYmVydWJhaCBzZWNhcmEgc2lnbmlmaWthbiBkaSBzZWx1cnVoIG5pbGFpIHZhcmlhYmVsIGluZGVwZW5kZW4uDQoNCjIuIEluZGVwZW5kZW5zaSBwZW5nYW1hdGFuOiBwZW5nYW1hdGFuIGRhbGFtIGt1bXB1bGFuIGRhdGEgZGlrdW1wdWxrYW4gbWVuZ2d1bmFrYW4gbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIHZhbGlkIHNlY2FyYSBzdGF0aXN0aWssIGRhbiB0aWRhayBhZGEgaHVidW5nYW4gdGVyc2VtYnVueWkgZGkgYW50YXJhIHBlbmdhbWF0YW4uDQoNCjMuIE5vcm1hbGl0YXM6IERhdGEgbWVuZ2lrdXRpIGRpc3RyaWJ1c2kgbm9ybWFsLg0KDQo0LiBIdWJ1bmdhbiBhbnRhcmEgdmFyaWFiZWwgaW5kZXBlbmRlbiBkYW4gZGVwZW5kZW4gYWRhbGFoIGxpbmllcjogZ2FyaXMgeWFuZyBwYWxpbmcgc2VzdWFpIG1lbGFsdWkgdGl0aWstdGl0aWsgZGF0YSBhZGFsYWggZ2FyaXMgbHVydXMgKGJ1a2FuIGt1cnZhIGF0YXUgc2VtYWNhbSBmYWt0b3IgcGVuZ2Vsb21wb2thbikuDQoNCg0KSmlrYSBkYXRhIEFuZGEgdGlkYWsgbWVtZW51aGkgYXN1bXNpIGhvbW9za2VkYXN0aXNpdGFzIGF0YXUgbm9ybWFsaXRhcywgQW5kYSBtdW5na2luIGRhcGF0IG1lbmdndW5ha2FuIHVqaSBub25wYXJhbWV0cmlrLCBzZXBlcnRpIHVqaSBwZXJpbmdrYXQgU3BlYXJtYW4uDQoNCiMgQmFnYWltYW5hIG1lbGFrdWthbiByZWdyZXNpIGxpbmllciBzZWRlcmhhbmENCg0KKlJ1bXVzIHJlZ3Jlc2kgbGluaWVyIHNlZGVyaGFuYSoNCg0KPGltZyBzdHlsZT0iZmxvYXQ6IGNlbnRlcjsgbWFyZ2luOiAwcHggMTAwcHggMHB4IDBweDsgd2lkdGg6MjUlIiBzcmM9InNpbXBsZS1saW5lYXItcmVncmVzc2lvbi1mb3JtdWxhLnBuZyIvPg0KDQpLZXRlcmFuZ2FuIDogDQoNCi0gKlgqIG1ld2FraWxpIHZhcmlhYmVsIHJlc3BvbiwgdmFyaWFiZWwgaGFzaWwsIGF0YXUgdmFyaWFiZWwgYmViYXMuDQoNCi0gKs6yMCogYWRhbGFoIGludGVyc2VwIGRpbWFuYSBuaWxhaSBwcmVkaWtzaSB5IGtldGlrYSB4IGFkYWxhaCAwLg0KDQotICrOsjEqIGFkYWxhaCBwYXJhbWV0ZXIgYXRhdSBrb2VmaXNpZW4ga2VtaXJpbmdhbiAoc2xvcGUpLg0KDQotICpZXiogYWRhbGFoIG5pbGFpIGVzdGltYXNpIGRhcmkgWSAoZGVwZW5kZW4pIGJlcmRhc2Fya2FuIFggKGluZGVwZW5kZW4pLg0KDQotICp4KiBhZGFsYWggdmFyaWFiZWwgYmViYXMgeWFuZyBtZW1wZW5nYXJ1aGkgeS4NCg0KLSAqZSogYWRhbGFoIGVycm9yIGF0YXUgZ2FsYXQgcGFkYSBlc3RpbWFzaS4NCg0KUmVncmVzaSBsaW5pZXIgbWVuZW11a2FuIGdhcmlzIHlhbmcgcGFsaW5nIHNlc3VhaSBtZWxhbHVpIGRhdGEgQW5kYSBkZW5nYW4gbWVuY2FyaSBrb2VmaXNpZW4gcmVncmVzaSAoQjEpIHlhbmcgbWVtaW5pbWFsa2FuIGtlc2FsYWhhbiB0b3RhbCAoZSkgbW9kZWwuDQoNCiMgU2ltcGxlIGxpbmVhciByZWdyZXNzaW9uIGluIFINCg0KQmVyaWt1dCBjb250b2ggcGVuZGFwYXRhbiBkYW4ga2ViYWhhZ2lhYW4ga2FtaSBkZW5nYW4gZmlsZSBjc3YuDQoNCmBgYHtyfQ0KcHJpbnQoZ2V0d2QoKSkNCmdldHdkKCkNCnNldHdkKGdldHdkKCkpDQpgYGANCmBgYHtyfQ0KaW5jb21lZGF0YSA8LSByZWFkLmNzdigiRDovYnJpZ2l0YSB0aWFyYSBLVUxJQUgva3VsaWFoIHNlbTQvRWtvbm8vaW5jb21lZGF0YS5jc3YiKQ0KYGBgDQoNCiMgS29kZSBSIHVudHVrIHJlZ3Jlc2kgbGluaWVyIHNlZGVyaGFuYQ0KDQpgYGB7cn0NCmluY29tZS5oYXBwaW5lc3MubG0gPC0gbG0oaGFwcGluZXNzIH4gaW5jb21lLCBkYXRhID0gaW5jb21lZGF0YSkNCmluY29tZS5oYXBwaW5lc3MubG0NCmBgYA0KDQpLb2RlIGluaSBtZW5nYW1iaWwgZGF0YSB5YW5nIHRlbGFoIEFuZGEga3VtcHVsa2FuIGBkYXRhID0gaW5jb21lLmRhdGFgIGRhbiBtZW5naGl0dW5nIHBlbmdhcnVoIHZhcmlhYmVsIGluZGVwZW5kZW4gYGluY29tZWAgdGVyaGFkYXAgdmFyaWFiZWwgYGRlcGVuZGVuYCBoYXBwaW5lc3NtZW5nZ3VuYWthbiBwZXJzYW1hYW4gdW50dWsgbW9kZWwgbGluaWVyOiBgbG0oKWAuDQoNCiMgTWVuYWZzaXJrYW4gaGFzaWwNCg0KVW50dWsgbWVsaWhhdCBoYXNpbCBtb2RlbCwgQW5kYSBkYXBhdCBtZW5nZ3VuYWthbiBmdW5nc2kgYHN1bW1hcnkoKWAgZGkgUiBzZXBlcnRpIGJlcmlrdXQuDQoNCmBgYHtyfQ0Kc3VtbWFyeShpbmNvbWUuaGFwcGluZXNzLmxtKQ0KYGBgDQoNClRhYmVsIHRlcnNlYnV0IG1lbnlhdGFrYW4gYmFod2EgdW50dWsgbWVueWF0YWthbiBoYXNpbCBkZW5nYW4gbWVuZ2d1bmFrYW4gYCgnQ2FsbCcpYCBkYW4gbWVyaW5na2FzIG1vZGVsIHJlc2lkdSAgYCgnUmVzaWR1YWxzJylgIHlhbmcgbWFuYSBpbmkgbWVtYmVyaWthbiBnYW1iYXJhbiBzZWJlcmFwYSBjb2NvayBtb2RlbCBkZW5nYW4gZGF0YSBzZWJlbmFybnlhLg0KDQpQYWRhIHRhYmVsICdLb2VmaXNpZW4nIGRpIGJhcmlzIHBlcnRhbWEgbWVudW5qdWthbiBwZXJraXJhYW4gcGVycG90b25nYW4geSAoSW50ZXJjZXB0KSBkZW5nYW4gbmlsYWkgMCwyMCBkYW4gYmFyaXMga2VkdWEgbWVudW5qdWthbiBrb2VmaXNpZW4gcmVncmVzaSBtb2RlbC4NCg0KVW50dWsgbWVuZ2hpdHVuZyBwcmVkaWtzaSBuaWxhaSBrZWJhaGFnaWFhbiBkaSBzZWx1cnVoIHJlbnRhbmcgcGVuZGFwYXRhbiB5YW5nIHRlbGFoIGRpYW1hdGkgZGFwYXQgbWVuZ2d1bmFrYW4gbmlsYWkgZGFyaSBJbnRlcmNlcHQga2UgZGFsYW0gcGVyc2FtYWFuIHJlZ3Jlc2kuDQoNCipuaWxhaSBrZWJhaGFnaWFhbiA9IDAuMjAgKyAwLjcxKGluY29tZSnCsTAuMDE4Kg0KDQpQYWRhIGJhcmlzIHBlbmRhcGF0YW4geWFuZyBtZW5nZ2FtYmFya2FuIHBlcmtpcmFhbiBlZmVrIHBlbmRhcGF0YW4gcGFkYSBrZWJhaGFnaWFhbiB5YW5nIGRhcGF0IGRpamVsYXNrYW4gc2VwZXJ0aSBiZXJpa3V0Lg0KDQpLb2xvbSBgRXN0aW1hdGVgIGFkYWxhaCBlZmVrIEVzdGltYXRlIHlhbmcgZGlwZXJraXJha2FuIGF0YXUgKmtvZWZpc2llbiByZWdyZXNpKiBhdGF1IG5pbGFpIHJeMiAuIFBhZGEgdGFiZWwgIHRlcnRlcmEgMCw3MTMgeWFuZyBkYXBhdCBkaWFydGlrYW4gcGFkYSBzZXRpYXAgc2F0dSB1bml0IHBlbmluZ2thdGFuIHBlbmRhcGF0YW4gKGRpIG1hbmEgc2F0dSB1bml0IHBlbmRhcGF0YW4gPSAkMTAuMDAwKSBhZGEgcGVuaW5na2F0YW4gMCw3MSB1bml0IHRlcmthaXQgZGFsYW0ga2ViYWhhZ2lhYW4geWFuZyBkaWxhcG9ya2FuIChkaSBtYW5hIGtlYmFoYWdpYWFuIGFkYWxhaCBza2FsYSAxIC0gMTApLg0KDQpLb2xvbSBgU3RkLiBFcnJvcmAgbWVudW5oanVrYW4ga2VzYWxhaGFuIGF0YXUgZ2FsYXQgc3RhbmRhciBlc3RpbWFzaSB5YW5nIG1lbnVuanVra2FuIGJlcmFwYSBiYW55YWsgdmFyaWFzaSB5YW5nIGFkYSBkYWxhbSBwZXJraXJhYW4ga2FtaSB0ZW50YW5nIGh1YnVuZ2FuIGFudGFyYSBwZW5kYXBhdGFuIGRhbiBrZWJhaGFnaWFhbi4NCg0KS29sb20gYHQgdmFsdWVgIG1lbnVuanVrYW4gc3RhdGlzdGlrIHVqaSAuIEtlY3VhbGkgamlrYSBBbmRhIG1lbmVudHVrYW4gc2ViYWxpa255YSwgc3RhdGlzdGlrIHVqaSB5YW5nIGRpZ3VuYWthbiBkYWxhbSByZWdyZXNpIGxpbmllciBhZGFsYWggKm5pbGFpIC0gdCogZGFyaSAqdWppLXQgZHVhIHNpc2kqIC4gU2VtYWtpbiBiZXNhciBzdGF0aXN0aWsgdWppLCBzZW1ha2luIGtlY2lsIGtlbXVuZ2tpbmFuIGhhc2lsIGthbWkgdGVyamFkaSBzZWNhcmEga2ViZXR1bGFuLg0KDQpLb2xvbSBgUHIoPnwgdCB8KWAgbWVudW5qdWtrYW4gKnAgLXZhbHVlKiwgc2ViZXJhcGEgYmVzYXIga2VtdW5na2luYW4gdW50dWsgbWVsaWhhdCBwZXJraXJhYW4gZWZlayBwZW5kYXBhdGFuIHRlcmhhZGFwIGtlYmFoYWdpYWFuIGppa2EgaGlwb3Rlc2lzIG5vbCB0ZW50YW5nIHRpZGFrIGFkYSBlZmVrIGl0dSBiZW5hci4NCg0KRGlrZXRhaHVpIG5pbGFpIHAgPCAwLDAwMSBzZWhpbmdnYSBkYXBhdCAqIGhpcG90ZXNpcyBub2wgZGl0b2xhayogZGFuIG1lbnlpbXB1bGthbiBiYWh3YSAqcGVuZGFwYXRhbiBtZW1pbGlraSBwZW5nYXJ1aCB5YW5nIHNpZ25pZmlrYW4gc2VjYXJhIHN0YXRpc3RpayB0ZXJoYWRhcCBrZWJhaGFnaWFhbiouDQoNClRpZ2EgYmFyaXMgdGVyYWtoaXIgZGFyaSByaW5na2FzYW4gbW9kZWwgYWRhbGFoIHN0YXRpc3RpayB0ZW50YW5nIG1vZGVsIHNlY2FyYSBrZXNlbHVydWhhbi4gSGFsIHRlcnBlbnRpbmcgeWFuZyBoYXJ1cyBkaXBlcmhhdGlrYW4gZGkgc2luaSBhZGFsYWggbmlsYWkgcCBkYXJpIG1vZGVsLiBEaSBzaW5pIHNpZ25pZmlrYW4gKCBwIDwgMCwwMDEpLCB5YW5nIGJlcmFydGkgbW9kZWwgaW5pIGNvY29rIHVudHVrIGRhdGEgeWFuZyBkaWFtYXRpLg0KDQojIE1lbXByZXNlbnRhc2lrYW4gaGFzaWwgVWppIEFzdW1zaQ0KDQpodWJ1bmdhbiB5YW5nIHNpZ25pZmlrYW4gKCBwIDwwLDAwMSkgYW50YXJhIHBlbmRhcGF0YW4gZGFuIGtlYmFoYWdpYWFuIChSIDIgPSAwLDcxIMKxIDAsMDE4ICksIGRlbmdhbiBwZW5pbmdrYXRhbiAwLDcxIHVuaXQgZGFsYW0ga2ViYWhhZ2lhYW4geWFuZyBkaWxhcG9ya2FuIHVudHVrIHNldGlhcCBwZW5pbmdrYXRhbiBwZW5kYXBhdGFuICQxMC4wMDAuDQoNCiMjIEluZGVwZW5kZW5zaSBwZW5nYW1hdGFuIA0KDQpJbmRlcGVuZGVuc2kgcGVuZ2FtYXRhbiBpbmkgdGlkYWsgbWVtaWxpa2kgYXV0b2tvcmVsYXNpIGRhbiBwYWRhIG1vZGVsIGluaSBoYW55YSBhZGEgc2F0dSB2YXJpYWJlbCBiZWJhcyBkYW4gc2F0dSB2YXJpYWJlbCB0ZXJpa2F0IHNlaGluZ2dhIHRpZGFrIGRpcGVybHVrYW5ueWEgcGVuZ3VqaWFuIGh1YnVuZ2FuIGRpYW50YXJhIHZhcmlhYmVsIHRlcnNlYnV0Lg0KDQojIyBOb3JtYWxpdGFzIA0KDQpVbnR1ayBtZW5nZWNlayBub3JtYWxpdGFzbnlhIGRlbmdhbiBtZW5nZ3VuYWthbiBmdW5nc2kgYGhpc3QoKWAgc2VwZXJ0aSBiZXJpa3V0Lg0KDQpgYGB7cn0NCmhpc3QoaW5jb21lZGF0YSRoYXBwaW5lc3MpDQpgYGANCg0KIyMgTGluZWFyaXRhcw0KDQpQYWRhIGh1YnVuZ2FuIGFudGFyIHZhcmlhYmVsIGJlYmFzIGRhbiB0ZXJpa2F0IGluaSBoYXJ1cyBsaW5lYXIgc2VoaW5nZ2EgZGFwYXQgZGlsYWt1a2FuIGRpbGFrdWthbiBwZW5ndWppYW4gZGVuZ2FuIHBsb3QgdW50dWsgbWVsaWhhdCBwYWRhIGRpc3RyaWJ1c2kgdGl0aWsgZGF0YW55YSBhcGFrYWggZGFwYXQgZGkgZ2FtYmFya2FuIGRlbmdhbiBsaW5lYXIuDQoNCmBgYHtyfQ0KcGxvdChoYXBwaW5lc3N+aW5jb21lLGRhdGE9aW5jb21lZGF0YSkNCmBgYA0KDQpQYWRhIHBsb3QgZGlhdGFzIGRhcGF0IGRpYW1hdGkgYmFod2EgZGFwYXQgZGlzZWJ1dCBsaW5lYXIuDQoNCiMjIEhvbW9za2VkYXN0aXNpdGFzDQoNCmBgYHtyfQ0KcGFyKG1yb3c9YygyLDIpKQ0KcGxvdChpbmNvbWUuaGFwcGluZXNzLmxtKQ0KYGBgDQoNCkRhcmkgcGxvdCBkaWF0YXMgZGFwYXQgZGlsaWhhdCBiYWh3YSByZXNpZHVhbCBueWF0YSBkYXJpIG1vZGVsIHRlcnNlYnV0IHlhbmcgbWVtYmVudHVrIGdhcmlzIHNhdHUga2Ugc2F0dSB5YW5nIGhhbXBpciBzZW1wdXJuYSBkZW5nbmEgcmVzaWR1YWwgdGVvcml0aXMgZGFyaSBtb2RlbCB5YW5nIHNlbXB1cm5hLiBTZWhpbmdnYSBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YSBtb2RlbCBpbmkgbWVtZW51aGkgYXN1bXNpIGhvbW9za2VzZGFzdGlzaXRhcy4=