
Apa itu
Pengambilan Sampel?
Pengambilan sampel adalah proses pemilihan sebagian individu, item,
atau pengamatan dari populasi yang lebih besar untuk memperkirakan
karakteristik seluruh populasi. Pengambilan sampel banyak digunakan
dalam penelitian, bisnis, dan kebijakan publik untuk membuat keputusan
berdasarkan data secara efisien.
Populasi vs
Sampel
Dalam statistik, memahami perbedaan antara populasi dan sampel sangat
penting untuk analisis data, inferensi, dan pengambilan keputusan.
Populasi
Populasi (N) adalah keseluruhan kelompok individu, objek, atau
peristiwa yang ingin diteliti oleh seorang peneliti. Populasi mencakup
semua kemungkinan pengamatan yang relevan dengan penelitian.
Contoh:
✅ Semua penduduk suatu kota saat mempelajari perilaku
pemilih.
✅ Setiap telepon pintar yang diproduksi dari pabrik saat
menganalisis tingkat kerusakan.
✅ Setiap mahasiswa di universitas saat mengukur nilai ujian
rata-rata.
Jenis Populasi:
1
Populasi Terbatas: Populasi dengan jumlah elemen yang
tetap (misalnya, karyawan di suatu perusahaan).
2
Populasi Tak Terbatas: Populasi dengan jumlah elemen
yang tidak dapat dihitung (misalnya, bakteri dalam cawan
petri).
3
Populasi Target: Populasi spesifik yang ingin
dipelajari oleh peneliti.
4
Populasi yang Dapat Diakses: Bagian dari populasi
sasaran yang tersedia untuk penelitian.
Sampel
Sampel (n) adalah bagian dari populasi yang dipilih untuk analisis.
Karena mempelajari keseluruhan populasi sering kali tidak praktis
dikarenakan biaya, waktu, atau aksesibilitas, dan sampel juga digunakan
untuk membuat kesimpulan tentang populasi.
Contoh:
✅ Survei terhadap 1.000 penduduk kota untuk memperkirakan opini
publik.
✅ Memeriksa 500 telepon pintar yang dipilih secara acak untuk
menilai tingkat kerusakan.
✅ Menganalisis nilai ujian dari 200 siswa yang dipilih secara
acak.
Ciri-ciri Sampel yang Baik:
1
Representatif: Secara akurat mencerminkan
populasi.
2
Acak: Dipilih tanpa bias.
3
Cukup Besar: Memastikan estimasi yang dapat
diandalkan.
4
Bias Minimal: Menghindari kesalahan
sistematis.
Perbedaan Utama
Saat melakukan penelitian atau analisis statistik, penting untuk
membedakan antara populasi dan sampel. Populasi mengacu pada seluruh
kelompok yang menjadi perhatian dalam sebuah penelitian, sedangkan
sampel adalah bagian yang lebih kecil yang dipilih dari populasi
tersebut untuk dianalisis. Memahami perbedaannya sangat penting untuk
membuat kesimpulan yang akurat dan memastikan validitas kesimpulan.
Berikut adalah perbedaan utama antara populasi dan sampel:
Definisi |
Seluruh kelompok yang diminati |
Subset yang dipilih untuk penelitian |
Ukuran |
Besar atau tak terbatas |
Lebih kecil, bagian yang dapat dikelola |
Notasi |
Menggunakan huruf kapital (misalnya, N, μ,
σ) |
Menggunakan huruf kecil (misalnya, n, x̄,
s) |
Parameter |
Nilai sebenarnya (misalnya, rata-rata populasi μ, standar
deviasi σ) |
Estimasi (misalnya, rata-rata sampel x̄, standar deviasi
s) |
Biaya & Waktu |
Tinggi |
Lebih rendah |
Akurasi |
Memberikan informasi yang akurat |
Memberikan estimasi dengan margin kesalahan |
Mengapa
Menggunakan Sampel?
Dalam penelitian dan pengumpulan data, mempelajari seluruh populasi
sering kali tidak praktis atau bahkan mustahil. Oleh karena itu,
peneliti menggunakan sampel, yaitu bagian kecil yang
dapat dikelola dari populasi. Berikut adalah alasan utama mengapa sampel
digunakan:
Efektivitas Biaya
Mengumpulkan data dari seluruh populasi membutuhkan sumber daya keuangan
yang besar. Sampel membantu mengurangi biaya yang terkait dengan
pengumpulan, pemrosesan, dan analisis data.
Efisiensi Waktu
Mempelajari seluruh populasi memakan banyak waktu. Sampel yang dipilih
dengan baik memungkinkan pengumpulan dan analisis data yang lebih
cepat.
Kelayakan
Beberapa populasi terlalu besar atau sulit diakses untuk dipelajari
sepenuhnya. Sampel memungkinkan penelitian tetap dapat dilakukan ketika
pengumpulan data skala populasi tidak memungkinkan.
Akurasi dan Keandalan
Jika dipilih dengan benar, sampel dapat memberikan wawasan yang sangat
akurat dan dapat diandalkan. Teknik statistik memastikan bahwa sampel
dapat mewakili seluruh populasi secara efektif.
Mengurangi Kompleksitas Manajemen Data
Mengelola jumlah data yang sangat besar bisa menjadi tantangan. Sampel
menyederhanakan pengelolaan data sambil tetap memberikan kesimpulan yang
bermakna.
Pertimbangan Etika
Beberapa penelitian (misalnya, uji coba medis) dapat melibatkan risiko,
sehingga tidak etis untuk melakukan pengujian pada seluruh populasi.
Sampel memungkinkan eksperimen yang lebih terkontrol dan etis.
Menghindari
Bias Sampel
Bias pengambilan sampel terjadi ketika anggota populasi tertentu
secara sistematis dikecualikan atau terwakili secara berlebihan dalam
sampel.
Ini mengarah pada hasil yang tidak akurat dan tidak representatif,
yang berpotensi membelokkan kesimpulan dan mengurangi validitas sebuah
studi. Berikut beberapa penyebab bias dalam pengambilan sampel:
Undercoverage |
Beberapa kelompok dalam populasi tidak termasuk dalam kerangka
sampel. |
Gunakan kerangka sampel yang representatif untuk
memastikan semua kelompok tercakup. |
Overrepresentation |
Kelompok tertentu memiliki kemungkinan yang secara tidak
proporsional lebih tinggi untuk dipilih. |
Gunakan sampling berstrata untuk menjaga proporsi
yang seimbang. |
Bias Pemilihan Diri |
Peserta secara sukarela memilih untuk ikut serta, yang mengarah pada
sampel yang tidak acak. |
Gunakan undangan acak dan pertimbangkan
insentif untuk menarik kelompok responden yang lebih
beragam. |
Meminimalkan bias dalam pengambilan sampel sangat penting untuk
menghasilkan temuan penelitian yang valid, andal, dan dapat
digeneralisasikan. Dengan memastikan kerangka sampel yang dibangun
dengan baik, menerapkan metode pemilihan acak, dan mengurangi efek
pemilihan diri, peneliti dapat meningkatkan kualitas dan akurasi studi
mereka.
Random dalam
Pengambilan Sampel
Random adalah proses yang memastikan setiap anggota populasi memiliki
peluang yang sama untuk dipilih. Hal ini mengurangi bias pengambilan
sampel dan meningkatkan generalisasi temuan penelitian.
Pengambilan Sampel
Acak Sederhana (Simple Random Sampling)
Metode ini memastikan bahwa setiap anggota populasi memiliki peluang
yang sama untuk dipilih, sehingga sampel benar-benar acak. Berikut cara
kerjanya:
- ✅ Berikan nomor unik kepada setiap anggota populasi.
- ✅ Gunakan generator angka acak atau sistem undian untuk memilih
peserta.
Contoh:
Sebuah perusahaan ingin mensurvei 500 karyawan dari total 5.000
karyawan. Setiap karyawan diberi nomor, lalu 500 orang dipilih secara
acak menggunakan sistem undian.
Pengambilan Sampel
Sistematis (Systematic Sampling)
Metode ini memilih elemen dari daftar yang telah diurutkan dengan
selang waktu tertentu. Berikut cara kerjanya:
- ✅ Tentukan ukuran sampel (misalnya, memilih 100 orang dari daftar
1.000 orang).
- ✅ Hitung interval pemilihan: Ukuran Populasi ÷ Ukuran
Sampel (misalnya, 1.000 ÷ 100 = 10).
- ✅ Pilih titik awal secara acak, lalu pilih setiap orang ke-10 dari
daftar.
Contoh:
Seorang peneliti ingin mensurvei setiap pelanggan ke-5 dari daftar 1.000
pembeli. Jika titik awalnya adalah angka 3, maka orang yang dipilih
adalah pembeli ke-3, ke-8, ke-13, dan seterusnya.
Pengambilan Sampel
Berstrata (Stratified Sampling)
Metode ini membagi populasi ke dalam kelompok-kelompok kecil
(strata) berdasarkan karakteristik tertentu, lalu memilih
peserta secara acak dalam jumlah yang sebanding dari setiap kelompok.
Berikut cara kerjanya:
- ✅ Identifikasi strata yang relevan (misalnya,
kelompok usia, tingkat pendapatan, pendidikan).
- ✅ Tentukan proporsi masing-masing kelompok dalam
populasi.
- ✅ Lakukan pengambilan sampel acak dalam setiap
kelompok.
Contoh:
Sebuah universitas ingin mensurvei mahasiswa dari berbagai tingkat
akademik. Jika 40% mahasiswa adalah tahun pertama, 30% tahun kedua, 20%
tahun ketiga, dan 10% tahun keempat, maka jumlah sampel akan
mencerminkan proporsi ini.
Menggunakan metode pengambilan sampel acak seperti SRS
(Simple Random Sampling), pengambilan sampel sistematis, dan pengambilan
sampel berstrata membantu memastikan bahwa sampel yang dipilih
adil, tidak bias, dan representatif terhadap populasi.
Ini meningkatkan keandalan dan validitas hasil penelitian, sehingga
lebih bisa digeneralisasi ke seluruh populasi.
Tantangan dalam
Pengambilan Sampel
Pengambilan sampel adalah proses penting dalam penelitian, tetapi
memiliki beberapa tantangan yang dapat memengaruhi akurasi dan keandalan
hasil. Berikut adalah ringkasan tantangan utama dalam pengambilan
sampel, beserta penyebab dan solusinya.
Bias Non-Respons |
Peserta enggan atau tidak dapat merespons. Survei terlalu panjang
atau rumit. Kelompok tertentu kurang mungkin berpartisipasi. |
Kirim pengingat tindak lanjut. Tawarkan insentif. Permudah format
survei. |
Kesalahan dalam Kerangka Sampel |
Daftar peserta usang atau tidak lengkap. Klasifikasi salah. Adanya
duplikasi atau peserta yang tidak memenuhi syarat. |
Perbarui kerangka sampel secara berkala. Periksa ulang sumber data.
Gunakan metode stratified sampling. |
Ukuran Sampel Tidak Memadai |
Sumber daya terbatas untuk sampel besar. Salah perhitungan ukuran
sampel. Tingkat putus sekolah tinggi dalam studi jangka panjang. |
Gunakan metode statistik untuk menentukan ukuran sampel yang tepat.
Pertimbangkan kemungkinan peserta keluar dari studi. |
Keterbatasan Biaya dan Waktu |
Biaya pengumpulan data tinggi. Keterlambatan dalam menjangkau
peserta. Membutuhkan alat atau tenaga ahli khusus. |
Gunakan metode hemat biaya seperti survei online. Otomatiskan
pengumpulan data. Optimalkan sumber daya. |
Dengan mengatasi tantangan ini, proses pengambilan sampel akan
menjadi lebih andal, efisien, dan representatif
terhadap populasi sasaran. Dengan menerapkan solusi yang tepat, peneliti
dapat mengurangi kesalahan dan meningkatkan kualitas keseluruhan studi
mereka.
Penerapan dalam
Industri
Pengambilan sampel memainkan peran penting di berbagai industri,
memungkinkan organisasi untuk mendapatkan wawasan, membuat keputusan
yang lebih baik, dan mengoptimalkan proses. Berikut adalah beberapa
bidang utama di mana teknik sampling sering digunakan:
Riset Pasar |
Melakukan survei dan diskusi kelompok. |
Memahami preferensi pelanggan, tren, dan perilaku mereka. |
Kesehatan |
Menganalisis data pasien dan uji klinis. |
Memperkirakan prevalensi penyakit, efektivitas pengobatan, dan tren
kesehatan masyarakat. |
Kontrol Kualitas |
Memeriksa sebagian produk dalam proses manufaktur. |
Memastikan kualitas produk dan kepatuhan terhadap standar
industri. |
Keuangan |
Menganalisis transaksi keuangan dan tren pasar. |
Menilai risiko, mendeteksi penipuan, dan membuat keputusan
investasi. |
Dengan menerapkan teknik pengambilan sampel yang tepat, industri
dapat memperoleh wawasan yang akurat dan andal sambil
meminimalkan kesalahan dan bias. Hal ini memastikan pengambilan
keputusan yang lebih baik, penghematan biaya, serta peningkatan
efisiensi operasional.
LS0tDQp0aXRsZTogIlRla25payBTYW1wbGluZyBkYW4gU3VydmVpIg0Kc3VidGl0bGU6ICJQcmluc2lwIFBlbmdhbWJpbGFuIFNhbXBlbCINCmF1dGhvcjogDQogIC0gIk5vdmEgU2l0b3J1cyA1MjI0MDAyMyINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQo8c3R5bGU+DQogIGJvZHkgew0KICAgIHRleHQtYWxpZ246IGp1c3RpZnk7DQogIH0NCjwvc3R5bGU+DQoNCjxpbWcgc3JjPSJOT1ZBLmpwZyIgYWx0PSJMb2dvIiBzdHlsZT0id2lkdGg6NTAwcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87Ii8+DQoNCiMgKipBcGEgaXR1IFBlbmdhbWJpbGFuIFNhbXBlbD8qKg0KDQpQZW5nYW1iaWxhbiBzYW1wZWwgYWRhbGFoIHByb3NlcyBwZW1pbGloYW4gc2ViYWdpYW4gaW5kaXZpZHUsIGl0ZW0sIGF0YXUgcGVuZ2FtYXRhbiBkYXJpIHBvcHVsYXNpIHlhbmcgbGViaWggYmVzYXIgdW50dWsgbWVtcGVya2lyYWthbiBrYXJha3RlcmlzdGlrIHNlbHVydWggcG9wdWxhc2kuIFBlbmdhbWJpbGFuIHNhbXBlbCBiYW55YWsgZGlndW5ha2FuIGRhbGFtIHBlbmVsaXRpYW4sIGJpc25pcywgZGFuIGtlYmlqYWthbiBwdWJsaWsgdW50dWsgbWVtYnVhdCBrZXB1dHVzYW4gYmVyZGFzYXJrYW4gZGF0YSBzZWNhcmEgZWZpc2llbi4NCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoaHRtbHRvb2xzKQ0KDQojIEJ1YXQgZWxlbWVuIEhUTUwgdW50dWsgbWVuYW1waWxrYW4gdmlkZW8NCnZpZGVvX2VtYmVkIDwtIHRhZ3MkaWZyYW1lKA0KICBzcmMgPSAiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvcWh6a0NlYmtTV0UiLA0KICB3aWR0aCA9ICI1NjAiLA0KICBoZWlnaHQgPSAiMzE1IiwNCiAgZnJhbWVib3JkZXIgPSAiMCIsDQogIGFsbG93ID0gImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiLA0KICBhbGxvd2Z1bGxzY3JlZW4gPSBOQQ0KKQ0KDQojIFNpbXBhbiBrZSBmaWxlIEhUTUwgYXRhdSB0YW1waWxrYW4gZGkgdmlld2VyIFJTdHVkaW8NCmJyb3dzYWJsZSh0YWdMaXN0KHZpZGVvX2VtYmVkKSkNCg0KYGBgDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojICoqUG9wdWxhc2kgdnMgU2FtcGVsKioNCg0KRGFsYW0gc3RhdGlzdGlrLCBtZW1haGFtaSBwZXJiZWRhYW4gYW50YXJhIHBvcHVsYXNpIGRhbiBzYW1wZWwgc2FuZ2F0IHBlbnRpbmcgdW50dWsgYW5hbGlzaXMgZGF0YSwgaW5mZXJlbnNpLCBkYW4gcGVuZ2FtYmlsYW4ga2VwdXR1c2FuLg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShodG1sdG9vbHMpDQoNCiMgQnVhdCBlbGVtZW4gSFRNTCB1bnR1ayBtZW5hbXBpbGthbiB2aWRlbw0KdmlkZW9fZW1iZWQgPC0gdGFncyRpZnJhbWUoDQogIHNyYyA9ICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9iSm0ycHQtbXEyYyIsDQogIHdpZHRoID0gIjU2MCIsDQogIGhlaWdodCA9ICIzMTUiLA0KICBmcmFtZWJvcmRlciA9ICIwIiwNCiAgYWxsb3cgPSAiYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIsDQogIGFsbG93ZnVsbHNjcmVlbiA9IE5BDQopDQoNCiMgU2ltcGFuIGtlIGZpbGUgSFRNTCBhdGF1IHRhbXBpbGthbiBkaSB2aWV3ZXIgUlN0dWRpbw0KYnJvd3NhYmxlKHRhZ0xpc3QodmlkZW9fZW1iZWQpKQ0KDQoNCg0KYGBgDQoNCiMjIFBvcHVsYXNpDQoNClBvcHVsYXNpIChOKSBhZGFsYWgga2VzZWx1cnVoYW4ga2Vsb21wb2sgaW5kaXZpZHUsIG9iamVrLCBhdGF1IHBlcmlzdGl3YSB5YW5nIGluZ2luIGRpdGVsaXRpIG9sZWggc2VvcmFuZyBwZW5lbGl0aS4gUG9wdWxhc2kgbWVuY2FrdXAgc2VtdWEga2VtdW5na2luYW4gcGVuZ2FtYXRhbiB5YW5nIHJlbGV2YW4gZGVuZ2FuIHBlbmVsaXRpYW4uDQoNCioqQ29udG9oOioqDQoNCi0gICDinIUgU2VtdWEgcGVuZHVkdWsgc3VhdHUga290YSBzYWF0IG1lbXBlbGFqYXJpIHBlcmlsYWt1IHBlbWlsaWguDQoNCi0gICDinIUgU2V0aWFwIHRlbGVwb24gcGludGFyIHlhbmcgZGlwcm9kdWtzaSBkYXJpIHBhYnJpayBzYWF0IG1lbmdhbmFsaXNpcyB0aW5na2F0IGtlcnVzYWthbi4NCg0KLSAgIOKchSBTZXRpYXAgbWFoYXNpc3dhIGRpIHVuaXZlcnNpdGFzIHNhYXQgbWVuZ3VrdXIgbmlsYWkgdWppYW4gcmF0YS1yYXRhLg0KDQoqKkplbmlzIFBvcHVsYXNpOioqDQoNCi0gICBbMV17c3R5bGU9ImNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOyBwYWRkaW5nOjRweCA4cHg7IGJvcmRlci1yYWRpdXM6NHB4OyJ9ICoqUG9wdWxhc2kgVGVyYmF0YXM6KiogUG9wdWxhc2kgZGVuZ2FuIGp1bWxhaCBlbGVtZW4geWFuZyB0ZXRhcCAobWlzYWxueWEsIGthcnlhd2FuIGRpIHN1YXR1IHBlcnVzYWhhYW4pLg0KDQotICAgWzJde3N0eWxlPSJjb2xvcjp3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsgcGFkZGluZzo0cHggOHB4OyBib3JkZXItcmFkaXVzOjRweDsifSAqKlBvcHVsYXNpIFRhayBUZXJiYXRhczoqKiBQb3B1bGFzaSBkZW5nYW4ganVtbGFoIGVsZW1lbiB5YW5nIHRpZGFrIGRhcGF0IGRpaGl0dW5nIChtaXNhbG55YSwgYmFrdGVyaSBkYWxhbSBjYXdhbiBwZXRyaSkuDQoNCi0gICBbM117c3R5bGU9ImNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOyBwYWRkaW5nOjRweCA4cHg7IGJvcmRlci1yYWRpdXM6NHB4OyJ9ICoqUG9wdWxhc2kgVGFyZ2V0OioqIFBvcHVsYXNpIHNwZXNpZmlrIHlhbmcgaW5naW4gZGlwZWxhamFyaSBvbGVoIHBlbmVsaXRpLg0KDQotICAgWzRde3N0eWxlPSJjb2xvcjp3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsgcGFkZGluZzo0cHggOHB4OyBib3JkZXItcmFkaXVzOjRweDsifSAqKlBvcHVsYXNpIHlhbmcgRGFwYXQgRGlha3NlczoqKiBCYWdpYW4gZGFyaSBwb3B1bGFzaSBzYXNhcmFuIHlhbmcgdGVyc2VkaWEgdW50dWsgcGVuZWxpdGlhbi4NCg0KIyMgU2FtcGVsDQoNClNhbXBlbCAobikgYWRhbGFoIGJhZ2lhbiBkYXJpIHBvcHVsYXNpIHlhbmcgZGlwaWxpaCB1bnR1ayBhbmFsaXNpcy4gS2FyZW5hIG1lbXBlbGFqYXJpIGtlc2VsdXJ1aGFuIHBvcHVsYXNpIHNlcmluZyBrYWxpIHRpZGFrIHByYWt0aXMgZGlrYXJlbmFrYW4gYmlheWEsIHdha3R1LCBhdGF1IGFrc2VzaWJpbGl0YXMsIGRhbiBzYW1wZWwganVnYSBkaWd1bmFrYW4gdW50dWsgbWVtYnVhdCBrZXNpbXB1bGFuIHRlbnRhbmcgcG9wdWxhc2kuDQoNCioqQ29udG9oOioqDQoNCi0gICDinIUgU3VydmVpIHRlcmhhZGFwIDEuMDAwIHBlbmR1ZHVrIGtvdGEgdW50dWsgbWVtcGVya2lyYWthbiBvcGluaSBwdWJsaWsuDQoNCi0gICDinIUgTWVtZXJpa3NhIDUwMCB0ZWxlcG9uIHBpbnRhciB5YW5nIGRpcGlsaWggc2VjYXJhIGFjYWsgdW50dWsgbWVuaWxhaSB0aW5na2F0IGtlcnVzYWthbi4NCg0KLSAgIOKchSBNZW5nYW5hbGlzaXMgbmlsYWkgdWppYW4gZGFyaSAyMDAgc2lzd2EgeWFuZyBkaXBpbGloIHNlY2FyYSBhY2FrLg0KDQoqKkNpcmktY2lyaSBTYW1wZWwgeWFuZyBCYWlrOioqDQoNCi0gICBbMV17c3R5bGU9ImNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOyBwYWRkaW5nOjRweCA4cHg7IGJvcmRlci1yYWRpdXM6NHB4OyJ9ICoqUmVwcmVzZW50YXRpZjoqKiBTZWNhcmEgYWt1cmF0IG1lbmNlcm1pbmthbiBwb3B1bGFzaS4NCg0KLSAgIFsyXXtzdHlsZT0iY29sb3I6d2hpdGU7IGJhY2tncm91bmQtY29sb3I6Z3JlZW47IHBhZGRpbmc6NHB4IDhweDsgYm9yZGVyLXJhZGl1czo0cHg7In0gKipBY2FrOioqIERpcGlsaWggdGFucGEgYmlhcy4NCg0KLSAgIFszXXtzdHlsZT0iY29sb3I6d2hpdGU7IGJhY2tncm91bmQtY29sb3I6Z3JlZW47IHBhZGRpbmc6NHB4IDhweDsgYm9yZGVyLXJhZGl1czo0cHg7In0gKipDdWt1cCBCZXNhcjoqKiBNZW1hc3Rpa2FuIGVzdGltYXNpIHlhbmcgZGFwYXQgZGlhbmRhbGthbi4NCg0KLSAgIFs0XXtzdHlsZT0iY29sb3I6d2hpdGU7IGJhY2tncm91bmQtY29sb3I6Z3JlZW47IHBhZGRpbmc6NHB4IDhweDsgYm9yZGVyLXJhZGl1czo0cHg7In0gKipCaWFzIE1pbmltYWw6KiogTWVuZ2hpbmRhcmkga2VzYWxhaGFuIHNpc3RlbWF0aXMuDQoNCiMjIFBlcmJlZGFhbiBVdGFtYQ0KDQpTYWF0IG1lbGFrdWthbiBwZW5lbGl0aWFuIGF0YXUgYW5hbGlzaXMgc3RhdGlzdGlrLCBwZW50aW5nIHVudHVrIG1lbWJlZGFrYW4gYW50YXJhIHBvcHVsYXNpIGRhbiBzYW1wZWwuIFBvcHVsYXNpIG1lbmdhY3UgcGFkYSBzZWx1cnVoIGtlbG9tcG9rIHlhbmcgbWVuamFkaSBwZXJoYXRpYW4gZGFsYW0gc2VidWFoIHBlbmVsaXRpYW4sIHNlZGFuZ2thbiBzYW1wZWwgYWRhbGFoIGJhZ2lhbiB5YW5nIGxlYmloIGtlY2lsIHlhbmcgZGlwaWxpaCBkYXJpIHBvcHVsYXNpIHRlcnNlYnV0IHVudHVrIGRpYW5hbGlzaXMuIE1lbWFoYW1pIHBlcmJlZGFhbm55YSBzYW5nYXQgcGVudGluZyB1bnR1ayBtZW1idWF0IGtlc2ltcHVsYW4geWFuZyBha3VyYXQgZGFuIG1lbWFzdGlrYW4gdmFsaWRpdGFzIGtlc2ltcHVsYW4uDQoNCkJlcmlrdXQgYWRhbGFoIHBlcmJlZGFhbiB1dGFtYSBhbnRhcmEgcG9wdWxhc2kgZGFuIHNhbXBlbDoNCg0KfCBGaXR1ciB8IFBvcHVsYXNpICgqTiopIHwgU2FtcGVsICgqbiopIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgKipEZWZpbmlzaSoqIHwgU2VsdXJ1aCBrZWxvbXBvayB5YW5nIGRpbWluYXRpIHwgU3Vic2V0IHlhbmcgZGlwaWxpaCB1bnR1ayBwZW5lbGl0aWFuIHwNCnwgKipVa3VyYW4qKiB8IEJlc2FyIGF0YXUgdGFrIHRlcmJhdGFzIHwgTGViaWgga2VjaWwsIGJhZ2lhbiB5YW5nIGRhcGF0IGRpa2Vsb2xhIHwNCnwgKipOb3Rhc2kqKiB8IE1lbmdndW5ha2FuIGh1cnVmIGthcGl0YWwgKG1pc2FsbnlhLCAqTiosICrOvCosICrPgyopIHwgTWVuZ2d1bmFrYW4gaHVydWYga2VjaWwgKG1pc2FsbnlhLCAqbiosICp4zIQqLCAqcyopIHwNCnwgKipQYXJhbWV0ZXIqKiB8IE5pbGFpIHNlYmVuYXJueWEgKG1pc2FsbnlhLCByYXRhLXJhdGEgcG9wdWxhc2kgKs68Kiwgc3RhbmRhciBkZXZpYXNpICrPgyopIHwgRXN0aW1hc2kgKG1pc2FsbnlhLCByYXRhLXJhdGEgc2FtcGVsICp4zIQqLCBzdGFuZGFyIGRldmlhc2kgKnMqKSB8DQp8ICoqQmlheWEgJiBXYWt0dSoqIHwgVGluZ2dpIHwgTGViaWggcmVuZGFoIHwNCnwgKipBa3VyYXNpKiogfCBNZW1iZXJpa2FuIGluZm9ybWFzaSB5YW5nIGFrdXJhdCB8IE1lbWJlcmlrYW4gZXN0aW1hc2kgZGVuZ2FuIG1hcmdpbiBrZXNhbGFoYW4gfA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyAqKk1lbmdhcGEgTWVuZ2d1bmFrYW4gU2FtcGVsPyoqDQoNCkRhbGFtIHBlbmVsaXRpYW4gZGFuIHBlbmd1bXB1bGFuIGRhdGEsIG1lbXBlbGFqYXJpIHNlbHVydWggcG9wdWxhc2kgc2VyaW5nIGthbGkgdGlkYWsgcHJha3RpcyBhdGF1IGJhaGthbiBtdXN0YWhpbC4gT2xlaCBrYXJlbmEgaXR1LCBwZW5lbGl0aSBtZW5nZ3VuYWthbiAqKnNhbXBlbCoqLCB5YWl0dSBiYWdpYW4ga2VjaWwgeWFuZyBkYXBhdCBkaWtlbG9sYSBkYXJpIHBvcHVsYXNpLiBCZXJpa3V0IGFkYWxhaCBhbGFzYW4gdXRhbWEgbWVuZ2FwYSBzYW1wZWwgZGlndW5ha2FuOg0KDQotICAgKipFZmVrdGl2aXRhcyBCaWF5YSoqXA0KICAgIE1lbmd1bXB1bGthbiBkYXRhIGRhcmkgc2VsdXJ1aCBwb3B1bGFzaSBtZW1idXR1aGthbiBzdW1iZXIgZGF5YSBrZXVhbmdhbiB5YW5nIGJlc2FyLiBTYW1wZWwgbWVtYmFudHUgbWVuZ3VyYW5naSBiaWF5YSB5YW5nIHRlcmthaXQgZGVuZ2FuIHBlbmd1bXB1bGFuLCBwZW1yb3Nlc2FuLCBkYW4gYW5hbGlzaXMgZGF0YS4NCg0KLSAgICoqRWZpc2llbnNpIFdha3R1KipcDQogICAgTWVtcGVsYWphcmkgc2VsdXJ1aCBwb3B1bGFzaSBtZW1ha2FuIGJhbnlhayB3YWt0dS4gU2FtcGVsIHlhbmcgZGlwaWxpaCBkZW5nYW4gYmFpayBtZW11bmdraW5rYW4gcGVuZ3VtcHVsYW4gZGFuIGFuYWxpc2lzIGRhdGEgeWFuZyBsZWJpaCBjZXBhdC4NCg0KLSAgICoqS2VsYXlha2FuKipcDQogICAgQmViZXJhcGEgcG9wdWxhc2kgdGVybGFsdSBiZXNhciBhdGF1IHN1bGl0IGRpYWtzZXMgdW50dWsgZGlwZWxhamFyaSBzZXBlbnVobnlhLiBTYW1wZWwgbWVtdW5na2lua2FuIHBlbmVsaXRpYW4gdGV0YXAgZGFwYXQgZGlsYWt1a2FuIGtldGlrYSBwZW5ndW1wdWxhbiBkYXRhIHNrYWxhIHBvcHVsYXNpIHRpZGFrIG1lbXVuZ2tpbmthbi4NCg0KLSAgICoqQWt1cmFzaSBkYW4gS2VhbmRhbGFuKipcDQogICAgSmlrYSBkaXBpbGloIGRlbmdhbiBiZW5hciwgc2FtcGVsIGRhcGF0IG1lbWJlcmlrYW4gd2F3YXNhbiB5YW5nIHNhbmdhdCBha3VyYXQgZGFuIGRhcGF0IGRpYW5kYWxrYW4uIFRla25payBzdGF0aXN0aWsgbWVtYXN0aWthbiBiYWh3YSBzYW1wZWwgZGFwYXQgbWV3YWtpbGkgc2VsdXJ1aCBwb3B1bGFzaSBzZWNhcmEgZWZla3RpZi4NCg0KLSAgICoqTWVuZ3VyYW5naSBLb21wbGVrc2l0YXMgTWFuYWplbWVuIERhdGEqKlwNCiAgICBNZW5nZWxvbGEganVtbGFoIGRhdGEgeWFuZyBzYW5nYXQgYmVzYXIgYmlzYSBtZW5qYWRpIHRhbnRhbmdhbi4gU2FtcGVsIG1lbnllZGVyaGFuYWthbiBwZW5nZWxvbGFhbiBkYXRhIHNhbWJpbCB0ZXRhcCBtZW1iZXJpa2FuIGtlc2ltcHVsYW4geWFuZyBiZXJtYWtuYS4NCg0KLSAgICoqUGVydGltYmFuZ2FuIEV0aWthKipcDQogICAgQmViZXJhcGEgcGVuZWxpdGlhbiAobWlzYWxueWEsIHVqaSBjb2JhIG1lZGlzKSBkYXBhdCBtZWxpYmF0a2FuIHJpc2lrbywgc2VoaW5nZ2EgdGlkYWsgZXRpcyB1bnR1ayBtZWxha3VrYW4gcGVuZ3VqaWFuIHBhZGEgc2VsdXJ1aCBwb3B1bGFzaS4gU2FtcGVsIG1lbXVuZ2tpbmthbiBla3NwZXJpbWVuIHlhbmcgbGViaWggdGVya29udHJvbCBkYW4gZXRpcy4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgKipNZW5naGluZGFyaSBCaWFzIFNhbXBlbCoqDQoNCkJpYXMgcGVuZ2FtYmlsYW4gc2FtcGVsIHRlcmphZGkga2V0aWthIGFuZ2dvdGEgcG9wdWxhc2kgdGVydGVudHUgc2VjYXJhIHNpc3RlbWF0aXMgZGlrZWN1YWxpa2FuIGF0YXUgdGVyd2FraWxpIHNlY2FyYSBiZXJsZWJpaGFuIGRhbGFtIHNhbXBlbC4NCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoaHRtbHRvb2xzKQ0KDQojIEJ1YXQgZWxlbWVuIEhUTUwgdW50dWsgbWVuYW1waWxrYW4gdmlkZW8NCnZpZGVvX2VtYmVkIDwtIHRhZ3MkaWZyYW1lKA0KICBzcmMgPSAiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvQk5JQ01yWXRQSlkiLA0KICB3aWR0aCA9ICI1NjAiLA0KICBoZWlnaHQgPSAiMzE1IiwNCiAgZnJhbWVib3JkZXIgPSAiMCIsDQogIGFsbG93ID0gImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiLA0KICBhbGxvd2Z1bGxzY3JlZW4gPSBOQQ0KKQ0KDQojIFNpbXBhbiBrZSBmaWxlIEhUTUwgYXRhdSB0YW1waWxrYW4gZGkgdmlld2VyIFJTdHVkaW8NCmJyb3dzYWJsZSh0YWdMaXN0KHZpZGVvX2VtYmVkKSkNCg0KYGBgDQoNCkluaSBtZW5nYXJhaCBwYWRhIGhhc2lsIHlhbmcgdGlkYWsgYWt1cmF0IGRhbiB0aWRhayByZXByZXNlbnRhdGlmLCB5YW5nIGJlcnBvdGVuc2kgbWVtYmVsb2trYW4ga2VzaW1wdWxhbiBkYW4gbWVuZ3VyYW5naSB2YWxpZGl0YXMgc2VidWFoIHN0dWRpLiBCZXJpa3V0IGJlYmVyYXBhIHBlbnllYmFiIGJpYXMgZGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsOg0KDQp8IEFzcGVrIHwgRGVza3JpcHNpIHwgQ2FyYSBNZW5nYXRhc2kgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAqKlVuZGVyY292ZXJhZ2UqKiB8IEJlYmVyYXBhIGtlbG9tcG9rIGRhbGFtIHBvcHVsYXNpIHRpZGFrIHRlcm1hc3VrIGRhbGFtIGtlcmFuZ2thIHNhbXBlbC4gfCBHdW5ha2FuICoqa2VyYW5na2Egc2FtcGVsIHlhbmcgcmVwcmVzZW50YXRpZioqIHVudHVrIG1lbWFzdGlrYW4gc2VtdWEga2Vsb21wb2sgdGVyY2FrdXAuIHwNCnwgKipPdmVycmVwcmVzZW50YXRpb24qKiB8IEtlbG9tcG9rIHRlcnRlbnR1IG1lbWlsaWtpIGtlbXVuZ2tpbmFuIHlhbmcgc2VjYXJhIHRpZGFrIHByb3BvcnNpb25hbCBsZWJpaCB0aW5nZ2kgdW50dWsgZGlwaWxpaC4gfCBHdW5ha2FuICoqc2FtcGxpbmcgYmVyc3RyYXRhKiogdW50dWsgbWVuamFnYSBwcm9wb3JzaSB5YW5nIHNlaW1iYW5nLiB8DQp8ICoqQmlhcyBQZW1pbGloYW4gRGlyaSoqIHwgUGVzZXJ0YSBzZWNhcmEgc3VrYXJlbGEgbWVtaWxpaCB1bnR1ayBpa3V0IHNlcnRhLCB5YW5nIG1lbmdhcmFoIHBhZGEgc2FtcGVsIHlhbmcgdGlkYWsgYWNhay4gfCBHdW5ha2FuICoqdW5kYW5nYW4gYWNhayoqIGRhbiBwZXJ0aW1iYW5na2FuICoqaW5zZW50aWYqKiB1bnR1ayBtZW5hcmlrIGtlbG9tcG9rIHJlc3BvbmRlbiB5YW5nIGxlYmloIGJlcmFnYW0uIHwNCg0KTWVtaW5pbWFsa2FuIGJpYXMgZGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsIHNhbmdhdCBwZW50aW5nIHVudHVrIG1lbmdoYXNpbGthbiB0ZW11YW4gcGVuZWxpdGlhbiB5YW5nIHZhbGlkLCBhbmRhbCwgZGFuIGRhcGF0IGRpZ2VuZXJhbGlzYXNpa2FuLiBEZW5nYW4gbWVtYXN0aWthbiBrZXJhbmdrYSBzYW1wZWwgeWFuZyBkaWJhbmd1biBkZW5nYW4gYmFpaywgbWVuZXJhcGthbiBtZXRvZGUgcGVtaWxpaGFuIGFjYWssIGRhbiBtZW5ndXJhbmdpIGVmZWsgcGVtaWxpaGFuIGRpcmksIHBlbmVsaXRpIGRhcGF0IG1lbmluZ2thdGthbiBrdWFsaXRhcyBkYW4gYWt1cmFzaSBzdHVkaSBtZXJla2EuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojICoqUmFuZG9tIGRhbGFtIFBlbmdhbWJpbGFuIFNhbXBlbCoqDQoNClJhbmRvbSBhZGFsYWggcHJvc2VzIHlhbmcgbWVtYXN0aWthbiBzZXRpYXAgYW5nZ290YSBwb3B1bGFzaSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloLiBIYWwgaW5pIG1lbmd1cmFuZ2kgYmlhcyBwZW5nYW1iaWxhbiBzYW1wZWwgZGFuIG1lbmluZ2thdGthbiBnZW5lcmFsaXNhc2kgdGVtdWFuIHBlbmVsaXRpYW4uDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGh0bWx0b29scykNCg0KIyBCdWF0IGVsZW1lbiBIVE1MIHVudHVrIG1lbmFtcGlsa2FuIHZpZGVvDQp2aWRlb19lbWJlZCA8LSB0YWdzJGlmcmFtZSgNCiAgc3JjID0gImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1UyNzJGRnhHOExFIiwNCiAgd2lkdGggPSAiNTYwIiwNCiAgaGVpZ2h0ID0gIjMxNSIsDQogIGZyYW1lYm9yZGVyID0gIjAiLA0KICBhbGxvdyA9ICJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiwNCiAgYWxsb3dmdWxsc2NyZWVuID0gTkENCikNCg0KIyBTaW1wYW4ga2UgZmlsZSBIVE1MIGF0YXUgdGFtcGlsa2FuIGRpIHZpZXdlciBSU3R1ZGlvDQpicm93c2FibGUodGFnTGlzdCh2aWRlb19lbWJlZCkpDQpgYGANCg0KIyMgUGVuZ2FtYmlsYW4gU2FtcGVsIEFjYWsgU2VkZXJoYW5hIChTaW1wbGUgUmFuZG9tIFNhbXBsaW5nKQ0KDQpNZXRvZGUgaW5pIG1lbWFzdGlrYW4gYmFod2Egc2V0aWFwIGFuZ2dvdGEgcG9wdWxhc2kgbWVtaWxpa2kgcGVsdWFuZyB5YW5nIHNhbWEgdW50dWsgZGlwaWxpaCwgc2VoaW5nZ2Egc2FtcGVsIGJlbmFyLWJlbmFyIGFjYWsuIEJlcmlrdXQgY2FyYSBrZXJqYW55YToNCg0KLSAgIOKchSBCZXJpa2FuIG5vbW9yIHVuaWsga2VwYWRhIHNldGlhcCBhbmdnb3RhIHBvcHVsYXNpLg0KLSAgIOKchSBHdW5ha2FuIGdlbmVyYXRvciBhbmdrYSBhY2FrIGF0YXUgc2lzdGVtIHVuZGlhbiB1bnR1ayBtZW1pbGloIHBlc2VydGEuDQoNCioqQ29udG9oOioqXA0KU2VidWFoIHBlcnVzYWhhYW4gaW5naW4gbWVuc3VydmVpIDUwMCBrYXJ5YXdhbiBkYXJpIHRvdGFsIDUuMDAwIGthcnlhd2FuLiBTZXRpYXAga2FyeWF3YW4gZGliZXJpIG5vbW9yLCBsYWx1IDUwMCBvcmFuZyBkaXBpbGloIHNlY2FyYSBhY2FrIG1lbmdndW5ha2FuIHNpc3RlbSB1bmRpYW4uDQoNCiMjIFBlbmdhbWJpbGFuIFNhbXBlbCBTaXN0ZW1hdGlzIChTeXN0ZW1hdGljIFNhbXBsaW5nKQ0KDQpNZXRvZGUgaW5pIG1lbWlsaWggZWxlbWVuIGRhcmkgZGFmdGFyIHlhbmcgdGVsYWggZGl1cnV0a2FuIGRlbmdhbiBzZWxhbmcgd2FrdHUgdGVydGVudHUuIEJlcmlrdXQgY2FyYSBrZXJqYW55YToNCg0KLSAgIOKchSBUZW50dWthbiB1a3VyYW4gc2FtcGVsIChtaXNhbG55YSwgbWVtaWxpaCAxMDAgb3JhbmcgZGFyaSBkYWZ0YXIgMS4wMDAgb3JhbmcpLg0KLSAgIOKchSBIaXR1bmcgaW50ZXJ2YWwgcGVtaWxpaGFuOiAqKlVrdXJhbiBQb3B1bGFzaSDDtyBVa3VyYW4gU2FtcGVsKiogKG1pc2FsbnlhLCAxLjAwMCDDtyAxMDAgPSAxMCkuDQotICAg4pyFIFBpbGloIHRpdGlrIGF3YWwgc2VjYXJhIGFjYWssIGxhbHUgcGlsaWggc2V0aWFwIG9yYW5nIGtlLTEwIGRhcmkgZGFmdGFyLg0KDQoqKkNvbnRvaDoqKlwNClNlb3JhbmcgcGVuZWxpdGkgaW5naW4gbWVuc3VydmVpIHNldGlhcCBwZWxhbmdnYW4ga2UtNSBkYXJpIGRhZnRhciAxLjAwMCBwZW1iZWxpLiBKaWthIHRpdGlrIGF3YWxueWEgYWRhbGFoIGFuZ2thIDMsIG1ha2Egb3JhbmcgeWFuZyBkaXBpbGloIGFkYWxhaCBwZW1iZWxpIGtlLTMsIGtlLTgsIGtlLTEzLCBkYW4gc2V0ZXJ1c255YS4NCg0KIyMgUGVuZ2FtYmlsYW4gU2FtcGVsIEJlcnN0cmF0YSAoU3RyYXRpZmllZCBTYW1wbGluZykNCg0KTWV0b2RlIGluaSBtZW1iYWdpIHBvcHVsYXNpIGtlIGRhbGFtICoqa2Vsb21wb2sta2Vsb21wb2sga2VjaWwgKHN0cmF0YSkqKiBiZXJkYXNhcmthbiBrYXJha3RlcmlzdGlrIHRlcnRlbnR1LCBsYWx1IG1lbWlsaWggcGVzZXJ0YSBzZWNhcmEgYWNhayBkYWxhbSBqdW1sYWggeWFuZyBzZWJhbmRpbmcgZGFyaSBzZXRpYXAga2Vsb21wb2suIEJlcmlrdXQgY2FyYSBrZXJqYW55YToNCg0KLSAgIOKchSBJZGVudGlmaWthc2kgKipzdHJhdGEqKiB5YW5nIHJlbGV2YW4gKG1pc2FsbnlhLCBrZWxvbXBvayB1c2lhLCB0aW5na2F0IHBlbmRhcGF0YW4sIHBlbmRpZGlrYW4pLg0KLSAgIOKchSBUZW50dWthbiAqKnByb3BvcnNpKiogbWFzaW5nLW1hc2luZyBrZWxvbXBvayBkYWxhbSBwb3B1bGFzaS4NCi0gICDinIUgTGFrdWthbiAqKnBlbmdhbWJpbGFuIHNhbXBlbCBhY2FrKiogZGFsYW0gc2V0aWFwIGtlbG9tcG9rLg0KDQoqKkNvbnRvaDoqKlwNClNlYnVhaCB1bml2ZXJzaXRhcyBpbmdpbiBtZW5zdXJ2ZWkgbWFoYXNpc3dhIGRhcmkgYmVyYmFnYWkgdGluZ2thdCBha2FkZW1pay4gSmlrYSA0MCUgbWFoYXNpc3dhIGFkYWxhaCB0YWh1biBwZXJ0YW1hLCAzMCUgdGFodW4ga2VkdWEsIDIwJSB0YWh1biBrZXRpZ2EsIGRhbiAxMCUgdGFodW4ga2VlbXBhdCwgbWFrYSBqdW1sYWggc2FtcGVsIGFrYW4gbWVuY2VybWlua2FuIHByb3BvcnNpIGluaS4NCg0KTWVuZ2d1bmFrYW4gbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCBhY2FrIHNlcGVydGkgKipTUlMgKFNpbXBsZSBSYW5kb20gU2FtcGxpbmcpLCBwZW5nYW1iaWxhbiBzYW1wZWwgc2lzdGVtYXRpcywgZGFuIHBlbmdhbWJpbGFuIHNhbXBlbCBiZXJzdHJhdGEqKiBtZW1iYW50dSBtZW1hc3Rpa2FuIGJhaHdhIHNhbXBlbCB5YW5nIGRpcGlsaWggKiphZGlsLCB0aWRhayBiaWFzLCBkYW4gcmVwcmVzZW50YXRpZioqIHRlcmhhZGFwIHBvcHVsYXNpLiBJbmkgbWVuaW5na2F0a2FuIGtlYW5kYWxhbiBkYW4gdmFsaWRpdGFzIGhhc2lsIHBlbmVsaXRpYW4sIHNlaGluZ2dhIGxlYmloIGJpc2EgZGlnZW5lcmFsaXNhc2kga2Ugc2VsdXJ1aCBwb3B1bGFzaS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgKipUYW50YW5nYW4gZGFsYW0gUGVuZ2FtYmlsYW4gU2FtcGVsKioNCg0KUGVuZ2FtYmlsYW4gc2FtcGVsIGFkYWxhaCBwcm9zZXMgcGVudGluZyBkYWxhbSBwZW5lbGl0aWFuLCB0ZXRhcGkgbWVtaWxpa2kgYmViZXJhcGEgdGFudGFuZ2FuIHlhbmcgZGFwYXQgbWVtZW5nYXJ1aGkgYWt1cmFzaSBkYW4ga2VhbmRhbGFuIGhhc2lsLiBCZXJpa3V0IGFkYWxhaCByaW5na2FzYW4gdGFudGFuZ2FuIHV0YW1hIGRhbGFtIHBlbmdhbWJpbGFuIHNhbXBlbCwgYmVzZXJ0YSBwZW55ZWJhYiBkYW4gc29sdXNpbnlhLg0KDQp8ICoqVGFudGFuZ2FuKiogfCAqKlBlbnllYmFiKiogfCAqKlNvbGlzaSoqIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgKipCaWFzIE5vbi1SZXNwb25zKiogfCBQZXNlcnRhIGVuZ2dhbiBhdGF1IHRpZGFrIGRhcGF0IG1lcmVzcG9ucy4gU3VydmVpIHRlcmxhbHUgcGFuamFuZyBhdGF1IHJ1bWl0LiBLZWxvbXBvayB0ZXJ0ZW50dSBrdXJhbmcgbXVuZ2tpbiBiZXJwYXJ0aXNpcGFzaS4gfCBLaXJpbSBwZW5naW5nYXQgdGluZGFrIGxhbmp1dC4gVGF3YXJrYW4gaW5zZW50aWYuIFBlcm11ZGFoIGZvcm1hdCBzdXJ2ZWkuIHwNCnwgKipLZXNhbGFoYW4gZGFsYW0gS2VyYW5na2EgU2FtcGVsKiogfCBEYWZ0YXIgcGVzZXJ0YSB1c2FuZyBhdGF1IHRpZGFrIGxlbmdrYXAuIEtsYXNpZmlrYXNpIHNhbGFoLiBBZGFueWEgZHVwbGlrYXNpIGF0YXUgcGVzZXJ0YSB5YW5nIHRpZGFrIG1lbWVudWhpIHN5YXJhdC4gfCBQZXJiYXJ1aSBrZXJhbmdrYSBzYW1wZWwgc2VjYXJhIGJlcmthbGEuIFBlcmlrc2EgdWxhbmcgc3VtYmVyIGRhdGEuIEd1bmFrYW4gbWV0b2RlICoqc3RyYXRpZmllZCBzYW1wbGluZyoqLiB8DQp8ICoqVWt1cmFuIFNhbXBlbCBUaWRhayBNZW1hZGFpKiogfCBTdW1iZXIgZGF5YSB0ZXJiYXRhcyB1bnR1ayBzYW1wZWwgYmVzYXIuIFNhbGFoIHBlcmhpdHVuZ2FuIHVrdXJhbiBzYW1wZWwuIFRpbmdrYXQgcHV0dXMgc2Vrb2xhaCB0aW5nZ2kgZGFsYW0gc3R1ZGkgamFuZ2thIHBhbmphbmcuIHwgR3VuYWthbiBtZXRvZGUgc3RhdGlzdGlrIHVudHVrIG1lbmVudHVrYW4gdWt1cmFuIHNhbXBlbCB5YW5nIHRlcGF0LiBQZXJ0aW1iYW5na2FuIGtlbXVuZ2tpbmFuIHBlc2VydGEga2VsdWFyIGRhcmkgc3R1ZGkuIHwNCnwgKipLZXRlcmJhdGFzYW4gQmlheWEgZGFuIFdha3R1KiogfCBCaWF5YSBwZW5ndW1wdWxhbiBkYXRhIHRpbmdnaS4gS2V0ZXJsYW1iYXRhbiBkYWxhbSBtZW5qYW5na2F1IHBlc2VydGEuIE1lbWJ1dHVoa2FuIGFsYXQgYXRhdSB0ZW5hZ2EgYWhsaSBraHVzdXMuIHwgR3VuYWthbiBtZXRvZGUgaGVtYXQgYmlheWEgc2VwZXJ0aSBzdXJ2ZWkgb25saW5lLiBPdG9tYXRpc2thbiBwZW5ndW1wdWxhbiBkYXRhLiBPcHRpbWFsa2FuIHN1bWJlciBkYXlhLiB8DQoNCkRlbmdhbiBtZW5nYXRhc2kgdGFudGFuZ2FuIGluaSwgcHJvc2VzIHBlbmdhbWJpbGFuIHNhbXBlbCBha2FuIG1lbmphZGkgbGViaWggKiphbmRhbCwgZWZpc2llbiwgZGFuIHJlcHJlc2VudGF0aWYqKiB0ZXJoYWRhcCBwb3B1bGFzaSBzYXNhcmFuLiBEZW5nYW4gbWVuZXJhcGthbiBzb2x1c2kgeWFuZyB0ZXBhdCwgcGVuZWxpdGkgZGFwYXQgbWVuZ3VyYW5naSBrZXNhbGFoYW4gZGFuIG1lbmluZ2thdGthbiBrdWFsaXRhcyBrZXNlbHVydWhhbiBzdHVkaSBtZXJla2EuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojICoqUGVuZXJhcGFuIGRhbGFtIEluZHVzdHJpKioNCg0KUGVuZ2FtYmlsYW4gc2FtcGVsIG1lbWFpbmthbiBwZXJhbiBwZW50aW5nIGRpIGJlcmJhZ2FpIGluZHVzdHJpLCBtZW11bmdraW5rYW4gb3JnYW5pc2FzaSB1bnR1ayBtZW5kYXBhdGthbiB3YXdhc2FuLCBtZW1idWF0IGtlcHV0dXNhbiB5YW5nIGxlYmloIGJhaWssIGRhbiBtZW5nb3B0aW1hbGthbiBwcm9zZXMuIEJlcmlrdXQgYWRhbGFoIGJlYmVyYXBhIGJpZGFuZyB1dGFtYSBkaSBtYW5hIHRla25payBzYW1wbGluZyBzZXJpbmcgZGlndW5ha2FuOg0KDQp8ICoqSW5kdXN0cmkqKiB8ICoqQXBsaWthc2kqKiB8ICoqVHVqdWFuKiogfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAqKlJpc2V0IFBhc2FyKiogfCBNZWxha3VrYW4gc3VydmVpIGRhbiBkaXNrdXNpIGtlbG9tcG9rLiB8IE1lbWFoYW1pIHByZWZlcmVuc2kgcGVsYW5nZ2FuLCB0cmVuLCBkYW4gcGVyaWxha3UgbWVyZWthLiB8DQp8ICoqS2VzZWhhdGFuKiogfCBNZW5nYW5hbGlzaXMgZGF0YSBwYXNpZW4gZGFuIHVqaSBrbGluaXMuIHwgTWVtcGVya2lyYWthbiBwcmV2YWxlbnNpIHBlbnlha2l0LCBlZmVrdGl2aXRhcyBwZW5nb2JhdGFuLCBkYW4gdHJlbiBrZXNlaGF0YW4gbWFzeWFyYWthdC4gfA0KfCAqKktvbnRyb2wgS3VhbGl0YXMqKiB8IE1lbWVyaWtzYSBzZWJhZ2lhbiBwcm9kdWsgZGFsYW0gcHJvc2VzIG1hbnVmYWt0dXIuIHwgTWVtYXN0aWthbiBrdWFsaXRhcyBwcm9kdWsgZGFuIGtlcGF0dWhhbiB0ZXJoYWRhcCBzdGFuZGFyIGluZHVzdHJpLiB8DQp8ICoqS2V1YW5nYW4qKiB8IE1lbmdhbmFsaXNpcyB0cmFuc2Frc2kga2V1YW5nYW4gZGFuIHRyZW4gcGFzYXIuIHwgTWVuaWxhaSByaXNpa28sIG1lbmRldGVrc2kgcGVuaXB1YW4sIGRhbiBtZW1idWF0IGtlcHV0dXNhbiBpbnZlc3Rhc2kuIHwNCg0KRGVuZ2FuIG1lbmVyYXBrYW4gdGVrbmlrIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIHRlcGF0LCBpbmR1c3RyaSBkYXBhdCBtZW1wZXJvbGVoICoqd2F3YXNhbiB5YW5nIGFrdXJhdCBkYW4gYW5kYWwqKiBzYW1iaWwgbWVtaW5pbWFsa2FuIGtlc2FsYWhhbiBkYW4gYmlhcy4gSGFsIGluaSBtZW1hc3Rpa2FuIHBlbmdhbWJpbGFuIGtlcHV0dXNhbiB5YW5nIGxlYmloIGJhaWssIHBlbmdoZW1hdGFuIGJpYXlhLCBzZXJ0YSBwZW5pbmdrYXRhbiBlZmlzaWVuc2kgb3BlcmFzaW9uYWwuDQo=