Tugas Statdas Pertemuan 14

Statistika Dasar


Soal 1: Apa perbedaan pengambilan kesimpulan statistika deskriptif dengan inferensial

1.1 Statistika Deskriptif

Statistika deskriptif adalah cabang statistik yang fokus pada proses menganalisis, merangkum, dan menyajikan data yang sudah dikumpulkan dalam bentuk yang mudah dipahami. Dalam statistika deskriptif, kita hanya bekerja dengan data yang ada tanpa mencoba membuat kesimpulan lebih luas atau generalisasi terhadap populasi.

1.1.1 Tujuan

Tujuan utama statistika deskriptif adalah untuk memberikan gambaran umum tentang data. Ini membantu kita memahami pola, tren, atau karakteristik utama dalam data.

1.1.2 Cakupan

  1. Menghitung ukuran pemusatan data:
    • Mean (rata-rata): Jumlah seluruh nilai dalam data dibagi dengan jumlah data.
    • Median: Nilai tengah dari data yang sudah diurutkan. Median membantu mengatasi data yang memiliki nilai ekstrim (outlier).
    • Modus: Nilai yang paling sering muncul dalam data. Berguna untuk data yang bersifat kategorikal atau diskrit.
  2. Menghitung ukuran penyebaran data:
    • Range (jangkauan): Selisih antara nilai maksimum dan minimum dalam data.
    • Varians: Rata-rata dari kuadrat jarak tiap data terhadap rata-rata. Varians menunjukkan seberapa tersebar data tersebut.
    • Standar deviasi: Akar kuadrat dari varians, yang menunjukkan tingkat penyebaran data dalam satuan yang sama dengan data aslinya.
  3. Menyajikan data secara visual:
    • Tabel frekuensi: Tabel yang menunjukkan jumlah kemunculan masing-masing nilai dalam data.
    • Histogram: Grafik batang yang menunjukkan distribusi data numerik berdasarkan interval.
    • Diagram batang dan lingkaran: Digunakan untuk menyajikan data kategorikal. Diagram batang membandingkan kategori, sementara diagram lingkaran menunjukkan proporsi.

1.1.3 Contoh

  • Contoh 1: Menghitung rata-rata skor ujian dari satu kelas tertentu. Jika nilai ujian siswa adalah 70, 75, 80, dan 85, maka rata-rata adalah 77,5.
  • Contoh 2: Menampilkan data usia mahasiswa dalam grafik histogram untuk melihat pola distribusi usia di dalam kelas.

1.1.4 Hasil

Statistika deskriptif hanya menggambarkan data yang ada. Tidak ada kesimpulan yang dibuat tentang populasi yang lebih besar; semua hasil hanya berlaku untuk data yang dianalisis.


1.2 Statistika Inferensial

Statistika inferensial adalah cabang statistik yang berfokus pada penggunaan data sampel untuk membuat kesimpulan atau generalisasi tentang populasi yang lebih besar. Dalam statistika inferensial, kita mencoba memahami bagaimana pola dalam data sampel dapat mewakili karakteristik dari seluruh populasi.

1.2.1 Tujuan

Tujuan utama statistika inferensial adalah untuk mengambil kesimpulan tentang populasi berdasarkan data yang hanya diambil dari sebagian kecil populasi (sampel). Ini sangat berguna ketika tidak memungkinkan untuk menganalisis seluruh populasi.

1.2.2 Cakupan

  1. Uji Hipotesis:

    • Uji t: Digunakan untuk membandingkan rata-rata antara dua kelompok.
    • Uji Z: Digunakan untuk menguji hipotesis tentang rata-rata ketika varians populasi diketahui dan ukuran sampel besar.
    • Uji Chi-Square: Digunakan untuk menguji hubungan antara dua variabel kategorikal.
  2. Interval Kepercayaan:
    Menyediakan rentang nilai yang kemungkinan besar mencakup parameter populasi. Misalnya, interval kepercayaan 95% menunjukkan bahwa ada kemungkinan 95% bahwa nilai sebenarnya dari populasi berada dalam rentang tersebut.

  3. Analisis Regresi:
    Digunakan untuk memodelkan hubungan antara variabel dependen (yang ingin diprediksi) dengan satu atau lebih variabel independen (faktor yang memengaruhi).

1.2.3 Contoh

  • Contoh 1: Menggunakan data dari sampel mahasiswa di satu universitas untuk memperkirakan rata-rata skor nasional mahasiswa.
  • Contoh 2: Menguji apakah metode pengajaran baru lebih efektif dibandingkan metode lama dengan mengumpulkan data dari dua kelas sebagai sampel.

1.2.4 Hasil

Statistika inferensial memungkinkan kita membuat kesimpulan tentang populasi berdasarkan data sampel. Hasil ini mencakup tingkat keyakinan tertentu dan mempertimbangkan risiko kesalahan (Tipe I dan Tipe II).


1.3 Kesimpulan

1.3.1 Statistika Deskriptif:

  • Fokus pada meringkas dan menggambarkan data yang tersedia.
  • Tidak membuat kesimpulan atau generalisasi tentang populasi.
  • Contohnya adalah menghitung rata-rata nilai ujian dalam satu kelas atau membuat histogram distribusi usia.

1.3.2 Statistika Inferensial:

  • Menggunakan data sampel untuk membuat generalisasi tentang populasi.
  • Melibatkan uji hipotesis, pembuatan interval kepercayaan, dan analisis hubungan antar variabel.
  • Contohnya adalah memperkirakan rata-rata skor nasional mahasiswa berdasarkan data sampel atau menguji efektivitas metode pengajaran.

Perbedaan utama terletak pada tujuan dan cakupan. Statistika deskriptif hanya bekerja dengan data yang ada, sedangkan statistika inferensial mencoba menarik kesimpulan yang lebih luas dari data tersebut.


Soal 2: Apa bedanya alpha dengan beta yang digunakan di uji hipotesis

2.1 Alpha (α)

2.1.1 Definisi

Alpha (α) adalah tingkat signifikansi yang ditentukan sebelum suatu uji hipotesis dilakukan. Tingkat signifikansi ini mewakili probabilitas atau kemungkinan kita melakukan Kesalahan Tipe I, yaitu menolak hipotesis nol (H₀) yang sebenarnya benar.
Dalam istilah sederhana, alpha menunjukkan seberapa besar risiko yang kita izinkan untuk salah mendeteksi efek yang sebenarnya tidak ada.

2.1.2 Fungsi

Alpha digunakan sebagai batasan untuk menentukan apakah hasil uji statistik cukup signifikan untuk menolak hipotesis nol.
Jika nilai p-value dari uji statistik lebih kecil dari alpha, maka kita menolak hipotesis nol karena dianggap terdapat cukup bukti untuk mendukung hipotesis alternatif.

2.1.3 Nilai Umum

  • Nilai alpha biasanya ditetapkan 0,05 atau 5%.
    • Artinya, kita menerima risiko 5% untuk membuat kesalahan dalam menyimpulkan bahwa ada efek atau perbedaan, padahal sebenarnya tidak ada.
  • Dalam beberapa kasus dengan risiko tinggi, alpha bisa ditetapkan lebih kecil, misalnya 0,01 atau 1%, untuk meminimalkan kemungkinan salah mendeteksi efek yang tidak nyata.

2.1.4 Contoh

Misalkan sebuah penelitian dilakukan untuk menguji efektivitas obat baru:
- Hipotesis nol (H₀): Obat baru tidak lebih efektif daripada plasebo.
- Hipotesis alternatif (H₁): Obat baru lebih efektif daripada plasebo.

Jika alpha ditetapkan 0,05, maka kita siap menerima risiko 5% bahwa kita salah menyimpulkan obat baru efektif (menolak H₀), padahal sebenarnya tidak lebih efektif daripada plasebo.


2.2 Beta (β)

2.2.1 Definisi

Beta (β) adalah kemungkinan kita membuat Kesalahan Tipe II, yaitu gagal menolak hipotesis nol (H₀) yang sebenarnya salah.
Dengan kata lain, beta menggambarkan risiko kita tidak mendeteksi efek yang sebenarnya ada.

2.2.2 Fungsi

Beta digunakan untuk menghitung kekuatan uji statistik (statistical power), yang merupakan probabilitas untuk benar-benar mendeteksi efek yang nyata jika efek tersebut ada.
Hubungan antara beta dan kekuatan uji adalah:
- Daya = 1 - β
- Semakin kecil nilai beta, semakin besar kekuatan uji, artinya semakin besar peluang kita mendeteksi efek yang sebenarnya ada.

2.2.3 Nilai Umum

  • Nilai beta sering tidak disebutkan secara eksplisit, tetapi biasanya dimaksudkan untuk tidak lebih besar dari 0,2 atau 20%.
  • Dengan beta sebesar 0,2, kekuatan uji akan menjadi 0,8 atau 80%, yang berarti ada 80% kemungkinan kita mendeteksi efek nyata jika efek tersebut benar-benar ada.

2.2.4 Contoh

Dalam penelitian yang sama tentang obat baru:
- Jika beta ditetapkan 0,2, maka ada 20% kemungkinan kita gagal mendeteksi bahwa obat baru sebenarnya lebih efektif daripada plasebo.
- Dalam konteks ini, kita kehilangan peluang untuk menemukan efek nyata dari obat baru.


2.3 Perbandingan Alpha (α) dan Beta (β)

2.3.1 Tujuan

  • Alpha terkait dengan risiko membuat Kesalahan Tipe I (false positive) – salah mendeteksi efek yang sebenarnya tidak ada.
  • Beta terkait dengan risiko membuat Kesalahan Tipe II (false negative) – gagal mendeteksi efek yang sebenarnya ada.

2.3.2 Nilai Umum

  • Alpha biasanya ditetapkan pada 0,05 (5%) untuk sebagian besar penelitian.
  • Beta biasanya tidak lebih dari 0,2 (20%), sehingga kekuatan uji minimal adalah 80%.

2.3.3 Fokus

  • Alpha lebih penting ketika kesalahan mendeteksi efek yang tidak ada dapat membawa dampak besar, seperti dalam pengujian obat atau keputusan kebijakan.
  • Beta lebih penting ketika risiko tidak mendeteksi efek yang ada lebih berbahaya, seperti dalam kasus sistem keamanan atau diagnosis penyakit.

2.4 Kesimpulan

2.4.1 Alpha (α)

  • Berkaitan dengan risiko salah mendeteksi efek yang sebenarnya tidak ada (false positive).
  • Biasanya digunakan sebagai tingkat signifikansi dalam uji statistik.
  • Contoh: Jika alpha 0,05, kita menerima risiko 5% untuk salah menolak hipotesis nol.

2.4.2 Beta (β)

  • Berkaitan dengan risiko tidak mendeteksi efek yang sebenarnya ada (false negative).
  • Digunakan untuk menghitung kekuatan uji statistik (1 - β).
  • Contoh: Jika beta 0,2, kita menerima risiko 20% untuk gagal mendeteksi efek nyata.

Catatan Penting: Kedua nilai ini saling berkaitan. Jika kita menurunkan alpha (memperketat uji untuk mengurangi kesalahan Tipe I), maka beta (risiko kesalahan Tipe II) cenderung meningkat. Oleh karena itu, penting untuk menyeimbangkan kedua nilai ini berdasarkan konteks dan dampak keputusan dalam penelitian.


Soal 3: Kapan kita menggunakan type I (pesimis), kapan menggunakan type II (optimis)

3.1 Kesalahan Tipe I (Pesimis)

3.1.1 Definisi

Kesalahan Tipe I terjadi ketika kita menolak hipotesis nol (H₀) yang sebenarnya benar.
Dalam istilah sederhana, kita menyimpulkan bahwa ada efek atau perbedaan yang signifikan, padahal kenyataannya tidak ada.

Kesalahan ini sering disebut sebagai false positive karena kita mendeteksi sesuatu yang sebenarnya tidak nyata.
Contohnya, menyimpulkan bahwa obat baru efektif, padahal sebenarnya tidak ada perbedaan dibandingkan dengan plasebo.

3.1.2 Kapan Digunakan

Kesalahan Tipe I menjadi perhatian utama dalam situasi di mana konsekuensi dari mendeteksi sesuatu yang salah sangat besar atau berbahaya.
Ini termasuk kasus di mana keputusan yang salah dapat membahayakan nyawa, keamanan, atau menimbulkan kerugian besar.

3.1.3 Contoh

  1. Dalam pengujian obat:
    • Ketika sebuah penelitian mengklaim bahwa obat baru efektif, padahal sebenarnya obat tersebut tidak memberikan manfaat nyata.
    • Kesalahan ini berisiko membahayakan pasien, karena mereka mungkin diberikan obat yang tidak efektif atau bahkan berbahaya.
  2. Dalam sistem keamanan:
    • Sebuah alarm keamanan berbunyi meskipun tidak ada ancaman nyata (alarm palsu).
    • Dalam hal ini, lebih baik mendeteksi ancaman yang sebenarnya tidak ada (pesimis), karena gagal mendeteksi ancaman yang nyata bisa memiliki dampak yang jauh lebih besar.

3.1.4 Pendekatan untuk Mengurangi Kesalahan Tipe I

Untuk meminimalkan risiko kesalahan Tipe I, nilai alpha (α) biasanya ditetapkan kecil, seperti 0,01 atau 1%, tergantung pada konteksnya.
- Dengan menurunkan nilai alpha, kita memperketat kriteria untuk menolak hipotesis nol, sehingga kemungkinan salah menolak hipotesis nol menjadi lebih kecil.
- Pendekatan ini sering digunakan dalam penelitian medis atau regulasi keamanan yang memiliki risiko tinggi.


3.2 Kesalahan Tipe II (Optimis)

3.2.1 Definisi

Kesalahan Tipe II terjadi ketika kita gagal menolak hipotesis nol (H₀) yang sebenarnya salah.
Dengan kata lain, kita tidak mendeteksi efek atau perbedaan yang sebenarnya ada.

Kesalahan ini sering disebut sebagai false negative karena kita melewatkan sesuatu yang nyata.
Contohnya, gagal menyimpulkan bahwa metode baru lebih efektif dibandingkan metode lama.

3.2.2 Kapan Digunakan

Kesalahan Tipe II lebih dapat ditoleransi dalam situasi di mana dampak dari tidak mendeteksi sesuatu yang benar tidak terlalu besar atau signifikan.
Ini biasanya terjadi pada eksperimen awal atau situasi dengan risiko rendah.

3.2.3 Contoh

  1. Dalam pengujian produk:
    • Sebuah produk baru sedikit lebih baik dibandingkan dengan standar, tetapi penelitian gagal mendeteksi keunggulan ini.
    • Dampaknya mungkin tidak signifikan, terutama jika produk tersebut masih memenuhi standar minimum.
  2. Dalam bisnis:
    • Sebuah peluang kecil untuk peningkatan efisiensi atau keuntungan terlewatkan karena hasil analisis tidak menunjukkan perbedaan yang signifikan.
    • Dalam konteks ini, dampak dari tidak mendeteksi peluang kecil tersebut dapat diterima.

3.2.4 Pendekatan untuk Mengurangi Kesalahan Tipe II

Untuk mengurangi risiko kesalahan Tipe II, nilai beta (β) biasanya ditetapkan kecil, seperti 0,2 atau 20%, sehingga kekuatan uji (power = 1 - β) menjadi tinggi, minimal 80%.
- Dengan meningkatkan kekuatan uji, kita meningkatkan kemungkinan mendeteksi efek yang sebenarnya ada.
- Pendekatan ini sering digunakan dalam studi yang berfokus pada menemukan efek yang penting atau inovasi baru.


3.3 Kesimpulan: Kapan Menggunakan Kesalahan Tipe I atau Tipe II

3.3.1 Kesalahan Tipe I (Pesimis)

  • Gunakan Kesalahan Tipe I sebagai prioritas jika dampak dari salah mendeteksi sesuatu yang tidak benar sangat besar.
  • Ini relevan dalam konteks kesehatan, keamanan, atau regulasi, di mana salah membuat klaim atau kesimpulan dapat membawa konsekuensi serius.
  • Contohnya adalah pengujian obat atau sistem keamanan, di mana lebih baik berhati-hati meskipun mendeteksi ancaman palsu.

3.3.2 Kesalahan Tipe II (Optimis)

  • Gunakan Kesalahan Tipe II sebagai prioritas jika dampak dari tidak mendeteksi sesuatu yang benar lebih kecil atau dapat ditoleransi.
  • Ini relevan dalam konteks penelitian awal, bisnis, atau situasi dengan risiko rendah, di mana lebih baik melewatkan efek kecil daripada membuat klaim yang salah.
  • Contohnya adalah pengujian produk baru dengan peningkatan kecil yang tidak terlalu signifikan.

3.4 Perbedaan Utama

Aspek Kesalahan Tipe I (Pesimis) Kesalahan Tipe II (Optimis)
Definisi Salah menolak hipotesis nol Salah gagal menolak hipotesis nol
Konsekuensi Salah mendeteksi efek yang tidak ada Tidak mendeteksi efek yang ada
Contoh Mengklaim obat efektif padahal tidak Gagal mendeteksi obat yang efektif
Pendekatan Tetapkan alpha (α) kecil, misalnya 0,01 Tetapkan beta (β) kecil, misalnya 0,2
Prioritas Digunakan dalam kasus risiko tinggi Digunakan dalam kasus risiko rendah

3.5 Kesimpulan Akhir

  • Gunakan pendekatan pesimis (Kesalahan Tipe I) jika salah mendeteksi sesuatu yang tidak benar akan membawa dampak besar.
    • Misalnya, dalam pengujian obat, lebih baik memperketat analisis untuk menghindari klaim yang salah.
  • Gunakan pendekatan optimis (Kesalahan Tipe II) jika dampak dari melewatkan sesuatu yang benar relatif kecil atau dapat ditoleransi.
    • Misalnya, dalam riset awal atau bisnis, lebih baik melewatkan peluang kecil daripada membuat klaim yang salah.

Penting untuk menyesuaikan fokus antara Kesalahan Tipe I dan Tipe II berdasarkan konsekuensi, tujuan penelitian, dan dampak keputusan.

LS0tDQp0aXRsZTogIlR1Z2FzIFN0YXRkYXMgUGVydGVtdWFuIDE0Ig0Kc3VidGl0bGU6ICJTdGF0aXN0aWthIERhc2FyIg0KYXV0aG9yOiAiSk9BTlMgSEVOS1kgU0VSVkFUSVVTIFNJTUFOVUxMQU5HIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjoNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlLmNzcyINCiAgICBpbl9oZWFkZXI6IG1kaV9saW5rLmh0bWwNCi0tLQ0KDQo8bGluayBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BtZGkvZm9udEA2LjkuOTYvY3NzL21hdGVyaWFsZGVzaWduaWNvbnMubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4NCg0KPGRpdiBpZD0ibW9kZS10b2dnbGUiPg0KICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJkYXJrLW1vZGUtc3dpdGNoIj4NCiAgPGxhYmVsIGZvcj0iZGFyay1tb2RlLXN3aXRjaCIgY2xhc3M9InRvZ2dsZS1pY29uIj4NCiAgICA8c3BhbiBjbGFzcz0ibWRpIG1kaS13ZWF0aGVyLXN1bm55Ij48L3NwYW4+DQogICAgPHNwYW4gY2xhc3M9Im1kaSBtZGktd2VhdGhlci1uaWdodCI+PC9zcGFuPg0KICA8L2xhYmVsPg0KPC9kaXY+DQoNCjxzY3JpcHQ+DQogIGNvbnN0IHRvZ2dsZVN3aXRjaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXJrLW1vZGUtc3dpdGNoJyk7DQogIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5Ow0KICBjb25zdCBzdW5ueUljb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWRpLXdlYXRoZXItc3VubnknKTsNCiAgY29uc3QgbmlnaHRJY29uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1kaS13ZWF0aGVyLW5pZ2h0Jyk7DQoNCiAgdG9nZ2xlU3dpdGNoLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgew0KICAgIGJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZGFyay1tb2RlJywgdG9nZ2xlU3dpdGNoLmNoZWNrZWQpOw0KICAgIHN1bm55SWNvbi5zdHlsZS5vcGFjaXR5ID0gdG9nZ2xlU3dpdGNoLmNoZWNrZWQgPyAnMCcgOiAnMSc7DQogICAgbmlnaHRJY29uLnN0eWxlLm9wYWNpdHkgPSB0b2dnbGVTd2l0Y2guY2hlY2tlZCA/ICcxJyA6ICcwJzsNCiAgfSk7DQo8L3NjcmlwdD4NCg0KLS0tDQoNCiMgU29hbCAxOiBBcGEgcGVyYmVkYWFuIHBlbmdhbWJpbGFuIGtlc2ltcHVsYW4gc3RhdGlzdGlrYSBkZXNrcmlwdGlmIGRlbmdhbiBpbmZlcmVuc2lhbA0KDQojIyAxLjEgU3RhdGlzdGlrYSBEZXNrcmlwdGlmICANCg0KKipTdGF0aXN0aWthIGRlc2tyaXB0aWYqKiBhZGFsYWggY2FiYW5nIHN0YXRpc3RpayB5YW5nIGZva3VzIHBhZGEgcHJvc2VzIG1lbmdhbmFsaXNpcywgbWVyYW5na3VtLCBkYW4gbWVueWFqaWthbiBkYXRhIHlhbmcgc3VkYWggZGlrdW1wdWxrYW4gZGFsYW0gYmVudHVrIHlhbmcgbXVkYWggZGlwYWhhbWkuIERhbGFtIHN0YXRpc3Rpa2EgZGVza3JpcHRpZiwga2l0YSBoYW55YSBiZWtlcmphIGRlbmdhbiBkYXRhIHlhbmcgYWRhIHRhbnBhIG1lbmNvYmEgbWVtYnVhdCBrZXNpbXB1bGFuIGxlYmloIGx1YXMgYXRhdSBnZW5lcmFsaXNhc2kgdGVyaGFkYXAgcG9wdWxhc2kuDQoNCiMjIyAxLjEuMSBUdWp1YW4gIA0KVHVqdWFuIHV0YW1hIHN0YXRpc3Rpa2EgZGVza3JpcHRpZiBhZGFsYWggdW50dWsgbWVtYmVyaWthbiBnYW1iYXJhbiB1bXVtIHRlbnRhbmcgZGF0YS4gSW5pIG1lbWJhbnR1IGtpdGEgbWVtYWhhbWkgcG9sYSwgdHJlbiwgYXRhdSBrYXJha3RlcmlzdGlrIHV0YW1hIGRhbGFtIGRhdGEuDQoNCiMjIyAxLjEuMiBDYWt1cGFuICANCjEuICoqTWVuZ2hpdHVuZyB1a3VyYW4gcGVtdXNhdGFuIGRhdGEqKjogIA0KICAgLSAqKk1lYW4gKHJhdGEtcmF0YSkqKjogSnVtbGFoIHNlbHVydWggbmlsYWkgZGFsYW0gZGF0YSBkaWJhZ2kgZGVuZ2FuIGp1bWxhaCBkYXRhLiAgDQogICAtICoqTWVkaWFuKio6IE5pbGFpIHRlbmdhaCBkYXJpIGRhdGEgeWFuZyBzdWRhaCBkaXVydXRrYW4uIE1lZGlhbiBtZW1iYW50dSBtZW5nYXRhc2kgZGF0YSB5YW5nIG1lbWlsaWtpIG5pbGFpIGVrc3RyaW0gKG91dGxpZXIpLiAgDQogICAtICoqTW9kdXMqKjogTmlsYWkgeWFuZyBwYWxpbmcgc2VyaW5nIG11bmN1bCBkYWxhbSBkYXRhLiBCZXJndW5hIHVudHVrIGRhdGEgeWFuZyBiZXJzaWZhdCBrYXRlZ29yaWthbCBhdGF1IGRpc2tyaXQuICANCg0KMi4gKipNZW5naGl0dW5nIHVrdXJhbiBwZW55ZWJhcmFuIGRhdGEqKjogIA0KICAgLSAqKlJhbmdlIChqYW5na2F1YW4pKio6IFNlbGlzaWggYW50YXJhIG5pbGFpIG1ha3NpbXVtIGRhbiBtaW5pbXVtIGRhbGFtIGRhdGEuICANCiAgIC0gKipWYXJpYW5zKio6IFJhdGEtcmF0YSBkYXJpIGt1YWRyYXQgamFyYWsgdGlhcCBkYXRhIHRlcmhhZGFwIHJhdGEtcmF0YS4gVmFyaWFucyBtZW51bmp1a2thbiBzZWJlcmFwYSB0ZXJzZWJhciBkYXRhIHRlcnNlYnV0LiAgDQogICAtICoqU3RhbmRhciBkZXZpYXNpKio6IEFrYXIga3VhZHJhdCBkYXJpIHZhcmlhbnMsIHlhbmcgbWVudW5qdWtrYW4gdGluZ2thdCBwZW55ZWJhcmFuIGRhdGEgZGFsYW0gc2F0dWFuIHlhbmcgc2FtYSBkZW5nYW4gZGF0YSBhc2xpbnlhLiAgDQoNCjMuICoqTWVueWFqaWthbiBkYXRhIHNlY2FyYSB2aXN1YWwqKjogIA0KICAgLSAqKlRhYmVsIGZyZWt1ZW5zaSoqOiBUYWJlbCB5YW5nIG1lbnVuanVra2FuIGp1bWxhaCBrZW11bmN1bGFuIG1hc2luZy1tYXNpbmcgbmlsYWkgZGFsYW0gZGF0YS4gIA0KICAgLSAqKkhpc3RvZ3JhbSoqOiBHcmFmaWsgYmF0YW5nIHlhbmcgbWVudW5qdWtrYW4gZGlzdHJpYnVzaSBkYXRhIG51bWVyaWsgYmVyZGFzYXJrYW4gaW50ZXJ2YWwuICANCiAgIC0gKipEaWFncmFtIGJhdGFuZyBkYW4gbGluZ2thcmFuKio6IERpZ3VuYWthbiB1bnR1ayBtZW55YWppa2FuIGRhdGEga2F0ZWdvcmlrYWwuIERpYWdyYW0gYmF0YW5nIG1lbWJhbmRpbmdrYW4ga2F0ZWdvcmksIHNlbWVudGFyYSBkaWFncmFtIGxpbmdrYXJhbiBtZW51bmp1a2thbiBwcm9wb3JzaS4gIA0KDQojIyMgMS4xLjMgQ29udG9oICANCi0gKipDb250b2ggMSoqOiBNZW5naGl0dW5nIHJhdGEtcmF0YSBza29yIHVqaWFuIGRhcmkgc2F0dSBrZWxhcyB0ZXJ0ZW50dS4gSmlrYSBuaWxhaSB1amlhbiBzaXN3YSBhZGFsYWggNzAsIDc1LCA4MCwgZGFuIDg1LCBtYWthIHJhdGEtcmF0YSBhZGFsYWggNzcsNS4gIA0KLSAqKkNvbnRvaCAyKio6IE1lbmFtcGlsa2FuIGRhdGEgdXNpYSBtYWhhc2lzd2EgZGFsYW0gZ3JhZmlrIGhpc3RvZ3JhbSB1bnR1ayBtZWxpaGF0IHBvbGEgZGlzdHJpYnVzaSB1c2lhIGRpIGRhbGFtIGtlbGFzLiAgDQoNCiMjIyAxLjEuNCBIYXNpbCAgDQpTdGF0aXN0aWthIGRlc2tyaXB0aWYgaGFueWEgbWVuZ2dhbWJhcmthbiBkYXRhIHlhbmcgYWRhLiBUaWRhayBhZGEga2VzaW1wdWxhbiB5YW5nIGRpYnVhdCB0ZW50YW5nIHBvcHVsYXNpIHlhbmcgbGViaWggYmVzYXI7IHNlbXVhIGhhc2lsIGhhbnlhIGJlcmxha3UgdW50dWsgZGF0YSB5YW5nIGRpYW5hbGlzaXMuICANCg0KLS0tDQoNCiMjIDEuMiBTdGF0aXN0aWthIEluZmVyZW5zaWFsICANCg0KKipTdGF0aXN0aWthIGluZmVyZW5zaWFsKiogYWRhbGFoIGNhYmFuZyBzdGF0aXN0aWsgeWFuZyBiZXJmb2t1cyBwYWRhIHBlbmdndW5hYW4gZGF0YSBzYW1wZWwgdW50dWsgbWVtYnVhdCBrZXNpbXB1bGFuIGF0YXUgZ2VuZXJhbGlzYXNpIHRlbnRhbmcgcG9wdWxhc2kgeWFuZyBsZWJpaCBiZXNhci4gRGFsYW0gc3RhdGlzdGlrYSBpbmZlcmVuc2lhbCwga2l0YSBtZW5jb2JhIG1lbWFoYW1pIGJhZ2FpbWFuYSBwb2xhIGRhbGFtIGRhdGEgc2FtcGVsIGRhcGF0IG1ld2FraWxpIGthcmFrdGVyaXN0aWsgZGFyaSBzZWx1cnVoIHBvcHVsYXNpLg0KDQojIyMgMS4yLjEgVHVqdWFuICANClR1anVhbiB1dGFtYSBzdGF0aXN0aWthIGluZmVyZW5zaWFsIGFkYWxhaCB1bnR1ayBtZW5nYW1iaWwga2VzaW1wdWxhbiB0ZW50YW5nIHBvcHVsYXNpIGJlcmRhc2Fya2FuIGRhdGEgeWFuZyBoYW55YSBkaWFtYmlsIGRhcmkgc2ViYWdpYW4ga2VjaWwgcG9wdWxhc2kgKHNhbXBlbCkuIEluaSBzYW5nYXQgYmVyZ3VuYSBrZXRpa2EgdGlkYWsgbWVtdW5na2lua2FuIHVudHVrIG1lbmdhbmFsaXNpcyBzZWx1cnVoIHBvcHVsYXNpLg0KDQojIyMgMS4yLjIgQ2FrdXBhbiAgDQoxLiAqKlVqaSBIaXBvdGVzaXMqKjogIA0KICAgLSAqKlVqaSB0Kio6IERpZ3VuYWthbiB1bnR1ayBtZW1iYW5kaW5na2FuIHJhdGEtcmF0YSBhbnRhcmEgZHVhIGtlbG9tcG9rLiAgDQogICAtICoqVWppIFoqKjogRGlndW5ha2FuIHVudHVrIG1lbmd1amkgaGlwb3Rlc2lzIHRlbnRhbmcgcmF0YS1yYXRhIGtldGlrYSB2YXJpYW5zIHBvcHVsYXNpIGRpa2V0YWh1aSBkYW4gdWt1cmFuIHNhbXBlbCBiZXNhci4gIA0KICAgLSAqKlVqaSBDaGktU3F1YXJlKio6IERpZ3VuYWthbiB1bnR1ayBtZW5ndWppIGh1YnVuZ2FuIGFudGFyYSBkdWEgdmFyaWFiZWwga2F0ZWdvcmlrYWwuICANCg0KMi4gKipJbnRlcnZhbCBLZXBlcmNheWFhbioqOiAgDQogICBNZW55ZWRpYWthbiByZW50YW5nIG5pbGFpIHlhbmcga2VtdW5na2luYW4gYmVzYXIgbWVuY2FrdXAgcGFyYW1ldGVyIHBvcHVsYXNpLiBNaXNhbG55YSwgaW50ZXJ2YWwga2VwZXJjYXlhYW4gOTUlIG1lbnVuanVra2FuIGJhaHdhIGFkYSBrZW11bmdraW5hbiA5NSUgYmFod2EgbmlsYWkgc2ViZW5hcm55YSBkYXJpIHBvcHVsYXNpIGJlcmFkYSBkYWxhbSByZW50YW5nIHRlcnNlYnV0LiAgDQoNCjMuICoqQW5hbGlzaXMgUmVncmVzaSoqOiAgDQogICBEaWd1bmFrYW4gdW50dWsgbWVtb2RlbGthbiBodWJ1bmdhbiBhbnRhcmEgdmFyaWFiZWwgZGVwZW5kZW4gKHlhbmcgaW5naW4gZGlwcmVkaWtzaSkgZGVuZ2FuIHNhdHUgYXRhdSBsZWJpaCB2YXJpYWJlbCBpbmRlcGVuZGVuIChmYWt0b3IgeWFuZyBtZW1lbmdhcnVoaSkuICANCg0KIyMjIDEuMi4zIENvbnRvaCAgDQotICoqQ29udG9oIDEqKjogTWVuZ2d1bmFrYW4gZGF0YSBkYXJpIHNhbXBlbCBtYWhhc2lzd2EgZGkgc2F0dSB1bml2ZXJzaXRhcyB1bnR1ayBtZW1wZXJraXJha2FuIHJhdGEtcmF0YSBza29yIG5hc2lvbmFsIG1haGFzaXN3YS4gIA0KLSAqKkNvbnRvaCAyKio6IE1lbmd1amkgYXBha2FoIG1ldG9kZSBwZW5nYWphcmFuIGJhcnUgbGViaWggZWZla3RpZiBkaWJhbmRpbmdrYW4gbWV0b2RlIGxhbWEgZGVuZ2FuIG1lbmd1bXB1bGthbiBkYXRhIGRhcmkgZHVhIGtlbGFzIHNlYmFnYWkgc2FtcGVsLiAgDQoNCiMjIyAxLjIuNCBIYXNpbCAgDQpTdGF0aXN0aWthIGluZmVyZW5zaWFsIG1lbXVuZ2tpbmthbiBraXRhIG1lbWJ1YXQga2VzaW1wdWxhbiB0ZW50YW5nIHBvcHVsYXNpIGJlcmRhc2Fya2FuIGRhdGEgc2FtcGVsLiBIYXNpbCBpbmkgbWVuY2FrdXAgdGluZ2thdCBrZXlha2luYW4gdGVydGVudHUgZGFuIG1lbXBlcnRpbWJhbmdrYW4gcmlzaWtvIGtlc2FsYWhhbiAoVGlwZSBJIGRhbiBUaXBlIElJKS4gIA0KDQotLS0NCg0KIyMgMS4zIEtlc2ltcHVsYW4gIA0KDQojIyMgMS4zLjEgU3RhdGlzdGlrYSBEZXNrcmlwdGlmOiAgDQotIEZva3VzIHBhZGEgbWVyaW5na2FzIGRhbiBtZW5nZ2FtYmFya2FuIGRhdGEgeWFuZyB0ZXJzZWRpYS4gIA0KLSBUaWRhayBtZW1idWF0IGtlc2ltcHVsYW4gYXRhdSBnZW5lcmFsaXNhc2kgdGVudGFuZyBwb3B1bGFzaS4gIA0KLSBDb250b2hueWEgYWRhbGFoIG1lbmdoaXR1bmcgcmF0YS1yYXRhIG5pbGFpIHVqaWFuIGRhbGFtIHNhdHUga2VsYXMgYXRhdSBtZW1idWF0IGhpc3RvZ3JhbSBkaXN0cmlidXNpIHVzaWEuICANCg0KIyMjIDEuMy4yIFN0YXRpc3Rpa2EgSW5mZXJlbnNpYWw6ICANCi0gTWVuZ2d1bmFrYW4gZGF0YSBzYW1wZWwgdW50dWsgbWVtYnVhdCBnZW5lcmFsaXNhc2kgdGVudGFuZyBwb3B1bGFzaS4gIA0KLSBNZWxpYmF0a2FuIHVqaSBoaXBvdGVzaXMsIHBlbWJ1YXRhbiBpbnRlcnZhbCBrZXBlcmNheWFhbiwgZGFuIGFuYWxpc2lzIGh1YnVuZ2FuIGFudGFyIHZhcmlhYmVsLiAgDQotIENvbnRvaG55YSBhZGFsYWggbWVtcGVya2lyYWthbiByYXRhLXJhdGEgc2tvciBuYXNpb25hbCBtYWhhc2lzd2EgYmVyZGFzYXJrYW4gZGF0YSBzYW1wZWwgYXRhdSBtZW5ndWppIGVmZWt0aXZpdGFzIG1ldG9kZSBwZW5nYWphcmFuLiAgDQoNCioqUGVyYmVkYWFuIHV0YW1hKiogdGVybGV0YWsgcGFkYSB0dWp1YW4gZGFuIGNha3VwYW4uIFN0YXRpc3Rpa2EgZGVza3JpcHRpZiBoYW55YSBiZWtlcmphIGRlbmdhbiBkYXRhIHlhbmcgYWRhLCBzZWRhbmdrYW4gc3RhdGlzdGlrYSBpbmZlcmVuc2lhbCBtZW5jb2JhIG1lbmFyaWsga2VzaW1wdWxhbiB5YW5nIGxlYmloIGx1YXMgZGFyaSBkYXRhIHRlcnNlYnV0LiAgDQoNCi0tLQ0KDQojIFNvYWwgMjogQXBhIGJlZGFueWEgYWxwaGEgZGVuZ2FuIGJldGEgeWFuZyBkaWd1bmFrYW4gZGkgdWppIGhpcG90ZXNpcw0KDQojIyAyLjEgQWxwaGEgKM6xKSAgDQoNCiMjIyAyLjEuMSBEZWZpbmlzaSAgDQpBbHBoYSAozrEpIGFkYWxhaCB0aW5na2F0IHNpZ25pZmlrYW5zaSB5YW5nIGRpdGVudHVrYW4gc2ViZWx1bSBzdWF0dSB1amkgaGlwb3Rlc2lzIGRpbGFrdWthbi4gVGluZ2thdCBzaWduaWZpa2Fuc2kgaW5pIG1ld2FraWxpIHByb2JhYmlsaXRhcyBhdGF1IGtlbXVuZ2tpbmFuIGtpdGEgbWVsYWt1a2FuICoqS2VzYWxhaGFuIFRpcGUgSSoqLCB5YWl0dSBtZW5vbGFrIGhpcG90ZXNpcyBub2wgKEjigoApIHlhbmcgc2ViZW5hcm55YSBiZW5hci4gIA0KRGFsYW0gaXN0aWxhaCBzZWRlcmhhbmEsIGFscGhhIG1lbnVuanVra2FuIHNlYmVyYXBhIGJlc2FyIHJpc2lrbyB5YW5nIGtpdGEgaXppbmthbiB1bnR1ayBzYWxhaCBtZW5kZXRla3NpIGVmZWsgeWFuZyBzZWJlbmFybnlhIHRpZGFrIGFkYS4NCg0KIyMjIDIuMS4yIEZ1bmdzaSAgDQpBbHBoYSBkaWd1bmFrYW4gc2ViYWdhaSBiYXRhc2FuIHVudHVrIG1lbmVudHVrYW4gYXBha2FoIGhhc2lsIHVqaSBzdGF0aXN0aWsgY3VrdXAgc2lnbmlmaWthbiB1bnR1ayBtZW5vbGFrIGhpcG90ZXNpcyBub2wuICANCkppa2EgbmlsYWkgKipwLXZhbHVlKiogZGFyaSB1amkgc3RhdGlzdGlrIGxlYmloIGtlY2lsIGRhcmkgYWxwaGEsIG1ha2Ega2l0YSBtZW5vbGFrIGhpcG90ZXNpcyBub2wga2FyZW5hIGRpYW5nZ2FwIHRlcmRhcGF0IGN1a3VwIGJ1a3RpIHVudHVrIG1lbmR1a3VuZyBoaXBvdGVzaXMgYWx0ZXJuYXRpZi4NCg0KIyMjIDIuMS4zIE5pbGFpIFVtdW0gIA0KLSBOaWxhaSBhbHBoYSBiaWFzYW55YSBkaXRldGFwa2FuICoqMCwwNSBhdGF1IDUlKiouICANCiAgLSBBcnRpbnlhLCBraXRhIG1lbmVyaW1hIHJpc2lrbyA1JSB1bnR1ayBtZW1idWF0IGtlc2FsYWhhbiBkYWxhbSBtZW55aW1wdWxrYW4gYmFod2EgYWRhIGVmZWsgYXRhdSBwZXJiZWRhYW4sIHBhZGFoYWwgc2ViZW5hcm55YSB0aWRhayBhZGEuICANCi0gRGFsYW0gYmViZXJhcGEga2FzdXMgZGVuZ2FuIHJpc2lrbyB0aW5nZ2ksIGFscGhhIGJpc2EgZGl0ZXRhcGthbiBsZWJpaCBrZWNpbCwgbWlzYWxueWEgKiowLDAxIGF0YXUgMSUqKiwgdW50dWsgbWVtaW5pbWFsa2FuIGtlbXVuZ2tpbmFuIHNhbGFoIG1lbmRldGVrc2kgZWZlayB5YW5nIHRpZGFrIG55YXRhLiAgDQoNCiMjIyAyLjEuNCBDb250b2ggIA0KTWlzYWxrYW4gc2VidWFoIHBlbmVsaXRpYW4gZGlsYWt1a2FuIHVudHVrIG1lbmd1amkgZWZla3Rpdml0YXMgb2JhdCBiYXJ1OiAgDQotICoqSGlwb3Rlc2lzIG5vbCAoSOKCgCkqKjogT2JhdCBiYXJ1IHRpZGFrIGxlYmloIGVmZWt0aWYgZGFyaXBhZGEgcGxhc2Viby4gIA0KLSAqKkhpcG90ZXNpcyBhbHRlcm5hdGlmIChI4oKBKSoqOiBPYmF0IGJhcnUgbGViaWggZWZla3RpZiBkYXJpcGFkYSBwbGFzZWJvLiAgDQoNCkppa2EgYWxwaGEgZGl0ZXRhcGthbiAwLDA1LCBtYWthIGtpdGEgc2lhcCBtZW5lcmltYSByaXNpa28gNSUgYmFod2Ega2l0YSBzYWxhaCBtZW55aW1wdWxrYW4gb2JhdCBiYXJ1IGVmZWt0aWYgKG1lbm9sYWsgSOKCgCksIHBhZGFoYWwgc2ViZW5hcm55YSB0aWRhayBsZWJpaCBlZmVrdGlmIGRhcmlwYWRhIHBsYXNlYm8uDQoNCi0tLQ0KDQojIyAyLjIgQmV0YSAozrIpICANCg0KIyMjIDIuMi4xIERlZmluaXNpICANCkJldGEgKM6yKSBhZGFsYWgga2VtdW5na2luYW4ga2l0YSBtZW1idWF0ICoqS2VzYWxhaGFuIFRpcGUgSUkqKiwgeWFpdHUgZ2FnYWwgbWVub2xhayBoaXBvdGVzaXMgbm9sIChI4oKAKSB5YW5nIHNlYmVuYXJueWEgc2FsYWguICANCkRlbmdhbiBrYXRhIGxhaW4sIGJldGEgbWVuZ2dhbWJhcmthbiByaXNpa28ga2l0YSB0aWRhayBtZW5kZXRla3NpIGVmZWsgeWFuZyBzZWJlbmFybnlhIGFkYS4NCg0KIyMjIDIuMi4yIEZ1bmdzaSAgDQpCZXRhIGRpZ3VuYWthbiB1bnR1ayBtZW5naGl0dW5nIGtla3VhdGFuIHVqaSBzdGF0aXN0aWsgKCoqc3RhdGlzdGljYWwgcG93ZXIqKiksIHlhbmcgbWVydXBha2FuIHByb2JhYmlsaXRhcyB1bnR1ayBiZW5hci1iZW5hciBtZW5kZXRla3NpIGVmZWsgeWFuZyBueWF0YSBqaWthIGVmZWsgdGVyc2VidXQgYWRhLiAgDQpIdWJ1bmdhbiBhbnRhcmEgYmV0YSBkYW4ga2VrdWF0YW4gdWppIGFkYWxhaDogIA0KLSAqKkRheWEgPSAxIC0gzrIqKiAgDQotIFNlbWFraW4ga2VjaWwgbmlsYWkgYmV0YSwgc2VtYWtpbiBiZXNhciBrZWt1YXRhbiB1amksIGFydGlueWEgc2VtYWtpbiBiZXNhciBwZWx1YW5nIGtpdGEgbWVuZGV0ZWtzaSBlZmVrIHlhbmcgc2ViZW5hcm55YSBhZGEuDQoNCiMjIyAyLjIuMyBOaWxhaSBVbXVtICANCi0gTmlsYWkgYmV0YSBzZXJpbmcgdGlkYWsgZGlzZWJ1dGthbiBzZWNhcmEgZWtzcGxpc2l0LCB0ZXRhcGkgYmlhc2FueWEgZGltYWtzdWRrYW4gdW50dWsgdGlkYWsgbGViaWggYmVzYXIgZGFyaSAqKjAsMiBhdGF1IDIwJSoqLiAgDQotIERlbmdhbiBiZXRhIHNlYmVzYXIgMCwyLCBrZWt1YXRhbiB1amkgYWthbiBtZW5qYWRpICoqMCw4IGF0YXUgODAlKiosIHlhbmcgYmVyYXJ0aSBhZGEgODAlIGtlbXVuZ2tpbmFuIGtpdGEgbWVuZGV0ZWtzaSBlZmVrIG55YXRhIGppa2EgZWZlayB0ZXJzZWJ1dCBiZW5hci1iZW5hciBhZGEuDQoNCiMjIyAyLjIuNCBDb250b2ggIA0KRGFsYW0gcGVuZWxpdGlhbiB5YW5nIHNhbWEgdGVudGFuZyBvYmF0IGJhcnU6ICANCi0gSmlrYSBiZXRhIGRpdGV0YXBrYW4gMCwyLCBtYWthIGFkYSAyMCUga2VtdW5na2luYW4ga2l0YSBnYWdhbCBtZW5kZXRla3NpIGJhaHdhIG9iYXQgYmFydSBzZWJlbmFybnlhIGxlYmloIGVmZWt0aWYgZGFyaXBhZGEgcGxhc2Viby4gIA0KLSBEYWxhbSBrb250ZWtzIGluaSwga2l0YSBrZWhpbGFuZ2FuIHBlbHVhbmcgdW50dWsgbWVuZW11a2FuIGVmZWsgbnlhdGEgZGFyaSBvYmF0IGJhcnUuDQoNCi0tLQ0KDQojIyAyLjMgUGVyYmFuZGluZ2FuIEFscGhhICjOsSkgZGFuIEJldGEgKM6yKSAgDQoNCiMjIyAyLjMuMSBUdWp1YW4gIA0KLSAqKkFscGhhKiogdGVya2FpdCBkZW5nYW4gcmlzaWtvIG1lbWJ1YXQgKipLZXNhbGFoYW4gVGlwZSBJKiogKCoqZmFsc2UgcG9zaXRpdmUqKikg4oCTIHNhbGFoIG1lbmRldGVrc2kgZWZlayB5YW5nIHNlYmVuYXJueWEgdGlkYWsgYWRhLiAgDQotICoqQmV0YSoqIHRlcmthaXQgZGVuZ2FuIHJpc2lrbyBtZW1idWF0ICoqS2VzYWxhaGFuIFRpcGUgSUkqKiAoKipmYWxzZSBuZWdhdGl2ZSoqKSDigJMgZ2FnYWwgbWVuZGV0ZWtzaSBlZmVrIHlhbmcgc2ViZW5hcm55YSBhZGEuICANCg0KIyMjIDIuMy4yIE5pbGFpIFVtdW0gIA0KLSBBbHBoYSBiaWFzYW55YSBkaXRldGFwa2FuIHBhZGEgKiowLDA1ICg1JSkqKiB1bnR1ayBzZWJhZ2lhbiBiZXNhciBwZW5lbGl0aWFuLiAgDQotIEJldGEgYmlhc2FueWEgdGlkYWsgbGViaWggZGFyaSAqKjAsMiAoMjAlKSoqLCBzZWhpbmdnYSBrZWt1YXRhbiB1amkgbWluaW1hbCBhZGFsYWggKio4MCUqKi4gIA0KDQojIyMgMi4zLjMgRm9rdXMgIA0KLSAqKkFscGhhKiogbGViaWggcGVudGluZyBrZXRpa2Ega2VzYWxhaGFuIG1lbmRldGVrc2kgZWZlayB5YW5nIHRpZGFrIGFkYSBkYXBhdCBtZW1iYXdhIGRhbXBhayBiZXNhciwgc2VwZXJ0aSBkYWxhbSBwZW5ndWppYW4gb2JhdCBhdGF1IGtlcHV0dXNhbiBrZWJpamFrYW4uICANCi0gKipCZXRhKiogbGViaWggcGVudGluZyBrZXRpa2EgcmlzaWtvIHRpZGFrIG1lbmRldGVrc2kgZWZlayB5YW5nIGFkYSBsZWJpaCBiZXJiYWhheWEsIHNlcGVydGkgZGFsYW0ga2FzdXMgc2lzdGVtIGtlYW1hbmFuIGF0YXUgZGlhZ25vc2lzIHBlbnlha2l0LiAgDQoNCi0tLQ0KDQojIyAyLjQgS2VzaW1wdWxhbiAgDQoNCiMjIyAyLjQuMSBBbHBoYSAozrEpICANCi0gQmVya2FpdGFuIGRlbmdhbiByaXNpa28gc2FsYWggbWVuZGV0ZWtzaSBlZmVrIHlhbmcgc2ViZW5hcm55YSB0aWRhayBhZGEgKCoqZmFsc2UgcG9zaXRpdmUqKikuICANCi0gQmlhc2FueWEgZGlndW5ha2FuIHNlYmFnYWkgdGluZ2thdCBzaWduaWZpa2Fuc2kgZGFsYW0gdWppIHN0YXRpc3Rpay4gIA0KLSAqKkNvbnRvaCoqOiBKaWthIGFscGhhIDAsMDUsIGtpdGEgbWVuZXJpbWEgcmlzaWtvIDUlIHVudHVrIHNhbGFoIG1lbm9sYWsgaGlwb3Rlc2lzIG5vbC4gIA0KDQojIyMgMi40LjIgQmV0YSAozrIpICANCi0gQmVya2FpdGFuIGRlbmdhbiByaXNpa28gdGlkYWsgbWVuZGV0ZWtzaSBlZmVrIHlhbmcgc2ViZW5hcm55YSBhZGEgKCoqZmFsc2UgbmVnYXRpdmUqKikuICANCi0gRGlndW5ha2FuIHVudHVrIG1lbmdoaXR1bmcga2VrdWF0YW4gdWppIHN0YXRpc3RpayAoKioxIC0gzrIqKikuICANCi0gKipDb250b2gqKjogSmlrYSBiZXRhIDAsMiwga2l0YSBtZW5lcmltYSByaXNpa28gMjAlIHVudHVrIGdhZ2FsIG1lbmRldGVrc2kgZWZlayBueWF0YS4gIA0KDQoqKkNhdGF0YW4gUGVudGluZyoqOiBLZWR1YSBuaWxhaSBpbmkgc2FsaW5nIGJlcmthaXRhbi4gSmlrYSBraXRhIG1lbnVydW5rYW4gYWxwaGEgKG1lbXBlcmtldGF0IHVqaSB1bnR1ayBtZW5ndXJhbmdpIGtlc2FsYWhhbiBUaXBlIEkpLCBtYWthIGJldGEgKHJpc2lrbyBrZXNhbGFoYW4gVGlwZSBJSSkgY2VuZGVydW5nIG1lbmluZ2thdC4gT2xlaCBrYXJlbmEgaXR1LCBwZW50aW5nIHVudHVrIG1lbnllaW1iYW5na2FuIGtlZHVhIG5pbGFpIGluaSBiZXJkYXNhcmthbiBrb250ZWtzIGRhbiBkYW1wYWsga2VwdXR1c2FuIGRhbGFtIHBlbmVsaXRpYW4uDQoNCi0tLQ0KDQojIFNvYWwgMzogS2FwYW4ga2l0YSBtZW5nZ3VuYWthbiB0eXBlIEkgKHBlc2ltaXMpLCBrYXBhbiBtZW5nZ3VuYWthbiB0eXBlIElJIChvcHRpbWlzKQ0KDQojIyAzLjEgS2VzYWxhaGFuIFRpcGUgSSAoUGVzaW1pcykgIA0KDQojIyMgMy4xLjEgRGVmaW5pc2kgIA0KS2VzYWxhaGFuIFRpcGUgSSB0ZXJqYWRpIGtldGlrYSBraXRhICoqbWVub2xhayBoaXBvdGVzaXMgbm9sIChI4oKAKSB5YW5nIHNlYmVuYXJueWEgYmVuYXIqKi4gIA0KRGFsYW0gaXN0aWxhaCBzZWRlcmhhbmEsIGtpdGEgbWVueWltcHVsa2FuIGJhaHdhIGFkYSBlZmVrIGF0YXUgcGVyYmVkYWFuIHlhbmcgc2lnbmlmaWthbiwgcGFkYWhhbCBrZW55YXRhYW5ueWEgdGlkYWsgYWRhLiAgDQoNCktlc2FsYWhhbiBpbmkgc2VyaW5nIGRpc2VidXQgc2ViYWdhaSAqKmZhbHNlIHBvc2l0aXZlKioga2FyZW5hIGtpdGEgbWVuZGV0ZWtzaSBzZXN1YXR1IHlhbmcgc2ViZW5hcm55YSB0aWRhayBueWF0YS4gIA0KQ29udG9obnlhLCBtZW55aW1wdWxrYW4gYmFod2Egb2JhdCBiYXJ1IGVmZWt0aWYsIHBhZGFoYWwgc2ViZW5hcm55YSB0aWRhayBhZGEgcGVyYmVkYWFuIGRpYmFuZGluZ2thbiBkZW5nYW4gcGxhc2Viby4gIA0KDQojIyMgMy4xLjIgS2FwYW4gRGlndW5ha2FuICANCktlc2FsYWhhbiBUaXBlIEkgbWVuamFkaSBwZXJoYXRpYW4gdXRhbWEgZGFsYW0gc2l0dWFzaSBkaSBtYW5hICoqa29uc2VrdWVuc2kgZGFyaSBtZW5kZXRla3NpIHNlc3VhdHUgeWFuZyBzYWxhaCBzYW5nYXQgYmVzYXIgYXRhdSBiZXJiYWhheWEqKi4gIA0KSW5pIHRlcm1hc3VrIGthc3VzIGRpIG1hbmEga2VwdXR1c2FuIHlhbmcgc2FsYWggZGFwYXQgbWVtYmFoYXlha2FuIG55YXdhLCBrZWFtYW5hbiwgYXRhdSBtZW5pbWJ1bGthbiBrZXJ1Z2lhbiBiZXNhci4gIA0KDQojIyMgMy4xLjMgQ29udG9oICANCjEuICoqRGFsYW0gcGVuZ3VqaWFuIG9iYXQqKjogIA0KICAgLSBLZXRpa2Egc2VidWFoIHBlbmVsaXRpYW4gbWVuZ2tsYWltIGJhaHdhIG9iYXQgYmFydSBlZmVrdGlmLCBwYWRhaGFsIHNlYmVuYXJueWEgb2JhdCB0ZXJzZWJ1dCB0aWRhayBtZW1iZXJpa2FuIG1hbmZhYXQgbnlhdGEuICANCiAgIC0gS2VzYWxhaGFuIGluaSBiZXJpc2lrbyBtZW1iYWhheWFrYW4gcGFzaWVuLCBrYXJlbmEgbWVyZWthIG11bmdraW4gZGliZXJpa2FuIG9iYXQgeWFuZyB0aWRhayBlZmVrdGlmIGF0YXUgYmFoa2FuIGJlcmJhaGF5YS4gIA0KDQoyLiAqKkRhbGFtIHNpc3RlbSBrZWFtYW5hbioqOiAgDQogICAtIFNlYnVhaCBhbGFybSBrZWFtYW5hbiBiZXJidW55aSBtZXNraXB1biB0aWRhayBhZGEgYW5jYW1hbiBueWF0YSAoKiphbGFybSBwYWxzdSoqKS4gIA0KICAgLSBEYWxhbSBoYWwgaW5pLCBsZWJpaCBiYWlrIG1lbmRldGVrc2kgYW5jYW1hbiB5YW5nIHNlYmVuYXJueWEgdGlkYWsgYWRhIChwZXNpbWlzKSwga2FyZW5hIGdhZ2FsIG1lbmRldGVrc2kgYW5jYW1hbiB5YW5nIG55YXRhIGJpc2EgbWVtaWxpa2kgZGFtcGFrIHlhbmcgamF1aCBsZWJpaCBiZXNhci4gIA0KDQojIyMgMy4xLjQgUGVuZGVrYXRhbiB1bnR1ayBNZW5ndXJhbmdpIEtlc2FsYWhhbiBUaXBlIEkgIA0KVW50dWsgbWVtaW5pbWFsa2FuIHJpc2lrbyBrZXNhbGFoYW4gVGlwZSBJLCBuaWxhaSAqKmFscGhhICjOsSkqKiBiaWFzYW55YSBkaXRldGFwa2FuIGtlY2lsLCBzZXBlcnRpICoqMCwwMSoqIGF0YXUgKioxJSoqLCB0ZXJnYW50dW5nIHBhZGEga29udGVrc255YS4gIA0KLSBEZW5nYW4gbWVudXJ1bmthbiBuaWxhaSBhbHBoYSwga2l0YSBtZW1wZXJrZXRhdCBrcml0ZXJpYSB1bnR1ayBtZW5vbGFrIGhpcG90ZXNpcyBub2wsIHNlaGluZ2dhIGtlbXVuZ2tpbmFuIHNhbGFoIG1lbm9sYWsgaGlwb3Rlc2lzIG5vbCBtZW5qYWRpIGxlYmloIGtlY2lsLiAgDQotIFBlbmRla2F0YW4gaW5pIHNlcmluZyBkaWd1bmFrYW4gZGFsYW0gcGVuZWxpdGlhbiBtZWRpcyBhdGF1IHJlZ3VsYXNpIGtlYW1hbmFuIHlhbmcgbWVtaWxpa2kgcmlzaWtvIHRpbmdnaS4gIA0KDQotLS0NCg0KIyMgMy4yIEtlc2FsYWhhbiBUaXBlIElJIChPcHRpbWlzKSAgDQoNCiMjIyAzLjIuMSBEZWZpbmlzaSAgDQpLZXNhbGFoYW4gVGlwZSBJSSB0ZXJqYWRpIGtldGlrYSBraXRhICoqZ2FnYWwgbWVub2xhayBoaXBvdGVzaXMgbm9sIChI4oKAKSB5YW5nIHNlYmVuYXJueWEgc2FsYWgqKi4gIA0KRGVuZ2FuIGthdGEgbGFpbiwga2l0YSB0aWRhayBtZW5kZXRla3NpIGVmZWsgYXRhdSBwZXJiZWRhYW4geWFuZyBzZWJlbmFybnlhIGFkYS4gIA0KDQpLZXNhbGFoYW4gaW5pIHNlcmluZyBkaXNlYnV0IHNlYmFnYWkgKipmYWxzZSBuZWdhdGl2ZSoqIGthcmVuYSBraXRhIG1lbGV3YXRrYW4gc2VzdWF0dSB5YW5nIG55YXRhLiAgDQpDb250b2hueWEsIGdhZ2FsIG1lbnlpbXB1bGthbiBiYWh3YSBtZXRvZGUgYmFydSBsZWJpaCBlZmVrdGlmIGRpYmFuZGluZ2thbiBtZXRvZGUgbGFtYS4gIA0KDQojIyMgMy4yLjIgS2FwYW4gRGlndW5ha2FuICANCktlc2FsYWhhbiBUaXBlIElJIGxlYmloIGRhcGF0IGRpdG9sZXJhbnNpIGRhbGFtIHNpdHVhc2kgZGkgbWFuYSAqKmRhbXBhayBkYXJpIHRpZGFrIG1lbmRldGVrc2kgc2VzdWF0dSB5YW5nIGJlbmFyIHRpZGFrIHRlcmxhbHUgYmVzYXIgYXRhdSBzaWduaWZpa2FuKiouICANCkluaSBiaWFzYW55YSB0ZXJqYWRpIHBhZGEgZWtzcGVyaW1lbiBhd2FsIGF0YXUgc2l0dWFzaSBkZW5nYW4gcmlzaWtvIHJlbmRhaC4gIA0KDQojIyMgMy4yLjMgQ29udG9oICANCjEuICoqRGFsYW0gcGVuZ3VqaWFuIHByb2R1ayoqOiAgDQogICAtIFNlYnVhaCBwcm9kdWsgYmFydSBzZWRpa2l0IGxlYmloIGJhaWsgZGliYW5kaW5na2FuIGRlbmdhbiBzdGFuZGFyLCB0ZXRhcGkgcGVuZWxpdGlhbiBnYWdhbCBtZW5kZXRla3NpIGtldW5nZ3VsYW4gaW5pLiAgDQogICAtIERhbXBha255YSBtdW5na2luIHRpZGFrIHNpZ25pZmlrYW4sIHRlcnV0YW1hIGppa2EgcHJvZHVrIHRlcnNlYnV0IG1hc2loIG1lbWVudWhpIHN0YW5kYXIgbWluaW11bS4gIA0KDQoyLiAqKkRhbGFtIGJpc25pcyoqOiAgDQogICAtIFNlYnVhaCBwZWx1YW5nIGtlY2lsIHVudHVrIHBlbmluZ2thdGFuIGVmaXNpZW5zaSBhdGF1IGtldW50dW5nYW4gdGVybGV3YXRrYW4ga2FyZW5hIGhhc2lsIGFuYWxpc2lzIHRpZGFrIG1lbnVuanVra2FuIHBlcmJlZGFhbiB5YW5nIHNpZ25pZmlrYW4uICANCiAgIC0gRGFsYW0ga29udGVrcyBpbmksIGRhbXBhayBkYXJpIHRpZGFrIG1lbmRldGVrc2kgcGVsdWFuZyBrZWNpbCB0ZXJzZWJ1dCBkYXBhdCBkaXRlcmltYS4gIA0KDQojIyMgMy4yLjQgUGVuZGVrYXRhbiB1bnR1ayBNZW5ndXJhbmdpIEtlc2FsYWhhbiBUaXBlIElJICANClVudHVrIG1lbmd1cmFuZ2kgcmlzaWtvIGtlc2FsYWhhbiBUaXBlIElJLCBuaWxhaSAqKmJldGEgKM6yKSoqIGJpYXNhbnlhIGRpdGV0YXBrYW4ga2VjaWwsIHNlcGVydGkgKiowLDIqKiBhdGF1ICoqMjAlKiosIHNlaGluZ2dhIGtla3VhdGFuIHVqaSAoKipwb3dlciA9IDEgLSDOsioqKSBtZW5qYWRpIHRpbmdnaSwgbWluaW1hbCAqKjgwJSoqLiAgDQotIERlbmdhbiBtZW5pbmdrYXRrYW4ga2VrdWF0YW4gdWppLCBraXRhIG1lbmluZ2thdGthbiBrZW11bmdraW5hbiBtZW5kZXRla3NpIGVmZWsgeWFuZyBzZWJlbmFybnlhIGFkYS4gIA0KLSBQZW5kZWthdGFuIGluaSBzZXJpbmcgZGlndW5ha2FuIGRhbGFtIHN0dWRpIHlhbmcgYmVyZm9rdXMgcGFkYSBtZW5lbXVrYW4gZWZlayB5YW5nIHBlbnRpbmcgYXRhdSBpbm92YXNpIGJhcnUuICANCg0KLS0tDQoNCiMjIDMuMyBLZXNpbXB1bGFuOiBLYXBhbiBNZW5nZ3VuYWthbiBLZXNhbGFoYW4gVGlwZSBJIGF0YXUgVGlwZSBJSSAgDQoNCiMjIyAzLjMuMSBLZXNhbGFoYW4gVGlwZSBJIChQZXNpbWlzKSAgDQotIEd1bmFrYW4gS2VzYWxhaGFuIFRpcGUgSSBzZWJhZ2FpIHByaW9yaXRhcyBqaWthIGRhbXBhayBkYXJpIHNhbGFoIG1lbmRldGVrc2kgc2VzdWF0dSB5YW5nIHRpZGFrIGJlbmFyIHNhbmdhdCBiZXNhci4gIA0KLSBJbmkgcmVsZXZhbiBkYWxhbSBrb250ZWtzICoqa2VzZWhhdGFuKiosICoqa2VhbWFuYW4qKiwgYXRhdSAqKnJlZ3VsYXNpKiosIGRpIG1hbmEgc2FsYWggbWVtYnVhdCBrbGFpbSBhdGF1IGtlc2ltcHVsYW4gZGFwYXQgbWVtYmF3YSBrb25zZWt1ZW5zaSBzZXJpdXMuICANCi0gQ29udG9obnlhIGFkYWxhaCBwZW5ndWppYW4gb2JhdCBhdGF1IHNpc3RlbSBrZWFtYW5hbiwgZGkgbWFuYSBsZWJpaCBiYWlrIGJlcmhhdGktaGF0aSBtZXNraXB1biBtZW5kZXRla3NpIGFuY2FtYW4gcGFsc3UuICANCg0KIyMjIDMuMy4yIEtlc2FsYWhhbiBUaXBlIElJIChPcHRpbWlzKSAgDQotIEd1bmFrYW4gS2VzYWxhaGFuIFRpcGUgSUkgc2ViYWdhaSBwcmlvcml0YXMgamlrYSBkYW1wYWsgZGFyaSB0aWRhayBtZW5kZXRla3NpIHNlc3VhdHUgeWFuZyBiZW5hciBsZWJpaCBrZWNpbCBhdGF1IGRhcGF0IGRpdG9sZXJhbnNpLiAgDQotIEluaSByZWxldmFuIGRhbGFtIGtvbnRla3MgKipwZW5lbGl0aWFuIGF3YWwqKiwgKipiaXNuaXMqKiwgYXRhdSBzaXR1YXNpIGRlbmdhbiByaXNpa28gcmVuZGFoLCBkaSBtYW5hIGxlYmloIGJhaWsgbWVsZXdhdGthbiBlZmVrIGtlY2lsIGRhcmlwYWRhIG1lbWJ1YXQga2xhaW0geWFuZyBzYWxhaC4gIA0KLSBDb250b2hueWEgYWRhbGFoIHBlbmd1amlhbiBwcm9kdWsgYmFydSBkZW5nYW4gcGVuaW5na2F0YW4ga2VjaWwgeWFuZyB0aWRhayB0ZXJsYWx1IHNpZ25pZmlrYW4uICANCg0KLS0tDQoNCiMjIDMuNCBQZXJiZWRhYW4gVXRhbWEgIA0KDQp8ICoqQXNwZWsqKiAgICAgICAgIHwgKipLZXNhbGFoYW4gVGlwZSBJIChQZXNpbWlzKSoqICAgICAgICB8ICoqS2VzYWxhaGFuIFRpcGUgSUkgKE9wdGltaXMpKiogICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgKipEZWZpbmlzaSoqICAgICAgIHwgU2FsYWggbWVub2xhayBoaXBvdGVzaXMgbm9sICAgICAgICAgIHwgU2FsYWggZ2FnYWwgbWVub2xhayBoaXBvdGVzaXMgbm9sICB8DQp8ICoqS29uc2VrdWVuc2kqKiAgICB8IFNhbGFoIG1lbmRldGVrc2kgZWZlayB5YW5nIHRpZGFrIGFkYSB8IFRpZGFrIG1lbmRldGVrc2kgZWZlayB5YW5nIGFkYSAgICAgfA0KfCAqKkNvbnRvaCoqICAgICAgICAgfCBNZW5na2xhaW0gb2JhdCBlZmVrdGlmIHBhZGFoYWwgdGlkYWsgfCBHYWdhbCBtZW5kZXRla3NpIG9iYXQgeWFuZyBlZmVrdGlmIHwNCnwgKipQZW5kZWthdGFuKiogICAgIHwgVGV0YXBrYW4gYWxwaGEgKM6xKSBrZWNpbCwgbWlzYWxueWEgMCwwMSB8IFRldGFwa2FuIGJldGEgKM6yKSBrZWNpbCwgbWlzYWxueWEgMCwyIHwNCnwgKipQcmlvcml0YXMqKiAgICAgIHwgRGlndW5ha2FuIGRhbGFtIGthc3VzIHJpc2lrbyB0aW5nZ2kgIHwgRGlndW5ha2FuIGRhbGFtIGthc3VzIHJpc2lrbyByZW5kYWh8DQoNCi0tLQ0KDQojIyAzLjUgS2VzaW1wdWxhbiBBa2hpciAgDQoNCi0gR3VuYWthbiAqKnBlbmRla2F0YW4gcGVzaW1pcyAoS2VzYWxhaGFuIFRpcGUgSSkqKiBqaWthIHNhbGFoIG1lbmRldGVrc2kgc2VzdWF0dSB5YW5nIHRpZGFrIGJlbmFyIGFrYW4gbWVtYmF3YSBkYW1wYWsgYmVzYXIuICANCiAgLSBNaXNhbG55YSwgZGFsYW0gcGVuZ3VqaWFuIG9iYXQsIGxlYmloIGJhaWsgbWVtcGVya2V0YXQgYW5hbGlzaXMgdW50dWsgbWVuZ2hpbmRhcmkga2xhaW0geWFuZyBzYWxhaC4gIA0KLSBHdW5ha2FuICoqcGVuZGVrYXRhbiBvcHRpbWlzIChLZXNhbGFoYW4gVGlwZSBJSSkqKiBqaWthIGRhbXBhayBkYXJpIG1lbGV3YXRrYW4gc2VzdWF0dSB5YW5nIGJlbmFyIHJlbGF0aWYga2VjaWwgYXRhdSBkYXBhdCBkaXRvbGVyYW5zaS4gIA0KICAtIE1pc2FsbnlhLCBkYWxhbSByaXNldCBhd2FsIGF0YXUgYmlzbmlzLCBsZWJpaCBiYWlrIG1lbGV3YXRrYW4gcGVsdWFuZyBrZWNpbCBkYXJpcGFkYSBtZW1idWF0IGtsYWltIHlhbmcgc2FsYWguICANCg0KUGVudGluZyB1bnR1ayBtZW55ZXN1YWlrYW4gZm9rdXMgYW50YXJhICoqS2VzYWxhaGFuIFRpcGUgSSBkYW4gVGlwZSBJSSoqIGJlcmRhc2Fya2FuICoqa29uc2VrdWVuc2kqKiwgKip0dWp1YW4gcGVuZWxpdGlhbioqLCBkYW4gKipkYW1wYWsga2VwdXR1c2FuKiouDQoNCg0KDQoNCiMgUmVmZXJlbnNpDQoNCi0gaHR0cHM6Ly9ib29rZG93bi5vcmcvZHNjaWVuY2VsYWJzL3N0YXRpc3Rpa2FfZGFzYXIvX2Jvb2svUGVuZ3VqaWFuX0hpcG90ZXNpcy5odG1sDQoNCg==