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:
Jelaskan dua jenis
kesalahan sampling yang terjadi berdasarkan situasi ini.
Jawab:
1. Kesalahan Proporsi Sampel (Disproportionate Sampling
Error)
Rencana awal adalah mengumpulkan sampel proporsional sebesar 200
responden per kota. Namun, realisasi di lapangan tidak sesuai:
Kota A: 250 (kelebihan 50)
Kota B: 120 (kekurangan 80)
Kota C: 180 (kekurangan 20)
Dampak: Ini menyebabkan distribusi sampel tidak proporsional terhadap
rencana semula, yang dapat menyebabkan hasil survei terlalu
merefleksikan pendapat dari kota dengan responden lebih banyak (Kota A),
dan kurang mewakili kota yang kekurangan (Kota B dan C).
2. Kesalahan Nonresponse atau Coverage Bias
Terutama pada Kota B yang hanya mendapat 120 responden dari target
200. Ini bisa terjadi karena:
Dampak: Bila karakteristik orang yang tidak menjawab berbeda dengan
yang menjawab, maka bisa terjadi bias. Misalnya, jika pengguna aktif
aplikasi transportasi online lebih sulit dijangkau, maka hasil bisa
underestimate penggunaan aplikasi.
Jika Anda harus
menyesuaikan bobot untuk mengembalikan representasi
proporsional,bagaimana Anda akan menghitungnya?
Jawab:
Langkah 1: Hitung Proporsi Ideal per Kota
Kota A, B, dan C: 200 / 600 = 0.333
Langkah 2: Hitung Proporsi Aktual per Kota
Langkah 3: Hitung Bobot Penyesuaian per
Responden
\[
\text{Bobot Kota} = \frac{\text{Proporsi Ideal}}{\text{Proporsi Aktual}}
\]
Kota A: 0.333 / 0.455 ≈ 0.732
Kota B: 0.333 / 0.218 ≈ 1.527
Kota C: 0.333 / 0.327 ≈ 1.018
Interpretasi:
Responden dari Kota A diberi bobot lebih kecil karena jumlahnya
terlalu banyak.
Responden dari Kota B diberi bobot lebih besar karena jumlahnya
terlalu sedikit.
Kota C mendekati target, jadi bobotnya hampir 1.
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.
Jawab:
LAPORAN RANCANGAN SURVEI KEPUASAN MAHASISWA TERHADAP LAYANAN
AKADEMIK
I. Desain Pertanyaan Survei
Survei ini bertujuan untuk mengevaluasi kepuasan mahasiswa terhadap
layanan akademik di kampus. Terdiri dari 25 pertanyaan yang mencakup
lima layanan utama:
- KRS Online
- Bimbingan Akademik
- Pelayanan Administrasi
- Akses Informasi Akademik
- Bantuan Penyelesaian Studi
Gform Desain Pertanyaan:
https://forms.gle/K3p1fWrXQpAkxAsd6
II. Skema Validasi Instrumen
Untuk memastikan kualitas dan keandalan instrumen survei, kita akan
menggunakan dua jenis validasi:
Validitas Isi (Content Validity)
Validitas isi kuesioner ini dijamin dengan memastikan bahwa setiap
pertanyaan relevan dan mencakup semua dimensi layanan akademik yang
ingin dievaluasi, yaitu KRS online, bimbingan akademik, pelayanan
administrasi, akses informasi akademik, dan bantuan penyelesaian studi.
Untuk memastikan hal ini, setiap pertanyaan dikaitkan dengan aspek
layanan yang relevan, yang disusun berdasarkan pedoman yang ada dalam
literatur terkait evaluasi layanan akademik serta teori-teori validitas
kuesioner.
Validitas Konstrak (Construct Validity)
Validitas konstrak akan diuji dengan menganalisis sejauh mana
pertanyaan dalam kuesioner benar-benar mengukur kepuasan terhadap
layanan akademik. Setelah pengumpulan data, analisis faktor akan
dilakukan untuk memeriksa apakah setiap dimensi layanan, seperti KRS
online dan bimbingan akademik, dapat diidentifikasi dan diukur secara
terpisah dalam kelompok pertanyaan yang sesuai.
Reliabilitas
Reliabilitas kuesioner akan diuji dengan menghitung Cronbach’s Alpha
setelah uji coba kuesioner pada sejumlah kecil responden. Nilai
Cronbach’s Alpha yang lebih besar dari 0.7 akan menunjukkan bahwa
kuesioner memiliki konsistensi internal yang baik dan dapat dipercaya
dalam pengukuran.
Penyesuaian Berdasarkan Hasil Validasi
Berdasarkan hasil validasi isi, validitas konstrak, dan reliabilitas,
jika ditemukan pertanyaan yang tidak memenuhi standar validitas atau
reliabilitas yang diinginkan, perubahan atau penyesuaian akan dilakukan.
Langkah-langkah perbaikan tersebut bisa berupa penghapusan, pengubahan,
atau penambahan pertanyaan untuk memastikan instrumen kuesioner dapat
mengukur kepuasan mahasiswa terhadap layanan akademik dengan
tepat.
III. Strategi Distribusi dan Sampling
Populasi dan Sampel
Populasi Penelitian
Populasi penelitian ini adalah seluruh mahasiswa aktif di ITSB yang
terdaftar dan menggunakan layanan akademik. Layanan akademik yang
dimaksud mencakup KRS online, bimbingan akademik, pelayanan
administrasi, akses informasi akademik, dan bantuan penyelesaian
studi.
Sampel Penelitian
Sampel penelitian akan terdiri dari mahasiswa yang menggunakan
layanan akademik di 2 fakultas yang ada di ITSB. Sampel akan diambil
secara proporsional dari 2 fakultas, dengan masing-masing fakultas
menyumbangkan 200 responden. Dengan demikian, total sampel yang akan
diambil adalah 600 responden, yang terdiri dari:
Metode Sampling
Metode Sampling yang Digunakan
Penelitian ini akan menggunakan Stratified Random Sampling, yaitu
teknik pengambilan sampel di mana populasi dibagi menjadi beberapa
strata atau kelompok berdasarkan karakteristik tertentu, dalam
penelitian ini berdasarkan fakultas. Setiap strata (fakultas) akan
diwakili dalam sampel sesuai dengan jumlah yang telah ditentukan. Teknik
ini dipilih untuk memastikan bahwa setiap fakultas terwakili dengan
baik, sehingga hasil penelitian dapat memberikan gambaran yang lebih
akurat tentang kepuasan mahasiswa terhadap layanan akademik di
kampus.Responden akan dipilih secara acak dari setiap fakultas yang
ada.
Kriteria Pengambilan Sampel
Mahasiswa aktif yang terdaftar dalam sistem akademik kampus dan
menggunakan layanan akademik yang tercakup dalam survei.
Sampel akan diambil secara acak dalam setiap fakultas untuk
mencegah bias dalam pemilihan responden.
Strategi Distribusi Kuesioner
Kuesioner akan disebarkan secara online menggunakan platform Google
Form untuk mempermudah distribusi dan pengumpulan data. Platform ini
dipilih karena aksesibilitas yang mudah, sehingga mahasiswa dapat
mengisi kuesioner kapan saja dan dari mana saja.
Link Kuesioner: Link kuesioner akan dibagikan melalui email resmi
kampus dan grup WhatsApp yang terkait dengan kelas atau jurusan
masing-masing. Email atau pesan yang berisi link survei akan mencakup
penjelasan singkat mengenai tujuan survei dan cara pengisian
kuesioner.
Waktu Pengisian: Responden diberikan waktu selama dua minggu untuk
mengisi kuesioner setelah menerima undangan.
Pengujian Statistik Awal
Setelah pengumpulan data, analisis statistik awal akan dilakukan
untuk menguji kelayakan dan validitas data yang dikumpulkan. Pengujian
statistik yang akan digunakan meliputi:
Analisis Deskriptif: Untuk menggambarkan
karakteristik responden (misalnya, demografi) dan tingkat kepuasan
terhadap layanan akademik.
Uji Reliabilitas: Menggunakan Cronbach’s Alpha untuk
memeriksa konsistensi internal dari kuesioner.
Analisis Inferensial: Uji statistik seperti uji t
atau analisis regresi akan digunakan untuk menguji hipotesis terkait
hubungan antara faktor-faktor yang mempengaruhi kepuasan
mahasiswa.
Penjadwalan dan Pengelolaan Data
Penjadwalan Pengisian Kuesioner: Selama dua minggu
setelah distribusi, responden diminta untuk mengisi kuesioner. Setelah
waktu tersebut, data akan ditutup dan analisis dimulai.
Pengelolaan Data: Semua data yang terkumpul akan
disimpan dengan aman dalam format elektronik dan akan dianalisis
menggunakan perangkat lunak statistik seperti excel.
IV. Simulasi Pengambilan Sampel dan Pengolahan Data
Awal
Simulasi ini bertujuan untuk menguji dan memvisualisasikan potensi
hasil survei menggunakan data yang telah dikumpulkan melalui instrumen
kuesioner skala Likert. Fokus analisis adalah mengevaluasi kepuasan
mahasiswa terhadap lima aspek layanan akademik: KRS Online, Bimbingan
Akademik, Pelayanan Administrasi, Akses Informasi Akademik, dan Bantuan
Penyelesaian Studi. Data diperoleh dari kuesioner yang telah
disimulasikan dan dikumpulkan dalam format CSV, terdiri atas 100
responden. Setiap pertanyaan pada lima dimensi layanan akademik
menggunakan skala Likert 1–5, di mana:
1 = Sangat Tidak Setuju
2 = Tidak Setuju
3 = Netral
4 = Setuju
5 = Sangat Setuju
Dengan memberikan simbol per dimensi, yaitu:
- Layanan KRS Online (A)
- Bimbingan Akademik (B)
- Pelayanan Administrasi Akademik (C)
Proses pelayanan akademik (seperti surat aktif, legalisir, dll)
cepat dan efisien. (C1)
Staf akademik kampus ramah dan komunikatif. (C2)
- Akses Informasi Akademik (D)
Informasi akademik (jadwal kuliah, ujian, pengumuman) selalu
diperbarui dengan tepat waktu. (D1)
Saya mudah mengakses informasi akademik melalui portal atau media
sosial resmi kampus. (D2)
- Bantuan Penyelesaian Studi (E)
Data Dummy
Mean (rata-rata)
## [1] "Mean (Rata-rata) setiap item:"
## A1 A2 B1 B2 C1 C2 D1 D2 E1 E2
## 2.96 3.16 2.90 3.03 3.01 3.08 2.90 3.24 3.40 3.08
## [1] "Mean per Dimensi:"
## A B C D E
## 3.060 2.965 3.045 3.070 3.240
Interpretasi
Berdasarkan hasil analisis deskriptif terhadap data skala Likert dari
100 responden, diperoleh bahwa tingkat kepuasan mahasiswa terhadap lima
dimensi layanan akademik kampus berada pada kategori cukup puas, dengan
nilai mean berkisar antara 2,96 hingga 3,24. Dimensi Bantuan
Penyelesaian Studi (E) memperoleh rata-rata tertinggi (3,24),
menunjukkan bahwa mahasiswa merasa cukup didukung dalam proses
penyelesaian studi. Sementara itu, dimensi dengan kepuasan terendah
adalah Bimbingan Akademik (B) dengan nilai mean 2,96, mengindikasikan
perlunya peningkatan pada aspek pendampingan akademik, terutama terkait
arahan dan kenyamanan dalam konsultasi. Secara umum, sebagian besar item
berada pada rentang netral hingga cukup puas, yang mencerminkan bahwa
layanan akademik sudah berjalan dengan baik namun masih memiliki ruang
perbaikan, khususnya pada aspek kecepatan informasi dan kualitas
interaksi dosen dengan mahasiswa.
Median
## [1] "Median setiap item:"
## A1 A2 B1 B2 C1 C2 D1 D2 E1 E2
## 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.5 3.0
## [1] "Median per Dimensi:"
## A B C D E
## 3 3 3 3 3
Interpretasi
Berdasarkan hasil perhitungan median, sebagian besar responden
menunjukkan nilai median yang konsisten di angka 3 (Netral) untuk hampir
semua item dan dimensi layanan akademik yang diuji, yang mencakup KRS
online, bimbingan akademik, pelayanan administrasi, akses informasi
akademik, dan bantuan penyelesaian studi. Ini mengindikasikan bahwa
mahasiswa cenderung berada pada posisi netral dalam menilai berbagai
aspek layanan akademik, dengan tidak ada kecenderungan kuat untuk setuju
atau tidak setuju. Namun, pada dimensi bantuan penyelesaian studi (E1),
nilai median sedikit lebih tinggi (3.5), yang menunjukkan bahwa sebagian
responden sedikit lebih cenderung setuju bahwa dukungan yang diberikan
kampus cukup memadai. Secara keseluruhan, hasil ini mengindikasikan
bahwa meskipun mayoritas mahasiswa tidak merasa sangat puas atau tidak
puas dengan layanan akademik, terdapat potensi untuk meningkatkan
kualitas layanan di berbagai area untuk mencapai tingkat kepuasan yang
lebih tinggi.
Modus
## [1] "Modus setiap item:"
## $A1
## [1] 1 2 4
##
## $A2
## [1] 3
##
## $B1
## [1] 2
##
## $B2
## [1] 3
##
## $C1
## [1] 1 4
##
## $C2
## [1] 4
##
## $D1
## [1] 1
##
## $D2
## [1] 5
##
## $E1
## [1] 5
##
## $E2
## [1] 3
## [1] "Modus per Dimensi:"
## A B C D E
## 2 2 4 5 5
Interpretasi
Berdasarkan hasil analisis modus terhadap data survei, diketahui
bahwa terdapat variasi yang cukup signifikan dalam persepsi mahasiswa
terhadap berbagai layanan akademik. Pada dimensi Layanan KRS Online (A),
item A1 menunjukkan beberapa nilai modus (1, 2, dan 4), yang
mengindikasikan persebaran opini yang luas, sementara A2 cenderung
netral (3). Dimensi Bimbingan Akademik (B) didominasi oleh jawaban 2 dan
3, menunjukkan kecenderungan netral hingga tidak puas. Pada Pelayanan
Administrasi Akademik (C), item C1 menunjukkan dua modus (1 dan 4), yang
menggambarkan ketimpangan kepuasan, sementara C2 lebih positif (4).
Untuk Akses Informasi Akademik (D), responden pada D1 cenderung sangat
tidak setuju (1), sedangkan D2 sangat setuju (5), menandakan kesenjangan
informasi. Sementara itu, Bantuan Penyelesaian Studi (E) secara umum
memiliki penilaian positif, dengan modus tertinggi pada nilai 5, baik
untuk E1 maupun E2. Secara keseluruhan, modus per dimensi memperlihatkan
bahwa dimensi E (bantuan studi) dan D (akses informasi) memiliki
kepuasan tertinggi (modus = 5), sementara dimensi A dan B memiliki
kecenderungan netral hingga rendah (modus = 2), yang menandakan perlunya
peningkatan layanan pada aspek tersebut.
Kesimpulan Analisis Awal
Berdasarkan hasil analisis terhadap data simulasi sebanyak 100
responden, tingkat kepuasan mahasiswa terhadap lima dimensi layanan
akademik kampus secara umum berada pada kategori cukup baik, ditunjukkan
oleh nilai mean yang berkisar antara 2.965 hingga 3.240 pada skala
Likert 1–5. Dimensi Bantuan Penyelesaian Studi (E) menunjukkan tingkat
kepuasan tertinggi (mean = 3.240), sedangkan Bimbingan Akademik (B)
mencatatkan skor rata-rata terendah (mean = 2.965), yang mengindikasikan
perlunya peningkatan komunikasi dan efektivitas bimbingan akademik.
Analisis median memperkuat temuan ini, dengan nilai median konsisten
berada pada angka 3, menandakan kecenderungan jawaban responden pada
kategori netral. Sementara itu, analisis modus menunjukkan bahwa
beberapa item memiliki nilai dominan yang bervariasi, bahkan lebih dari
satu nilai modus, yang mencerminkan adanya keragaman pendapat atau
persepsi antar responden terhadap masing-masing layanan. Secara
keseluruhan, hasil ini memberikan gambaran awal bahwa meskipun layanan
akademik kampus berjalan cukup baik, masih terdapat ruang untuk
peningkatan khususnya pada aspek bimbingan akademik dan akses sistem
layanan digital yang lebih stabil dan informatif.
V. KESIMPULAN
Survei kepuasan mahasiswa terhadap layanan akademik di kampus telah
dirancang secara sistematis untuk mengukur persepsi mahasiswa pada lima
dimensi utama: KRS Online, Bimbingan Akademik, Pelayanan Administrasi,
Akses Informasi Akademik, dan Bantuan Penyelesaian Studi. Instrumen
survei dikembangkan menggunakan skala Likert 1–5 dan divalidasi melalui
pendekatan validitas isi, validitas konstrak, serta diuji
reliabilitasnya menggunakan Cronbach’s Alpha.
Berdasarkan simulasi awal dengan 100 responden, diperoleh hasil
sebagai berikut:
Tingkat kepuasan secara umum berada pada kategori cukup baik,
dengan nilai rata-rata (mean) antar dimensi berkisar antara 2,965 hingga
3,240.
Dimensi Bantuan Penyelesaian Studi (E) memperoleh nilai kepuasan
tertinggi (mean = 3,240 dan modus = 5), menunjukkan bahwa mahasiswa
merasa cukup terbantu dalam proses penyelesaian studi.
Sebaliknya, dimensi Bimbingan Akademik (B) mencatat skor terendah
(mean = 2,965 dan modus = 2), yang mengindikasikan adanya kebutuhan
untuk meningkatkan kualitas komunikasi dan arahan akademik dari dosen
pembimbing.
Analisis median memperlihatkan bahwa sebagian besar dimensi
berada pada posisi netral (median = 3), memperkuat asumsi bahwa persepsi
mahasiswa cenderung belum sangat puas namun juga tidak negatif.
Hasil modus menunjukkan adanya variasi signifikan dalam respons
mahasiswa, yang mencerminkan persepsi yang beragam terhadap kualitas
layanan, terutama pada dimensi KRS Online dan Pelayanan
Administrasi.
Secara keseluruhan, layanan akademik di kampus telah berjalan cukup
baik namun belum optimal sepenuhnya. Hasil analisis ini menandakan
perlunya peningkatan pada aspek-aspek strategis, seperti efektivitas
bimbingan akademik dan penyampaian informasi akademik yang konsisten dan
tepat waktu. Ke depan, data hasil survei ini akan menjadi dasar penting
untuk menyusun rekomendasi peningkatan layanan akademik yang lebih
terarah dan berbasis data, guna mendukung proses pembelajaran mahasiswa
secara lebih efektif dan menyeluruh.
LS0tDQp0aXRsZTogIlVqaWFuIFRlbmdhaCBTZW1lc3RlciAyIg0Kc3VidGl0bGU6ICJTYW1wbGluZyAmIFN1cnZleSBUZWNobmlxdWVzIg0KYXV0aG9yOiANCiAgIklzbmFpbmkgTnVyIEhhc2FuYWggKDUyMjQwMDA1KSINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJvYm9ib29rOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUgKDEpLmNzcyINCiAgICBwYXJhbXM6DQogIGVjaG86IGZhbHNlDQplZGl0b3Jfb3B0aW9uczogDQogIG1hcmtkb3duOiANCiAgICB3cmFwOiA3Mg0KLS0tDQoNCjxpbWcgaWQ9IklzbmEiIHNyYz0iQzpcVXNlcnNcQVNVU1xEZXNrdG9wXFN0YXRpc3Rpa2EgRGFzYXJcSXNuYS5wbmciIGFsdD0iTG9nbyIgc3R5bGU9IndpZHRoOjIwMHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyI+DQoNCiMgU2ltdWxhc2kgS2VzYWxhaGFuIFNhbXBsaW5nIGRpIExhcGFuZ2FuDQoNCkFuZGFpa2FuIEFuZGEgYWRhbGFoIGJhZ2lhbiBkYXJpIHRpbSByaXNldCBsYXBhbmdhbiB5YW5nIGRpbWludGEgdW50dWsgbWVsYWt1a2FuIHN1cnZlaSB0aW5na2F0IHBlbmdndW5hYW4gYXBsaWthc2kgdHJhbnNwb3J0YXNpIG9ubGluZSBkaSAzIGtvdGEgbWVuZW5nYWggZGkgU3VtYXRlcmEuIFRhcmdldCBzYW1wZWwgdG90YWwgYWRhbGFoIDYwMCByZXNwb25kZW4sIG1hc2luZy1tYXNpbmcgMjAwIHBlciBrb3RhLiBUZXRhcGksIHNldGVsYWggMiBtaW5nZ3UgbWVsYWt1a2FuIHN1cnZlaSBhbmRhIG1lbmVtdWthbjoNCg0KLSBEaSBLb3RhIEEsIHRpbSBiZXJoYXNpbCBtZW5kYXBhdGthbiAyNTAgcmVzcG9uZGVuLg0KDQotIERpIEtvdGEgQiwgaGFueWEgMTIwIHJlc3BvbmRlbiB5YW5nIGRhcGF0IGRpd2F3YW5jYXJhaS4NCg0KLSBEaSBLb3RhIEMsIDE4MCByZXNwb25kZW4uDQoNCioqSW5zdHJ1a3NpOioqDQoNCiMjIEplbGFza2FuIGR1YSBqZW5pcyBrZXNhbGFoYW4gc2FtcGxpbmcgeWFuZyB0ZXJqYWRpIGJlcmRhc2Fya2FuIHNpdHVhc2kgaW5pLg0KDQpKYXdhYjoNCg0KKioxLiBLZXNhbGFoYW4gUHJvcG9yc2kgU2FtcGVsIChEaXNwcm9wb3J0aW9uYXRlIFNhbXBsaW5nIEVycm9yKSoqDQoNClJlbmNhbmEgYXdhbCBhZGFsYWggbWVuZ3VtcHVsa2FuIHNhbXBlbCBwcm9wb3JzaW9uYWwgc2ViZXNhciAyMDAgcmVzcG9uZGVuIHBlciBrb3RhLiBOYW11biwgcmVhbGlzYXNpIGRpIGxhcGFuZ2FuIHRpZGFrIHNlc3VhaToNCg0KS290YSBBOiAyNTAgKGtlbGViaWhhbiA1MCkNCg0KS290YSBCOiAxMjAgKGtla3VyYW5nYW4gODApDQoNCktvdGEgQzogMTgwIChrZWt1cmFuZ2FuIDIwKQ0KDQpEYW1wYWs6IEluaSBtZW55ZWJhYmthbiBkaXN0cmlidXNpIHNhbXBlbCB0aWRhayBwcm9wb3JzaW9uYWwgdGVyaGFkYXAgcmVuY2FuYSBzZW11bGEsIHlhbmcgZGFwYXQgbWVueWViYWJrYW4gaGFzaWwgc3VydmVpIHRlcmxhbHUgbWVyZWZsZWtzaWthbiBwZW5kYXBhdCBkYXJpIGtvdGEgZGVuZ2FuIHJlc3BvbmRlbiBsZWJpaCBiYW55YWsgKEtvdGEgQSksIGRhbiBrdXJhbmcgbWV3YWtpbGkga290YSB5YW5nIGtla3VyYW5nYW4gKEtvdGEgQiBkYW4gQykuDQoNCioqMi4gS2VzYWxhaGFuIE5vbnJlc3BvbnNlIGF0YXUgQ292ZXJhZ2UgQmlhcyoqDQoNClRlcnV0YW1hIHBhZGEgS290YSBCIHlhbmcgaGFueWEgbWVuZGFwYXQgMTIwIHJlc3BvbmRlbiBkYXJpIHRhcmdldCAyMDAuIEluaSBiaXNhIHRlcmphZGkga2FyZW5hOg0KDQotIEtlc3VsaXRhbiBha3NlcyBrZSByZXNwb25kZW4NCg0KLSBUaW5na2F0IHBhcnRpc2lwYXNpIHJlbmRhaA0KDQotIFdha3R1IHN1cnZlaSB0aWRhayBjb2Nvaw0KDQpEYW1wYWs6IEJpbGEga2FyYWt0ZXJpc3RpayBvcmFuZyB5YW5nIHRpZGFrIG1lbmphd2FiIGJlcmJlZGEgZGVuZ2FuIHlhbmcgbWVuamF3YWIsIG1ha2EgYmlzYSB0ZXJqYWRpIGJpYXMuIE1pc2FsbnlhLCBqaWthIHBlbmdndW5hIGFrdGlmIGFwbGlrYXNpIHRyYW5zcG9ydGFzaSBvbmxpbmUgbGViaWggc3VsaXQgZGlqYW5na2F1LCBtYWthIGhhc2lsIGJpc2EgdW5kZXJlc3RpbWF0ZSBwZW5nZ3VuYWFuIGFwbGlrYXNpLg0KDQoNCiMjIEppa2EgQW5kYSBoYXJ1cyBtZW55ZXN1YWlrYW4gYm9ib3QgdW50dWsgbWVuZ2VtYmFsaWthbiByZXByZXNlbnRhc2kgcHJvcG9yc2lvbmFsLGJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVuZ2hpdHVuZ255YT8NCg0KSmF3YWI6DQoNCioqTGFuZ2thaCAxOiBIaXR1bmcgUHJvcG9yc2kgSWRlYWwgcGVyIEtvdGEqKg0KDQpLb3RhIEEsIEIsIGRhbiBDOiAyMDAgLyA2MDAgPSAwLjMzMw0KDQoqKkxhbmdrYWggMjogSGl0dW5nIFByb3BvcnNpIEFrdHVhbCBwZXIgS290YSoqDQoNCi0gVG90YWwgcmVzcG9uZGVuIGFrdHVhbCA9IDI1MCArIDEyMCArIDE4MCA9IDU1MA0KDQotIFByb3BvcnNpIGFrdHVhbDoNCiAgDQogIC0gS290YSBBOiAyNTAgLyA1NTAg4omIIDAuNDU1DQogDQogIC0gS290YSBCOiAxMjAgLyA1NTAg4omIIDAuMjE4DQogDQogIC0gS290YSBDOiAxODAgLyA1NTAg4omIIDAuMzI3DQoNCioqTGFuZ2thaCAzOiBIaXR1bmcgQm9ib3QgUGVueWVzdWFpYW4gcGVyIFJlc3BvbmRlbioqDQoNClxbDQpcdGV4dHtCb2JvdCBLb3RhfSA9IFxmcmFje1x0ZXh0e1Byb3BvcnNpIElkZWFsfX17XHRleHR7UHJvcG9yc2kgQWt0dWFsfX0NClxdDQoNCi0gS290YSBBOiAwLjMzMyAvIDAuNDU1IOKJiCAwLjczMg0KDQotIEtvdGEgQjogMC4zMzMgLyAwLjIxOCDiiYggMS41MjcNCg0KLSBLb3RhIEM6IDAuMzMzIC8gMC4zMjcg4omIIDEuMDE4DQoNCioqSW50ZXJwcmV0YXNpOioqDQoNCi0gUmVzcG9uZGVuIGRhcmkgS290YSBBIGRpYmVyaSBib2JvdCBsZWJpaCBrZWNpbCBrYXJlbmEganVtbGFobnlhIHRlcmxhbHUgYmFueWFrLg0KDQotIFJlc3BvbmRlbiBkYXJpIEtvdGEgQiBkaWJlcmkgYm9ib3QgbGViaWggYmVzYXIga2FyZW5hIGp1bWxhaG55YSB0ZXJsYWx1IHNlZGlraXQuDQoNCi0gS290YSBDIG1lbmRla2F0aSB0YXJnZXQsIGphZGkgYm9ib3RueWEgaGFtcGlyIDEuDQoNCg0KIyBNZW5kZXNhaW4gU3VydmVpIGRlbmdhbiBQZW1ib2JvdGFuIFdha3R1IFB1bmNhaw0KDQpCdWF0bGFoIGRlc2FpbiByYW5jYW5nYW4gc3VydmVpIHRlbnRhbmcgcGVyc2Vwc2kga2VueWFtYW5hbiBwZW5nZ3VuYSBvamVrIG9ubGluZSBzYWF0IGphbSBzaWJ1ayAoMDcuMDDigJMwOS4wMCBkYW4gMTcuMDDigJMxOS4wMCkuDQoNCioqSW5zdHJ1a3NpOioqDQoNCiMjIERlc2FpbiBwZW5kZWthdGFuIHNhbXBsaW5nIHlhbmcgbWVtdW5na2lua2FuIEFuZGEgbWVuYW5na2FwIHBlcnNlcHNpIHBlbmdndW5hIHNlY2FyYSByZXByZXNlbnRhdGlmIHBhZGEgamFtIHNpYnVrLCB0YW5wYSBtZWxha3VrYW4gc3VydmVpIHNlcGFuamFuZyBoYXJpLg0KDQpKYXdhYjogDQoNCkRlbmdhbiBtZW5nZ3VuYWthbiBwZW5kZWthdGFuIHNhbXBsaW5nIHRlcnN0cmF0aWZpa2FzaSBiZXJkYXNhcmthbiB3YWt0dSBwdW5jYWsuIFlhaXR1IGRlbmdhbiBtZW1iYWdpIHdha3R1IHB1bmNhayBtZW5qYWRpIGR1YSBzdHJhdGE6DQoNCi0gUGFnaTogMDcuMDAtMDkuMDANCg0KLSBTb3JlOiAxNy4wMC0xOS4wMA0KDQpEZW5nYW4gY2FyYSB0ZXJzZWJ1dCBraXRhIHRpZGFrIHBlcmx1IG1lbGFrdWthbiBzdXJ2ZWkgc2VwYW5qYW5nIGhhcmkuIEhhbCBpbmkgZGlsYWt1a2FuIHVudHVrIG1lbmphZ2EgcmVwcmVzZW50YXNpOg0KDQotIEtpdGEgcGVybGFrdWthbiB3YWt0dSBzZWJhZ2FpIGxhcGlzYW4gc3RhdGEsIGFnYXIgYmlzYSBtZW55ZXN1YWlrYW4gYm9ib3RueWEuDQoNCi0gS3VvdGEgYmlzYSBkaWJhZ2kgcmF0YSBhdGF1IG1lbmdpa3V0aSBkYXRhIGhpc3RvcmlzLg0KDQojIyBTZXJ0YWthbiByYW5jYW5nYW4gd2FrdHUsIG1ldG9kZSBwZW1pbGloYW4gcmVzcG9uZGVuLCBkYW4ganVzdGlmaWthc2kgcGVtaWxpaGFuIHVuaXQgc2FtcGxpbmcuDQoNCkphd2FiOiANCg0KKioxLiBXYWt0dSBQZWxha3NhbmFhbiBTdXJ2ZWkqKg0KDQogIC0gRGlsYWt1a2FuIGhhbnlhIHBhZGEgamFtIHNpYnVrDQogICAgDQogICAgLSBQYWdpOiAwNy4wMC0wOS4wMA0KDQogICAgLSBTb3JlOiAxNy4wMC0xOS4wMA0KICAgIA0KICAtIERhbGFtIDUgaGFyaSBrZXJqYSAoU2VuaW4tSnVtYXQpDQogIA0KKioyLiBNZXRvZGUgUGVtaWxpaGFuIFJlc3BvbmRlbioqDQoNCiAgLSBMb2thc2k6IFRpdGlrIHJhbWFpLyBuYWlrIHR1cnVubnlhIHBlbnVtcGFuZyBvamVrIG9ubGluZSAoc3Rhc2l1biwga2FtcHVzLCBrYW50b3IsIHB1c2F0IHBlcmJlbGFuamFhbiwgZGxsKQ0KICANCiAgLSBNZXRvZGUgU2FtcGxpbmc6IEludGVyY2VwdCBzYW1wbGluZyBkaSBsb2thc2kgc3RyYXRlZ2lzOg0KDQogICAgICBQZXdhd2FuY2FyYSBsYW5nc3VuZyBtZW55YXBhIHBlbnVtcGFuZyB5YW5nIGJhcnUgdHVydW4gZGFyaSBvamVrIG9ubGluZQ0KDQogIC0gS3JpdGVyaWEgUmVzcG9uZGVuOg0KDQogICAgLSBVc2lhIDE3Kw0KDQogICAgLSBCYXJ1IHNhamEgbWVuZ2d1bmFrYW4gb2playBvbmxpbmUNCg0KICAgIC0gQmVyc2VkaWEgZGl3YXdhbmNhcmFpIHNpbmdrYXQgKDPigJM1IG1lbml0KQ0KICAgIA0KKiozLiBKdXN0aWZpa2FzaSBQZW1pbGloYW4gVW5pdCBTYW1wbGluZyoqDQoNCiAgLSBVbml0IHNhbXBsaW5nIHV0YW1hOiBwZW5nZ3VuYSBvamVrIG9ubGluZSBha3RpZiBzYWF0IGphbSBzaWJ1ay4NCg0KICAtIERlbmdhbiBpbnRlcmNlcHQgZGkgbG9rYXNpIHBhZGF0IHBlbnVtcGFuZywga2l0YSBiaXNhIG1lbmdha3NlcyBwZW5nZ3VuYSBzZWJlbmFybnlhIHNhYXQgbWVyZWthIGJlbmFyLWJlbmFyIG1lbmdndW5ha2FuIGxheWFuYW4sIGJ1a2FuIGhhbnlhIG1lbmdhbmRhbGthbiBpbmdhdGFuLiANCg0KICAtIEZva3VzIGhhbnlhIHBhZGEgamFtIHNpYnVrIG1lbmdoZW1hdCBiaWF5YSBkYW4gdGVuYWdhIHN1cnZlaSwgc2FtYmlsIHRldGFwIG1lbXBlcnRhaGFua2FuIGZva3VzIHN0dWRpLg0KDQoNCiMjIEplbGFza2FuIGJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVueWVzdWFpa2FuIGhhc2lsIHN1cnZlaSBqaWthIDYwJSByZXNwb25kZW4gYmVyYXNhbCBkYXJpIHBhZ2kgaGFyaSwgc2VtZW50YXJhIDQwJSBkYXJpIHNvcmUgaGFyaSwgc2VkYW5na2FuIGRhdGEgaGlzdG9yaXMgbWVudW5qdWtrYW4gcGVuZ2d1bmEgb2playBvbmxpbmUgc2FhdCBzb3JlIGhhcmkgZHVhIGthbGkgbGViaWggYmFueWFrIGRpYmFuZGluZyBwYWdpLg0KDQpKYXdhYjogDQoNCioqTWFzYWxhaDoqKg0KDQotIERpc3RyaWJ1c2kgUmVzcG9uZGVuIEFrdHVhbDogIA0KDQogIC0gNjAlIHJlc3BvbmRlbiBwYWdpDQoNCiAgLSA0MCUgcmVzcG9uZGVuIHNvcmUNCg0KLSBOYW11biwgZGF0YSBoaXN0b3JpcyBtZW51bmp1a2thbiBiYWh3YSBwZW5nZ3VuYSBvamVrIG9ubGluZSBzb3JlIGhhcmkgZHVhIGthbGkgbGViaWggYmFueWFrIGRpYmFuZGluZ2thbiBwYWdpIGhhcmkuIEFydGlueWEsIHBlbmdndW5hIHNvcmUgbGViaWggZG9taW5hbiwgdGV0YXBpIGRpIHN1cnZlaSBraXRhLCByZXNwb25kZW4gc29yZSBrdXJhbmcgdGVyd2FraWxpLg0KDQoqKkxhbmdrYWgtTGFuZ2thaCBQZW55ZXN1YWlhbiBCb2JvdCBXYWt0dSoqDQoNCioqMS4gVGVudHVrYW4gUHJvcG9yc2kgSWRlYWw6KioNCg0KQmVyZGFzYXJrYW4gZGF0YSBoaXN0b3Jpcywga2l0YSB0YWh1IGJhaHdhOg0KDQotIFBlbmdndW5hIFBhZ2kgPSAxIGJhZ2lhbg0KDQotIFBlbmdndW5hIFNvcmUgPSAyIGJhZ2lhbiAgDQoNClRvdGFsID0gMyBiYWdpYW4gDQoNClByb3BvcnNpIGlkZWFsbnlhOg0KDQotIFBhZ2k6IDEgLyAzID0gMzMuMzMlDQotIFNvcmU6IDIgLyAzID0gNjYuNjclDQoNCkRlbmdhbiBrYXRhIGxhaW4sIGlkZWFsbnlhLCBraXRhIGluZ2luIDMzLjMzJSByZXNwb25kZW4gYmVyYXNhbCBkYXJpIHBhZ2ksIGRhbiA2Ni42NyUgZGFyaSBzb3JlLg0KDQoqKjIuIEhpdHVuZyBQcm9wb3JzaSBBa3R1YWwgUmVzcG9uZGVuOioqDQoNCi0gUHJvcG9yc2kgYWt0dWFsIHlhbmcgdGVyY2F0YXQgZGkgc3VydmVpOg0KDQogIC0gUGFnaTogNjAlIHJlc3BvbmRlbg0KICAtIFNvcmU6IDQwJSByZXNwb25kZW4NCg0KKiozLiBIaXR1bmcgQm9ib3QgUGVueWVzdWFpYW46KioNCg0KVW50dWsgbWVueWVzdWFpa2FuIHBlcmJlZGFhbiBpbmksIGtpdGEgbWVuZ2d1bmFrYW4gYm9ib3QgeWFuZyBkaWhpdHVuZyBzZWJhZ2FpIHBlcmJhbmRpbmdhbiBhbnRhcmEgcHJvcG9yc2kgaWRlYWwgZGFuIGFrdHVhbC4NCg0KXFsNClx0ZXh0e0JvYm90fSA9IFxmcmFje1x0ZXh0e1Byb3BvcnNpIElkZWFsfX17XHRleHR7UHJvcG9yc2kgQWt0dWFsfX0NClxdDQoNCioqUGVyaGl0dW5nYW4gYm9ib3Q6KioNCg0KLSBQYWdpOiAgDQogIFxbDQogIFx0ZXh0e0JvYm90IFBhZ2l9ID0gXGZyYWN7MC4zMzN9ezAuNjB9ID0gMC41NTUNCiAgXF0NCiAgDQogIEFydGlueWEsIHNldGlhcCByZXNwb25kZW4gcGFnaSBha2FuIGRpaGl0dW5nIGxlYmloIGtlY2lsIGRhbGFtIGFuYWxpc2lzLiBIYWwgaW5pIGthcmVuYSBqdW1sYWggcmVzcG9uZGVuIHBhZ2kgbGViaWggYmFueWFrIGRhcmkgeWFuZyBzZWhhcnVzbnlhLiBKYWRpLCBraXRhICJtZW5ndXJhbmdpIiBrb250cmlidXNpbnlhIHVudHVrIG1lbmNvY29ra2FuIHByb3BvcnNpIHlhbmcgbGViaWggaWRlYWwuDQoNCi0gU29yZTogIA0KICBcWw0KICBcdGV4dHtCb2JvdCBTb3JlfSA9IFxmcmFjezAuNjY3fXswLjQwfSA9IDEuNjY3DQogIFxdDQogIA0KICBTZWJhbGlrbnlhLCBzZXRpYXAgcmVzcG9uZGVuIHNvcmUgYWthbiBkaWhpdHVuZyBsZWJpaCBiZXNhci4gUmVzcG9uZGVuIHNvcmUgbGViaWggc2VkaWtpdCBkYXJpIHlhbmcgc2VoYXJ1c255YSwgamFkaSBraXRhICJtZW5pbmdrYXRrYW4iIGtvbnRyaWJ1c2lueWEgZGFsYW0gYW5hbGlzaXMgdW50dWsgbWVuZ2ltYmFuZ2lueWEuDQoNCioqSW50ZXJwcmV0YXNpOioqDQoNCi0gUmVzcG9uZGVuIFBhZ2kgeWFuZyBiZXJqdW1sYWggbGViaWggYmFueWFrLCBha2FuIGRpa3VyYW5naSBib2JvdG55YSAoZGlidWF0IGxlYmloIGtlY2lsKSwga2FyZW5hIHNlaGFydXNueWEgbWVyZWthIHRpZGFrIHNlYmVzYXIgaXR1IGRpYmFuZGluZ2thbiBzb3JlLg0KDQotIFJlc3BvbmRlbiBTb3JlIHlhbmcgYmVyanVtbGFoIGxlYmloIHNlZGlraXQsIGFrYW4gZGliZXJpa2FuIGJvYm90IGxlYmloIHRpbmdnaSwgYWdhciBrb250cmlidXNpbnlhIHRlcmhhZGFwIHRvdGFsIGhhc2lsIGxlYmloIHJlcHJlc2VudGF0aWYgdGVyaGFkYXAga2VueWF0YWFuIGJhaHdhIGxlYmloIGJhbnlhayBvcmFuZyBtZW5nZ3VuYWthbiBvamVrIG9ubGluZSBwYWRhIHNvcmUgaGFyaS4NCg0KDQojIEFuZGEgZGl0dWdhc2thbiBvbGVoIGJpcm8gYWthZGVtaWsga2FtcHVzIHVudHVrIG1lcmFuY2FuZyBpbnN0cnVtZW4gc3VydmVpIHlhbmcgYmVydHVqdWFuIG1lbmdldmFsdWFzaSBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1paywgeWFuZyBtZW5jYWt1cCBsYXlhbmFuIHNlcGVydGk6IEtSUyBvbmxpbmUsIGJpbWJpbmdhbiBha2FkZW1paywgcGVsYXlhbmFuIGFkbWluaXN0cmFzaSwgYWtzZXMgaW5mb3JtYXNpIGFrYWRlbWlrLCBkYW4gYmFudHVhbiBwZW55ZWxlc2FpYW4gc3R1ZGkuDQoNClRpbSBwZW5lbGl0aSBtZW1pbnRhIEFuZGEgdW50dWs6DQoNCi0gTWVyYW5jYW5nIDI1IHBlcnRhbnlhYW4gdXRhbWEgZGVuZ2FuIHZhcmlhc2kgc2thbGEgZGFuIGJlbnR1ayBwZXJ0YW55YWFuLg0KDQotIE1lcmFuY2FuZyBzaXN0ZW0gdmFsaWRhc2kgaW5zdHJ1bWVuLg0KDQotIE1lbmVudHVrYW4gbWV0b2RlIGRpc3RyaWJ1c2kgZGFuIHBlbmd1amlhbiBrdWVzaW9uZXIgc2VjYXJhIHN0YXRpc3Rpay4NCg0KLSBNZW55aWFwa2FuIHNpbXVsYXNpIHN0cmF0ZWdpIHBlbmdhbWJpbGFuIHNhbXBlbCBkYW4gcGVuZ29sYWhhbiBkYXRhIGF3YWwuDQoNCkphd2FiOg0KDQotLS0NCioqTEFQT1JBTiBSQU5DQU5HQU4gU1VSVkVJIEtFUFVBU0FOIE1BSEFTSVNXQSBURVJIQURBUCBMQVlBTkFOIEFLQURFTUlLKioNCg0KDQoqKkkuIERlc2FpbiBQZXJ0YW55YWFuIFN1cnZlaSoqDQoNClN1cnZlaSBpbmkgYmVydHVqdWFuIHVudHVrIG1lbmdldmFsdWFzaSBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1payBkaSBrYW1wdXMuIFRlcmRpcmkgZGFyaSAyNSBwZXJ0YW55YWFuIHlhbmcgbWVuY2FrdXAgbGltYSBsYXlhbmFuIHV0YW1hOg0KDQoxLiBLUlMgT25saW5lDQoyLiBCaW1iaW5nYW4gQWthZGVtaWsNCjMuIFBlbGF5YW5hbiBBZG1pbmlzdHJhc2kgIA0KNC4gQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrICANCjUuIEJhbnR1YW4gUGVueWVsZXNhaWFuIFN0dWRpDQoNCioqR2Zvcm0gRGVzYWluIFBlcnRhbnlhYW46KioNCg0KaHR0cHM6Ly9mb3Jtcy5nbGUvSzNwMWZXclhRcEFreEFzZDYNCg0KDQoqKklJLiBTa2VtYSBWYWxpZGFzaSBJbnN0cnVtZW4qKg0KDQpVbnR1ayBtZW1hc3Rpa2FuIGt1YWxpdGFzIGRhbiBrZWFuZGFsYW4gaW5zdHJ1bWVuIHN1cnZlaSwga2l0YSBha2FuIG1lbmdndW5ha2FuIGR1YSBqZW5pcyB2YWxpZGFzaToNCg0KMS4gKipWYWxpZGl0YXMgSXNpIChDb250ZW50IFZhbGlkaXR5KSoqDQoNCiAgICBWYWxpZGl0YXMgaXNpIGt1ZXNpb25lciBpbmkgZGlqYW1pbiBkZW5nYW4gbWVtYXN0aWthbiBiYWh3YSBzZXRpYXAgcGVydGFueWFhbiByZWxldmFuIGRhbiBtZW5jYWt1cCBzZW11YSBkaW1lbnNpIGxheWFuYW4gYWthZGVtaWsgeWFuZyBpbmdpbiBkaWV2YWx1YXNpLCB5YWl0dSBLUlMgb25saW5lLCBiaW1iaW5nYW4gYWthZGVtaWssIHBlbGF5YW5hbiBhZG1pbmlzdHJhc2ksIGFrc2VzIGluZm9ybWFzaSBha2FkZW1paywgZGFuIGJhbnR1YW4gcGVueWVsZXNhaWFuIHN0dWRpLiBVbnR1ayBtZW1hc3Rpa2FuIGhhbCBpbmksIHNldGlhcCBwZXJ0YW55YWFuIGRpa2FpdGthbiBkZW5nYW4gYXNwZWsgbGF5YW5hbiB5YW5nIHJlbGV2YW4sIHlhbmcgZGlzdXN1biBiZXJkYXNhcmthbiBwZWRvbWFuIHlhbmcgYWRhIGRhbGFtIGxpdGVyYXR1ciB0ZXJrYWl0IGV2YWx1YXNpIGxheWFuYW4gYWthZGVtaWsgc2VydGEgdGVvcmktdGVvcmkgdmFsaWRpdGFzIGt1ZXNpb25lci4NCg0KMi4gKipWYWxpZGl0YXMgS29uc3RyYWsgKENvbnN0cnVjdCBWYWxpZGl0eSkqKg0KDQogICAgVmFsaWRpdGFzIGtvbnN0cmFrIGFrYW4gZGl1amkgZGVuZ2FuIG1lbmdhbmFsaXNpcyBzZWphdWggbWFuYSBwZXJ0YW55YWFuIGRhbGFtIGt1ZXNpb25lciBiZW5hci1iZW5hciBtZW5ndWt1ciBrZXB1YXNhbiB0ZXJoYWRhcCBsYXlhbmFuIGFrYWRlbWlrLiBTZXRlbGFoIHBlbmd1bXB1bGFuIGRhdGEsIGFuYWxpc2lzIGZha3RvciBha2FuIGRpbGFrdWthbiB1bnR1ayBtZW1lcmlrc2EgYXBha2FoIHNldGlhcCBkaW1lbnNpIGxheWFuYW4sIHNlcGVydGkgS1JTIG9ubGluZSBkYW4gYmltYmluZ2FuIGFrYWRlbWlrLCBkYXBhdCBkaWlkZW50aWZpa2FzaSBkYW4gZGl1a3VyIHNlY2FyYSB0ZXJwaXNhaCBkYWxhbSBrZWxvbXBvayBwZXJ0YW55YWFuIHlhbmcgc2VzdWFpLg0KDQozLiAqKlJlbGlhYmlsaXRhcyoqDQoNCiAgICBSZWxpYWJpbGl0YXMga3Vlc2lvbmVyIGFrYW4gZGl1amkgZGVuZ2FuIG1lbmdoaXR1bmcgQ3JvbmJhY2gncyBBbHBoYSBzZXRlbGFoIHVqaSBjb2JhIGt1ZXNpb25lciBwYWRhIHNlanVtbGFoIGtlY2lsIHJlc3BvbmRlbi4gTmlsYWkgQ3JvbmJhY2gncyBBbHBoYSB5YW5nIGxlYmloIGJlc2FyIGRhcmkgMC43IGFrYW4gbWVudW5qdWtrYW4gYmFod2Ega3Vlc2lvbmVyIG1lbWlsaWtpIGtvbnNpc3RlbnNpIGludGVybmFsIHlhbmcgYmFpayBkYW4gZGFwYXQgZGlwZXJjYXlhIGRhbGFtIHBlbmd1a3VyYW4uDQoNCjQuICoqUGVueWVzdWFpYW4gQmVyZGFzYXJrYW4gSGFzaWwgVmFsaWRhc2kqKg0KDQogICAgQmVyZGFzYXJrYW4gaGFzaWwgdmFsaWRhc2kgaXNpLCB2YWxpZGl0YXMga29uc3RyYWssIGRhbiByZWxpYWJpbGl0YXMsIGppa2EgZGl0ZW11a2FuIHBlcnRhbnlhYW4geWFuZyB0aWRhayBtZW1lbnVoaSBzdGFuZGFyIHZhbGlkaXRhcyBhdGF1IHJlbGlhYmlsaXRhcyB5YW5nIGRpaW5naW5rYW4sIHBlcnViYWhhbiBhdGF1IHBlbnllc3VhaWFuIGFrYW4gZGlsYWt1a2FuLiBMYW5na2FoLWxhbmdrYWggcGVyYmFpa2FuIHRlcnNlYnV0IGJpc2EgYmVydXBhIHBlbmdoYXB1c2FuLCBwZW5ndWJhaGFuLCBhdGF1IHBlbmFtYmFoYW4gcGVydGFueWFhbiB1bnR1ayBtZW1hc3Rpa2FuIGluc3RydW1lbiBrdWVzaW9uZXIgZGFwYXQgbWVuZ3VrdXIga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWsgZGVuZ2FuIHRlcGF0Lg0KDQoqKklJSS4gU3RyYXRlZ2kgRGlzdHJpYnVzaSBkYW4gU2FtcGxpbmcqKg0KDQoxLiAqKlBvcHVsYXNpIGRhbiBTYW1wZWwqKg0KDQogICAgKipQb3B1bGFzaSBQZW5lbGl0aWFuKioNCg0KICAgIFBvcHVsYXNpIHBlbmVsaXRpYW4gaW5pIGFkYWxhaCBzZWx1cnVoIG1haGFzaXN3YSBha3RpZiBkaSBJVFNCIHlhbmcgdGVyZGFmdGFyIGRhbiBtZW5nZ3VuYWthbiBsYXlhbmFuIGFrYWRlbWlrLiBMYXlhbmFuIGFrYWRlbWlrIHlhbmcgZGltYWtzdWQgbWVuY2FrdXAgS1JTIG9ubGluZSwgYmltYmluZ2FuIGFrYWRlbWlrLCBwZWxheWFuYW4gYWRtaW5pc3RyYXNpLCBha3NlcyBpbmZvcm1hc2kgYWthZGVtaWssIGRhbiBiYW50dWFuIHBlbnllbGVzYWlhbiBzdHVkaS4NCg0KICAgICoqU2FtcGVsIFBlbmVsaXRpYW4qKg0KDQogICAgU2FtcGVsIHBlbmVsaXRpYW4gYWthbiB0ZXJkaXJpIGRhcmkgbWFoYXNpc3dhIHlhbmcgbWVuZ2d1bmFrYW4gbGF5YW5hbiBha2FkZW1payBkaSAyIGZha3VsdGFzIHlhbmcgYWRhIGRpIElUU0IuIFNhbXBlbCBha2FuIGRpYW1iaWwgc2VjYXJhIHByb3BvcnNpb25hbCBkYXJpIDIgZmFrdWx0YXMsIGRlbmdhbiBtYXNpbmctbWFzaW5nIGZha3VsdGFzIG1lbnl1bWJhbmdrYW4gMjAwIHJlc3BvbmRlbi4gRGVuZ2FuIGRlbWlraWFuLCB0b3RhbCBzYW1wZWwgeWFuZyBha2FuIGRpYW1iaWwgYWRhbGFoIDYwMCByZXNwb25kZW4sIHlhbmcgdGVyZGlyaSBkYXJpOg0KDQogICAgLSA1MCByZXNwb25kZW4gZGFyaSBGYWt1bHRhcyBUZWtuaWsgZGFuIERlc2Fpbg0KDQogICAgLSA1MCByZXNwb25kZW4gZGFyaSBGYWt1bHRhcyBWb2thc2kNCg0KMi4gKipNZXRvZGUgU2FtcGxpbmcqKg0KDQogICAgKipNZXRvZGUgU2FtcGxpbmcgeWFuZyBEaWd1bmFrYW4qKg0KDQogICAgUGVuZWxpdGlhbiBpbmkgYWthbiBtZW5nZ3VuYWthbiBTdHJhdGlmaWVkIFJhbmRvbSBTYW1wbGluZywgeWFpdHUgdGVrbmlrIHBlbmdhbWJpbGFuIHNhbXBlbCBkaSBtYW5hIHBvcHVsYXNpIGRpYmFnaSBtZW5qYWRpIGJlYmVyYXBhIHN0cmF0YSBhdGF1IGtlbG9tcG9rIGJlcmRhc2Fya2FuIGthcmFrdGVyaXN0aWsgdGVydGVudHUsIGRhbGFtIHBlbmVsaXRpYW4gaW5pIGJlcmRhc2Fya2FuIGZha3VsdGFzLiBTZXRpYXAgc3RyYXRhIChmYWt1bHRhcykgYWthbiBkaXdha2lsaSBkYWxhbSBzYW1wZWwgc2VzdWFpIGRlbmdhbiBqdW1sYWggeWFuZyB0ZWxhaCBkaXRlbnR1a2FuLiBUZWtuaWsgaW5pIGRpcGlsaWggdW50dWsgbWVtYXN0aWthbiBiYWh3YSBzZXRpYXAgZmFrdWx0YXMgdGVyd2FraWxpIGRlbmdhbiBiYWlrLCBzZWhpbmdnYSBoYXNpbCBwZW5lbGl0aWFuIGRhcGF0IG1lbWJlcmlrYW4gZ2FtYmFyYW4geWFuZyBsZWJpaCBha3VyYXQgdGVudGFuZyBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1payBkaSBrYW1wdXMuUmVzcG9uZGVuIGFrYW4gZGlwaWxpaCBzZWNhcmEgYWNhayBkYXJpIHNldGlhcCBmYWt1bHRhcyB5YW5nIGFkYS4NCg0KICAgICoqS3JpdGVyaWEgUGVuZ2FtYmlsYW4gU2FtcGVsKioNCg0KICAgIC0gTWFoYXNpc3dhIGFrdGlmIHlhbmcgdGVyZGFmdGFyIGRhbGFtIHNpc3RlbSBha2FkZW1payBrYW1wdXMgZGFuIG1lbmdndW5ha2FuIGxheWFuYW4gYWthZGVtaWsgeWFuZyB0ZXJjYWt1cCBkYWxhbSBzdXJ2ZWkuDQoNCiAgICAtIFNhbXBlbCBha2FuIGRpYW1iaWwgc2VjYXJhIGFjYWsgZGFsYW0gc2V0aWFwIGZha3VsdGFzIHVudHVrIG1lbmNlZ2FoIGJpYXMgZGFsYW0gcGVtaWxpaGFuIHJlc3BvbmRlbi4NCg0KMy4gKipTdHJhdGVnaSBEaXN0cmlidXNpIEt1ZXNpb25lcioqDQoNCiAgICBLdWVzaW9uZXIgYWthbiBkaXNlYmFya2FuIHNlY2FyYSBvbmxpbmUgbWVuZ2d1bmFrYW4gcGxhdGZvcm0gR29vZ2xlIEZvcm0gdW50dWsgbWVtcGVybXVkYWggZGlzdHJpYnVzaSBkYW4gcGVuZ3VtcHVsYW4gZGF0YS4gUGxhdGZvcm0gaW5pIGRpcGlsaWgga2FyZW5hIGFrc2VzaWJpbGl0YXMgeWFuZyBtdWRhaCwgc2VoaW5nZ2EgbWFoYXNpc3dhIGRhcGF0IG1lbmdpc2kga3Vlc2lvbmVyIGthcGFuIHNhamEgZGFuIGRhcmkgbWFuYSBzYWphLg0KDQogICAgTGluayBLdWVzaW9uZXI6IExpbmsga3Vlc2lvbmVyIGFrYW4gZGliYWdpa2FuIG1lbGFsdWkgZW1haWwgcmVzbWkga2FtcHVzIGRhbiBncnVwIFdoYXRzQXBwIHlhbmcgdGVya2FpdCBkZW5nYW4ga2VsYXMgYXRhdSBqdXJ1c2FuIG1hc2luZy1tYXNpbmcuIEVtYWlsIGF0YXUgcGVzYW4geWFuZyBiZXJpc2kgbGluayBzdXJ2ZWkgYWthbiBtZW5jYWt1cCBwZW5qZWxhc2FuIHNpbmdrYXQgbWVuZ2VuYWkgdHVqdWFuIHN1cnZlaSBkYW4gY2FyYSBwZW5naXNpYW4ga3Vlc2lvbmVyLg0KDQogICAgV2FrdHUgUGVuZ2lzaWFuOiBSZXNwb25kZW4gZGliZXJpa2FuIHdha3R1IHNlbGFtYSBkdWEgbWluZ2d1IHVudHVrIG1lbmdpc2kga3Vlc2lvbmVyIHNldGVsYWggbWVuZXJpbWEgdW5kYW5nYW4uDQoNCjQuICoqUGVuZ3VqaWFuIFN0YXRpc3RpayBBd2FsKioNCg0KICAgIFNldGVsYWggcGVuZ3VtcHVsYW4gZGF0YSwgYW5hbGlzaXMgc3RhdGlzdGlrIGF3YWwgYWthbiBkaWxha3VrYW4gdW50dWsgbWVuZ3VqaSBrZWxheWFrYW4gZGFuIHZhbGlkaXRhcyBkYXRhIHlhbmcgZGlrdW1wdWxrYW4uIFBlbmd1amlhbiBzdGF0aXN0aWsgeWFuZyBha2FuIGRpZ3VuYWthbiBtZWxpcHV0aToNCg0KICAgICoqQW5hbGlzaXMgRGVza3JpcHRpZioqOiBVbnR1ayBtZW5nZ2FtYmFya2FuIGthcmFrdGVyaXN0aWsgcmVzcG9uZGVuIChtaXNhbG55YSwgZGVtb2dyYWZpKSBkYW4gdGluZ2thdCBrZXB1YXNhbiB0ZXJoYWRhcCBsYXlhbmFuIGFrYWRlbWlrLg0KDQogICAgKipVamkgUmVsaWFiaWxpdGFzKio6IE1lbmdndW5ha2FuIENyb25iYWNoJ3MgQWxwaGEgdW50dWsgbWVtZXJpa3NhIGtvbnNpc3RlbnNpIGludGVybmFsIGRhcmkga3Vlc2lvbmVyLg0KDQogICAgKipBbmFsaXNpcyBJbmZlcmVuc2lhbCoqOiBVamkgc3RhdGlzdGlrIHNlcGVydGkgdWppIHQgYXRhdSBhbmFsaXNpcyByZWdyZXNpIGFrYW4gZGlndW5ha2FuIHVudHVrIG1lbmd1amkgaGlwb3Rlc2lzIHRlcmthaXQgaHVidW5nYW4gYW50YXJhIGZha3Rvci1mYWt0b3IgeWFuZyBtZW1wZW5nYXJ1aGkga2VwdWFzYW4gbWFoYXNpc3dhLg0KDQo1LiAqKlBlbmphZHdhbGFuIGRhbiBQZW5nZWxvbGFhbiBEYXRhKioNCg0KICAgICoqUGVuamFkd2FsYW4gUGVuZ2lzaWFuIEt1ZXNpb25lcioqOiBTZWxhbWEgZHVhIG1pbmdndSBzZXRlbGFoIGRpc3RyaWJ1c2ksIHJlc3BvbmRlbiBkaW1pbnRhIHVudHVrIG1lbmdpc2kga3Vlc2lvbmVyLiBTZXRlbGFoIHdha3R1IHRlcnNlYnV0LCBkYXRhIGFrYW4gZGl0dXR1cCBkYW4gYW5hbGlzaXMgZGltdWxhaS4NCg0KICAgICoqUGVuZ2Vsb2xhYW4gRGF0YSoqOiBTZW11YSBkYXRhIHlhbmcgdGVya3VtcHVsIGFrYW4gZGlzaW1wYW4gZGVuZ2FuIGFtYW4gZGFsYW0gZm9ybWF0IGVsZWt0cm9uaWsgZGFuIGFrYW4gZGlhbmFsaXNpcyBtZW5nZ3VuYWthbiBwZXJhbmdrYXQgbHVuYWsgc3RhdGlzdGlrIHNlcGVydGkgZXhjZWwuDQoNCioqSVYuIFNpbXVsYXNpIFBlbmdhbWJpbGFuIFNhbXBlbCBkYW4gUGVuZ29sYWhhbiBEYXRhIEF3YWwqKg0KDQpTaW11bGFzaSBpbmkgYmVydHVqdWFuIHVudHVrIG1lbmd1amkgZGFuIG1lbXZpc3VhbGlzYXNpa2FuIHBvdGVuc2kgaGFzaWwgc3VydmVpIG1lbmdndW5ha2FuIGRhdGEgeWFuZyB0ZWxhaCBkaWt1bXB1bGthbiBtZWxhbHVpIGluc3RydW1lbiBrdWVzaW9uZXIgc2thbGEgTGlrZXJ0LiBGb2t1cyBhbmFsaXNpcyBhZGFsYWggbWVuZ2V2YWx1YXNpIGtlcHVhc2FuIG1haGFzaXN3YSB0ZXJoYWRhcCBsaW1hIGFzcGVrIGxheWFuYW4gYWthZGVtaWs6IEtSUyBPbmxpbmUsIEJpbWJpbmdhbiBBa2FkZW1paywgUGVsYXlhbmFuIEFkbWluaXN0cmFzaSwgQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrLCBkYW4gQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkuIERhdGEgZGlwZXJvbGVoIGRhcmkga3Vlc2lvbmVyIHlhbmcgdGVsYWggZGlzaW11bGFzaWthbiBkYW4gZGlrdW1wdWxrYW4gZGFsYW0gZm9ybWF0IENTViwgdGVyZGlyaSBhdGFzIDEwMCByZXNwb25kZW4uIFNldGlhcCBwZXJ0YW55YWFuIHBhZGEgbGltYSBkaW1lbnNpIGxheWFuYW4gYWthZGVtaWsgbWVuZ2d1bmFrYW4gc2thbGEgTGlrZXJ0IDHigJM1LCBkaSBtYW5hOg0KDQoxID0gU2FuZ2F0IFRpZGFrIFNldHVqdQ0KDQoyID0gVGlkYWsgU2V0dWp1DQoNCjMgPSBOZXRyYWwNCg0KNCA9IFNldHVqdQ0KDQo1ID0gU2FuZ2F0IFNldHVqdQ0KDQpEZW5nYW4gbWVtYmVyaWthbiBzaW1ib2wgcGVyIGRpbWVuc2ksIHlhaXR1Og0KDQoxLiAqKkxheWFuYW4gS1JTIE9ubGluZSAoQSkqKg0KDQogIC0gU2F5YSBtZXJhc2EgcHJvc2VzIHBlbmdpc2lhbiBLUlMgb25saW5lIG11ZGFoIGRpcGFoYW1pLiAoQTEpDQoNCiAgLSBTaXN0ZW0gS1JTIG9ubGluZSBqYXJhbmcgbWVuZ2FsYW1pIGVycm9yIHNhYXQgZGlndW5ha2FuLiAoQTIpDQoNCjIuICoqQmltYmluZ2FuIEFrYWRlbWlrIChCKSoqCQ0KDQogIC0gRG9zZW4gcGVtYmltYmluZyBtZW1iZXJpa2FuIGFyYWhhbiB5YW5nIGplbGFzIGRhbiBiZXJtYW5mYWF0LiAoQjEpDQoNCiAgLSBTYXlhIG1lcmFzYSBueWFtYW4gZGFsYW0ga29uc3VsdGFzaSBkZW5nYW4gZG9zZW4gcGVtYmltYmluZy4gKEIyKQ0KDQozLiAqKlBlbGF5YW5hbiBBZG1pbmlzdHJhc2kgQWthZGVtaWsgKEMpKioNCg0KICAtIFByb3NlcyBwZWxheWFuYW4gYWthZGVtaWsgKHNlcGVydGkgc3VyYXQgYWt0aWYsIGxlZ2FsaXNpciwgZGxsKSBjZXBhdCBkYW4gZWZpc2llbi4gKEMxKQkNCg0KICAtIFN0YWYgYWthZGVtaWsga2FtcHVzIHJhbWFoIGRhbiBrb211bmlrYXRpZi4gKEMyKQ0KDQo0LiAqKkFrc2VzIEluZm9ybWFzaSBBa2FkZW1payAoRCkqKg0KDQogIC0gSW5mb3JtYXNpIGFrYWRlbWlrIChqYWR3YWwga3VsaWFoLCB1amlhbiwgcGVuZ3VtdW1hbikgc2VsYWx1IGRpcGVyYmFydWkgZGVuZ2FuIHRlcGF0IHdha3R1LiAoRDEpDQoNCiAgLSBTYXlhIG11ZGFoIG1lbmdha3NlcyBpbmZvcm1hc2kgYWthZGVtaWsgbWVsYWx1aSBwb3J0YWwgYXRhdSBtZWRpYSBzb3NpYWwgcmVzbWkga2FtcHVzLiAoRDIpDQoNCjUuICoqQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkgKEUpKioNCg0KICAtIEthbXB1cyBtZW1iZXJpa2FuIGR1a3VuZ2FuIHlhbmcgbWVtYWRhaSBiYWdpIG1haGFzaXN3YSB5YW5nIGtlc3VsaXRhbiBtZW55ZWxlc2Fpa2FuIHN0dWRpLiAoRTEpCQ0KDQogIC0gQmFudHVhbiBhcGEgeWFuZyBBbmRhIGhhcmFwa2FuIGRhcmkga2FtcHVzIHVudHVrIG1lbnllbGVzYWlrYW4gc3R1ZGk/IChFMikNCg0KKipEYXRhIER1bW15KioNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KZGF0YSA8LSByZWFkLmNzdigic2ltdWxhc2kuY3N2Iiwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQ0KaGVhZChkYXRhKQ0KYGBgDQoNCioqTWVhbiAocmF0YS1yYXRhKSoqDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgSmlrYSBoYW55YSBrb2xvbSBudW1lcmlrIHlhbmcgaW5naW4gZGloaXR1bmcNCmxpa2VydF9kYXRhIDwtIGRhdGFbLCBzYXBwbHkoZGF0YSwgaXMubnVtZXJpYyldDQoNCiMgSGl0dW5nIG1lYW4gcGVyIGl0ZW0NCm1lYW5fcGVyX2l0ZW0gPC0gc2FwcGx5KGxpa2VydF9kYXRhLCBtZWFuLCBuYS5ybSA9IFRSVUUpDQoNCiMgVGFtcGlsa2FuIGhhc2lsDQpwcmludCgiTWVhbiAoUmF0YS1yYXRhKSBzZXRpYXAgaXRlbToiKQ0KcHJpbnQobWVhbl9wZXJfaXRlbSkNCg0KIyBIaXR1bmcgTWVhbiBwZXIgRGltZW5zaQ0KZGltZW5zaV9sYWJlbHMgPC0gc3Vic3RyKGNvbG5hbWVzKGxpa2VydF9kYXRhKSwgMSwgMSkNCg0KIyBHdW5ha2FuIHRhcHBseSB1bnR1ayBtZW5naGl0dW5nIHJhdGEtcmF0YSB0aWFwIGRpbWVuc2kNCm1lYW5fcGVyX2RpbWVuc2kgPC0gdGFwcGx5KGNvbE1lYW5zKGxpa2VydF9kYXRhLCBuYS5ybSA9IFRSVUUpLCBkaW1lbnNpX2xhYmVscywgbWVhbikNCg0KcHJpbnQoIk1lYW4gcGVyIERpbWVuc2k6IikNCnByaW50KG1lYW5fcGVyX2RpbWVuc2kpDQpgYGANCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhIG1lYW4gcGVyIGRpbWVuc2kNCm1lYW5fZGltZW5zaSA8LSBkYXRhLmZyYW1lKA0KICBEaW1lbnNpID0gYygiQSAtIEtSUyBPbmxpbmUiLCANCiAgICAgICAgICAgICAgIkIgLSBCaW1iaW5nYW4gQWthZGVtaWsiLCANCiAgICAgICAgICAgICAgIkMgLSBBZG1pbmlzdHJhc2kgQWthZGVtaWsiLCANCiAgICAgICAgICAgICAgIkQgLSBBa3NlcyBJbmZvcm1hc2kiLCANCiAgICAgICAgICAgICAgIkUgLSBCYW50dWFuIFN0dWRpIiksDQogIE1lYW4gPSBjKDMuMDYwLCAyLjk2NSwgMy4wNDUsIDMuMDcwLCAzLjI0MCkNCikNCg0KIyBXYXJuYSBiZXJiZWRhIHVudHVrIHNldGlhcCBiYXINCndhcm5hX2RpbWVuc2kgPC0gYygiIzFmNzdiNCIsICIjZmY3ZjBlIiwgIiMyY2EwMmMiLCAiI2Q2MjcyOCIsICIjOTQ2N2JkIikNCg0KIyBCYXIgY2hhcnQgaW50ZXJha3RpZg0KZmlnIDwtIHBsb3RfbHkobWVhbl9kaW1lbnNpLCANCiAgICAgICAgICAgICAgIHggPSB+RGltZW5zaSwgDQogICAgICAgICAgICAgICB5ID0gfk1lYW4sIA0KICAgICAgICAgICAgICAgdHlwZSA9ICdiYXInLCANCiAgICAgICAgICAgICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSB3YXJuYV9kaW1lbnNpKSkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJSYXRhLXJhdGEgS2VwdWFzYW4gTWFoYXNpc3dhIHBlciBEaW1lbnNpIExheWFuYW4gQWthZGVtaWsiLA0KICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkRpbWVuc2kgTGF5YW5hbiBBa2FkZW1payIpLA0KICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlJhdGEtcmF0YSBTa29yIChTa2FsYSBMaWtlcnQgMeKAkzUpIiksDQogICAgICAgICBtYXJnaW4gPSBsaXN0KGIgPSA4MCkpDQoNCmZpZw0KYGBgDQoNCioqSW50ZXJwcmV0YXNpKioNCg0KQmVyZGFzYXJrYW4gaGFzaWwgYW5hbGlzaXMgZGVza3JpcHRpZiB0ZXJoYWRhcCBkYXRhIHNrYWxhIExpa2VydCBkYXJpIDEwMCByZXNwb25kZW4sIGRpcGVyb2xlaCBiYWh3YSB0aW5na2F0IGtlcHVhc2FuIG1haGFzaXN3YSB0ZXJoYWRhcCBsaW1hIGRpbWVuc2kgbGF5YW5hbiBha2FkZW1payBrYW1wdXMgYmVyYWRhIHBhZGEga2F0ZWdvcmkgY3VrdXAgcHVhcywgZGVuZ2FuIG5pbGFpIG1lYW4gYmVya2lzYXIgYW50YXJhIDIsOTYgaGluZ2dhIDMsMjQuIERpbWVuc2kgQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkgKEUpIG1lbXBlcm9sZWggcmF0YS1yYXRhIHRlcnRpbmdnaSAoMywyNCksIG1lbnVuanVra2FuIGJhaHdhIG1haGFzaXN3YSBtZXJhc2EgY3VrdXAgZGlkdWt1bmcgZGFsYW0gcHJvc2VzIHBlbnllbGVzYWlhbiBzdHVkaS4gU2VtZW50YXJhIGl0dSwgZGltZW5zaSBkZW5nYW4ga2VwdWFzYW4gdGVyZW5kYWggYWRhbGFoIEJpbWJpbmdhbiBBa2FkZW1payAoQikgZGVuZ2FuIG5pbGFpIG1lYW4gMiw5NiwgbWVuZ2luZGlrYXNpa2FuIHBlcmx1bnlhIHBlbmluZ2thdGFuIHBhZGEgYXNwZWsgcGVuZGFtcGluZ2FuIGFrYWRlbWlrLCB0ZXJ1dGFtYSB0ZXJrYWl0IGFyYWhhbiBkYW4ga2VueWFtYW5hbiBkYWxhbSBrb25zdWx0YXNpLiBTZWNhcmEgdW11bSwgc2ViYWdpYW4gYmVzYXIgaXRlbSBiZXJhZGEgcGFkYSByZW50YW5nIG5ldHJhbCBoaW5nZ2EgY3VrdXAgcHVhcywgeWFuZyBtZW5jZXJtaW5rYW4gYmFod2EgbGF5YW5hbiBha2FkZW1payBzdWRhaCBiZXJqYWxhbiBkZW5nYW4gYmFpayBuYW11biBtYXNpaCBtZW1pbGlraSBydWFuZyBwZXJiYWlrYW4sIGtodXN1c255YSBwYWRhIGFzcGVrIGtlY2VwYXRhbiBpbmZvcm1hc2kgZGFuIGt1YWxpdGFzIGludGVyYWtzaSBkb3NlbiBkZW5nYW4gbWFoYXNpc3dhLg0KDQoqKk1lZGlhbioqDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVuZ2hpdHVuZyBtZWRpYW4gdW50dWsgc2V0aWFwIGl0ZW0NCm1lZGlhbl9wZXJfaXRlbSA8LSBzYXBwbHkoZGF0YSwgZnVuY3Rpb24oeCkgbWVkaWFuKGFzLm51bWVyaWMoeCksIG5hLnJtID0gVFJVRSkpDQpwcmludCgiTWVkaWFuIHNldGlhcCBpdGVtOiIpDQpwcmludChtZWRpYW5fcGVyX2l0ZW0pDQoNCiMgTWVuZ2hpdHVuZyBtZWRpYW4gcGVyIGRpbWVuc2kNCiMgUGFzdGlrYW4gZGF0YSBoYW55YSBiZXJ1cGEgbmlsYWkgbnVtZXJpaw0KZGltZW5zaV9BIDwtIGRhdGFbLCBjKCJBMSIsICJBMiIpXSAgIyBNaXNhbG55YSwgQTEgZGFuIEEyIHVudHVrIGRpbWVuc2kgQQ0KZGltZW5zaV9CIDwtIGRhdGFbLCBjKCJCMSIsICJCMiIpXSAgIyBNaXNhbG55YSwgQjEgZGFuIEIyIHVudHVrIGRpbWVuc2kgQg0KZGltZW5zaV9DIDwtIGRhdGFbLCBjKCJDMSIsICJDMiIpXSAgIyBNaXNhbG55YSwgQzEgZGFuIEMyIHVudHVrIGRpbWVuc2kgQw0KZGltZW5zaV9EIDwtIGRhdGFbLCBjKCJEMSIsICJEMiIpXSAgIyBNaXNhbG55YSwgRDEgZGFuIEQyIHVudHVrIGRpbWVuc2kgRA0KZGltZW5zaV9FIDwtIGRhdGFbLCBjKCJFMSIsICJFMiIpXSAgIyBNaXNhbG55YSwgRTEgZGFuIEUyIHVudHVrIGRpbWVuc2kgRQ0KDQojIE1lbmdoaXR1bmcgbWVkaWFuIHBlciBkaW1lbnNpIGRlbmdhbiBtZW1hc3Rpa2FuIGRhdGEgbnVtZXJpaw0KbWVkaWFuX3Blcl9kaW1lbnNpIDwtIGMoDQogIEEgPSBtZWRpYW4oYXMubnVtZXJpYyh1bmxpc3QoZGltZW5zaV9BKSksIG5hLnJtID0gVFJVRSksDQogIEIgPSBtZWRpYW4oYXMubnVtZXJpYyh1bmxpc3QoZGltZW5zaV9CKSksIG5hLnJtID0gVFJVRSksDQogIEMgPSBtZWRpYW4oYXMubnVtZXJpYyh1bmxpc3QoZGltZW5zaV9DKSksIG5hLnJtID0gVFJVRSksDQogIEQgPSBtZWRpYW4oYXMubnVtZXJpYyh1bmxpc3QoZGltZW5zaV9EKSksIG5hLnJtID0gVFJVRSksDQogIEUgPSBtZWRpYW4oYXMubnVtZXJpYyh1bmxpc3QoZGltZW5zaV9FKSksIG5hLnJtID0gVFJVRSkNCikNCg0KcHJpbnQoIk1lZGlhbiBwZXIgRGltZW5zaToiKQ0KcHJpbnQobWVkaWFuX3Blcl9kaW1lbnNpKQ0KYGBgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YSBtZWRpYW4gc2V0aWFwIGl0ZW0NCm1lZGlhbl9pdGVtIDwtIGRhdGEuZnJhbWUoDQogIEl0ZW0gPSBjKCJBMSIsICJBMiIsICJCMSIsICJCMiIsICJDMSIsICJDMiIsICJEMSIsICJEMiIsICJFMSIsICJFMiIpLA0KICBNZWRpYW4gPSBjKDMuMCwgMy4wLCAzLjAsIDMuMCwgMy4wLCAzLjAsIDMuMCwgMy4wLCAzLjUsIDMuMCkNCikNCg0KIyBXYXJuYSBiZXJiZWRhLWJlZGEgdW50dWsgc2V0aWFwIGl0ZW0NCml0ZW1fY29sb3JzIDwtIGMoImJyb3duIiwgInJlZCIsICJibHVlIiwgImN5YW4iLCAiZGFya2dyZWVuIiwgImdyZWVuIiwNCiAgICAgICAgICAgICAgICAgIm9yYW5nZSIsICJnb2xkIiwicHVycGxlIiwgInBpbmsiKQ0KDQojIFZpc3VhbGlzYXNpIGludGVyYWt0aWYgbWVkaWFuIHNldGlhcCBpdGVtDQpmaWcgPC0gcGxvdF9seSgNCiAgbWVkaWFuX2l0ZW0sDQogIHggPSB+SXRlbSwNCiAgeSA9IH5NZWRpYW4sDQogIHR5cGUgPSAnYmFyJywNCiAgbWFya2VyID0gbGlzdChjb2xvciA9IGl0ZW1fY29sb3JzKQ0KKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIk1lZGlhbiBTa29yIFNldGlhcCBJdGVtIExheWFuYW4gQWthZGVtaWsiLA0KICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJJdGVtIiksDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIk1lZGlhbiAoU2thbGEgTGlrZXJ0IDHigJM1KSIpLA0KICAgIG1hcmdpbiA9IGxpc3QoYiA9IDgwKQ0KICApDQoNCmZpZw0KYGBgDQoNCioqSW50ZXJwcmV0YXNpKioNCg0KQmVyZGFzYXJrYW4gaGFzaWwgcGVyaGl0dW5nYW4gbWVkaWFuLCBzZWJhZ2lhbiBiZXNhciByZXNwb25kZW4gbWVudW5qdWtrYW4gbmlsYWkgbWVkaWFuIHlhbmcga29uc2lzdGVuIGRpIGFuZ2thIDMgKE5ldHJhbCkgdW50dWsgaGFtcGlyIHNlbXVhIGl0ZW0gZGFuIGRpbWVuc2kgbGF5YW5hbiBha2FkZW1payB5YW5nIGRpdWppLCB5YW5nIG1lbmNha3VwIEtSUyBvbmxpbmUsIGJpbWJpbmdhbiBha2FkZW1paywgcGVsYXlhbmFuIGFkbWluaXN0cmFzaSwgYWtzZXMgaW5mb3JtYXNpIGFrYWRlbWlrLCBkYW4gYmFudHVhbiBwZW55ZWxlc2FpYW4gc3R1ZGkuIEluaSBtZW5naW5kaWthc2lrYW4gYmFod2EgbWFoYXNpc3dhIGNlbmRlcnVuZyBiZXJhZGEgcGFkYSBwb3Npc2kgbmV0cmFsIGRhbGFtIG1lbmlsYWkgYmVyYmFnYWkgYXNwZWsgbGF5YW5hbiBha2FkZW1paywgZGVuZ2FuIHRpZGFrIGFkYSBrZWNlbmRlcnVuZ2FuIGt1YXQgdW50dWsgc2V0dWp1IGF0YXUgdGlkYWsgc2V0dWp1LiBOYW11biwgcGFkYSBkaW1lbnNpIGJhbnR1YW4gcGVueWVsZXNhaWFuIHN0dWRpIChFMSksIG5pbGFpIG1lZGlhbiBzZWRpa2l0IGxlYmloIHRpbmdnaSAoMy41KSwgeWFuZyBtZW51bmp1a2thbiBiYWh3YSBzZWJhZ2lhbiByZXNwb25kZW4gc2VkaWtpdCBsZWJpaCBjZW5kZXJ1bmcgc2V0dWp1IGJhaHdhIGR1a3VuZ2FuIHlhbmcgZGliZXJpa2FuIGthbXB1cyBjdWt1cCBtZW1hZGFpLiBTZWNhcmEga2VzZWx1cnVoYW4sIGhhc2lsIGluaSBtZW5naW5kaWthc2lrYW4gYmFod2EgbWVza2lwdW4gbWF5b3JpdGFzIG1haGFzaXN3YSB0aWRhayBtZXJhc2Egc2FuZ2F0IHB1YXMgYXRhdSB0aWRhayBwdWFzIGRlbmdhbiBsYXlhbmFuIGFrYWRlbWlrLCB0ZXJkYXBhdCBwb3RlbnNpIHVudHVrIG1lbmluZ2thdGthbiBrdWFsaXRhcyBsYXlhbmFuIGRpIGJlcmJhZ2FpIGFyZWEgdW50dWsgbWVuY2FwYWkgdGluZ2thdCBrZXB1YXNhbiB5YW5nIGxlYmloIHRpbmdnaS4NCg0KKipNb2R1cyoqDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCmxpYnJhcnkobW9kZWVzdCkNCg0KIyBIaXR1bmcgbW9kdXMgc2V0aWFwIGl0ZW0NCm1vZHVzX3Blcl9pdGVtIDwtIHNhcHBseShkYXRhLCBmdW5jdGlvbih4KSB7DQogIG1mdihhcy5udW1lcmljKHgpLCBuYV9ybSA9IFRSVUUpDQp9KQ0KDQpwcmludCgiTW9kdXMgc2V0aWFwIGl0ZW06IikNCnByaW50KG1vZHVzX3Blcl9pdGVtKQ0KDQojIEtlbG9tcG9ra2FuIGJlcmRhc2Fya2FuIGRpbWVuc2kNCmRpbWVuc2lfQSA8LSBkYXRhWywgYygiQTEiLCAiQTIiKV0NCmRpbWVuc2lfQiA8LSBkYXRhWywgYygiQjEiLCAiQjIiKV0NCmRpbWVuc2lfQyA8LSBkYXRhWywgYygiQzEiLCAiQzIiKV0NCmRpbWVuc2lfRCA8LSBkYXRhWywgYygiRDEiLCAiRDIiKV0NCmRpbWVuc2lfRSA8LSBkYXRhWywgYygiRTEiLCAiRTIiKV0NCg0KIyBIaXR1bmcgbW9kdXMgcGVyIGRpbWVuc2kNCm1vZHVzX3Blcl9kaW1lbnNpIDwtIGMoDQogIEEgPSBtZnYodW5saXN0KGRpbWVuc2lfQSksIG5hX3JtID0gVFJVRSksDQogIEIgPSBtZnYodW5saXN0KGRpbWVuc2lfQiksIG5hX3JtID0gVFJVRSksDQogIEMgPSBtZnYodW5saXN0KGRpbWVuc2lfQyksIG5hX3JtID0gVFJVRSksDQogIEQgPSBtZnYodW5saXN0KGRpbWVuc2lfRCksIG5hX3JtID0gVFJVRSksDQogIEUgPSBtZnYodW5saXN0KGRpbWVuc2lfRSksIG5hX3JtID0gVFJVRSkNCikNCg0KcHJpbnQoIk1vZHVzIHBlciBEaW1lbnNpOiIpDQpwcmludChtb2R1c19wZXJfZGltZW5zaSkNCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCmxpYnJhcnkocGxvdGx5KQ0KDQojIEJ1YXQgZGF0YWZyYW1lIG1vZHVzIChhbWJpbCBzYXR1IG5pbGFpIHNhamEgamlrYSBhZGEgbGViaWggZGFyaSBzYXR1IG1vZHVzKQ0KbW9kdXNfZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBJdGVtID0gYygNCiAgICAiQTEgLSBLUlMgT25saW5lIiwNCiAgICAiQTIgLSBLUlMgT25saW5lIiwNCiAgICAiQjEgLSBCaW1iaW5nYW4gQWthZGVtaWsiLA0KICAgICJCMiAtIEJpbWJpbmdhbiBBa2FkZW1payIsDQogICAgIkMxIC0gQWRtaW5pc3RyYXNpIEFrYWRlbWlrIiwNCiAgICAiQzIgLSBBZG1pbmlzdHJhc2kgQWthZGVtaWsiLA0KICAgICJEMSAtIEFrc2VzIEluZm9ybWFzaSIsDQogICAgIkQyIC0gQWtzZXMgSW5mb3JtYXNpIiwNCiAgICAiRTEgLSBCYW50dWFuIFN0dWRpIiwNCiAgICAiRTIgLSBCYW50dWFuIFN0dWRpIg0KICApLA0KICBNb2R1cyA9IGMoMSwgNCwgNCwgMSwgMywgMiwgMiwgNSwgMSwgMikNCikNCg0KIyBXYXJuYSBiZXJiZWRhIHRpYXAgaXRlbQ0KY29sb3JzIDwtIGMoInJlZCIsICJibHVlIiwgImdyZWVuIiwgIm9yYW5nZSIsICJwdXJwbGUiLCANCiAgICAgICAgICAgICJicm93biIsICJwaW5rIiwgImN5YW4iLCAiZ29sZCIsICJkYXJrZ3JlZW4iKQ0KDQojIFBsb3QgaW50ZXJha3RpZg0KZmlnIDwtIHBsb3RfbHkoDQogIG1vZHVzX2RhdGEsDQogIHggPSB+SXRlbSwNCiAgeSA9IH5Nb2R1cywNCiAgdHlwZSA9ICdiYXInLA0KICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gY29sb3JzKQ0KKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIk1vZHVzIFNrb3IgU2V0aWFwIEl0ZW0gTGF5YW5hbiBBa2FkZW1payIsDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkl0ZW0iLCB0aWNrYW5nbGUgPSAtNDUpLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJNb2R1cyAoU2thbGEgTGlrZXJ0IDHigJM1KSIpLA0KICAgIG1hcmdpbiA9IGxpc3QoYiA9IDEwMCkNCiAgKQ0KDQpmaWcNCmBgYA0KDQoqKkludGVycHJldGFzaSoqDQoNCkJlcmRhc2Fya2FuIGhhc2lsIGFuYWxpc2lzIG1vZHVzIHRlcmhhZGFwIGRhdGEgc3VydmVpLCBkaWtldGFodWkgYmFod2EgdGVyZGFwYXQgdmFyaWFzaSB5YW5nIGN1a3VwIHNpZ25pZmlrYW4gZGFsYW0gcGVyc2Vwc2kgbWFoYXNpc3dhIHRlcmhhZGFwIGJlcmJhZ2FpIGxheWFuYW4gYWthZGVtaWsuIFBhZGEgZGltZW5zaSBMYXlhbmFuIEtSUyBPbmxpbmUgKEEpLCBpdGVtIEExIG1lbnVuanVra2FuIGJlYmVyYXBhIG5pbGFpIG1vZHVzICgxLCAyLCBkYW4gNCksIHlhbmcgbWVuZ2luZGlrYXNpa2FuIHBlcnNlYmFyYW4gb3BpbmkgeWFuZyBsdWFzLCBzZW1lbnRhcmEgQTIgY2VuZGVydW5nIG5ldHJhbCAoMykuIERpbWVuc2kgQmltYmluZ2FuIEFrYWRlbWlrIChCKSBkaWRvbWluYXNpIG9sZWggamF3YWJhbiAyIGRhbiAzLCBtZW51bmp1a2thbiBrZWNlbmRlcnVuZ2FuIG5ldHJhbCBoaW5nZ2EgdGlkYWsgcHVhcy4gUGFkYSBQZWxheWFuYW4gQWRtaW5pc3RyYXNpIEFrYWRlbWlrIChDKSwgaXRlbSBDMSBtZW51bmp1a2thbiBkdWEgbW9kdXMgKDEgZGFuIDQpLCB5YW5nIG1lbmdnYW1iYXJrYW4ga2V0aW1wYW5nYW4ga2VwdWFzYW4sIHNlbWVudGFyYSBDMiBsZWJpaCBwb3NpdGlmICg0KS4gVW50dWsgQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrIChEKSwgcmVzcG9uZGVuIHBhZGEgRDEgY2VuZGVydW5nIHNhbmdhdCB0aWRhayBzZXR1anUgKDEpLCBzZWRhbmdrYW4gRDIgc2FuZ2F0IHNldHVqdSAoNSksIG1lbmFuZGFrYW4ga2VzZW5qYW5nYW4gaW5mb3JtYXNpLiBTZW1lbnRhcmEgaXR1LCBCYW50dWFuIFBlbnllbGVzYWlhbiBTdHVkaSAoRSkgc2VjYXJhIHVtdW0gbWVtaWxpa2kgcGVuaWxhaWFuIHBvc2l0aWYsIGRlbmdhbiBtb2R1cyB0ZXJ0aW5nZ2kgcGFkYSBuaWxhaSA1LCBiYWlrIHVudHVrIEUxIG1hdXB1biBFMi4gU2VjYXJhIGtlc2VsdXJ1aGFuLCBtb2R1cyBwZXIgZGltZW5zaSBtZW1wZXJsaWhhdGthbiBiYWh3YSBkaW1lbnNpIEUgKGJhbnR1YW4gc3R1ZGkpIGRhbiBEIChha3NlcyBpbmZvcm1hc2kpIG1lbWlsaWtpIGtlcHVhc2FuIHRlcnRpbmdnaSAobW9kdXMgPSA1KSwgc2VtZW50YXJhIGRpbWVuc2kgQSBkYW4gQiBtZW1pbGlraSBrZWNlbmRlcnVuZ2FuIG5ldHJhbCBoaW5nZ2EgcmVuZGFoIChtb2R1cyA9IDIpLCB5YW5nIG1lbmFuZGFrYW4gcGVybHVueWEgcGVuaW5na2F0YW4gbGF5YW5hbiBwYWRhIGFzcGVrIHRlcnNlYnV0Lg0KDQoqKktlc2ltcHVsYW4gQW5hbGlzaXMgQXdhbCoqDQoNCkJlcmRhc2Fya2FuIGhhc2lsIGFuYWxpc2lzIHRlcmhhZGFwIGRhdGEgc2ltdWxhc2kgc2ViYW55YWsgMTAwIHJlc3BvbmRlbiwgdGluZ2thdCBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGltYSBkaW1lbnNpIGxheWFuYW4gYWthZGVtaWsga2FtcHVzIHNlY2FyYSB1bXVtIGJlcmFkYSBwYWRhIGthdGVnb3JpIGN1a3VwIGJhaWssIGRpdHVuanVra2FuIG9sZWggbmlsYWkgbWVhbiB5YW5nIGJlcmtpc2FyIGFudGFyYSAyLjk2NSBoaW5nZ2EgMy4yNDAgcGFkYSBza2FsYSBMaWtlcnQgMeKAkzUuIERpbWVuc2kgQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkgKEUpIG1lbnVuanVra2FuIHRpbmdrYXQga2VwdWFzYW4gdGVydGluZ2dpIChtZWFuID0gMy4yNDApLCBzZWRhbmdrYW4gQmltYmluZ2FuIEFrYWRlbWlrIChCKSBtZW5jYXRhdGthbiBza29yIHJhdGEtcmF0YSB0ZXJlbmRhaCAobWVhbiA9IDIuOTY1KSwgeWFuZyBtZW5naW5kaWthc2lrYW4gcGVybHVueWEgcGVuaW5na2F0YW4ga29tdW5pa2FzaSBkYW4gZWZla3Rpdml0YXMgYmltYmluZ2FuIGFrYWRlbWlrLiBBbmFsaXNpcyBtZWRpYW4gbWVtcGVya3VhdCB0ZW11YW4gaW5pLCBkZW5nYW4gbmlsYWkgbWVkaWFuIGtvbnNpc3RlbiBiZXJhZGEgcGFkYSBhbmdrYSAzLCBtZW5hbmRha2FuIGtlY2VuZGVydW5nYW4gamF3YWJhbiByZXNwb25kZW4gcGFkYSBrYXRlZ29yaSBuZXRyYWwuIFNlbWVudGFyYSBpdHUsIGFuYWxpc2lzIG1vZHVzIG1lbnVuanVra2FuIGJhaHdhIGJlYmVyYXBhIGl0ZW0gbWVtaWxpa2kgbmlsYWkgZG9taW5hbiB5YW5nIGJlcnZhcmlhc2ksIGJhaGthbiBsZWJpaCBkYXJpIHNhdHUgbmlsYWkgbW9kdXMsIHlhbmcgbWVuY2VybWlua2FuIGFkYW55YSBrZXJhZ2FtYW4gcGVuZGFwYXQgYXRhdSBwZXJzZXBzaSBhbnRhciByZXNwb25kZW4gdGVyaGFkYXAgbWFzaW5nLW1hc2luZyBsYXlhbmFuLiBTZWNhcmEga2VzZWx1cnVoYW4sIGhhc2lsIGluaSBtZW1iZXJpa2FuIGdhbWJhcmFuIGF3YWwgYmFod2EgbWVza2lwdW4gbGF5YW5hbiBha2FkZW1payBrYW1wdXMgYmVyamFsYW4gY3VrdXAgYmFpaywgbWFzaWggdGVyZGFwYXQgcnVhbmcgdW50dWsgcGVuaW5na2F0YW4ga2h1c3VzbnlhIHBhZGEgYXNwZWsgYmltYmluZ2FuIGFrYWRlbWlrIGRhbiBha3NlcyBzaXN0ZW0gbGF5YW5hbiBkaWdpdGFsIHlhbmcgbGViaWggc3RhYmlsIGRhbiBpbmZvcm1hdGlmLg0KDQoqKlYuIEtFU0lNUFVMQU4qKg0KDQpTdXJ2ZWkga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWsgZGkga2FtcHVzIHRlbGFoIGRpcmFuY2FuZyBzZWNhcmEgc2lzdGVtYXRpcyB1bnR1ayBtZW5ndWt1ciBwZXJzZXBzaSBtYWhhc2lzd2EgcGFkYSBsaW1hIGRpbWVuc2kgdXRhbWE6IEtSUyBPbmxpbmUsIEJpbWJpbmdhbiBBa2FkZW1paywgUGVsYXlhbmFuIEFkbWluaXN0cmFzaSwgQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrLCBkYW4gQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkuIEluc3RydW1lbiBzdXJ2ZWkgZGlrZW1iYW5na2FuIG1lbmdndW5ha2FuIHNrYWxhIExpa2VydCAx4oCTNSBkYW4gZGl2YWxpZGFzaSBtZWxhbHVpIHBlbmRla2F0YW4gdmFsaWRpdGFzIGlzaSwgdmFsaWRpdGFzIGtvbnN0cmFrLCBzZXJ0YSBkaXVqaSByZWxpYWJpbGl0YXNueWEgbWVuZ2d1bmFrYW4gQ3JvbmJhY2jigJlzIEFscGhhLg0KDQpCZXJkYXNhcmthbiBzaW11bGFzaSBhd2FsIGRlbmdhbiAxMDAgcmVzcG9uZGVuLCBkaXBlcm9sZWggaGFzaWwgc2ViYWdhaSBiZXJpa3V0Og0KDQotIFRpbmdrYXQga2VwdWFzYW4gc2VjYXJhIHVtdW0gYmVyYWRhIHBhZGEga2F0ZWdvcmkgY3VrdXAgYmFpaywgZGVuZ2FuIG5pbGFpIHJhdGEtcmF0YSAobWVhbikgYW50YXIgZGltZW5zaSBiZXJraXNhciBhbnRhcmEgMiw5NjUgaGluZ2dhIDMsMjQwLg0KDQotIERpbWVuc2kgQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkgKEUpIG1lbXBlcm9sZWggbmlsYWkga2VwdWFzYW4gdGVydGluZ2dpIChtZWFuID0gMywyNDAgZGFuIG1vZHVzID0gNSksIG1lbnVuanVra2FuIGJhaHdhIG1haGFzaXN3YSBtZXJhc2EgY3VrdXAgdGVyYmFudHUgZGFsYW0gcHJvc2VzIHBlbnllbGVzYWlhbiBzdHVkaS4NCg0KLSBTZWJhbGlrbnlhLCBkaW1lbnNpIEJpbWJpbmdhbiBBa2FkZW1payAoQikgbWVuY2F0YXQgc2tvciB0ZXJlbmRhaCAobWVhbiA9IDIsOTY1IGRhbiBtb2R1cyA9IDIpLCB5YW5nIG1lbmdpbmRpa2FzaWthbiBhZGFueWEga2VidXR1aGFuIHVudHVrIG1lbmluZ2thdGthbiBrdWFsaXRhcyBrb211bmlrYXNpIGRhbiBhcmFoYW4gYWthZGVtaWsgZGFyaSBkb3NlbiBwZW1iaW1iaW5nLg0KDQotIEFuYWxpc2lzIG1lZGlhbiBtZW1wZXJsaWhhdGthbiBiYWh3YSBzZWJhZ2lhbiBiZXNhciBkaW1lbnNpIGJlcmFkYSBwYWRhIHBvc2lzaSBuZXRyYWwgKG1lZGlhbiA9IDMpLCBtZW1wZXJrdWF0IGFzdW1zaSBiYWh3YSBwZXJzZXBzaSBtYWhhc2lzd2EgY2VuZGVydW5nIGJlbHVtIHNhbmdhdCBwdWFzIG5hbXVuIGp1Z2EgdGlkYWsgbmVnYXRpZi4NCg0KLSBIYXNpbCBtb2R1cyBtZW51bmp1a2thbiBhZGFueWEgdmFyaWFzaSBzaWduaWZpa2FuIGRhbGFtIHJlc3BvbnMgbWFoYXNpc3dhLCB5YW5nIG1lbmNlcm1pbmthbiBwZXJzZXBzaSB5YW5nIGJlcmFnYW0gdGVyaGFkYXAga3VhbGl0YXMgbGF5YW5hbiwgdGVydXRhbWEgcGFkYSBkaW1lbnNpIEtSUyBPbmxpbmUgZGFuIFBlbGF5YW5hbiBBZG1pbmlzdHJhc2kuDQoNClNlY2FyYSBrZXNlbHVydWhhbiwgbGF5YW5hbiBha2FkZW1payBkaSBrYW1wdXMgdGVsYWggYmVyamFsYW4gY3VrdXAgYmFpayBuYW11biBiZWx1bSBvcHRpbWFsIHNlcGVudWhueWEuIEhhc2lsIGFuYWxpc2lzIGluaSBtZW5hbmRha2FuIHBlcmx1bnlhIHBlbmluZ2thdGFuIHBhZGEgYXNwZWstYXNwZWsgc3RyYXRlZ2lzLCBzZXBlcnRpIGVmZWt0aXZpdGFzIGJpbWJpbmdhbiBha2FkZW1payBkYW4gcGVueWFtcGFpYW4gaW5mb3JtYXNpIGFrYWRlbWlrIHlhbmcga29uc2lzdGVuIGRhbiB0ZXBhdCB3YWt0dS4gS2UgZGVwYW4sIGRhdGEgaGFzaWwgc3VydmVpIGluaSBha2FuIG1lbmphZGkgZGFzYXIgcGVudGluZyB1bnR1ayBtZW55dXN1biByZWtvbWVuZGFzaSBwZW5pbmdrYXRhbiBsYXlhbmFuIGFrYWRlbWlrIHlhbmcgbGViaWggdGVyYXJhaCBkYW4gYmVyYmFzaXMgZGF0YSwgZ3VuYSBtZW5kdWt1bmcgcHJvc2VzIHBlbWJlbGFqYXJhbiBtYWhhc2lzd2Egc2VjYXJhIGxlYmloIGVmZWt0aWYgZGFuIG1lbnllbHVydWguDQoNCg==