Tugas Individu

Ujian Tengah Semester -Teknik sampling dan Survey

Foto Diri


1.Simulasi Kesalahan Sampling di Lapangan

Andaikan Anda adalah bagian dari tim riset lapangan yang diminta untuk melakukan survei tingkat penggunaan aplikasi transportasi online di 3 kota menengah di Sumatera. Target sampel total adalah 600 responden, masing-masing 200 per kota. Tetapi, setelah 2 minggu melakukan survei anda menemukan:

  • Di Kota A, tim berhasil mendapatkan 250 responden.

  • Di Kota B, hanya 120 responden yang dapat diwawancarai.

  • Di Kota C, 180 responden.

Instruksi:

a.) Jelaskan dua jenis kesalahan sampling yang terjadi berdasarkan situasi ini.

Kesalahan 1. Selection Bias

Selection Bias → terjadi saat sampel tidak mewakili populasi secara proporsional.

Kesalahan ini terjadi karena komposisi responden dari tiap kota tidak sesuai target. Harusnya masing-masing kota menyumbang 200 responden dari total 600, tapi hasil yang didapat :

  • Kota A: kelebihan, karena hasilnya (250) → overrepresentation

  • Kota B: kekurangan, karena hasilnya (120) → undercoverage

  • Kota C: sedikit kurang, karena hasilnya (180)

Penyebab:
- Overrepresentation di Kota A
- Undercoverage di Kota B dan C
- Bisa jadi juga karena tim lebih mudah menjangkau responden di Kota A dibandingkan kota lain.

Kesalahan 2. Non-Response Bias

Non-Response Bias → muncul saat karakteristik orang yang tidak merespons berbeda dengan yang merespons.

Kesalahan ini terjadi karena sebagian orang yang seharusnya menjadi responden tidak berpartisipasi. Hal ini paling terlihat di Kota B, yang cuma dapet 120 responden dari target 200.
Ada kemungkinan orang-orang di kota tersebut menolak diwawancarai, tidak tersedia, atau tidak dapat diakses oleh tim survei.

Penyebab:
- Self-selection → hanya sebagian orang yang bersedia mengisi survei
- Undercoverage → sebagian kelompok dalam populasi Kota B mungkin tidak tersentuh sama sekali

b.) Jika Anda harus menyesuaikan bobot untuk mengembalikan representasi proporsional,bagaimana Anda akan menghitungnya?

Untuk menyamakan kembali kontribusi dari tiap kota biar sesuai dengan jumlah yang ditargetkan sejak awal, perlu menghitung bobot (weighting). Bobot ini didapat dengan membandingkan proporsi yang seharusnya dan proporsi yang sekarang didapat dari masing-masing kota.

Langkah 1: Hitung Proporsi yang Seharusnya Tiap Kota

Target dari masing-masing kota adalah 200 orang dari total 600 responden. Jadi:

\[ \text{Proporsi seharusnya tiap kota} = \frac{200}{600} = 0{,}333 \]

Langkah 2: Hitung Proporsi yang Didapat Sekarang dari Tiap Kota

Jumlah responden yang berhasil dikumpulkan:

  • Kota A: 250 responden

  • Kota B: 120 responden

  • Kota C: 180 responden

Total keseluruhan yang terkumpul: \[ 250 + 120 + 180 = 550 responden \]

Proporsi dari masing-masing kota bisa dihitung dengan rumus:
\[ \text{Proporsi kota} = \frac{\text{Jumlah responden kota}}{\text{Total responden masuk}} \]

Proporsi yang didapat sekarang:

  • Kota A
    \[ \text{Proporsi A} = \frac{250}{550} \approx 0{,}455 \]

  • Kota B
    \[ \text{Proporsi B} = \frac{120}{550} \approx 0{,}218 \]

  • Kota C
    \[ \text{Proporsi C} = \frac{180}{550} \approx 0{,}327 \]

Langkah 3: Hitung Bobot Penyesuaian

Bobot digunakan buat menyesuaikan kontribusi tiap kota. Rumusnya:

\[ \text{Bobot} = \frac{\text{Proporsi yang Seharusnya}}{\text{Proporsi yang Didapat Sekarang}} \]

Hasil perhitungan:

  • Kota A
    \[ \frac{0{,}333}{0{,}455} ≈ 0{,}732 \]

  • Kota B
    \[ \frac{0{,}333}{0{,}218} ≈ 1{,}527 \]

  • Kota C
    \[ \frac{0{,}333}{0{,}327} ≈ 1{,}018 \]

Penjelasan Hasil Bobot

Hasil bobot ini dipakai untuk menyesuaikan pengaruh (kontribusi) dari masing-masing responden dalam analisis, supaya seimbang sesuai target awal.

  • Kota A bobotnya < 1 (0,732), artinya jumlah responden dari kota ini kelebihan dibanding target. Maka, setiap responden dari Kota A akan diberi bobot lebih kecil, supaya kontribusinya dikurangi dalam analisis.

  • Kota B bobotnya > 1 (1,527), artinya jumlah responden dari kota ini kurang dibanding target. Maka, setiap responden dari Kota B akan diberi bobot lebih besar, supaya kontribusinya ditingkatkan.

  • Kota C bobotnya mendekati 1 (1,018), artinya jumlah respondennya hampir sesuai dengan target. Jadi, kontribusinya hampir tidak diubah dalam analisis.



2. Mendesain Survei dengan Pembobotan Waktu Puncak

Mendesain Survei dengan Pembobotan Waktu Puncak Buatlah desain rancangan survei tentang persepsi kenyamanan pengguna ojek online saat jam sibuk (07.00–09.00 dan 17.00–19.00).

Instruksi:

a.) Desain pendekatan sampling yang memungkinkan Anda menangkap persepsi pengguna secara representatif pada jam sibuk, tanpa melakukan survei sepanjang hari.

Untuk menangkap persepsi pengguna secara representatif selama jam sibuk tanpa melakukan survei sepanjang hari, pendekatan yang digunakan adalah stratified sampling. Populasi pengguna ojek online dibagi ke dalam dua strata berdasarkan waktu sibuk, yaitu:

  • Strata 1: Pagi hari (07.00–09.00)
  • Strata 2: Sore hari (17.00–19.00)

Pembagian strata ini bertujuan untuk memastikan bahwa masing-masing waktu sibuk terwakili dengan proporsional dalam survei. Pengumpulan data hanya dilakukan pada jam-jam tersebut agar hasilnya benar-benar merefleksikan persepsi pengguna pada waktu padat(misalnya, pekerja berangkat kerja vs. pulang kerja).

b.) Sertakan rancangan waktu, metode pemilihan responden, dan justifikasi pemilihan unit sampling.

Waktu Pelaksanaan Survei

Dilakukan hanya pada jam sibuk sesuai dengan pembagian strata waktu:

  • Pagi (Strata 1): 07.00–09.00
  • Sore (Strata 2): 17.00–19.00

Survei berlangsung selama 5 hari kerja (Senin–Jumat) untuk menangkap variasi aktivitas harian pengguna.

Metode Pemilihan Responden

  • Lokasi: Titik aktivitas tinggi ojek online, seperti:
    • Stasiun kereta / halte bus
    • Kawasan perkantoran
    • Kampus
    • Pusat perbelanjaan
  • Metode Sampling:
    • Menggunakan stratified sampling berdasarkan waktu (pagi dan sore)
    • Dalam masing-masing strata, dilakukan intercept sampling, yaitu pewawancara langsung menyapa pengguna ojek online di lokasi.
  • Kriteria Responden:
    • Usia ≥ 17 tahun
    • Baru saja menggunakan layanan ojek online pada jam tersebut
    • Bersedia mengikuti wawancara singkat (±3–5 menit)

Justifikasi Pemilihan Unit Sampling

  • Unit sampling utama: Pengguna ojek online aktif yang benar-benar sedang atau baru saja menggunakan layanan pada jam sibuk.
  • Dengan melakukan intersepsi langsung di titik keramaian, kita menghindari bias memori (misalnya responden yang sudah lupa pengalaman sebelumnya).
  • Stratifikasi berdasarkan waktu menjamin representasi persepsi dari masing-masing periode sibuk.
  • Pendekatan ini lebih efisien karena:
    • Tidak perlu survei sepanjang hari.
    • Fokus langsung ke kelompok pengguna yang paling relevan dengan topik studi: kenyamanan saat jam sibuk.

c.) Jelaskan bagaimana Anda akan menyesuaikan hasil survei jika 60% responden berasal dari pagi hari, sementara 40% dari sore hari, sedangkan data historis menunjukkan pengguna ojek online saat sore hari dua kali lebih banyak dibanding pagi.

Masalah:

Hasil survei menunjukkan bahwa:

  • 60% responden berasal dari pagi hari

  • 40% responden berasal dari sore hari

Padahal, dari data sebelumnya (data historis), kita tahu bahwa:

  • Pengguna ojek online di sore hari dua kali lebih banyak dibanding pagi hari

Artinya, dalam kenyataan:

  • Pengguna pagi = 1

  • Pengguna sore = 2 bagian

Jadi, pengguna sore lebih banyak, tapi dalam survei malah responden paginya yang lebih banyak. Ini bikin hasil survei tidak seimbang dan perlu disesuaikan.

Langkah Penyesuaian (Pembobotan)

langkah 1. Menentukan Proporsi Ideal Sesuai Data Historis:

Karena sore hari dua kali lebih ramai, maka:

  • Pagi = 1 bagian dari total 3 → 33,33%

  • Sore = 2 bagian dari total 3 → 66,67%

Langkah 2. Bandingkan dengan Proporsi Responden di Survei:

  • Pagi: 60% responden
  • Sore: 40% responden

langkah 3. Hitung Bobot Penyesuaian:

Kita pakai rumus: \[ \text{Bobot} = \frac{\text{Proporsi Ideal Sesuai Data Historis}}{\text{Proporsi Responden di Survei}} \]

  • Bobot untuk responden pagi:

\[ \text{Bobot Pagi} = \frac{0{,}333}{0{,}6} = 0{,}555 \]

  • Bobot untuk responden sore:

\[ \text{Bobot Sore} = \frac{0{,}667}{0{,}4} = 1{,}667 \]

Penjelasan Sederhana:

  • Responden Pagi memiliki bobot < 1 (0,555)
    Artinya, jumlah responden yang mengisi di pagi hari lebih banyak dari yang seharusnya.
    Maka, setiap jawaban dari responden pagi akan dikalikan dengan angka yang lebih kecil (0,555) supaya kontribusinya dalam analisis tidak terlalu mendominasi.

  • Responden Sore memiliki bobot > 1 (1,667)
    Artinya, jumlah responden yang mengisi di sore hari terlalu sedikit dibanding yang ditargetkan.
    Maka, setiap jawaban dari responden sore akan dikalikan dengan angka yang lebih besar (1,667) supaya kontribusinya diperbesar dan hasil analisis tetap proporsional.

Tujuannya adalah supaya hasil akhirnya lebih seimbang dan sesuai dengan kenyataan, di mana pengguna sore memang lebih banyak.



3.Membuat Laporan Perancangan Instrumen Survei

Anda ditugaskan oleh biro akademik kampus untuk merancang instrumen survei yang bertujuan mengevaluasi kepuasan mahasiswa terhadap layanan akademik, yang mencakup layanan seperti: KRS online, bimbingan akademik, pelayanan administrasi, akses informasi akademik, dan bantuan penyelesaian studi.

Tim peneliti meminta Anda untuk:

  • Merancang 25 pertanyaan utama dengan variasi skala dan bentuk pertanyaan.

  • Merancang sistem validasi instrumen.

  • Menentukan metode distribusi dan pengujian kuesioner secara statistik.

  • Menyiapkan simulasi strategi pengambilan sampel dan pengolahan data awal.

Output Laporan yang diharapkan dalam bentuk naratif, mencakup:

• Desain pertanyaan

• Skema validasi

• Strategi distribusi dan sampling

• Simulasi data dan analisis awal

LAPORAN RANCANGAN SURVEI KEPUASAN MAHASISWA TERHADAP LAYANAN AKADEMIK

I. Pendahuluan

Layanan akademik memegang peranan penting dalam mendukung kelancaran proses studi mahasiswa. Oleh karena itu, evaluasi berkala terhadap layanan tersebut menjadi krusial untuk memastikan bahwa kebutuhan dan ekspektasi mahasiswa terpenuhi. Laporan ini bertujuan untuk mengevaluasi kepuasan mahasiswa terhadap lima aspek utama layanan akademik, yaitu:

  1. Pengisian Kartu Rencana Studi (KRS) Online

  2. Bimbingan Akademik

  3. Pelayanan Administrasi Akademik

  4. Akses Informasi Akademik

  5. Bantuan Penyelesaian Studi

II. Desain Instrumen Survei

Survei ini disusun untuk mengevaluasi tingkat kepuasan mahasiswa terhadap layanan akademik di kampus. Survei terdiri dari 25 pertanyaan utama yang mencakup lima area layanan akademik, serta 5 pertanyaan demografis untuk mengetahui karakteristik responden.

Bentuk Pertanyaan dalam Survei:

  1. Skala Likert (1–5): Pertanyaan ini mengukur tingkat kepuasan mahasiswa terhadap layanan akademik dengan menggunakan skala penilaian dari 1 (Sangat Tidak Puas) hingga 5 (Sangat Puas).

  2. Pertanyaan Dichotomous (Ya/Tidak): Pertanyaan yang memberikan dua pilihan jawaban, yaitu “Ya” atau “Tidak”.

  3. Pilihan Ganda: Pertanyaan ini memungkinkan responden memilih satu atau lebih jawaban dari beberapa opsi yang tersedia.

  4. Checkbox: Responden dapat memilih lebih dari satu opsi yang sesuai dengan pengalaman atau opini mereka.

  5. Pertanyaan Terbuka: Pada bagian ini, responden dapat memberikan komentar, saran, kendala, atau pengalaman pribadi mereka terkait layanan akademik yang diterima.

Survei ini dirancang menggunakan platform Google Form untuk mempermudah distribusi dan pengumpulan data. Pengisian survei dapat dilakukan secara online dengan link berikut:

https://docs.google.com/forms/d/e/1FAIpQLSfz-nIxMi3CZBkYDson1Z56OYXcZdnZ9xW0oASvojOadCSbUw/viewform?usp=preview


III. Skema Validasi

Untuk memastikan survei ini berkualitas dan dapat dipercaya, akan menggunakan dua cara validasi:

1. Validitas Konstrak (Construct Validity)

Validitas konstrak memastikan bahwa pertanyaan yang ada dalam kuesioner benar-benar mengukur kepuasan mahasiswa terhadap layanan akademik. Setelah data terkumpul, kita akan cek apakah setiap bagian dari layanan (seperti KRS online, bimbingan akademik, dll.) bisa diukur dengan jelas dan terpisah.

2. Validitas Isi (Content Validity)

Validitas isi memastikan bahwa semua pertanyaan dalam survei relevan dan mencakup semua aspek layanan akademik yang ingin kita evaluasi, seperti KRS online, bimbingan akademik, pelayanan administrasi, akses informasi akademik, dan bantuan penyelesaian studi. Setiap pertanyaan disusun berdasarkan pedoman yang sudah ada di penelitian sebelumnya, untuk memastikan semuanya sesuai dengan layanan yang ingin dinilai.

Reliabilitas Kuesioner

Reliabilitas mengukur seberapa konsisten kuesioner dalam mengukur hal yang sama. Jika kuesioner yang sama digunakan di waktu berbeda atau oleh responden berbeda, hasilnya harus tetap konsisten.

Untuk menguji reliabilitas, kita bisa menggunakan cara manual dengan melihat hasil dari suatu pertanyaan jika hasilnya tidak stabil(misalnya jawabannya sanagat berbeda beda padahal mendapatkan pengalaman yang sama, berarti pertanyaannya membingungkan dan kurang jelas) atau bisa juga menggunakan Cronbach’s Alpha.

Jika reliabilitas rendah, kita bisa:

  • Menghapus pertanyaan yang tidak relevan

  • Memperbaiki pertanyaan yang kurang jelas

  • Menambahkan pertanyaan untuk melengkapi pengukuran

Dengan kuesioner yang reliable, kita bisa yakin bahwa hasil survei mencerminkan pandangan responden secara konsisten dan akurat.

Penyesuaian Berdasarkan Hasil Validasi

Jika ada pertanyaan yang ternyata tidak valid atau kurang konsisten, tim survey akan melakukan perbaikan. Misalnya, menghapus atau mengganti pertanyaan yang kurang tepat, atau menambahkan pertanyaan baru supaya kuesioner bisa mengukur kepuasan mahasiswa dengan lebih akurat.


IV. Strategi Distribusi dan Sampling

Dalam pelaksanaan survei ini, distribusi kuesioner dilakukan secara online menggunakan platform Google Form. Tautan kuesioner dibagikan melalui berbagai media komunikasi digital, seperti grup WhatsApp kelas, grup angkatan, dan media sosial (misalnya Instagram dan Telegram). Tujuannya adalah untuk menjangkau mahasiswa dari berbagai program studi dan angkatan secara lebih luas dan efisien.

Survei ini menggunakan metode non-probability sampling dengan teknik convenience sampling, yaitu pemilihan responden dilakukan berdasarkan kemudahan akses dan ketersediaan responden. Mahasiswa yang bersedia dan dapat diakses melalui distribusi online dipersilakan untuk mengisi kuesioner secara sukarela.

Teknik ini dipilih karena:

  • Memungkinkan pengumpulan data dengan cepat dan mudah

  • Cocok untuk platform online seperti Google Form

  • Efisien dari segi waktu dan sumber daya

Meskipun metode ini tidak mewakili seluruh populasi secara acak, namun tetap memberikan gambaran umum mengenai tingkat kepuasan mahasiswa terhadap layanan akademik.

Populasi dalam survei ini adalah seluruh mahasiswa aktif di kampus tempat penelitian dilakukan.

Untuk menentukan jumlah sampel yang ideal, digunakan rumus Slovin sebagai pendekatan, yaitu:

\[ n = \frac{N}{1 + Ne^2} \]

Keterangan:
- n = jumlah sampel
- N = jumlah populasi
- e = margin of error (biasanya 0,1 atau 10%)

Contoh:
Jika jumlah mahasiswa aktif (N) adalah 1.000 orang dan margin of error 10%, maka:

\[ n = \frac{1000}{1 + 1000(0,1)^2} = \frac{1000}{1 + 10} = \frac{1000}{11} \approx 91 \]

Jadi, jumlah responden idealnya sekitar 91 orang untuk populasi 1.000 mahasiswa.

Walaupun metode convenience sampling tidak menggunakan pemilihan acak, jumlah responden tetap diupayakan mendekati angka tersebut agar hasil survei tetap relevan dan bisa mewakili kondisi umum.

IV. Simulasi data dan analisis awal

Simulasi Data Dummy
Data awal berikut merupakan hasil simulasi pengisian kuesioner oleh responden, mewakili berbagai karakteristik mahasiswa (jenis kelamin, semester, jenjang).

Contoh Data Responden(Skala 1–5)

karena dalam questioner saya yang menggunkan skala 1-5 mewakili penilaian tentang nilai kepuasan dalam krs dan konsisten bahwa (1 artinya sangat kurang dan 5 sangat baik). dalam data dummy ini misalkan hasil dari jawaban yang skala 1-5 dirata2 persub materi yang ingin di tanyakan

No KRS Bimbingan Administrasi Info Akademik Penyelesaian Studi
1 4 4 3 4 4
2 5 4 4 5 4
3 3 3 3 3 4
4 4 5 4 4 5
5 3 3 2 4 3
6 4 4 4 4 5
7 5 5 5 5 4
8 3 3 4 3 4
9 4 3 3 4 3
10 4 4 4 3 4
11 3 4 2 4 5
12 4 4 4 5 5
13 5 5 4 5 5
14 3 2 3 3 3
15 4 4 5 4 4
16 3 3 3 4 4
17 5 4 4 5 4
18 4 4 4 4 5
19 3 3 2 3 3
20 4 5 4 5 5

Rata-Rata Setiap Aspek

Aspek Layanan Rata-Rata
KRS Online 3.85
Bimbingan Akademik 3.80
Pelayanan Administrasi 3.55
Akses Informasi Akademik 4.00
Penyelesaian Studi 4.15

Interpretasi Awal:

  • Rata-rata tertinggi terdapat pada aspek Penyelesaian Studi (4.15), menunjukkan bahwa sebagian besar mahasiswa merasa cukup puas dengan dukungan akademik menjelang akhir studi mereka.

  • Nilai terendah berada pada Administrasi Akademik (3.55), yang bisa menjadi indikasi bahwa bagian ini perlu perhatian lebih untuk ditingkatkan.

Pembahasan dan Analisis Lanjutan

Berdasarkan data simulasi yang telah dianalisis, dapat disimpulkan bahwa persepsi mahasiswa terhadap layanan akademik secara umum tergolong positif. Nilai rata-rata dari setiap aspek berada di atas angka 3.5, yang menunjukkan bahwa mahasiswa merasa cukup puas hingga puas terhadap layanan yang diberikan.

Namun, masih terdapat perbedaan tingkat kepuasan antar aspek layanan, yang dapat dijadikan bahan evaluasi untuk peningkatan kualitas layanan di masa mendatang.

  • Penyelesaian Studi (4.15): Aspek ini mendapat nilai tertinggi. Hal ini menunjukkan bahwa mahasiswa merasa terbantu dengan adanya layanan konsultasi akademik, penyusunan tugas akhir, hingga proses administrasi kelulusan.

  • Akses Informasi Akademik (4.00): Rata-rata yang tinggi menunjukkan bahwa informasi mengenai perkuliahan, jadwal, dan akademik lainnya cukup mudah diakses dan dipahami.

  • KRS Online (3.85) dan Bimbingan Akademik (3.80): Kedua aspek ini menunjukkan tingkat kepuasan yang baik, namun masih dapat ditingkatkan terutama dalam hal fleksibilitas bimbingan dan sistem KRS yang terkadang mengalami kendala teknis.

  • Administrasi Akademik (3.55): Nilai ini menjadi yang terendah dalam survei. Hal ini bisa jadi disebabkan oleh kurangnya efisiensi pelayanan di bagian administrasi, antrean panjang, atau kurang jelasnya alur birokrasi.

Kesimpulan

Survei ini memberikan gambaran umum mengenai tingkat kepuasan mahasiswa terhadap layanan akademik di kampus. Dari hasil analisis:

  1. Mahasiswa secara umum merasa puas terhadap layanan yang diberikan, terutama dalam hal penyelesaian studi dan akses informasi akademik.
  2. Layanan administrasi akademik perlu mendapat perhatian lebih, karena memiliki tingkat kepuasan paling rendah.
  3. Strategi distribusi online melalui berbagai platform komunikasi terbukti efektif untuk menjaring responden dari berbagai latar belakang.

Saran

  1. Peningkatan Pelayanan Administrasi: Perlu dilakukan evaluasi sistem pelayanan administrasi, termasuk SOP, kecepatan layanan, dan keterbukaan informasi.

  2. Optimalisasi Bimbingan Akademik: Jadwal dan komunikasi antara dosen pembimbing dan mahasiswa bisa diperbaiki agar lebih fleksibel dan responsif.

  3. Pemeliharaan dan Pengembangan Sistem KRS Online: Pastikan sistem tetap stabil dan user-friendly, terutama saat periode KRS.

  4. Peningkatan Distribusi Informasi Akademik: Terus perbarui dan sediakan informasi akademik secara rutin dan menyeluruh melalui media kampus resmi.

LS0tDQp0aXRsZTogIlR1Z2FzIEluZGl2aWR1ICINCnN1YnRpdGxlOiAiVWppYW4gVGVuZ2FoIFNlbWVzdGVyIC1UZWtuaWsgc2FtcGxpbmcgZGFuIFN1cnZleSINCmF1dGhvcjogIk9saXZpYSBNZWlsaW5kYSBEYXZ0aW4gUGVzaXJlcm9uIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcyANCiAgICBjc3M6ICJzdHlsZS5jc3MiDQotLS0NCg0KPGltZyBzcmM9ImxpdmlrYXRhbnlhLmpwZyIgd2lkdGg9IjMwMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87IiBhbHQ9IkZvdG8gRGlyaSI+DQoNCi0tLQ0KDQojIDEuU2ltdWxhc2kgS2VzYWxhaGFuIFNhbXBsaW5nIGRpIExhcGFuZ2FuDQoNCkFuZGFpa2FuIEFuZGEgYWRhbGFoIGJhZ2lhbiBkYXJpIHRpbSByaXNldCBsYXBhbmdhbiB5YW5nIGRpbWludGEgdW50dWsgbWVsYWt1a2FuDQpzdXJ2ZWkgdGluZ2thdCBwZW5nZ3VuYWFuIGFwbGlrYXNpIHRyYW5zcG9ydGFzaSBvbmxpbmUgZGkgMyBrb3RhIG1lbmVuZ2FoIGRpIFN1bWF0ZXJhLg0KVGFyZ2V0IHNhbXBlbCB0b3RhbCBhZGFsYWggNjAwIHJlc3BvbmRlbiwgbWFzaW5nLW1hc2luZyAyMDAgcGVyIGtvdGEuIFRldGFwaSwgc2V0ZWxhaA0KMiBtaW5nZ3UgbWVsYWt1a2FuIHN1cnZlaSBhbmRhIG1lbmVtdWthbjoNCg0KLSBEaSBLb3RhIEEsIHRpbSBiZXJoYXNpbCBtZW5kYXBhdGthbiAyNTAgcmVzcG9uZGVuLg0KDQotIERpIEtvdGEgQiwgaGFueWEgMTIwIHJlc3BvbmRlbiB5YW5nIGRhcGF0IGRpd2F3YW5jYXJhaS4NCg0KLSBEaSBLb3RhIEMsIDE4MCByZXNwb25kZW4uDQoNCipJbnN0cnVrc2kqOg0KDQojIyAqKmEuKSBKZWxhc2thbiBkdWEgamVuaXMga2VzYWxhaGFuIHNhbXBsaW5nIHlhbmcgdGVyamFkaSBiZXJkYXNhcmthbiBzaXR1YXNpIGluaS4qKg0KDQojIyMgKipLZXNhbGFoYW4gMS4gU2VsZWN0aW9uIEJpYXMqKg0KKipTZWxlY3Rpb24gQmlhcyoqIOKGkiB0ZXJqYWRpIHNhYXQgc2FtcGVsIHRpZGFrIG1ld2FraWxpIHBvcHVsYXNpIHNlY2FyYSBwcm9wb3JzaW9uYWwuDQoNCktlc2FsYWhhbiBpbmkgdGVyamFkaSBrYXJlbmEgKiprb21wb3Npc2kgcmVzcG9uZGVuIGRhcmkgdGlhcCBrb3RhIHRpZGFrIHNlc3VhaSB0YXJnZXQqKi4gSGFydXNueWEgbWFzaW5nLW1hc2luZyBrb3RhIG1lbnl1bWJhbmcgMjAwIHJlc3BvbmRlbiBkYXJpIHRvdGFsIDYwMCwgdGFwaSBoYXNpbCB5YW5nIGRpZGFwYXQgOg0KDQotIEtvdGEgQToga2VsZWJpaGFuLCBrYXJlbmEgaGFzaWxueWEgKDI1MCkg4oaSICoqb3ZlcnJlcHJlc2VudGF0aW9uKioNCg0KLSBLb3RhIEI6IGtla3VyYW5nYW4sIGthcmVuYSBoYXNpbG55YSAoMTIwKSDihpIgKip1bmRlcmNvdmVyYWdlKioNCg0KLSBLb3RhIEM6IHNlZGlraXQga3VyYW5nLCBrYXJlbmEgaGFzaWxueWEgKDE4MCkNCg0KKipQZW55ZWJhYjoqKiAgDQotICoqT3ZlcnJlcHJlc2VudGF0aW9uKiogZGkgS290YSBBICANCi0gKipVbmRlcmNvdmVyYWdlKiogZGkgS290YSBCIGRhbiBDICANCi0gQmlzYSBqYWRpIGp1Z2Ega2FyZW5hIHRpbSBsZWJpaCBtdWRhaCBtZW5qYW5na2F1IHJlc3BvbmRlbiBkaSBLb3RhIEEgZGliYW5kaW5na2FuIGtvdGEgbGFpbi4NCg0KDQojIyMgKipLZXNhbGFoYW4gMi4gTm9uLVJlc3BvbnNlIEJpYXMqKiAgDQoqKk5vbi1SZXNwb25zZSBCaWFzKiog4oaSIG11bmN1bCBzYWF0IGthcmFrdGVyaXN0aWsgb3JhbmcgeWFuZyB0aWRhayBtZXJlc3BvbnMgYmVyYmVkYSBkZW5nYW4geWFuZyBtZXJlc3BvbnMuDQogDQpLZXNhbGFoYW4gaW5pIHRlcmphZGkga2FyZW5hICoqc2ViYWdpYW4gb3JhbmcgeWFuZyBzZWhhcnVzbnlhIG1lbmphZGkgcmVzcG9uZGVuIHRpZGFrIGJlcnBhcnRpc2lwYXNpKiouIEhhbCBpbmkgcGFsaW5nIHRlcmxpaGF0IGRpICoqS290YSBCKiosIHlhbmcgY3VtYSBkYXBldCAxMjAgcmVzcG9uZGVuIGRhcmkgdGFyZ2V0IDIwMC4gIA0KQWRhIGtlbXVuZ2tpbmFuIG9yYW5nLW9yYW5nIGRpIGtvdGEgdGVyc2VidXQgKiptZW5vbGFrIGRpd2F3YW5jYXJhaSoqLCAqKnRpZGFrIHRlcnNlZGlhKiosIGF0YXUgKip0aWRhayBkYXBhdCBkaWFrc2VzKiogb2xlaCB0aW0gc3VydmVpLg0KDQoqKlBlbnllYmFiOioqICANCi0gKipTZWxmLXNlbGVjdGlvbioqIOKGkiBoYW55YSBzZWJhZ2lhbiBvcmFuZyB5YW5nIGJlcnNlZGlhIG1lbmdpc2kgc3VydmVpICANCi0gKipVbmRlcmNvdmVyYWdlKiog4oaSIHNlYmFnaWFuIGtlbG9tcG9rIGRhbGFtIHBvcHVsYXNpIEtvdGEgQiBtdW5na2luIHRpZGFrIHRlcnNlbnR1aCBzYW1hIHNla2FsaQ0KDQoNCiMjICoqYi4pIEppa2EgQW5kYSBoYXJ1cyBtZW55ZXN1YWlrYW4gYm9ib3QgdW50dWsgbWVuZ2VtYmFsaWthbiByZXByZXNlbnRhc2kgcHJvcG9yc2lvbmFsLGJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVuZ2hpdHVuZ255YT8qKg0KDQpVbnR1ayBtZW55YW1ha2FuIGtlbWJhbGkga29udHJpYnVzaSBkYXJpIHRpYXAga290YSBiaWFyIHNlc3VhaSBkZW5nYW4ganVtbGFoIHlhbmcgZGl0YXJnZXRrYW4gc2VqYWsgYXdhbCwgcGVybHUgbWVuZ2hpdHVuZyAqKmJvYm90ICh3ZWlnaHRpbmcpKiouIEJvYm90IGluaSBkaWRhcGF0IGRlbmdhbiBtZW1iYW5kaW5na2FuICoqcHJvcG9yc2kgeWFuZyBzZWhhcnVzbnlhKiogZGFuICoqcHJvcG9yc2kgeWFuZyBzZWthcmFuZyBkaWRhcGF0KiogZGFyaSBtYXNpbmctbWFzaW5nIGtvdGEuDQoNCiMjIyAqKkxhbmdrYWggMTogSGl0dW5nIFByb3BvcnNpIHlhbmcgU2VoYXJ1c255YSBUaWFwIEtvdGEqKiAgDQpUYXJnZXQgZGFyaSBtYXNpbmctbWFzaW5nIGtvdGEgYWRhbGFoIDIwMCBvcmFuZyBkYXJpIHRvdGFsIDYwMCByZXNwb25kZW4uIEphZGk6DQoNClxbDQpcdGV4dHtQcm9wb3JzaSBzZWhhcnVzbnlhIHRpYXAga290YX0gPSBcZnJhY3syMDB9ezYwMH0gPSAweyx9MzMzDQpcXQ0KDQojIyMgKipMYW5na2FoIDI6IEhpdHVuZyBQcm9wb3JzaSB5YW5nIERpZGFwYXQgU2VrYXJhbmcgZGFyaSBUaWFwIEtvdGEqKiAgDQpKdW1sYWggcmVzcG9uZGVuIHlhbmcgYmVyaGFzaWwgZGlrdW1wdWxrYW46DQoNCi0gS290YSBBOiAyNTAgcmVzcG9uZGVuICANCg0KLSBLb3RhIEI6IDEyMCByZXNwb25kZW4gIA0KDQotIEtvdGEgQzogMTgwIHJlc3BvbmRlbiAgDQoNClRvdGFsIGtlc2VsdXJ1aGFuIHlhbmcgdGVya3VtcHVsOg0KXFsNCjI1MCArIDEyMCArIDE4MCA9IDU1MCByZXNwb25kZW4NClxdDQoNClByb3BvcnNpIGRhcmkgbWFzaW5nLW1hc2luZyBrb3RhIGJpc2EgZGloaXR1bmcgZGVuZ2FuIHJ1bXVzOiAgDQpcWw0KXHRleHR7UHJvcG9yc2kga290YX0gPSBcZnJhY3tcdGV4dHtKdW1sYWggcmVzcG9uZGVuIGtvdGF9fXtcdGV4dHtUb3RhbCByZXNwb25kZW4gbWFzdWt9fQ0KXF0NCg0KUHJvcG9yc2kgeWFuZyBkaWRhcGF0IHNla2FyYW5nOg0KDQotICoqS290YSBBKiogIA0KICBcWw0KICBcdGV4dHtQcm9wb3JzaSBBfSA9IFxmcmFjezI1MH17NTUwfSBcYXBwcm94IDB7LH00NTUNCiAgXF0NCg0KLSAqKktvdGEgQioqICANCiAgXFsNCiAgXHRleHR7UHJvcG9yc2kgQn0gPSBcZnJhY3sxMjB9ezU1MH0gXGFwcHJveCAweyx9MjE4DQogIFxdDQoNCi0gKipLb3RhIEMqKiAgDQogIFxbDQogIFx0ZXh0e1Byb3BvcnNpIEN9ID0gXGZyYWN7MTgwfXs1NTB9IFxhcHByb3ggMHssfTMyNw0KICBcXQ0KDQojIyMgKipMYW5na2FoIDM6IEhpdHVuZyBCb2JvdCBQZW55ZXN1YWlhbioqDQpCb2JvdCBkaWd1bmFrYW4gYnVhdCBtZW55ZXN1YWlrYW4ga29udHJpYnVzaSB0aWFwIGtvdGEuIFJ1bXVzbnlhOg0KDQpcWw0KXHRleHR7Qm9ib3R9ID0gXGZyYWN7XHRleHR7UHJvcG9yc2kgeWFuZyBTZWhhcnVzbnlhfX17XHRleHR7UHJvcG9yc2kgeWFuZyBEaWRhcGF0IFNla2FyYW5nfX0NClxdDQoNCkhhc2lsIHBlcmhpdHVuZ2FuOg0KDQotICoqS290YSBBKiogIA0KICBcWw0KICBcZnJhY3sweyx9MzMzfXsweyx9NDU1fSDiiYggMHssfTczMg0KICBcXQ0KDQotICoqS290YSBCKiogIA0KICBcWw0KICBcZnJhY3sweyx9MzMzfXsweyx9MjE4fSDiiYggMXssfTUyNw0KICBcXQ0KDQotICoqS290YSBDKiogIA0KICBcWw0KICBcZnJhY3sweyx9MzMzfXsweyx9MzI3fSDiiYggMXssfTAxOA0KICBcXQ0KDQoNCiMjIyMgKipQZW5qZWxhc2FuIEhhc2lsIEJvYm90KioNCg0KSGFzaWwgYm9ib3QgaW5pIGRpcGFrYWkgdW50dWsgKiptZW55ZXN1YWlrYW4gcGVuZ2FydWggKGtvbnRyaWJ1c2kpIGRhcmkgbWFzaW5nLW1hc2luZyByZXNwb25kZW4qKiBkYWxhbSBhbmFsaXNpcywgc3VwYXlhIHNlaW1iYW5nIHNlc3VhaSB0YXJnZXQgYXdhbC4NCg0KLSAqKktvdGEgQSoqIGJvYm90bnlhICoqPCAxKiogKCoqMCw3MzIqKiksIGFydGlueWEganVtbGFoIHJlc3BvbmRlbiBkYXJpIGtvdGEgaW5pICoqa2VsZWJpaGFuKiogZGliYW5kaW5nIHRhcmdldC4gTWFrYSwgKipzZXRpYXAgcmVzcG9uZGVuIGRhcmkgS290YSBBIGFrYW4gZGliZXJpIGJvYm90IGxlYmloIGtlY2lsKiosIHN1cGF5YSBrb250cmlidXNpbnlhIGRpa3VyYW5naSBkYWxhbSBhbmFsaXNpcy4NCg0KLSAqKktvdGEgQioqIGJvYm90bnlhICoqPiAxKiogKCoqMSw1MjcqKiksIGFydGlueWEganVtbGFoIHJlc3BvbmRlbiBkYXJpIGtvdGEgaW5pICoqa3VyYW5nKiogZGliYW5kaW5nIHRhcmdldC4gTWFrYSwgKipzZXRpYXAgcmVzcG9uZGVuIGRhcmkgS290YSBCIGFrYW4gZGliZXJpIGJvYm90IGxlYmloIGJlc2FyKiosIHN1cGF5YSBrb250cmlidXNpbnlhIGRpdGluZ2thdGthbi4NCg0KLSAqKktvdGEgQyoqIGJvYm90bnlhIG1lbmRla2F0aSAqKjEqKiAoKioxLDAxOCoqKSwgYXJ0aW55YSBqdW1sYWggcmVzcG9uZGVubnlhICoqaGFtcGlyIHNlc3VhaSoqIGRlbmdhbiB0YXJnZXQuIEphZGksICoqa29udHJpYnVzaW55YSBoYW1waXIgdGlkYWsgZGl1YmFoKiogZGFsYW0gYW5hbGlzaXMuDQoNCi0tLQ0KDQotLS0NCg0KIyAyLiBNZW5kZXNhaW4gU3VydmVpIGRlbmdhbiBQZW1ib2JvdGFuIFdha3R1IFB1bmNhaw0KDQpNZW5kZXNhaW4gU3VydmVpIGRlbmdhbiBQZW1ib2JvdGFuIFdha3R1IFB1bmNhayBCdWF0bGFoIGRlc2FpbiByYW5jYW5nYW4gc3VydmVpIHRlbnRhbmcgcGVyc2Vwc2kga2VueWFtYW5hbiBwZW5nZ3VuYSBvamVrIG9ubGluZSBzYWF0IGphbSBzaWJ1ayAoMDcuMDDigJMwOS4wMCBkYW4gMTcuMDDigJMxOS4wMCkuDQoNCipJbnN0cnVrc2kqOg0KDQojIyBhLikgRGVzYWluIHBlbmRla2F0YW4gc2FtcGxpbmcgeWFuZyBtZW11bmdraW5rYW4gQW5kYSBtZW5hbmdrYXAgcGVyc2Vwc2kgcGVuZ2d1bmEgc2VjYXJhIHJlcHJlc2VudGF0aWYgcGFkYSBqYW0gc2lidWssIHRhbnBhIG1lbGFrdWthbiBzdXJ2ZWkgc2VwYW5qYW5nIGhhcmkuDQoNClVudHVrIG1lbmFuZ2thcCBwZXJzZXBzaSBwZW5nZ3VuYSBzZWNhcmEgcmVwcmVzZW50YXRpZiBzZWxhbWEgamFtIHNpYnVrIHRhbnBhIG1lbGFrdWthbiBzdXJ2ZWkgc2VwYW5qYW5nIGhhcmksIHBlbmRla2F0YW4geWFuZyBkaWd1bmFrYW4gYWRhbGFoICoqX3N0cmF0aWZpZWQgc2FtcGxpbmdfKiouIFBvcHVsYXNpIHBlbmdndW5hIG9qZWsgb25saW5lIGRpYmFnaSBrZSBkYWxhbSBkdWEgc3RyYXRhIGJlcmRhc2Fya2FuIHdha3R1IHNpYnVrLCB5YWl0dToNCg0KLSAqKlN0cmF0YSAxOiBQYWdpIGhhcmkgKDA3LjAw4oCTMDkuMDApKioNCi0gKipTdHJhdGEgMjogU29yZSBoYXJpICgxNy4wMOKAkzE5LjAwKSoqDQoNClBlbWJhZ2lhbiBzdHJhdGEgaW5pIGJlcnR1anVhbiB1bnR1ayBtZW1hc3Rpa2FuIGJhaHdhIG1hc2luZy1tYXNpbmcgd2FrdHUgc2lidWsgdGVyd2FraWxpIGRlbmdhbiBwcm9wb3JzaW9uYWwgZGFsYW0gc3VydmVpLiBQZW5ndW1wdWxhbiBkYXRhIGhhbnlhIGRpbGFrdWthbiBwYWRhIGphbS1qYW0gdGVyc2VidXQgYWdhciBoYXNpbG55YSBiZW5hci1iZW5hciBtZXJlZmxla3Npa2FuIHBlcnNlcHNpIHBlbmdndW5hIHBhZGEgd2FrdHUgcGFkYXQobWlzYWxueWEsIHBla2VyamEgYmVyYW5na2F0IGtlcmphIHZzLiBwdWxhbmcga2VyamEpLg0KDQoNCiMjICoqYi4pIFNlcnRha2FuIHJhbmNhbmdhbiB3YWt0dSwgbWV0b2RlIHBlbWlsaWhhbiByZXNwb25kZW4sIGRhbiBqdXN0aWZpa2FzaSBwZW1pbGloYW4gdW5pdCBzYW1wbGluZy4qKg0KDQoqKldha3R1IFBlbGFrc2FuYWFuIFN1cnZlaSoqDQoNCkRpbGFrdWthbiBoYW55YSBwYWRhIGphbSBzaWJ1ayBzZXN1YWkgZGVuZ2FuIHBlbWJhZ2lhbiBzdHJhdGEgd2FrdHU6DQoNCi0gKipQYWdpIChTdHJhdGEgMSk6IDA3LjAw4oCTMDkuMDAqKiAgDQotICoqU29yZSAoU3RyYXRhIDIpOiAxNy4wMOKAkzE5LjAwKioNCg0KU3VydmVpIGJlcmxhbmdzdW5nIHNlbGFtYSAqKjUgaGFyaSBrZXJqYSAoU2VuaW7igJNKdW1hdCkqKiB1bnR1ayBtZW5hbmdrYXAgdmFyaWFzaSBha3Rpdml0YXMgaGFyaWFuIHBlbmdndW5hLg0KDQoqKk1ldG9kZSBQZW1pbGloYW4gUmVzcG9uZGVuKioNCg0KLSAqKkxva2FzaToqKiBUaXRpayBha3Rpdml0YXMgdGluZ2dpIG9qZWsgb25saW5lLCBzZXBlcnRpOg0KICAtIFN0YXNpdW4ga2VyZXRhIC8gaGFsdGUgYnVzDQogIC0gS2F3YXNhbiBwZXJrYW50b3Jhbg0KICAtIEthbXB1cw0KICAtIFB1c2F0IHBlcmJlbGFuamFhbg0KDQotICoqTWV0b2RlIFNhbXBsaW5nOioqICANCiAgLSBNZW5nZ3VuYWthbiAqKnN0cmF0aWZpZWQgc2FtcGxpbmcgYmVyZGFzYXJrYW4gd2FrdHUgKHBhZ2kgZGFuIHNvcmUpKiogIA0KICAtIERhbGFtIG1hc2luZy1tYXNpbmcgc3RyYXRhLCBkaWxha3VrYW4gKippbnRlcmNlcHQgc2FtcGxpbmcqKiwgeWFpdHUgcGV3YXdhbmNhcmEgbGFuZ3N1bmcgbWVueWFwYSBwZW5nZ3VuYSBvamVrIG9ubGluZSBkaSBsb2thc2kuDQoNCi0gKipLcml0ZXJpYSBSZXNwb25kZW46KioNCiAgLSAqKlVzaWEg4omlIDE3IHRhaHVuKioNCiAgLSAqKkJhcnUgc2FqYSBtZW5nZ3VuYWthbiBsYXlhbmFuIG9qZWsgb25saW5lIHBhZGEgamFtIHRlcnNlYnV0KioNCiAgLSAqKkJlcnNlZGlhIG1lbmdpa3V0aSB3YXdhbmNhcmEgc2luZ2thdCAowrEz4oCTNSBtZW5pdCkqKg0KDQoqKkp1c3RpZmlrYXNpIFBlbWlsaWhhbiBVbml0IFNhbXBsaW5nKioNCg0KLSAqKlVuaXQgc2FtcGxpbmcgdXRhbWE6KiogUGVuZ2d1bmEgb2playBvbmxpbmUgYWt0aWYgKip5YW5nIGJlbmFyLWJlbmFyIHNlZGFuZyBhdGF1IGJhcnUgc2FqYSBtZW5nZ3VuYWthbiBsYXlhbmFuIHBhZGEgamFtIHNpYnVrLioqDQotIERlbmdhbiBtZWxha3VrYW4gKippbnRlcnNlcHNpIGxhbmdzdW5nIGRpIHRpdGlrIGtlcmFtYWlhbioqLCBraXRhIG1lbmdoaW5kYXJpIGJpYXMgbWVtb3JpIChtaXNhbG55YSByZXNwb25kZW4geWFuZyBzdWRhaCBsdXBhIHBlbmdhbGFtYW4gc2ViZWx1bW55YSkuDQotICoqU3RyYXRpZmlrYXNpIGJlcmRhc2Fya2FuIHdha3R1KiogbWVuamFtaW4gcmVwcmVzZW50YXNpIHBlcnNlcHNpIGRhcmkgbWFzaW5nLW1hc2luZyBwZXJpb2RlIHNpYnVrLg0KLSBQZW5kZWthdGFuIGluaSBsZWJpaCBlZmlzaWVuIGthcmVuYToNCiAgLSBUaWRhayBwZXJsdSBzdXJ2ZWkgc2VwYW5qYW5nIGhhcmkuDQogIC0gRm9rdXMgbGFuZ3N1bmcga2Uga2Vsb21wb2sgcGVuZ2d1bmEgeWFuZyBwYWxpbmcgcmVsZXZhbiBkZW5nYW4gdG9waWsgc3R1ZGk6ICoqa2VueWFtYW5hbiBzYWF0IGphbSBzaWJ1ay4qKg0KDQoNCiMjICoqYy4pIEplbGFza2FuIGJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVueWVzdWFpa2FuIGhhc2lsIHN1cnZlaSBqaWthIDYwJSByZXNwb25kZW4gYmVyYXNhbCBkYXJpIHBhZ2kgaGFyaSwgc2VtZW50YXJhIDQwJSBkYXJpIHNvcmUgaGFyaSwgc2VkYW5na2FuIGRhdGEgaGlzdG9yaXMgbWVudW5qdWtrYW4gcGVuZ2d1bmEgb2playBvbmxpbmUgc2FhdCBzb3JlIGhhcmkgZHVhIGthbGkgbGViaWggYmFueWFrIGRpYmFuZGluZyBwYWdpLioqDQoNCioqTWFzYWxhaDoqKg0KDQpIYXNpbCBzdXJ2ZWkgbWVudW5qdWtrYW4gYmFod2E6DQoNCi0gKio2MCUgcmVzcG9uZGVuIGJlcmFzYWwgZGFyaSBwYWdpIGhhcmkqKg0KDQotICoqNDAlIHJlc3BvbmRlbiBiZXJhc2FsIGRhcmkgc29yZSBoYXJpKioNCg0KUGFkYWhhbCwgZGFyaSBkYXRhIHNlYmVsdW1ueWEgKGRhdGEgaGlzdG9yaXMpLCBraXRhIHRhaHUgYmFod2E6DQoNCi0gKipQZW5nZ3VuYSBvamVrIG9ubGluZSBkaSBzb3JlIGhhcmkgZHVhIGthbGkgbGViaWggYmFueWFrIGRpYmFuZGluZyBwYWdpIGhhcmkqKg0KDQpBcnRpbnlhLCBkYWxhbSBrZW55YXRhYW46DQoNCi0gUGVuZ2d1bmEgcGFnaSA9IDEgDQoNCi0gUGVuZ2d1bmEgc29yZSA9IDIgYmFnaWFuDQoNCkphZGksIHBlbmdndW5hIHNvcmUgKipsZWJpaCBiYW55YWsqKiwgdGFwaSBkYWxhbSBzdXJ2ZWkgbWFsYWggKipyZXNwb25kZW4gcGFnaW55YSB5YW5nIGxlYmloIGJhbnlhayoqLiBJbmkgYmlraW4gaGFzaWwgc3VydmVpICoqdGlkYWsgc2VpbWJhbmcqKiBkYW4gcGVybHUgZGlzZXN1YWlrYW4uDQoNCg0KIyMjICoqTGFuZ2thaCBQZW55ZXN1YWlhbiAoUGVtYm9ib3RhbikqKg0KDQoqKmxhbmdrYWggMS4gTWVuZW50dWthbiBQcm9wb3JzaSBJZGVhbCBTZXN1YWkgRGF0YSBIaXN0b3JpczoqKg0KDQpLYXJlbmEgc29yZSBoYXJpIGR1YSBrYWxpIGxlYmloIHJhbWFpLCBtYWthOg0KDQotIFBhZ2kgPSAxIGJhZ2lhbiBkYXJpIHRvdGFsIDMg4oaSICoqMzMsMzMlKioNCg0KLSBTb3JlID0gMiBiYWdpYW4gZGFyaSB0b3RhbCAzIOKGkiAqKjY2LDY3JSoqDQoNCioqTGFuZ2thaCAyLiBCYW5kaW5na2FuIGRlbmdhbiBQcm9wb3JzaSBSZXNwb25kZW4gZGkgU3VydmVpOioqDQoNCi0gUGFnaTogKio2MCUgcmVzcG9uZGVuKioNCi0gU29yZTogKio0MCUgcmVzcG9uZGVuKioNCg0KKipsYW5na2FoIDMuIEhpdHVuZyBCb2JvdCBQZW55ZXN1YWlhbjoqKg0KDQpLaXRhIHBha2FpIHJ1bXVzOg0KXFsNClx0ZXh0e0JvYm90fSA9IFxmcmFje1x0ZXh0e1Byb3BvcnNpIElkZWFsIFNlc3VhaSBEYXRhIEhpc3RvcmlzfX17XHRleHR7UHJvcG9yc2kgUmVzcG9uZGVuIGRpIFN1cnZlaX19DQpcXQ0KDQotICoqQm9ib3QgdW50dWsgcmVzcG9uZGVuIHBhZ2k6KioNCg0KXFsNClx0ZXh0e0JvYm90IFBhZ2l9ID0gXGZyYWN7MHssfTMzM317MHssfTZ9ID0gMHssfTU1NQ0KXF0NCg0KLSAqKkJvYm90IHVudHVrIHJlc3BvbmRlbiBzb3JlOioqDQoNClxbDQpcdGV4dHtCb2JvdCBTb3JlfSA9IFxmcmFjezB7LH02Njd9ezB7LH00fSA9IDF7LH02NjcNClxdDQoNCiMjIyMgKipQZW5qZWxhc2FuIFNlZGVyaGFuYToqKg0KDQotICoqUmVzcG9uZGVuIFBhZ2kqKiBtZW1pbGlraSBib2JvdCAqKjwgMSoqICgqKjAsNTU1KiopICANCiAgQXJ0aW55YSwganVtbGFoIHJlc3BvbmRlbiB5YW5nIG1lbmdpc2kgZGkgcGFnaSBoYXJpICoqbGViaWggYmFueWFrIGRhcmkgeWFuZyBzZWhhcnVzbnlhKiouICANCiAgTWFrYSwgKipzZXRpYXAgamF3YWJhbiBkYXJpIHJlc3BvbmRlbiBwYWdpIGFrYW4gZGlrYWxpa2FuIGRlbmdhbiBhbmdrYSB5YW5nIGxlYmloIGtlY2lsICgwLDU1NSkqKiBzdXBheWEga29udHJpYnVzaW55YSBkYWxhbSBhbmFsaXNpcyAqKnRpZGFrIHRlcmxhbHUgbWVuZG9taW5hc2kqKi4NCg0KLSAqKlJlc3BvbmRlbiBTb3JlKiogbWVtaWxpa2kgYm9ib3QgKio+IDEqKiAoKioxLDY2NyoqKSAgDQogIEFydGlueWEsIGp1bWxhaCByZXNwb25kZW4geWFuZyBtZW5naXNpIGRpIHNvcmUgaGFyaSAqKnRlcmxhbHUgc2VkaWtpdCBkaWJhbmRpbmcgeWFuZyBkaXRhcmdldGthbioqLiAgDQogIE1ha2EsICoqc2V0aWFwIGphd2FiYW4gZGFyaSByZXNwb25kZW4gc29yZSBha2FuIGRpa2FsaWthbiBkZW5nYW4gYW5na2EgeWFuZyBsZWJpaCBiZXNhciAoMSw2NjcpKiogc3VwYXlhIGtvbnRyaWJ1c2lueWEgKipkaXBlcmJlc2FyKiogZGFuIGhhc2lsIGFuYWxpc2lzIHRldGFwIHByb3BvcnNpb25hbC4NCiAgDQpUdWp1YW5ueWEgYWRhbGFoIHN1cGF5YSBoYXNpbCBha2hpcm55YSAqKmxlYmloIHNlaW1iYW5nKiogZGFuICoqc2VzdWFpIGRlbmdhbiBrZW55YXRhYW4qKiwgZGkgbWFuYSBwZW5nZ3VuYSBzb3JlIG1lbWFuZyBsZWJpaCBiYW55YWsuDQoNCi0tLQ0KDQotLS0NCg0KIyAzLk1lbWJ1YXQgTGFwb3JhbiBQZXJhbmNhbmdhbiBJbnN0cnVtZW4gU3VydmVpDQoNCkFuZGEgZGl0dWdhc2thbiBvbGVoIGJpcm8gYWthZGVtaWsga2FtcHVzIHVudHVrIG1lcmFuY2FuZyBpbnN0cnVtZW4gc3VydmVpIHlhbmcNCmJlcnR1anVhbiBtZW5nZXZhbHVhc2kga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWssIHlhbmcNCm1lbmNha3VwIGxheWFuYW4gc2VwZXJ0aTogS1JTIG9ubGluZSwgYmltYmluZ2FuIGFrYWRlbWlrLCBwZWxheWFuYW4gYWRtaW5pc3RyYXNpLCBha3Nlcw0KaW5mb3JtYXNpIGFrYWRlbWlrLCBkYW4gYmFudHVhbiBwZW55ZWxlc2FpYW4gc3R1ZGkuDQoNClRpbSBwZW5lbGl0aSBtZW1pbnRhIEFuZGEgdW50dWs6DQoNCi0gTWVyYW5jYW5nIDI1IHBlcnRhbnlhYW4gdXRhbWEgZGVuZ2FuIHZhcmlhc2kgc2thbGEgZGFuIGJlbnR1ayBwZXJ0YW55YWFuLg0KDQotIE1lcmFuY2FuZyBzaXN0ZW0gdmFsaWRhc2kgaW5zdHJ1bWVuLg0KDQotIE1lbmVudHVrYW4gbWV0b2RlIGRpc3RyaWJ1c2kgZGFuIHBlbmd1amlhbiBrdWVzaW9uZXIgc2VjYXJhIHN0YXRpc3Rpay4NCg0KLSBNZW55aWFwa2FuIHNpbXVsYXNpIHN0cmF0ZWdpIHBlbmdhbWJpbGFuIHNhbXBlbCBkYW4gcGVuZ29sYWhhbiBkYXRhIGF3YWwuDQoNCk91dHB1dCBMYXBvcmFuIHlhbmcgZGloYXJhcGthbiBkYWxhbSBiZW50dWsgbmFyYXRpZiwgbWVuY2FrdXA6DQoNCuKAoiBEZXNhaW4gcGVydGFueWFhbg0KDQrigKIgU2tlbWEgdmFsaWRhc2kNCg0K4oCiIFN0cmF0ZWdpIGRpc3RyaWJ1c2kgZGFuIHNhbXBsaW5nDQoNCuKAoiBTaW11bGFzaSBkYXRhIGRhbiBhbmFsaXNpcyBhd2FsDQoNCiMjICoqTEFQT1JBTiBSQU5DQU5HQU4gU1VSVkVJIEtFUFVBU0FOIE1BSEFTSVNXQSBURVJIQURBUCBMQVlBTkFOIEFLQURFTUlLKioNCg0KIyMjICoqSS4gUGVuZGFodWx1YW4qKg0KDQpMYXlhbmFuIGFrYWRlbWlrIG1lbWVnYW5nIHBlcmFuYW4gcGVudGluZyBkYWxhbSBtZW5kdWt1bmcga2VsYW5jYXJhbiBwcm9zZXMgc3R1ZGkgbWFoYXNpc3dhLiBPbGVoIGthcmVuYSBpdHUsIGV2YWx1YXNpIGJlcmthbGEgdGVyaGFkYXAgbGF5YW5hbiB0ZXJzZWJ1dCBtZW5qYWRpIGtydXNpYWwgdW50dWsgbWVtYXN0aWthbiBiYWh3YSBrZWJ1dHVoYW4gZGFuIGVrc3Bla3Rhc2kgbWFoYXNpc3dhIHRlcnBlbnVoaS4gTGFwb3JhbiBpbmkgYmVydHVqdWFuIHVudHVrIG1lbmdldmFsdWFzaSBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGltYSBhc3BlayB1dGFtYSBsYXlhbmFuIGFrYWRlbWlrLCB5YWl0dToNCg0KMS4gUGVuZ2lzaWFuIEthcnR1IFJlbmNhbmEgU3R1ZGkgKEtSUykgT25saW5lDQoNCjIuIEJpbWJpbmdhbiBBa2FkZW1paw0KDQozLiBQZWxheWFuYW4gQWRtaW5pc3RyYXNpIEFrYWRlbWlrDQoNCjQuIEFrc2VzIEluZm9ybWFzaSBBa2FkZW1paw0KDQo1LiBCYW50dWFuIFBlbnllbGVzYWlhbiBTdHVkaQ0KDQojIyMgKipJSS4gRGVzYWluIEluc3RydW1lbiBTdXJ2ZWkqKg0KDQpTdXJ2ZWkgaW5pIGRpc3VzdW4gdW50dWsgbWVuZ2V2YWx1YXNpIHRpbmdrYXQga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWsgZGkga2FtcHVzLiBTdXJ2ZWkgdGVyZGlyaSBkYXJpIDI1IHBlcnRhbnlhYW4gdXRhbWEgeWFuZyBtZW5jYWt1cCBsaW1hIGFyZWEgbGF5YW5hbiBha2FkZW1paywgc2VydGEgNSBwZXJ0YW55YWFuIGRlbW9ncmFmaXMgdW50dWsgbWVuZ2V0YWh1aSBrYXJha3RlcmlzdGlrIHJlc3BvbmRlbi4NCg0KKipCZW50dWsgUGVydGFueWFhbiBkYWxhbSBTdXJ2ZWk6KioNCg0KMS4gKipTa2FsYSBMaWtlcnQgKDHigJM1KToqKiBQZXJ0YW55YWFuIGluaSBtZW5ndWt1ciB0aW5na2F0IGtlcHVhc2FuIG1haGFzaXN3YSB0ZXJoYWRhcCBsYXlhbmFuIGFrYWRlbWlrIGRlbmdhbiBtZW5nZ3VuYWthbiBza2FsYSBwZW5pbGFpYW4gZGFyaSAxIChTYW5nYXQgVGlkYWsgUHVhcykgaGluZ2dhIDUgKFNhbmdhdCBQdWFzKS4NCiAgIA0KMi4gKipQZXJ0YW55YWFuIERpY2hvdG9tb3VzIChZYS9UaWRhayk6KiogUGVydGFueWFhbiB5YW5nIG1lbWJlcmlrYW4gZHVhIHBpbGloYW4gamF3YWJhbiwgeWFpdHUgIllhIiBhdGF1ICJUaWRhayIuDQoNCjMuICoqUGlsaWhhbiBHYW5kYToqKiBQZXJ0YW55YWFuIGluaSBtZW11bmdraW5rYW4gcmVzcG9uZGVuIG1lbWlsaWggc2F0dSBhdGF1IGxlYmloIGphd2FiYW4gZGFyaSBiZWJlcmFwYSBvcHNpIHlhbmcgdGVyc2VkaWEuDQoNCjQuICoqQ2hlY2tib3g6KiogUmVzcG9uZGVuIGRhcGF0IG1lbWlsaWggbGViaWggZGFyaSBzYXR1IG9wc2kgeWFuZyBzZXN1YWkgZGVuZ2FuIHBlbmdhbGFtYW4gYXRhdSBvcGluaSBtZXJla2EuDQoNCjUuICoqUGVydGFueWFhbiBUZXJidWthOioqIFBhZGEgYmFnaWFuIGluaSwgcmVzcG9uZGVuIGRhcGF0IG1lbWJlcmlrYW4ga29tZW50YXIsIHNhcmFuLCBrZW5kYWxhLCBhdGF1IHBlbmdhbGFtYW4gcHJpYmFkaSBtZXJla2EgdGVya2FpdCBsYXlhbmFuIGFrYWRlbWlrIHlhbmcgZGl0ZXJpbWEuDQoNClN1cnZlaSBpbmkgZGlyYW5jYW5nIG1lbmdndW5ha2FuIHBsYXRmb3JtICoqR29vZ2xlIEZvcm0qKiB1bnR1ayBtZW1wZXJtdWRhaCBkaXN0cmlidXNpIGRhbiBwZW5ndW1wdWxhbiBkYXRhLiBQZW5naXNpYW4gc3VydmVpIGRhcGF0IGRpbGFrdWthbiBzZWNhcmEgb25saW5lIGRlbmdhbiBsaW5rIGJlcmlrdXQ6DQoNCmh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2Zvcm1zL2QvZS8xRkFJcFFMU2Z6LW5JeE1pM0NaQmtZRHNvbjFaNTZPWVhjWmRuWjl4VzBvQVN2b2pPYWRDU2JVdy92aWV3Zm9ybT91c3A9cHJldmlldw0KDQotLS0NCg0KIyMjICoqSUlJLiBTa2VtYSBWYWxpZGFzaSoqDQoNClVudHVrIG1lbWFzdGlrYW4gc3VydmVpIGluaSBiZXJrdWFsaXRhcyBkYW4gZGFwYXQgZGlwZXJjYXlhLCBha2FuIG1lbmdndW5ha2FuIGR1YSBjYXJhIHZhbGlkYXNpOg0KDQojIyMjICoqMS4gVmFsaWRpdGFzIEtvbnN0cmFrIChDb25zdHJ1Y3QgVmFsaWRpdHkpKioNCg0KVmFsaWRpdGFzIGtvbnN0cmFrIG1lbWFzdGlrYW4gYmFod2EgcGVydGFueWFhbiB5YW5nIGFkYSBkYWxhbSBrdWVzaW9uZXIgYmVuYXItYmVuYXIgbWVuZ3VrdXIgKiprZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1payoqLiBTZXRlbGFoIGRhdGEgdGVya3VtcHVsLCBraXRhIGFrYW4gY2VrIGFwYWthaCBzZXRpYXAgYmFnaWFuIGRhcmkgbGF5YW5hbiAoc2VwZXJ0aSBLUlMgb25saW5lLCBiaW1iaW5nYW4gYWthZGVtaWssIGRsbC4pIGJpc2EgZGl1a3VyIGRlbmdhbiBqZWxhcyBkYW4gdGVycGlzYWguDQoNCiMjIyMgKioyLiBWYWxpZGl0YXMgSXNpIChDb250ZW50IFZhbGlkaXR5KSoqDQoNClZhbGlkaXRhcyBpc2kgbWVtYXN0aWthbiBiYWh3YSBzZW11YSBwZXJ0YW55YWFuIGRhbGFtIHN1cnZlaSByZWxldmFuIGRhbiBtZW5jYWt1cCBzZW11YSBhc3BlayBsYXlhbmFuIGFrYWRlbWlrIHlhbmcgaW5naW4ga2l0YSBldmFsdWFzaSwgc2VwZXJ0aSAqKktSUyBvbmxpbmUqKiwgKipiaW1iaW5nYW4gYWthZGVtaWsqKiwgKipwZWxheWFuYW4gYWRtaW5pc3RyYXNpKiosICoqYWtzZXMgaW5mb3JtYXNpIGFrYWRlbWlrKiosIGRhbiAqKmJhbnR1YW4gcGVueWVsZXNhaWFuIHN0dWRpKiouIFNldGlhcCBwZXJ0YW55YWFuIGRpc3VzdW4gYmVyZGFzYXJrYW4gcGVkb21hbiB5YW5nIHN1ZGFoIGFkYSBkaSBwZW5lbGl0aWFuIHNlYmVsdW1ueWEsIHVudHVrIG1lbWFzdGlrYW4gc2VtdWFueWEgc2VzdWFpIGRlbmdhbiBsYXlhbmFuIHlhbmcgaW5naW4gZGluaWxhaS4NCg0KDQojIyMgKipSZWxpYWJpbGl0YXMgS3Vlc2lvbmVyKioNCg0KKipSZWxpYWJpbGl0YXMqKiBtZW5ndWt1ciBzZWJlcmFwYSBrb25zaXN0ZW4ga3Vlc2lvbmVyIGRhbGFtIG1lbmd1a3VyIGhhbCB5YW5nIHNhbWEuIEppa2Ega3Vlc2lvbmVyIHlhbmcgc2FtYSBkaWd1bmFrYW4gZGkgd2FrdHUgYmVyYmVkYSBhdGF1IG9sZWggcmVzcG9uZGVuIGJlcmJlZGEsIGhhc2lsbnlhIGhhcnVzIHRldGFwIGtvbnNpc3Rlbi4NCg0KVW50dWsgbWVuZ3VqaSByZWxpYWJpbGl0YXMsIGtpdGEgYmlzYSBtZW5nZ3VuYWthbiBjYXJhIG1hbnVhbCBkZW5nYW4gbWVsaWhhdCBoYXNpbCBkYXJpIHN1YXR1IHBlcnRhbnlhYW4gamlrYSBoYXNpbG55YSB0aWRhayBzdGFiaWwobWlzYWxueWEgamF3YWJhbm55YSBzYW5hZ2F0IGJlcmJlZGEgYmVkYSBwYWRhaGFsIG1lbmRhcGF0a2FuIHBlbmdhbGFtYW4geWFuZyBzYW1hLCBiZXJhcnRpIHBlcnRhbnlhYW5ueWEgbWVtYmluZ3VuZ2thbiBkYW4ga3VyYW5nIGplbGFzKSBhdGF1IGJpc2EganVnYSBtZW5nZ3VuYWthbiBDcm9uYmFjaOKAmXMgQWxwaGEuDQoNCkppa2EgcmVsaWFiaWxpdGFzIHJlbmRhaCwga2l0YSBiaXNhOg0KDQotIE1lbmdoYXB1cyBwZXJ0YW55YWFuIHlhbmcgdGlkYWsgcmVsZXZhbg0KDQotIE1lbXBlcmJhaWtpIHBlcnRhbnlhYW4geWFuZyBrdXJhbmcgamVsYXMNCg0KLSBNZW5hbWJhaGthbiBwZXJ0YW55YWFuIHVudHVrIG1lbGVuZ2thcGkgcGVuZ3VrdXJhbg0KDQpEZW5nYW4ga3Vlc2lvbmVyIHlhbmcgKipyZWxpYWJsZSoqLCBraXRhIGJpc2EgeWFraW4gYmFod2EgaGFzaWwgc3VydmVpIG1lbmNlcm1pbmthbiBwYW5kYW5nYW4gcmVzcG9uZGVuIHNlY2FyYSBrb25zaXN0ZW4gZGFuIGFrdXJhdC4NCg0KIyMjICoqUGVueWVzdWFpYW4gQmVyZGFzYXJrYW4gSGFzaWwgVmFsaWRhc2kqKg0KDQpKaWthIGFkYSBwZXJ0YW55YWFuIHlhbmcgdGVybnlhdGEgdGlkYWsgdmFsaWQgYXRhdSBrdXJhbmcga29uc2lzdGVuLCB0aW0gc3VydmV5IGFrYW4gbWVsYWt1a2FuIHBlcmJhaWthbi4gTWlzYWxueWEsIG1lbmdoYXB1cyBhdGF1IG1lbmdnYW50aSBwZXJ0YW55YWFuIHlhbmcga3VyYW5nIHRlcGF0LCBhdGF1IG1lbmFtYmFoa2FuIHBlcnRhbnlhYW4gYmFydSBzdXBheWEga3Vlc2lvbmVyIGJpc2EgbWVuZ3VrdXIga2VwdWFzYW4gbWFoYXNpc3dhIGRlbmdhbiBsZWJpaCBha3VyYXQuDQoNCi0tLQ0KDQojIyMgKipJVi4gU3RyYXRlZ2kgRGlzdHJpYnVzaSBkYW4gU2FtcGxpbmcqKg0KDQpEYWxhbSBwZWxha3NhbmFhbiBzdXJ2ZWkgaW5pLCBkaXN0cmlidXNpIGt1ZXNpb25lciBkaWxha3VrYW4gc2VjYXJhICoqb25saW5lKiogbWVuZ2d1bmFrYW4gKipwbGF0Zm9ybSBHb29nbGUgRm9ybSoqLiBUYXV0YW4ga3Vlc2lvbmVyIGRpYmFnaWthbiBtZWxhbHVpIGJlcmJhZ2FpICoqbWVkaWEga29tdW5pa2FzaSBkaWdpdGFsKiosIHNlcGVydGkgKipncnVwIFdoYXRzQXBwIGtlbGFzLCBncnVwIGFuZ2thdGFuLCBkYW4gbWVkaWEgc29zaWFsKiogKG1pc2FsbnlhIEluc3RhZ3JhbSBkYW4gVGVsZWdyYW0pLiBUdWp1YW5ueWEgYWRhbGFoIHVudHVrIG1lbmphbmdrYXUgbWFoYXNpc3dhIGRhcmkgYmVyYmFnYWkgcHJvZ3JhbSBzdHVkaSBkYW4gYW5na2F0YW4gc2VjYXJhIGxlYmloIGx1YXMgZGFuIGVmaXNpZW4uDQoNClN1cnZlaSBpbmkgbWVuZ2d1bmFrYW4gbWV0b2RlICoqbm9uLXByb2JhYmlsaXR5IHNhbXBsaW5nKiogZGVuZ2FuIHRla25payAqKmNvbnZlbmllbmNlIHNhbXBsaW5nKiosIHlhaXR1IHBlbWlsaWhhbiByZXNwb25kZW4gZGlsYWt1a2FuIGJlcmRhc2Fya2FuICoqa2VtdWRhaGFuIGFrc2VzKiogZGFuICoqa2V0ZXJzZWRpYWFuIHJlc3BvbmRlbioqLiBNYWhhc2lzd2EgeWFuZyBiZXJzZWRpYSBkYW4gZGFwYXQgZGlha3NlcyBtZWxhbHVpIGRpc3RyaWJ1c2kgb25saW5lIGRpcGVyc2lsYWthbiB1bnR1ayBtZW5naXNpIGt1ZXNpb25lciBzZWNhcmEgc3VrYXJlbGEuDQoNClRla25payBpbmkgZGlwaWxpaCBrYXJlbmE6DQoNCi0gTWVtdW5na2lua2FuIHBlbmd1bXB1bGFuIGRhdGEgZGVuZ2FuIGNlcGF0IGRhbiBtdWRhaA0KDQotIENvY29rIHVudHVrIHBsYXRmb3JtIG9ubGluZSBzZXBlcnRpIEdvb2dsZSBGb3JtDQoNCi0gRWZpc2llbiBkYXJpIHNlZ2kgd2FrdHUgZGFuIHN1bWJlciBkYXlhDQoNCk1lc2tpcHVuIG1ldG9kZSBpbmkgdGlkYWsgbWV3YWtpbGkgc2VsdXJ1aCBwb3B1bGFzaSBzZWNhcmEgYWNhaywgbmFtdW4gdGV0YXAgbWVtYmVyaWthbiBnYW1iYXJhbiB1bXVtIG1lbmdlbmFpICoqdGluZ2thdCBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1payoqLg0KDQpQb3B1bGFzaSBkYWxhbSBzdXJ2ZWkgaW5pIGFkYWxhaCBzZWx1cnVoICoqbWFoYXNpc3dhIGFrdGlmKiogZGkga2FtcHVzIHRlbXBhdCBwZW5lbGl0aWFuIGRpbGFrdWthbi4NCg0KVW50dWsgbWVuZW50dWthbiBqdW1sYWggKipzYW1wZWwgeWFuZyBpZGVhbCoqLCBkaWd1bmFrYW4gcnVtdXMgKipTbG92aW4qKiBzZWJhZ2FpIHBlbmRla2F0YW4sIHlhaXR1Og0KDQpcWw0KbiA9IFxmcmFje059ezEgKyBOZV4yfQ0KXF0NCg0KS2V0ZXJhbmdhbjogIA0KLSAqKm4qKiA9IGp1bWxhaCBzYW1wZWwgIA0KLSAqKk4qKiA9IGp1bWxhaCBwb3B1bGFzaSAgDQotICoqZSoqID0gbWFyZ2luIG9mIGVycm9yIChiaWFzYW55YSAwLDEgYXRhdSAxMCUpDQoNCkNvbnRvaDogIA0KSmlrYSBqdW1sYWggbWFoYXNpc3dhIGFrdGlmIChOKSBhZGFsYWggMS4wMDAgb3JhbmcgZGFuIG1hcmdpbiBvZiBlcnJvciAxMCUsIG1ha2E6DQoNClxbDQpuID0gXGZyYWN7MTAwMH17MSArIDEwMDAoMCwxKV4yfSA9IFxmcmFjezEwMDB9ezEgKyAxMH0gPSBcZnJhY3sxMDAwfXsxMX0gXGFwcHJveCA5MQ0KXF0NCg0KSmFkaSwganVtbGFoIHJlc3BvbmRlbiAqKmlkZWFsbnlhIHNla2l0YXIgOTEgb3JhbmcqKiB1bnR1ayBwb3B1bGFzaSAxLjAwMCBtYWhhc2lzd2EuDQoNCldhbGF1cHVuIG1ldG9kZSBjb252ZW5pZW5jZSBzYW1wbGluZyB0aWRhayBtZW5nZ3VuYWthbiBwZW1pbGloYW4gYWNhaywganVtbGFoIHJlc3BvbmRlbiB0ZXRhcCBkaXVwYXlha2FuIG1lbmRla2F0aSBhbmdrYSB0ZXJzZWJ1dCBhZ2FyIGhhc2lsIHN1cnZlaSB0ZXRhcCAqKnJlbGV2YW4gZGFuIGJpc2EgbWV3YWtpbGkga29uZGlzaSB1bXVtKiouDQoNCiMjIyAqKklWLiBTaW11bGFzaSBkYXRhIGRhbiBhbmFsaXNpcyBhd2FsKioNCg0KKipTaW11bGFzaSBEYXRhIER1bW15ICoqICANCkRhdGEgYXdhbCBiZXJpa3V0IG1lcnVwYWthbiBoYXNpbCBzaW11bGFzaSBwZW5naXNpYW4ga3Vlc2lvbmVyIG9sZWggcmVzcG9uZGVuLCBtZXdha2lsaSBiZXJiYWdhaSBrYXJha3RlcmlzdGlrIG1haGFzaXN3YSAoamVuaXMga2VsYW1pbiwgc2VtZXN0ZXIsIGplbmphbmcpLg0KDQojIyMjICoqQ29udG9oIERhdGEgUmVzcG9uZGVuKFNrYWxhIDHigJM1KSoqDQprYXJlbmEgZGFsYW0gcXVlc3Rpb25lciBzYXlhIHlhbmcgbWVuZ2d1bmthbiBza2FsYSAxLTUgbWV3YWtpbGkgcGVuaWxhaWFuIHRlbnRhbmcgbmlsYWkga2VwdWFzYW4gZGFsYW0ga3JzIGRhbiBrb25zaXN0ZW4gYmFod2EgKDEgYXJ0aW55YSBzYW5nYXQga3VyYW5nIGRhbiA1IHNhbmdhdCBiYWlrKS4gZGFsYW0gZGF0YSBkdW1teSBpbmkgbWlzYWxrYW4gaGFzaWwgZGFyaSBqYXdhYmFuIHlhbmcgc2thbGEgMS01IGRpcmF0YTIgcGVyc3ViIG1hdGVyaSB5YW5nIGluZ2luIGRpIHRhbnlha2FuDQoNCnwgTm8gfCBLUlMgfCBCaW1iaW5nYW4gfCBBZG1pbmlzdHJhc2kgfCBJbmZvIEFrYWRlbWlrIHwgUGVueWVsZXNhaWFuIFN0dWRpIHwNCnwtLS0tfC0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAxICB8IDQgICB8IDQgICAgICAgICB8IDMgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICB8DQp8IDIgIHwgNSAgIHwgNCAgICAgICAgIHwgNCAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgIHwNCnwgMyAgfCAzICAgfCAzICAgICAgICAgfCAzICAgICAgICAgICAgfCAzICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgfA0KfCA0ICB8IDQgICB8IDUgICAgICAgICB8IDQgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICB8DQp8IDUgIHwgMyAgIHwgMyAgICAgICAgIHwgMiAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCAzICAgICAgICAgICAgICAgICAgIHwNCnwgNiAgfCA0ICAgfCA0ICAgICAgICAgfCA0ICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgICAgfA0KfCA3ICB8IDUgICB8IDUgICAgICAgICB8IDUgICAgICAgICAgICB8IDUgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICB8DQp8IDggIHwgMyAgIHwgMyAgICAgICAgIHwgNCAgICAgICAgICAgIHwgMyAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgIHwNCnwgOSAgfCA0ICAgfCAzICAgICAgICAgfCAzICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IDMgICAgICAgICAgICAgICAgICAgfA0KfCAxMCB8IDQgICB8IDQgICAgICAgICB8IDQgICAgICAgICAgICB8IDMgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICB8DQp8IDExIHwgMyAgIHwgNCAgICAgICAgIHwgMiAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICAgIHwNCnwgMTIgfCA0ICAgfCA0ICAgICAgICAgfCA0ICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgICAgfA0KfCAxMyB8IDUgICB8IDUgICAgICAgICB8IDQgICAgICAgICAgICB8IDUgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICB8DQp8IDE0IHwgMyAgIHwgMiAgICAgICAgIHwgMyAgICAgICAgICAgIHwgMyAgICAgICAgICAgICAgfCAzICAgICAgICAgICAgICAgICAgIHwNCnwgMTUgfCA0ICAgfCA0ICAgICAgICAgfCA1ICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgfA0KfCAxNiB8IDMgICB8IDMgICAgICAgICB8IDMgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICB8DQp8IDE3IHwgNSAgIHwgNCAgICAgICAgIHwgNCAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgIHwNCnwgMTggfCA0ICAgfCA0ICAgICAgICAgfCA0ICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IDUgICAgICAgICAgICAgICAgICAgfA0KfCAxOSB8IDMgICB8IDMgICAgICAgICB8IDIgICAgICAgICAgICB8IDMgICAgICAgICAgICAgIHwgMyAgICAgICAgICAgICAgICAgICB8DQp8IDIwIHwgNCAgIHwgNSAgICAgICAgIHwgNCAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICAgIHwNCg0KIyMjIyAqKlJhdGEtUmF0YSBTZXRpYXAgQXNwZWsqKg0KDQp8IEFzcGVrIExheWFuYW4gICAgICAgICAgICB8IFJhdGEtUmF0YSB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18DQp8IEtSUyBPbmxpbmUgICAgICAgICAgICAgICB8IDMuODUgICAgICB8DQp8IEJpbWJpbmdhbiBBa2FkZW1payAgICAgICB8IDMuODAgICAgICB8DQp8IFBlbGF5YW5hbiBBZG1pbmlzdHJhc2kgICB8IDMuNTUgICAgICB8DQp8IEFrc2VzIEluZm9ybWFzaSBBa2FkZW1payB8IDQuMDAgICAgICB8DQp8IFBlbnllbGVzYWlhbiBTdHVkaSAgICAgICB8IDQuMTUgICAgICB8DQoNCioqSW50ZXJwcmV0YXNpIEF3YWw6KioNCg0KLSBSYXRhLXJhdGEgdGVydGluZ2dpIHRlcmRhcGF0IHBhZGEgYXNwZWsgKipQZW55ZWxlc2FpYW4gU3R1ZGkgKDQuMTUpKiosIG1lbnVuanVra2FuIGJhaHdhIHNlYmFnaWFuIGJlc2FyIG1haGFzaXN3YSBtZXJhc2EgY3VrdXAgcHVhcyBkZW5nYW4gZHVrdW5nYW4gYWthZGVtaWsgbWVuamVsYW5nIGFraGlyIHN0dWRpIG1lcmVrYS4NCg0KLSBOaWxhaSB0ZXJlbmRhaCBiZXJhZGEgcGFkYSAqKkFkbWluaXN0cmFzaSBBa2FkZW1payAoMy41NSkqKiwgeWFuZyBiaXNhIG1lbmphZGkgaW5kaWthc2kgYmFod2EgYmFnaWFuIGluaSBwZXJsdSBwZXJoYXRpYW4gbGViaWggdW50dWsgZGl0aW5na2F0a2FuLg0KDQoNCg0KIyMjIyAqKlBlbWJhaGFzYW4gZGFuIEFuYWxpc2lzIExhbmp1dGFuKioNCg0KQmVyZGFzYXJrYW4gZGF0YSBzaW11bGFzaSB5YW5nIHRlbGFoIGRpYW5hbGlzaXMsIGRhcGF0IGRpc2ltcHVsa2FuIGJhaHdhIHBlcnNlcHNpIG1haGFzaXN3YSB0ZXJoYWRhcCBsYXlhbmFuIGFrYWRlbWlrIHNlY2FyYSB1bXVtIHRlcmdvbG9uZyAqKnBvc2l0aWYqKi4gTmlsYWkgcmF0YS1yYXRhIGRhcmkgc2V0aWFwIGFzcGVrIGJlcmFkYSBkaSBhdGFzIGFuZ2thIDMuNSwgeWFuZyBtZW51bmp1a2thbiBiYWh3YSBtYWhhc2lzd2EgbWVyYXNhICoqY3VrdXAgcHVhcyoqIGhpbmdnYSAqKnB1YXMqKiB0ZXJoYWRhcCBsYXlhbmFuIHlhbmcgZGliZXJpa2FuLg0KDQpOYW11biwgbWFzaWggdGVyZGFwYXQgKipwZXJiZWRhYW4gdGluZ2thdCBrZXB1YXNhbiBhbnRhciBhc3BlayBsYXlhbmFuKiosIHlhbmcgZGFwYXQgZGlqYWRpa2FuIGJhaGFuIGV2YWx1YXNpIHVudHVrIHBlbmluZ2thdGFuIGt1YWxpdGFzIGxheWFuYW4gZGkgbWFzYSBtZW5kYXRhbmcuDQoNCi0gKipQZW55ZWxlc2FpYW4gU3R1ZGkgKDQuMTUpKio6IEFzcGVrIGluaSBtZW5kYXBhdCBuaWxhaSB0ZXJ0aW5nZ2kuIEhhbCBpbmkgbWVudW5qdWtrYW4gYmFod2EgbWFoYXNpc3dhIG1lcmFzYSB0ZXJiYW50dSBkZW5nYW4gYWRhbnlhIGxheWFuYW4ga29uc3VsdGFzaSBha2FkZW1paywgcGVueXVzdW5hbiB0dWdhcyBha2hpciwgaGluZ2dhIHByb3NlcyBhZG1pbmlzdHJhc2kga2VsdWx1c2FuLg0KDQotICoqQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrICg0LjAwKSoqOiBSYXRhLXJhdGEgeWFuZyB0aW5nZ2kgbWVudW5qdWtrYW4gYmFod2EgaW5mb3JtYXNpIG1lbmdlbmFpIHBlcmt1bGlhaGFuLCBqYWR3YWwsIGRhbiBha2FkZW1payBsYWlubnlhIGN1a3VwIG11ZGFoIGRpYWtzZXMgZGFuIGRpcGFoYW1pLg0KDQotICoqS1JTIE9ubGluZSAoMy44NSkqKiBkYW4gKipCaW1iaW5nYW4gQWthZGVtaWsgKDMuODApKio6IEtlZHVhIGFzcGVrIGluaSBtZW51bmp1a2thbiB0aW5na2F0IGtlcHVhc2FuIHlhbmcgYmFpaywgbmFtdW4gbWFzaWggZGFwYXQgZGl0aW5na2F0a2FuIHRlcnV0YW1hIGRhbGFtIGhhbCBmbGVrc2liaWxpdGFzIGJpbWJpbmdhbiBkYW4gc2lzdGVtIEtSUyB5YW5nIHRlcmthZGFuZyBtZW5nYWxhbWkga2VuZGFsYSB0ZWtuaXMuDQoNCi0gKipBZG1pbmlzdHJhc2kgQWthZGVtaWsgKDMuNTUpKio6IE5pbGFpIGluaSBtZW5qYWRpIHlhbmcgdGVyZW5kYWggZGFsYW0gc3VydmVpLiBIYWwgaW5pIGJpc2EgamFkaSBkaXNlYmFia2FuIG9sZWgga3VyYW5nbnlhIGVmaXNpZW5zaSBwZWxheWFuYW4gZGkgYmFnaWFuIGFkbWluaXN0cmFzaSwgYW50cmVhbiBwYW5qYW5nLCBhdGF1IGt1cmFuZyBqZWxhc255YSBhbHVyIGJpcm9rcmFzaS4NCg0KIyMjIyAqKktlc2ltcHVsYW4qKg0KDQpTdXJ2ZWkgaW5pIG1lbWJlcmlrYW4gZ2FtYmFyYW4gdW11bSBtZW5nZW5haSAqKnRpbmdrYXQga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWsqKiBkaSBrYW1wdXMuIERhcmkgaGFzaWwgYW5hbGlzaXM6DQoNCjEuIE1haGFzaXN3YSBzZWNhcmEgdW11bSBtZXJhc2EgcHVhcyB0ZXJoYWRhcCBsYXlhbmFuIHlhbmcgZGliZXJpa2FuLCB0ZXJ1dGFtYSBkYWxhbSBoYWwgKipwZW55ZWxlc2FpYW4gc3R1ZGkqKiBkYW4gKipha3NlcyBpbmZvcm1hc2kgYWthZGVtaWsqKi4NCjIuIExheWFuYW4gKiphZG1pbmlzdHJhc2kgYWthZGVtaWsqKiBwZXJsdSBtZW5kYXBhdCBwZXJoYXRpYW4gbGViaWgsIGthcmVuYSBtZW1pbGlraSB0aW5na2F0IGtlcHVhc2FuIHBhbGluZyByZW5kYWguDQozLiBTdHJhdGVnaSBkaXN0cmlidXNpIG9ubGluZSBtZWxhbHVpIGJlcmJhZ2FpIHBsYXRmb3JtIGtvbXVuaWthc2kgdGVyYnVrdGkgZWZla3RpZiB1bnR1ayBtZW5qYXJpbmcgcmVzcG9uZGVuIGRhcmkgYmVyYmFnYWkgbGF0YXIgYmVsYWthbmcuDQoNCiMjIyMgKipTYXJhbioqDQoNCjEuICoqUGVuaW5na2F0YW4gUGVsYXlhbmFuIEFkbWluaXN0cmFzaSoqOiBQZXJsdSBkaWxha3VrYW4gZXZhbHVhc2kgc2lzdGVtIHBlbGF5YW5hbiBhZG1pbmlzdHJhc2ksIHRlcm1hc3VrIFNPUCwga2VjZXBhdGFuIGxheWFuYW4sIGRhbiBrZXRlcmJ1a2FhbiBpbmZvcm1hc2kuDQoNCjIuICoqT3B0aW1hbGlzYXNpIEJpbWJpbmdhbiBBa2FkZW1payoqOiBKYWR3YWwgZGFuIGtvbXVuaWthc2kgYW50YXJhIGRvc2VuIHBlbWJpbWJpbmcgZGFuIG1haGFzaXN3YSBiaXNhIGRpcGVyYmFpa2kgYWdhciBsZWJpaCBmbGVrc2liZWwgZGFuIHJlc3BvbnNpZi4NCg0KMy4gKipQZW1lbGloYXJhYW4gZGFuIFBlbmdlbWJhbmdhbiBTaXN0ZW0gS1JTIE9ubGluZSoqOiBQYXN0aWthbiBzaXN0ZW0gdGV0YXAgc3RhYmlsIGRhbiB1c2VyLWZyaWVuZGx5LCB0ZXJ1dGFtYSBzYWF0IHBlcmlvZGUgS1JTLg0KDQo0LiAqKlBlbmluZ2thdGFuIERpc3RyaWJ1c2kgSW5mb3JtYXNpIEFrYWRlbWlrKio6IFRlcnVzIHBlcmJhcnVpIGRhbiBzZWRpYWthbiBpbmZvcm1hc2kgYWthZGVtaWsgc2VjYXJhIHJ1dGluIGRhbiBtZW55ZWx1cnVoIG1lbGFsdWkgbWVkaWEga2FtcHVzIHJlc21pLg0K