SAMPLING & SURVEY TECHNIQUES

Margin Of Error

STUDI KASUS: PENANGANAN MARGIN KESALAHAN (MoE) DALAM METODE PENGAMBILAN SAMPEL

1. Latar Belakang

Universitas ingin memperkirakan rata-rata pengeluaran makanan bulanan mahasiswanya. Metode pengambilan sampel yang digunakan dapat mempengaruhi akurasi estimasi. Studi ini membandingkan:

  1. Simple Random Sampling (SRS)
  2. Convenience Sampling

Untuk menilai efektivitas, kita akan menghitung dan membandingkan Margin of Error (MoE).

2. Rumusan Masalah

  • Membandingkan akurasi SRS vs. Convenience Sampling.
  • Bagaimana perbandingan Margin of Error (MoE)?
  • Apakah ada perbedaan signifikan dalam distribusi pengeluaran?

3. Membaca Dataset

## tibble [500 × 6] (S3: tbl_df/tbl/data.frame)
##  $ ID Mahasiswa                    : chr [1:500] "ID0001" "ID0002" "ID0003" "ID0004" ...
##  $ Jenis Kelamin                   : chr [1:500] "Laki-laki" "Laki-laki" "Perempuan" "Laki-laki" ...
##  $ Usia                            : num [1:500] 24 24 23 23 18 20 22 25 23 24 ...
##  $ Fakultas                        : chr [1:500] "Sastra" "Sastra" "Hukum" "Hukum" ...
##  $ Metode Sampling                 : chr [1:500] "SRS" "SRS" "Convenience Sampling" "SRS" ...
##  $ Pengeluaran Makanan Bulanan (Rp): num [1:500] 1544614 663756 1790538 1254256 1041697 ...
##  ID Mahasiswa       Jenis Kelamin           Usia         Fakultas        
##  Length:500         Length:500         Min.   :18.00   Length:500        
##  Class :character   Class :character   1st Qu.:20.00   Class :character  
##  Mode  :character   Mode  :character   Median :21.00   Mode  :character  
##                                        Mean   :21.45                     
##                                        3rd Qu.:23.00                     
##                                        Max.   :25.00                     
##  Metode Sampling    Pengeluaran Makanan Bulanan (Rp)
##  Length:500         Min.   : 501884                 
##  Class :character   1st Qu.: 915705                 
##  Mode  :character   Median :1273184                 
##                     Mean   :1278514                 
##                     3rd Qu.:1639198                 
##                     Max.   :1997212

Dataset yang digunakan berisi informasi tentang pengeluaran makanan bulanan mahasiswa, metode pengambilan sampel, dan karakteristik lainnya. Untuk metode Simple Random Sampling (SRS) dan Convenience Sampling, kita menggunakan data yang telah difilter sesuai metode tersebut.

📥 Unduh Dataset di sini

3.1 Struktur Data

Dataset terdiri dari 500 baris dan 6 kolom. Berikut adalah deskripsi variabel:

Variabel Tipe Data Deskripsi
ID Mahasiswa Character Identifikasi unik untuk setiap mahasiswa.
Jenis Kelamin Character Kategori jenis kelamin mahasiswa (“Laki-laki” atau “Perempuan”).
Usia Numeric Usia mahasiswa dalam tahun (rentang: 18-25 tahun).
Fakultas Character Fakultas tempat mahasiswa terdaftar (contoh: Sastra, Hukum, Ekonomi, dll.).
Metode Sampling Character Metode pengambilan sampel: SRS (Simple Random Sampling) atau Convenience Sampling.
Pengeluaran Makanan Bulanan (Rp) Numeric Jumlah uang yang dikeluarkan mahasiswa untuk makanan per bulan (dalam Rupiah).

3.2 Ringkasan Data

3.2.1 Data

Berikut adalah data dari dataset:

ID Mahasiswa Jenis Kelamin Usia Fakultas Metode Sampling
ID0001 Laki-laki 24 Sastra SRS
ID0002 Laki-laki 24 Sastra SRS
ID0003 Perempuan 23 Hukum Convenience Sampling
ID0004 Laki-laki 23 Hukum SRS
ID0005 Perempuan 18 Ekonomi Convenience Sampling
ID0006 Perempuan 20 Ekonomi SRS

Mahasiswa berasal dari berbagai fakultas dan menggunakan metode sampling yang berbeda. Usia mahasiswa dalam contoh ini berkisar antara 18 hingga 24 tahun.

3.2.2 Statistik Deskriptif

  1. Usia Mahasiswa:
    • Minimal: 18 tahun
    • Maksimal: 25 tahun
    • Kuartil 1 (Q1): 20 tahun
    • Median: 21 tahun
    • Mean (Rata-rata): 21.45 tahun
    • Kuartil 3 (Q3): 23 tahun
    • Kesimpulan: Mayoritas mahasiswa berusia sekitar 21-23 tahun.
  2. Pengeluaran Makanan Bulanan (Rp):
    • Minimal: Rp 501.884
    • Kuartil 1 (Q1): Rp 915.705
    • Median: Rp 1.273.184
    • Mean (Rata-rata): Rp 1.278.514
    • Kuartil 3 (Q3): Rp 1.639.198
    • Maksimal: Rp 1.997.212
    • Kesimpulan: Sebagian besar mahasiswa menghabiskan sekitar Rp 1.273.184 per bulan untuk makanan. Sebaran pengeluaran relatif simetris.

3.3 Kesimpulan

  • Usia mahasiswa berkisar antara 18-25 tahun, dengan rata-rata 21.45 tahun.
  • Pengeluaran makanan bulanan mahasiswa rata-rata adalah Rp 1.278.514, dengan rentang antara Rp 501.884 hingga Rp 1.997.212.
  • Metode pengambilan sampel yang digunakan terdiri dari SRS dan Convenience Sampling.
  • Fakultas mahasiswa tersebar di berbagai bidang, seperti Sastra, Hukum, dan Ekonomi.

4. Menentukan Metode Margin of Error untuk Studi Kasus

Metode Margin of Error (MoE) dihitung menggunakan rumus:

\[ MoE = Z * SE \]

Di mana:

  • Z adalah nilai kritis yang sesuai dengan tingkat kepercayaan
  • SE adalah standar error, yaitu standar deviasi dibagi akar ukuran sampel

Dalam penelitian ini, kita akan menghitung Margin of Error (MoE) menggunakan dua metode pengambilan sampel yang berbeda:

  1. Simple Random Sampling (SRS) - Probabilitas
  2. Convenience Sampling - Non-Probabilitas

4.1 Alasan Menggunakan Simple Random Sampling (SRS)

Simple Random Sampling (SRS) dipilih sebagai metode probabilitas dalam penelitian ini karena:

  • Setiap individu dalam populasi memiliki peluang yang sama untuk terpilih, sehingga mengurangi bias seleksi.
  • Memastikan distribusi sampel yang lebih representatif, sehingga hasil penelitian dapat digeneralisasi ke populasi yang lebih luas.
  • Dapat digunakan untuk menghitung Margin of Error (MoE) dengan tepat, karena data yang diperoleh lebih mendekati distribusi normal.
  • Sederhana dan efektif dibandingkan metode probabilitas lainnya, seperti Stratified Sampling atau Cluster Sampling, yang membutuhkan segmentasi awal.

Perbandingan dengan Metode Probabilitas Lainnya

Metode Kelebihan Kekurangan
Simple Random Sampling (SRS) Tidak bias, sederhana, dan representatif Perlu daftar populasi, bisa sulit diterapkan untuk populasi besar
Stratified Sampling Akurasi tinggi jika ada perbedaan antar kelompok Perlu data awal untuk pengelompokan yang akurat
Cluster Sampling Hemat biaya dan waktu untuk populasi besar Bisa memiliki variabilitas tinggi jika klaster tidak homogen
Systematic Sampling Mudah diterapkan dan terstruktur Bisa menghasilkan bias jika ada pola dalam populasi

Kesimpulan: SRS dipilih karena sederhana, akurasi tinggi, dan bisa digeneralisasi ke populasi, sementara metode lain seperti Stratified atau Cluster Sampling lebih cocok jika ada informasi demografi yang perlu dipertimbangkan.

4.2 Alasan Menggunakan Convenience Sampling

Convenience Sampling dipilih sebagai metode non-probabilitas dalam penelitian ini karena:

  • Mudah dan cepat dilakukan, karena sampel dipilih berdasarkan aksesibilitas tanpa proses acak.
  • Tidak memerlukan daftar populasi, sehingga cocok untuk penelitian dengan keterbatasan waktu dan sumber daya.
  • Sering digunakan dalam survei awal (preliminary research) untuk mendapatkan gambaran kasar sebelum melakukan penelitian lebih besar.
  • Cocok untuk situasi di mana tidak memungkinkan mendapatkan akses ke seluruh populasi (misalnya, hanya bisa mewawancarai mahasiswa di kantin atau perpustakaan).

Perbandingan dengan Metode Non-Probabilitas Lainnya

Metode Kelebihan Kekurangan
Convenience Sampling Mudah, cepat, dan murah Bias tinggi, hasil tidak bisa digeneralisasi
Quota Sampling Menargetkan proporsi tertentu dalam populasi Memerlukan data awal yang akurat
Judgmental Sampling Dipilih berdasarkan keahlian peneliti Sangat subjektif, bisa menghasilkan bias
Snowball Sampling Berguna untuk populasi sulit dijangkau Tidak acak, bias tinggi, tidak bisa direplikasi

Kesimpulan: Convenience Sampling dipilih karena praktis dan mudah diterapkan, meskipun memiliki keterbatasan dalam akurasi dan representasi populasi.

4.3 Kesimpulan dan Justifikasi Pemilihan Metode

Aspek Simple Random Sampling (SRS) Convenience Sampling Alternatif Lain
Jenis Sampling Probabilitas Non-Probabilitas Probabilitas & Non-Probabilitas
Kesempatan Dipilih Sama untuk semua individu Berdasarkan kemudahan akses Berdasarkan kriteria tertentu
Kemudahan Pelaksanaan Perlu daftar populasi dan pemilihan acak Cepat dan mudah dilakukan Bisa lebih kompleks
Biaya Lebih mahal Lebih murah Bervariasi
Bias Rendah Tinggi Sedang - Tinggi
Dapat Digeneralisasi Ya, hasil mewakili populasi Tidak, hanya berlaku untuk sampel tersebut Tergantung metode
Perhitungan MoE Akurat Kurang akurat Bervariasi

Kesimpulan:
- SRS lebih cocok untuk studi akademik atau penelitian yang membutuhkan hasil yang akurat dan dapat digeneralisasi.
- Convenience Sampling lebih cocok untuk penelitian eksplorasi atau studi dengan keterbatasan sumber daya.
- Dengan membandingkan Margin of Error (MoE) dari kedua metode ini, kita dapat mengukur perbedaan akurasi antara sampling probabilitas dan non-probabilitas.

5. Menghitung Margin Of Error

5.1 Menghitung Standar Deviasi

Standar deviasi dihitung menggunakan rumus:

\[ s = \sqrt{\frac{\sum (x\_i - \bar{x})^2}{n-1}} \]

Di mana:

  • \(x_i\) = nilai individu dalam sampel
  • \(\bar{x}\) = rata-rata sampel
  • \(n\) = ukuran sampel
  • \(s\) = standar deviasi sampel

Dari dataset yang diberikan, perhitungan menghasilkan:

  • Rata-rata pengeluaran makanan bulanan: Rp 1.278.514
  • Varians sampel: Rp 178.590.686.775
  • Standar deviasi sampel untuk SRS: Rp 421.206
  • Standar deviasi sampel untuk Convenience Sampling: Rp 425.090

Standar deviasi ini digunakan dalam perhitungan Standar Error (SE) dan Margin of Error (MoE).

5.2 Rumus Perhitungan

Margin of Error (MoE) dihitung menggunakan rumus:

\[ MoE = Z * SE \]

Standar Error (SE) dihitung dengan rumus:

\[ SE = \frac{\sigma}{\sqrt{n}} \]

Di mana:

  • Z = Skor Z sesuai dengan tingkat kepercayaan (misalnya, 1.96 untuk 95%)
  • σ = Simpangan baku populasi atau sampel
  • n = Ukuran sampel

5.3 Menentukan Tingkat Kepercayaan

Tingkat kepercayaan yang kita gunakan di sini adalah 95%. Ini berarti kita yakin bahwa 95% dari sampel yang kita ambil akan mencerminkan rata-rata populasi dengan benar.

5.4 Menentukan Nilai Kritis (Z-Value)

Karena tingkat kepercayaan adalah 95%, nilai kritis (Z) yang sesuai adalah 1.96. Nilai ini diambil dari tabel distribusi normal (tabel Z) dan menunjukkan jarak dari rata-rata dalam satuan standar deviasi.

5.5 Menghitung Standar Error (SE)

5.5.1 Metode Simple Random Sampling (SRS)

  • Standar deviasi sampel (σ): Rp 421.206
  • Ukuran sampel (n): 277

Menghitung SE:

\[ SE = \frac{421.206}{\sqrt{277}} = Rp 25.308 \]

Jadi, standar error untuk metode SRS adalah Rp 25.308.

5.5.2 Metode Convenience Sampling

  • Standar deviasi sampel (σ): Rp 510.789
  • Ukuran sampel (n): 223

Menghitung SE:

\[ SE = \frac{510.789}{\sqrt{223}} = Rp 34.242 \]

Jadi, standar error untuk metode Convenience Sampling adalah Rp 34.242.

5.6 Menghitung Margin of Error (MoE)

5.6.1 Metode Simple Random Sampling (SRS)

\[ MoE = 1.96 * 25.308 = Rp 49.602 \]

Jadi, Margin of Error untuk metode SRS adalah Rp 49.602.

5.6.2 Metode Convenience Sampling

\[ MoE = 1.96 * 34.242 = Rp 67.114 \]

Jadi, Margin of Error untuk metode Convenience Sampling adalah Rp 67.114.

5.7 Menentukan Interval Kepercayaan

5.7.1 Metode Simple Random Sampling (SRS)

  • Rata-rata sampel: Rp 1.285.987

\[ CI = \bar{x} \pm (Z * SE) \] Metode Simple Random Sampling (SRS)

  • Rata-rata sampel (𝑥̄): Rp 1.285.987

  • Standar Error (SE): Rp 25.308

  • Z-score untuk 95% confidence level: 1.96

  • Margin of Error (MoE):
    \[ 1.96 \times 25.308 = 49.602 \]

\[ Batas Bawah = 1.285.987 - 49.602 = Rp 1.236.385 Batas Atas = 1.285.987 + 49.602 = Rp 1.335.590 \]

Interval kepercayaan untuk metode SRS: Rp 1.236.385 sampai Rp 1.335.590.

5.7.2 Metode Convenience Sampling

  • Rata-rata sampel: Rp 1.310.450

\[ CI = \bar{x} \pm (Z * SE) \]

Metode Convenience Sampling

  • Rata-rata sampel (𝑥̄): Rp 1.310.450

  • Standar Error (SE): Rp 34.265

  • Z-score untuk 95% confidence level: 1.96

  • Margin of Error (MoE):
    \[ 1.96 \times 34.265 = 67.114 \]

\[ Batas Bawah = 1.310.450 - 67.114 = Rp 1.243.336 Batas Atas = 1.310.450 + 67.114 = Rp 1.377.564 \]

Interval kepercayaan untuk metode Convenience Sampling: Rp 1.243.336 sampai Rp 1.377.564.

6. Kesimpulan

Perhitungan Margin of Error ini menunjukkan bahwa metode Simple Random Sampling (SRS) menghasilkan Margin of Error yang lebih kecil (Rp 49.602) dibandingkan metode Convenience Sampling (Rp 67.114). Ini berarti metode SRS memberikan estimasi rata-rata pengeluaran makanan bulanan mahasiswa yang lebih akurat. Dengan demikian, dalam studi yang memerlukan tingkat akurasi tinggi, metode SRS lebih disarankan.

Menjawab rumusan masalah:

  • Membandingkan akurasi SRS vs. Convenience Sampling: SRS lebih akurat karena menghasilkan Margin of Error yang lebih kecil dan interval kepercayaan yang lebih sempit.
  • Bagaimana perbandingan Margin of Error (MoE)? Margin of Error metode SRS adalah Rp 49.602, sedangkan metode Convenience Sampling adalah Rp 67.114.
  • Apakah ada perbedaan signifikan dalam distribusi pengeluaran? Ya, metode Convenience Sampling menunjukkan lebih banyak variasi dan outlier, sehingga distribusinya kurang stabil dibandingkan SRS.
  • Rata-rata pengeluaran lebih tinggi pada SRS.
  • MoE lebih kecil pada SRS, hasil estimasi lebih akurat.
  • Convenience Sampling memiliki lebih banyak outlier.
  • SRS metode yang lebih baik.

7. Rekomendasi Lanjutan

  • Lakukan uji statistik (t-test).
  • Analisis faktor lain (jenis kelamin, fakultas).
  • Lakukan regresi.
LS0tICANCnRpdGxlOiAiU0FNUExJTkcgJiBTVVJWRVkgVEVDSE5JUVVFUyIgIA0Kc3VidGl0bGU6ICJNYXJnaW4gT2YgRXJyb3IiICANCmF1dGhvcjogIkRhZGFuIFJhbWRhbiBIaWRheWF0ICg1MjI0MDAyOCkiICANCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCIgIA0Kb3V0cHV0OiAgDQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgIA0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlICANCiAgICB0aHVtYm5haWxzOiB0cnVlICANCiAgICBsaWdodGJveDogdHJ1ZSAgDQogICAgZ2FsbGVyeTogdHJ1ZSAgDQogICAgbGliX2RpcjogbGlicyAgDQogICAgZGZfcHJpbnQ6ICJwYWdlZCIgIA0KICAgIGNvZGVfZm9sZGluZzogInNob3ciICANCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlICANCiAgICBjc3M6ICJzdHlsZS5jc3MiICANCi0tLSAgDQoNCjxpbWcgc3JjPSJGT1RPIFRFUkJBUlVfMTF6b24uanBnIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iIj4NCg0KDQojIFNUVURJIEtBU1VTOiBQRU5BTkdBTkFOIE1BUkdJTiBLRVNBTEFIQU4gKE1vRSkgREFMQU0gTUVUT0RFIFBFTkdBTUJJTEFOIFNBTVBFTCAgDQoNCiMjIDEuIExhdGFyIEJlbGFrYW5nDQoNClVuaXZlcnNpdGFzIGluZ2luIG1lbXBlcmtpcmFrYW4gcmF0YS1yYXRhIHBlbmdlbHVhcmFuIG1ha2FuYW4gYnVsYW5hbiBtYWhhc2lzd2FueWEuIE1ldG9kZSBwZW5nYW1iaWxhbiBzYW1wZWwgeWFuZyBkaWd1bmFrYW4gZGFwYXQgbWVtcGVuZ2FydWhpIGFrdXJhc2kgZXN0aW1hc2kuIFN0dWRpIGluaSBtZW1iYW5kaW5na2FuOiAgDQoNCjEuICBTaW1wbGUgUmFuZG9tIFNhbXBsaW5nIChTUlMpICANCjIuICBDb252ZW5pZW5jZSBTYW1wbGluZyAgDQoNClVudHVrIG1lbmlsYWkgZWZla3Rpdml0YXMsIGtpdGEgYWthbiBtZW5naGl0dW5nIGRhbiBtZW1iYW5kaW5na2FuIE1hcmdpbiBvZiBFcnJvciAoTW9FKS4gIA0KDQojIyAyLiBSdW11c2FuIE1hc2FsYWggIA0KDQoqICAgTWVtYmFuZGluZ2thbiBha3VyYXNpIFNSUyB2cy4gQ29udmVuaWVuY2UgU2FtcGxpbmcuICANCiogICBCYWdhaW1hbmEgcGVyYmFuZGluZ2FuIE1hcmdpbiBvZiBFcnJvciAoTW9FKT8gIA0KKiAgIEFwYWthaCBhZGEgcGVyYmVkYWFuIHNpZ25pZmlrYW4gZGFsYW0gZGlzdHJpYnVzaSBwZW5nZWx1YXJhbj8gIA0KDQojIyAzLiBNZW1iYWNhIERhdGFzZXQgIA0KYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojIExvYWQgbGlicmFyeSB1bnR1ayBtZW1iYWNhIGZpbGUgRXhjZWwNCmxpYnJhcnkocmVhZHhsKSAgDQoNCiMgTWVtYmFjYSBmaWxlIGRhdGFzZXQgeWFuZyBiZXJuYW1hICJzYW1wbGVfc3VydmV5X2RhdGEueGxzeCINCmRhdGEgPC0gcmVhZF9leGNlbCgic2FtcGxlX3N1cnZleV9kYXRhLnhsc3giKSAgDQoNCiMgTWVuYW1waWxrYW4gNiBiYXJpcyBwZXJ0YW1hIGRhcmkgZGF0YXNldA0KaGVhZChkYXRhKSAgDQoNCiMgTWVuYW1waWxrYW4gc3RydWt0dXIgZGF0YXNldCAoamVuaXMgdmFyaWFiZWwsIGp1bWxhaCBrb2xvbSwgZGxsLikNCnN0cihkYXRhKSAgDQoNCiMgTWVuYW1waWxrYW4gcmluZ2thc2FuIHN0YXRpc3RpayBkYXJpIGRhdGFzZXQNCnN1bW1hcnkoZGF0YSkgIA0KYGBgDQpEYXRhc2V0IHlhbmcgZGlndW5ha2FuIGJlcmlzaSBpbmZvcm1hc2kgdGVudGFuZyBwZW5nZWx1YXJhbiBtYWthbmFuIGJ1bGFuYW4gbWFoYXNpc3dhLCBtZXRvZGUgcGVuZ2FtYmlsYW4gc2FtcGVsLCBkYW4ga2FyYWt0ZXJpc3RpayBsYWlubnlhLiBVbnR1ayBtZXRvZGUgU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKSBkYW4gQ29udmVuaWVuY2UgU2FtcGxpbmcsIGtpdGEgbWVuZ2d1bmFrYW4gZGF0YSB5YW5nIHRlbGFoIGRpZmlsdGVyIHNlc3VhaSBtZXRvZGUgdGVyc2VidXQuDQoNCvCfk6UgW1VuZHVoIERhdGFzZXQgZGkgc2luaV0oaHR0cHM6Ly8xZHJ2Lm1zL3gvYy9lMTYzZDI4MDJlZjA4OWJkL0VXcFZwTFVTMDBKTHFDRWpYNTczcVJjQlVacWtheVJYTFR0dGh0ek4yVU5XSmc/ZT1rUWgzVzUpDQoNCiMjIyAzLjEgU3RydWt0dXIgRGF0YSAgDQoNCkRhdGFzZXQgdGVyZGlyaSBkYXJpIDUwMCBiYXJpcyBkYW4gNiBrb2xvbS4gQmVyaWt1dCBhZGFsYWggZGVza3JpcHNpIHZhcmlhYmVsOiAgDQoNCnwgVmFyaWFiZWwgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXBlIERhdGEgICB8IERlc2tyaXBzaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICANCnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8ICANCnwgSUQgTWFoYXNpc3dhICAgICAgICAgICAgICAgICAgICAgfCBDaGFyYWN0ZXIgICB8IElkZW50aWZpa2FzaSB1bmlrIHVudHVrIHNldGlhcCBtYWhhc2lzd2EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgDQp8IEplbmlzIEtlbGFtaW4gICAgICAgICAgICAgICAgICAgIHwgQ2hhcmFjdGVyICAgfCBLYXRlZ29yaSBqZW5pcyBrZWxhbWluIG1haGFzaXN3YSAoIkxha2ktbGFraSIgYXRhdSAiUGVyZW1wdWFuIikuICAgICAgICAgICAgICAgfCAgDQp8IFVzaWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTnVtZXJpYyAgICAgfCBVc2lhIG1haGFzaXN3YSBkYWxhbSB0YWh1biAocmVudGFuZzogMTgtMjUgdGFodW4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICANCnwgRmFrdWx0YXMgICAgICAgICAgICAgICAgICAgICAgICAgfCBDaGFyYWN0ZXIgICB8IEZha3VsdGFzIHRlbXBhdCBtYWhhc2lzd2EgdGVyZGFmdGFyIChjb250b2g6IFNhc3RyYSwgSHVrdW0sIEVrb25vbWksIGRsbC4pLiAgIHwgIA0KfCBNZXRvZGUgU2FtcGxpbmcgICAgICAgICAgICAgICAgICB8IENoYXJhY3RlciAgIHwgTWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbDogU1JTIChTaW1wbGUgUmFuZG9tIFNhbXBsaW5nKSBhdGF1IENvbnZlbmllbmNlIFNhbXBsaW5nLiB8ICANCnwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfCBOdW1lcmljICAgICB8IEp1bWxhaCB1YW5nIHlhbmcgZGlrZWx1YXJrYW4gbWFoYXNpc3dhIHVudHVrIG1ha2FuYW4gcGVyIGJ1bGFuIChkYWxhbSBSdXBpYWgpLiAgIHwgIA0KDQojIyMgMy4yIFJpbmdrYXNhbiBEYXRhICANCg0KIyMjIyAzLjIuMSBEYXRhICAgDQoNCkJlcmlrdXQgYWRhbGFoIGRhdGEgZGFyaSBkYXRhc2V0OiAgDQoNCnwgSUQgTWFoYXNpc3dhIHwgSmVuaXMgS2VsYW1pbiB8IFVzaWEgfCBGYWt1bHRhcyB8IE1ldG9kZSBTYW1wbGluZyAgICAgIHwgIA0KfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAgDQp8IElEMDAwMSAgICAgICB8IExha2ktbGFraSAgICB8IDI0ICAgfCBTYXN0cmEgICB8IFNSUyAgICAgICAgICAgICAgICAgIHwgIA0KfCBJRDAwMDIgICAgICAgfCBMYWtpLWxha2kgICAgfCAyNCAgIHwgU2FzdHJhICAgfCBTUlMgICAgICAgICAgICAgICAgICB8ICANCnwgSUQwMDAzICAgICAgIHwgUGVyZW1wdWFuICAgICB8IDIzICAgfCBIdWt1bSAgICB8IENvbnZlbmllbmNlIFNhbXBsaW5nIHwgIA0KfCBJRDAwMDQgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMyAgIHwgSHVrdW0gICAgfCBTUlMgICAgICAgICAgICAgICAgICB8ICANCnwgSUQwMDA1ICAgICAgIHwgUGVyZW1wdWFuICAgICB8IDE4ICAgfCBFa29ub21pICB8IENvbnZlbmllbmNlIFNhbXBsaW5nIHwgIA0KfCBJRDAwMDYgICAgICAgfCBQZXJlbXB1YW4gICAgIHwgMjAgICB8IEVrb25vbWkgIHwgU1JTICAgICAgICAgICAgICAgICAgfCAgDQoNCk1haGFzaXN3YSBiZXJhc2FsIGRhcmkgYmVyYmFnYWkgZmFrdWx0YXMgZGFuIG1lbmdndW5ha2FuIG1ldG9kZSBzYW1wbGluZyB5YW5nIGJlcmJlZGEuIFVzaWEgbWFoYXNpc3dhIGRhbGFtIGNvbnRvaCBpbmkgYmVya2lzYXIgYW50YXJhIDE4IGhpbmdnYSAyNCB0YWh1bi4gIA0KDQojIyMjIDMuMi4yIFN0YXRpc3RpayBEZXNrcmlwdGlmICANCg0KMS4gICoqVXNpYSBNYWhhc2lzd2E6KiogIA0KICAgICogICBNaW5pbWFsOiAxOCB0YWh1biAgDQogICAgKiAgIE1ha3NpbWFsOiAyNSB0YWh1biAgDQogICAgKiAgIEt1YXJ0aWwgMSAoUTEpOiAyMCB0YWh1biAgDQogICAgKiAgIE1lZGlhbjogMjEgdGFodW4gIA0KICAgICogICBNZWFuIChSYXRhLXJhdGEpOiAyMS40NSB0YWh1biAgDQogICAgKiAgIEt1YXJ0aWwgMyAoUTMpOiAyMyB0YWh1biAgDQogICAgKiAgICpLZXNpbXB1bGFuOiBNYXlvcml0YXMgbWFoYXNpc3dhIGJlcnVzaWEgc2VraXRhciAyMS0yMyB0YWh1bi4qICANCg0KMi4gICoqUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCk6KiogIA0KICAgICogICBNaW5pbWFsOiBScCA1MDEuODg0ICANCiAgICAqICAgS3VhcnRpbCAxIChRMSk6IFJwIDkxNS43MDUgIA0KICAgICogICBNZWRpYW46IFJwIDEuMjczLjE4NCAgDQogICAgKiAgIE1lYW4gKFJhdGEtcmF0YSk6IFJwIDEuMjc4LjUxNCAgDQogICAgKiAgIEt1YXJ0aWwgMyAoUTMpOiBScCAxLjYzOS4xOTggIA0KICAgICogICBNYWtzaW1hbDogUnAgMS45OTcuMjEyICANCiAgICAqICAgKktlc2ltcHVsYW46IFNlYmFnaWFuIGJlc2FyIG1haGFzaXN3YSBtZW5naGFiaXNrYW4gc2VraXRhciBScCAxLjI3My4xODQgcGVyIGJ1bGFuIHVudHVrIG1ha2FuYW4uIFNlYmFyYW4gcGVuZ2VsdWFyYW4gcmVsYXRpZiBzaW1ldHJpcy4qICANCg0KIyMjIDMuMyBLZXNpbXB1bGFuICANCg0KKiAgIFVzaWEgbWFoYXNpc3dhIGJlcmtpc2FyIGFudGFyYSAxOC0yNSB0YWh1biwgZGVuZ2FuIHJhdGEtcmF0YSAyMS40NSB0YWh1bi4gIA0KKiAgIFBlbmdlbHVhcmFuIG1ha2FuYW4gYnVsYW5hbiBtYWhhc2lzd2EgcmF0YS1yYXRhIGFkYWxhaCBScCAxLjI3OC41MTQsIGRlbmdhbiByZW50YW5nIGFudGFyYSBScCA1MDEuODg0IGhpbmdnYSBScCAxLjk5Ny4yMTIuICANCiogICBNZXRvZGUgcGVuZ2FtYmlsYW4gc2FtcGVsIHlhbmcgZGlndW5ha2FuIHRlcmRpcmkgZGFyaSBTUlMgZGFuIENvbnZlbmllbmNlIFNhbXBsaW5nLiAgDQoqICAgRmFrdWx0YXMgbWFoYXNpc3dhIHRlcnNlYmFyIGRpIGJlcmJhZ2FpIGJpZGFuZywgc2VwZXJ0aSBTYXN0cmEsIEh1a3VtLCBkYW4gRWtvbm9taS4gIA0KDQoNCiMjIDQuIE1lbmVudHVrYW4gTWV0b2RlIE1hcmdpbiBvZiBFcnJvciB1bnR1ayBTdHVkaSBLYXN1cw0KDQpNZXRvZGUgTWFyZ2luIG9mIEVycm9yIChNb0UpIGRpaGl0dW5nIG1lbmdndW5ha2FuIHJ1bXVzOg0KDQokJA0KTW9FID0gWiAqIFNFDQokJA0KDQpEaSBtYW5hOg0KDQotICoqWioqIGFkYWxhaCBuaWxhaSBrcml0aXMgeWFuZyBzZXN1YWkgZGVuZ2FuIHRpbmdrYXQga2VwZXJjYXlhYW4NCi0gKipTRSoqIGFkYWxhaCBzdGFuZGFyIGVycm9yLCB5YWl0dSBzdGFuZGFyIGRldmlhc2kgZGliYWdpIGFrYXIgdWt1cmFuIHNhbXBlbA0KDQpEYWxhbSBwZW5lbGl0aWFuIGluaSwga2l0YSBha2FuIG1lbmdoaXR1bmcgKipNYXJnaW4gb2YgRXJyb3IgKE1vRSkqKiBtZW5nZ3VuYWthbiBkdWEgbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIGJlcmJlZGE6ICANCg0KMS4gKipTaW1wbGUgUmFuZG9tIFNhbXBsaW5nIChTUlMpIC0gUHJvYmFiaWxpdGFzKiogIA0KMi4gKipDb252ZW5pZW5jZSBTYW1wbGluZyAtIE5vbi1Qcm9iYWJpbGl0YXMqKiAgDQoNCiMjIyA0LjEgQWxhc2FuIE1lbmdndW5ha2FuIFNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykgIA0KDQpTaW1wbGUgUmFuZG9tIFNhbXBsaW5nIChTUlMpIGRpcGlsaWggc2ViYWdhaSBtZXRvZGUgKipwcm9iYWJpbGl0YXMqKiBkYWxhbSBwZW5lbGl0aWFuIGluaSBrYXJlbmE6ICANCg0KLSAqKlNldGlhcCBpbmRpdmlkdSBkYWxhbSBwb3B1bGFzaSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayB0ZXJwaWxpaCoqLCBzZWhpbmdnYSBtZW5ndXJhbmdpIGJpYXMgc2VsZWtzaS4gIA0KLSAqKk1lbWFzdGlrYW4gZGlzdHJpYnVzaSBzYW1wZWwgeWFuZyBsZWJpaCByZXByZXNlbnRhdGlmKiosIHNlaGluZ2dhIGhhc2lsIHBlbmVsaXRpYW4gZGFwYXQgZGlnZW5lcmFsaXNhc2kga2UgcG9wdWxhc2kgeWFuZyBsZWJpaCBsdWFzLiAgDQotICoqRGFwYXQgZGlndW5ha2FuIHVudHVrIG1lbmdoaXR1bmcgTWFyZ2luIG9mIEVycm9yIChNb0UpIGRlbmdhbiB0ZXBhdCoqLCBrYXJlbmEgZGF0YSB5YW5nIGRpcGVyb2xlaCBsZWJpaCBtZW5kZWthdGkgZGlzdHJpYnVzaSBub3JtYWwuICANCi0gKipTZWRlcmhhbmEgZGFuIGVmZWt0aWYgZGliYW5kaW5na2FuIG1ldG9kZSBwcm9iYWJpbGl0YXMgbGFpbm55YSoqLCBzZXBlcnRpICoqU3RyYXRpZmllZCBTYW1wbGluZyoqIGF0YXUgKipDbHVzdGVyIFNhbXBsaW5nKiosIHlhbmcgbWVtYnV0dWhrYW4gc2VnbWVudGFzaSBhd2FsLiAgDQoNCiMjIyMgUGVyYmFuZGluZ2FuIGRlbmdhbiBNZXRvZGUgUHJvYmFiaWxpdGFzIExhaW5ueWEgIA0KDQp8ICoqTWV0b2RlKiogICAgICAgICAgICAgICAgICAgfCAqKktlbGViaWhhbioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICoqS2VrdXJhbmdhbioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8ICoqU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKSoqIHwgVGlkYWsgYmlhcywgc2VkZXJoYW5hLCBkYW4gcmVwcmVzZW50YXRpZiB8IFBlcmx1IGRhZnRhciBwb3B1bGFzaSwgYmlzYSBzdWxpdCBkaXRlcmFwa2FuIHVudHVrIHBvcHVsYXNpIGJlc2FyIHwNCnwgKipTdHJhdGlmaWVkIFNhbXBsaW5nKiogICAgICAgfCBBa3VyYXNpIHRpbmdnaSBqaWthIGFkYSBwZXJiZWRhYW4gYW50YXIga2Vsb21wb2sgICAgICAgfCBQZXJsdSBkYXRhIGF3YWwgdW50dWsgcGVuZ2Vsb21wb2thbiB5YW5nIGFrdXJhdCAgICAgfA0KfCAqKkNsdXN0ZXIgU2FtcGxpbmcqKiAgICAgICAgICB8IEhlbWF0IGJpYXlhIGRhbiB3YWt0dSB1bnR1ayBwb3B1bGFzaSBiZXNhciAgICAgICAgICAgIHwgQmlzYSBtZW1pbGlraSB2YXJpYWJpbGl0YXMgdGluZ2dpIGppa2Ega2xhc3RlciB0aWRhayBob21vZ2VuIHwNCnwgKipTeXN0ZW1hdGljIFNhbXBsaW5nKiogICAgICAgfCBNdWRhaCBkaXRlcmFwa2FuIGRhbiB0ZXJzdHJ1a3R1ciAgICAgICAgICAgICAgICAgICAgICB8IEJpc2EgbWVuZ2hhc2lsa2FuIGJpYXMgamlrYSBhZGEgcG9sYSBkYWxhbSBwb3B1bGFzaSB8DQoNCj4gKipLZXNpbXB1bGFuOioqIFNSUyBkaXBpbGloIGthcmVuYSAqKnNlZGVyaGFuYSoqLCAqKmFrdXJhc2kgdGluZ2dpKiosIGRhbiAqKmJpc2EgZGlnZW5lcmFsaXNhc2kqKiBrZSBwb3B1bGFzaSwgc2VtZW50YXJhIG1ldG9kZSBsYWluIHNlcGVydGkgU3RyYXRpZmllZCBhdGF1IENsdXN0ZXIgU2FtcGxpbmcgbGViaWggY29jb2sgamlrYSBhZGEgaW5mb3JtYXNpIGRlbW9ncmFmaSB5YW5nIHBlcmx1IGRpcGVydGltYmFuZ2thbi4NCg0KIyMjIDQuMiBBbGFzYW4gTWVuZ2d1bmFrYW4gQ29udmVuaWVuY2UgU2FtcGxpbmcgIA0KDQpDb252ZW5pZW5jZSBTYW1wbGluZyBkaXBpbGloIHNlYmFnYWkgbWV0b2RlICoqbm9uLXByb2JhYmlsaXRhcyoqIGRhbGFtIHBlbmVsaXRpYW4gaW5pIGthcmVuYTogIA0KDQotICoqTXVkYWggZGFuIGNlcGF0IGRpbGFrdWthbioqLCBrYXJlbmEgc2FtcGVsIGRpcGlsaWggYmVyZGFzYXJrYW4gYWtzZXNpYmlsaXRhcyB0YW5wYSBwcm9zZXMgYWNhay4gIA0KLSAqKlRpZGFrIG1lbWVybHVrYW4gZGFmdGFyIHBvcHVsYXNpKiosIHNlaGluZ2dhIGNvY29rIHVudHVrIHBlbmVsaXRpYW4gZGVuZ2FuIGtldGVyYmF0YXNhbiB3YWt0dSBkYW4gc3VtYmVyIGRheWEuICANCi0gKipTZXJpbmcgZGlndW5ha2FuIGRhbGFtIHN1cnZlaSBhd2FsIChwcmVsaW1pbmFyeSByZXNlYXJjaCkqKiB1bnR1ayBtZW5kYXBhdGthbiBnYW1iYXJhbiBrYXNhciBzZWJlbHVtIG1lbGFrdWthbiBwZW5lbGl0aWFuIGxlYmloIGJlc2FyLiAgDQotICoqQ29jb2sgdW50dWsgc2l0dWFzaSBkaSBtYW5hIHRpZGFrIG1lbXVuZ2tpbmthbiBtZW5kYXBhdGthbiBha3NlcyBrZSBzZWx1cnVoIHBvcHVsYXNpKiogKG1pc2FsbnlhLCBoYW55YSBiaXNhIG1ld2F3YW5jYXJhaSBtYWhhc2lzd2EgZGkga2FudGluIGF0YXUgcGVycHVzdGFrYWFuKS4gIA0KDQojIyMjIFBlcmJhbmRpbmdhbiBkZW5nYW4gTWV0b2RlIE5vbi1Qcm9iYWJpbGl0YXMgTGFpbm55YSAgDQoNCnwgKipNZXRvZGUqKiAgICAgICAgICAgICAgICAgICAgIHwgKipLZWxlYmloYW4qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICoqS2VrdXJhbmdhbioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8ICoqQ29udmVuaWVuY2UgU2FtcGxpbmcqKiAgICAgICAgfCBNdWRhaCwgY2VwYXQsIGRhbiBtdXJhaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaWFzIHRpbmdnaSwgaGFzaWwgdGlkYWsgYmlzYSBkaWdlbmVyYWxpc2FzaSAgICAgfA0KfCAqKlF1b3RhIFNhbXBsaW5nKiogICAgICAgICAgICAgIHwgTWVuYXJnZXRrYW4gcHJvcG9yc2kgdGVydGVudHUgZGFsYW0gcG9wdWxhc2kgICAgICAgfCBNZW1lcmx1a2FuIGRhdGEgYXdhbCB5YW5nIGFrdXJhdCAgICAgICAgICAgICAgICAgfA0KfCAqKkp1ZGdtZW50YWwgU2FtcGxpbmcqKiAgICAgICAgIHwgRGlwaWxpaCBiZXJkYXNhcmthbiBrZWFobGlhbiBwZW5lbGl0aSAgICAgICAgICAgICAgfCBTYW5nYXQgc3ViamVrdGlmLCBiaXNhIG1lbmdoYXNpbGthbiBiaWFzICAgICAgICAgfA0KfCAqKlNub3diYWxsIFNhbXBsaW5nKiogICAgICAgICAgIHwgQmVyZ3VuYSB1bnR1ayBwb3B1bGFzaSBzdWxpdCBkaWphbmdrYXUgICAgICAgICAgICAgfCBUaWRhayBhY2FrLCBiaWFzIHRpbmdnaSwgdGlkYWsgYmlzYSBkaXJlcGxpa2FzaSAgfA0KDQo+ICoqS2VzaW1wdWxhbjoqKiBDb252ZW5pZW5jZSBTYW1wbGluZyBkaXBpbGloIGthcmVuYSAqKnByYWt0aXMgZGFuIG11ZGFoIGRpdGVyYXBrYW4qKiwgbWVza2lwdW4gbWVtaWxpa2kga2V0ZXJiYXRhc2FuIGRhbGFtIGFrdXJhc2kgZGFuIHJlcHJlc2VudGFzaSBwb3B1bGFzaS4gIA0KDQojIyMgNC4zIEtlc2ltcHVsYW4gZGFuIEp1c3RpZmlrYXNpIFBlbWlsaWhhbiBNZXRvZGUgIA0KDQp8ICoqQXNwZWsqKiAgICAgICAgICAgICAgICAgIHwgKipTaW1wbGUgUmFuZG9tIFNhbXBsaW5nIChTUlMpKiogfCAqKkNvbnZlbmllbmNlIFNhbXBsaW5nKiogfCAqKkFsdGVybmF0aWYgTGFpbioqIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgKipKZW5pcyBTYW1wbGluZyoqICAgICAgICAgIHwgUHJvYmFiaWxpdGFzICAgICAgICAgICAgICAgICAgIHwgTm9uLVByb2JhYmlsaXRhcyAgICAgICB8IFByb2JhYmlsaXRhcyAmIE5vbi1Qcm9iYWJpbGl0YXMgfA0KfCAqKktlc2VtcGF0YW4gRGlwaWxpaCoqICAgICAgfCBTYW1hIHVudHVrIHNlbXVhIGluZGl2aWR1ICAgICAgfCBCZXJkYXNhcmthbiBrZW11ZGFoYW4gYWtzZXMgfCBCZXJkYXNhcmthbiBrcml0ZXJpYSB0ZXJ0ZW50dSB8DQp8ICoqS2VtdWRhaGFuIFBlbGFrc2FuYWFuKiogICB8IFBlcmx1IGRhZnRhciBwb3B1bGFzaSBkYW4gcGVtaWxpaGFuIGFjYWsgfCBDZXBhdCBkYW4gbXVkYWggZGlsYWt1a2FuIHwgQmlzYSBsZWJpaCBrb21wbGVrcyB8DQp8ICoqQmlheWEqKiAgICAgICAgICAgICAgICAgICB8IExlYmloIG1haGFsICAgICAgICAgICAgICAgICAgICB8IExlYmloIG11cmFoICAgICAgICAgICAgIHwgQmVydmFyaWFzaSB8DQp8ICoqQmlhcyoqICAgICAgICAgICAgICAgICAgICB8IFJlbmRhaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaW5nZ2kgICAgICAgICAgICAgICAgIHwgU2VkYW5nIC0gVGluZ2dpIHwNCnwgKipEYXBhdCBEaWdlbmVyYWxpc2FzaSoqICAgIHwgWWEsIGhhc2lsIG1ld2FraWxpIHBvcHVsYXNpICAgIHwgVGlkYWssIGhhbnlhIGJlcmxha3UgdW50dWsgc2FtcGVsIHRlcnNlYnV0IHwgVGVyZ2FudHVuZyBtZXRvZGUgfA0KfCAqKlBlcmhpdHVuZ2FuIE1vRSoqICAgICAgICAgfCBBa3VyYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBLdXJhbmcgYWt1cmF0ICAgICAgICAgIHwgQmVydmFyaWFzaSB8DQoNCj4gKipLZXNpbXB1bGFuOioqICANCj4gLSAqKlNSUyBsZWJpaCBjb2NvayB1bnR1ayBzdHVkaSBha2FkZW1payBhdGF1IHBlbmVsaXRpYW4geWFuZyBtZW1idXR1aGthbiBoYXNpbCB5YW5nIGFrdXJhdCBkYW4gZGFwYXQgZGlnZW5lcmFsaXNhc2kuKiogIA0KPiAtICoqQ29udmVuaWVuY2UgU2FtcGxpbmcgbGViaWggY29jb2sgdW50dWsgcGVuZWxpdGlhbiBla3NwbG9yYXNpIGF0YXUgc3R1ZGkgZGVuZ2FuIGtldGVyYmF0YXNhbiBzdW1iZXIgZGF5YS4qKiAgDQo+IC0gKipEZW5nYW4gbWVtYmFuZGluZ2thbiBNYXJnaW4gb2YgRXJyb3IgKE1vRSkgZGFyaSBrZWR1YSBtZXRvZGUgaW5pLCBraXRhIGRhcGF0IG1lbmd1a3VyIHBlcmJlZGFhbiBha3VyYXNpIGFudGFyYSBzYW1wbGluZyBwcm9iYWJpbGl0YXMgZGFuIG5vbi1wcm9iYWJpbGl0YXMuKiogIA0KDQoNCiMjIDUuIE1lbmdoaXR1bmcgTWFyZ2luIE9mIEVycm9yDQoNCiMjIyA1LjEgTWVuZ2hpdHVuZyBTdGFuZGFyIERldmlhc2kNCg0KU3RhbmRhciBkZXZpYXNpIGRpaGl0dW5nIG1lbmdndW5ha2FuIHJ1bXVzOg0KDQo+ICQkDQo+IHMgPSBcc3FydHtcZnJhY3tcc3VtICh4XF9pIC0gXGJhcnt4fSleMn17bi0xfX0NCj4gJCQNCg0KRGkgbWFuYToNCg0KLSAqKlwoeF9pXCkqKiA9IG5pbGFpIGluZGl2aWR1IGRhbGFtIHNhbXBlbA0KLSAqKlwoXGJhcnt4fVwpKiogPSByYXRhLXJhdGEgc2FtcGVsDQotICoqXChuXCkqKiA9IHVrdXJhbiBzYW1wZWwNCi0gKipcKHNcKSoqID0gc3RhbmRhciBkZXZpYXNpIHNhbXBlbA0KDQpEYXJpIGRhdGFzZXQgeWFuZyBkaWJlcmlrYW4sIHBlcmhpdHVuZ2FuIG1lbmdoYXNpbGthbjoNCg0KLSAqKlJhdGEtcmF0YSBwZW5nZWx1YXJhbiBtYWthbmFuIGJ1bGFuYW46KiogUnAgMS4yNzguNTE0DQotICoqVmFyaWFucyBzYW1wZWw6KiogUnAgMTc4LjU5MC42ODYuNzc1DQotICoqU3RhbmRhciBkZXZpYXNpIHNhbXBlbCB1bnR1ayBTUlM6KiogUnAgNDIxLjIwNg0KLSAqKlN0YW5kYXIgZGV2aWFzaSBzYW1wZWwgdW50dWsgQ29udmVuaWVuY2UgU2FtcGxpbmc6KiogUnAgNDI1LjA5MA0KDQpTdGFuZGFyIGRldmlhc2kgaW5pIGRpZ3VuYWthbiBkYWxhbSBwZXJoaXR1bmdhbiBTdGFuZGFyIEVycm9yIChTRSkgZGFuIE1hcmdpbiBvZiBFcnJvciAoTW9FKS4NCg0KIyMjIDUuMiBSdW11cyBQZXJoaXR1bmdhbg0KDQpNYXJnaW4gb2YgRXJyb3IgKE1vRSkgZGloaXR1bmcgbWVuZ2d1bmFrYW4gcnVtdXM6DQoNCj4gJCQNCj4gTW9FID0gWiAqIFNFDQo+ICQkDQoNClN0YW5kYXIgRXJyb3IgKFNFKSBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQoNCj4gJCQNCj4gU0UgPSBcZnJhY3tcc2lnbWF9e1xzcXJ0e259fQ0KPiAkJA0KDQpEaSBtYW5hOg0KDQotICoqWioqID0gU2tvciBaIHNlc3VhaSBkZW5nYW4gdGluZ2thdCBrZXBlcmNheWFhbiAobWlzYWxueWEsIDEuOTYgdW50dWsgOTUlKQ0KLSAqKs+DKiogPSBTaW1wYW5nYW4gYmFrdSBwb3B1bGFzaSBhdGF1IHNhbXBlbA0KLSAqKm4qKiA9IFVrdXJhbiBzYW1wZWwNCg0KIyMjIDUuMyBNZW5lbnR1a2FuIFRpbmdrYXQgS2VwZXJjYXlhYW4NCg0KVGluZ2thdCBrZXBlcmNheWFhbiB5YW5nIGtpdGEgZ3VuYWthbiBkaSBzaW5pIGFkYWxhaCAqKjk1JSoqLiBJbmkgYmVyYXJ0aSBraXRhIHlha2luIGJhaHdhIDk1JSBkYXJpIHNhbXBlbCB5YW5nIGtpdGEgYW1iaWwgYWthbiBtZW5jZXJtaW5rYW4gcmF0YS1yYXRhIHBvcHVsYXNpIGRlbmdhbiBiZW5hci4NCg0KIyMjIDUuNCBNZW5lbnR1a2FuIE5pbGFpIEtyaXRpcyAoWi1WYWx1ZSkNCg0KS2FyZW5hIHRpbmdrYXQga2VwZXJjYXlhYW4gYWRhbGFoIDk1JSwgbmlsYWkga3JpdGlzIChaKSB5YW5nIHNlc3VhaSBhZGFsYWggKioxLjk2KiouIE5pbGFpIGluaSBkaWFtYmlsIGRhcmkgdGFiZWwgZGlzdHJpYnVzaSBub3JtYWwgKHRhYmVsIFopIGRhbiBtZW51bmp1a2thbiBqYXJhayBkYXJpIHJhdGEtcmF0YSBkYWxhbSBzYXR1YW4gc3RhbmRhciBkZXZpYXNpLg0KDQojIyMgNS41IE1lbmdoaXR1bmcgU3RhbmRhciBFcnJvciAoU0UpDQoNCiMjIyMgNS41LjEgTWV0b2RlIFNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykNCg0KLSAqKlN0YW5kYXIgZGV2aWFzaSBzYW1wZWwgKM+DKToqKiBScCA0MjEuMjA2DQotICoqVWt1cmFuIHNhbXBlbCAobik6KiogMjc3DQoNCk1lbmdoaXR1bmcgU0U6DQoNCj4gJCQNClNFID0gXGZyYWN7NDIxLjIwNn17XHNxcnR7Mjc3fX0gPSBScCAyNS4zMDgNCj4gJCQNCg0KSmFkaSwgc3RhbmRhciBlcnJvciB1bnR1ayBtZXRvZGUgU1JTIGFkYWxhaCAqKlJwIDI1LjMwOCoqLg0KDQojIyMjIDUuNS4yIE1ldG9kZSBDb252ZW5pZW5jZSBTYW1wbGluZw0KDQotICoqU3RhbmRhciBkZXZpYXNpIHNhbXBlbCAoz4MpOioqIFJwIDUxMC43ODkNCi0gKipVa3VyYW4gc2FtcGVsIChuKToqKiAyMjMNCg0KTWVuZ2hpdHVuZyBTRToNCg0KPiAkJA0KU0UgPSBcZnJhY3s1MTAuNzg5fXtcc3FydHsyMjN9fSA9IFJwIDM0LjI0Mg0KPiAkJA0KDQpKYWRpLCBzdGFuZGFyIGVycm9yIHVudHVrIG1ldG9kZSBDb252ZW5pZW5jZSBTYW1wbGluZyBhZGFsYWggKipScCAzNC4yNDIqKi4NCg0KIyMjIDUuNiBNZW5naGl0dW5nIE1hcmdpbiBvZiBFcnJvciAoTW9FKQ0KDQojIyMjIDUuNi4xIE1ldG9kZSBTaW1wbGUgUmFuZG9tIFNhbXBsaW5nIChTUlMpDQoNCj4gJCQNCk1vRSA9IDEuOTYgKiAyNS4zMDggPSBScCA0OS42MDINCj4gJCQNCg0KSmFkaSwgTWFyZ2luIG9mIEVycm9yIHVudHVrIG1ldG9kZSBTUlMgYWRhbGFoICoqUnAgNDkuNjAyKiouDQoNCiMjIyMgNS42LjIgTWV0b2RlIENvbnZlbmllbmNlIFNhbXBsaW5nDQoNCj4gJCQNCk1vRSA9IDEuOTYgKiAzNC4yNDIgPSBScCA2Ny4xMTQNCj4gJCQNCg0KSmFkaSwgTWFyZ2luIG9mIEVycm9yIHVudHVrIG1ldG9kZSBDb252ZW5pZW5jZSBTYW1wbGluZyBhZGFsYWggKipScCA2Ny4xMTQqKi4NCg0KIyMjIDUuNyBNZW5lbnR1a2FuIEludGVydmFsIEtlcGVyY2F5YWFuDQoNCiMjIyMgNS43LjEgTWV0b2RlIFNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykNCg0KLSAqKlJhdGEtcmF0YSBzYW1wZWw6KiogUnAgMS4yODUuOTg3DQoNCiQkDQpDSSA9IFxiYXJ7eH0gXHBtIChaICogU0UpDQokJA0KKipNZXRvZGUgU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKSoqICANCg0KLSAqKlJhdGEtcmF0YSBzYW1wZWwgKPCdkaXMhCk6KiogUnAgMS4yODUuOTg3IA0KDQotICoqU3RhbmRhciBFcnJvciAoU0UpOioqIFJwIDI1LjMwOCAgDQoNCi0gKipaLXNjb3JlIHVudHVrIDk1JSBjb25maWRlbmNlIGxldmVsOioqIDEuOTYgIA0KDQotICoqTWFyZ2luIG9mIEVycm9yIChNb0UpOioqICANCiAgJCQgMS45NiBcdGltZXMgMjUuMzA4ID0gNDkuNjAyICQkICANCiAgDQo+ICQkDQpCYXRhcyBCYXdhaCA9IDEuMjg1Ljk4NyAtIDQ5LjYwMiA9IFJwIDEuMjM2LjM4NQ0KQmF0YXMgQXRhcyA9IDEuMjg1Ljk4NyArIDQ5LjYwMiA9IFJwIDEuMzM1LjU5MA0KPiAkJA0KDQpJbnRlcnZhbCBrZXBlcmNheWFhbiB1bnR1ayBtZXRvZGUgU1JTOiAqKlJwIDEuMjM2LjM4NSoqIHNhbXBhaSAqKlJwIDEuMzM1LjU5MCoqLg0KDQojIyMjIDUuNy4yIE1ldG9kZSBDb252ZW5pZW5jZSBTYW1wbGluZw0KDQotICoqUmF0YS1yYXRhIHNhbXBlbDoqKiBScCAxLjMxMC40NTANCg0KJCQNCkNJID0gXGJhcnt4fSBccG0gKFogKiBTRSkNCiQkDQoNCioqTWV0b2RlIENvbnZlbmllbmNlIFNhbXBsaW5nKiogIA0KDQotICoqUmF0YS1yYXRhIHNhbXBlbCAo8J2RpcyEKToqKiBScCAxLjMxMC40NTAgIA0KDQotICoqU3RhbmRhciBFcnJvciAoU0UpOioqIFJwIDM0LjI2NSAgDQoNCi0gKipaLXNjb3JlIHVudHVrIDk1JSBjb25maWRlbmNlIGxldmVsOioqIDEuOTYgIA0KDQotICoqTWFyZ2luIG9mIEVycm9yIChNb0UpOioqICANCiAgJCQgMS45NiBcdGltZXMgMzQuMjY1ID0gNjcuMTE0ICQkICANCg0KPiAkJA0KQmF0YXMgQmF3YWggPSAxLjMxMC40NTAgLSA2Ny4xMTQgPSBScCAxLjI0My4zMzYNCkJhdGFzIEF0YXMgPSAxLjMxMC40NTAgKyA2Ny4xMTQgPSBScCAxLjM3Ny41NjQNCj4gJCQNCg0KSW50ZXJ2YWwga2VwZXJjYXlhYW4gdW50dWsgbWV0b2RlIENvbnZlbmllbmNlIFNhbXBsaW5nOiAqKlJwIDEuMjQzLjMzNioqIHNhbXBhaSAqKlJwIDEuMzc3LjU2NCoqLg0KDQojIyA2LiBLZXNpbXB1bGFuDQoNClBlcmhpdHVuZ2FuIE1hcmdpbiBvZiBFcnJvciBpbmkgbWVudW5qdWtrYW4gYmFod2EgbWV0b2RlIFNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykgbWVuZ2hhc2lsa2FuIE1hcmdpbiBvZiBFcnJvciB5YW5nIGxlYmloIGtlY2lsIChScCA0OS42MDIpIGRpYmFuZGluZ2thbiBtZXRvZGUgQ29udmVuaWVuY2UgU2FtcGxpbmcgKFJwIDY3LjExNCkuIEluaSBiZXJhcnRpIG1ldG9kZSBTUlMgbWVtYmVyaWthbiBlc3RpbWFzaSByYXRhLXJhdGEgcGVuZ2VsdWFyYW4gbWFrYW5hbiBidWxhbmFuIG1haGFzaXN3YSB5YW5nIGxlYmloIGFrdXJhdC4gRGVuZ2FuIGRlbWlraWFuLCBkYWxhbSBzdHVkaSB5YW5nIG1lbWVybHVrYW4gdGluZ2thdCBha3VyYXNpIHRpbmdnaSwgbWV0b2RlIFNSUyBsZWJpaCBkaXNhcmFua2FuLg0KDQpNZW5qYXdhYiBydW11c2FuIG1hc2FsYWg6DQoNCi0gTWVtYmFuZGluZ2thbiBha3VyYXNpIFNSUyB2cy4gQ29udmVuaWVuY2UgU2FtcGxpbmc6IFNSUyBsZWJpaCBha3VyYXQga2FyZW5hIG1lbmdoYXNpbGthbiBNYXJnaW4gb2YgRXJyb3IgeWFuZyBsZWJpaCBrZWNpbCBkYW4gaW50ZXJ2YWwga2VwZXJjYXlhYW4geWFuZyBsZWJpaCBzZW1waXQuDQotIEJhZ2FpbWFuYSBwZXJiYW5kaW5nYW4gTWFyZ2luIG9mIEVycm9yIChNb0UpPyBNYXJnaW4gb2YgRXJyb3IgbWV0b2RlIFNSUyBhZGFsYWggUnAgNDkuNjAyLCBzZWRhbmdrYW4gbWV0b2RlIENvbnZlbmllbmNlIFNhbXBsaW5nIGFkYWxhaCBScCA2Ny4xMTQuDQotIEFwYWthaCBhZGEgcGVyYmVkYWFuIHNpZ25pZmlrYW4gZGFsYW0gZGlzdHJpYnVzaSBwZW5nZWx1YXJhbj8gWWEsIG1ldG9kZSBDb252ZW5pZW5jZSBTYW1wbGluZyBtZW51bmp1a2thbiBsZWJpaCBiYW55YWsgdmFyaWFzaSBkYW4gb3V0bGllciwgc2VoaW5nZ2EgZGlzdHJpYnVzaW55YSBrdXJhbmcgc3RhYmlsIGRpYmFuZGluZ2thbiBTUlMuDQoNCj4gLSBSYXRhLXJhdGEgcGVuZ2VsdWFyYW4gbGViaWggdGluZ2dpIHBhZGEgU1JTLg0KPiAtIE1vRSBsZWJpaCBrZWNpbCBwYWRhIFNSUywgaGFzaWwgZXN0aW1hc2kgbGViaWggYWt1cmF0Lg0KPiAtIENvbnZlbmllbmNlIFNhbXBsaW5nIG1lbWlsaWtpIGxlYmloIGJhbnlhayBvdXRsaWVyLg0KPiAtIFNSUyBtZXRvZGUgeWFuZyBsZWJpaCBiYWlrLg0KDQojIyA3LiBSZWtvbWVuZGFzaSBMYW5qdXRhbg0KDQotIExha3VrYW4gdWppIHN0YXRpc3RpayAodC10ZXN0KS4NCi0gQW5hbGlzaXMgZmFrdG9yIGxhaW4gKGplbmlzIGtlbGFtaW4sIGZha3VsdGFzKS4NCi0gTGFrdWthbiByZWdyZXNpLg0KDQoNCiMjIDguIFJlZmVyZW5zaSANCg0KaHR0cHM6Ly9ib29rZG93bi5vcmcvZHNjaWVuY2VsYWJzL3NhbXBsaW5nX2FuZF9zdXJ2ZXlfdGVjaG5pcXVlcy9kb2NzLzA0LU1hcmdpbi1vZi1FcnJvci5odG1sI2NvbnZlbmllbmNlLXNhbXBsaW5nDQoNCmh0dHBzOi8vcmVzZWFyY2hzY2FwZS5jb20vYmxvZy90aGUtbXl0aC1vZi1tYXJnaW4tb2YtZXJyb3INCg0KaHR0cHM6Ly9kb3ZldGFpbC5jb20vc3VydmV5cy9tYXJnaW4tb2YtZXJyb3IvDQoNCmh0dHBzOi8vd3d3LnF1YWx0cmljcy5jb20vZXhwZXJpZW5jZS1tYW5hZ2VtZW50L3Jlc2VhcmNoL21hcmdpbi1vZi1lcnJvci8NCg0KaHR0cHM6Ly9wbWMubmNiaS5ubG0ubmloLmdvdi9hcnRpY2xlcy9QTUM0ODE3NjQ1Lw0KDQo=