Multinomial Logistic

Analysis and Predictive Modeling

Chello Frhino Mike M (52240031)

October 23, 2025

foto

1 Pengertian Regresi Logistik Multinomial

Regresi logistik multinomial merupakan pengembangan dari regresi logistik biner yang digunakan ketika variabel dependen memiliki lebih dari dua kategori dan bersifat nominal (tidak berurutan). Model ini bertujuan untuk memperkirakan peluang suatu observasi masuk ke salah satu kategori berdasarkan sejumlah variabel independen, baik numerik maupun kategorikal.

Prinsip dasarnya adalah membandingkan peluang (odds) setiap kategori terhadap kategori acuan (reference category), kemudian mengekspresikannya dalam bentuk hubungan linier dengan variabel-variabel prediktor.

2 Rumus Regresi Logistik Multinomial

Secara umum, persamaan model regresi logistik multinomial untuk kategori j (j = 1, 2, …, k-1) adalah:

\[log( P(Y=j) / P(Y=base) ) = β0j + β1jX1 + β2jX2 + ... + βpjXp\]

dengan arti:
- P(Y=j) sebagai probabilitas bahwa Y berada pada kategori j
- P(Y=base) sebagai probabilitas kategori referensi (misal “Low”)
- β0j, β1j, …, βpj sebagai parameter model untuk kategori j

Dengan demikian, model akan menghasilkan (k-1) set koefisien.

3 Studi Kasus

3.1 Import dan Eksplorasi Dataset

## Struktur Dataset:
## tibble [200 × 5] (S3: tbl_df/tbl/data.frame)
##  $ Advertising  : num [1:200] 1.22e+15 2.47e+15 1.52e+14 2.71e+15 2.85e+15 ...
##  $ Salespeople  : num [1:200] 1.60e+15 3.41e+15 2.50e+15 2.29e+15 2.01e+15 ...
##  $ Satisfaction : num [1:200] 9.87e+15 2.23e+15 9.15e+15 6.19e+15 4.56e+15 ...
##  $ Competition  : num [1:200] 3.14e+15 7.18e+15 3.03e+15 3.87e+15 2.57e+14 ...
##  $ Success_Level: Factor w/ 3 levels "Low","Medium",..: 1 3 2 3 3 1 2 2 1 1 ...
## 
## Ringkasan Statistik Dataset:
##   Advertising         Salespeople         Satisfaction      
##  Min.   :1.667e+13   Min.   :1.599e+12   Min.   :9.721e+13  
##  1st Qu.:1.329e+15   1st Qu.:1.263e+15   1st Qu.:2.352e+15  
##  Median :1.975e+15   Median :1.991e+15   Median :4.640e+15  
##  Mean   :2.522e+15   Mean   :1.950e+15   Mean   :4.872e+15  
##  3rd Qu.:2.710e+15   3rd Qu.:2.812e+15   3rd Qu.:7.364e+15  
##  Max.   :9.692e+15   Max.   :3.478e+15   Max.   :9.970e+15  
##   Competition        Success_Level
##  Min.   :2.485e+13   Low   :66    
##  1st Qu.:2.315e+15   Medium:66    
##  Median :4.764e+15   High  :68    
##  Mean   :4.807e+15                
##  3rd Qu.:7.419e+15                
##  Max.   :9.930e+15

yang mana artinya:

  1. Dataset yang digunakan berisi variabel prediktor numerik seperti:
  • Advertising → jumlah pengeluaran iklan,

  • Salespeople → jumlah tenaga penjualan,

  • Satisfaction → tingkat kepuasan pelanggan,

  • Competition → tingkat persaingan pasar.

Semua variabel ini telah dikonversi ke format numerik agar dapat dianalisis dengan benar oleh model regresi.

  1. Variabel target (Success_Level) memiliki tiga kategori bertingkat (Low, Medium, High) yang merepresentasikan tingkat keberhasilan suatu cabang, produk, atau strategi pemasaran.

3.Berdasarkan statistik deskriptif, dapat diamati apakah:

  • terdapat variasi cukup besar antar observasi,

-distribusi antar kategori Success_Level relatif seimbang atau tidak. Jika salah satu kategori jauh lebih banyak, hal ini perlu diperhatikan karena dapat memengaruhi akurasi model (class imbalance).

Kesimpulan Awal: Data sudah bersih dan siap untuk digunakan dalam proses pemodelan regresi logistik multinomial. Tahap eksplorasi ini penting agar analisis yang dilakukan pada langkah berikutnya (pembangunan model) memiliki dasar data yang valid dan konsisten.

3.2 Pembangunan Model Regresi Logistik Multinomial

## # weights:  18 (10 variable)
## initial  value 219.722458 
## final  value 219.722458 
## converged
## Call:
## multinom(formula = Success_Level ~ Advertising + Salespeople + 
##     Satisfaction + Competition, data = data_multi)
## 
## Coefficients:
##          (Intercept)   Advertising  Salespeople  Satisfaction   Competition
## Medium -2.345625e-32 -6.294079e-16 2.166003e-16 -5.775766e-16 -1.128020e-16
## High    4.691250e-32 -7.918943e-16 8.561553e-16  4.864593e-16 -3.219946e-16
## 
## Std. Errors:
##         (Intercept)  Advertising  Salespeople Satisfaction  Competition
## Medium          NaN 4.226550e-16 4.748291e-16 3.951824e-16 1.757905e-16
## High   1.273623e-31 1.316661e-16 1.807983e-16 8.430739e-17 6.919014e-17
## 
## Residual Deviance: 439.4449 
## AIC: 459.4449

3.3 Interpretasi Koefisien

Tabel 3. Odds Ratio dari Model Regresi Logistik Multinomial
(Intercept) Advertising Salespeople Satisfaction Competition
Medium 1 1 1 1 1
High 1 1 1 1 1
## 
## Interpretasi Umum:
## - Nilai exp(koefisien) > 1 menunjukkan peningkatan peluang masuk ke kategori tersebut dibanding kategori referensi (Low).
## - Nilai exp(koefisien) < 1 menunjukkan penurunan peluang relatif terhadap kategori referensi.

3.4 Evaluasi Model

Tabel 4. Matriks Kebingungan Model Multinomial Logistic Regression
Low Medium High
Low 35 23 22
Medium 0 0 0
High 31 43 46
## 
## Akurasi Model: 40.5 %

3.5 Visualisasi Hasil

3.6 Kesimpulan

Model regresi logistik multinomial menunjukkan hubungan antara faktor-faktor seperti Advertising, Salespeople, Satisfaction, dan Competition terhadap peluang keberhasilan perusahaan.

Model ini dapat memprediksi probabilitas masing-masing kategori keberhasilan (Low, Medium, High) dan memberikan insight mengenai pengaruh setiap faktor terhadap keberhasilan bisnis.

Secara umum: - Peningkatan nilai Advertising dan Satisfaction cenderung meningkatkan peluang masuk ke kategori Medium dan High. - Faktor Competition yang terlalu tinggi dapat menurunkan peluang keberhasilan. - Model memberikan gambaran probabilistik, bukan hasil pasti, sehingga berguna untuk pengambilan keputusan berbasis data.

4 Referensi

LS0tDQp0aXRsZTogIk11bHRpbm9taWFsIExvZ2lzdGljIg0Kc3VidGl0bGU6ICJBbmFseXNpcyBhbmQgUHJlZGljdGl2ZSBNb2RlbGluZyINCmF1dGhvcjogDQogIC0gIkNoZWxsbyBGcmhpbm8gTWlrZSBNICg1MjI0MDAzMSkiDQpkYXRlOiAgImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpkb3duY3V0ZTogICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIA0KLS0tDQoNCjxzdHlsZT4NCiAgYm9keSB7DQogICAgdGV4dC1hbGlnbjoganVzdGlmeTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgICBvdmVyZmxvdy14OiBhdXRvOw0KICAgIGZvbnQtZmFtaWx5OiBjdXJzaXZlOw0KICB9DQo8L3N0eWxlPg0KDQoNCjxpbWcgaWQ9ImZvdG8tYXV0aG9yIiBzcmM9IkM6L1VzZXJzL1VTRVIvRG9jdW1lbnRzL0FNb2RlbC9tdWx0aW5vbWlhbC1sb2dpc3RpYy1yZWdyZXNzaW9uLTEtMTAyNHg2NzYtMS5qcGciIGFsdD0iZm90byIgc3R5bGU9IndpZHRoOjUwMHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyI+DQoNCiMgUGVuZ2VydGlhbiBSZWdyZXNpIExvZ2lzdGlrIE11bHRpbm9taWFsDQoNClJlZ3Jlc2kgbG9naXN0aWsgbXVsdGlub21pYWwgbWVydXBha2FuIHBlbmdlbWJhbmdhbiBkYXJpIHJlZ3Jlc2kgbG9naXN0aWsgYmluZXIgeWFuZyBkaWd1bmFrYW4ga2V0aWthIHZhcmlhYmVsIGRlcGVuZGVuIG1lbWlsaWtpIGxlYmloIGRhcmkgZHVhIGthdGVnb3JpIGRhbiBiZXJzaWZhdCBub21pbmFsICh0aWRhayBiZXJ1cnV0YW4pLiBNb2RlbCBpbmkgYmVydHVqdWFuIHVudHVrIG1lbXBlcmtpcmFrYW4gcGVsdWFuZyBzdWF0dSBvYnNlcnZhc2kgbWFzdWsga2Ugc2FsYWggc2F0dSBrYXRlZ29yaSBiZXJkYXNhcmthbiBzZWp1bWxhaCB2YXJpYWJlbCBpbmRlcGVuZGVuLCBiYWlrIG51bWVyaWsgbWF1cHVuIGthdGVnb3Jpa2FsLg0KDQpQcmluc2lwIGRhc2FybnlhIGFkYWxhaCBtZW1iYW5kaW5na2FuIHBlbHVhbmcgKG9kZHMpIHNldGlhcCBrYXRlZ29yaSB0ZXJoYWRhcCBrYXRlZ29yaSBhY3VhbiAocmVmZXJlbmNlIGNhdGVnb3J5KSwga2VtdWRpYW4gbWVuZ2Vrc3ByZXNpa2FubnlhIGRhbGFtIGJlbnR1ayBodWJ1bmdhbiBsaW5pZXIgZGVuZ2FuIHZhcmlhYmVsLXZhcmlhYmVsIHByZWRpa3Rvci4NCg0KIyBSdW11cyBSZWdyZXNpIExvZ2lzdGlrIE11bHRpbm9taWFsDQoNClNlY2FyYSB1bXVtLCBwZXJzYW1hYW4gbW9kZWwgcmVncmVzaSBsb2dpc3RpayBtdWx0aW5vbWlhbCB1bnR1ayBrYXRlZ29yaSBqIChqID0gMSwgMiwgLi4uLCBrLTEpIGFkYWxhaDoNCiAgDQokJGxvZyggUChZPWopIC8gUChZPWJhc2UpICkgPSDOsjBqICsgzrIxalgxICsgzrIyalgyICsgLi4uICsgzrJwalhwJCQNCg0KZGVuZ2FuIGFydGk6ICANCi0gUChZPWopIHNlYmFnYWkgcHJvYmFiaWxpdGFzIGJhaHdhIFkgYmVyYWRhIHBhZGEga2F0ZWdvcmkgaiAgDQotIFAoWT1iYXNlKSBzZWJhZ2FpIHByb2JhYmlsaXRhcyBrYXRlZ29yaSByZWZlcmVuc2kgKG1pc2FsICJMb3ciKSAgIA0KLSDOsjBqLCDOsjFqLCAuLi4sIM6ycGogc2ViYWdhaSBwYXJhbWV0ZXIgbW9kZWwgdW50dWsga2F0ZWdvcmkgaiAgIA0KDQpEZW5nYW4gZGVtaWtpYW4sIG1vZGVsIGFrYW4gbWVuZ2hhc2lsa2FuIChrLTEpIHNldCBrb2VmaXNpZW4uDQoNCiMgU3R1ZGkgS2FzdXMNCg0KIyMgSW1wb3J0IGRhbiBFa3NwbG9yYXNpIERhdGFzZXQNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0NCg0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KERUKQ0KbGlicmFyeShrbml0cikNCg0KIyBJbXBvcnQgZGF0YXNldA0KZGF0YV9tdWx0aSA8LSByZWFkX2RlbGltKCJtdWx0aW5vbWlhbF9kYXRhc2V0LmNzdiIsIGRlbGltID0gIjsiLCBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQ0KDQojIEtvbnZlcnNpIGtvbG9tIG51bWVyaWsgKGhhcHVzIHRpdGlrIHNlYmFnYWkgcGVtaXNhaCByaWJ1YW4pDQpkYXRhX211bHRpIDwtIGRhdGFfbXVsdGkgJT4lDQogIG11dGF0ZSgNCiAgICBBZHZlcnRpc2luZyAgPSBhcy5udW1lcmljKGdzdWIoIlxcLiIsICIiLCBBZHZlcnRpc2luZykpLA0KICAgIFNhbGVzcGVvcGxlICA9IGFzLm51bWVyaWMoZ3N1YigiXFwuIiwgIiIsIFNhbGVzcGVvcGxlKSksDQogICAgU2F0aXNmYWN0aW9uID0gYXMubnVtZXJpYyhnc3ViKCJcXC4iLCAiIiwgU2F0aXNmYWN0aW9uKSksDQogICAgQ29tcGV0aXRpb24gID0gYXMubnVtZXJpYyhnc3ViKCJcXC4iLCAiIiwgQ29tcGV0aXRpb24pKSwNCiAgICBTdWNjZXNzX0xldmVsID0gZmFjdG9yKFN1Y2Nlc3NfTGV2ZWwsIGxldmVscyA9IGMoIkxvdyIsICJNZWRpdW0iLCAiSGlnaCIpKQ0KICApDQoNCiMgVGFtcGlsa2FuIHN0cnVrdHVyIGRhdGENCmNhdCgiU3RydWt0dXIgRGF0YXNldDpcbiIpDQpzdHIoZGF0YV9tdWx0aSkNCg0KIyBUYW1waWxrYW4gcmluZ2thc2FuIHN0YXRpc3RpayB1bnR1ayBtZW1hc3Rpa2FuIGRhdGEgdGVyYmFjYSBkZW5nYW4gYmVuYXINCmNhdCgiXG5SaW5na2FzYW4gU3RhdGlzdGlrIERhdGFzZXQ6XG4iKQ0KcHJpbnQoc3VtbWFyeShkYXRhX211bHRpKSkNCg0KDQojIFRhYmVsIGludGVyYWt0aWYgdW50dWsgZWtzcGxvcmFzaQ0KZGF0YXRhYmxlKA0KICBkYXRhX211bHRpLA0KICBvcHRpb25zID0gbGlzdChwYWdlTGVuZ3RoID0gMTAsIHNjcm9sbFggPSBUUlVFKSwNCiAgY2FwdGlvbiA9IGh0bWx0b29sczo6dGFncyRjYXB0aW9uKA0KICAgIHN0eWxlID0gJ2NhcHRpb24tc2lkZTogdG9wOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOycsDQogICAgJ1RhYmVsIEludGVyYWt0aWYgRGF0YXNldCBNdWx0aW5vbWlhbCBMb2dpc3RpYyBSZWdyZXNzaW9uJw0KICApDQopDQpgYGANCnlhbmcgbWFuYSBhcnRpbnlhOg0KDQoNCjEuIERhdGFzZXQgeWFuZyBkaWd1bmFrYW4gYmVyaXNpIHZhcmlhYmVsIHByZWRpa3RvciBudW1lcmlrIHNlcGVydGk6DQoNCiAgLSBBZHZlcnRpc2luZyDihpIganVtbGFoIHBlbmdlbHVhcmFuIGlrbGFuLA0KDQogIC0gU2FsZXNwZW9wbGUg4oaSIGp1bWxhaCB0ZW5hZ2EgcGVuanVhbGFuLA0KDQogIC0gU2F0aXNmYWN0aW9uIOKGkiB0aW5na2F0IGtlcHVhc2FuIHBlbGFuZ2dhbiwNCg0KICAtIENvbXBldGl0aW9uIOKGkiB0aW5na2F0IHBlcnNhaW5nYW4gcGFzYXIuDQoNClNlbXVhIHZhcmlhYmVsIGluaSB0ZWxhaCBkaWtvbnZlcnNpIGtlIGZvcm1hdCBudW1lcmlrIGFnYXIgZGFwYXQgZGlhbmFsaXNpcyBkZW5nYW4gYmVuYXIgb2xlaCBtb2RlbCByZWdyZXNpLg0KDQoyLiBWYXJpYWJlbCB0YXJnZXQgKFN1Y2Nlc3NfTGV2ZWwpIG1lbWlsaWtpIHRpZ2Ega2F0ZWdvcmkgYmVydGluZ2thdCAoTG93LCBNZWRpdW0sIEhpZ2gpIHlhbmcgbWVyZXByZXNlbnRhc2lrYW4gdGluZ2thdCBrZWJlcmhhc2lsYW4gc3VhdHUgY2FiYW5nLCBwcm9kdWssIGF0YXUgc3RyYXRlZ2kgcGVtYXNhcmFuLg0KDQozLkJlcmRhc2Fya2FuIHN0YXRpc3RpayBkZXNrcmlwdGlmLCBkYXBhdCBkaWFtYXRpIGFwYWthaDoNCg0KICAtIHRlcmRhcGF0IHZhcmlhc2kgY3VrdXAgYmVzYXIgYW50YXIgb2JzZXJ2YXNpLA0KDQogIC1kaXN0cmlidXNpIGFudGFyIGthdGVnb3JpIFN1Y2Nlc3NfTGV2ZWwgcmVsYXRpZiBzZWltYmFuZyBhdGF1IHRpZGFrLg0KSmlrYSBzYWxhaCBzYXR1IGthdGVnb3JpIGphdWggbGViaWggYmFueWFrLCBoYWwgaW5pIHBlcmx1IGRpcGVyaGF0aWthbiBrYXJlbmEgZGFwYXQgbWVtZW5nYXJ1aGkgYWt1cmFzaSBtb2RlbCAoY2xhc3MgaW1iYWxhbmNlKS4NCg0KS2VzaW1wdWxhbiBBd2FsOg0KRGF0YSBzdWRhaCBiZXJzaWggZGFuIHNpYXAgdW50dWsgZGlndW5ha2FuIGRhbGFtIHByb3NlcyBwZW1vZGVsYW4gcmVncmVzaSBsb2dpc3RpayBtdWx0aW5vbWlhbC4NClRhaGFwIGVrc3Bsb3Jhc2kgaW5pIHBlbnRpbmcgYWdhciBhbmFsaXNpcyB5YW5nIGRpbGFrdWthbiBwYWRhIGxhbmdrYWggYmVyaWt1dG55YSAocGVtYmFuZ3VuYW4gbW9kZWwpIG1lbWlsaWtpIGRhc2FyIGRhdGEgeWFuZyB2YWxpZCBkYW4ga29uc2lzdGVuLg0KDQojIyBQZW1iYW5ndW5hbiBNb2RlbCBSZWdyZXNpIExvZ2lzdGlrIE11bHRpbm9taWFsDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9DQoNCmxpYnJhcnkobm5ldCkgICMgdW50dWsgbXVsdGlub20oKQ0KDQojIEJhbmd1biBtb2RlbCByZWdyZXNpIGxvZ2lzdGlrIG11bHRpbm9taWFsDQptb2RlbF9tdWx0aSA8LSBtdWx0aW5vbShTdWNjZXNzX0xldmVsIH4gQWR2ZXJ0aXNpbmcgKyBTYWxlc3Blb3BsZSArIFNhdGlzZmFjdGlvbiArIENvbXBldGl0aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFfbXVsdGkpDQoNCiMgUmluZ2thc2FuIGhhc2lsIG1vZGVsDQpzdW1tYXJ5KG1vZGVsX211bHRpKQ0KYGBgDQoNCg0KIyMgSW50ZXJwcmV0YXNpIEtvZWZpc2llbg0KDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KIyBIaXR1bmcgb2RkcyByYXRpbw0Kb2Rkc19yYXRpbyA8LSBleHAoY29lZihtb2RlbF9tdWx0aSkpDQprYWJsZSgNCiAgb2Rkc19yYXRpbywNCiAgY2FwdGlvbiA9ICJUYWJlbCAzLiBPZGRzIFJhdGlvIGRhcmkgTW9kZWwgUmVncmVzaSBMb2dpc3RpayBNdWx0aW5vbWlhbCINCikNCg0KY2F0KCINCkludGVycHJldGFzaSBVbXVtOg0KLSBOaWxhaSBleHAoa29lZmlzaWVuKSA+IDEgbWVudW5qdWtrYW4gcGVuaW5na2F0YW4gcGVsdWFuZyBtYXN1ayBrZSBrYXRlZ29yaSB0ZXJzZWJ1dCBkaWJhbmRpbmcga2F0ZWdvcmkgcmVmZXJlbnNpIChMb3cpLg0KLSBOaWxhaSBleHAoa29lZmlzaWVuKSA8IDEgbWVudW5qdWtrYW4gcGVudXJ1bmFuIHBlbHVhbmcgcmVsYXRpZiB0ZXJoYWRhcCBrYXRlZ29yaSByZWZlcmVuc2kuDQoiKQ0KYGBgDQoNCg0KIyMgRXZhbHVhc2kgTW9kZWwNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQojIFByZWRpa3NpIGthdGVnb3JpIGJlcmRhc2Fya2FuIG1vZGVsDQpwcmVkaWtzaSA8LSBwcmVkaWN0KG1vZGVsX211bHRpLCBuZXdkYXRhID0gZGF0YV9tdWx0aSkNCg0KIyBNYXRyaWtzIGtlYmluZ3VuZ2FuDQpjb25mX21hdHJpeCA8LSB0YWJsZShQcmVkaWtzaSA9IHByZWRpa3NpLCBBa3R1YWwgPSBkYXRhX211bHRpJFN1Y2Nlc3NfTGV2ZWwpDQprYWJsZShjb25mX21hdHJpeCwgY2FwdGlvbiA9ICJUYWJlbCA0LiBNYXRyaWtzIEtlYmluZ3VuZ2FuIE1vZGVsIE11bHRpbm9taWFsIExvZ2lzdGljIFJlZ3Jlc3Npb24iKQ0KDQojIEhpdHVuZyBha3VyYXNpIG1vZGVsDQpha3VyYXNpIDwtIG1lYW4ocHJlZGlrc2kgPT0gZGF0YV9tdWx0aSRTdWNjZXNzX0xldmVsKQ0KY2F0KCJcbkFrdXJhc2kgTW9kZWw6Iiwgcm91bmQoYWt1cmFzaSAqIDEwMCwgMiksICIlXG4iKQ0KYGBgDQoNCg0KIyMgVmlzdWFsaXNhc2kgSGFzaWwNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGRwbHlyKQ0KDQojIEFtYmlsIHByb2JhYmlsaXRhcyBwcmVkaWtzaSB1bnR1ayB0aWFwIGthdGVnb3JpDQpwcm9iX3ByZWQgPC0gYXMuZGF0YS5mcmFtZShwcmVkaWN0KG1vZGVsX211bHRpLCB0eXBlID0gInByb2JzIikpDQpwcm9iX3ByZWQkQWR2ZXJ0aXNpbmcgPC0gZGF0YV9tdWx0aSRBZHZlcnRpc2luZw0KcHJvYl9wcmVkJEthdGVnb3JpIDwtIGRhdGFfbXVsdGkkU3VjY2Vzc19MZXZlbA0KDQojIFViYWgga2UgZm9ybWF0IGxvbmcNCnByb2JfbG9uZyA8LSBwcm9iX3ByZWQgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gYygiTG93IiwgIk1lZGl1bSIsICJIaWdoIiksIA0KICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAiU3VjY2Vzc19MZXZlbCIsIA0KICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gIlByb2JhYmlsaXRhcyIpDQoNCiMgQnVhdCBwbG90IGRhc2FyIChzZXBlcnRpIGdncGxvdCBhc2xpbnlhKQ0KcCA8LSBnZ3Bsb3QocHJvYl9sb25nLCBhZXMoeCA9IEFkdmVydGlzaW5nLCB5ID0gUHJvYmFiaWxpdGFzLCBjb2xvciA9IFN1Y2Nlc3NfTGV2ZWwpKSArDQogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUpICsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgc2l6ZSA9IDEpICsNCiAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxMikgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gIiBSZWdyZXNpIExvZ2lzdGlrIE11bHRpbm9taWFsOiBQcm9iYWJpbGl0YXMgVGlhcCBLYXRlZ29yaSBLZWJlcmhhc2lsYW4iLA0KICAgIHN1YnRpdGxlID0gIkh1YnVuZ2FuIGFudGFyYSBBZHZlcnRpc2luZyBCdWRnZXQgZGFuIFByb2JhYmlsaXRhcyBTdWNjZXNzX0xldmVsIiwNCiAgICB4ID0gIkFkdmVydGlzaW5nIEJ1ZGdldCIsDQogICAgeSA9ICJQcm9iYWJpbGl0YXMgUHJlZGlrc2kiLA0KICAgIGNvbG9yID0gIkthdGVnb3JpIg0KICApICsNCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoIkhpZ2giID0gInJlZCIsICJMb3ciID0gImdyZWVuIiwgIk1lZGl1bSIgPSAiYmx1ZSIpKQ0KDQojIEtvbnZlcnNpIGtlIHBsb3QgaW50ZXJha3RpZg0KZ2dwbG90bHkocCwgdG9vbHRpcCA9IGMoIngiLCAieSIsICJjb2xvciIpKQ0KYGBgDQoNCg0KIyMgS2VzaW1wdWxhbg0KDQpNb2RlbCByZWdyZXNpIGxvZ2lzdGlrIG11bHRpbm9taWFsIG1lbnVuanVra2FuIGh1YnVuZ2FuIGFudGFyYSBmYWt0b3ItZmFrdG9yIHNlcGVydGkgQWR2ZXJ0aXNpbmcsIFNhbGVzcGVvcGxlLCBTYXRpc2ZhY3Rpb24sIGRhbiBDb21wZXRpdGlvbiB0ZXJoYWRhcCBwZWx1YW5nIGtlYmVyaGFzaWxhbiBwZXJ1c2FoYWFuLg0KDQpNb2RlbCBpbmkgZGFwYXQgbWVtcHJlZGlrc2kgcHJvYmFiaWxpdGFzIG1hc2luZy1tYXNpbmcga2F0ZWdvcmkga2ViZXJoYXNpbGFuIChMb3csIE1lZGl1bSwgSGlnaCkgZGFuIG1lbWJlcmlrYW4gaW5zaWdodCBtZW5nZW5haSBwZW5nYXJ1aCBzZXRpYXAgZmFrdG9yIHRlcmhhZGFwIGtlYmVyaGFzaWxhbiBiaXNuaXMuDQoNClNlY2FyYSB1bXVtOg0KLSBQZW5pbmdrYXRhbiBuaWxhaSBBZHZlcnRpc2luZyBkYW4gU2F0aXNmYWN0aW9uIGNlbmRlcnVuZyBtZW5pbmdrYXRrYW4gcGVsdWFuZyBtYXN1ayBrZSBrYXRlZ29yaSBNZWRpdW0gZGFuIEhpZ2guDQotIEZha3RvciBDb21wZXRpdGlvbiB5YW5nIHRlcmxhbHUgdGluZ2dpIGRhcGF0IG1lbnVydW5rYW4gcGVsdWFuZyBrZWJlcmhhc2lsYW4uDQotIE1vZGVsIG1lbWJlcmlrYW4gZ2FtYmFyYW4gcHJvYmFiaWxpc3RpaywgYnVrYW4gaGFzaWwgcGFzdGksIHNlaGluZ2dhIGJlcmd1bmEgdW50dWsgcGVuZ2FtYmlsYW4ga2VwdXR1c2FuIGJlcmJhc2lzIGRhdGEuDQoNCiMgUmVmZXJlbnNpDQoNCi0gTGlhbmcsIEouLCBCaSwgRy4sICYgWmhhbiwgQy4gKDIwMTkpLiBNdWx0aW5vbWlhbCBhbmQgb3JkaW5hbCBsb2dpc3RpYyByZWdyZXNzaW9uIGFuYWx5c2VzIHdpdGggbXVsdGktY2F0ZWdvcmljYWwgdmFyaWFibGVzIHVzaW5nIFIuIEZyb250aWVycyBpbiBQdWJsaWMgSGVhbHRoLg0KDQotIFBhdGUsIEEuLCBSaWxleSwgUi5ELiwgQ29sbGlucywgRy5TLiwgdmFuIFNtZWRlbiwgTS4sIEVuc29yLCBKLiwgJiBNYXJ0aW4sIEcuUC4gKDIwMjIpLiBNaW5pbXVtIHNhbXBsZSBzaXplIGZvciBkZXZlbG9waW5nIGEgbXVsdGl2YXJpYWJsZSBwcmVkaWN0aW9uIG1vZGVsIHVzaW5nIG11bHRpbm9taWFsIGxvZ2lzdGljIHJlZ3Jlc3Npb24uIGFyWGl2IHByZXByaW50Lg0KDQotIEFuYWx5c2lzIGFuZCBQcmVkaWN0aXZlIG1vZGVsaW5nLiBodHRwczovL2Jvb2tkb3duLm9yZy9jb250ZW50L2ExNDJiMTcyLTY5YjItNDM2ZC1iZGIwLTlkYTZkMDQ2YTBmOS8wMi1SZWdyZXNzaW9uX01vZGVsLmh0bWwjbG9naXN0aWNzLXJlZ3Jlc3Npb24=