TUGAS STATISTIKA DASAR 11

Ukuran Penyebaran Data

awokwowk


LATIHAN 1

Sebuah perusahaan ingin memahami karakteristik penyebaran data hasil penjualan dari empat cabang (A, B, C, dan D) selama satu bulan terakhir. Data penjualan (dalam juta rupiah) dari keempat cabang tersebut adalah sebagai berikut:

  • Cabang A: 50, 55, 60, 65, 70
  • Cabang B: 40, 50, 60, 70, 80
  • Cabang C: 30, 30, 35, 40, 45
  • Cabang D: 70, 75, 80, 85, 90

Menghitung Statistik Deskriptif

Hitunglah rata-rata, median, dan standar deviasi untuk masing-masing cabang.

Rumus Mean : \[ \text{Mean} = \frac{\sum x}{n} \]

Rumus Posisi Median : - Apabila \(n\) merupakan bilangan ganjil \[ \text{Median} = \frac{n + 1}{2} \]

  • Apabila \(n\) merupakan bilangan genap \[ \text{Median} = \frac{n}{2}+1 \] dan \[ \text{Median} = \frac{n}{2} \]

Rumus Standar Deviasi : \[ SD = \sqrt \frac{\sum (x_i - \mu)^2}{n} \]

dimana :

  • \(x_i\) = data
  • \(\mu\) = Mean (Rata-Rata)
  • \(n\) = Jumlah data

Cabang A

  • Mean \[ \begin{split} \text{Mean} &= \frac{50 + 55 + 60 + 65 + 70}{5} \\ &= \frac{300}{5} \\ &= 60 \end{split} \]

  • Median \[ \begin{split} \text{Median} &= \frac{n + 1}{2} \\ &= \frac{5 + 1}{2} \\ &= \frac{6}{2} \\ &= 3 \end{split} \] Posisi ada di ke tiga yang berarti median nya yaitu 60

  • Standar Deviasi \[ \begin{split} SD &= \sqrt \frac{\sum (x_i - \mu)^2}{n} \\ &= \sqrt \frac{(50 - 60)^2 + (55 - 60)^2 + (60 - 60)^2 + (65 - 60)^2 + (70 - 60)^2}{5} \\ &= \sqrt \frac{(100 + 25 + 0 + 25 + 100}{5} \\ &= \sqrt \frac{250}{5} \\ &= \sqrt 50 \\ &= 7,07 \end{split} \]

Cabang B

  • Mean \[ \begin{split} \text{Mean} &= \frac{40 + 50 + 60 + 70 + 80}{5} \\ &= \frac{300}{5} \\ &= 60 \end{split} \]

  • Median \[ \begin{split} \text{Median} &= \frac{n + 1}{2} \\ &= \frac{5 + 1}{2} \\ &= \frac{6}{2} \\ &= 3 \end{split} \] Posisi ada di ke tiga yang berarti median nya yaitu 60

  • Standar Deviasi \[ \begin{split} SD &= \sqrt \frac{\sum (x_i - \mu)^2}{n} \\ &= \sqrt \frac{(40 - 60)^2 + (50 - 60)^2 + (60 - 60)^2 + (70 - 60)^2 + (80 - 60)^2}{5} \\ &= \sqrt \frac{(400 + 100 + 0 + 100 + 400}{5} \\ &= \sqrt \frac{1.000}{5} \\ &= \sqrt 200 \\ &= 14,14 \end{split} \]

Cabang C

  • Mean \[ \begin{split} \text{Mean} &= \frac{30 + 30 + 35 + 40 + 45}{5} \\ &= \frac{180}{5} \\ &= 36 \end{split} \]

  • Median \[ \begin{split} \text{Median} &= \frac{n + 1}{2} \\ &= \frac{5 + 1}{2} \\ &= \frac{6}{2} \\ &= 3 \end{split} \] Posisi ada di ke tiga yang berarti median nya yaitu 35

  • Standar Deviasi \[ \begin{split} SD &= \sqrt \frac{\sum (x_i - \mu)^2}{n} \\ &= \sqrt \frac{(30 - 36)^2 + (30 - 36)^2 + (35 - 36)^2 + (40 - 36)^2 + (45 - 36)^2}{5} \\ &= \sqrt \frac{(36 + 36 + 1 + 16 + 81}{5} \\ &= \sqrt \frac{170}{5} \\ &= \sqrt 34 \\ &= 5,83 \end{split} \]

Cabang D

  • Mean \[ \begin{split} \text{Mean} &= \frac{70 + 75 + 80 + 85 + 90}{5} \\ &= \frac{400}{5} \\ &= 80 \end{split} \]

  • Median \[ \begin{split} \text{Median} &= \frac{n + 1}{2} \\ &= \frac{5 + 1}{2} \\ &= \frac{6}{2} \\ &= 3 \end{split} \] Posisi ada di ke tiga yang berarti median nya yaitu 80

  • Standar Deviasi \[ \begin{split} SD &= \sqrt \frac{\sum (x_i - \mu)^2}{n} \\ &= \sqrt \frac{(70 - 80)^2 + (75 - 80)^2 + (80 - 80)^2 + (85 - 80)^2 + (90 - 80)^2}{5} \\ &= \sqrt \frac{(100 + 25 + 0 + 25 + 100}{5} \\ &= \sqrt \frac{250}{5} \\ &= \sqrt 50 \\ &= 7,07 \end{split} \]

Identifikasi Cabang dengan Penyebaran Data Terkecil

Cabang mana yang memiliki penyebaran data paling kecil? Jelaskan alasannya.

Besar kecilnya penyebaran data dapat dilihat dari nilai standar deviasi apabila Data distribusi normal. namun, jika data distribusi tidak normal maka bisa memakai nilai IQR. Data diatas merupakan data distribusi normal karena data tersebut memiliki outlier. Bukti - Cabang A \[ \text{posisi} Q_1 = \frac{n + 1}{4} = \frac{5 + 1}{4} = \frac{6}{4} = 1,5 \\ \] Posisi ada di antara data 1 dan 2

\[ \text{posisi} Q_3 = \frac{3(n + 1)}{4} = \frac{3(5 + 1)}{4} = \frac{18}{4} = 4,5 \] Posisi ada di antara data 1 dan 2

Hitung \(Q_1\) dan \(Q_3\) \[ \begin{split} Q_1 = 50 + 0,5 \times (55-50) = 50 + 2,5 = 52,5 \\ Q_3 = 65 + 0,5 \times (70-65) = 65 + 2,5 = 67,5 \end{split} \]

Hitung IQR \[ IQR = Q_3 - Q_1 = 67,5 - 52,5 = 15 \]

Batas Bawah dan atas \[ \begin{split} \text{Batas Bawah} &= Q_1 - 1,5 \times IQR = 52,5 - 1,5 \times 15 = 30 \\ \text{Batas Atas} &= Q_3 + 1,5 \times IQR = 67,5 + 1,5 \times 15 = 90 \end{split} \]

Data dalam rentang maka tidak ada outlier.

  • Cabang B \[ \text{posisi} Q_1 = \frac{n + 1}{4} = \frac{5 + 1}{4} = \frac{6}{4} = 1,5 \\ \] Posisi ada di antara data 1 dan 2

\[ \text{posisi} Q_3 = \frac{3(n + 1)}{4} = \frac{3(5 + 1)}{4} = \frac{18}{4} = 4,5 \] Posisi ada di antara data 4 dan 5

Hitung \(Q_1\) dan \(Q_3\) \[ \begin{split} Q_1 = 40 + 0,5 \times (50-40) = 40 + 5 = 45 \\ Q_3 = 70 + 0,5 \times (80-70) = 70 + 5 = 75 \end{split} \]

Hitung IQR \[ IQR = Q_3 - Q_1 = 75 - 45 = 30 \]

Batas Bawah dan atas \[ \begin{split} \text{Batas Bawah} &= Q_1 - 1,5 \times IQR = 45 - 1,5 \times 30 = 0 \\ \text{Batas Atas} &= Q_3 + 1,5 \times IQR = 75 + 1,5 \times 30 = 120 \end{split} \]

Data dalam rentang maka tidak ada outlier.

  • Cabang C \[ \text{posisi} Q_1 = \frac{n + 1}{4} = \frac{5 + 1}{4} = \frac{6}{4} = 1,5 \\ \] Posisi ada di antara data 1 dan 2

\[ \text{posisi} Q_3 = \frac{3(n + 1)}{4} = \frac{3(5 + 1)}{4} = \frac{18}{4} = 4,5 \] Posisi ada di antara data 4 dan 5

Hitung \(Q_1\) dan \(Q_3\) \[ \begin{split} Q_1 = 30 + 0,5 \times (30-30) = 30 + 0 = 30 \\ Q_3 = 40 + 0,5 \times (45-40) = 40 + 2,5 = 42,5 \end{split} \]

Hitung IQR \[ IQR = Q_3 - Q_1 = 42,5 - 30 = 12,5 \]

Batas Bawah dan atas \[ \begin{split} \text{Batas Bawah} &= Q_1 - 1,5 \times IQR = 30 - 1,5 \times 12,5 = 11,25 \\ \text{Batas Atas} &= Q_3 + 1,5 \times IQR = 42,5 + 1,5 \times 12,5 = 61,25 \end{split} \]

Data dalam rentang maka tidak ada outlier.

  • Cabang D \[ \text{posisi} Q_1 = \frac{n + 1}{4} = \frac{5 + 1}{4} = \frac{6}{4} = 1,5 \\ \] Posisi ada di antara data 1 dan 2

\[ \text{posisi} Q_3 = \frac{3(n + 1)}{4} = \frac{3(5 + 1)}{4} = \frac{18}{4} = 4,5 \] Posisi ada di antara data 4 dan 5

Hitung \(Q_1\) dan \(Q_3\) \[ \begin{split} Q_1 = 70 + 0,5 \times (75-70) = 70 + 2,5 = 72,5 \\ Q_3 = 85 + 0,5 \times (90-85) = 85 + 2,5 = 87,5 \end{split} \]

Hitung IQR \[ IQR = Q_3 - Q_1 = 87,5 - 72,5 = 15 \]

Batas Bawah dan atas \[ \begin{split} \text{Batas Bawah} &= Q_1 - 1,5 \times IQR = 72,5 - 1,5 \times 15 = 50 \\ \text{Batas Atas} &= Q_3 + 1,5 \times IQR = 87,5 + 1,5 \times 15 = 110 \end{split} \]

Data dalam rentang maka tidak ada outlier.

Semua cabang tidak memiliki outlier jadi bisa pakai nilai standar deviasi.

  • Standar deviasi cabang A bernilai 7,07
  • Standar deviasi cabang B bernilai 14,14
  • Standar deviasi cabang C bernilai 5,83
  • Standar deviasi cabang A bernilai 7,07

Cabang C memiliki nilai standar deviasi terkecil maka penyebaran data nya kecil yang berarti Cabang C lebih terpusat di sekitar nilai rata-rata dibandingkan dengan cabang lainnya.

Analisis Target Penjualan Minimum

Jika target penjualan minimum adalah 50 juta rupiah, cabang mana saja yang gagal mencapai target di semua datanya?

  • Cabang A: 50, 55, 60, 65, 70
  • Cabang B: 40, 50, 60, 70, 80
  • Cabang C: 30, 30, 35, 40, 45
  • Cabang D: 70, 75, 80, 85, 90

Dilihat dari data yang didapat ada cabang diatas target yaitu cabang A dan cabang D.Maka, Cabang yang gagal mencapai target di semua datanya yaitu cabang C yang bahkan data nya tidak mencapai target semua dan juga cabang B ada 1 data yang masih dibawah target.

Visualisasi dengan Diagram Kotak (Box Plot)

Buatlah diagram kotak (box plot) untuk memvisualisasikan penyebaran data setiap cabang.

Dilihat dari visualisasi membuktikan bahwa ukuran box dari visualisasi itu merupakan seberapa luas penyebaran data 50% bagian tengah data dan juga garisnya adalah nilai minimum dan maximum yang berarti seberapa luas penyebaran data secara keseluruhan tanpa outlier. Seperti yang soal sebelumnya bahwa cabang C adalah penyebaran data nya kecil dan di visualisasi itu pun lebar box nya terkecil dari yang lain.

Hasil hitungan manual untuk kuartil antara perhitungan manual dengan yang ada di visualisasi berbeda karna R menggunakan metode interpolasi berbobot untuk menghitung kuartil secara default (metode Type 7). Ini yang membuat hasilnya berbeda dari metode manual sederhana.

Strategi Peningkatan Penjualan Berdasarkan Data

Jika Anda adalah manajer perusahaan, bagaimana Anda akan menggunakan informasi ini untuk merencanakan strategi peningkatan penjualan?

  • Strategi untuk Cabang A dan D

Kedua cabang ini memilki nilai yang stabil maka untuk strategi nya memfokuskan pada inovasi untuk mempertahankan nilai atau pelanggan biar nilai nya tetep atau lebih baik jika meningkat.

  • Strategi untuk cabang B

Karna cabang B ini penyebaran data nya terlalu luas jadi harus memastikan konsisten dalam strategi pemasaran nya lebih rata dalam penjualan.

  • Strategi untuk Cabang C

Cabang C untuk target penjualan nya di semua data tidak ada yang mencapai target jadi harus ditingkatkan penjualannya dan juga harus mencaritahu apa yang menyebabkan penjualan nya itu rendah dan harus diperbaiki.

LATIHAN 2

Perusahaan XYZ mengelola pengiriman barang ke berbagai wilayah dengan menggunakan berbagai jenis transportasi. Setiap pengiriman melibatkan biaya transportasi, waktu yang dibutuhkan, dan jumlah barang yang dikirim. Berikut adalah data terkait pengiriman barang berdasarkan wilayah dan jenis barang:

Wilayah Jenis Barang Jumlah Barang (unit) Waktu Pengiriman(Jam) Biaya Per-unit(Rp)
Utara Elektronik 200 5 15.000
Selatan Pakaian 150 8 8.000
Timur Makanan 180 6 10.000
Barat Peralatan 120 7 12.000
Tengah Elektronik 250 4 14.000
Utara Pakaian 300 9 8.500
Selatan Makanan 220 7 9.500
Timur Peralatan 140 5 11.000
Barat Elektronik 180 6 14.500
Tengah Pakaian 350 8 7.800
Utara Peralatan 170 4 12.000
Selatan Elektronik 250 6 16.000
Timur Pakaian 190 7 8.200
Barat Makanan 130 5 10.500
Tengah Peralatan 180 5 11.500

Analisis Efisiensi Pengiriman

- Visualisasi 3D

Visualisasikan pengiriman barang berdasarkan jumlah barang, waktu pengiriman, dan biaya per unit dengan menggunakan plot 3D.

- Efesiensi Pengiriman

Efisiensi adalah ukuran bagaimana sumber daya (seperti waktu, tenaga, atau biaya) digunakan untuk mencapai hasil tertentu. Dalam konteks ini, efisiensi pengiriman berarti bagaimana suatu wilayah dapat menggunakan waktu pengiriman dan biaya per unit secara optimal untuk mengirimkan barang.

Jadi, kalau suatu wilayah bisa kirim barang dengan jumlah yang banyak dengan biaya yang kecil dalam waktu yang singkat berarti pengirimannya efisien. sebaliknya. kalau wilayah itu mengirim dalam waktu yang tidak singkat dan biaya nya besar berarti efisien nya rendah.

Dilihat dari data dalam waktunya paling lama itu 9 jam namun untuk biaya nya bukan yang tertinggi. Di pengiriman dalam waktu 8 jam, ada 2 wilayah dan keduannya memiliki biaya yang rendah. Pengiriman dalam waktu 7 jam, ada 3 wilayah dan di 2 wilayah dengan biaya rendah lau wilayah lainnya termasuk tinggi tapi bukan yang tertinggi. Selanjutnya lihat di waktu pengiriman dalam waktu 6 jam, ada 3 wilayah juga semua nya dengan biaya tinggi. Namun, ada 1 wilayah yang biaya nya tertinggi antar pengiriman keseluruhan data dan itu termasuk pada efesien yang terendah ada pada daerah Selatan dengan mengantar barang Elektronik.

Bisa dilihat memakai perhitungan juga untuk menentukan apakah pengirimannya efisien atau tidak.

Mencari Normalized Waktu Pada setiap data \[ \text{Normalized} = \frac{\text{Waktu} - \text{Waktu Minimum}}{\text{Waktu Maximum} - \text{Waktu Minimum}} \]

Mencari Normalized Waktu Pada setiap data \[ \text{Normalized} = \frac{\text{Biaya} - \text{Biaya Minimum}}{\text{Biaya Maximum} - \text{Biaya Minimum}} \]

Mencari Nilai Efesiensi Pada setiap data \[ \text{Effeciency Score} = \text{Normalized Waktu} + \text{Normalized Biaya} \]

Wilayah Jenis Barang Waktu (jam) Biaya (Rp) Waktu Normalisasi Biaya Normalisasi Efisiensi
Selatan Elektronik 6 16.000 0.4 1.000 1.400
Barat Elektronik 6 14.500 0.4 0.817 1.217
Barat Peralatan 7 12.000 0.6 0.512 1.112
Utara Elektronik 5 15.000 0.2 0.878 1.078
Selatan Makanan 7 9.500 0.6 0.207 0.807
Timur Makanan 6 10.000 0.4 0.268 0.668
Tengah Peralatan 5 11.500 0.2 0.451 0.651
Utara Pakaian 9 8.500 1.0 0.085 1.085
Timur Peralatan 5 11.000 0.2 0.390 0.590
Barat Makanan 5 10.500 0.2 0.329 0.529
Timur Pakaian 7 8.200 0.6 0.049 0.649
Selatan Pakaian 8 8.000 0.8 0.024 0.824
Tengah Elektronik 4 14.000 0.0 0.756 0.756
Tengah Pakaian 8 7.800 0.8 0.000 0.800
Utara Peralatan 4 12.000 0.0 0.512 0.512

Nilai Tertinggi di hasil Efesiensi adalah efesiensi terendah atau tidak efesien yaitu Ada pada di wilayah Selatan dengan barang Elektronik. karena Semakin tinggi skor efisiensi, semakin tidak efisien pengiriman tersebut karena waktu yang lama dan biaya yang tinggi.

Rekomendasi Operasional

- Wilayah efesiensi pengiriman yang rendah

Berdasarkan hasil analisis, wilayah mana yang memerlukan perhatian khusus untuk meningkatkan efisiensi pengiriman?

Dari hasil analis diketahui bahwa wilayah dan jenis barang yang tidak efesien dalam pengiriman yaitu wilayah Selatan dengan jenis barang Elektronik karna waktu pengiriman yang cukup lama dan biaya perunit nya yang tinggi.

- Peningkatan Efesiensi Pengiriman

Apa rekomendasi untuk mengurangi biaya dan waktu pengiriman di wilayah tersebut?

  • Rekomendasi untuk waktu pengiriman

Dengan memilih rute pengiriman yang lebih cepat atau lebih langsung, dan menyusun jadwal pengiriman yang lebih efisien dapat mengurangi waktu pengiriman.

  • Rekomendasi untuk Biaya

Bisa dengan Memperbaiki cara mengirim barang seperti memilih kendaraan yang lebih hemat bahan bakar dan mengelola gudang dengan lebih baik supaya biaya operasional bisa ditekan.

Bisa juga menggunakan teknologi sistem otomatis dalam pengelolaan pengiriman bisa sangat membantu. Sistem seperti ini bisa mempercepat proses pengiriman dan mengurangi kesalahan, sehingga biaya operasional bisa lebih rendah dan pengiriman bisa lebih cepat.

Kinerja Berdasarkan Jenis Barang

Analisis kinerja pengiriman berdasarkan jenis barang dan wilayah. Mana yang memiliki waktu pengiriman lebih cepat dan biaya per unit lebih rendah?

- Waktu Pengiriman dan Biaya Pengiriman Berdasarkan Jenis Barang

  • Elektronik:

Waktu pengiriman: 6 jam (Selatan, Barat, Utara, Tengah)

Biaya pengiriman bervariasi antara Rp 14.000 (Tengah) dan Rp 16.000 (Selatan).

Efisiensi: Selatan dan Barat memiliki efisiensi yang lebih rendah jika dibandingkan dengan Tengah dan Utara.

  • Peralatan:

Waktu pengiriman: Bervariasi antara 4 hingga 7 jam (Tengah, Timur, Barat, Utara).

Biaya pengiriman berkisar antara Rp 11.000 hingga Rp 12.000.

Utara menunjukkan efisiensi terbaik (0.512), dengan waktu pengiriman tercepat (4 jam).

  • Makanan:

Waktu pengiriman: Antara 5 hingga 7 jam (Selatan, Timur, Barat).

Biaya pengiriman bervariasi dari Rp 9.500 hingga Rp 10.500.

Timur memiliki waktu pengiriman cukup lama (6 jam), dengan biaya lebih tinggi, namun efisiensinya rendah.

  • Pakaian:

Waktu pengiriman: Terlama, yaitu antara 7 hingga 9 jam.

Biaya pengiriman paling rendah, berkisar antara Rp 7.800 hingga Rp 8.500.

Pakaian menunjukkan efisiensi rendah meskipun biaya rendah, terutama di wilayah Utara .

Kinerja Pengiriman Berdasarkan Wilayah:

  • Selatan:

Wilayah ini menunjukkan kinerja yang lebih rendah dalam hal efisiensi, terutama untuk pengiriman elektronik dan pakaian. Waktu pengiriman yang lama (8 jam) dan biaya yang lebih tinggi menunjukkan perlunya perbaikan di sini.

  • Barat:

Kinerja pengiriman di wilayah Barat cukup baik untuk elektronik, tetapi pengiriman peralatan dan makanan sedikit lebih mahal dan lebih lama dibandingkan wilayah lainnya.

  • Utara:

Utara memiliki kinerja pengiriman terbaik, terutama untuk pengiriman peralatan yang sangat efisien dengan waktu pengiriman tercepat (4 jam) dan biaya pengiriman yang wajar. Namun, pengiriman pakaian di wilayah ini cukup lama (9 jam), meskipun biayanya lebih rendah.

  • Timur:

Timur memiliki waktu pengiriman yang lebih lama untuk barang makanan dan pakaian, serta biaya yang tidak terlalu rendah. Efisiensi pengirimannya juga rendah, menunjukkan ada ruang untuk perbaikan.

  • Tengah:

Tengah memiliki waktu pengiriman yang cepat untuk barang elektronik (4 jam).namun, pengiriman peralatan dan pakaian kurang efisien dibandingkan wilayah lain.

Utara - Peralatan: Waktu pengiriman 4 jam dengan biaya Rp 12.000. Ini adalah waktu pengiriman tercepat, meskipun biaya sedikit lebih tinggi dibandingkan wilayah lain.

LS0tDQp0aXRsZTogIlRVR0FTIFNUQVRJU1RJS0EgREFTQVIgMTEiDQpzdWJ0aXRsZTogIlVrdXJhbiBQZW55ZWJhcmFuIERhdGEiDQphdXRob3I6IA0KICAtICJTeWlmYSBOdXJ1bGZhanJpIFJ1c3RpbiINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAiQ1NTdHlsZS5jc3MiDQotLS0NCg0KPGltZyBzcmM9IlBvdG9rdS5qcGciIGFsdD0iYXdva3dvd2siIGlkPSJsb2dvLXV0YW1hIiBzdHlsZT0id2lkdGg6MjAwcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87Ii8+DQoNCi0tLQ0KDQojIExBVElIQU4gMQ0KDQpTZWJ1YWggcGVydXNhaGFhbiBpbmdpbiBtZW1haGFtaSBrYXJha3RlcmlzdGlrIHBlbnllYmFyYW4gZGF0YSBoYXNpbCBwZW5qdWFsYW4gZGFyaSBlbXBhdCBjYWJhbmcgKEEsIEIsIEMsIGRhbiBEKSBzZWxhbWEgc2F0dSBidWxhbiB0ZXJha2hpci4gRGF0YSBwZW5qdWFsYW4gKGRhbGFtIGp1dGEgcnVwaWFoKSBkYXJpIGtlZW1wYXQgY2FiYW5nIHRlcnNlYnV0IGFkYWxhaCBzZWJhZ2FpDQpiZXJpa3V0Og0KDQotIENhYmFuZyBBOiA1MCwgNTUsIDYwLCA2NSwgNzANCi0gQ2FiYW5nIEI6IDQwLCA1MCwgNjAsIDcwLCA4MA0KLSBDYWJhbmcgQzogMzAsIDMwLCAzNSwgNDAsIDQ1DQotIENhYmFuZyBEOiA3MCwgNzUsIDgwLCA4NSwgOTANCg0KIyMgTWVuZ2hpdHVuZyBTdGF0aXN0aWsgRGVza3JpcHRpZg0KDQpIaXR1bmdsYWggcmF0YS1yYXRhLCBtZWRpYW4sIGRhbiBzdGFuZGFyIGRldmlhc2kgdW50dWsgbWFzaW5nLW1hc2luZyBjYWJhbmcuDQoNClJ1bXVzIE1lYW4gOg0KJCQNClx0ZXh0e01lYW59ID0gXGZyYWN7XHN1bSB4fXtufQ0KJCQNCg0KUnVtdXMgUG9zaXNpIE1lZGlhbiA6DQotIEFwYWJpbGEgXChuXCkgbWVydXBha2FuIGJpbGFuZ2FuIGdhbmppbA0KJCQNClx0ZXh0e01lZGlhbn0gPSBcZnJhY3tuICsgMX17Mn0NCiQkDQoNCi0gQXBhYmlsYSBcKG5cKSBtZXJ1cGFrYW4gYmlsYW5nYW4gZ2VuYXANCiQkDQpcdGV4dHtNZWRpYW59ID0gXGZyYWN7bn17Mn0rMSANCiQkDQpkYW4NCiQkDQpcdGV4dHtNZWRpYW59ID0gXGZyYWN7bn17Mn0NCiQkDQoNClJ1bXVzIFN0YW5kYXIgRGV2aWFzaSA6DQokJA0KU0QgPSBcc3FydCBcZnJhY3tcc3VtICh4X2kgLSBcbXUpXjJ9e259DQokJA0KDQpkaW1hbmEgOg0KDQotICR4X2kkID0gZGF0YQ0KLSAkXG11JCA9IE1lYW4gKFJhdGEtUmF0YSkNCi0gJG4kICAgPSBKdW1sYWggZGF0YQ0KDQojIyMgQ2FiYW5nIEENCg0KLSBNZWFuIA0KJCQNClxiZWdpbntzcGxpdH0NClx0ZXh0e01lYW59ICY9IFxmcmFjezUwICsgNTUgKyA2MCArIDY1ICsgNzB9ezV9IFxcDQomPSBcZnJhY3szMDB9ezV9IFxcDQomPSA2MA0KXGVuZHtzcGxpdH0NCiQkDQoNCi0gTWVkaWFuDQokJA0KXGJlZ2lue3NwbGl0fQ0KXHRleHR7TWVkaWFufSAmPSBcZnJhY3tuICsgMX17Mn0gXFwNCiY9IFxmcmFjezUgKyAxfXsyfSBcXA0KJj0gXGZyYWN7Nn17Mn0gXFwNCiY9IDMgDQpcZW5ke3NwbGl0fQ0KJCQNClBvc2lzaSBhZGEgZGkga2UgdGlnYSB5YW5nIGJlcmFydGkgbWVkaWFuIG55YSB5YWl0dSAqKjYwKioNCg0KLSBTdGFuZGFyIERldmlhc2kNCiQkDQpcYmVnaW57c3BsaXR9DQpTRCAmPSBcc3FydCBcZnJhY3tcc3VtICh4X2kgLSBcbXUpXjJ9e259IFxcDQomPSBcc3FydCBcZnJhY3soNTAgLSA2MCleMiArICg1NSAtIDYwKV4yICsgKDYwIC0gNjApXjIgKyAoNjUgLSA2MCleMiArICg3MCAtIDYwKV4yfXs1fSBcXA0KJj0gXHNxcnQgXGZyYWN7KDEwMCArIDI1ICsgMCArIDI1ICsgMTAwfXs1fSBcXA0KJj0gXHNxcnQgXGZyYWN7MjUwfXs1fSBcXA0KJj0gXHNxcnQgNTAgXFwNCiY9IDcsMDcNClxlbmR7c3BsaXR9DQokJA0KDQojIyMgQ2FiYW5nIEINCg0KLSBNZWFuIA0KJCQNClxiZWdpbntzcGxpdH0NClx0ZXh0e01lYW59ICY9IFxmcmFjezQwICsgNTAgKyA2MCArIDcwICsgODB9ezV9IFxcDQomPSBcZnJhY3szMDB9ezV9IFxcDQomPSA2MA0KXGVuZHtzcGxpdH0NCiQkDQoNCi0gTWVkaWFuDQokJA0KXGJlZ2lue3NwbGl0fQ0KXHRleHR7TWVkaWFufSAmPSBcZnJhY3tuICsgMX17Mn0gXFwNCiY9IFxmcmFjezUgKyAxfXsyfSBcXA0KJj0gXGZyYWN7Nn17Mn0gXFwNCiY9IDMgDQpcZW5ke3NwbGl0fQ0KJCQNClBvc2lzaSBhZGEgZGkga2UgdGlnYSB5YW5nIGJlcmFydGkgbWVkaWFuIG55YSB5YWl0dSAqKjYwKioNCg0KLSBTdGFuZGFyIERldmlhc2kNCiQkDQpcYmVnaW57c3BsaXR9DQpTRCAmPSBcc3FydCBcZnJhY3tcc3VtICh4X2kgLSBcbXUpXjJ9e259IFxcDQomPSBcc3FydCBcZnJhY3soNDAgLSA2MCleMiArICg1MCAtIDYwKV4yICsgKDYwIC0gNjApXjIgKyAoNzAgLSA2MCleMiArICg4MCAtIDYwKV4yfXs1fSBcXA0KJj0gXHNxcnQgXGZyYWN7KDQwMCArIDEwMCArIDAgKyAxMDAgKyA0MDB9ezV9IFxcDQomPSBcc3FydCBcZnJhY3sxLjAwMH17NX0gXFwNCiY9IFxzcXJ0IDIwMCBcXA0KJj0gMTQsMTQNClxlbmR7c3BsaXR9DQokJA0KDQojIyMgQ2FiYW5nIEMNCg0KLSBNZWFuIA0KJCQNClxiZWdpbntzcGxpdH0NClx0ZXh0e01lYW59ICY9IFxmcmFjezMwICsgMzAgKyAzNSArIDQwICsgNDV9ezV9IFxcDQomPSBcZnJhY3sxODB9ezV9IFxcDQomPSAzNg0KXGVuZHtzcGxpdH0NCiQkDQoNCi0gTWVkaWFuDQokJA0KXGJlZ2lue3NwbGl0fQ0KXHRleHR7TWVkaWFufSAmPSBcZnJhY3tuICsgMX17Mn0gXFwNCiY9IFxmcmFjezUgKyAxfXsyfSBcXA0KJj0gXGZyYWN7Nn17Mn0gXFwNCiY9IDMgDQpcZW5ke3NwbGl0fQ0KJCQNClBvc2lzaSBhZGEgZGkga2UgdGlnYSB5YW5nIGJlcmFydGkgbWVkaWFuIG55YSB5YWl0dSAqKjM1KioNCg0KLSBTdGFuZGFyIERldmlhc2kNCiQkDQpcYmVnaW57c3BsaXR9DQpTRCAmPSBcc3FydCBcZnJhY3tcc3VtICh4X2kgLSBcbXUpXjJ9e259IFxcDQomPSBcc3FydCBcZnJhY3soMzAgLSAzNileMiArICgzMCAtIDM2KV4yICsgKDM1IC0gMzYpXjIgKyAoNDAgLSAzNileMiArICg0NSAtIDM2KV4yfXs1fSBcXA0KJj0gXHNxcnQgXGZyYWN7KDM2ICsgMzYgKyAxICsgMTYgKyA4MX17NX0gXFwNCiY9IFxzcXJ0IFxmcmFjezE3MH17NX0gXFwNCiY9IFxzcXJ0IDM0IFxcDQomPSA1LDgzDQpcZW5ke3NwbGl0fQ0KJCQNCg0KIyMjIENhYmFuZyBEDQoNCi0gTWVhbiANCiQkDQpcYmVnaW57c3BsaXR9DQpcdGV4dHtNZWFufSAmPSBcZnJhY3s3MCArIDc1ICsgODAgKyA4NSArIDkwfXs1fSBcXA0KJj0gXGZyYWN7NDAwfXs1fSBcXA0KJj0gODANClxlbmR7c3BsaXR9DQokJA0KDQotIE1lZGlhbg0KJCQNClxiZWdpbntzcGxpdH0NClx0ZXh0e01lZGlhbn0gJj0gXGZyYWN7biArIDF9ezJ9IFxcDQomPSBcZnJhY3s1ICsgMX17Mn0gXFwNCiY9IFxmcmFjezZ9ezJ9IFxcDQomPSAzIA0KXGVuZHtzcGxpdH0NCiQkDQpQb3Npc2kgYWRhIGRpIGtlIHRpZ2EgeWFuZyBiZXJhcnRpIG1lZGlhbiBueWEgeWFpdHUgKio4MCoqDQoNCi0gU3RhbmRhciBEZXZpYXNpDQokJA0KXGJlZ2lue3NwbGl0fQ0KU0QgJj0gXHNxcnQgXGZyYWN7XHN1bSAoeF9pIC0gXG11KV4yfXtufSBcXA0KJj0gXHNxcnQgXGZyYWN7KDcwIC0gODApXjIgKyAoNzUgLSA4MCleMiArICg4MCAtIDgwKV4yICsgKDg1IC0gODApXjIgKyAoOTAgLSA4MCleMn17NX0gXFwNCiY9IFxzcXJ0IFxmcmFjeygxMDAgKyAyNSArIDAgKyAyNSArIDEwMH17NX0gXFwNCiY9IFxzcXJ0IFxmcmFjezI1MH17NX0gXFwNCiY9IFxzcXJ0IDUwIFxcDQomPSA3LDA3DQpcZW5ke3NwbGl0fQ0KJCQNCg0KIyMgSWRlbnRpZmlrYXNpIENhYmFuZyBkZW5nYW4gUGVueWViYXJhbiBEYXRhIFRlcmtlY2lsDQoNCkNhYmFuZyBtYW5hIHlhbmcgbWVtaWxpa2kgcGVueWViYXJhbiBkYXRhIHBhbGluZyBrZWNpbD8gSmVsYXNrYW4gYWxhc2FubnlhLg0KDQpCZXNhciBrZWNpbG55YSBwZW55ZWJhcmFuIGRhdGEgZGFwYXQgZGlsaWhhdCBkYXJpIG5pbGFpIHN0YW5kYXIgZGV2aWFzaSBhcGFiaWxhIERhdGEgZGlzdHJpYnVzaSBub3JtYWwuIG5hbXVuLCBqaWthIGRhdGEgZGlzdHJpYnVzaSB0aWRhayBub3JtYWwgbWFrYSBiaXNhIG1lbWFrYWkgbmlsYWkgSVFSLg0KRGF0YSBkaWF0YXMgbWVydXBha2FuIGRhdGEgZGlzdHJpYnVzaSBub3JtYWwga2FyZW5hIGRhdGEgdGVyc2VidXQgbWVtaWxpa2kgb3V0bGllci4NCipCdWt0aSoNCi0gQ2FiYW5nIEEgDQokJA0KXHRleHR7cG9zaXNpfSBRXzEgPSBcZnJhY3tuICsgMX17NH0gPSBcZnJhY3s1ICsgMX17NH0gPSBcZnJhY3s2fXs0fSA9IDEsNSBcXA0KJCQNClBvc2lzaSBhZGEgZGkgYW50YXJhIGRhdGEgMSBkYW4gMg0KDQokJA0KXHRleHR7cG9zaXNpfSBRXzMgPSBcZnJhY3szKG4gKyAxKX17NH0gPSBcZnJhY3szKDUgKyAxKX17NH0gPSBcZnJhY3sxOH17NH0gPSA0LDUNCiQkDQpQb3Npc2kgYWRhIGRpIGFudGFyYSBkYXRhIDEgZGFuIDINCg0KSGl0dW5nIFwoUV8xXCkgZGFuIFwoUV8zXCkNCiQkDQpcYmVnaW57c3BsaXR9DQpRXzEgPSA1MCArIDAsNSBcdGltZXMgKDU1LTUwKSA9IDUwICsgMiw1ID0gNTIsNSBcXA0KUV8zID0gNjUgKyAwLDUgXHRpbWVzICg3MC02NSkgPSA2NSArIDIsNSA9IDY3LDUNClxlbmR7c3BsaXR9DQokJA0KDQpIaXR1bmcgSVFSDQokJA0KSVFSID0gUV8zIC0gUV8xID0gNjcsNSAtIDUyLDUgPSAxNQ0KJCQNCg0KQmF0YXMgQmF3YWggZGFuIGF0YXMNCiQkDQpcYmVnaW57c3BsaXR9DQpcdGV4dHtCYXRhcyBCYXdhaH0gJj0gUV8xIC0gMSw1IFx0aW1lcyBJUVIgPSA1Miw1IC0gMSw1IFx0aW1lcyAxNSA9IDMwIFxcDQpcdGV4dHtCYXRhcyBBdGFzfSAmPSBRXzMgKyAxLDUgXHRpbWVzIElRUiA9IDY3LDUgKyAxLDUgXHRpbWVzIDE1ID0gOTANClxlbmR7c3BsaXR9DQokJA0KDQpEYXRhIGRhbGFtIHJlbnRhbmcgbWFrYSB0aWRhayBhZGEgb3V0bGllci4NCg0KLSBDYWJhbmcgQg0KJCQNClx0ZXh0e3Bvc2lzaX0gUV8xID0gXGZyYWN7biArIDF9ezR9ID0gXGZyYWN7NSArIDF9ezR9ID0gXGZyYWN7Nn17NH0gPSAxLDUgXFwNCiQkDQpQb3Npc2kgYWRhIGRpIGFudGFyYSBkYXRhIDEgZGFuIDINCg0KJCQNClx0ZXh0e3Bvc2lzaX0gUV8zID0gXGZyYWN7MyhuICsgMSl9ezR9ID0gXGZyYWN7Myg1ICsgMSl9ezR9ID0gXGZyYWN7MTh9ezR9ID0gNCw1DQokJA0KUG9zaXNpIGFkYSBkaSBhbnRhcmEgZGF0YSA0IGRhbiA1DQoNCkhpdHVuZyBcKFFfMVwpIGRhbiBcKFFfM1wpDQokJA0KXGJlZ2lue3NwbGl0fQ0KUV8xID0gNDAgKyAwLDUgXHRpbWVzICg1MC00MCkgPSA0MCArIDUgPSA0NSBcXA0KUV8zID0gNzAgKyAwLDUgXHRpbWVzICg4MC03MCkgPSA3MCArIDUgPSA3NQ0KXGVuZHtzcGxpdH0NCiQkDQoNCkhpdHVuZyBJUVINCiQkDQpJUVIgPSBRXzMgLSBRXzEgPSA3NSAtIDQ1ID0gMzANCiQkDQoNCkJhdGFzIEJhd2FoIGRhbiBhdGFzDQokJA0KXGJlZ2lue3NwbGl0fQ0KXHRleHR7QmF0YXMgQmF3YWh9ICY9IFFfMSAtIDEsNSBcdGltZXMgSVFSID0gNDUgLSAxLDUgXHRpbWVzIDMwID0gMCBcXA0KXHRleHR7QmF0YXMgQXRhc30gJj0gUV8zICsgMSw1IFx0aW1lcyBJUVIgPSA3NSArIDEsNSBcdGltZXMgMzAgPSAxMjANClxlbmR7c3BsaXR9DQokJA0KDQpEYXRhIGRhbGFtIHJlbnRhbmcgbWFrYSB0aWRhayBhZGEgb3V0bGllci4NCg0KLSBDYWJhbmcgQw0KJCQNClx0ZXh0e3Bvc2lzaX0gUV8xID0gXGZyYWN7biArIDF9ezR9ID0gXGZyYWN7NSArIDF9ezR9ID0gXGZyYWN7Nn17NH0gPSAxLDUgXFwNCiQkDQpQb3Npc2kgYWRhIGRpIGFudGFyYSBkYXRhIDEgZGFuIDINCg0KJCQNClx0ZXh0e3Bvc2lzaX0gUV8zID0gXGZyYWN7MyhuICsgMSl9ezR9ID0gXGZyYWN7Myg1ICsgMSl9ezR9ID0gXGZyYWN7MTh9ezR9ID0gNCw1DQokJA0KUG9zaXNpIGFkYSBkaSBhbnRhcmEgZGF0YSA0IGRhbiA1DQoNCkhpdHVuZyBcKFFfMVwpIGRhbiBcKFFfM1wpDQokJA0KXGJlZ2lue3NwbGl0fQ0KUV8xID0gMzAgKyAwLDUgXHRpbWVzICgzMC0zMCkgPSAzMCArIDAgPSAzMCBcXA0KUV8zID0gNDAgKyAwLDUgXHRpbWVzICg0NS00MCkgPSA0MCArIDIsNSA9IDQyLDUNClxlbmR7c3BsaXR9DQokJA0KDQpIaXR1bmcgSVFSDQokJA0KSVFSID0gUV8zIC0gUV8xID0gNDIsNSAtIDMwID0gMTIsNQ0KJCQNCg0KQmF0YXMgQmF3YWggZGFuIGF0YXMNCiQkDQpcYmVnaW57c3BsaXR9DQpcdGV4dHtCYXRhcyBCYXdhaH0gJj0gUV8xIC0gMSw1IFx0aW1lcyBJUVIgPSAzMCAtIDEsNSBcdGltZXMgMTIsNSA9IDExLDI1IFxcDQpcdGV4dHtCYXRhcyBBdGFzfSAmPSBRXzMgKyAxLDUgXHRpbWVzIElRUiA9IDQyLDUgKyAxLDUgXHRpbWVzIDEyLDUgPSA2MSwyNQ0KXGVuZHtzcGxpdH0NCiQkDQoNCkRhdGEgZGFsYW0gcmVudGFuZyBtYWthIHRpZGFrIGFkYSBvdXRsaWVyLg0KDQotIENhYmFuZyBEDQokJA0KXHRleHR7cG9zaXNpfSBRXzEgPSBcZnJhY3tuICsgMX17NH0gPSBcZnJhY3s1ICsgMX17NH0gPSBcZnJhY3s2fXs0fSA9IDEsNSBcXA0KJCQNClBvc2lzaSBhZGEgZGkgYW50YXJhIGRhdGEgMSBkYW4gMg0KDQokJA0KXHRleHR7cG9zaXNpfSBRXzMgPSBcZnJhY3szKG4gKyAxKX17NH0gPSBcZnJhY3szKDUgKyAxKX17NH0gPSBcZnJhY3sxOH17NH0gPSA0LDUNCiQkDQpQb3Npc2kgYWRhIGRpIGFudGFyYSBkYXRhIDQgZGFuIDUNCg0KSGl0dW5nIFwoUV8xXCkgZGFuIFwoUV8zXCkNCiQkDQpcYmVnaW57c3BsaXR9DQpRXzEgPSA3MCArIDAsNSBcdGltZXMgKDc1LTcwKSA9IDcwICsgMiw1ID0gNzIsNSBcXA0KUV8zID0gODUgKyAwLDUgXHRpbWVzICg5MC04NSkgPSA4NSArIDIsNSA9IDg3LDUNClxlbmR7c3BsaXR9DQokJA0KDQpIaXR1bmcgSVFSDQokJA0KSVFSID0gUV8zIC0gUV8xID0gODcsNSAtIDcyLDUgPSAxNQ0KJCQNCg0KQmF0YXMgQmF3YWggZGFuIGF0YXMNCiQkDQpcYmVnaW57c3BsaXR9DQpcdGV4dHtCYXRhcyBCYXdhaH0gJj0gUV8xIC0gMSw1IFx0aW1lcyBJUVIgPSA3Miw1IC0gMSw1IFx0aW1lcyAxNSA9IDUwIFxcDQpcdGV4dHtCYXRhcyBBdGFzfSAmPSBRXzMgKyAxLDUgXHRpbWVzIElRUiA9IDg3LDUgKyAxLDUgXHRpbWVzIDE1ID0gMTEwDQpcZW5ke3NwbGl0fQ0KJCQNCg0KRGF0YSBkYWxhbSByZW50YW5nIG1ha2EgdGlkYWsgYWRhIG91dGxpZXIuDQoNClNlbXVhIGNhYmFuZyB0aWRhayBtZW1pbGlraSBvdXRsaWVyIGphZGkgYmlzYSBwYWthaSBuaWxhaSBzdGFuZGFyIGRldmlhc2kuDQoNCi0gU3RhbmRhciBkZXZpYXNpIGNhYmFuZyBBIGJlcm5pbGFpIDcsMDcNCi0gU3RhbmRhciBkZXZpYXNpIGNhYmFuZyBCIGJlcm5pbGFpIDE0LDE0DQotIFN0YW5kYXIgZGV2aWFzaSBjYWJhbmcgQyBiZXJuaWxhaSA1LDgzDQotIFN0YW5kYXIgZGV2aWFzaSBjYWJhbmcgQSBiZXJuaWxhaSA3LDA3DQoNCkNhYmFuZyBDIG1lbWlsaWtpIG5pbGFpIHN0YW5kYXIgZGV2aWFzaSB0ZXJrZWNpbCBtYWthIHBlbnllYmFyYW4gZGF0YSBueWEga2VjaWwgeWFuZyBiZXJhcnRpIENhYmFuZyBDIGxlYmloIHRlcnB1c2F0IGRpIHNla2l0YXIgbmlsYWkgcmF0YS1yYXRhIGRpYmFuZGluZ2thbiBkZW5nYW4gY2FiYW5nIGxhaW5ueWEuDQoNCiMjIEFuYWxpc2lzIFRhcmdldCBQZW5qdWFsYW4gTWluaW11bQ0KDQpKaWthIHRhcmdldCBwZW5qdWFsYW4gbWluaW11bSBhZGFsYWggNTAganV0YSBydXBpYWgsIGNhYmFuZyBtYW5hIHNhamENCnlhbmcgZ2FnYWwgbWVuY2FwYWkgdGFyZ2V0IGRpIHNlbXVhIGRhdGFueWE/DQoNCi0gQ2FiYW5nIEE6IDUwLCA1NSwgNjAsIDY1LCA3MA0KLSBDYWJhbmcgQjogNDAsIDUwLCA2MCwgNzAsIDgwDQotIENhYmFuZyBDOiAzMCwgMzAsIDM1LCA0MCwgNDUNCi0gQ2FiYW5nIEQ6IDcwLCA3NSwgODAsIDg1LCA5MA0KDQpEaWxpaGF0IGRhcmkgZGF0YSB5YW5nIGRpZGFwYXQgYWRhIGNhYmFuZyBkaWF0YXMgdGFyZ2V0IHlhaXR1IGNhYmFuZyBBIGRhbiBjYWJhbmcgRC5NYWthLCBDYWJhbmcgeWFuZyBnYWdhbCBtZW5jYXBhaSB0YXJnZXQgZGkgc2VtdWEgZGF0YW55YSB5YWl0dSBjYWJhbmcgQyB5YW5nIGJhaGthbiBkYXRhIG55YSB0aWRhayBtZW5jYXBhaSB0YXJnZXQgc2VtdWEgZGFuIGp1Z2EgY2FiYW5nIEIgYWRhIDEgZGF0YSB5YW5nIG1hc2loIGRpYmF3YWggdGFyZ2V0LiANCg0KIyMgVmlzdWFsaXNhc2kgZGVuZ2FuIERpYWdyYW0gS290YWsgKEJveCBQbG90KQ0KDQpCdWF0bGFoIGRpYWdyYW0ga290YWsgKGJveCBwbG90KSB1bnR1ayBtZW12aXN1YWxpc2FzaWthbiBwZW55ZWJhcmFuDQpkYXRhIHNldGlhcCBjYWJhbmcuDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCmlmICghcmVxdWlyZU5hbWVzcGFjZSgicGxvdGx5IiwgcXVpZXRseSA9IFRSVUUpKSB7DQogIGluc3RhbGwucGFja2FnZXMoInBsb3RseSIpDQp9DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW55dXN1biBkYXRhDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIENhYmFuZyA9IHJlcChjKCJDYWJhbmcgQSIsICJDYWJhbmcgQiIsICJDYWJhbmcgQyIsICJDYWJhbmcgRCIpLCBlYWNoID0gNSksDQogIE5pbGFpID0gYyg1MCwgNTUsIDYwLCA2NSwgNzAsIA0KICAgICAgICAgICAgNDAsIDUwLCA2MCwgNzAsIDgwLCANCiAgICAgICAgICAgIDMwLCAzMCwgMzUsIDQwLCA0NSwgDQogICAgICAgICAgICA3MCwgNzUsIDgwLCA4NSwgOTApDQopDQoNCiMgTWVuZW50dWthbiB3YXJuYSBzZXN1YWkga2VpbmdpbmFuIEFuZGENCndhcm5hIDwtIGMoIkNhYmFuZyBBIiA9ICJza3libHVlIiwgDQogICAgICAgICAgICJDYWJhbmcgQiIgPSAib3JjaGlkIiwgDQogICAgICAgICAgICJDYWJhbmcgQyIgPSAicGluayIsIA0KICAgICAgICAgICAiQ2FiYW5nIEQiID0gInB1cnBsZSIpDQoNCiMgTWVtYnVhdCBib3hwbG90IGRlbmdhbiBwbG90bHkgZGFuIHdhcm5hIHlhbmcgZGFwYXQgZGl1YmFoDQpwbG90X2x5KGRhdGEsIHkgPSB+TmlsYWksIGNvbG9yID0gfkNhYmFuZywgdHlwZSA9ICJib3giLCBib3htZWFuID0gVFJVRSwgDQogICAgICAgIGNvbG9ycyA9IHdhcm5hKSAlPiUNCiAgbGF5b3V0KHRpdGxlID0gIkJveHBsb3QgUGVueWViYXJhbiBEYXRhIHBlciBDYWJhbmciLA0KICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkNhYmFuZyIpLA0KICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIk5pbGFpIikpDQoNCg0KYGBgDQoNCkRpbGloYXQgZGFyaSB2aXN1YWxpc2FzaSBtZW1idWt0aWthbiBiYWh3YSB1a3VyYW4gYm94IGRhcmkgdmlzdWFsaXNhc2kgaXR1IG1lcnVwYWthbiBzZWJlcmFwYSBsdWFzIHBlbnllYmFyYW4gZGF0YSA1MCUgYmFnaWFuIHRlbmdhaCBkYXRhIGRhbiBqdWdhIGdhcmlzbnlhIGFkYWxhaCBuaWxhaSBtaW5pbXVtIGRhbiBtYXhpbXVtIHlhbmcgYmVyYXJ0aSBzZWJlcmFwYSBsdWFzIHBlbnllYmFyYW4gZGF0YSBzZWNhcmEga2VzZWx1cnVoYW4gdGFucGEgb3V0bGllci4gU2VwZXJ0aSB5YW5nIHNvYWwgc2ViZWx1bW55YSBiYWh3YSBjYWJhbmcgQyBhZGFsYWggcGVueWViYXJhbiBkYXRhIG55YSBrZWNpbCBkYW4gZGkgdmlzdWFsaXNhc2kgaXR1IHB1biBsZWJhciBib3ggbnlhIHRlcmtlY2lsIGRhcmkgeWFuZyBsYWluLiANCg0KSGFzaWwgaGl0dW5nYW4gbWFudWFsIHVudHVrIGt1YXJ0aWwgYW50YXJhIHBlcmhpdHVuZ2FuIG1hbnVhbCBkZW5nYW4geWFuZyBhZGEgZGkgdmlzdWFsaXNhc2kgYmVyYmVkYSBrYXJuYSBSIG1lbmdndW5ha2FuIG1ldG9kZSBpbnRlcnBvbGFzaSBiZXJib2JvdCB1bnR1ayBtZW5naGl0dW5nIGt1YXJ0aWwgc2VjYXJhIGRlZmF1bHQgKG1ldG9kZSBUeXBlIDcpLiBJbmkgeWFuZyBtZW1idWF0IGhhc2lsbnlhIGJlcmJlZGEgZGFyaSBtZXRvZGUgbWFudWFsIHNlZGVyaGFuYS4NCg0KIyMgU3RyYXRlZ2kgUGVuaW5na2F0YW4gUGVuanVhbGFuIEJlcmRhc2Fya2FuIERhdGENCg0KSmlrYSBBbmRhIGFkYWxhaCBtYW5hamVyIHBlcnVzYWhhYW4sIGJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVuZ2d1bmFrYW4gaW5mb3JtYXNpIGluaSB1bnR1ayBtZXJlbmNhbmFrYW4gc3RyYXRlZ2kgcGVuaW5na2F0YW4gcGVuanVhbGFuPw0KDQotIFN0cmF0ZWdpIHVudHVrIENhYmFuZyBBIGRhbiBEDQoNCktlZHVhIGNhYmFuZyBpbmkgbWVtaWxraSBuaWxhaSB5YW5nIHN0YWJpbCBtYWthIHVudHVrIHN0cmF0ZWdpIG55YSBtZW1mb2t1c2thbiBwYWRhIGlub3Zhc2kgdW50dWsgbWVtcGVydGFoYW5rYW4gbmlsYWkgYXRhdSBwZWxhbmdnYW4gYmlhciBuaWxhaSBueWEgdGV0ZXAgYXRhdSBsZWJpaCBiYWlrIGppa2EgbWVuaW5na2F0Lg0KDQotIFN0cmF0ZWdpIHVudHVrIGNhYmFuZyBCDQoNCkthcm5hIGNhYmFuZyBCIGluaSBwZW55ZWJhcmFuIGRhdGEgbnlhIHRlcmxhbHUgbHVhcyBqYWRpIGhhcnVzIG1lbWFzdGlrYW4ga29uc2lzdGVuIGRhbGFtIHN0cmF0ZWdpIHBlbWFzYXJhbiBueWEgbGViaWggcmF0YSBkYWxhbSBwZW5qdWFsYW4uIA0KDQotIFN0cmF0ZWdpIHVudHVrIENhYmFuZyBDDQoNCkNhYmFuZyBDIHVudHVrIHRhcmdldCBwZW5qdWFsYW4gbnlhIGRpIHNlbXVhIGRhdGEgdGlkYWsgYWRhIHlhbmcgbWVuY2FwYWkgIHRhcmdldCBqYWRpIGhhcnVzIGRpdGluZ2thdGthbiBwZW5qdWFsYW5ueWEgZGFuIGp1Z2EgaGFydXMgbWVuY2FyaXRhaHUgYXBhIHlhbmcgbWVueWViYWJrYW4gcGVuanVhbGFuIG55YSBpdHUgcmVuZGFoIGRhbiBoYXJ1cyBkaXBlcmJhaWtpLiAgDQoNCiMgTEFUSUhBTiAyDQoNClBlcnVzYWhhYW4gWFlaIG1lbmdlbG9sYSBwZW5naXJpbWFuIGJhcmFuZyBrZSBiZXJiYWdhaSB3aWxheWFoIGRlbmdhbg0KbWVuZ2d1bmFrYW4gYmVyYmFnYWkgamVuaXMgdHJhbnNwb3J0YXNpLiBTZXRpYXAgcGVuZ2lyaW1hbiBtZWxpYmF0a2FuIGJpYXlhDQp0cmFuc3BvcnRhc2ksIHdha3R1IHlhbmcgZGlidXR1aGthbiwgZGFuIGp1bWxhaCBiYXJhbmcgeWFuZyBkaWtpcmltLiBCZXJpa3V0DQphZGFsYWggZGF0YSB0ZXJrYWl0IHBlbmdpcmltYW4gYmFyYW5nIGJlcmRhc2Fya2FuIHdpbGF5YWggZGFuIGplbmlzIGJhcmFuZzoNCg0KfFdpbGF5YWh8SmVuaXMgQmFyYW5nfEp1bWxhaCBCYXJhbmcgKHVuaXQpfFdha3R1IFBlbmdpcmltYW4oSmFtKXxCaWF5YSBQZXItdW5pdChScCl8DQp8Oi0tLS0tOnw6LS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tOnwNCnwgVXRhcmEgfCBFbGVrdHJvbmlrIHwgMjAwICAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICB8IDE1LjAwMCAgICAgICAgICAgfA0KfFNlbGF0YW58IFBha2FpYW4gICAgfCAxNTAgICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgIHwgOC4wMDAgICAgICAgICAgICB8DQp8IFRpbXVyIHwgTWFrYW5hbiAgICB8IDE4MCAgICAgICAgICAgICAgICB8IDYgICAgICAgICAgICAgICAgICAgfCAxMC4wMDAgICAgICAgICAgIHwNCnwgQmFyYXQgfCBQZXJhbGF0YW4gIHwgMTIwICAgICAgICAgICAgICAgIHwgNyAgICAgICAgICAgICAgICAgICB8IDEyLjAwMCAgICAgICAgICAgfA0KfCBUZW5nYWh8IEVsZWt0cm9uaWsgfCAyNTAgICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgIHwgMTQuMDAwICAgICAgICAgICB8DQp8IFV0YXJhIHwgUGFrYWlhbiAgICB8IDMwMCAgICAgICAgICAgICAgICB8IDkgICAgICAgICAgICAgICAgICAgfCA4LjUwMCAgICAgICAgICAgIHwNCnxTZWxhdGFufCBNYWthbmFuICAgIHwgMjIwICAgICAgICAgICAgICAgIHwgNyAgICAgICAgICAgICAgICAgICB8IDkuNTAwICAgICAgICAgICAgfA0KfCBUaW11ciB8IFBlcmFsYXRhbiAgfCAxNDAgICAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICAgIHwgMTEuMDAwICAgICAgICAgICB8DQp8IEJhcmF0IHwgRWxla3Ryb25payB8IDE4MCAgICAgICAgICAgICAgICB8IDYgICAgICAgICAgICAgICAgICAgfCAxNC41MDAgICAgICAgICAgIHwNCnwgVGVuZ2FofCBQYWthaWFuICAgIHwgMzUwICAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICB8IDcuODAwICAgICAgICAgICAgfA0KfCBVdGFyYSB8IFBlcmFsYXRhbiAgfCAxNzAgICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgIHwgMTIuMDAwICAgICAgICAgICB8IA0KfFNlbGF0YW58IEVsZWt0cm9uaWsgfCAyNTAgICAgICAgICAgICAgICAgfCA2ICAgICAgICAgICAgICAgICAgIHwgMTYuMDAwICAgICAgICAgICB8DQp8IFRpbXVyIHwgUGFrYWlhbiAgICB8IDE5MCAgICAgICAgICAgICAgICB8IDcgICAgICAgICAgICAgICAgICAgfCA4LjIwMCAgICAgICAgICAgIHwNCnwgQmFyYXQgfCBNYWthbmFuICAgIHwgMTMwICAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICB8IDEwLjUwMCAgICAgICAgICAgfA0KfCBUZW5nYWh8IFBlcmFsYXRhbiAgfCAxODAgICAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICAgIHwgMTEuNTAwICAgICAgICAgICB8DQoNCiMjIEFuYWxpc2lzIEVmaXNpZW5zaSBQZW5naXJpbWFuDQoNCioqLSBWaXN1YWxpc2FzaSAzRCoqDQoNClZpc3VhbGlzYXNpa2FuIHBlbmdpcmltYW4gYmFyYW5nIGJlcmRhc2Fya2FuIGp1bWxhaCBiYXJhbmcsIHdha3R1DQpwZW5naXJpbWFuLCBkYW4gYmlheWEgcGVyIHVuaXQgZGVuZ2FuIG1lbmdndW5ha2FuIHBsb3QgM0QuDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCiMgSW5zdGFsbCBsaWJyYXJ5IGppa2EgYmVsdW0gdGVyc2VkaWENCmlmICghcmVxdWlyZSgicGxvdGx5IikpIGluc3RhbGwucGFja2FnZXMoInBsb3RseSIpDQoNCiMgTG9hZCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhIHBlbmdpcmltYW4gYmFyYW5nDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIFdpbGF5YWggPSBjKCJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIsIA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiLA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiKSwNCiAgSmVuaXNfQmFyYW5nID0gYygiRWxla3Ryb25payIsICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLA0KICAgICAgICAgICAgICAgICAgICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsDQogICAgICAgICAgICAgICAgICAgIlBlcmFsYXRhbiIsICJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLCAiTWFrYW5hbiIsICJQZXJhbGF0YW4iKSwNCiAgSnVtbGFoX0JhcmFuZyA9IGMoMjAwLCAxNTAsIDE4MCwgMTIwLCAyNTAsIDMwMCwgMjIwLCAxNDAsIDE4MCwgMzUwLCAxNzAsIDI1MCwgMTkwLCAxMzAsIDE4MCksDQogIFdha3R1X1BlbmdpcmltYW4gPSBjKDUsIDgsIDYsIDcsIDQsIDksIDcsIDUsIDYsIDgsIDQsIDYsIDcsIDUsIDUpLA0KICBCaWF5YV9QZXJfVW5pdCA9IGMoMTUwMDAsIDgwMDAsIDEwMDAwLCAxMjAwMCwgMTQwMDAsIDg1MDAsIDk1MDAsIDExMDAwLCAxNDUwMCwgNzgwMCwgMTIwMDAsIDE2MDAwLCA4MjAwLCAxMDUwMCwgMTE1MDApDQopDQoNCiMgTWVtYnVhdCBwbG90IDNEDQpwbG90IDwtIHBsb3RfbHkoDQogIGRhdGEgPSBkYXRhLA0KICB4ID0gfkp1bWxhaF9CYXJhbmcsDQogIHkgPSB+V2FrdHVfUGVuZ2lyaW1hbiwNCiAgeiA9IH5CaWF5YV9QZXJfVW5pdCwNCiAgY29sb3IgPSB+V2lsYXlhaCwgICAgICAgICAgICMgV2FybmEgYmVyZGFzYXJrYW4gd2lsYXlhaA0KICB0eXBlID0gInNjYXR0ZXIzZCIsDQogIG1vZGUgPSAibWFya2VycyIsDQogIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDUpDQopDQoNCiMgTWVtYmVyaSBsYWJlbCBwYWRhIHN1bWJ1DQpwbG90IDwtIHBsb3QgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJWaXN1YWxpc2FzaSBQZW5naXJpbWFuIEJhcmFuZyAoM0QpIiwNCiAgICBzY2VuZSA9IGxpc3QoDQogICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiSnVtbGFoIEJhcmFuZyAodW5pdCkiKSwNCiAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJXYWt0dSBQZW5naXJpbWFuIChKYW0pIiksDQogICAgICB6YXhpcyA9IGxpc3QodGl0bGUgPSAiQmlheWEgUGVyIFVuaXQgKFJwKSIpDQogICAgKQ0KICApDQoNCiMgTWVuYW1waWxrYW4gcGxvdA0KcGxvdA0KDQpgYGANCg0KKiotIEVmZXNpZW5zaSBQZW5naXJpbWFuKioNCg0KRWZpc2llbnNpIGFkYWxhaCB1a3VyYW4gYmFnYWltYW5hIHN1bWJlciBkYXlhIChzZXBlcnRpIHdha3R1LCB0ZW5hZ2EsIGF0YXUgYmlheWEpIGRpZ3VuYWthbiB1bnR1ayBtZW5jYXBhaSBoYXNpbCB0ZXJ0ZW50dS4gRGFsYW0ga29udGVrcyBpbmksIGVmaXNpZW5zaSBwZW5naXJpbWFuIGJlcmFydGkgYmFnYWltYW5hIHN1YXR1IHdpbGF5YWggZGFwYXQgbWVuZ2d1bmFrYW4gd2FrdHUgcGVuZ2lyaW1hbiBkYW4gYmlheWEgcGVyIHVuaXQgc2VjYXJhIG9wdGltYWwgdW50dWsgbWVuZ2lyaW1rYW4gYmFyYW5nLg0KDQpKYWRpLCBrYWxhdSBzdWF0dSB3aWxheWFoIGJpc2Ega2lyaW0gYmFyYW5nIGRlbmdhbiBqdW1sYWggeWFuZyBiYW55YWsgZGVuZ2FuIGJpYXlhIHlhbmcga2VjaWwgZGFsYW0gd2FrdHUgeWFuZyBzaW5na2F0IGJlcmFydGkgcGVuZ2lyaW1hbm55YSBlZmlzaWVuLiBzZWJhbGlrbnlhLiBrYWxhdSB3aWxheWFoIGl0dSBtZW5naXJpbSBkYWxhbSB3YWt0dSAgeWFuZyB0aWRhayBzaW5na2F0IGRhbiBiaWF5YSBueWEgYmVzYXIgYmVyYXJ0aSBlZmlzaWVuIG55YSByZW5kYWguDQoNCkRpbGloYXQgZGFyaSBkYXRhIGRhbGFtIHdha3R1bnlhIHBhbGluZyBsYW1hIGl0dSA5IGphbSBuYW11biB1bnR1ayBiaWF5YSBueWEgYnVrYW4geWFuZyB0ZXJ0aW5nZ2kuIERpIHBlbmdpcmltYW4gZGFsYW0gd2FrdHUgOCBqYW0sIGFkYSAyIHdpbGF5YWggZGFuIGtlZHVhbm55YSBtZW1pbGlraSBiaWF5YSB5YW5nIHJlbmRhaC4gUGVuZ2lyaW1hbiBkYWxhbSB3YWt0dSA3IGphbSwgYWRhIDMgd2lsYXlhaCBkYW4gZGkgMiB3aWxheWFoIGRlbmdhbiBiaWF5YSByZW5kYWggbGF1IHdpbGF5YWggbGFpbm55YSB0ZXJtYXN1ayB0aW5nZ2kgdGFwaSBidWthbiB5YW5nIHRlcnRpbmdnaS4gU2VsYW5qdXRueWEgbGloYXQgZGkgd2FrdHUgcGVuZ2lyaW1hbiBkYWxhbSB3YWt0dSA2IGphbSwgYWRhIDMgd2lsYXlhaCBqdWdhIHNlbXVhIG55YSBkZW5nYW4gYmlheWEgdGluZ2dpLiBOYW11biwgYWRhIDEgd2lsYXlhaCB5YW5nIGJpYXlhIG55YSB0ZXJ0aW5nZ2kgYW50YXIgcGVuZ2lyaW1hbiBrZXNlbHVydWhhbiBkYXRhIGRhbiBpdHUgdGVybWFzdWsgcGFkYSAqKmVmZXNpZW4geWFuZyB0ZXJlbmRhaCoqIGFkYSBwYWRhIGRhZXJhaCAqKlNlbGF0YW4qKiBkZW5nYW4gbWVuZ2FudGFyIGJhcmFuZyAqKkVsZWt0cm9uaWsqKi4NCg0KQmlzYSBkaWxpaGF0IG1lbWFrYWkgcGVyaGl0dW5nYW4ganVnYSB1bnR1ayBtZW5lbnR1a2FuIGFwYWthaCBwZW5naXJpbWFubnlhIGVmaXNpZW4gYXRhdSB0aWRhay4NCg0KTWVuY2FyaSBOb3JtYWxpemVkIFdha3R1IFBhZGEgc2V0aWFwIGRhdGEgDQokJCANClx0ZXh0e05vcm1hbGl6ZWR9ICA9IFxmcmFje1x0ZXh0e1dha3R1fSAtIFx0ZXh0e1dha3R1IE1pbmltdW19fXtcdGV4dHtXYWt0dSBNYXhpbXVtfSAtIFx0ZXh0e1dha3R1IE1pbmltdW19fQ0KJCQNCg0KTWVuY2FyaSBOb3JtYWxpemVkIFdha3R1IFBhZGEgc2V0aWFwIGRhdGEgDQokJCANClx0ZXh0e05vcm1hbGl6ZWR9ICA9IFxmcmFje1x0ZXh0e0JpYXlhfSAtIFx0ZXh0e0JpYXlhIE1pbmltdW19fXtcdGV4dHtCaWF5YSBNYXhpbXVtfSAtIFx0ZXh0e0JpYXlhIE1pbmltdW19fQ0KJCQNCg0KTWVuY2FyaSBOaWxhaSBFZmVzaWVuc2kgUGFkYSBzZXRpYXAgZGF0YSANCiQkDQpcdGV4dHtFZmZlY2llbmN5IFNjb3JlfSA9IFx0ZXh0e05vcm1hbGl6ZWQgV2FrdHV9ICsgXHRleHR7Tm9ybWFsaXplZCBCaWF5YX0NCiQkDQoNCg0KfCAqKldpbGF5YWgqKiB8ICoqSmVuaXMgQmFyYW5nKiogfCAqKldha3R1IChqYW0pKiogfCAqKkJpYXlhIChScCkqKiB8ICoqV2FrdHUgTm9ybWFsaXNhc2kqKiB8ICoqQmlheWEgTm9ybWFsaXNhc2kqKiB8ICoqRWZpc2llbnNpKiogfA0KfDotLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tOnwNCnwgU2VsYXRhbiAgICAgfCBFbGVrdHJvbmlrICAgICAgIHwgNiAgICAgICAgICAgICAgIHwgMTYuMDAwICAgICAgICAgfCAwLjQgICAgICAgICAgICAgICAgICAgfCAxLjAwMCAgICAgICAgICAgICAgICAgfCAxLjQwMCAgICAgICAgICB8DQp8IEJhcmF0ICAgICAgIHwgRWxla3Ryb25payAgICAgICB8IDYgICAgICAgICAgICAgICB8IDE0LjUwMCAgICAgICAgIHwgMC40ICAgICAgICAgICAgICAgICAgIHwgMC44MTcgICAgICAgICAgICAgICAgIHwgMS4yMTcgICAgICAgICAgfA0KfCBCYXJhdCAgICAgICB8IFBlcmFsYXRhbiAgICAgICAgfCA3ICAgICAgICAgICAgICAgfCAxMi4wMDAgICAgICAgICB8IDAuNiAgICAgICAgICAgICAgICAgICB8IDAuNTEyICAgICAgICAgICAgICAgICB8IDEuMTEyICAgICAgICAgIHwNCnwgVXRhcmEgICAgICAgfCBFbGVrdHJvbmlrICAgICAgIHwgNSAgICAgICAgICAgICAgIHwgMTUuMDAwICAgICAgICAgfCAwLjIgICAgICAgICAgICAgICAgICAgfCAwLjg3OCAgICAgICAgICAgICAgICAgfCAxLjA3OCAgICAgICAgICB8DQp8IFNlbGF0YW4gICAgIHwgTWFrYW5hbiAgICAgICAgICB8IDcgICAgICAgICAgICAgICB8IDkuNTAwICAgICAgICAgIHwgMC42ICAgICAgICAgICAgICAgICAgIHwgMC4yMDcgICAgICAgICAgICAgICAgIHwgMC44MDcgICAgICAgICAgfA0KfCBUaW11ciAgICAgICB8IE1ha2FuYW4gICAgICAgICAgfCA2ICAgICAgICAgICAgICAgfCAxMC4wMDAgICAgICAgICB8IDAuNCAgICAgICAgICAgICAgICAgICB8IDAuMjY4ICAgICAgICAgICAgICAgICB8IDAuNjY4ICAgICAgICAgIHwNCnwgVGVuZ2FoICAgICAgfCBQZXJhbGF0YW4gICAgICAgIHwgNSAgICAgICAgICAgICAgIHwgMTEuNTAwICAgICAgICAgfCAwLjIgICAgICAgICAgICAgICAgICAgfCAwLjQ1MSAgICAgICAgICAgICAgICAgfCAwLjY1MSAgICAgICAgICB8DQp8IFV0YXJhICAgICAgIHwgUGFrYWlhbiAgICAgICAgICB8IDkgICAgICAgICAgICAgICB8IDguNTAwICAgICAgICAgIHwgMS4wICAgICAgICAgICAgICAgICAgIHwgMC4wODUgICAgICAgICAgICAgICAgIHwgMS4wODUgICAgICAgICAgfA0KfCBUaW11ciAgICAgICB8IFBlcmFsYXRhbiAgICAgICAgfCA1ICAgICAgICAgICAgICAgfCAxMS4wMDAgICAgICAgICB8IDAuMiAgICAgICAgICAgICAgICAgICB8IDAuMzkwICAgICAgICAgICAgICAgICB8IDAuNTkwICAgICAgICAgIHwNCnwgQmFyYXQgICAgICAgfCBNYWthbmFuICAgICAgICAgIHwgNSAgICAgICAgICAgICAgIHwgMTAuNTAwICAgICAgICAgfCAwLjIgICAgICAgICAgICAgICAgICAgfCAwLjMyOSAgICAgICAgICAgICAgICAgfCAwLjUyOSAgICAgICAgICB8DQp8IFRpbXVyICAgICAgIHwgUGFrYWlhbiAgICAgICAgICB8IDcgICAgICAgICAgICAgICB8IDguMjAwICAgICAgICAgIHwgMC42ICAgICAgICAgICAgICAgICAgIHwgMC4wNDkgICAgICAgICAgICAgICAgIHwgMC42NDkgICAgICAgICAgfA0KfCBTZWxhdGFuICAgICB8IFBha2FpYW4gICAgICAgICAgfCA4ICAgICAgICAgICAgICAgfCA4LjAwMCAgICAgICAgICB8IDAuOCAgICAgICAgICAgICAgICAgICB8IDAuMDI0ICAgICAgICAgICAgICAgICB8IDAuODI0ICAgICAgICAgIHwNCnwgVGVuZ2FoICAgICAgfCBFbGVrdHJvbmlrICAgICAgIHwgNCAgICAgICAgICAgICAgIHwgMTQuMDAwICAgICAgICAgfCAwLjAgICAgICAgICAgICAgICAgICAgfCAwLjc1NiAgICAgICAgICAgICAgICAgfCAwLjc1NiAgICAgICAgICB8DQp8IFRlbmdhaCAgICAgIHwgUGFrYWlhbiAgICAgICAgICB8IDggICAgICAgICAgICAgICB8IDcuODAwICAgICAgICAgIHwgMC44ICAgICAgICAgICAgICAgICAgIHwgMC4wMDAgICAgICAgICAgICAgICAgIHwgMC44MDAgICAgICAgICAgfA0KfCBVdGFyYSAgICAgICB8IFBlcmFsYXRhbiAgICAgICAgfCA0ICAgICAgICAgICAgICAgfCAxMi4wMDAgICAgICAgICB8IDAuMCAgICAgICAgICAgICAgICAgICB8IDAuNTEyICAgICAgICAgICAgICAgICB8IDAuNTEyICAgICAgICAgIHwNCg0KTmlsYWkgVGVydGluZ2dpIGRpIGhhc2lsIEVmZXNpZW5zaSBhZGFsYWggKiplZmVzaWVuc2kgdGVyZW5kYWgqKiBhdGF1IHRpZGFrIGVmZXNpZW4geWFpdHUgQWRhIHBhZGEgZGkgd2lsYXlhaCAqKlNlbGF0YW4qKiBkZW5nYW4gYmFyYW5nICoqRWxla3Ryb25payoqLiBrYXJlbmEgU2VtYWtpbiB0aW5nZ2kgc2tvciBlZmlzaWVuc2ksIHNlbWFraW4gdGlkYWsgZWZpc2llbiBwZW5naXJpbWFuIHRlcnNlYnV0IGthcmVuYSB3YWt0dSB5YW5nIGxhbWEgZGFuIGJpYXlhIHlhbmcgdGluZ2dpLg0KDQoNCiMjIFJla29tZW5kYXNpIE9wZXJhc2lvbmFsDQoNCioqLSBXaWxheWFoIGVmZXNpZW5zaSBwZW5naXJpbWFuIHlhbmcgcmVuZGFoKioNCg0KQmVyZGFzYXJrYW4gaGFzaWwgYW5hbGlzaXMsIHdpbGF5YWggbWFuYSB5YW5nIG1lbWVybHVrYW4gcGVyaGF0aWFuIGtodXN1cyB1bnR1ayBtZW5pbmdrYXRrYW4gZWZpc2llbnNpIHBlbmdpcmltYW4/DQoNCkRhcmkgaGFzaWwgYW5hbGlzIGRpa2V0YWh1aSBiYWh3YSB3aWxheWFoIGRhbiBqZW5pcyBiYXJhbmcgeWFuZyB0aWRhayBlZmVzaWVuIGRhbGFtIHBlbmdpcmltYW4geWFpdHUgd2lsYXlhaCAqKlNlbGF0YW4qKiBkZW5nYW4gamVuaXMgYmFyYW5nICoqRWxla3Ryb25payoqIGthcm5hIHdha3R1IHBlbmdpcmltYW4geWFuZyBjdWt1cCBsYW1hIGRhbiBiaWF5YSBwZXJ1bml0IG55YSB5YW5nIHRpbmdnaS4gDQoNCioqLSBQZW5pbmdrYXRhbiBFZmVzaWVuc2kgUGVuZ2lyaW1hbioqDQoNCkFwYSByZWtvbWVuZGFzaSB1bnR1ayBtZW5ndXJhbmdpIGJpYXlhIGRhbiB3YWt0dSBwZW5naXJpbWFuIGRpIHdpbGF5YWggdGVyc2VidXQ/DQoNCi0gUmVrb21lbmRhc2kgdW50dWsgd2FrdHUgcGVuZ2lyaW1hbiANCg0KRGVuZ2FuIG1lbWlsaWggcnV0ZSBwZW5naXJpbWFuIHlhbmcgbGViaWggY2VwYXQgYXRhdSBsZWJpaCBsYW5nc3VuZywgZGFuIG1lbnl1c3VuIGphZHdhbCBwZW5naXJpbWFuIHlhbmcgbGViaWggZWZpc2llbiBkYXBhdCBtZW5ndXJhbmdpIHdha3R1IHBlbmdpcmltYW4uDQoNCi0gUmVrb21lbmRhc2kgdW50dWsgQmlheWEgDQoNCkJpc2EgZGVuZ2FuIE1lbXBlcmJhaWtpIGNhcmEgbWVuZ2lyaW0gYmFyYW5nIHNlcGVydGkgbWVtaWxpaCBrZW5kYXJhYW4geWFuZyBsZWJpaCBoZW1hdCBiYWhhbiBiYWthciBkYW4gbWVuZ2Vsb2xhIGd1ZGFuZyBkZW5nYW4gbGViaWggYmFpayBzdXBheWEgYmlheWEgb3BlcmFzaW9uYWwgYmlzYSBkaXRla2FuLg0KDQoNCkJpc2EganVnYSBtZW5nZ3VuYWthbiB0ZWtub2xvZ2kgc2lzdGVtIG90b21hdGlzIGRhbGFtIHBlbmdlbG9sYWFuIHBlbmdpcmltYW4gYmlzYSBzYW5nYXQgbWVtYmFudHUuIFNpc3RlbSBzZXBlcnRpIGluaSBiaXNhIG1lbXBlcmNlcGF0IHByb3NlcyBwZW5naXJpbWFuIGRhbiBtZW5ndXJhbmdpIGtlc2FsYWhhbiwgc2VoaW5nZ2EgYmlheWEgb3BlcmFzaW9uYWwgYmlzYSBsZWJpaCByZW5kYWggZGFuIHBlbmdpcmltYW4gYmlzYSBsZWJpaCBjZXBhdC4NCg0KDQojIyBLaW5lcmphIEJlcmRhc2Fya2FuIEplbmlzIEJhcmFuZw0KDQpBbmFsaXNpcyBraW5lcmphIHBlbmdpcmltYW4gYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nIGRhbiB3aWxheWFoLiBNYW5hIHlhbmcgbWVtaWxpa2kgd2FrdHUgcGVuZ2lyaW1hbiBsZWJpaCBjZXBhdCBkYW4gYmlheWEgcGVyIHVuaXQgbGViaWggcmVuZGFoPw0KDQoqKi0gIFdha3R1IFBlbmdpcmltYW4gZGFuIEJpYXlhIFBlbmdpcmltYW4gQmVyZGFzYXJrYW4gSmVuaXMgQmFyYW5nKioNCg0KLSBFbGVrdHJvbmlrOg0KDQpXYWt0dSBwZW5naXJpbWFuOiA2IGphbSAoU2VsYXRhbiwgQmFyYXQsIFV0YXJhLCBUZW5nYWgpDQoNCkJpYXlhIHBlbmdpcmltYW4gYmVydmFyaWFzaSBhbnRhcmEgUnAgMTQuMDAwIChUZW5nYWgpIGRhbiBScCAxNi4wMDAgKFNlbGF0YW4pLg0KDQpFZmlzaWVuc2k6IFNlbGF0YW4gZGFuIEJhcmF0IG1lbWlsaWtpIGVmaXNpZW5zaSB5YW5nIGxlYmloIHJlbmRhaCBqaWthIGRpYmFuZGluZ2thbiBkZW5nYW4gVGVuZ2FoIGRhbiBVdGFyYS4NCg0KLSBQZXJhbGF0YW46DQoNCldha3R1IHBlbmdpcmltYW46IEJlcnZhcmlhc2kgYW50YXJhIDQgaGluZ2dhIDcgamFtIChUZW5nYWgsIFRpbXVyLCBCYXJhdCwgVXRhcmEpLg0KDQpCaWF5YSBwZW5naXJpbWFuIGJlcmtpc2FyIGFudGFyYSBScCAxMS4wMDAgaGluZ2dhIFJwIDEyLjAwMC4NCg0KVXRhcmEgbWVudW5qdWtrYW4gZWZpc2llbnNpIHRlcmJhaWsgKDAuNTEyKSwgZGVuZ2FuIHdha3R1IHBlbmdpcmltYW4gdGVyY2VwYXQgKDQgamFtKS4NCg0KLSBNYWthbmFuOg0KDQpXYWt0dSBwZW5naXJpbWFuOiBBbnRhcmEgNSBoaW5nZ2EgNyBqYW0gKFNlbGF0YW4sIFRpbXVyLCBCYXJhdCkuDQoNCkJpYXlhIHBlbmdpcmltYW4gYmVydmFyaWFzaSBkYXJpIFJwIDkuNTAwIGhpbmdnYSBScCAxMC41MDAuDQoNClRpbXVyIG1lbWlsaWtpIHdha3R1IHBlbmdpcmltYW4gY3VrdXAgbGFtYSAoNiBqYW0pLCBkZW5nYW4gYmlheWEgbGViaWggdGluZ2dpLCBuYW11biBlZmlzaWVuc2lueWEgcmVuZGFoLg0KDQotIFBha2FpYW46DQoNCldha3R1IHBlbmdpcmltYW46IFRlcmxhbWEsIHlhaXR1IGFudGFyYSA3IGhpbmdnYSA5IGphbS4NCg0KQmlheWEgcGVuZ2lyaW1hbiBwYWxpbmcgcmVuZGFoLCBiZXJraXNhciBhbnRhcmEgUnAgNy44MDAgaGluZ2dhIFJwIDguNTAwLg0KDQpQYWthaWFuIG1lbnVuanVra2FuIGVmaXNpZW5zaSByZW5kYWggbWVza2lwdW4gYmlheWEgcmVuZGFoLCB0ZXJ1dGFtYSBkaSB3aWxheWFoIFV0YXJhIC4NCg0KKipLaW5lcmphIFBlbmdpcmltYW4gQmVyZGFzYXJrYW4gV2lsYXlhaDoqKg0KDQotIFNlbGF0YW46DQoNCldpbGF5YWggaW5pIG1lbnVuanVra2FuIGtpbmVyamEgeWFuZyBsZWJpaCByZW5kYWggZGFsYW0gaGFsIGVmaXNpZW5zaSwgdGVydXRhbWEgdW50dWsgcGVuZ2lyaW1hbiBlbGVrdHJvbmlrIGRhbiBwYWthaWFuLiBXYWt0dSBwZW5naXJpbWFuIHlhbmcgbGFtYSAoOCBqYW0pIGRhbiBiaWF5YSB5YW5nIGxlYmloIHRpbmdnaSBtZW51bmp1a2thbiBwZXJsdW55YSBwZXJiYWlrYW4gZGkgc2luaS4NCg0KLSBCYXJhdDoNCg0KS2luZXJqYSBwZW5naXJpbWFuIGRpIHdpbGF5YWggQmFyYXQgY3VrdXAgYmFpayB1bnR1ayBlbGVrdHJvbmlrLCB0ZXRhcGkgcGVuZ2lyaW1hbiBwZXJhbGF0YW4gZGFuIG1ha2FuYW4gc2VkaWtpdCBsZWJpaCBtYWhhbCBkYW4gbGViaWggbGFtYSBkaWJhbmRpbmdrYW4gd2lsYXlhaCBsYWlubnlhLg0KDQotIFV0YXJhOg0KDQpVdGFyYSBtZW1pbGlraSBraW5lcmphIHBlbmdpcmltYW4gdGVyYmFpaywgdGVydXRhbWEgdW50dWsgcGVuZ2lyaW1hbiBwZXJhbGF0YW4geWFuZyBzYW5nYXQgZWZpc2llbiBkZW5nYW4gd2FrdHUgcGVuZ2lyaW1hbiB0ZXJjZXBhdCAoNCBqYW0pIGRhbiBiaWF5YSBwZW5naXJpbWFuIHlhbmcgd2FqYXIuDQpOYW11biwgcGVuZ2lyaW1hbiBwYWthaWFuIGRpIHdpbGF5YWggaW5pIGN1a3VwIGxhbWEgKDkgamFtKSwgbWVza2lwdW4gYmlheWFueWEgbGViaWggcmVuZGFoLg0KDQotIFRpbXVyOg0KDQpUaW11ciBtZW1pbGlraSB3YWt0dSBwZW5naXJpbWFuIHlhbmcgbGViaWggbGFtYSB1bnR1ayBiYXJhbmcgbWFrYW5hbiBkYW4gcGFrYWlhbiwgc2VydGEgYmlheWEgeWFuZyB0aWRhayB0ZXJsYWx1IHJlbmRhaC4gRWZpc2llbnNpIHBlbmdpcmltYW5ueWEganVnYSByZW5kYWgsIG1lbnVuanVra2FuIGFkYSBydWFuZyB1bnR1ayBwZXJiYWlrYW4uDQoNCi0gVGVuZ2FoOg0KDQpUZW5nYWggbWVtaWxpa2kgd2FrdHUgcGVuZ2lyaW1hbiB5YW5nIGNlcGF0IHVudHVrIGJhcmFuZyBlbGVrdHJvbmlrICg0IGphbSkubmFtdW4sIHBlbmdpcmltYW4gcGVyYWxhdGFuIGRhbiBwYWthaWFuIGt1cmFuZyBlZmlzaWVuIGRpYmFuZGluZ2thbiB3aWxheWFoIGxhaW4uDQoNCioqVXRhcmEgLSBQZXJhbGF0YW46IFdha3R1IHBlbmdpcmltYW4gNCBqYW0gZGVuZ2FuIGJpYXlhIFJwIDEyLjAwMC4gSW5pIGFkYWxhaCB3YWt0dSBwZW5naXJpbWFuIHRlcmNlcGF0LCBtZXNraXB1biBiaWF5YSBzZWRpa2l0IGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gd2lsYXlhaCBsYWluLioqDQo=