
Praktikum 1 :
Ukuran Pemusatan Untuk Data Kelompok
Definisi Ukuran Pemusatan -> Ukuran pemusatan
adalah nilai-nilai yang digunakan untuk mewakili distribusi suatu data,
terutama dalam menunjukkan titik tengah atau pusat data. Ukuran
pemusatan meliputi mean (rata-rata), median (nilai tengah), dan modus
(nilai yang sering muncul).
A. Mean (Rata-Rata)
Definisi Mean -> Mean adalah nilai rata-rata yang
dihitung dengan membagi jumlah seluruh data dengan banyaknya data. Untuk
data kelompok, mean dihitung dengan memperhitungkan nilai tengah setiap
kelas dan frekuensi data.
Langkah-langkah menghitung mean untuk data
kelompok:
1. Tentukan nilai tengah \(m_i\) setiap kelas.
Nilai tengah dapat dihitung dengan rumus: \[ m_i = \frac{b_{\text{bawah}} +
b_{\text{atas}}}{2} \] Dimana:
- Kalikan nilai tengah \(m_i\) dengan
frekuensi kelas \(f_i\) untuk
mendapatkan \(f_i \cdot m_i\).
3.Jumlahkan seluruh hasil perkalian \(f_i
\cdot m_i\) dan bagi dengan total \[
\bar{x} = \frac{\sum f_i \cdot m_i}{\sum f_i} \]
Rumus untuk menghitung rata-rata (mean) adalah sebagai berikut:
\[
\text{Mean} = \frac{\sum_{i=1}^{n} x_i}{n}
\]
Dimana: - \(x_1, x_2, \dots, x_n\)
adalah nilai-nilai yang diberikan. - \(n\) adalah jumlah data.
Contoh Perhitungan
Diberikan data sebagai berikut:
\[
6, 3, 9, 2, 10, 12
\]
Kita dapat menghitung rata-rata (mean) dengan rumus:
\[
\text{Mean} = \frac{6 + 3 + 9 + 2 + 10 + 12}{6}
\]
Menghitung jumlahnya:
\[
6 + 3 + 9 + 2 + 10 + 12 = 42
\]
Sehingga:
\[
\text{Mean} = \frac{42}{6} = 7
\]
Jadi, rata-rata (mean) dari data tersebut adalah
7.
C. Modus (Nilai yang sering muncul)
Definisi Modus -> Modus adalah nilai yang sering
muncul dalam sebuah dataset. Modus digunakan untuk mengetahui nilai yang
paling dominan atau paling sering terjadi dalam suatu kumpulan data.
Modus bisa ditemukan dalam data kuantitatif maupun kategorikal.
Untuk mengidentifikasi modus dalam data, perlu mencari nilai yang
memiliki frekuensi tertinggi. Data numerik, modus bisa dihitung
menggunakan frekuensi kemunculan masing-masing angka, sementara untuk
data kategorikal, modus adalah kategori yang paling sering muncul.
Modus dalam Data Numerik
Modus adalah nilai yang paling sering muncul dalam sebuah dataset.
Misalnya, kita memiliki data pengukuran tinggi badan berikut:
\[
\{ 5, 10, 12, 13, 15, 15, 16, 17, 20, 25, 28, 30, 35 \}
\]
Untuk mencari modus, kita menghitung frekuensi kemunculan
masing-masing angka dalam dataset tersebut. Kemudian, kita mencari nilai
dengan frekuensi kemunculan tertinggi.
Berikut adalah data frekuensi kemunculan masing-masing angka:
\[
\text{Frekuensi} = \{ 5: 1, 10: 1, 12: 1, 13: 1, 15: 2, 16: 1, 17: 1,
20: 1, 25: 1, 28: 1, 30: 1, 35: 1 \}
\]
Dari hasil ini, angka yang paling sering muncul adalah \(15\), karena angka tersebut muncul sebanyak
2 kali. Oleh karena itu, modus dari data ini adalah:
\[
\boxed{15}
\]
Modus dalam Data Kategorikal
Jika kita memiliki data kategorikal, seperti warna favorit, kita juga
bisa menghitung modusnya. Berikut adalah data kategori warna
favorit:
\[
\{\text{Merah}, \text{Biru}, \text{Merah}, \text{Hijau}, \text{Merah},
\text{Biru}\}
\]
Untuk mencari modus kategori, kita menghitung frekuensi kemunculan
masing-masing kategori. Dalam hal ini, kita mendapatkan:
\[
\text{Frekuensi} = \{\text{Merah}: 3, \text{Biru}: 2, \text{Hijau}: 1\}
\]
Dari hasil ini, kategori yang paling sering muncul adalah
Merah, yang muncul sebanyak 3 kali. Oleh karena itu,
modus dari data kategorikal ini adalah:
\[
\boxed{\text{Merah}}
\]
Praktikum 2:
Carilah Contoh sederhana yang menggunakan Ukuran Pemusatan
dalam Studi Kasus sebagai berikut:
A. Bisnis
Kasus -> Seorang manajer toko ingin menganalisis
data penjualan produk selama sebulan untuk mendapatkan gambaran yang
lebih jelas mengenai performa produk tersebut. Manajer ingin mengetahi
produk mana yang memiliki penjualan rata-rata yang tinggi, bagaimana
distribusi penjualan ditengah-tengah (Median), dan apakah ada nilai
penjualan yang terjadi lebih sering (Modus). Data penjualan yang
tercatat dalam sebulan adalah sebagai berikut: \[
\text{Data:}
\;5,\;12,\;8,\;10,\;8,\;10,\;15,\;12,\;20,\;8,\;10,\;25,\;10,\;15,\;18,\;10,\;12
\]
Analisis Ukuran Pemusatan Data:
1. Rata_rata (Mean)
Rata-rata adalah jummlah semua nilai dibagi dengan banyaknya data.
Dalam hal ini, kita ingin mengetahui berapa jumlah rata-rata produk yang
terjual setiap harinya selama sebulan: Formulanya: \[
\text{Rata-rata} = \frac{\text{Jumlah Penjualan}}{\text{Jumlah Hari}}
\]
3. Modus
Modus adalah nilai yang paling sering muncul dalam data. Modus bisa
memberikan informasi mengenai produk yang paling banyak terjual dalam
periode tertentu.
Langkah-langkah Analisis Bisnis
1. Menghitung Rata-rata
Jumlah Penjualan: \(5+12+8+10+15+12+20+8+10+25+10+15+18+10+12=165\)
Jumlah hari: 15
\[
\text{Rata-rata Penjualan}:\frac{165}{15} = 11
\] Jadi, Rata-rata penjualan prouk per hari adalah
11 unit.
3. Menghitung Modus
- Modus adalah nilai yang paling sering muncul. Dari data, kita dapat
melihat bahwa nilai 10 dan 12 muncul
lebih sering dibandingkan yang lainnya.
jadi, Modus penjualan adalah 10
unit dan 12 unit, karena keduanya muncul
3 kali.
B. Kesehatan
Kasus -> Sebuah klinik menganalisis berat badan
pasien yang berkunjung selama seminggu terakhir. Data ini digunakan
untuk memahami distribusi berat badan pasien yang datang ke klinik,
serta untuk merancang program kesehatan yang sesuai. Berikut adalah data
berat badan pasien yang tercatat:
\[
\text{Data Berat Badan (dalam kilogram):} \; 45, \; 50, \; 55, \; 60, \;
60, \; 70, \; 70, \; 70, \; 75, \; 80, \; 85, \; 85, \; 90, \; 95
\]
Analisis Ukuran Pemusatan Data
1. Rata-rata (Mean)
Rata-rata digunkan untuk mengetahui berat badan rata-rata pasien yang
datang ke klinik.
Formulanya: \[
\text{Rata-rata} = \frac{\text{Jumlah Total Berat Badan}}{\text{Jumlah
Pasien}}
\]
3. Modus
Modus adalah berat badan yang paling sering muncul dalam data. Modus
memberikan gambaran nilai berat badan yang umum ditemukan pada pasien
klinik.
Langkah-langkah Analisis Kesehatan
1. Menghitung Rata-rata
Jadi, rata-rata berat badan pasien adalah 67.67g
3. Menghitung Modus
- Modus adalah nilai yang paling sering muncul. Dari data, nilai
70 kg muncul sebanyak 3 kali, lebih banyak dibandingkan
nilai lainnya.
Jadi, Modus berat badan adalah 70
kg
C. Pendidikan
Kasus -> Sebuah sekolah ingin menganalisis nilai
ujian siswa untuk mata pelajaran matematika. Data ini digunakan untuk
mengetahui distribusi nilai siswa dan mengidentifikasi kebutuhan
peningkatan pembelajaran. Berikut adalah nilai ujian siswa yang
diperoleh dari satu kelas: \[
\text{Data Nilai Ujian Siswa:} \; 55, \; 60, \; 60, \; 65, \; 70, \; 75,
\; 75, \; 75, \; 80, \; 85, \; 85, \; 90, \; 90, \; 95, \; 100
\]
Analisis Ukuran Pemusatan
1. Rata-rata (Mean)
Rata-rata digunakan untuk mengetahui nilai rata-rata ujian siswa.
Formulanya: \[
\text{Rata-rata} = \frac{\text{Jumlah Total Nilai}}{\text{jumlah Siswa}}
\]
3. Modus
Modus adalah nilai yang paling sering muncul dalam data. Modus
menunjukan nilai yang paling umum dicapai oleh siswa.
Langkah-langkah Analisis Pendidikan
1. Menghitung Rata-rata
Jadi, Rata-rata(Mean) nilai ujian siswa adalah
77.33
3. Menghitung Modus
- Modus adalah nilai yang paling sering muncul. Dari data, nilai
75 muncul sebanyak 3 kali, lebih banyak dibandingkan
nilai lainnya.
Jadi, Modus nilai ujian siswa adalaj
75
Kesimpulan dari Ukuran Pemusatan Data:
Ukuran pemusatan data, seperti rata-rata (mean), median, dan modus,
merupakan alat statistika yang penting untuk memahami karakteristik
utama dari suatu dataset.
Berikut adalah kesimpulan umum mengenai ukuran pemusatan data:
1. Rata-rata (Mean)
Rata-rata memberikan gambaran umum tentang nilai tengah dari
seluruh data.
Berguna untuk menunjukan kecenderungan sentral jika data tidak
memiliki nilai ekstrem (outliers).
Kelemahan: Sangat sensitif terhadap outliers,
sehingga dapat memberikan informasi yang kurang akurat jika terdapat
nilai ekstrem.
2. Median
Median adalah nilai tengah dari data setelah diurutkan.
Berguna unuk memahami nilai tengah yang lebih stabil dibandingkan
rata-rata, terutama jika data memiliki outliers atau distribusi tidak
simetris.
Kelebihan: Tidak terpengaruh oleh outliers,
sehingga memberikan gambaran yang lebih representatif dalam data yang
tidak simetris.
3. Modus
Modus adalah nilai yang paling sering muncul dalam
dataset.
Berguna untuk mengenali pola atau nilai yang dominan dalam
data.
Kelebihan: Cocok untuk data kategorikal atau
data diskrit, di mana nilai rata-rata atau median kurang
bermakna.
Kesimpulan Umum:
- Ukuran pemusatan data membantu dalam menggambarkan karakteristik
utama dataset, baik itu distribusi nilai, kecenderungan dominan, maupun
nilai tengah.
- Pemilihan ukuran yang tepat bergantung pada karakteristik
data:
- Gunakan **Mean* untuk data simetris tanoa outliers.
- Gunakan Median untuk data yang memiliki outliers
atau distribusi tidak simetris.
- Gunakan Modus untuk menemukan nilai yang paling
sering muncul, terutama pada data diskrit atau kategorial.
- Kombinasi dari ketiga ukuran ini sering memberikan wawasan yang
lebih lengkap dalam analisis data.
Dengan memahami kelebihan dan keterbatasan masing-masing ukuran
pemusatan, analisis data menjadi lebih akurat dan relevan untuk
pengambilan keputusan.
Refrensi
- DSciencelabs. (n.d.) Pengantar Statistika untuk Sains Data.
Bookdown. Retrieved from
Klik disini
- Nisa Amalia Putri I,S. (2024). Ketahui Macam Ukuran Pemusatan
Data.Bookdown. Retrieved from
Klik
disini
- Dr.Anita Rahayu, S.Si., M.Si. Ukuran Pemusatan Data. Binus
Nusantara.Bookdown. Retrieved from
klik
disini
- Dr.ir.Prima Kristalina,MT. (2020). Statistik Deskriptif: Ukuran
Pemusatan Data.Modul 3.Pengantar
statistik.Klik
Disini
LS0tDQp0aXRsZTogIlR1Z2FzIFBlcnRlbXVhbiA5Ig0KDQphdXRob3I6IA0KICAgIC0gIk5hYmlsYSBBbmdnaXRhIFB1dHJpIg0KDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOg0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgDQogIA0KLS0tDQo8aW1nIHNyYz0iaW1nL3Byb2ZpbGUuanBnIiBhbHQ9ImF3b2t3b3drIiBpZD0ibG9nby11dGFtYSIgc3R5bGU9IndpZHRoOjMwMHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyIvPg0KDQogICAgDQoNCg0KDQojIFByYWt0aWt1bSAxIDogDQoNCiMjIFVrdXJhbiBQZW11c2F0YW4gVW50dWsgRGF0YSBLZWxvbXBvaw0KKipEZWZpbmlzaSBVa3VyYW4gUGVtdXNhdGFuKiogLT4gVWt1cmFuIHBlbXVzYXRhbiBhZGFsYWggbmlsYWktbmlsYWkgeWFuZyBkaWd1bmFrYW4gdW50dWsgbWV3YWtpbGkgZGlzdHJpYnVzaSBzdWF0dSBkYXRhLCB0ZXJ1dGFtYSBkYWxhbSBtZW51bmp1a2thbiB0aXRpayB0ZW5nYWggYXRhdSBwdXNhdCBkYXRhLiBVa3VyYW4gcGVtdXNhdGFuIG1lbGlwdXRpIG1lYW4gKHJhdGEtcmF0YSksIG1lZGlhbiAobmlsYWkgdGVuZ2FoKSwgZGFuIG1vZHVzIChuaWxhaSB5YW5nIHNlcmluZyBtdW5jdWwpLg0KDQoNCiMgQS4gTWVhbiAoUmF0YS1SYXRhKQ0KKipEZWZpbmlzaSBNZWFuKiogLT4gTWVhbiBhZGFsYWggbmlsYWkgcmF0YS1yYXRhIHlhbmcgZGloaXR1bmcgZGVuZ2FuIG1lbWJhZ2kganVtbGFoIHNlbHVydWggZGF0YSBkZW5nYW4gYmFueWFrbnlhIGRhdGEuIFVudHVrIGRhdGEga2Vsb21wb2ssIG1lYW4gZGloaXR1bmcgZGVuZ2FuIG1lbXBlcmhpdHVuZ2thbiBuaWxhaSB0ZW5nYWggc2V0aWFwIGtlbGFzIGRhbiBmcmVrdWVuc2kgZGF0YS4NCg0KKipMYW5na2FoLWxhbmdrYWggbWVuZ2hpdHVuZyBtZWFuIHVudHVrIGRhdGEga2Vsb21wb2s6KioNCiAgDQogICoqMS4gVGVudHVrYW4gbmlsYWkgdGVuZ2FoICRtX2kkIHNldGlhcCBrZWxhcy4qKg0KICANCiBOaWxhaSB0ZW5nYWggZGFwYXQgZGloaXR1bmcgZGVuZ2FuIHJ1bXVzOg0KJCQgbV9pID0gXGZyYWN7Yl97XHRleHR7YmF3YWh9fSArIGJfe1x0ZXh0e2F0YXN9fX17Mn0gJCQNCiBEaW1hbmE6IA0KIA0KLSAkYl97XHRleHR7YmF3YWh9fSQgPSBiYXRhcyBiYXdhaCBrZWxhcw0KDQotICRiX3tcdGV4dHthdGFzfX0kID0gYmF0YXMgYXRhcyBrZWxhcw0KDQoyLiBLYWxpa2FuIG5pbGFpIHRlbmdhaCAkbV9pJCBkZW5nYW4gZnJla3VlbnNpIGtlbGFzICRmX2kkIHVudHVrIG1lbmRhcGF0a2FuICRmX2kgXGNkb3QgbV9pJC4NCg0KMy5KdW1sYWhrYW4gc2VsdXJ1aCBoYXNpbCBwZXJrYWxpYW4gJGZfaSBcY2RvdCBtX2kkIGRhbiBiYWdpIGRlbmdhbiB0b3RhbCAkJCBcYmFye3h9ID0gXGZyYWN7XHN1bSBmX2kgXGNkb3QgbV9pfXtcc3VtIGZfaX0gJCQNCg0KUnVtdXMgdW50dWsgbWVuZ2hpdHVuZyByYXRhLXJhdGEgKG1lYW4pIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNClxbDQpcdGV4dHtNZWFufSA9IFxmcmFje1xzdW1fe2k9MX1ee259IHhfaX17bn0NClxdDQoNCkRpbWFuYToNCi0gXCh4XzEsIHhfMiwgXGRvdHMsIHhfblwpIGFkYWxhaCBuaWxhaS1uaWxhaSB5YW5nIGRpYmVyaWthbi4NCi0gXChuXCkgYWRhbGFoIGp1bWxhaCBkYXRhLg0KDQpDb250b2ggUGVyaGl0dW5nYW4NCg0KRGliZXJpa2FuIGRhdGEgc2ViYWdhaSBiZXJpa3V0Og0KDQpcWw0KNiwgMywgOSwgMiwgMTAsIDEyDQpcXQ0KDQpLaXRhIGRhcGF0IG1lbmdoaXR1bmcgcmF0YS1yYXRhIChtZWFuKSBkZW5nYW4gcnVtdXM6DQoNClxbDQpcdGV4dHtNZWFufSA9IFxmcmFjezYgKyAzICsgOSArIDIgKyAxMCArIDEyfXs2fQ0KXF0NCg0KTWVuZ2hpdHVuZyBqdW1sYWhueWE6DQoNClxbDQo2ICsgMyArIDkgKyAyICsgMTAgKyAxMiA9IDQyDQpcXQ0KDQpTZWhpbmdnYToNCg0KXFsNClx0ZXh0e01lYW59ID0gXGZyYWN7NDJ9ezZ9ID0gNw0KXF0NCg0KSmFkaSwgcmF0YS1yYXRhIChtZWFuKSBkYXJpIGRhdGEgdGVyc2VidXQgYWRhbGFoICoqNyoqLg0KDQoNCg0KIyMgMS4gTWVhbiBEYWxhbSBCb3hwbG90DQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkNCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGE6IGR1YSBza2VuYXJpbywgc2F0dSBkZW5nYW4gb3V0bGllcnMsIHNhdHUgdGFucGEgb3V0bGllcnMNCmRhdGFfZGVuZ2FuX291dGxpZXJzIDwtIGMoNywgMTAsIDEyLCAxNSwgMTgsIDIwLCAyNSwgMzAsIDM1LCA0MCwgNDUsIDUwLCA1NSwgMTAwKSAgIyBEZW5nYW4gb3V0bGllcnMNCmRhdGFfdGFucGFfb3V0bGllcnMgPC0gYygxMCwgMTIsIDE1LCAxOCwgMjAsIDI1LCAzMCwgMzUsIDQwLCA0NSwgNTAsIDU1LCA2MCwgNjUpICAgIyBUYW5wYSBvdXRsaWVycw0KDQojIE1lbmdoaXR1bmcgcmF0YS1yYXRhIHVudHVrIG1hc2luZy1tYXNpbmcgZGF0YXNldA0KbWVhbl9kZW5nYW5fb3V0bGllcnMgPC0gbWVhbihkYXRhX2Rlbmdhbl9vdXRsaWVycykNCm1lYW5fdGFucGFfb3V0bGllcnMgPC0gbWVhbihkYXRhX3RhbnBhX291dGxpZXJzKQ0KDQojIE1lbmdnYWJ1bmdrYW4gZGF0YSBrZSBkYWxhbSBzYXR1IGRhdGEgZnJhbWUgdW50dWsgdmlzdWFsaXNhc2kNCmRhdGFfdGVyZ2FidW5nIDwtIGRhdGEuZnJhbWUoDQogIE5pbGFpID0gYyhkYXRhX2Rlbmdhbl9vdXRsaWVycywgZGF0YV90YW5wYV9vdXRsaWVycyksDQogIEtlbG9tcG9rID0gcmVwKGMoIkRlbmdhbiBPdXRsaWVycyIsICJUYW5wYSBPdXRsaWVycyIpLCANCiAgICAgICAgICAgICAgICAgdGltZXMgPSBjKGxlbmd0aChkYXRhX2Rlbmdhbl9vdXRsaWVycyksIGxlbmd0aChkYXRhX3RhbnBhX291dGxpZXJzKSkpDQopDQoNCiMgTWVtYnVhdCBib3hwbG90IGludGVyYWt0aWYgbWVuZ2d1bmFrYW4gUGxvdGx5DQpwbG90X2JveHBsb3QgPC0gcGxvdF9seSgNCiAgZGF0YV90ZXJnYWJ1bmcsIA0KICB5ID0gfk5pbGFpLCANCiAgY29sb3IgPSB+S2Vsb21wb2ssIA0KICB0eXBlID0gImJveCIsIA0KICBib3hwb2ludHMgPSAiYWxsIiwgICMgTWVuYW1waWxrYW4gc2VtdWEgdGl0aWssIHRlcm1hc3VrIG91dGxpZXJzDQogIGppdHRlciA9IDAuMiwgICAgICAgIyBNZW1iZXJpa2FuIGVmZWsgaml0dGVyIHBhZGEgdGl0aWsgZGF0YQ0KICBwb2ludHBvcyA9IC0xLjIgICAgICMgTWVueWVzdWFpa2FuIHBvc2lzaSB0aXRpayB0ZXJoYWRhcCBib3hwbG90DQopICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSAiUGVuZ2FydWggT3V0bGllcnMgdGVyaGFkYXAgUmF0YS1yYXRhIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiS2Vsb21wb2siKSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtZWFuX2Rlbmdhbl9vdXRsaWVycywNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJSYXRhLXJhdGE6Iiwgcm91bmQobWVhbl9kZW5nYW5fb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3djb2xvciA9ICJyZWQiLA0KICAgICAgICBhcnJvd2hlYWQgPSAyDQogICAgICApLA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9ICJUYW5wYSBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtZWFuX3RhbnBhX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIlJhdGEtcmF0YToiLCByb3VuZChtZWFuX3RhbnBhX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93Y29sb3IgPSAiYmx1ZSIsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICkNCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpwbG90X2JveHBsb3QNCg0KYGBgDQoNCiMjIDIuIE1lYW4gRGFsYW0gSGlzdG9ncmFtDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkNCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGE6IGR1YSBza2VuYXJpbywgc2F0dSBkZW5nYW4gb3V0bGllcnMsIHNhdHUgdGFucGEgb3V0bGllcnMNCmRhdGFfZGVuZ2FuX291dGxpZXJzIDwtIGMoNywgMTAsIDEyLCAxNSwgMTgsIDIwLCAyNSwgMzAsIDM1LCA0MCwgNDUsIDUwLCA1NSwgMTAwKSAgIyBEZW5nYW4gb3V0bGllcnMNCmRhdGFfdGFucGFfb3V0bGllcnMgPC0gYygxMCwgMTIsIDE1LCAxOCwgMjAsIDI1LCAzMCwgMzUsIDQwLCA0NSwgNTAsIDU1LCA2MCwgNjUpICAgIyBUYW5wYSBvdXRsaWVycw0KDQojIE1lbWJ1YXQgZGVuc2l0eSBwbG90IHVudHVrIG1hc2luZy1tYXNpbmcgZGF0YXNldA0KZGVuc2l0eV9kZW5nYW5fb3V0bGllcnMgPC0gZGVuc2l0eShkYXRhX2Rlbmdhbl9vdXRsaWVycykNCmRlbnNpdHlfdGFucGFfb3V0bGllcnMgPC0gZGVuc2l0eShkYXRhX3RhbnBhX291dGxpZXJzKQ0KDQojIE1lbmdoaXR1bmcgcmF0YS1yYXRhDQptZWFuX2Rlbmdhbl9vdXRsaWVycyA8LSBtZWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KbWVhbl90YW5wYV9vdXRsaWVycyA8LSBtZWFuKGRhdGFfdGFucGFfb3V0bGllcnMpDQoNCiMgTWVtYnVhdCBwbG90IG1lbmdndW5ha2FuIFBsb3RseQ0KcGxvdCA8LSBwbG90X2x5KCkgJT4lDQogICMgRGVuc2l0eSBwbG90IHVudHVrIGRhdGEgZGVuZ2FuIG91dGxpZXJzDQogIGFkZF9saW5lcygNCiAgICB4ID0gfmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHgsDQogICAgeSA9IH5kZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5LA0KICAgIG5hbWUgPSAiRGF0YSBkZW5nYW4gT3V0bGllcnMiLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMjU1LCA5OSwgNzEsIDAuOCknLCB3aWR0aCA9IDIpICAjIFdhcm5hIG1lcmFoDQogICkgJT4lDQogICMgRGVuc2l0eSBwbG90IHVudHVrIGRhdGEgdGFucGEgb3V0bGllcnMNCiAgYWRkX2xpbmVzKA0KICAgIHggPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR4LA0KICAgIHkgPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5LA0KICAgIG5hbWUgPSAiRGF0YSB0YW5wYSBPdXRsaWVycyIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSg0NiwgMTM5LCA4NywgMC44KScsIHdpZHRoID0gMikgICMgV2FybmEgaGlqYXUNCiAgKSAlPiUNCiAgIyBHYXJpcyByYXRhLXJhdGEgdW50dWsgZGF0YSBkZW5nYW4gb3V0bGllcnMNCiAgYWRkX3NlZ21lbnRzKA0KICAgIHggPSBtZWFuX2Rlbmdhbl9vdXRsaWVycywgeGVuZCA9IG1lYW5fZGVuZ2FuX291dGxpZXJzLA0KICAgIHkgPSAwLCB5ZW5kID0gbWF4KGRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHkpLA0KICAgIG5hbWUgPSAiUmF0YS1yYXRhIChEZW5nYW4gT3V0bGllcnMpIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDI1NSwgOTksIDcxLCAwLjYpJywgZGFzaCA9ICdkYXNoJykNCiAgKSAlPiUNCiAgIyBHYXJpcyByYXRhLXJhdGEgdW50dWsgZGF0YSB0YW5wYSBvdXRsaWVycw0KICBhZGRfc2VnbWVudHMoDQogICAgeCA9IG1lYW5fdGFucGFfb3V0bGllcnMsIHhlbmQgPSBtZWFuX3RhbnBhX291dGxpZXJzLA0KICAgIHkgPSAwLCB5ZW5kID0gbWF4KGRlbnNpdHlfdGFucGFfb3V0bGllcnMkeSksDQogICAgbmFtZSA9ICJSYXRhLXJhdGEgKFRhbnBhIE91dGxpZXJzKSIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSg0NiwgMTM5LCA4NywgMC42KScsIGRhc2ggPSAnZGFzaCcpDQogICkgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJQZW5nYXJ1aCBPdXRsaWVycyB0ZXJoYWRhcCBSYXRhLXJhdGEgcGFkYSBEZW5zaXR5IFBsb3QiLA0KICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJOaWxhaSIpLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJLZXBhZGF0YW4iKSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gbWVhbl9kZW5nYW5fb3V0bGllcnMsDQogICAgICAgIHkgPSBtYXgoZGVuc2l0eV9kZW5nYW5fb3V0bGllcnMkeSkgKiAwLjgsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiUmF0YS1yYXRhOiIsIHJvdW5kKG1lYW5fZGVuZ2FuX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDMsDQogICAgICAgIGF4ID0gMCwNCiAgICAgICAgYXkgPSAtMzAsDQogICAgICAgIGZvbnQgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMjU1LCA5OSwgNzEsIDAuOCknLCBzaXplID0gMTIpDQogICAgICApLA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9IG1lYW5fdGFucGFfb3V0bGllcnMsDQogICAgICAgIHkgPSBtYXgoZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5KSAqIDAuOCwNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJSYXRhLXJhdGE6Iiwgcm91bmQobWVhbl90YW5wYV9vdXRsaWVycywgMikpLA0KICAgICAgICBzaG93YXJyb3cgPSBUUlVFLA0KICAgICAgICBhcnJvd2hlYWQgPSAzLA0KICAgICAgICBheCA9IDAsDQogICAgICAgIGF5ID0gLTQwLA0KICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICdyZ2JhKDQ2LCAxMzksIDg3LCAwLjgpJywgc2l6ZSA9IDEyKQ0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QNCnBsb3QNCg0KYGBgDQotLS0NCg0KIyBCLiBNZWRpYW4gKE5pbGFpIFRlbmdhaCkNCg0KKipEZWZpbmlzaSBNZWRpYW4qKiAtPg0KTWVkaWFuIGFkYWxhaCBuaWxhaSB5YW5nIG1lbWJhZ2kgZGF0YSBtZW5qYWRpIGR1YSBiYWdpYW4geWFuZyBzYW1hIGJlc2FyLiBVbnR1ayBkYXRhIGtlbG9tcG9rLCBtZWRpYW4gZGloaXR1bmcgZGVuZ2FuIGZvcm11a2E6DQokJA0KXHRleHR7TWVkaWFufSA9IEwgKyBcbGVmdCggXGZyYWN7XGZyYWN7bn17Mn0gLSBGfXtmX219IFxyaWdodCkgXGNkb3QgYw0KJCQNCkRpbWFuYToNCg0KLSRMJCA9IGJhdGFzIGJhd2FoIGtlbGFzIG1lZGlhbg0KDQotJG4kID0ganVtbGFoIHRvdGFsIGZyZWt1ZW5zaQ0KDQotJEYkID0gZnJla3VlbnNpIGt1bXVsYXRpZiBzZWJlbHVtIGtlbGFzIG1lZGlhbg0KDQotJGZfbSQgPSBmcmVrdWVuc2kga2VsYXMgbWVkaWFuDQoNCi0kYyQgPSBwYW5qYW5nIGtlbGFzDQoNCiMjIENvbnRvaCBEYXRhIEdhbmppbA0KDQpLdW1wdWxhbiBkYXRhIHlhbmcgZGlndW5ha2FuOiAgDQpcWw0KNSwgMTAsIDEyLCAxMywgMTUNClxdDQoNCioqTGFuZ2thaC1sYW5na2FoIFBlcmhpdHVuZ2FuIE1lZGlhbiBEYXRhIEdhbmppbDoqKg0KDQoxLiBVcnV0a2FuIGRhdGEgKGppa2EgYmVsdW0gdGVydXJ1dCkuICANCjIuIEp1bWxhaCBkYXRhIChcKG5cKSkgPSA1IChnYW5qaWwpLiAgDQozLiBIaXR1bmcgcG9zaXNpIG1lZGlhbiBtZW5nZ3VuYWthbiBydW11czogIA0KICAgXFsNCiAgIFx0ZXh0e1Bvc2lzaSBNZWRpYW59ID0gXGZyYWN7biArIDF9ezJ9ID0gXGZyYWN7NSArIDF9ezJ9ID0gMw0KICAgXF0gIA0KNC4gTmlsYWkgbWVkaWFuIGFkYWxhaCBlbGVtZW4ga2UtMyBkYXJpIGRhdGEsIHlhaXR1ICoqMTIqKi4NCg0KDQoNCioqTGFuZ2thaC1sYW5na2FoIFBlcmhpdHVuZ2FuIE1lZGlhbiBEYXRhIEdlbmFwOioqDQoNCiMjIENvbnRvaCBEYXRhIEdlbmFwDQoNCkt1bXB1bGFuIGRhdGEgeWFuZyBkaWd1bmFrYW46ICANClxbDQo1LCAxMCwgMTIsIDEzLCAxNSwgMTgNClxdDQoNCiMjIyBMYW5na2FoLWxhbmdrYWg6DQoxLiBVcnV0a2FuIGRhdGEgKGppa2EgYmVsdW0gdGVydXJ1dCk6ICoqNSwgMTAsIDEyLCAxMywgMTUsIDE4KiogIA0KMi4gSnVtbGFoIGRhdGEgKFwoblwpKSA9IDYgKGdlbmFwKS4gIA0KMy4gUG9zaXNpIGR1YSBuaWxhaSB0ZW5nYWg6ICANCiAgIFxbDQogICBcdGV4dHtQb3Npc2kgVGVuZ2FoIDF9ID0gXGZyYWN7bn17Mn0gPSBcZnJhY3s2fXsyfSA9IDMNCiAgIFxdDQogICBcWw0KICAgXHRleHR7UG9zaXNpIFRlbmdhaCAyfSA9IFx0ZXh0e1Bvc2lzaSBUZW5nYWggMX0gKyAxID0gNA0KICAgXF0NCjQuIE5pbGFpIHRlbmdhaCBhZGFsYWggZWxlbWVuIGtlLTMgZGFuIGtlLTQsIHlhaXR1ICoqMTIqKiBkYW4gKioxMyoqLiAgDQo1LiBIaXR1bmcgbWVkaWFuIGRlbmdhbiBydW11czogIA0KICAgXFsNCiAgIFx0ZXh0e01lZGlhbn0gPSBcZnJhY3sxMiArIDEzfXsyfSA9IDEyLjUNCiAgIFxdDQoNCiMjICAxLiBNZWRpYW4gRGFsYW0gQm94cGxvdA0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhOiBkdWEgc2tlbmFyaW8sIHNhdHUgZGVuZ2FuIG91dGxpZXJzLCBzYXR1IHRhbnBhIG91dGxpZXJzDQpkYXRhX2Rlbmdhbl9vdXRsaWVycyA8LSBjKDcsIDEwLCAxMiwgMTUsIDE4LCAyMCwgMjUsIDMwLCAzNSwgNDAsIDQ1LCA1MCwgNTUsIDEwMCkgICMgRGVuZ2FuIG91dGxpZXJzDQpkYXRhX3RhbnBhX291dGxpZXJzIDwtIGMoMTAsIDEyLCAxNSwgMTgsIDIwLCAyNSwgMzAsIDM1LCA0MCwgNDUsIDUwLCA1NSwgNjAsIDY1KSAgICMgVGFucGEgb3V0bGllcnMNCg0KIyBNZW5naGl0dW5nIG1lZGlhbiB1bnR1ayBtYXNpbmctbWFzaW5nIGRhdGFzZXQNCm1lZGlhbl9kZW5nYW5fb3V0bGllcnMgPC0gbWVkaWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KbWVkaWFuX3RhbnBhX291dGxpZXJzIDwtIG1lZGlhbihkYXRhX3RhbnBhX291dGxpZXJzKQ0KDQojIE1lbmdnYWJ1bmdrYW4gZGF0YSBrZSBkYWxhbSBzYXR1IGRhdGEgZnJhbWUgdW50dWsgdmlzdWFsaXNhc2kNCmRhdGFfdGVyZ2FidW5nIDwtIGRhdGEuZnJhbWUoDQogIE5pbGFpID0gYyhkYXRhX2Rlbmdhbl9vdXRsaWVycywgZGF0YV90YW5wYV9vdXRsaWVycyksDQogIEtlbG9tcG9rID0gcmVwKGMoIkRlbmdhbiBPdXRsaWVycyIsICJUYW5wYSBPdXRsaWVycyIpLCANCiAgICAgICAgICAgICAgICAgdGltZXMgPSBjKGxlbmd0aChkYXRhX2Rlbmdhbl9vdXRsaWVycyksIGxlbmd0aChkYXRhX3RhbnBhX291dGxpZXJzKSkpDQopDQoNCiMgTWVtYnVhdCBib3hwbG90IGludGVyYWt0aWYgbWVuZ2d1bmFrYW4gUGxvdGx5DQpwbG90X2JveHBsb3QgPC0gcGxvdF9seSgNCiAgZGF0YV90ZXJnYWJ1bmcsIA0KICB5ID0gfk5pbGFpLCANCiAgY29sb3IgPSB+S2Vsb21wb2ssIA0KICB0eXBlID0gImJveCIsIA0KICBib3hwb2ludHMgPSAiYWxsIiwgICMgTWVuYW1waWxrYW4gc2VtdWEgdGl0aWssIHRlcm1hc3VrIG91dGxpZXJzDQogIGppdHRlciA9IDAuMiwgICAgICAgIyBNZW1iZXJpa2FuIGVmZWsgaml0dGVyIHBhZGEgdGl0aWsgZGF0YQ0KICBwb2ludHBvcyA9IC0xLjIgICAgICMgTWVueWVzdWFpa2FuIHBvc2lzaSB0aXRpayB0ZXJoYWRhcCBib3hwbG90DQopICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSAiUGVuZ2FydWggT3V0bGllcnMgdGVyaGFkYXAgTWVkaWFuIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiS2Vsb21wb2siKSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtZWRpYW5fZGVuZ2FuX291dGxpZXJzLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lZGlhbjoiLCBtZWRpYW5fZGVuZ2FuX291dGxpZXJzKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3djb2xvciA9ICJncmVlbiIsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICksDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIlRhbnBhIE91dGxpZXJzIiwNCiAgICAgICAgeSA9IG1lZGlhbl90YW5wYV9vdXRsaWVycywNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNZWRpYW46IiwgbWVkaWFuX3RhbnBhX291dGxpZXJzKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3djb2xvciA9ICJwdXJwbGUiLA0KICAgICAgICBhcnJvd2hlYWQgPSAyDQogICAgICApDQogICAgKQ0KICApDQoNCiMgTWVuYW1waWxrYW4gcGxvdA0KcGxvdF9ib3hwbG90DQpgYGANCg0KIyMgMi4gTWVkaWFuIERhbGFtIEhpc3RvZ3JhbQ0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhOiBkdWEgc2tlbmFyaW8sIHNhdHUgZGVuZ2FuIG91dGxpZXJzLCBzYXR1IHRhbnBhIG91dGxpZXJzDQpkYXRhX2Rlbmdhbl9vdXRsaWVycyA8LSBjKDcsIDEwLCAxMiwgMTUsIDE4LCAyMCwgMjUsIDMwLCAzNSwgNDAsIDQ1LCA1MCwgNTUsIDEwMCkgICMgRGVuZ2FuIG91dGxpZXJzDQpkYXRhX3RhbnBhX291dGxpZXJzIDwtIGMoMTAsIDEyLCAxNSwgMTgsIDIwLCAyNSwgMzAsIDM1LCA0MCwgNDUsIDUwLCA1NSwgNjAsIDY1KSAgICMgVGFucGEgb3V0bGllcnMNCg0KIyBNZW1idWF0IGRlbnNpdHkgcGxvdCB1bnR1ayBtYXNpbmctbWFzaW5nIGRhdGFzZXQNCmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzIDwtIGRlbnNpdHkoZGF0YV9kZW5nYW5fb3V0bGllcnMpDQpkZW5zaXR5X3RhbnBhX291dGxpZXJzIDwtIGRlbnNpdHkoZGF0YV90YW5wYV9vdXRsaWVycykNCg0KIyBNZW5naGl0dW5nIG1lZGlhbg0KbWVkaWFuX2Rlbmdhbl9vdXRsaWVycyA8LSBtZWRpYW4oZGF0YV9kZW5nYW5fb3V0bGllcnMpDQptZWRpYW5fdGFucGFfb3V0bGllcnMgPC0gbWVkaWFuKGRhdGFfdGFucGFfb3V0bGllcnMpDQoNCiMgTWVtYnVhdCBwbG90IG1lbmdndW5ha2FuIFBsb3RseQ0KcGxvdCA8LSBwbG90X2x5KCkgJT4lDQogICMgRGVuc2l0eSBwbG90IHVudHVrIGRhdGEgZGVuZ2FuIG91dGxpZXJzDQogIGFkZF9saW5lcygNCiAgICB4ID0gfmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHgsDQogICAgeSA9IH5kZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5LA0KICAgIG5hbWUgPSAiRGF0YSBkZW5nYW4gT3V0bGllcnMiLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMjU1LCA5OSwgNzEsIDAuOCknLCB3aWR0aCA9IDIpICAjIFdhcm5hIG1lcmFoDQogICkgJT4lDQogICMgRGVuc2l0eSBwbG90IHVudHVrIGRhdGEgdGFucGEgb3V0bGllcnMNCiAgYWRkX2xpbmVzKA0KICAgIHggPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR4LA0KICAgIHkgPSB+ZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5LA0KICAgIG5hbWUgPSAiRGF0YSB0YW5wYSBPdXRsaWVycyIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSg0NiwgMTM5LCA4NywgMC44KScsIHdpZHRoID0gMikgICMgV2FybmEgaGlqYXUNCiAgKSAlPiUNCiAgIyBHYXJpcyBtZWRpYW4gdW50dWsgZGF0YSBkZW5nYW4gb3V0bGllcnMNCiAgYWRkX3NlZ21lbnRzKA0KICAgIHggPSBtZWRpYW5fZGVuZ2FuX291dGxpZXJzLCB4ZW5kID0gbWVkaWFuX2Rlbmdhbl9vdXRsaWVycywNCiAgICB5ID0gMCwgeWVuZCA9IG1heChkZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5KSwNCiAgICBuYW1lID0gIk1lZGlhbiAoRGVuZ2FuIE91dGxpZXJzKSIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSgyNTUsIDk5LCA3MSwgMC42KScsIGRhc2ggPSAnZGFzaCcpDQogICkgJT4lDQogICMgR2FyaXMgbWVkaWFuIHVudHVrIGRhdGEgdGFucGEgb3V0bGllcnMNCiAgYWRkX3NlZ21lbnRzKA0KICAgIHggPSBtZWRpYW5fdGFucGFfb3V0bGllcnMsIHhlbmQgPSBtZWRpYW5fdGFucGFfb3V0bGllcnMsDQogICAgeSA9IDAsIHllbmQgPSBtYXgoZGVuc2l0eV90YW5wYV9vdXRsaWVycyR5KSwNCiAgICBuYW1lID0gIk1lZGlhbiAoVGFucGEgT3V0bGllcnMpIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDQ2LCAxMzksIDg3LCAwLjYpJywgZGFzaCA9ICdkYXNoJykNCiAgKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIlBlbmdhcnVoIE91dGxpZXJzIHRlcmhhZGFwIE1lZGlhbiBwYWRhIERlbnNpdHkgUGxvdCIsDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIk5pbGFpIiksDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIktlcGFkYXRhbiIpLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSBtZWRpYW5fZGVuZ2FuX291dGxpZXJzLA0KICAgICAgICB5ID0gbWF4KGRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHkpICogMC44LA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lZGlhbjoiLCByb3VuZChtZWRpYW5fZGVuZ2FuX291dGxpZXJzLCAyKSksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93aGVhZCA9IDMsDQogICAgICAgIGF4ID0gMCwNCiAgICAgICAgYXkgPSAtMzAsDQogICAgICAgIGZvbnQgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMjU1LCA5OSwgNzEsIDAuOCknLCBzaXplID0gMTIpDQogICAgICApLA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9IG1lZGlhbl90YW5wYV9vdXRsaWVycywNCiAgICAgICAgeSA9IG1heChkZW5zaXR5X3RhbnBhX291dGxpZXJzJHkpICogMC44LA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lZGlhbjoiLCByb3VuZChtZWRpYW5fdGFucGFfb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMywNCiAgICAgICAgYXggPSAwLA0KICAgICAgICBheSA9IC00MCwNCiAgICAgICAgZm9udCA9IGxpc3QoY29sb3IgPSAncmdiYSg0NiwgMTM5LCA4NywgMC44KScsIHNpemUgPSAxMikNCiAgICAgICkNCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpwbG90DQpgYGANCi0tLQ0KIyBDLiBNb2R1cyAoTmlsYWkgeWFuZyBzZXJpbmcgbXVuY3VsKQ0KDQoqKkRlZmluaXNpIE1vZHVzKiogLT4NCk1vZHVzIGFkYWxhaCBuaWxhaSB5YW5nIHNlcmluZyBtdW5jdWwgZGFsYW0gc2VidWFoIGRhdGFzZXQuIE1vZHVzIGRpZ3VuYWthbiB1bnR1ayBtZW5nZXRhaHVpIG5pbGFpIHlhbmcgcGFsaW5nIGRvbWluYW4gYXRhdSBwYWxpbmcgc2VyaW5nIHRlcmphZGkgZGFsYW0gc3VhdHUga3VtcHVsYW4gZGF0YS4gTW9kdXMgYmlzYSBkaXRlbXVrYW4gZGFsYW0gZGF0YSBrdWFudGl0YXRpZiBtYXVwdW4ga2F0ZWdvcmlrYWwuDQoNClVudHVrIG1lbmdpZGVudGlmaWthc2kgbW9kdXMgZGFsYW0gZGF0YSwgcGVybHUgbWVuY2FyaSBuaWxhaSB5YW5nIG1lbWlsaWtpIGZyZWt1ZW5zaSB0ZXJ0aW5nZ2kuIERhdGEgbnVtZXJpaywgbW9kdXMgYmlzYSBkaWhpdHVuZyBtZW5nZ3VuYWthbiBmcmVrdWVuc2kga2VtdW5jdWxhbiBtYXNpbmctbWFzaW5nIGFuZ2thLCBzZW1lbnRhcmEgdW50dWsgZGF0YSBrYXRlZ29yaWthbCwgbW9kdXMgYWRhbGFoIGthdGVnb3JpIHlhbmcgcGFsaW5nIHNlcmluZyBtdW5jdWwuDQoNCiMjIE1vZHVzIGRhbGFtIERhdGEgTnVtZXJpaw0KDQpNb2R1cyBhZGFsYWggbmlsYWkgeWFuZyBwYWxpbmcgc2VyaW5nIG11bmN1bCBkYWxhbSBzZWJ1YWggZGF0YXNldC4gTWlzYWxueWEsIGtpdGEgbWVtaWxpa2kgZGF0YSBwZW5ndWt1cmFuIHRpbmdnaSBiYWRhbiBiZXJpa3V0Og0KDQpcWw0KXHsgNSwgMTAsIDEyLCAxMywgMTUsIDE1LCAxNiwgMTcsIDIwLCAyNSwgMjgsIDMwLCAzNSBcfQ0KXF0NCg0KVW50dWsgbWVuY2FyaSBtb2R1cywga2l0YSBtZW5naGl0dW5nIGZyZWt1ZW5zaSBrZW11bmN1bGFuIG1hc2luZy1tYXNpbmcgYW5na2EgZGFsYW0gZGF0YXNldCB0ZXJzZWJ1dC4gS2VtdWRpYW4sIGtpdGEgbWVuY2FyaSBuaWxhaSBkZW5nYW4gZnJla3VlbnNpIGtlbXVuY3VsYW4gdGVydGluZ2dpLg0KDQpCZXJpa3V0IGFkYWxhaCBkYXRhIGZyZWt1ZW5zaSBrZW11bmN1bGFuIG1hc2luZy1tYXNpbmcgYW5na2E6DQoNClxbDQpcdGV4dHtGcmVrdWVuc2l9ID0gXHsgNTogMSwgMTA6IDEsIDEyOiAxLCAxMzogMSwgMTU6IDIsIDE2OiAxLCAxNzogMSwgMjA6IDEsIDI1OiAxLCAyODogMSwgMzA6IDEsIDM1OiAxIFx9DQpcXQ0KDQpEYXJpIGhhc2lsIGluaSwgYW5na2EgeWFuZyBwYWxpbmcgc2VyaW5nIG11bmN1bCBhZGFsYWggXCggMTUgXCksIGthcmVuYSBhbmdrYSB0ZXJzZWJ1dCBtdW5jdWwgc2ViYW55YWsgMiBrYWxpLiBPbGVoIGthcmVuYSBpdHUsIG1vZHVzIGRhcmkgZGF0YSBpbmkgYWRhbGFoOg0KDQpcWw0KXGJveGVkezE1fQ0KXF0NCg0KIyMgTW9kdXMgZGFsYW0gRGF0YSBLYXRlZ29yaWthbA0KDQpKaWthIGtpdGEgbWVtaWxpa2kgZGF0YSBrYXRlZ29yaWthbCwgc2VwZXJ0aSB3YXJuYSBmYXZvcml0LCBraXRhIGp1Z2EgYmlzYSBtZW5naGl0dW5nIG1vZHVzbnlhLiBCZXJpa3V0IGFkYWxhaCBkYXRhIGthdGVnb3JpIHdhcm5hIGZhdm9yaXQ6DQoNClxbDQpce1x0ZXh0e01lcmFofSwgXHRleHR7QmlydX0sIFx0ZXh0e01lcmFofSwgXHRleHR7SGlqYXV9LCBcdGV4dHtNZXJhaH0sIFx0ZXh0e0JpcnV9XH0NClxdDQoNClVudHVrIG1lbmNhcmkgbW9kdXMga2F0ZWdvcmksIGtpdGEgbWVuZ2hpdHVuZyBmcmVrdWVuc2kga2VtdW5jdWxhbiBtYXNpbmctbWFzaW5nIGthdGVnb3JpLiBEYWxhbSBoYWwgaW5pLCBraXRhIG1lbmRhcGF0a2FuOg0KDQpcWw0KXHRleHR7RnJla3VlbnNpfSA9IFx7XHRleHR7TWVyYWh9OiAzLCBcdGV4dHtCaXJ1fTogMiwgXHRleHR7SGlqYXV9OiAxXH0NClxdDQoNCkRhcmkgaGFzaWwgaW5pLCBrYXRlZ29yaSB5YW5nIHBhbGluZyBzZXJpbmcgbXVuY3VsIGFkYWxhaCAqKk1lcmFoKiosIHlhbmcgbXVuY3VsIHNlYmFueWFrIDMga2FsaS4gT2xlaCBrYXJlbmEgaXR1LCBtb2R1cyBkYXJpIGRhdGEga2F0ZWdvcmlrYWwgaW5pIGFkYWxhaDoNCg0KXFsNClxib3hlZHtcdGV4dHtNZXJhaH19DQpcXQ0KDQojIyAxLiBNb2R1cyBEYWxhbSBCb3hwbG90DQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkNCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGEgYmFydTogZHVhIHNrZW5hcmlvLCBzYXR1IGRlbmdhbiBvdXRsaWVycywgc2F0dSB0YW5wYSBvdXRsaWVycw0KZGF0YV9kZW5nYW5fb3V0bGllcnMgPC0gYyg1LCAxMCwgMTIsIDEzLCAxNSwgMTUsIDE2LCAxNywgMjAsIDI1LCAyOCwgMzAsIDM1KSAgIyBEYXRhIGJhcnUgdGFucGEgb3V0bGllcnMNCmRhdGFfdGFucGFfb3V0bGllcnMgPC0gYyg1LCAxMCwgMTIsIDEzLCAxNSwgMTUsIDE2LCAxNywgMjAsIDI1LCAyOCwgMzAsIDM1KSAgICMgRGF0YSB5YW5nIHNhbWEgdGFucGEgb3V0bGllcnMNCg0KIyBNZW5naGl0dW5nIG1vZHVzIHVudHVrIG1hc2luZy1tYXNpbmcgZGF0YXNldA0KbW9kdXNfZGVuZ2FuX291dGxpZXJzIDwtIGFzLm51bWVyaWMobmFtZXMoc29ydCh0YWJsZShkYXRhX2Rlbmdhbl9vdXRsaWVycyksIGRlY3JlYXNpbmcgPSBUUlVFKVsxXSkpDQptb2R1c190YW5wYV9vdXRsaWVycyA8LSBhcy5udW1lcmljKG5hbWVzKHNvcnQodGFibGUoZGF0YV90YW5wYV9vdXRsaWVycyksIGRlY3JlYXNpbmcgPSBUUlVFKVsxXSkpDQoNCiMgTWVuZ2dhYnVuZ2thbiBkYXRhIGtlIGRhbGFtIHNhdHUgZGF0YSBmcmFtZSB1bnR1ayB2aXN1YWxpc2FzaQ0KZGF0YV90ZXJnYWJ1bmcgPC0gZGF0YS5mcmFtZSgNCiAgTmlsYWkgPSBjKGRhdGFfZGVuZ2FuX291dGxpZXJzLCBkYXRhX3RhbnBhX291dGxpZXJzKSwNCiAgS2Vsb21wb2sgPSByZXAoYygiRGVuZ2FuIE91dGxpZXJzIiwgIlRhbnBhIE91dGxpZXJzIiksIA0KICAgICAgICAgICAgICAgICB0aW1lcyA9IGMobGVuZ3RoKGRhdGFfZGVuZ2FuX291dGxpZXJzKSwgbGVuZ3RoKGRhdGFfdGFucGFfb3V0bGllcnMpKSkNCikNCg0KIyBNZW1idWF0IGJveHBsb3QgaW50ZXJha3RpZiBtZW5nZ3VuYWthbiBQbG90bHkNCnBsb3RfYm94cGxvdCA8LSBwbG90X2x5KA0KICBkYXRhX3RlcmdhYnVuZywgDQogIHkgPSB+TmlsYWksIA0KICBjb2xvciA9IH5LZWxvbXBvaywgDQogIHR5cGUgPSAiYm94IiwgDQogIGJveHBvaW50cyA9ICJhbGwiLCAgIyBNZW5hbXBpbGthbiBzZW11YSB0aXRpaywgdGVybWFzdWsgb3V0bGllcnMNCiAgaml0dGVyID0gMC4yLCAgICAgICAjIE1lbWJlcmlrYW4gZWZlayBqaXR0ZXIgcGFkYSB0aXRpayBkYXRhDQogIHBvaW50cG9zID0gLTEuMiAgICAgIyBNZW55ZXN1YWlrYW4gcG9zaXNpIHRpdGlrIHRlcmhhZGFwIGJveHBsb3QNCikgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJQZW5nYXJ1aCBNb2R1cyB0ZXJoYWRhcCBCb3hwbG90IiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiS2Vsb21wb2siKSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB4ID0gIkRlbmdhbiBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtb2R1c19kZW5nYW5fb3V0bGllcnMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTW9kdXM6IiwgbW9kdXNfZGVuZ2FuX291dGxpZXJzKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3djb2xvciA9ICJyZWQiLA0KICAgICAgICBhcnJvd2hlYWQgPSAyDQogICAgICApLA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9ICJUYW5wYSBPdXRsaWVycyIsDQogICAgICAgIHkgPSBtb2R1c190YW5wYV9vdXRsaWVycywNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNb2R1czoiLCBtb2R1c190YW5wYV9vdXRsaWVycyksDQogICAgICAgIHNob3dhcnJvdyA9IFRSVUUsDQogICAgICAgIGFycm93Y29sb3IgPSAiYmx1ZSIsDQogICAgICAgIGFycm93aGVhZCA9IDINCiAgICAgICkNCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpwbG90X2JveHBsb3QNCmBgYA0KDQojIyAyLiBNb2R1cyBEYWxhbSBIaXN0b2dyYW0NCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YTogZHVhIHNrZW5hcmlvLCBzYXR1IGRlbmdhbiBvdXRsaWVycywgc2F0dSB0YW5wYSBvdXRsaWVycw0KZGF0YV9kZW5nYW5fb3V0bGllcnMgPC0gYyg1LCAxMCwgMTIsIDEzLCAxNSwgMTUsIDE2LCAxNywgMjAsIDI1LCAyOCwgMzAsIDM1KSAgIyBEZW5nYW4gb3V0bGllcnMNCmRhdGFfdGFucGFfb3V0bGllcnMgPC0gYyg1LCAxMCwgMTIsIDEzLCAxNSwgMTUsIDE2LCAxNywgMjAsIDI1LCAyOCwgMzAsIDM1KSAgICMgVGFucGEgb3V0bGllcnMNCg0KIyBNZW1idWF0IGRlbnNpdHkgcGxvdCB1bnR1ayBtYXNpbmctbWFzaW5nIGRhdGFzZXQNCmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzIDwtIGRlbnNpdHkoZGF0YV9kZW5nYW5fb3V0bGllcnMpDQpkZW5zaXR5X3RhbnBhX291dGxpZXJzIDwtIGRlbnNpdHkoZGF0YV90YW5wYV9vdXRsaWVycykNCg0KIyBNZW5naGl0dW5nIG1vZHVzDQptb2R1c19kZW5nYW5fb3V0bGllcnMgPC0gYXMubnVtZXJpYyhuYW1lcyhzb3J0KHRhYmxlKGRhdGFfZGVuZ2FuX291dGxpZXJzKSwgZGVjcmVhc2luZyA9IFRSVUUpWzFdKSkNCm1vZHVzX3RhbnBhX291dGxpZXJzIDwtIGFzLm51bWVyaWMobmFtZXMoc29ydCh0YWJsZShkYXRhX3RhbnBhX291dGxpZXJzKSwgZGVjcmVhc2luZyA9IFRSVUUpWzFdKSkNCg0KIyBNZW1idWF0IHBsb3QgbWVuZ2d1bmFrYW4gUGxvdGx5DQpwbG90IDwtIHBsb3RfbHkoKSAlPiUNCiAgIyBEZW5zaXR5IHBsb3QgdW50dWsgZGF0YSBkZW5nYW4gb3V0bGllcnMNCiAgYWRkX2xpbmVzKA0KICAgIHggPSB+ZGVuc2l0eV9kZW5nYW5fb3V0bGllcnMkeCwNCiAgICB5ID0gfmRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHksDQogICAgbmFtZSA9ICJEYXRhIGRlbmdhbiBPdXRsaWVycyIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAncmdiYSgyNTUsIDk5LCA3MSwgMC44KScsIHdpZHRoID0gMikgICMgV2FybmEgbWVyYWgNCiAgKSAlPiUNCiAgIyBEZW5zaXR5IHBsb3QgdW50dWsgZGF0YSB0YW5wYSBvdXRsaWVycw0KICBhZGRfbGluZXMoDQogICAgeCA9IH5kZW5zaXR5X3RhbnBhX291dGxpZXJzJHgsDQogICAgeSA9IH5kZW5zaXR5X3RhbnBhX291dGxpZXJzJHksDQogICAgbmFtZSA9ICJEYXRhIHRhbnBhIE91dGxpZXJzIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDQ2LCAxMzksIDg3LCAwLjgpJywgd2lkdGggPSAyKSAgIyBXYXJuYSBoaWphdQ0KICApICU+JQ0KICAjIEdhcmlzIG1vZHVzIHVudHVrIGRhdGEgZGVuZ2FuIG91dGxpZXJzDQogIGFkZF9zZWdtZW50cygNCiAgICB4ID0gbW9kdXNfZGVuZ2FuX291dGxpZXJzLCB4ZW5kID0gbW9kdXNfZGVuZ2FuX291dGxpZXJzLA0KICAgIHkgPSAwLCB5ZW5kID0gbWF4KGRlbnNpdHlfZGVuZ2FuX291dGxpZXJzJHkpLA0KICAgIG5hbWUgPSAiTW9kdXMgKERlbmdhbiBPdXRsaWVycykiLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ3JnYmEoMjU1LCA5OSwgNzEsIDAuNiknLCBkYXNoID0gJ2Rhc2gnKQ0KICApICU+JQ0KICAjIEdhcmlzIG1vZHVzIHVudHVrIGRhdGEgdGFucGEgb3V0bGllcnMNCiAgYWRkX3NlZ21lbnRzKA0KICAgIHggPSBtb2R1c190YW5wYV9vdXRsaWVycywgeGVuZCA9IG1vZHVzX3RhbnBhX291dGxpZXJzLA0KICAgIHkgPSAwLCB5ZW5kID0gbWF4KGRlbnNpdHlfdGFucGFfb3V0bGllcnMkeSksDQogICAgbmFtZSA9ICJNb2R1cyAoVGFucGEgT3V0bGllcnMpIiwNCiAgICBsaW5lID0gbGlzdChjb2xvciA9ICdyZ2JhKDQ2LCAxMzksIDg3LCAwLjYpJywgZGFzaCA9ICdkYXNoJykNCiAgKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIlBlbmdhcnVoIE91dGxpZXJzIHRlcmhhZGFwIE1vZHVzIHBhZGEgRGVuc2l0eSBQbG90IiwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkiKSwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiS2VwYWRhdGFuIiksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9IG1vZHVzX2Rlbmdhbl9vdXRsaWVycywNCiAgICAgICAgeSA9IG1heChkZW5zaXR5X2Rlbmdhbl9vdXRsaWVycyR5KSAqIDAuOCwNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNb2R1czoiLCBtb2R1c19kZW5nYW5fb3V0bGllcnMpLA0KICAgICAgICBzaG93YXJyb3cgPSBUUlVFLA0KICAgICAgICBhcnJvd2hlYWQgPSAzLA0KICAgICAgICBheCA9IDAsDQogICAgICAgIGF5ID0gLTMwLA0KICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICdyZ2JhKDI1NSwgOTksIDcxLCAwLjgpJywgc2l6ZSA9IDEyKQ0KICAgICAgKSwNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSBtb2R1c190YW5wYV9vdXRsaWVycywNCiAgICAgICAgeSA9IG1heChkZW5zaXR5X3RhbnBhX291dGxpZXJzJHkpICogMC44LA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1vZHVzOiIsIG1vZHVzX3RhbnBhX291dGxpZXJzKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMywNCiAgICAgICAgYXggPSAwLA0KICAgICAgICBheSA9IC00MCwNCiAgICAgICAgZm9udCA9IGxpc3QoY29sb3IgPSAncmdiYSg0NiwgMTM5LCA4NywgMC44KScsIHNpemUgPSAxMikNCiAgICAgICkNCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpwbG90DQpgYGANCg0KDQojIFByYWt0aWt1bSAyOg0KDQoqKkNhcmlsYWggQ29udG9oIHNlZGVyaGFuYSB5YW5nIG1lbmdndW5ha2FuIFVrdXJhbiBQZW11c2F0YW4gZGFsYW0gU3R1ZGkgS2FzdXMgc2ViYWdhaSBiZXJpa3V0OioqDQoNCiMgQS4gQmlzbmlzDQoNCioqS2FzdXMqKiAtPiBTZW9yYW5nIG1hbmFqZXIgdG9rbyBpbmdpbiBtZW5nYW5hbGlzaXMgZGF0YSBwZW5qdWFsYW4gcHJvZHVrIHNlbGFtYSBzZWJ1bGFuIHVudHVrIG1lbmRhcGF0a2FuIGdhbWJhcmFuIHlhbmcgbGViaWggamVsYXMgbWVuZ2VuYWkgcGVyZm9ybWEgcHJvZHVrIHRlcnNlYnV0LiBNYW5hamVyIGluZ2luIG1lbmdldGFoaSBwcm9kdWsgbWFuYSB5YW5nIG1lbWlsaWtpIHBlbmp1YWxhbiByYXRhLXJhdGEgeWFuZyB0aW5nZ2ksIGJhZ2FpbWFuYSBkaXN0cmlidXNpIHBlbmp1YWxhbiBkaXRlbmdhaC10ZW5nYWggKE1lZGlhbiksIGRhbiBhcGFrYWggYWRhIG5pbGFpIHBlbmp1YWxhbiB5YW5nIHRlcmphZGkgbGViaWggc2VyaW5nIChNb2R1cykuIERhdGEgcGVuanVhbGFuIHlhbmcgdGVyY2F0YXQgZGFsYW0gc2VidWxhbiBhZGFsYWggc2ViYWdhaSBiZXJpa3V0Og0KXFsNCiBcdGV4dHtEYXRhOn0gXDs1LFw7MTIsXDs4LFw7MTAsXDs4LFw7MTAsXDsxNSxcOzEyLFw7MjAsXDs4LFw7MTAsXDsyNSxcOzEwLFw7MTUsXDsxOCxcOzEwLFw7MTINClxdDQoNCioqQW5hbGlzaXMgVWt1cmFuIFBlbXVzYXRhbiBEYXRhOioqDQoNCiMjIDEuIFJhdGFfcmF0YSAoTWVhbikNClJhdGEtcmF0YSBhZGFsYWgganVtbWxhaCBzZW11YSBuaWxhaSBkaWJhZ2kgZGVuZ2FuIGJhbnlha255YSBkYXRhLiBEYWxhbSBoYWwgaW5pLCBraXRhIGluZ2luIG1lbmdldGFodWkgYmVyYXBhIGp1bWxhaCByYXRhLXJhdGEgcHJvZHVrIHlhbmcgdGVyanVhbCBzZXRpYXAgaGFyaW55YSBzZWxhbWEgc2VidWxhbjoNCkZvcm11bGFueWE6DQpcWw0KXHRleHR7UmF0YS1yYXRhfSA9IFxmcmFje1x0ZXh0e0p1bWxhaCBQZW5qdWFsYW59fXtcdGV4dHtKdW1sYWggSGFyaX19DQpcXQ0KDQojIyAyLiBNZWRpYW4NCk1lZGlhbiBhZGFsYWggbmlsYWkgdGVuZ2FoIGRhcmkgZGF0YSB5YW5nIHN1ZGFoIGRpdXJ1dGthbi4gTWVkaWFuIG1lbWJlcmlrYW4gZ2FtYmFyYW4geWFuZyBsZWJpaCBiYWlrIG1lbmdlbmFpIGRhdGEgamlrYSBhZGEgcGVuY2lsYW4gKE91dGxpZXIpIHlhbmcgYmlzYSBtZW1wZW5nYXJ1aGkgcmF0YS1yYXRhLg0KDQojIyAzLiBNb2R1cw0KTW9kdXMgYWRhbGFoIG5pbGFpIHlhbmcgcGFsaW5nIHNlcmluZyBtdW5jdWwgZGFsYW0gZGF0YS4gTW9kdXMgYmlzYSBtZW1iZXJpa2FuIGluZm9ybWFzaSBtZW5nZW5haSBwcm9kdWsgeWFuZyBwYWxpbmcgYmFueWFrIHRlcmp1YWwgZGFsYW0gcGVyaW9kZSB0ZXJ0ZW50dS4NCg0KIyBMYW5na2FoLWxhbmdrYWggQW5hbGlzaXMgQmlzbmlzDQoNCiMjIDEuIE1lbmdoaXR1bmcgUmF0YS1yYXRhDQoNCiogSnVtbGFoIFBlbmp1YWxhbjogJDUrMTIrOCsxMCsxNSsxMisyMCs4KzEwKzI1KzEwKzE1KzE4KzEwKzEyPTE2NSQNCg0KKiBKdW1sYWggaGFyaTogMTUNCg0KKiBcWw0KXHRleHR7UmF0YS1yYXRhIFBlbmp1YWxhbn06XGZyYWN7MTY1fXsxNX0gPSAxMQ0KXF0NCkphZGksIFJhdGEtcmF0YSBwZW5qdWFsYW4gcHJvdWsgcGVyIGhhcmkgYWRhbGFoICoqMTEqKiB1bml0Lg0KDQojIyAyLiBNZW5naGl0dW5nIE1lZGlhbg0KKiBVcnV0a2FuIGRhdGEgcGVuanVhbGFuOiAkLDgsOCwxMCwxMCwxMCwxMiwxMiwxMiwxNSwxNSwxOCwyMCwyNSQNCiogS2FyZW5hIGp1bWxhaCBkYXRhIGFkYWxhaCAxNShqdW1sYWggZ2FuamlsKSwgbWVkaWFuIGFkYWxhaCBuaWxhaSBkaSBwb3Npc2kgdGVuZ2FoLCB5YWl0dSBrZS04LCB5YW5nIGJlcm5pbGFpICoqMTIqKi4NCmphZGksICoqTWVkaWFuKiogcGVuanVhbGFuIGFkYWxhaCAqKjEyKiogdW5pdC4NCg0KIyMgMy4gTWVuZ2hpdHVuZyBNb2R1cw0KKiBNb2R1cyBhZGFsYWggbmlsYWkgeWFuZyBwYWxpbmcgc2VyaW5nIG11bmN1bC4gRGFyaSBkYXRhLCBraXRhIGRhcGF0IG1lbGloYXQgYmFod2EgbmlsYWkgKioxMCoqIGRhbiAqKjEyKiogbXVuY3VsIGxlYmloIHNlcmluZyBkaWJhbmRpbmdrYW4geWFuZyBsYWlubnlhLg0KDQpqYWRpLCAqKk1vZHVzKiogcGVuanVhbGFuIGFkYWxhaCAqKjEwKiogdW5pdCBkYW4gKioxMioqIHVuaXQsIGthcmVuYSBrZWR1YW55YSBtdW5jdWwgKiozKioga2FsaS4NCg0KDQojIEIuIEtlc2VoYXRhbg0KDQoqKkthc3VzKiogLT4gU2VidWFoIGtsaW5payBtZW5nYW5hbGlzaXMgYmVyYXQgYmFkYW4gcGFzaWVuIHlhbmcgYmVya3VuanVuZyBzZWxhbWEgc2VtaW5nZ3UgdGVyYWtoaXIuIERhdGEgaW5pIGRpZ3VuYWthbiB1bnR1ayBtZW1haGFtaSBkaXN0cmlidXNpIGJlcmF0IGJhZGFuIHBhc2llbiB5YW5nIGRhdGFuZyBrZSBrbGluaWssIHNlcnRhIHVudHVrIG1lcmFuY2FuZyBwcm9ncmFtIGtlc2VoYXRhbiB5YW5nIHNlc3VhaS4gQmVyaWt1dCBhZGFsYWggZGF0YSBiZXJhdCBiYWRhbiBwYXNpZW4geWFuZyB0ZXJjYXRhdDoNCg0KXFsNClx0ZXh0e0RhdGEgQmVyYXQgQmFkYW4gKGRhbGFtIGtpbG9ncmFtKTp9IFw7IDQ1LCBcOyA1MCwgXDsgNTUsIFw7IDYwLCBcOyA2MCwgXDsgNzAsIFw7IDcwLCBcOyA3MCwgXDsgNzUsIFw7IDgwLCBcOyA4NSwgXDsgODUsIFw7IDkwLCBcOyA5NQ0KXF0NCg0KDQoNCioqQW5hbGlzaXMgVWt1cmFuIFBlbXVzYXRhbiBEYXRhKioNCg0KIyMgMS4gUmF0YS1yYXRhIChNZWFuKQ0KDQpSYXRhLXJhdGEgZGlndW5rYW4gdW50dWsgbWVuZ2V0YWh1aSBiZXJhdCBiYWRhbiByYXRhLXJhdGEgcGFzaWVuIHlhbmcgZGF0YW5nIGtlIGtsaW5pay4NCg0KRm9ybXVsYW55YToNClxbDQpcdGV4dHtSYXRhLXJhdGF9ID0gXGZyYWN7XHRleHR7SnVtbGFoIFRvdGFsIEJlcmF0IEJhZGFufX17XHRleHR7SnVtbGFoIFBhc2llbn19DQpcXQ0KDQojIyAyLiBNZWRpYW4NCg0KTWVkaWFuIGFkYWxhaCBiZXJhdCBiYWRhbiB5YW5nIGJlcmFkYSBkaSBwb3Npc2kgdGVuZ2FoIHNldGVsYWggZGF0YSBkaXVydXRrYW4uIE1lZGlhbiBtZW1iZXJpa2FuIGluZm9ybWFzaSB5YW5nIGxlYmloIHN0YWJpbCB0ZXJoYWRhcCBkYXRhIHlhbmcgbWVtaWxpa2kgcGVuY2lsYW4gKG91dGxpZXIpLg0KDQojIyAzLiBNb2R1cw0KDQpNb2R1cyBhZGFsYWggYmVyYXQgYmFkYW4geWFuZyBwYWxpbmcgc2VyaW5nIG11bmN1bCBkYWxhbSBkYXRhLiBNb2R1cyBtZW1iZXJpa2FuIGdhbWJhcmFuIG5pbGFpIGJlcmF0IGJhZGFuIHlhbmcgdW11bSBkaXRlbXVrYW4gcGFkYSBwYXNpZW4ga2xpbmlrLg0KDQoNCiMgTGFuZ2thaC1sYW5na2FoIEFuYWxpc2lzIEtlc2VoYXRhbg0KDQojIyAxLiBNZW5naGl0dW5nIFJhdGEtcmF0YQ0KDQoqIEp1bWxhaCB0b3RhbGJlcmF0IGJhZGFuOiQ0NSs1MCs1NSs2MCs2MCs2NSs3MCs3MCs3MCs3NSs4MCs4NSs4NSs5MCs5NT0xMDE1JA0KDQoqIEp1bWxhaCBwYXNpZW46IDE1DQoNCg0KKiBcWw0KXHRleHR7UmF0YS1yYXRhIEJlcmF0IEJhZGFufTpcZnJhY3sxMDE1fXsxNX0gPSA2Ny42N2tnDQpcXQ0KDQpKYWRpLCByYXRhLXJhdGEgYmVyYXQgYmFkYW4gcGFzaWVuIGFkYWxhaCAqKjY3LjY3ZyoqDQoNCiMjIDIuIE1lbmdoaXR1bmcgTWVkaWFuDQoNCiogVXJ1dGthbiBkYXRhIGJlcmF0IGJhZGFuOiAkNDUsNTAsNTUsNjAsNjAsNjUsNzAsNzAsNzAsNzUsODAsODUsODUsOTAsOTUkDQoNCiogS2FyZW5hIGp1bWxhaCBkYXRhIGFkYWxhaCBnYW5qaWwgKDE1KSwgbWVkaWFuIGFkYWxhaCBkYXRhIGtlLTggZGFsYW0gZGF0YSB5YW5nIGRpdXJ1dGthbiwgeWFpdHUgKio3MCBrZyoqDQoNCkphZGksICoqTWVkaWFuKiogYmVyYXQgYmFkYW4gYWRhbGFoICoqNzAga2cqKi4NCg0KIyMgMy4gTWVuZ2hpdHVuZyBNb2R1cw0KDQoqIE1vZHVzIGFkYWxhaCBuaWxhaSB5YW5nIHBhbGluZyBzZXJpbmcgbXVuY3VsLiBEYXJpIGRhdGEsIG5pbGFpICoqNzAga2cqKiBtdW5jdWwgc2ViYW55YWsgMyBrYWxpLCBsZWJpaCBiYW55YWsgZGliYW5kaW5na2FuIG5pbGFpIGxhaW5ueWEuDQoNCkphZGksICoqTW9kdXMqKiBiZXJhdCBiYWRhbiBhZGFsYWggKio3MCBrZyoqDQoNCiMgQy4gUGVuZGlkaWthbg0KDQoqKkthc3VzKiogLT4gU2VidWFoIHNla29sYWggaW5naW4gbWVuZ2FuYWxpc2lzIG5pbGFpIHVqaWFuIHNpc3dhIHVudHVrIG1hdGEgcGVsYWphcmFuIG1hdGVtYXRpa2EuIERhdGEgaW5pIGRpZ3VuYWthbiB1bnR1ayBtZW5nZXRhaHVpIGRpc3RyaWJ1c2kgbmlsYWkgc2lzd2EgZGFuIG1lbmdpZGVudGlmaWthc2kga2VidXR1aGFuIHBlbmluZ2thdGFuIHBlbWJlbGFqYXJhbi4gQmVyaWt1dCBhZGFsYWggbmlsYWkgdWppYW4gc2lzd2EgeWFuZyBkaXBlcm9sZWggZGFyaSBzYXR1IGtlbGFzOg0KXFsNClx0ZXh0e0RhdGEgTmlsYWkgVWppYW4gU2lzd2E6fSBcOyA1NSwgXDsgNjAsIFw7IDYwLCBcOyA2NSwgXDsgNzAsIFw7IDc1LCBcOyA3NSwgXDsgNzUsIFw7IDgwLCBcOyA4NSwgXDsgODUsIFw7IDkwLCBcOyA5MCwgXDsgOTUsIFw7IDEwMA0KXF0NCg0KKipBbmFsaXNpcyBVa3VyYW4gUGVtdXNhdGFuKioNCg0KIyMgMS4gUmF0YS1yYXRhIChNZWFuKQ0KDQpSYXRhLXJhdGEgZGlndW5ha2FuIHVudHVrIG1lbmdldGFodWkgbmlsYWkgcmF0YS1yYXRhIHVqaWFuIHNpc3dhLg0KDQpGb3JtdWxhbnlhOg0KXFsNClx0ZXh0e1JhdGEtcmF0YX0gPSBcZnJhY3tcdGV4dHtKdW1sYWggVG90YWwgTmlsYWl9fXtcdGV4dHtqdW1sYWggU2lzd2F9fQ0KXF0NCg0KIyMgMi4gTWVkaWFuDQoNCk1lZGlhbiBhZGFsYWggbmlsYWkgdGVuZ2FoIHNldGVsYWggZGF0YSBkaXVydXRrYW4uIE1lZGlhbiBtZW1iZXJpa2FuIGdhbWJhcmFuIG5pbGFpIHRlbmdhaCBkYXJpIGRpc3RyaWJ1c2kgc2lzd2EuDQoNCiMjIDMuIE1vZHVzIA0KDQpNb2R1cyBhZGFsYWggbmlsYWkgeWFuZyBwYWxpbmcgc2VyaW5nIG11bmN1bCBkYWxhbSBkYXRhLiBNb2R1cyBtZW51bmp1a2FuIG5pbGFpIHlhbmcgcGFsaW5nIHVtdW0gZGljYXBhaSBvbGVoIHNpc3dhLg0KDQojIExhbmdrYWgtbGFuZ2thaCBBbmFsaXNpcyBQZW5kaWRpa2FuDQoNCiMjIDEuIE1lbmdoaXR1bmcgUmF0YS1yYXRhDQoNCiogSnVtbGFoIHRvdGFsIG5pbGFpOiAkNTUrNjArNjArNjUrNzArNzUrNzUrNzUrODArODUrODUrOTArOTArOTUrMTAwPTExNjAkDQoNCiogSnVtbGFoIHNpc3dhOiAxNQ0KDQoqIFxbDQpcdGV4dHtSYXRhLXJhdGEgbmlsYWkgdWppYW59IDogXGZyYWN7MTE2MH17MTV9ID0gNzcuMzMNClxdDQoNCkphZGksICoqUmF0YS1yYXRhKE1lYW4pKiogbmlsYWkgdWppYW4gc2lzd2EgYWRhbGFoICoqNzcuMzMqKg0KDQojIyAyLiBNZW5naGl0dW5nIE1lZGlhbg0KDQoqIFVydXRrYW4gZGF0YSBuaWxhaTogJDU1LDYwLDYwLDY1LDcwLDc1LDc1LDc1LDgwLDg1LDg1LDkwLDkwLDk1LDEwMCQNCg0KKiBLYXJlbmEganVtbGFoIGRhdGEgYWRhbGFoIGdhbmppbCAoMTUpLCBtZWRpYW4gYWRhbGFoIGRhdGEga2UtOCwgeWFpdHUgKio3NSoqLg0KDQpKYWQsICoqTWVkaWFuKiogbmlsYWkgdWppYW4gc2lzd2EgYWRhbGFoICoqNzUqKg0KDQoNCiMjIDMuIE1lbmdoaXR1bmcgTW9kdXMNCg0KKiBNb2R1cyBhZGFsYWggbmlsYWkgeWFuZyBwYWxpbmcgc2VyaW5nIG11bmN1bC4gRGFyaSBkYXRhLCBuaWxhaSAqKjc1KiogbXVuY3VsIHNlYmFueWFrIDMga2FsaSwgbGViaWggYmFueWFrIGRpYmFuZGluZ2thbiBuaWxhaSBsYWlubnlhLg0KDQpKYWRpLCAqKk1vZHVzKiogbmlsYWkgdWppYW4gc2lzd2EgYWRhbGFqICoqNzUqKg0KDQoNCiMgS2VzaW1wdWxhbiBkYXJpIFVrdXJhbiBQZW11c2F0YW4gRGF0YToNClVrdXJhbiBwZW11c2F0YW4gZGF0YSwgc2VwZXJ0aSByYXRhLXJhdGEgKG1lYW4pLCBtZWRpYW4sIGRhbiBtb2R1cywgbWVydXBha2FuIGFsYXQgc3RhdGlzdGlrYSB5YW5nIHBlbnRpbmcgdW50dWsgbWVtYWhhbWkga2FyYWt0ZXJpc3RpayB1dGFtYSBkYXJpIHN1YXR1IGRhdGFzZXQuDQoNCkJlcmlrdXQgYWRhbGFoIGtlc2ltcHVsYW4gdW11bSBtZW5nZW5haSB1a3VyYW4gcGVtdXNhdGFuIGRhdGE6DQoNCioqMS4gUmF0YS1yYXRhIChNZWFuKSoqDQoNCiogUmF0YS1yYXRhIG1lbWJlcmlrYW4gZ2FtYmFyYW4gdW11bSB0ZW50YW5nIG5pbGFpIHRlbmdhaCBkYXJpIHNlbHVydWggZGF0YS4NCg0KKiBCZXJndW5hIHVudHVrIG1lbnVuanVrYW4ga2VjZW5kZXJ1bmdhbiBzZW50cmFsIGppa2EgZGF0YSB0aWRhayBtZW1pbGlraSBuaWxhaSBla3N0cmVtIChvdXRsaWVycykuDQoNCiogKipLZWxlbWFoYW4qKjogU2FuZ2F0IHNlbnNpdGlmIHRlcmhhZGFwIG91dGxpZXJzLCBzZWhpbmdnYSBkYXBhdCBtZW1iZXJpa2FuIGluZm9ybWFzaSB5YW5nIGt1cmFuZyBha3VyYXQgamlrYSB0ZXJkYXBhdCBuaWxhaSBla3N0cmVtLg0KDQoNCioqMi4gTWVkaWFuKioNCg0KKiBNZWRpYW4gYWRhbGFoIG5pbGFpIHRlbmdhaCBkYXJpIGRhdGEgc2V0ZWxhaCBkaXVydXRrYW4uDQoNCiogQmVyZ3VuYSB1bnVrIG1lbWFoYW1pIG5pbGFpIHRlbmdhaCB5YW5nIGxlYmloIHN0YWJpbCBkaWJhbmRpbmdrYW4gcmF0YS1yYXRhLCB0ZXJ1dGFtYSBqaWthIGRhdGEgbWVtaWxpa2kgb3V0bGllcnMgYXRhdSBkaXN0cmlidXNpIHRpZGFrIHNpbWV0cmlzLg0KDQoqICoqS2VsZWJpaGFuKio6IFRpZGFrIHRlcnBlbmdhcnVoIG9sZWggb3V0bGllcnMsIHNlaGluZ2dhIG1lbWJlcmlrYW4gZ2FtYmFyYW4geWFuZyBsZWJpaCByZXByZXNlbnRhdGlmIGRhbGFtIGRhdGEgeWFuZyB0aWRhayBzaW1ldHJpcy4NCg0KKiozLiBNb2R1cyoqDQoNCiogTW9kdXMgYWRhbGFoIG5pbGFpIHlhbmcgcGFsaW5nIHNlcmluZyBtdW5jdWwgZGFsYW0gZGF0YXNldC4NCg0KKiBCZXJndW5hIHVudHVrIG1lbmdlbmFsaSBwb2xhIGF0YXUgbmlsYWkgeWFuZyBkb21pbmFuIGRhbGFtIGRhdGEuDQoNCiogKipLZWxlYmloYW4qKjogQ29jb2sgdW50dWsgZGF0YSBrYXRlZ29yaWthbCBhdGF1IGRhdGEgZGlza3JpdCwgZGkgbWFuYSBuaWxhaSByYXRhLXJhdGEgYXRhdSBtZWRpYW4ga3VyYW5nIGJlcm1ha25hLg0KDQojIyBLZXNpbXB1bGFuIFVtdW06DQoqIFVrdXJhbiBwZW11c2F0YW4gZGF0YSBtZW1iYW50dSBkYWxhbSBtZW5nZ2FtYmFya2FuIGthcmFrdGVyaXN0aWsgdXRhbWEgZGF0YXNldCwgYmFpayBpdHUgZGlzdHJpYnVzaSBuaWxhaSwga2VjZW5kZXJ1bmdhbiBkb21pbmFuLCBtYXVwdW4gbmlsYWkgdGVuZ2FoLg0KKiAqKlBlbWlsaWhhbiB1a3VyYW4geWFuZyB0ZXBhdCBiZXJnYW50dW5nIHBhZGEga2FyYWt0ZXJpc3RpayBkYXRhOioqDQogICAgKiBHdW5ha2FuICoqTWVhbiogdW50dWsgZGF0YSBzaW1ldHJpcyB0YW5vYSBvdXRsaWVycy4NCiAgICAqIEd1bmFrYW4gKipNZWRpYW4qKiB1bnR1ayBkYXRhIHlhbmcgbWVtaWxpa2kgb3V0bGllcnMgYXRhdSBkaXN0cmlidXNpIHRpZGFrIHNpbWV0cmlzLg0KICAgICogR3VuYWthbiAqKk1vZHVzKiogdW50dWsgbWVuZW11a2FuIG5pbGFpIHlhbmcgcGFsaW5nIHNlcmluZyBtdW5jdWwsIHRlcnV0YW1hIHBhZGEgZGF0YSBkaXNrcml0IGF0YXUga2F0ZWdvcmlhbC4NCiogS29tYmluYXNpIGRhcmkga2V0aWdhIHVrdXJhbiBpbmkgc2VyaW5nIG1lbWJlcmlrYW4gd2F3YXNhbiB5YW5nIGxlYmloIGxlbmdrYXAgZGFsYW0gYW5hbGlzaXMgZGF0YS4NCg0KRGVuZ2FuIG1lbWFoYW1pIGtlbGViaWhhbiBkYW4ga2V0ZXJiYXRhc2FuIG1hc2luZy1tYXNpbmcgdWt1cmFuIHBlbXVzYXRhbiwgYW5hbGlzaXMgZGF0YSBtZW5qYWRpIGxlYmloIGFrdXJhdCBkYW4gcmVsZXZhbiB1bnR1ayBwZW5nYW1iaWxhbiBrZXB1dHVzYW4uDQoNCg0KIyBSZWZyZW5zaQ0KLSBEU2NpZW5jZWxhYnMuIChuLmQuKSBQZW5nYW50YXIgU3RhdGlzdGlrYSB1bnR1ayBTYWlucyBEYXRhLiBCb29rZG93bi4gUmV0cmlldmVkIGZyb20gPGEgaHJlZiA9ICJodHRwczovL2Jvb2tkb3duLm9yZy9kc2NpZW5jZWxhYnMvc3RhdGlzdGlrYV9kYXNhci9fYm9vay8iID4gS2xpayBkaXNpbmk8L2E+DQotIE5pc2EgQW1hbGlhIFB1dHJpIEksUy4gKDIwMjQpLiBLZXRhaHVpIE1hY2FtIFVrdXJhbiBQZW11c2F0YW4gRGF0YS5Cb29rZG93bi4gUmV0cmlldmVkIGZyb20gPGEgaHJlZiA9ICJodHRwczovL2R0ZS50ZWxrb211bml2ZXJzaXR5LmFjLmlkL2tldGFodWktbWFjYW0tdWt1cmFuLXBlbXVzYXRhbi1kYXRhLWJlZ2luaS1wZW5qZWxhc2FuLWxlbmdrYXBueWEvIj5LbGlrIGRpc2luaTwvYT4NCi0gRHIuQW5pdGEgUmFoYXl1LCBTLlNpLiwgTS5TaS4gVWt1cmFuIFBlbXVzYXRhbiBEYXRhLiBCaW51cyBOdXNhbnRhcmEuQm9va2Rvd24uIFJldHJpZXZlZCBmcm9tIDxhIGhyZWYgPSAiaHR0cHM6Ly9iaW51cy5hYy5pZC9tYWxhbmcvMjAyMi8wNC91a3VyYW4tcGVtdXNhdGFuLWRhdGEvIiA+a2xpayBkaXNpbmk8L2E+DQotIERyLmlyLlByaW1hIEtyaXN0YWxpbmEsTVQuICgyMDIwKS4gU3RhdGlzdGlrIERlc2tyaXB0aWY6IFVrdXJhbiBQZW11c2F0YW4gRGF0YS5Nb2R1bCAzLlBlbmdhbnRhciBzdGF0aXN0aWsuPGEgaHJlZiA9ICJodHRwczovL3ByaW1hLmxlY3R1cmVyLnBlbnMuYWMuaWQvU3RhdGlzdGlrL1RvcGlrLTMucGRmIj5LbGlrIERpc2luaTwvYT4NCg0KDQoNCg0KDQoNCg0K