Ukuran Pemusatan Data

Mean, Median, Modus

Foto Kelompok

Praktikum 1

Studi Kasus: Analisis Nilai Siswa

Pada praktikum 1, saya melakukan analisis data nilai siswa untuk memahami ukuran pemusatan data, yaitu mean, median, dan modus. Data yang digunakan dalam analisis ini adalah nilai yang diperoleh oleh siswa beserta frekuensi atau banyaknya siswa yang mendapatkan nilai tersebut. Dengan menggunakan data tersebut, saya bertujuan untuk mengidentifikasi nilai rata-rata, posisi nilai tengah, dan nilai yang paling sering muncul. Dengan rincian data sebagai berikut.

Tabel Data Kelompok Nilai Siswa

Tabel Data Kelompok untuk Mean, Median, dan Modus
Nilai Frekuensi
74 - 78 2
79 - 83 9
84 - 88 16
89 - 93 10
94 - 98 3

Mean (Rata-rata)

Mean adalah ukuran pemusatan data yang diperoleh dengan menjumlahkan semua nilai dalam suatu kumpulan data, lalu membaginya dengan jumlah data yang ada tersebut. Mean menggambarkan posisi rata-rata dari data secara keseluruhan.

Rumus untuk menghitung mean adalah sebagai berikut:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \]

dimana:

  1. \(fi\) = Frekuensi
  2. \(xi\) = Nilai Tengah

Berikut langkah-langkah untuk menghitung mean pada data kelompok:

1. Mencari nilai tengah

Rumus untuk mencari nilai tengah adalah sebagai berikut: \[ \text{Nilai Tengah} (xi) = \dfrac{\text{Tepi bawah kelas} + \text{Tepi atas kelas}}{2} \]

Nilai tengah (\(xi\)) dihitung untuk tiap kelompok:

\[ \begin{split} \text{Nilai Tengah} &= \frac{74 + 78}{2} = 76 \\ \text{Nilai Tengah} &= \frac{79 + 83}{2} = 81 \\ \text{Nilai Tengah} &= \frac{84 + 88}{2} = 86 \\ \text{Nilai Tengah} &= \frac{89 + 93}{2} = 91 \\ \text{Nilai Tengah} &= \frac{94 + 98}{2} = 96 \end{split} \]

2. Mengalikan frekuensi dengan niai tengah

\[ \begin{split} fi \cdot xi&= 2 \cdot 76&= 152 \\ fi \cdot xi&= 9 \cdot 81&= 729 \\ fi \cdot xi&= 16 \cdot 86&= 1.376 \\ fi \cdot xi&= 10 \cdot 91&= 910 \\ fi \cdot xi&= 3 \cdot 96&= 288 \end{split} \]

Hasil perkalian nilai tengah setiap kelas dan frekuensinya dapat dilihat pada tabel berikut.

Nilai Frekuensi \((fi)\) Nilai Tengah \((xi)\) \((fi.xi)\)
74 - 78 2 76 152
79 - 83 9 81 729
84 - 88 16 86 1.376
89 - 93 10 91 910
94 - 98 3 96 288
JUMLAH 40 JUMLAH 3.455

Sehingga,mean data kelompok dapat diperoleh melalui perhitungan dibawah:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \] \[ \bar{x} = \frac{3.455}{40}= 86.38 \] Jadi, mean dari nilai siswa diatas adalah 86.38

Visualisasi Boxplot Data Mean

Median (Nilai Tengah)

Median adalah nilai tengah dari suatu kumpulan data yang telah diurutkan. Namun, untuk data kelompok, median tidak hanya bergantung pada urutan nilai seperti pada data individu, melainkan juga melibatkan frekuensi kumulatif dan interval kelas.

Rumus untuk menghitung median adalah sebagai berikut:

\[ \text{Median} = Q2 = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas
  2. \(n\) = Jumlah seluruh frekuensi
  3. \(fk\) = Jumlah seluruh frekuensi sebelum kelas
  4. \(fi\) = Frekuensi
  5. p = Panjang kelas interval

Berikut langkah-langkah untuk menghitung mean pada data kelompok:

1. Mencari tepi bawah kelas dan Mencari frekuensi komulatif kurang dari kelas median \(fk\)

Jumlah data yang diberikan pada tabel adalah 40. Sehingga letak Median (Q2)berada pada data ke: Q2 = ½ × 40 = 20 (Letak median berada di data ke-20). Sebelum menentukan nilai mediannya, kita tentukan frekuensi kumulatif kurang dari dan letak kelas di mana terdapat data median.

Nilai Frekuensi \((fi)\) \(fk\)
74 - 78 2 2
79 - 83 9 11
84 - 88 16 27
89 - 93 10 37
94 - 98 3 40

Berdasarkan data pada tabel di atas, dapat diperoleh informasi seperti berikut.

  • Tepi bawah kelas median (Tb) = 84 – 0.5 = 83.5
  • Panjang kelas (p) = 5
  • Frekuensi komulatif kurang dari kelas median (\(fk\)) = 11
  • Frekuensi kelas median (\(fi\)) = 16
  • Jumlah seluruh frekuensi (\(n\)) = 40

2. Menghitung nilai median data kelompok

\[ \text{Median} = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \] \[ \text{Median} = 83.5 + \left( \frac{\frac{1}{2}40 - 11}{16} \right) \cdot 5 \] \[ \text{Median} = 83.5 + \left( \frac{20 - 11}{16} \right) \cdot 5 \] \[ \text{Median} = 83.5 + \left( \frac {9}{16} \right) \cdot 5 \] \[ \text{Median} = 83.5 + 2.81 = 86.31 \]

Jadi, median dari nilai siswa di atas adalah 86.31

Visualisasi Boxplot Data Median

Modus (Frekuensi Tertinggi)

Modus adalah nilai yang paling sering muncul dalam data. Modus digunakan untuk mengetahui nilai yang paling dominan atau paling sering terjadi dalam suatu kumpulan data. Modus bisa ditemukan dalam data kuantitatif maupun kategorikal.

Rumus untuk menghitung modus adalah sebagai berikut:

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas modus
  2. d1 = Selisih frekuensi kelas modus dengan frekuensi sebelum kelas modus
  3. d2 = Selisih frekuensi kelas modus dengan frekuensi setelah kelas modus
  4. p = Panjang kelas interval

Dari data pada tabel diketahui modus ada pada interval 84 – 88, sehingga

  • Tb = 84 - 0.5 = 83.5
  • d1 = 16 - 9 = 7
  • d2 = 16 - 10 = 6
  • p = 5

Maka nilai modus dari data tersebut adalah :

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \] \[ \text{Modus} = Mo = 83.5 + \left( \frac{7}{7 + 6} \right) \cdot 5 \] \[ \text{Modus} = Mo = 83.5 + \left( \frac{7}{13} \right) \cdot 5 \] \[ \text{Modus} = 83.5 + 2.69 = 86.19 \]

Jadi, modus dari nilai siswa di atas adalah 86.19

Visualisasi Boxplot Data Modus

Praktikum 2

Bisnis

Studi Kasus: Analisis Harga Handbody

Pada studi kasus ini, data yang digunakan adalah harga handbody, yang dianalisis untuk menghitung ukuran pemusatan data seperti mean, median, dan modus guna menggambarkan distribusi harga handbody secara lebih jelas. Dengan rincian data sebagai berikut.

Tabel Data Kelompok Bisnis

Tabel Data Kelompok untuk Mean, Median, dan Modus
Harga_Handbody Frekuensi
50.000 - 54.000 5
55.000 - 59.000 10
60.000 - 64.000 15
65.000 - 69.000 12
70.000 - 74.000 8

MEAN

Rumus untuk menghitung mean adalah sebagai berikut:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \]

dimana:

  1. \(fi\) = Frekuensi
  2. \(xi\) = Nilai Tengah

Berikut langkah-langkah untuk menghitung mean pada data kelompok:

1. Mencari nilai tengah

Rumus untuk mencari nilai tengah adalah sebagai berikut: \[ \text{Nilai Tengah} (xi) = \dfrac{\text{Tepi bawah kelas} + \text{Tepi atas kelas}}{2} \] Nilai tengah (\(xi\)) dihitung untuk tiap kelompok:

\[ \begin{split} \text{Nilai Tengah} &= \frac{50.000 + 54.000}{2} = 52.000 \\ \text{Nilai Tengah} &= \frac{55.000 + 59.000}{2} = 57.000 \\ \text{Nilai Tengah} &= \frac{60.000 + 64.000}{2} = 62.000 \\ \text{Nilai Tengah} &= \frac{65.000 + 69.000}{2} = 67.000 \\ \text{Nilai Tengah} &= \frac{70.000 + 74.000}{2} = 72.000 \end{split} \]

2. Mengalikan frekuensi dengan niai tengah

\[ \begin{split} fi \cdot xi&= 5 \cdot 52.000&= 260.000 \\ fi \cdot xi&= 10 \cdot 57.000&= 570.000 \\ fi \cdot xi&= 15 \cdot 62.000&= 930.000 \\ fi \cdot xi&= 12 \cdot 67.000&= 804.000 \\ fi \cdot xi&= 8 \cdot 72.000&= 576.000 \end{split} \] Hasil perkalian nilai tengah setiap kelas dan frekuensinya dapat dilihat pada tabel berikut.

Harga Handbody Frekuensi \((fi)\) Nilai Tengah \((xi)\) \((fi.xi)\)
50.000 - 54.000 5 52.000 260.000
55.000 - 59.000 10 57.000 570.000
60.000 - 64.000 15 62.000 930.000
65.000 - 69.000 12 67.000 804.000
70.000 - 74.000 8 72.000 576.000
JUMLAH 50 JUMLAH 3.140.000

Sehingga,mean data kelompok dapat diperoleh melalui perhitungan dibawah:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \] \[ \bar{x} = \frac{3.140.000}{50}= 62.800 \] Jadi, mean dari harga handbody diatas adalah 62.800

MEDIAN

Rumus untuk menghitung median adalah sebagai berikut:

\[ \text{Median} = Q2 = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas
  2. \(n\) = Jumlah seluruh frekuensi
  3. \(fk\) = Jumlah seluruh frekuensi sebelum kelas
  4. \(fi\) = Frekuensi
  5. p = Panjang kelas interval

Berikut langkah-langkah untuk menghitung median pada data kelompok:

1. Mencari tepi bawah kelas dan Mencari frekuensi komulatif kurang dari kelas median \(fk\)

Jumlah data yang diberikan pada tabel adalah 50. Sehingga letak Median (Q2)berada pada data ke: Q2 = ½ × 50 = 25 (Letak median berada di data ke-25). Sebelum menentukan nilai mediannya, kita tentukan frekuensi kumulatif kurang dari dan letak kelas di mana terdapat data median.

Harga Handbody Frekuensi \((fi)\) \(fk\)
50.000 - 54.000 5 5
55.000 - 59.000 10 15
60.000 - 64.000 15 30
65.000 - 69.000 12 42
70.000 - 74.000 8 50

Berdasarkan data pada tabel di atas, dapat diperoleh informasi seperti berikut.

  • Tepi bawah kelas median (Tb) = 60.000 – 0.5 = 59.999.5
  • Panjang kelas (p) = 5
  • Frekuensi komulatif kurang dari kelas median (\(fk\)) = 15
  • Frekuensi kelas median (\(fi\)) = 15
  • Jumlah seluruh frekuensi (\(n\)) = 50

Sehingga, median data kelompok dapat diperoleh melalui perhitungan dibawah:

\[ \text{Median} = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \] \[ \text{Median} = 59.999.5 + \left( \frac{\frac{1}{2}50 - 15}{15} \right) \cdot 5 \] \[ \text{Median} = 59.999.5 + \left( \frac{25 - 15}{15} \right) \cdot 5 \] \[ \text{Median} = 59.999.5 + \left( \frac {10}{15} \right) \cdot 5 \] \[ \text{Median} = 59.999.5 + 3.33 = 60.002.83 \]

Jadi, median dari harga handbody diatas adalah 60.002.83

MODUS

Rumus untuk menghitung modus adalah sebagai berikut:

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas modus
  2. d1 = Selisih frekuensi kelas modus dengan frekuensi sebelum kelas modus
  3. d2 = Selisih frekuensi kelas modus dengan frekuensi setelah kelas modus
  4. p = Panjang kelas interval

Dari data pada tabel diketahui modus ada pada interval 60.0000 – 64.000, sehingga

  • Tb = 60.0000 - 0.5 = 59.999.5
  • d1 = 15 - 10 = 5
  • d2 = 15 - 12 = 3
  • p = 5

Maka nilai modus dari data tersebut adalah :

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \] \[ \text{Modus} = Mo = 59.999.5 + \left( \frac{5}{5 + 3} \right) \cdot 5 \] \[ \text{Modus} = Mo = 59.999.5 + \left( \frac{5}{8} \right) \cdot 5 \] \[ \text{Modus} = 59.999.5 + 3.125 = 60.002.625 \]

Jadi, modus dari harga handbody diatas adalah 60.002.625

Kesehatan

Studi Kasus: Analisis Usia Pasien Rumah Sakit

Pada studi kasus ini, data yang digunakan adalah usia pasien, yang dianalisis untuk menghitung ukuran pemusatan data seperti mean, median, dan modus guna menggambarkan distribusi usia pasien secara lebih jelas. Dengan rincian data sebagai berikut.

Tabel Data Kelompok Kesehatan

Tabel Data Kelompok untuk Mean, Median, dan Modus
Usia_Pasien Frekuensi
5 - 15 10
16 - 26 8
27 - 37 15
38 - 48 2
49 - 59 5

MEAN

Rumus untuk menghitung mean adalah sebagai berikut:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \]

dimana:

  1. \(fi\) = Frekuensi
  2. \(xi\) = Nilai Tengah

Berikut langkah-langkah untuk menghitung mean pada data kelompok:

1. Mencari nilai tengah

Rumus untuk mencari nilai tengah adalah sebagai berikut: \[ \text{Nilai Tengah} (xi) = \dfrac{\text{Tepi bawah kelas} + \text{Tepi atas kelas}}{2} \]

Nilai tengah (\(xi\)) dihitung untuk tiap kelompok:

\[ \begin{split} \text{Nilai Tengah} &= \frac{5 + 15}{2} = 10 \\ \text{Nilai Tengah} &= \frac{16 + 26}{2} = 21 \\ \text{Nilai Tengah} &= \frac{27 + 37}{2} = 32 \\ \text{Nilai Tengah} &= \frac{38 + 48}{2} = 43 \\ \text{Nilai Tengah} &= \frac{49 + 59}{2} = 54 \end{split} \]

2. Mengalikan frekuensi dengan niai tengah

\[ \begin{split} fi \cdot xi&= 10 \cdot 10&= 100 \\ fi \cdot xi&= 8 \cdot 21&= 168 \\ fi \cdot xi&= 15 \cdot 32&= 480 \\ fi \cdot xi&= 2 \cdot 43&= 86 \\ fi \cdot xi&= 5 \cdot 54&= 270 \end{split} \]

Hasil perkalian nilai tengah setiap kelas dan frekuensinya dapat dilihat pada tabel berikut.

Usia Pasien Frekuensi \((fi)\) Nilai Tengah \((xi)\) \((fi.xi)\)
5 - 15 10 10 100
16 - 26 8 21 168
27 - 37 15 32 480
38 - 48 2 43 86
49 - 59 5 54 270
JUMLAH 40 JUMLAH 1.104

Sehingga,mean data kelompok dapat diperoleh melalui perhitungan dibawah:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \] \[ \bar{x} = \frac{1.104}{40}= 27.6 \] Jadi, mean dari usia pasien rumah sakit diatas adalah 27.6

MEDIAN

Rumus untuk menghitung median adalah sebagai berikut:

\[ \text{Median} = Q2 = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas
  2. \(n\) = Jumlah seluruh frekuensi
  3. \(fk\) = Jumlah seluruh frekuensi sebelum kelas
  4. \(fi\) = Frekuensi
  5. p = Panjang kelas interval

Berikut langkah-langkah untuk menghitung median pada data kelompok:

1. Mencari tepi bawah kelas dan Mencari frekuensi komulatif kurang dari kelas median \(fk\)

Jumlah data yang diberikan pada tabel adalah 40. Sehingga letak Median (Q2)berada pada data ke: Q2 = ½ × 40 = 20 (Letak median berada di data ke-20). Sebelum menentukan nilai mediannya, kita tentukan frekuensi kumulatif kurang dari dan letak kelas di mana terdapat data median.

Usia Pasien Frekuensi \((fi)\) \(fk\)
5 - 15 10 10
16 - 26 8 18
27 - 37 15 33
38 - 48 2 35
49 - 59 5 40

Berdasarkan data pada tabel di atas, dapat diperoleh informasi seperti berikut.

  • Tepi bawah kelas median (Tb) = 27 – 0.5 = 26.5
  • Panjang kelas (p) = 11
  • Frekuensi komulatif kurang dari kelas median (\(fk\)) = 18
  • Frekuensi kelas median (\(fi\)) = 15
  • Jumlah seluruh frekuensi (\(n\)) = 40

Sehingga, median data kelompok dapat diperoleh melalui perhitungan dibawah:

\[ \text{Median} = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \] \[ \text{Median} = 26.5 + \left( \frac{\frac{1}{2}40 - 18}{15} \right) \cdot 11 \] \[ \text{Median} = 26.5 + \left( \frac{20 - 18}{15} \right) \cdot 11 \] \[ \text{Median} = 26.5 + \left( \frac {2}{15} \right) \cdot 11 \] \[ \text{Median} = 26.5 + 1.46 = 27.96 \]

Jadi, median dari usia pasien rumah sakit diatas adalah 27.96

MODUS

Rumus untuk menghitung modus adalah sebagai berikut:

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas modus
  2. d1 = Selisih frekuensi kelas modus dengan frekuensi sebelum kelas modus
  3. d2 = Selisih frekuensi kelas modus dengan frekuensi setelah kelas modus
  4. p = Panjang kelas interval

Dari data pada tabel diketahui modus ada pada interval 27 – 37, sehingga

  • Tb = 27 - 0,5 = 26.5
  • d1 = 15 - 8 = 7
  • d2 = 15 - 2 = 13
  • p = 11

Maka nilai modus dari data tersebut adalah :

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \] \[ \text{Modus} = Mo = 26.5 + \left( \frac{7}{7 + 13} \right) \cdot 11 \] \[ \text{Modus} = Mo = 26.5 + \left( \frac{7}{20} \right) \cdot 11 \] \[ \text{Modus} = 26.5 + 3.85 = 30.35 \]

Jadi, modus dari usia pasien rumah sakit diatas adalah 30.35

Pendidikan

Studi Kasus: Analisis Nilai Ujian Mahasiswa

Pada studi kasus ini, data yang digunakan adalah nilai ujian mahasiswa, yang dianalisis untuk menghitung ukuran pemusatan data seperti mean, median, dan modus guna menggambarkan distribusi nilai mahasiswa secara lebih jelas. Dengan rincian data sebagai berikut.

Tabel Data Kelompok Pendidikan

Tabel Data Kelompok untuk Mean, Median, dan Modus
Nilai_Ujian Frekuensi
76 - 80 6
81 - 85 7
86 - 90 8
91 - 95 4
96 - 100 5

MEAN

Rumus untuk menghitung mean adalah sebagai berikut:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \]

dimana:

  1. \(fi\) = Frekuensi
  2. \(xi\) = Nilai Tengah

Berikut langkah-langkah untuk menghitung mean pada data kelompok:

1. Mencari nilai tengah

Rumus untuk mencari nilai tengah adalah sebagai berikut: \[ \text{Nilai Tengah} (xi) = \dfrac{\text{Tepi bawah kelas} + \text{Tepi atas kelas}}{2} \]

Nilai tengah (\(xi\)) dihitung untuk tiap kelompok:

\[ \begin{split} \text{Nilai Tengah} &= \frac{76 + 80}{2} = 78 \\ \text{Nilai Tengah} &= \frac{81 + 85}{2} = 83 \\ \text{Nilai Tengah} &= \frac{86 + 90}{2} = 88 \\ \text{Nilai Tengah} &= \frac{91 + 95}{2} = 93 \\ \text{Nilai Tengah} &= \frac{96 + 100}{2} = 98 \end{split} \]

2. Mengalikan frekuensi dengan niai tengah

\[ \begin{split} fi \cdot xi&= 6 \cdot 78&= 468 \\ fi \cdot xi&= 7 \cdot 83&= 581 \\ fi \cdot xi&= 8 \cdot 88&= 704 \\ fi \cdot xi&= 4 \cdot 93&= 372 \\ fi \cdot xi&= 5 \cdot 98&= 490 \end{split} \]

Hasil perkalian nilai tengah setiap kelas dan frekuensinya dapat dilihat pada tabel berikut.

Nilai Ujian Frekuensi \((fi)\) Nilai Tengah \((xi)\) \((fi.xi)\)
76 - 80 6 78 468
81 - 85 7 83 581
86 - 90 8 88 704
91 - 95 4 93 372
96 - 100 5 98 490
JUMLAH 30 JUMLAH 2.615

Sehingga,mean data kelompok dapat diperoleh melalui perhitungan dibawah:

\[ \bar{x} = \frac{\sum fi \cdot xi}{\sum fi} \] \[ \bar{x} = \frac{2.615}{30}= 87.16 \] Jadi, mean dari nilai ujian mahasiswa diatas adalah 87.16

MEDIAN

Rumus untuk menghitung median adalah sebagai berikut:

\[ \text{Median} = Q2 = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas
  2. \(n\) = Jumlah seluruh frekuensi
  3. \(fk\) = Jumlah seluruh frekuensi sebelum kelas
  4. \(fi\) = Frekuensi
  5. p = Panjang kelas interval

Berikut langkah-langkah untuk menghitung median pada data kelompok:

1. Mencari tepi bawah kelas dan Mencari frekuensi komulatif kurang dari kelas median \(fk\)

Jumlah data yang diberikan pada tabel adalah 30. Sehingga letak Median (Q2)berada pada data ke: Q2 = ½ × 30 = 15 (Letak median berada di data ke-15). Sebelum menentukan nilai mediannya, kita tentukan frekuensi kumulatif kurang dari dan letak kelas di mana terdapat data median.

Nilai Ujian Frekuensi \((fi)\) \(fk\)
76 - 80 6 6
81 - 85 7 13
86 - 90 8 21
91 - 95 4 25
96 - 100 5 30

Berdasarkan data pada tabel di atas, dapat diperoleh informasi seperti berikut.

  • Tepi bawah kelas median (Tb) = 86 – 0.5 = 85.5
  • Panjang kelas (p) = 5
  • Frekuensi komulatif kurang dari kelas median (\(fk\)) = 13
  • Frekuensi kelas median (\(fi\)) = 8
  • Jumlah seluruh frekuensi (\(n\)) = 30

Sehingga, median data kelompok dapat diperoleh melalui perhitungan dibawah:

\[ \text{Median} = Tb + \left( \frac{\frac{1}{2}n - f_k}{f_i} \right) \cdot p \] \[ \text{Median} = 85.5 + \left( \frac{\frac{1}{2}30 - 13}{8} \right) \cdot 5 \] \[ \text{Median} = 85.5 + \left( \frac{15 - 13}{8} \right) \cdot 5 \] \[ \text{Median} = 85.5 + \left( \frac {2}{8} \right) \cdot 5 \] \[ \text{Median} = 85.5 + 1.25 = 86.75 \]

Jadi, median dari nilai ujian mahasiswa diatas adalah 86.75

MODUS

Rumus untuk menghitung modus adalah sebagai berikut:

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \]

dimana:

  1. Tb = Tepi bawah kelas modus
  2. d1 = Selisih frekuensi kelas modus dengan frekuensi sebelum kelas modus
  3. d2 = Selisih frekuensi kelas modus dengan frekuensi setelah kelas modus
  4. p = Panjang kelas interval

Dari data pada tabel diketahui modus ada pada interval 86 – 90, sehingga

  • Tb = 86 - 0.5 = 85.5
  • d1 = 8 - 7 = 1
  • d2 = 8 - 4 = 4
  • p = 5

Maka nilai modus dari data tersebut adalah :

\[ \text{Modus} = Mo = Tb + \left( \frac{d_1}{d_1 + d_2} \right) \cdot p \] \[ \text{Modus} = Mo = 85.5 + \left( \frac{1}{1 + 4} \right) \cdot 5 \] \[ \text{Modus} = Mo = 85.5 + \left( \frac{7}{5} \right) \cdot 5 \] \[ \text{Modus} = 85.5 + 7 = 92.5 \]

Jadi, modus dari nilai ujian mahasiswa diatas adalah 92.5

Referensi

  1. Scribd. (n.d.). Rumus Mean, Median, Modus Data Kelompok. Retrieved from https://www.scribd.com/document/613044980/Rumus-Mean-Median-Modus-Data-Kelompok?_gl=1hm4w29_gcl_au*MjkzMjg2NjEyLjE3MzE5MzM1NDg

  2. Ruangguru. (2020, October 15). Menghitung Ukuran Pemusatan Data: Mean, Median, dan Modus. Ruangguru. Retrieved from https://www.ruangguru.com/blog/menghitung-ukuran-pemusatan-data-mean-median-dan-modus

  3. Algoritma. (2021, March 25). Ukuran Pemusatan Data. Algoritma. Retrieved from https://blog.algorit.ma/ukuran-pemusatan-data/

  4. Katadata. (2022, November 3). Cara Menghitung Mean Data Kelompok Serta Contoh Soal dan Pembahasannya. Katadata. Retrieved from https://katadata.co.id/berita/nasional/635a2ce18f3ee/cara-menghitung-mean-data-kelompok-serta-contoh-soal-dan-pembahasannya

  5. Mamikos. (2020, October 19). Contoh Soal Mean, Median, Modus Data Tunggal Serta Data Kelompok. Mamikos. Retrieved from https://mamikos.com/info/contoh-soal-mean-median-modus-data-tunggal-serta-data-kelompok-pljr/

  6. Scribd. (2020). Ukuran Pemusatan Data Kelompok. Scribd. Retrieved from https://id.scribd.com/presentation/535689531/Ukuran-Pemusatan-Data-Kelompok

  7. Kompas. (2020, October 15). Ukuran Pemusatan dan Penyebaran Data Berkelompok. Kompas. Retrieved from https://www.kompas.com/skola/read/2020/10/15/175154669/ukuran-pemusatan-dan-penyebaran-data-berkelompok?page=all

LS0tDQp0aXRsZTogIlVrdXJhbiBQZW11c2F0YW4gRGF0YSINCnN1YnRpdGxlOiAiTWVhbiwgTWVkaWFuLCBNb2R1cyINCmF1dGhvcjogDQogIC0gIlJhY2hlbGlhIEJldmluYSBUYW1iYWpvbmcgTklNXzUyMjQwMDIxIg0KZGF0ZTogICJTZW5pbiwgMTgvMTEvMjAyNCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246ICAgIyBodHRwczovL2dpdGh1Yi5jb20vanViYS9ybWRmb3JtYXRzDQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbnVtYmVyX3NlY3Rpb25zOiBmYWxzZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICAzZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlLmNzcyINCi0tLQ0KDQo8aW1nIHNyYz0iUGljdC9Gb3Rvby5qcGciIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgd2lkdGg6NTAwcHg7IG1hcmdpbjogYXV0bzsiIGFsdD0iRm90byBLZWxvbXBvayI+DQoNCiMgUHJha3Rpa3VtIDENCg0KKipTdHVkaSBLYXN1czogQW5hbGlzaXMgTmlsYWkgU2lzd2EqKg0KDQpQYWRhIHByYWt0aWt1bSAxLCBzYXlhIG1lbGFrdWthbiBhbmFsaXNpcyBkYXRhIG5pbGFpIHNpc3dhIHVudHVrIG1lbWFoYW1pIHVrdXJhbiBwZW11c2F0YW4gZGF0YSwgeWFpdHUgbWVhbiwgbWVkaWFuLCBkYW4gbW9kdXMuIERhdGEgeWFuZyBkaWd1bmFrYW4gZGFsYW0gYW5hbGlzaXMgaW5pIGFkYWxhaCBuaWxhaSB5YW5nIGRpcGVyb2xlaCBvbGVoIHNpc3dhIGJlc2VydGEgZnJla3VlbnNpIGF0YXUgYmFueWFrbnlhIHNpc3dhIHlhbmcgbWVuZGFwYXRrYW4gbmlsYWkgdGVyc2VidXQuIERlbmdhbiBtZW5nZ3VuYWthbiBkYXRhIHRlcnNlYnV0LCBzYXlhIGJlcnR1anVhbiB1bnR1ayBtZW5naWRlbnRpZmlrYXNpIG5pbGFpIHJhdGEtcmF0YSwgcG9zaXNpIG5pbGFpIHRlbmdhaCwgZGFuIG5pbGFpIHlhbmcgcGFsaW5nIHNlcmluZyBtdW5jdWwuIERlbmdhbiByaW5jaWFuIGRhdGEgc2ViYWdhaSBiZXJpa3V0Lg0KDQoqKlRhYmVsIERhdGEgS2Vsb21wb2sgTmlsYWkgU2lzd2EqKg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW1idWF0IGRhdGEga2Vsb21wb2sNCmxpYnJhcnkoa25pdHIpDQoNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgIk5pbGFpIiA9IGMoIjc0IC0gNzgiLCAiNzkgLSA4MyIsICI4NCAtIDg4IiwgIjg5IC0gOTMiLCAiOTQgLSA5OCIpLA0KICAiRnJla3VlbnNpIiA9IGMoMiwgOSwgMTYsIDEwLCAzKQ0KKQ0KDQoNCiMgTWVuYW1waWxrYW4gdGFiZWwNCmthYmxlKGRhdGEsIGFsaWduID0gImMiLCBjYXB0aW9uID0gIlRhYmVsIERhdGEgS2Vsb21wb2sgdW50dWsgTWVhbiwgTWVkaWFuLCBkYW4gTW9kdXMiKQ0KYGBgDQoNCiMjIE1lYW4gKFJhdGEtcmF0YSkNCk1lYW4gYWRhbGFoIHVrdXJhbiBwZW11c2F0YW4gZGF0YSB5YW5nIGRpcGVyb2xlaCBkZW5nYW4gbWVuanVtbGFoa2FuIHNlbXVhIG5pbGFpIGRhbGFtIHN1YXR1IGt1bXB1bGFuIGRhdGEsIGxhbHUgbWVtYmFnaW55YSBkZW5nYW4ganVtbGFoIGRhdGEgeWFuZyBhZGEgdGVyc2VidXQuIE1lYW4gbWVuZ2dhbWJhcmthbiBwb3Npc2kgcmF0YS1yYXRhIGRhcmkgZGF0YSBzZWNhcmEga2VzZWx1cnVoYW4uDQoNClJ1bXVzIHVudHVrIG1lbmdoaXR1bmcgbWVhbiBhZGFsYWggc2ViYWdhaSBiZXJpa3V0Og0KDQokJA0KXGJhcnt4fSA9IFxmcmFje1xzdW0gZmkgXGNkb3QgeGl9e1xzdW0gZml9DQokJA0KDQoNCmRpbWFuYToNCg0KMS4gXChmaVwpID0gRnJla3VlbnNpDQoyLiBcKHhpXCkgPSBOaWxhaSBUZW5nYWgNCg0KQmVyaWt1dCBsYW5na2FoLWxhbmdrYWggdW50dWsgbWVuZ2hpdHVuZyBtZWFuIHBhZGEgZGF0YSBrZWxvbXBvazoNCg0KKioxLiBNZW5jYXJpIG5pbGFpIHRlbmdhaCoqDQoNClJ1bXVzIHVudHVrIG1lbmNhcmkgbmlsYWkgdGVuZ2FoIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQokJA0KXHRleHR7TmlsYWkgVGVuZ2FofSAoeGkpID0gXGRmcmFje1x0ZXh0e1RlcGkgYmF3YWgga2VsYXN9ICsgXHRleHR7VGVwaSBhdGFzIGtlbGFzfX17Mn0NCiQkDQoNCk5pbGFpIHRlbmdhaCAoXCh4aVwpKSBkaWhpdHVuZyB1bnR1ayB0aWFwIGtlbG9tcG9rOiANCg0KJCQNClxiZWdpbntzcGxpdH0NClx0ZXh0e05pbGFpIFRlbmdhaH0gJj0gXGZyYWN7NzQgKyA3OH17Mn0gPSA3NiBcXA0KXHRleHR7TmlsYWkgVGVuZ2FofSAmPSBcZnJhY3s3OSArIDgzfXsyfSA9IDgxIFxcDQpcdGV4dHtOaWxhaSBUZW5nYWh9ICY9IFxmcmFjezg0ICsgODh9ezJ9ID0gODYgXFwNClx0ZXh0e05pbGFpIFRlbmdhaH0gJj0gXGZyYWN7ODkgKyA5M317Mn0gPSA5MSBcXA0KXHRleHR7TmlsYWkgVGVuZ2FofSAmPSBcZnJhY3s5NCArIDk4fXsyfSA9IDk2DQpcZW5ke3NwbGl0fQ0KJCQNCg0KDQoqKjIuIE1lbmdhbGlrYW4gZnJla3VlbnNpIGRlbmdhbiBuaWFpIHRlbmdhaCoqDQoNCiQkDQpcYmVnaW57c3BsaXR9DQpmaSBcY2RvdCB4aSY9IDIgXGNkb3QgNzYmPSAxNTIgXFwNCmZpIFxjZG90IHhpJj0gOSBcY2RvdCA4MSY9IDcyOSBcXA0KZmkgXGNkb3QgeGkmPSAxNiBcY2RvdCA4NiY9IDEuMzc2IFxcDQpmaSBcY2RvdCB4aSY9IDEwIFxjZG90IDkxJj0gOTEwIFxcDQpmaSBcY2RvdCB4aSY9IDMgXGNkb3QgOTYmPSAyODgNClxlbmR7c3BsaXR9DQokJA0KDQpIYXNpbCBwZXJrYWxpYW4gbmlsYWkgdGVuZ2FoIHNldGlhcCBrZWxhcyBkYW4gZnJla3VlbnNpbnlhIGRhcGF0IGRpbGloYXQgcGFkYSB0YWJlbCBiZXJpa3V0Lg0KDQp8IE5pbGFpICAgICAgICAgIHwgRnJla3VlbnNpIFwoKGZpKVwpICB8IE5pbGFpIFRlbmdhaCBcKCh4aSlcKSAgIHwgXCgoZmkueGkpXCkgICAgIHwNCnw6LS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS06fA0KfCA3NCAtIDc4ICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgfCA3NiAgICAgICAgICAgICAgICAgICAgICB8IDE1MiAgICAgICAgICAgICB8DQp8IDc5IC0gODMgICAgICAgIHwgOSAgICAgICAgICAgICAgICAgICB8IDgxICAgICAgICAgICAgICAgICAgICAgIHwgNzI5ICAgICAgICAgICAgIHwNCnwgODQgLSA4OCAgICAgICAgfCAxNiAgICAgICAgICAgICAgICAgIHwgODYgICAgICAgICAgICAgICAgICAgICAgfCAxLjM3NiAgICAgICAgICAgfA0KfCA4OSAtIDkzICAgICAgICB8IDEwICAgICAgICAgICAgICAgICAgfCA5MSAgICAgICAgICAgICAgICAgICAgICB8IDkxMCAgICAgICAgICAgICB8DQp8OTQgLSA5OCAgICAgICAgIHwgMyAgICAgICAgICAgICAgICAgICB8IDk2ICAgICAgICAgICAgICAgICAgICAgIHwgMjg4ICAgICAgICAgICAgIHwNCnwqKkpVTUxBSCoqICAgICAgfCA0MCAgICAgICAgICAgICAgICAgIHwqKkpVTUxBSCoqICAgICAgICAgICAgICAgfCAzLjQ1NSAgICAgICAgICAgfA0KDQpTZWhpbmdnYSxtZWFuIGRhdGEga2Vsb21wb2sgZGFwYXQgZGlwZXJvbGVoIG1lbGFsdWkgcGVyaGl0dW5nYW4gZGliYXdhaDoNCg0KJCQNClxiYXJ7eH0gPSBcZnJhY3tcc3VtIGZpIFxjZG90IHhpfXtcc3VtIGZpfQ0KJCQNCiQkDQpcYmFye3h9ID0gXGZyYWN7My40NTV9ezQwfT0gODYuMzgNCiQkDQpKYWRpLCBtZWFuIGRhcmkgbmlsYWkgc2lzd2EgZGlhdGFzIGFkYWxhaCA4Ni4zOA0KDQoqKlZpc3VhbGlzYXNpIEJveHBsb3QgRGF0YSBNZWFuKioNCg0KYGBge3Ige3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhIGFzbGkNCm5pbGFpX3RlbmdhaCA8LSBjKDc2LCA4MSwgODYsIDkxLCA5NikNCmZyZWt1ZW5zaSA8LSBjKDIsIDksIDE2LCAxMCwgMykNCg0KIyBNZW1idWF0IGRhdGEgdWxhbmcgdW50dWsgYm94cGxvdA0KZGF0YV9hc2xpIDwtIHJlcChuaWxhaV90ZW5nYWgsIGZyZWt1ZW5zaSkNCg0KIyBNZW5hbWJhaGthbiBvdXRsaWVycyBrZSBkYXRhDQpkYXRhX2Rlbmdhbl9vdXRsaWVycyA8LSBjKGRhdGFfYXNsaSwgMTMwLCAxNDAsIDksIDE2KSAgIyBNZW5hbWJhaCBuaWxhaSBla3N0cmVtIHNlYmFnYWkgb3V0bGllcnMNCg0KIyBNZW5naGl0dW5nIG1lYW4gdW50dWsgZGF0YSB0YW5wYSBvdXRsaWVycw0KbWVhbl90YW5wYV9vdXRsaWVycyA8LSBzdW0obmlsYWlfdGVuZ2FoICogZnJla3VlbnNpKSAvIHN1bShmcmVrdWVuc2kpDQoNCiMgTWVuZ2hpdHVuZyBtZWFuIHVudHVrIGRhdGEgZGVuZ2FuIG91dGxpZXJzDQptZWFuX2Rlbmdhbl9vdXRsaWVycyA8LSBtZWFuKGRhdGFfZGVuZ2FuX291dGxpZXJzKQ0KDQojIE1lbmdoaXR1bmcgbWVkaWFuIChzYW1hIHVudHVrIGtlZHVhbnlhIGthcmVuYSBwb3Npc2kga2VsYXMgbWVkaWFuIHRpZGFrIGJlcnViYWgpDQpUYiA8LSA4My41ICAjIEJhdGFzIGJhd2FoIGtlbGFzIG1lZGlhbg0KRiA8LSAxMSAgICAjIEZyZWt1ZW5zaSBrdW11bGF0aWYgc2ViZWx1bSBrZWxhcyBtZWRpYW4NCmYgPC0gMTYgICAgIyBGcmVrdWVuc2kga2VsYXMgbWVkaWFuDQppIDwtIDUgICAgIyBQYW5qYW5nIGludGVydmFsDQpuIDwtIHN1bShmcmVrdWVuc2kpDQptZWRpYW4gPC0gVGIgKyAoKG4gLyAyIC0gRikgLyBmKSAqIGkgIA0KDQojIE1lbWJ1YXQgYm94cGxvdCB1bnR1ayBkYXRhIGRlbmdhbiBkYW4gdGFucGEgb3V0bGllcnMNCnBsb3QgPC0gcGxvdF9seSgpICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IH5kYXRhX2FzbGksDQogICAgdHlwZSA9ICJib3giLA0KICAgIGJveHBvaW50cyA9ICJvdXRsaWVycyIsDQogICAgbmFtZSA9ICJUYW5wYSBPdXRsaWVycyINCiAgKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSB+ZGF0YV9kZW5nYW5fb3V0bGllcnMsDQogICAgdHlwZSA9ICJib3giLA0KICAgIGJveHBvaW50cyA9ICJvdXRsaWVycyIsDQogICAgbmFtZSA9ICJEZW5nYW4gT3V0bGllcnMiDQogICkgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJCb3hwbG90IERhdGEgTmlsYWkgU2lzd2EgKERlbmdhbiBkYW4gVGFucGEgT3V0bGllcnMpIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTmlsYWkgU2lzd2EiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiS2Vsb21wb2sgRGF0YSIpLA0KICAgIHNoYXBlcyA9IGxpc3QoDQogICAgICAjIEdhcmlzIG1lYW4gdW50dWsgVGFucGEgT3V0bGllcnMNCiAgICAgIGxpc3QoDQogICAgICAgIHR5cGUgPSAibGluZSIsDQogICAgICAgIHgwID0gMC41LA0KICAgICAgICB4MSA9IDEuNSwNCiAgICAgICAgeTAgPSBtZWFuX3RhbnBhX291dGxpZXJzLA0KICAgICAgICB5MSA9IG1lYW5fdGFucGFfb3V0bGllcnMsDQogICAgICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gImRhcmtibHVlIiwgZGFzaCA9ICJkb3QiKSwNCiAgICAgICAgeHJlZiA9ICJ4IiwNCiAgICAgICAgeXJlZiA9ICJ5Ig0KICAgICAgKSwNCiAgICAgICMgR2FyaXMgbWVhbiB1bnR1ayBEZW5nYW4gT3V0bGllcnMNCiAgICAgIGxpc3QoDQogICAgICAgIHR5cGUgPSAibGluZSIsDQogICAgICAgIHgwID0gMS41LA0KICAgICAgICB4MSA9IDIuNSwNCiAgICAgICAgeTAgPSBtZWFuX2Rlbmdhbl9vdXRsaWVycywNCiAgICAgICAgeTEgPSBtZWFuX2Rlbmdhbl9vdXRsaWVycywNCiAgICAgICAgbGluZSA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGRhc2ggPSAiZG90IiksDQogICAgICAgIHhyZWYgPSAieCIsDQogICAgICAgIHlyZWYgPSAieSINCiAgICAgICkNCiAgICApLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAxLA0KICAgICAgICB5ID0gbWVhbl90YW5wYV9vdXRsaWVycywNCiAgICAgICAgdGV4dCA9IHBhc3RlKCJNZWFuOiIsIHJvdW5kKG1lYW5fdGFucGFfb3V0bGllcnMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKSwNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAyLA0KICAgICAgICB5ID0gbWVhbl9kZW5nYW5fb3V0bGllcnMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTWVhbjoiLCByb3VuZChtZWFuX2Rlbmdhbl9vdXRsaWVycywgMikpLA0KICAgICAgICBzaG93YXJyb3cgPSBUUlVFLA0KICAgICAgICBhcnJvd2hlYWQgPSAyDQogICAgICApDQogICAgKQ0KICApDQoNCiMgTWVuYW1waWxrYW4gcGxvdA0KcGxvdA0KDQoNCmBgYA0KDQoNCg0KIyMgTWVkaWFuIChOaWxhaSBUZW5nYWgpDQpNZWRpYW4gYWRhbGFoIG5pbGFpIHRlbmdhaCBkYXJpIHN1YXR1IGt1bXB1bGFuIGRhdGEgeWFuZyB0ZWxhaCBkaXVydXRrYW4uIE5hbXVuLCB1bnR1ayBkYXRhIGtlbG9tcG9rLCBtZWRpYW4gdGlkYWsgaGFueWEgYmVyZ2FudHVuZyBwYWRhIHVydXRhbiBuaWxhaSBzZXBlcnRpIHBhZGEgZGF0YSBpbmRpdmlkdSwgbWVsYWlua2FuIGp1Z2EgbWVsaWJhdGthbiBmcmVrdWVuc2kga3VtdWxhdGlmIGRhbiBpbnRlcnZhbCBrZWxhcy4NCg0KUnVtdXMgdW50dWsgbWVuZ2hpdHVuZyBtZWRpYW4gYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KXFsNClx0ZXh0e01lZGlhbn0gPSBRMiA9IFRiICsgXGxlZnQoIFxmcmFje1xmcmFjezF9ezJ9biAtIGZfa317Zl9pfSBccmlnaHQpIFxjZG90IHANClxdDQoNCmRpbWFuYToNCg0KMS4gVGIgPSBUZXBpIGJhd2FoIGtlbGFzIA0KMi4gXChuXCkgPSBKdW1sYWggc2VsdXJ1aCBmcmVrdWVuc2kNCjMuIFwoZmtcKSA9IEp1bWxhaCBzZWx1cnVoIGZyZWt1ZW5zaSBzZWJlbHVtIGtlbGFzIA0KNC4gXChmaVwpID0gIEZyZWt1ZW5zaQ0KNS4gcCA9IFBhbmphbmcga2VsYXMgaW50ZXJ2YWwNCg0KQmVyaWt1dCBsYW5na2FoLWxhbmdrYWggdW50dWsgbWVuZ2hpdHVuZyBtZWFuIHBhZGEgZGF0YSBrZWxvbXBvazoNCg0KKioxLiBNZW5jYXJpIHRlcGkgYmF3YWgga2VsYXMgZGFuIE1lbmNhcmkgZnJla3VlbnNpIGtvbXVsYXRpZiBrdXJhbmcgZGFyaSBrZWxhcyBtZWRpYW4gXChma1wpKiogDQoNCkp1bWxhaCBkYXRhIHlhbmcgZGliZXJpa2FuIHBhZGEgdGFiZWwgYWRhbGFoIDQwLiBTZWhpbmdnYSBsZXRhayBNZWRpYW4gKFEyKWJlcmFkYSBwYWRhIGRhdGEga2U6IFEyID0gwr0gw5cgNDAgPSAyMCAoTGV0YWsgbWVkaWFuIGJlcmFkYSBkaSBkYXRhIGtlLTIwKS4gU2ViZWx1bSBtZW5lbnR1a2FuIG5pbGFpIG1lZGlhbm55YSwga2l0YSB0ZW50dWthbiBmcmVrdWVuc2kga3VtdWxhdGlmIGt1cmFuZyBkYXJpIGRhbiBsZXRhayBrZWxhcyBkaSBtYW5hIHRlcmRhcGF0IGRhdGEgbWVkaWFuLiANCg0KfCBOaWxhaSAgICAgICAgICB8IEZyZWt1ZW5zaSBcKChmaSlcKSAgfCBcKGZrXCkNCnw6LS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06DQp8IDc0IC0gNzggICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICB8IDINCnwgNzkgLSA4MyAgICAgICAgfCA5ICAgICAgICAgICAgICAgICAgIHwgMTEgICAgICAgICAgICAgICAgDQp8IDg0IC0gODggICAgICAgIHwgMTYgICAgICAgICAgICAgICAgICB8IDI3ICAgICAgICAgICAgICAgICAgICAgDQp8IDg5IC0gOTMgICAgICAgIHwgMTAgICAgICAgICAgICAgICAgICB8IDM3ICAgICAgICAgICAgICAgICAgICAgDQp8IDk0IC0gOTggICAgICAgIHwgMyAgICAgICAgICAgICAgICAgICB8IDQwICAgICAgICAgICAgICAgICAgICAgDQogICAgDQoNCkJlcmRhc2Fya2FuIGRhdGEgcGFkYSB0YWJlbCBkaSBhdGFzLCBkYXBhdCBkaXBlcm9sZWggaW5mb3JtYXNpIHNlcGVydGkgYmVyaWt1dC4NCg0KLSBUZXBpIGJhd2FoIGtlbGFzIG1lZGlhbiAoVGIpID0gODQg4oCTIDAuNSA9IDgzLjUNCi0gUGFuamFuZyBrZWxhcyAocCkgPSA1DQotIEZyZWt1ZW5zaSBrb211bGF0aWYga3VyYW5nIGRhcmkga2VsYXMgbWVkaWFuIChcKGZrXCkpID0gMTENCi0gRnJla3VlbnNpIGtlbGFzIG1lZGlhbiAoXChmaVwpKSAgPSAxNg0KLSBKdW1sYWggc2VsdXJ1aCBmcmVrdWVuc2kgKFwoblwpKSA9IDQwDQoNCg0KDQoqKjIuIE1lbmdoaXR1bmcgbmlsYWkgbWVkaWFuIGRhdGEga2Vsb21wb2sqKg0KDQpcWw0KXHRleHR7TWVkaWFufSA9IFRiICsgXGxlZnQoIFxmcmFje1xmcmFjezF9ezJ9biAtIGZfa317Zl9pfSBccmlnaHQpIFxjZG90IHANClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDgzLjUgKyBcbGVmdCggXGZyYWN7XGZyYWN7MX17Mn00MCAtIDExfXsxNn0gXHJpZ2h0KSBcY2RvdCA1DQpcXQ0KXFsNClx0ZXh0e01lZGlhbn0gPSA4My41ICsgXGxlZnQoIFxmcmFjezIwIC0gMTF9ezE2fSBccmlnaHQpIFxjZG90IDUNClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDgzLjUgKyBcbGVmdCggXGZyYWMgezl9ezE2fSBccmlnaHQpIFxjZG90IDUNClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDgzLjUgKyAyLjgxID0gODYuMzENClxdDQoNCkphZGksIG1lZGlhbiBkYXJpIG5pbGFpIHNpc3dhIGRpIGF0YXMgYWRhbGFoIDg2LjMxDQoNCioqVmlzdWFsaXNhc2kgQm94cGxvdCBEYXRhIE1lZGlhbioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YSBhc2xpDQpuaWxhaV90ZW5nYWggPC0gYyg3NiwgODEsIDg2LCA5MSwgOTYpDQpmcmVrdWVuc2kgPC0gYygyLCA5LCAxNiwgMTAsIDMpDQoNCiMgTWVtYnVhdCBkYXRhIHVsYW5nIHVudHVrIGJveHBsb3QNCmRhdGFfYXNsaSA8LSByZXAobmlsYWlfdGVuZ2FoLCBmcmVrdWVuc2kpDQoNCiMgTWVuYW1iYWhrYW4gb3V0bGllcnMga2UgZGF0YQ0KZGF0YV9kZW5nYW5fb3V0bGllcnMgPC0gYyhkYXRhX2FzbGksIDEzMCwgMTQwLCA5LCAxNikgICMgTWVuYW1iYWggbmlsYWkgZWtzdHJlbSBzZWJhZ2FpIG91dGxpZXJzDQoNCiMgTWVuZ2hpdHVuZyBtZWRpYW4gKHNhbWEgdW50dWsga2VkdWFueWEga2FyZW5hIHBvc2lzaSBrZWxhcyBtZWRpYW4gdGlkYWsgYmVydWJhaCkNClRiIDwtIDgzLjUgICMgQmF0YXMgYmF3YWgga2VsYXMgbWVkaWFuDQpGIDwtIDExICAgICMgRnJla3VlbnNpIGt1bXVsYXRpZiBzZWJlbHVtIGtlbGFzIG1lZGlhbg0KZiA8LSAxNiAgICAjIEZyZWt1ZW5zaSBrZWxhcyBtZWRpYW4NCmkgPC0gNSAgICAjIFBhbmphbmcgaW50ZXJ2YWwNCm4gPC0gc3VtKGZyZWt1ZW5zaSkNCm1lZGlhbiA8LSBUYiArICgobiAvIDIgLSBGKSAvIGYpICogaSAgDQoNCiMgTWVtYnVhdCBib3hwbG90IHVudHVrIGRhdGEgZGVuZ2FuIGRhbiB0YW5wYSBvdXRsaWVycw0KcGxvdCA8LSBwbG90X2x5KCkgJT4lDQogIGFkZF90cmFjZSgNCiAgICB5ID0gfmRhdGFfYXNsaSwNCiAgICB0eXBlID0gImJveCIsDQogICAgYm94cG9pbnRzID0gIm91dGxpZXJzIiwNCiAgICBuYW1lID0gIlRhbnBhIE91dGxpZXJzIg0KICApICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IH5kYXRhX2Rlbmdhbl9vdXRsaWVycywNCiAgICB0eXBlID0gImJveCIsDQogICAgYm94cG9pbnRzID0gIm91dGxpZXJzIiwNCiAgICBuYW1lID0gIkRlbmdhbiBPdXRsaWVycyINCiAgKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIkJveHBsb3QgRGF0YSBOaWxhaSBTaXN3YSAoRGVuZ2FuIGRhbiBUYW5wYSBPdXRsaWVycykiLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJOaWxhaSBTaXN3YSIpLA0KICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJLZWxvbXBvayBEYXRhIiksDQogICAgc2hhcGVzID0gbGlzdCgNCiAgICAgICMgR2FyaXMgbWVkaWFuIHVudHVrIFRhbnBhIE91dGxpZXJzDQogICAgICBsaXN0KA0KICAgICAgICB0eXBlID0gImxpbmUiLA0KICAgICAgICB4MCA9IDAuNSwNCiAgICAgICAgeDEgPSAxLjUsDQogICAgICAgIHkwID0gbWVkaWFuLA0KICAgICAgICB5MSA9IG1lZGlhbiwNCiAgICAgICAgbGluZSA9IGxpc3QoY29sb3IgPSAibWFyb29uIiwgZGFzaCA9ICJkYXNoIiksDQogICAgICAgIHhyZWYgPSAieCIsDQogICAgICAgIHlyZWYgPSAieSINCiAgICAgICksDQogICAgICAjIEdhcmlzIG1lZGlhbiB1bnR1ayBEZW5nYW4gT3V0bGllcnMNCiAgICAgIGxpc3QoDQogICAgICAgIHR5cGUgPSAibGluZSIsDQogICAgICAgIHgwID0gMS41LA0KICAgICAgICB4MSA9IDIuNSwNCiAgICAgICAgeTAgPSBtZWRpYW4sDQogICAgICAgIHkxID0gbWVkaWFuLA0KICAgICAgICBsaW5lID0gbGlzdChjb2xvciA9ICJwaW5rIiwgZGFzaCA9ICJkYXNoIiksDQogICAgICAgIHhyZWYgPSAieCIsDQogICAgICAgIHlyZWYgPSAieSINCiAgICAgICkNCiAgICApLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAxLA0KICAgICAgICB5ID0gbWVkaWFuLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lZGlhbjoiLCByb3VuZChtZWRpYW4sIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKSwNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAyLA0KICAgICAgICB5ID0gbWVkaWFuLA0KICAgICAgICB0ZXh0ID0gcGFzdGUoIk1lZGlhbjoiLCByb3VuZChtZWRpYW4sIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QNCnBsb3QNCg0KDQoNCmBgYA0KDQoNCiMjIE1vZHVzIChGcmVrdWVuc2kgVGVydGluZ2dpKQ0KTW9kdXMgYWRhbGFoIG5pbGFpIHlhbmcgcGFsaW5nIHNlcmluZyBtdW5jdWwgZGFsYW0gZGF0YS4gTW9kdXMNCmRpZ3VuYWthbiB1bnR1ayBtZW5nZXRhaHVpIG5pbGFpIHlhbmcgcGFsaW5nIGRvbWluYW4gYXRhdSBwYWxpbmcgc2VyaW5nIHRlcmphZGkgZGFsYW0gc3VhdHUga3VtcHVsYW4gZGF0YS4gTW9kdXMgYmlzYSBkaXRlbXVrYW4gZGFsYW0gZGF0YSBrdWFudGl0YXRpZg0KbWF1cHVuIGthdGVnb3Jpa2FsLg0KDQoNClJ1bXVzIHVudHVrIG1lbmdoaXR1bmcgbW9kdXMgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gTW8gPSBUYiArIFxsZWZ0KCBcZnJhY3tkXzF9e2RfMSArIGRfMn0gXHJpZ2h0KSBcY2RvdCBwDQpcXQ0KDQpkaW1hbmE6DQoNCjEuIFRiID0gVGVwaSBiYXdhaCBrZWxhcyBtb2R1cw0KMi4gZDEgPSBTZWxpc2loIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkZW5nYW4gZnJla3VlbnNpIHNlYmVsdW0ga2VsYXMgbW9kdXMNCjMuIGQyID0gU2VsaXNpaCBmcmVrdWVuc2kga2VsYXMgbW9kdXMgZGVuZ2FuIGZyZWt1ZW5zaSBzZXRlbGFoIGtlbGFzIG1vZHVzDQo0LiBwICA9IFBhbmphbmcga2VsYXMgaW50ZXJ2YWwNCg0KRGFyaSBkYXRhIHBhZGEgdGFiZWwgZGlrZXRhaHVpIG1vZHVzIGFkYSBwYWRhIGludGVydmFsIDg0IOKAkyA4OCwgc2VoaW5nZ2ENCg0KLSBUYiA9IDg0IC0gMC41ID0gODMuNQ0KLSBkMSA9IDE2IC0gOSA9IDcNCi0gZDIgPSAxNiAtIDEwID0gNg0KLSBwID0gNQ0KDQpNYWthIG5pbGFpIG1vZHVzIGRhcmkgZGF0YSB0ZXJzZWJ1dCBhZGFsYWggOg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gTW8gPSBUYiArIFxsZWZ0KCBcZnJhY3tkXzF9e2RfMSArIGRfMn0gXHJpZ2h0KSBcY2RvdCBwDQpcXQ0KXFsNClx0ZXh0e01vZHVzfSA9IE1vID0gODMuNSArIFxsZWZ0KCBcZnJhY3s3fXs3ICsgNn0gXHJpZ2h0KSBcY2RvdCA1DQpcXQ0KXFsNClx0ZXh0e01vZHVzfSA9IE1vID0gODMuNSArIFxsZWZ0KCBcZnJhY3s3fXsxM30gXHJpZ2h0KSBcY2RvdCA1DQpcXQ0KXFsNClx0ZXh0e01vZHVzfSA9IDgzLjUgKyAyLjY5ID0gODYuMTkNClxdDQoNCkphZGksIG1vZHVzICBkYXJpIG5pbGFpIHNpc3dhIGRpIGF0YXMgYWRhbGFoIDg2LjE5DQoNCioqVmlzdWFsaXNhc2kgQm94cGxvdCBEYXRhIE1vZHVzKioNCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhIGFzbGkNCm5pbGFpX3RlbmdhaCA8LSBjKDc2LCA4MSwgODYsIDkxLCA5NikNCmZyZWt1ZW5zaSA8LSBjKDIsIDksIDE2LCAxMCwgMykNCg0KIyBNZW1idWF0IGRhdGEgdWxhbmcgdW50dWsgYm94cGxvdA0KZGF0YV9hc2xpIDwtIHJlcChuaWxhaV90ZW5nYWgsIGZyZWt1ZW5zaSkNCg0KIyBNZW5hbWJhaGthbiBvdXRsaWVycyBrZSBkYXRhDQpkYXRhX2Rlbmdhbl9vdXRsaWVycyA8LSBjKGRhdGFfYXNsaSwgMTMwLCAxNDAsIDksIDE2KSAgIyBNZW5hbWJhaCBuaWxhaSBla3N0cmVtIHNlYmFnYWkgb3V0bGllcnMNCg0KIyBNZW5naGl0dW5nIG1vZHVzIChzYW1hIHVudHVrIGtlZHVhIGthc3VzIGthcmVuYSBvdXRsaWVycyB0aWRhayBtZW1lbmdhcnVoaSBrZWxhcyBtb2R1cykNClRiIDwtIDgzLjUgICMgQmF0YXMgYmF3YWgga2VsYXMgbW9kdXMNCmQxIDwtIDE2IC0gOSAgIyBGcmVrdWVuc2kga2VsYXMgbW9kdXMgLSBmcmVrdWVuc2kga2VsYXMgc2ViZWx1bW55YQ0KZDIgPC0gMTYgLSAxMCAgIyBGcmVrdWVuc2kga2VsYXMgbW9kdXMgLSBmcmVrdWVuc2kga2VsYXMgc2V0ZWxhaG55YQ0KcCA8LSA1ICAgICAgICMgUGFuamFuZyBpbnRlcnZhbA0KbW9kdXMgPC0gVGIgKyAoZDEgLyAoZDEgKyBkMikpICogcCAgDQoNCiMgTWVtYnVhdCBib3hwbG90IHVudHVrIGRhdGEgZGVuZ2FuIGRhbiB0YW5wYSBvdXRsaWVycw0KcGxvdCA8LSBwbG90X2x5KCkgJT4lDQogIGFkZF90cmFjZSgNCiAgICB5ID0gfmRhdGFfYXNsaSwNCiAgICB0eXBlID0gImJveCIsDQogICAgYm94cG9pbnRzID0gIm91dGxpZXJzIiwNCiAgICBuYW1lID0gIlRhbnBhIE91dGxpZXJzIg0KICApICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IH5kYXRhX2Rlbmdhbl9vdXRsaWVycywNCiAgICB0eXBlID0gImJveCIsDQogICAgYm94cG9pbnRzID0gIm91dGxpZXJzIiwNCiAgICBuYW1lID0gIkRlbmdhbiBPdXRsaWVycyINCiAgKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIkJveHBsb3QgRGF0YSBOaWxhaSBTaXN3YSAoRGVuZ2FuIGRhbiBUYW5wYSBPdXRsaWVycykiLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJOaWxhaSBTaXN3YSIpLA0KICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJLZWxvbXBvayBEYXRhIiksDQogICAgc2hhcGVzID0gbGlzdCgNCiAgICAgICMgR2FyaXMgbW9kdXMgdW50dWsgVGFucGEgT3V0bGllcnMNCiAgICAgIGxpc3QoDQogICAgICAgIHR5cGUgPSAibGluZSIsDQogICAgICAgIHgwID0gMC41LA0KICAgICAgICB4MSA9IDEuNSwNCiAgICAgICAgeTAgPSBtb2R1cywNCiAgICAgICAgeTEgPSBtb2R1cywNCiAgICAgICAgbGluZSA9IGxpc3QoY29sb3IgPSAibWFyb29uIiwgZGFzaCA9ICJkYXNoIiksDQogICAgICAgIHhyZWYgPSAieCIsDQogICAgICAgIHlyZWYgPSAieSINCiAgICAgICksDQogICAgICAjIEdhcmlzIG1vZHVzIHVudHVrIERlbmdhbiBPdXRsaWVycw0KICAgICAgbGlzdCgNCiAgICAgICAgdHlwZSA9ICJsaW5lIiwNCiAgICAgICAgeDAgPSAxLjUsDQogICAgICAgIHgxID0gMi41LA0KICAgICAgICB5MCA9IG1vZHVzLA0KICAgICAgICB5MSA9IG1vZHVzLA0KICAgICAgICBsaW5lID0gbGlzdChjb2xvciA9ICJwaW5rIiwgZGFzaCA9ICJkYXNoIiksDQogICAgICAgIHhyZWYgPSAieCIsDQogICAgICAgIHlyZWYgPSAieSINCiAgICAgICkNCiAgICApLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAxLA0KICAgICAgICB5ID0gbW9kdXMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTW9kdXM6Iiwgcm91bmQobW9kdXMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKSwNCiAgICAgIGxpc3QoDQogICAgICAgIHggPSAyLA0KICAgICAgICB5ID0gbW9kdXMsDQogICAgICAgIHRleHQgPSBwYXN0ZSgiTW9kdXM6Iiwgcm91bmQobW9kdXMsIDIpKSwNCiAgICAgICAgc2hvd2Fycm93ID0gVFJVRSwNCiAgICAgICAgYXJyb3doZWFkID0gMg0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QNCnBsb3QNCg0KDQoNCmBgYA0KDQoNCg0KDQoNCg0KIyBQcmFrdGlrdW0gMg0KDQojIyBCaXNuaXMNCg0KKipTdHVkaSBLYXN1czogQW5hbGlzaXMgSGFyZ2EgSGFuZGJvZHkqKg0KDQpQYWRhIHN0dWRpIGthc3VzIGluaSwgZGF0YSB5YW5nIGRpZ3VuYWthbiBhZGFsYWggaGFyZ2EgaGFuZGJvZHksIHlhbmcgZGlhbmFsaXNpcyB1bnR1ayBtZW5naGl0dW5nIHVrdXJhbiBwZW11c2F0YW4gZGF0YSBzZXBlcnRpIG1lYW4sIG1lZGlhbiwgZGFuIG1vZHVzIGd1bmEgbWVuZ2dhbWJhcmthbiBkaXN0cmlidXNpIGhhcmdhIGhhbmRib2R5IHNlY2FyYSBsZWJpaCBqZWxhcy4gRGVuZ2FuIHJpbmNpYW4gZGF0YSBzZWJhZ2FpIGJlcmlrdXQuDQoNCioqVGFiZWwgRGF0YSBLZWxvbXBvayBCaXNuaXMqKg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW1idWF0IGRhdGEga2Vsb21wb2sNCmxpYnJhcnkoa25pdHIpDQoNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgIkhhcmdhX0hhbmRib2R5IiA9IGMoIjUwLjAwMCAtIDU0LjAwMCIsICI1NS4wMDAgLSA1OS4wMDAiLCAiNjAuMDAwIC0gNjQuMDAwIiwgIjY1LjAwMCAtIDY5LjAwMCIsICI3MC4wMDAgLSA3NC4wMDAiKSwNCiAgIkZyZWt1ZW5zaSIgPSBjKDUsIDEwLCAxNSwgMTIsIDgpDQopDQoNCg0KIyBNZW5hbXBpbGthbiB0YWJlbA0Ka2FibGUoZGF0YSwgYWxpZ24gPSAiYyIsIGNhcHRpb24gPSAiVGFiZWwgRGF0YSBLZWxvbXBvayB1bnR1ayBNZWFuLCBNZWRpYW4sIGRhbiBNb2R1cyIpDQpgYGANCg0KKipNRUFOKioNCg0KUnVtdXMgdW50dWsgbWVuZ2hpdHVuZyBtZWFuIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNCiQkDQpcYmFye3h9ID0gXGZyYWN7XHN1bSBmaSBcY2RvdCB4aX17XHN1bSBmaX0NCiQkDQoNCmRpbWFuYToNCg0KMS4gXChmaVwpID0gRnJla3VlbnNpDQoyLiBcKHhpXCkgPSBOaWxhaSBUZW5nYWgNCg0KQmVyaWt1dCBsYW5na2FoLWxhbmdrYWggdW50dWsgbWVuZ2hpdHVuZyBtZWFuIHBhZGEgZGF0YSBrZWxvbXBvazoNCg0KKioxLiBNZW5jYXJpIG5pbGFpIHRlbmdhaCoqDQoNClJ1bXVzIHVudHVrIG1lbmNhcmkgbmlsYWkgdGVuZ2FoIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQokJA0KXHRleHR7TmlsYWkgVGVuZ2FofSAoeGkpID0gXGRmcmFje1x0ZXh0e1RlcGkgYmF3YWgga2VsYXN9ICsgXHRleHR7VGVwaSBhdGFzIGtlbGFzfX17Mn0NCiQkDQpOaWxhaSB0ZW5nYWggKFwoeGlcKSkgZGloaXR1bmcgdW50dWsgdGlhcCBrZWxvbXBvazogDQoNCiQkDQpcYmVnaW57c3BsaXR9DQpcdGV4dHtOaWxhaSBUZW5nYWh9ICY9IFxmcmFjezUwLjAwMCArIDU0LjAwMH17Mn0gPSA1Mi4wMDAgXFwNClx0ZXh0e05pbGFpIFRlbmdhaH0gJj0gXGZyYWN7NTUuMDAwICsgNTkuMDAwfXsyfSA9IDU3LjAwMCBcXA0KXHRleHR7TmlsYWkgVGVuZ2FofSAmPSBcZnJhY3s2MC4wMDAgKyA2NC4wMDB9ezJ9ID0gNjIuMDAwIFxcDQpcdGV4dHtOaWxhaSBUZW5nYWh9ICY9IFxmcmFjezY1LjAwMCArIDY5LjAwMH17Mn0gPSA2Ny4wMDAgXFwNClx0ZXh0e05pbGFpIFRlbmdhaH0gJj0gXGZyYWN7NzAuMDAwICsgNzQuMDAwfXsyfSA9IDcyLjAwMA0KXGVuZHtzcGxpdH0NCiQkDQoNCioqMi4gTWVuZ2FsaWthbiBmcmVrdWVuc2kgZGVuZ2FuIG5pYWkgdGVuZ2FoKioNCg0KJCQNClxiZWdpbntzcGxpdH0NCmZpIFxjZG90IHhpJj0gNSBcY2RvdCA1Mi4wMDAmPSAyNjAuMDAwIFxcDQpmaSBcY2RvdCB4aSY9IDEwIFxjZG90IDU3LjAwMCY9IDU3MC4wMDAgXFwNCmZpIFxjZG90IHhpJj0gMTUgXGNkb3QgNjIuMDAwJj0gOTMwLjAwMCBcXA0KZmkgXGNkb3QgeGkmPSAxMiBcY2RvdCA2Ny4wMDAmPSA4MDQuMDAwIFxcDQpmaSBcY2RvdCB4aSY9IDggXGNkb3QgNzIuMDAwJj0gNTc2LjAwMA0KXGVuZHtzcGxpdH0NCiQkDQpIYXNpbCBwZXJrYWxpYW4gbmlsYWkgdGVuZ2FoIHNldGlhcCBrZWxhcyBkYW4gZnJla3VlbnNpbnlhIGRhcGF0IGRpbGloYXQgcGFkYSB0YWJlbCBiZXJpa3V0Lg0KDQp8IEhhcmdhIEhhbmRib2R5IHwgRnJla3VlbnNpIFwoKGZpKVwpICB8IE5pbGFpIFRlbmdhaCBcKCh4aSlcKSAgIHwgXCgoZmkueGkpXCkgICAgIHwNCnw6LS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS06fA0KfDUwLjAwMCAtIDU0LjAwMCB8IDUgICAgICAgICAgICAgICAgICAgfCA1Mi4wMDAgICAgICAgICAgICAgICAgICB8IDI2MC4wMDAgICAgICAgICB8DQp8NTUuMDAwIC0gNTkuMDAwIHwgMTAgICAgICAgICAgICAgICAgICB8IDU3LjAwMCAgICAgICAgICAgICAgICAgIHwgNTcwLjAwMCAgICAgICAgIHwNCnw2MC4wMDAgLSA2NC4wMDAgfCAxNSAgICAgICAgICAgICAgICAgIHwgNjIuMDAwICAgICAgICAgICAgICAgICAgfCA5MzAuMDAwICAgICAgICAgfA0KfDY1LjAwMCAtIDY5LjAwMCB8IDEyICAgICAgICAgICAgICAgICAgfCA2Ny4wMDAgICAgICAgICAgICAgICAgICB8IDgwNC4wMDAgICAgICAgICB8DQp8NzAuMDAwIC0gNzQuMDAwIHwgOCAgICAgICAgICAgICAgICAgICB8IDcyLjAwMCAgICAgICAgICAgICAgICAgIHwgNTc2LjAwMCAgICAgICAgIHwNCnwqKkpVTUxBSCoqICAgICAgfCA1MCAgICAgICAgICAgICAgICAgIHwqKkpVTUxBSCoqICAgICAgICAgICAgICAgfCAzLjE0MC4wMDAgICAgICAgfA0KDQpTZWhpbmdnYSxtZWFuIGRhdGEga2Vsb21wb2sgZGFwYXQgZGlwZXJvbGVoIG1lbGFsdWkgcGVyaGl0dW5nYW4gZGliYXdhaDoNCg0KJCQNClxiYXJ7eH0gPSBcZnJhY3tcc3VtIGZpIFxjZG90IHhpfXtcc3VtIGZpfQ0KJCQNCiQkDQpcYmFye3h9ID0gXGZyYWN7My4xNDAuMDAwfXs1MH09IDYyLjgwMA0KJCQNCkphZGksIG1lYW4gZGFyaSBoYXJnYSBoYW5kYm9keSBkaWF0YXMgYWRhbGFoICA2Mi44MDANCg0KDQoqKk1FRElBTioqDQoNClJ1bXVzIHVudHVrIG1lbmdoaXR1bmcgbWVkaWFuIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNClxbDQpcdGV4dHtNZWRpYW59ID0gUTIgPSBUYiArIFxsZWZ0KCBcZnJhY3tcZnJhY3sxfXsyfW4gLSBmX2t9e2ZfaX0gXHJpZ2h0KSBcY2RvdCBwDQpcXQ0KDQpkaW1hbmE6DQoNCjEuIFRiID0gVGVwaSBiYXdhaCBrZWxhcyANCjIuIFwoblwpID0gSnVtbGFoIHNlbHVydWggZnJla3VlbnNpDQozLiBcKGZrXCkgPSBKdW1sYWggc2VsdXJ1aCBmcmVrdWVuc2kgc2ViZWx1bSBrZWxhcyANCjQuIFwoZmlcKSA9ICBGcmVrdWVuc2kNCjUuIHAgPSBQYW5qYW5nIGtlbGFzIGludGVydmFsDQoNCkJlcmlrdXQgbGFuZ2thaC1sYW5na2FoIHVudHVrIG1lbmdoaXR1bmcgbWVkaWFuIHBhZGEgZGF0YSBrZWxvbXBvazoNCg0KKioxLiBNZW5jYXJpIHRlcGkgYmF3YWgga2VsYXMgZGFuIE1lbmNhcmkgZnJla3VlbnNpIGtvbXVsYXRpZiBrdXJhbmcgZGFyaSBrZWxhcyBtZWRpYW4gXChma1wpKiogDQoNCkp1bWxhaCBkYXRhIHlhbmcgZGliZXJpa2FuIHBhZGEgdGFiZWwgYWRhbGFoIDUwLiBTZWhpbmdnYSBsZXRhayBNZWRpYW4gKFEyKWJlcmFkYSBwYWRhIGRhdGEga2U6IFEyID0gwr0gw5cgNTAgPSAyNSAoTGV0YWsgbWVkaWFuIGJlcmFkYSBkaSBkYXRhIGtlLTI1KS4gU2ViZWx1bSBtZW5lbnR1a2FuIG5pbGFpIG1lZGlhbm55YSwga2l0YSB0ZW50dWthbiBmcmVrdWVuc2kga3VtdWxhdGlmIGt1cmFuZyBkYXJpIGRhbiBsZXRhayBrZWxhcyBkaSBtYW5hIHRlcmRhcGF0IGRhdGEgbWVkaWFuLiANCg0KDQp8IEhhcmdhIEhhbmRib2R5IHwgRnJla3VlbnNpIFwoKGZpKVwpICB8IFwoZmtcKQ0KfDotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLToNCnw1MC4wMDAgLSA1NC4wMDAgfCA1ICAgICAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgIA0KfDU1LjAwMCAtIDU5LjAwMCB8IDEwICAgICAgICAgICAgICAgICAgfCAxNSAgICAgICAgICAgICAgDQp8NjAuMDAwIC0gNjQuMDAwIHwgMTUgICAgICAgICAgICAgICAgICB8IDMwICAgICAgICAgICAgICAgIA0KfDY1LjAwMCAtIDY5LjAwMCB8IDEyICAgICAgICAgICAgICAgICAgfCA0MiAgICAgICAgICAgICAgIA0KfDcwLjAwMCAtIDc0LjAwMCB8IDggICAgICAgICAgICAgICAgICAgfCA1MCAgICAgICAgICAgICAgICAgDQogICAgDQoNCkJlcmRhc2Fya2FuIGRhdGEgcGFkYSB0YWJlbCBkaSBhdGFzLCBkYXBhdCBkaXBlcm9sZWggaW5mb3JtYXNpIHNlcGVydGkgYmVyaWt1dC4NCg0KLSBUZXBpIGJhd2FoIGtlbGFzIG1lZGlhbiAoVGIpID0gNjAuMDAwIOKAkyAwLjUgPSA1OS45OTkuNQ0KLSBQYW5qYW5nIGtlbGFzIChwKSA9IDUNCi0gRnJla3VlbnNpIGtvbXVsYXRpZiBrdXJhbmcgZGFyaSBrZWxhcyBtZWRpYW4gKFwoZmtcKSkgPSAxNQ0KLSBGcmVrdWVuc2kga2VsYXMgbWVkaWFuIChcKGZpXCkpICA9IDE1DQotIEp1bWxhaCBzZWx1cnVoIGZyZWt1ZW5zaSAoXChuXCkpID0gNTANCg0KU2VoaW5nZ2EsIG1lZGlhbiBkYXRhIGtlbG9tcG9rIGRhcGF0IGRpcGVyb2xlaCBtZWxhbHVpIHBlcmhpdHVuZ2FuIGRpYmF3YWg6DQoNCg0KXFsNClx0ZXh0e01lZGlhbn0gPSBUYiArIFxsZWZ0KCBcZnJhY3tcZnJhY3sxfXsyfW4gLSBmX2t9e2ZfaX0gXHJpZ2h0KSBcY2RvdCBwDQpcXQ0KXFsNClx0ZXh0e01lZGlhbn0gPSA1OS45OTkuNSArIFxsZWZ0KCBcZnJhY3tcZnJhY3sxfXsyfTUwIC0gMTV9ezE1fSBccmlnaHQpIFxjZG90IDUNClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDU5Ljk5OS41ICsgXGxlZnQoIFxmcmFjezI1IC0gMTV9ezE1fSBccmlnaHQpIFxjZG90IDUNClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDU5Ljk5OS41ICsgXGxlZnQoIFxmcmFjIHsxMH17MTV9IFxyaWdodCkgXGNkb3QgNQ0KXF0NClxbDQpcdGV4dHtNZWRpYW59ID0gNTkuOTk5LjUgKyAzLjMzID0gNjAuMDAyLjgzDQpcXQ0KDQpKYWRpLCBtZWRpYW4gZGFyaSBoYXJnYSBoYW5kYm9keSAgZGlhdGFzIGFkYWxhaCA2MC4wMDIuODMNCg0KKipNT0RVUyoqDQoNClJ1bXVzIHVudHVrIG1lbmdoaXR1bmcgbW9kdXMgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KXFsNClx0ZXh0e01vZHVzfSA9IE1vID0gVGIgKyBcbGVmdCggXGZyYWN7ZF8xfXtkXzEgKyBkXzJ9IFxyaWdodCkgXGNkb3QgcA0KXF0NCg0KZGltYW5hOg0KDQoxLiBUYiA9IFRlcGkgYmF3YWgga2VsYXMgbW9kdXMNCjIuIGQxID0gU2VsaXNpaCBmcmVrdWVuc2kga2VsYXMgbW9kdXMgZGVuZ2FuIGZyZWt1ZW5zaSBzZWJlbHVtIGtlbGFzIG1vZHVzDQozLiBkMiA9IFNlbGlzaWggZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRlbmdhbiBmcmVrdWVuc2kgc2V0ZWxhaCBrZWxhcyBtb2R1cw0KNC4gcCAgPSBQYW5qYW5nIGtlbGFzIGludGVydmFsDQoNCkRhcmkgZGF0YSBwYWRhIHRhYmVsIGRpa2V0YWh1aSBtb2R1cyBhZGEgcGFkYSBpbnRlcnZhbCA2MC4wMDAwIOKAkyA2NC4wMDAsIHNlaGluZ2dhDQoNCi0gVGIgPSA2MC4wMDAwIC0gMC41ID0gNTkuOTk5LjUgDQotIGQxID0gMTUgLSAxMCA9IDUNCi0gZDIgPSAxNSAtIDEyID0gMw0KLSBwID0gNQ0KDQpNYWthIG5pbGFpIG1vZHVzIGRhcmkgZGF0YSB0ZXJzZWJ1dCBhZGFsYWggOg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gTW8gPSBUYiArIFxsZWZ0KCBcZnJhY3tkXzF9e2RfMSArIGRfMn0gXHJpZ2h0KSBcY2RvdCBwDQpcXQ0KXFsNClx0ZXh0e01vZHVzfSA9IE1vID0gNTkuOTk5LjUgKyBcbGVmdCggXGZyYWN7NX17NSArIDN9IFxyaWdodCkgXGNkb3QgNQ0KXF0NClxbDQpcdGV4dHtNb2R1c30gPSBNbyA9IDU5Ljk5OS41ICArIFxsZWZ0KCBcZnJhY3s1fXs4fSBccmlnaHQpIFxjZG90IDUNClxdDQpcWw0KXHRleHR7TW9kdXN9ID0gNTkuOTk5LjUgICsgMy4xMjUgPSA2MC4wMDIuNjI1DQpcXQ0KDQpKYWRpLCBtb2R1cyAgZGFyaSBoYXJnYSBoYW5kYm9keSBkaWF0YXMgYWRhbGFoIDYwLjAwMi42MjUNCg0KDQojIyBLZXNlaGF0YW4NCg0KKipTdHVkaSBLYXN1czogQW5hbGlzaXMgVXNpYSBQYXNpZW4gUnVtYWggU2FraXQqKg0KDQpQYWRhIHN0dWRpIGthc3VzIGluaSwgZGF0YSB5YW5nIGRpZ3VuYWthbiBhZGFsYWggdXNpYSBwYXNpZW4sIHlhbmcgZGlhbmFsaXNpcyB1bnR1ayBtZW5naGl0dW5nIHVrdXJhbiBwZW11c2F0YW4gZGF0YSBzZXBlcnRpIG1lYW4sIG1lZGlhbiwgZGFuIG1vZHVzIGd1bmEgbWVuZ2dhbWJhcmthbiBkaXN0cmlidXNpIHVzaWEgcGFzaWVuIHNlY2FyYSBsZWJpaCBqZWxhcy4gRGVuZ2FuIHJpbmNpYW4gZGF0YSBzZWJhZ2FpIGJlcmlrdXQuDQoNCioqVGFiZWwgRGF0YSBLZWxvbXBvayBLZXNlaGF0YW4qKg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW1idWF0IGRhdGEga2Vsb21wb2sNCmxpYnJhcnkoa25pdHIpDQoNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgIlVzaWFfUGFzaWVuIiA9IGMoIjUgLSAxNSIsICIxNiAtIDI2IiwgIjI3IC0gMzciLCAiMzggLSA0OCIsICI0OSAtIDU5IiksDQogICJGcmVrdWVuc2kiID0gYygxMCwgOCwgMTUsIDIsIDUpDQopDQoNCg0KIyBNZW5hbXBpbGthbiB0YWJlbA0Ka2FibGUoZGF0YSwgYWxpZ24gPSAiYyIsIGNhcHRpb24gPSAiVGFiZWwgRGF0YSBLZWxvbXBvayB1bnR1ayBNZWFuLCBNZWRpYW4sIGRhbiBNb2R1cyIpDQpgYGANCg0KKipNRUFOKioNCg0KUnVtdXMgdW50dWsgbWVuZ2hpdHVuZyBtZWFuIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNCiQkDQpcYmFye3h9ID0gXGZyYWN7XHN1bSBmaSBcY2RvdCB4aX17XHN1bSBmaX0NCiQkDQoNCmRpbWFuYToNCg0KMS4gXChmaVwpID0gRnJla3VlbnNpDQoyLiBcKHhpXCkgPSBOaWxhaSBUZW5nYWgNCg0KQmVyaWt1dCBsYW5na2FoLWxhbmdrYWggdW50dWsgbWVuZ2hpdHVuZyBtZWFuIHBhZGEgZGF0YSBrZWxvbXBvazoNCg0KKioxLiBNZW5jYXJpIG5pbGFpIHRlbmdhaCoqDQoNClJ1bXVzIHVudHVrIG1lbmNhcmkgbmlsYWkgdGVuZ2FoIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQokJA0KXHRleHR7TmlsYWkgVGVuZ2FofSAoeGkpID0gXGRmcmFje1x0ZXh0e1RlcGkgYmF3YWgga2VsYXN9ICsgXHRleHR7VGVwaSBhdGFzIGtlbGFzfX17Mn0NCiQkDQoNCk5pbGFpIHRlbmdhaCAoXCh4aVwpKSBkaWhpdHVuZyB1bnR1ayB0aWFwIGtlbG9tcG9rOiANCg0KJCQNClxiZWdpbntzcGxpdH0NClx0ZXh0e05pbGFpIFRlbmdhaH0gJj0gXGZyYWN7NSArIDE1fXsyfSA9IDEwIFxcDQpcdGV4dHtOaWxhaSBUZW5nYWh9ICY9IFxmcmFjezE2ICsgMjZ9ezJ9ID0gMjEgXFwNClx0ZXh0e05pbGFpIFRlbmdhaH0gJj0gXGZyYWN7MjcgKyAzN317Mn0gPSAzMiBcXA0KXHRleHR7TmlsYWkgVGVuZ2FofSAmPSBcZnJhY3szOCArIDQ4fXsyfSA9IDQzIFxcDQpcdGV4dHtOaWxhaSBUZW5nYWh9ICY9IFxmcmFjezQ5ICsgNTl9ezJ9ID0gNTQNClxlbmR7c3BsaXR9DQokJA0KDQoqKjIuIE1lbmdhbGlrYW4gZnJla3VlbnNpIGRlbmdhbiBuaWFpIHRlbmdhaCoqDQoNCiQkDQpcYmVnaW57c3BsaXR9DQpmaSBcY2RvdCB4aSY9IDEwIFxjZG90IDEwJj0gMTAwIFxcDQpmaSBcY2RvdCB4aSY9IDggXGNkb3QgMjEmPSAxNjggXFwNCmZpIFxjZG90IHhpJj0gMTUgXGNkb3QgMzImPSA0ODAgXFwNCmZpIFxjZG90IHhpJj0gMiBcY2RvdCA0MyY9IDg2IFxcDQpmaSBcY2RvdCB4aSY9IDUgXGNkb3QgNTQmPSAyNzANClxlbmR7c3BsaXR9DQokJA0KDQpIYXNpbCBwZXJrYWxpYW4gbmlsYWkgdGVuZ2FoIHNldGlhcCBrZWxhcyBkYW4gZnJla3VlbnNpbnlhIGRhcGF0IGRpbGloYXQgcGFkYSB0YWJlbCBiZXJpa3V0Lg0KDQp8IFVzaWEgUGFzaWVuICAgIHwgRnJla3VlbnNpIFwoKGZpKVwpICB8IE5pbGFpIFRlbmdhaCBcKCh4aSlcKSAgIHwgXCgoZmkueGkpXCkgICAgIHwNCnw6LS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS06fA0KfCA1IC0gMTUgICAgICAgICB8IDEwICAgICAgICAgICAgICAgICAgfCAxMCAgICAgICAgICAgICAgICAgICAgICB8IDEwMCAgICAgICAgICAgICB8DQp8IDE2IC0gMjYgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICB8IDIxICAgICAgICAgICAgICAgICAgICAgIHwgMTY4ICAgICAgICAgICAgIHwNCnwgMjcgLSAzNyAgICAgICAgfCAxNSAgICAgICAgICAgICAgICAgIHwgMzIgICAgICAgICAgICAgICAgICAgICAgfCA0ODAgICAgICAgICAgICAgfA0KfCAzOCAtIDQ4ICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgfCA0MyAgICAgICAgICAgICAgICAgICAgICB8IDg2ICAgICAgICAgICAgICB8DQp8IDQ5IC0gNTkgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICB8IDU0ICAgICAgICAgICAgICAgICAgICAgIHwgMjcwICAgICAgICAgICAgIHwNCnwqKkpVTUxBSCoqICAgICAgfCA0MCAgICAgICAgICAgICAgICAgIHwqKkpVTUxBSCoqICAgICAgICAgICAgICAgfCAxLjEwNCAgICAgICAgICAgfA0KDQpTZWhpbmdnYSxtZWFuIGRhdGEga2Vsb21wb2sgZGFwYXQgZGlwZXJvbGVoIG1lbGFsdWkgcGVyaGl0dW5nYW4gZGliYXdhaDoNCg0KJCQNClxiYXJ7eH0gPSBcZnJhY3tcc3VtIGZpIFxjZG90IHhpfXtcc3VtIGZpfQ0KJCQNCiQkDQpcYmFye3h9ID0gXGZyYWN7MS4xMDR9ezQwfT0gMjcuNg0KJCQNCkphZGksIG1lYW4gZGFyaSB1c2lhIHBhc2llbiBydW1haCBzYWtpdCBkaWF0YXMgYWRhbGFoIDI3LjYNCg0KKipNRURJQU4qKg0KDQpSdW11cyB1bnR1ayBtZW5naGl0dW5nIG1lZGlhbiBhZGFsYWggc2ViYWdhaSBiZXJpa3V0Og0KDQpcWw0KXHRleHR7TWVkaWFufSA9IFEyID0gVGIgKyBcbGVmdCggXGZyYWN7XGZyYWN7MX17Mn1uIC0gZl9rfXtmX2l9IFxyaWdodCkgXGNkb3QgcA0KXF0NCg0KZGltYW5hOg0KDQoxLiBUYiA9IFRlcGkgYmF3YWgga2VsYXMgDQoyLiBcKG5cKSA9IEp1bWxhaCBzZWx1cnVoIGZyZWt1ZW5zaQ0KMy4gXChma1wpID0gSnVtbGFoIHNlbHVydWggZnJla3VlbnNpIHNlYmVsdW0ga2VsYXMgDQo0LiBcKGZpXCkgPSAgRnJla3VlbnNpDQo1LiBwID0gUGFuamFuZyBrZWxhcyBpbnRlcnZhbA0KDQpCZXJpa3V0IGxhbmdrYWgtbGFuZ2thaCB1bnR1ayBtZW5naGl0dW5nIG1lZGlhbiBwYWRhIGRhdGEga2Vsb21wb2s6DQoNCioqMS4gTWVuY2FyaSB0ZXBpIGJhd2FoIGtlbGFzIGRhbiBNZW5jYXJpIGZyZWt1ZW5zaSBrb211bGF0aWYga3VyYW5nIGRhcmkga2VsYXMgbWVkaWFuIFwoZmtcKSoqIA0KDQpKdW1sYWggZGF0YSB5YW5nIGRpYmVyaWthbiBwYWRhIHRhYmVsIGFkYWxhaCA0MC4gU2VoaW5nZ2EgbGV0YWsgTWVkaWFuIChRMiliZXJhZGEgcGFkYSBkYXRhIGtlOiBRMiA9IMK9IMOXIDQwID0gMjAgKExldGFrIG1lZGlhbiBiZXJhZGEgZGkgZGF0YSBrZS0yMCkuIFNlYmVsdW0gbWVuZW50dWthbiBuaWxhaSBtZWRpYW5ueWEsIGtpdGEgdGVudHVrYW4gZnJla3VlbnNpIGt1bXVsYXRpZiBrdXJhbmcgZGFyaSBkYW4gbGV0YWsga2VsYXMgZGkgbWFuYSB0ZXJkYXBhdCBkYXRhIG1lZGlhbi4gDQoNCnwgVXNpYSBQYXNpZW4gICAgfCBGcmVrdWVuc2kgXCgoZmkpXCkgIHwgXChma1wpDQp8Oi0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOg0KfCA1IC0gMTUgICAgICAgICB8IDEwICAgICAgICAgICAgICAgICAgfCAxMCAgICAgICAgICAgICAgICAgICANCnwgMTYgLSAyNiAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgIHwgMTggICAgICAgICAgICAgICAgDQp8IDI3IC0gMzcgICAgICAgIHwgMTUgICAgICAgICAgICAgICAgICB8IDMzICAgICAgICAgICAgICAgICAgICAgDQp8IDM4IC0gNDggICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICB8IDM1ICAgICAgICAgICAgICAgDQp8IDQ5IC0gNTkgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICB8IDQwICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCkJlcmRhc2Fya2FuIGRhdGEgcGFkYSB0YWJlbCBkaSBhdGFzLCBkYXBhdCBkaXBlcm9sZWggaW5mb3JtYXNpIHNlcGVydGkgYmVyaWt1dC4NCg0KLSBUZXBpIGJhd2FoIGtlbGFzIG1lZGlhbiAoVGIpID0gMjcg4oCTIDAuNSA9IDI2LjUNCi0gUGFuamFuZyBrZWxhcyAocCkgPSAxMQ0KLSBGcmVrdWVuc2kga29tdWxhdGlmIGt1cmFuZyBkYXJpIGtlbGFzIG1lZGlhbiAoXChma1wpKSA9IDE4DQotIEZyZWt1ZW5zaSBrZWxhcyBtZWRpYW4gKFwoZmlcKSkgID0gMTUNCi0gSnVtbGFoIHNlbHVydWggZnJla3VlbnNpIChcKG5cKSkgPSA0MA0KDQpTZWhpbmdnYSwgbWVkaWFuIGRhdGEga2Vsb21wb2sgZGFwYXQgZGlwZXJvbGVoIG1lbGFsdWkgcGVyaGl0dW5nYW4gZGliYXdhaDoNCg0KXFsNClx0ZXh0e01lZGlhbn0gPSBUYiArIFxsZWZ0KCBcZnJhY3tcZnJhY3sxfXsyfW4gLSBmX2t9e2ZfaX0gXHJpZ2h0KSBcY2RvdCBwDQpcXQ0KXFsNClx0ZXh0e01lZGlhbn0gPSAyNi41ICsgXGxlZnQoIFxmcmFje1xmcmFjezF9ezJ9NDAgLSAxOH17MTV9IFxyaWdodCkgXGNkb3QgMTENClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDI2LjUgKyBcbGVmdCggXGZyYWN7MjAgLSAxOH17MTV9IFxyaWdodCkgXGNkb3QgMTENClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDI2LjUgKyBcbGVmdCggXGZyYWMgezJ9ezE1fSBccmlnaHQpIFxjZG90IDExDQpcXQ0KXFsNClx0ZXh0e01lZGlhbn0gPSAyNi41ICsgMS40NiA9IDI3Ljk2DQpcXQ0KDQpKYWRpLCBtZWRpYW4gZGFyaSB1c2lhIHBhc2llbiBydW1haCBzYWtpdCBkaWF0YXMgYWRhbGFoIDI3Ljk2DQoNCioqTU9EVVMqKg0KDQpSdW11cyB1bnR1ayBtZW5naGl0dW5nIG1vZHVzIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNClxbDQpcdGV4dHtNb2R1c30gPSBNbyA9IFRiICsgXGxlZnQoIFxmcmFje2RfMX17ZF8xICsgZF8yfSBccmlnaHQpIFxjZG90IHANClxdDQoNCmRpbWFuYToNCg0KMS4gVGIgPSBUZXBpIGJhd2FoIGtlbGFzIG1vZHVzDQoyLiBkMSA9IFNlbGlzaWggZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRlbmdhbiBmcmVrdWVuc2kgc2ViZWx1bSBrZWxhcyBtb2R1cw0KMy4gZDIgPSBTZWxpc2loIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkZW5nYW4gZnJla3VlbnNpIHNldGVsYWgga2VsYXMgbW9kdXMNCjQuIHAgID0gUGFuamFuZyBrZWxhcyBpbnRlcnZhbA0KDQpEYXJpIGRhdGEgcGFkYSB0YWJlbCBkaWtldGFodWkgbW9kdXMgYWRhIHBhZGEgaW50ZXJ2YWwgMjcg4oCTIDM3LCBzZWhpbmdnYQ0KDQotIFRiID0gMjcgLSAwLDUgPSAyNi41DQotIGQxID0gMTUgLSA4ID0gNw0KLSBkMiA9IDE1IC0gMiA9IDEzDQotIHAgPSAxMQ0KDQpNYWthIG5pbGFpIG1vZHVzIGRhcmkgZGF0YSB0ZXJzZWJ1dCBhZGFsYWggOg0KDQpcWw0KXHRleHR7TW9kdXN9ID0gTW8gPSBUYiArIFxsZWZ0KCBcZnJhY3tkXzF9e2RfMSArIGRfMn0gXHJpZ2h0KSBcY2RvdCBwDQpcXQ0KXFsNClx0ZXh0e01vZHVzfSA9IE1vID0gMjYuNSArIFxsZWZ0KCBcZnJhY3s3fXs3ICsgMTN9IFxyaWdodCkgXGNkb3QgMTENClxdDQpcWw0KXHRleHR7TW9kdXN9ID0gTW8gPSAyNi41ICsgXGxlZnQoIFxmcmFjezd9ezIwfSBccmlnaHQpIFxjZG90IDExDQpcXQ0KXFsNClx0ZXh0e01vZHVzfSA9IDI2LjUgKyAzLjg1ID0gMzAuMzUNClxdDQoNCkphZGksIG1vZHVzICBkYXJpIHVzaWEgcGFzaWVuIHJ1bWFoIHNha2l0IGRpYXRhcyBhZGFsYWggMzAuMzUNCg0KDQojIyBQZW5kaWRpa2FuDQoNCioqU3R1ZGkgS2FzdXM6IEFuYWxpc2lzIE5pbGFpIFVqaWFuIE1haGFzaXN3YSoqDQoNClBhZGEgc3R1ZGkga2FzdXMgaW5pLCBkYXRhIHlhbmcgZGlndW5ha2FuIGFkYWxhaCBuaWxhaSB1amlhbiBtYWhhc2lzd2EsIHlhbmcgZGlhbmFsaXNpcyB1bnR1ayBtZW5naGl0dW5nIHVrdXJhbiBwZW11c2F0YW4gZGF0YSBzZXBlcnRpIG1lYW4sIG1lZGlhbiwgZGFuIG1vZHVzIGd1bmEgbWVuZ2dhbWJhcmthbiBkaXN0cmlidXNpIG5pbGFpIG1haGFzaXN3YSBzZWNhcmEgbGViaWggamVsYXMuIERlbmdhbiByaW5jaWFuIGRhdGEgc2ViYWdhaSBiZXJpa3V0Lg0KDQoqKlRhYmVsIERhdGEgS2Vsb21wb2sgUGVuZGlkaWthbioqDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIE1lbWJ1YXQgZGF0YSBrZWxvbXBvaw0KbGlicmFyeShrbml0cikNCg0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICAiTmlsYWlfVWppYW4iID0gYygiNzYgLSA4MCIsICI4MSAtIDg1IiwgIjg2IC0gOTAiLCAiOTEgLSA5NSIsICI5NiAtIDEwMCIpLA0KICAiRnJla3VlbnNpIiA9IGMoNiwgNywgOCwgNCwgNSkNCikNCg0KDQojIE1lbmFtcGlsa2FuIHRhYmVsDQprYWJsZShkYXRhLCBhbGlnbiA9ICJjIiwgY2FwdGlvbiA9ICJUYWJlbCBEYXRhIEtlbG9tcG9rIHVudHVrIE1lYW4sIE1lZGlhbiwgZGFuIE1vZHVzIikNCmBgYA0KDQoqKk1FQU4qKg0KDQpSdW11cyB1bnR1ayBtZW5naGl0dW5nIG1lYW4gYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KJCQNClxiYXJ7eH0gPSBcZnJhY3tcc3VtIGZpIFxjZG90IHhpfXtcc3VtIGZpfQ0KJCQNCg0KZGltYW5hOg0KDQoxLiBcKGZpXCkgPSBGcmVrdWVuc2kNCjIuIFwoeGlcKSA9IE5pbGFpIFRlbmdhaA0KDQpCZXJpa3V0IGxhbmdrYWgtbGFuZ2thaCB1bnR1ayBtZW5naGl0dW5nIG1lYW4gcGFkYSBkYXRhIGtlbG9tcG9rOg0KDQoqKjEuIE1lbmNhcmkgbmlsYWkgdGVuZ2FoKioNCg0KUnVtdXMgdW50dWsgbWVuY2FyaSBuaWxhaSB0ZW5nYWggYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCiQkDQpcdGV4dHtOaWxhaSBUZW5nYWh9ICh4aSkgPSBcZGZyYWN7XHRleHR7VGVwaSBiYXdhaCBrZWxhc30gKyBcdGV4dHtUZXBpIGF0YXMga2VsYXN9fXsyfQ0KJCQNCg0KTmlsYWkgdGVuZ2FoIChcKHhpXCkpIGRpaGl0dW5nIHVudHVrIHRpYXAga2Vsb21wb2s6IA0KDQokJA0KXGJlZ2lue3NwbGl0fQ0KXHRleHR7TmlsYWkgVGVuZ2FofSAmPSBcZnJhY3s3NiArIDgwfXsyfSA9IDc4IFxcDQpcdGV4dHtOaWxhaSBUZW5nYWh9ICY9IFxmcmFjezgxICsgODV9ezJ9ID0gODMgXFwNClx0ZXh0e05pbGFpIFRlbmdhaH0gJj0gXGZyYWN7ODYgKyA5MH17Mn0gPSA4OCBcXA0KXHRleHR7TmlsYWkgVGVuZ2FofSAmPSBcZnJhY3s5MSArIDk1fXsyfSA9IDkzIFxcDQpcdGV4dHtOaWxhaSBUZW5nYWh9ICY9IFxmcmFjezk2ICsgMTAwfXsyfSA9IDk4DQpcZW5ke3NwbGl0fQ0KJCQNCg0KKioyLiBNZW5nYWxpa2FuIGZyZWt1ZW5zaSBkZW5nYW4gbmlhaSB0ZW5nYWgqKg0KDQokJA0KXGJlZ2lue3NwbGl0fQ0KZmkgXGNkb3QgeGkmPSA2IFxjZG90IDc4Jj0gNDY4IFxcDQpmaSBcY2RvdCB4aSY9IDcgXGNkb3QgODMmPSA1ODEgXFwNCmZpIFxjZG90IHhpJj0gOCBcY2RvdCA4OCY9IDcwNCBcXA0KZmkgXGNkb3QgeGkmPSA0IFxjZG90IDkzJj0gMzcyIFxcDQpmaSBcY2RvdCB4aSY9IDUgXGNkb3QgOTgmPSA0OTANClxlbmR7c3BsaXR9DQokJA0KDQpIYXNpbCBwZXJrYWxpYW4gbmlsYWkgdGVuZ2FoIHNldGlhcCBrZWxhcyBkYW4gZnJla3VlbnNpbnlhIGRhcGF0IGRpbGloYXQgcGFkYSB0YWJlbCBiZXJpa3V0Lg0KDQp8IE5pbGFpIFVqaWFuICAgIHwgRnJla3VlbnNpIFwoKGZpKVwpICB8IE5pbGFpIFRlbmdhaCBcKCh4aSlcKSAgIHwgXCgoZmkueGkpXCkgICAgIHwNCnw6LS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS06fA0KfCA3NiAtIDgwICAgICAgICB8IDYgICAgICAgICAgICAgICAgICAgfCA3OCAgICAgICAgICAgICAgICAgICAgICB8IDQ2OCAgICAgICAgICAgICB8DQp8IDgxIC0gODUgICAgICAgIHwgNyAgICAgICAgICAgICAgICAgICB8IDgzICAgICAgICAgICAgICAgICAgICAgIHwgNTgxICAgICAgICAgICAgIHwNCnwgODYgLSA5MCAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgIHwgODggICAgICAgICAgICAgICAgICAgICAgfCA3MDQgICAgICAgICAgICAgfA0KfCA5MSAtIDk1ICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgfCA5MyAgICAgICAgICAgICAgICAgICAgICB8IDM3MiAgICAgICAgICAgICB8DQp8IDk2IC0gMTAwICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICB8IDk4ICAgICAgICAgICAgICAgICAgICAgIHwgNDkwICAgICAgICAgICAgIHwNCnwqKkpVTUxBSCoqICAgICAgfCAzMCAgICAgICAgICAgICAgICAgIHwqKkpVTUxBSCoqICAgICAgICAgICAgICAgfCAyLjYxNSAgICAgICAgICAgfA0KDQpTZWhpbmdnYSxtZWFuIGRhdGEga2Vsb21wb2sgZGFwYXQgZGlwZXJvbGVoIG1lbGFsdWkgcGVyaGl0dW5nYW4gZGliYXdhaDoNCg0KJCQNClxiYXJ7eH0gPSBcZnJhY3tcc3VtIGZpIFxjZG90IHhpfXtcc3VtIGZpfQ0KJCQNCiQkDQpcYmFye3h9ID0gXGZyYWN7Mi42MTV9ezMwfT0gODcuMTYNCiQkDQpKYWRpLCBtZWFuIGRhcmkgbmlsYWkgdWppYW4gbWFoYXNpc3dhICBkaWF0YXMgYWRhbGFoIDg3LjE2DQoNCioqTUVESUFOKioNCg0KUnVtdXMgdW50dWsgbWVuZ2hpdHVuZyBtZWRpYW4gYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KXFsNClx0ZXh0e01lZGlhbn0gPSBRMiA9IFRiICsgXGxlZnQoIFxmcmFje1xmcmFjezF9ezJ9biAtIGZfa317Zl9pfSBccmlnaHQpIFxjZG90IHANClxdDQoNCmRpbWFuYToNCg0KMS4gVGIgPSBUZXBpIGJhd2FoIGtlbGFzIA0KMi4gXChuXCkgPSBKdW1sYWggc2VsdXJ1aCBmcmVrdWVuc2kNCjMuIFwoZmtcKSA9IEp1bWxhaCBzZWx1cnVoIGZyZWt1ZW5zaSBzZWJlbHVtIGtlbGFzIA0KNC4gXChmaVwpID0gIEZyZWt1ZW5zaQ0KNS4gcCA9IFBhbmphbmcga2VsYXMgaW50ZXJ2YWwNCg0KQmVyaWt1dCBsYW5na2FoLWxhbmdrYWggdW50dWsgbWVuZ2hpdHVuZyBtZWRpYW4gcGFkYSBkYXRhIGtlbG9tcG9rOg0KDQoqKjEuIE1lbmNhcmkgdGVwaSBiYXdhaCBrZWxhcyBkYW4gTWVuY2FyaSBmcmVrdWVuc2kga29tdWxhdGlmIGt1cmFuZyBkYXJpIGtlbGFzIG1lZGlhbiBcKGZrXCkqKiANCg0KSnVtbGFoIGRhdGEgeWFuZyBkaWJlcmlrYW4gcGFkYSB0YWJlbCBhZGFsYWggMzAuIFNlaGluZ2dhIGxldGFrIE1lZGlhbiAoUTIpYmVyYWRhIHBhZGEgZGF0YSBrZTogUTIgPSDCvSDDlyAzMCA9IDE1IChMZXRhayBtZWRpYW4gYmVyYWRhIGRpIGRhdGEga2UtMTUpLiBTZWJlbHVtIG1lbmVudHVrYW4gbmlsYWkgbWVkaWFubnlhLCBraXRhIHRlbnR1a2FuIGZyZWt1ZW5zaSBrdW11bGF0aWYga3VyYW5nIGRhcmkgZGFuIGxldGFrIGtlbGFzIGRpIG1hbmEgdGVyZGFwYXQgZGF0YSBtZWRpYW4uIA0KDQoNCnwgTmlsYWkgVWppYW4gICAgfCBGcmVrdWVuc2kgXCgoZmkpXCkgIHwgXChma1wpDQp8Oi0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOg0KfCA3NiAtIDgwICAgICAgICB8IDYgICAgICAgICAgICAgICAgICAgfCA2ICAgICAgICAgICAgICAgIA0KfCA4MSAtIDg1ICAgICAgICB8IDcgICAgICAgICAgICAgICAgICAgfCAxMyAgICAgICAgICAgICAgICAgICANCnwgODYgLSA5MCAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgIHwgMjEgICAgICAgICAgICAgICAgIA0KfCA5MSAtIDk1ICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgfCAyNSAgICAgICAgICAgICAgICAgICANCnwgOTYgLSAxMDAgICAgICAgfCA1ICAgICAgICAgICAgICAgICAgIHwgMzAgICAgICAgICAgICAgICAgDQoNCkJlcmRhc2Fya2FuIGRhdGEgcGFkYSB0YWJlbCBkaSBhdGFzLCBkYXBhdCBkaXBlcm9sZWggaW5mb3JtYXNpIHNlcGVydGkgYmVyaWt1dC4NCg0KLSBUZXBpIGJhd2FoIGtlbGFzIG1lZGlhbiAoVGIpID0gODYg4oCTIDAuNSA9IDg1LjUNCi0gUGFuamFuZyBrZWxhcyAocCkgPSA1DQotIEZyZWt1ZW5zaSBrb211bGF0aWYga3VyYW5nIGRhcmkga2VsYXMgbWVkaWFuIChcKGZrXCkpID0gMTMNCi0gRnJla3VlbnNpIGtlbGFzIG1lZGlhbiAoXChmaVwpKSAgPSA4DQotIEp1bWxhaCBzZWx1cnVoIGZyZWt1ZW5zaSAoXChuXCkpID0gMzANCg0KU2VoaW5nZ2EsIG1lZGlhbiBkYXRhIGtlbG9tcG9rIGRhcGF0IGRpcGVyb2xlaCBtZWxhbHVpIHBlcmhpdHVuZ2FuIGRpYmF3YWg6DQoNClxbDQpcdGV4dHtNZWRpYW59ID0gVGIgKyBcbGVmdCggXGZyYWN7XGZyYWN7MX17Mn1uIC0gZl9rfXtmX2l9IFxyaWdodCkgXGNkb3QgcA0KXF0NClxbDQpcdGV4dHtNZWRpYW59ID0gODUuNSArIFxsZWZ0KCBcZnJhY3tcZnJhY3sxfXsyfTMwIC0gMTN9ezh9IFxyaWdodCkgXGNkb3QgNQ0KXF0NClxbDQpcdGV4dHtNZWRpYW59ID0gODUuNSArIFxsZWZ0KCBcZnJhY3sxNSAtIDEzfXs4fSBccmlnaHQpIFxjZG90IDUNClxdDQpcWw0KXHRleHR7TWVkaWFufSA9IDg1LjUgKyBcbGVmdCggXGZyYWMgezJ9ezh9IFxyaWdodCkgXGNkb3QgNQ0KXF0NClxbDQpcdGV4dHtNZWRpYW59ID0gODUuNSArIDEuMjUgPSA4Ni43NQ0KXF0NCg0KSmFkaSwgbWVkaWFuIGRhcmkgbmlsYWkgdWppYW4gbWFoYXNpc3dhICBkaWF0YXMgYWRhbGFoIDg2Ljc1DQoNCioqTU9EVVMqKg0KDQpSdW11cyB1bnR1ayBtZW5naGl0dW5nIG1vZHVzIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNClxbDQpcdGV4dHtNb2R1c30gPSBNbyA9IFRiICsgXGxlZnQoIFxmcmFje2RfMX17ZF8xICsgZF8yfSBccmlnaHQpIFxjZG90IHANClxdDQoNCmRpbWFuYToNCg0KMS4gVGIgPSBUZXBpIGJhd2FoIGtlbGFzIG1vZHVzDQoyLiBkMSA9IFNlbGlzaWggZnJla3VlbnNpIGtlbGFzIG1vZHVzIGRlbmdhbiBmcmVrdWVuc2kgc2ViZWx1bSBrZWxhcyBtb2R1cw0KMy4gZDIgPSBTZWxpc2loIGZyZWt1ZW5zaSBrZWxhcyBtb2R1cyBkZW5nYW4gZnJla3VlbnNpIHNldGVsYWgga2VsYXMgbW9kdXMNCjQuIHAgID0gUGFuamFuZyBrZWxhcyBpbnRlcnZhbA0KDQpEYXJpIGRhdGEgcGFkYSB0YWJlbCBkaWtldGFodWkgbW9kdXMgYWRhIHBhZGEgaW50ZXJ2YWwgODYg4oCTIDkwLCBzZWhpbmdnYQ0KDQotIFRiID0gODYgLSAwLjUgPSA4NS41DQotIGQxID0gOCAtIDcgPSAxDQotIGQyID0gOCAtIDQgPSA0DQotIHAgPSA1DQoNCk1ha2EgbmlsYWkgbW9kdXMgZGFyaSBkYXRhIHRlcnNlYnV0IGFkYWxhaCA6DQoNClxbDQpcdGV4dHtNb2R1c30gPSBNbyA9IFRiICsgXGxlZnQoIFxmcmFje2RfMX17ZF8xICsgZF8yfSBccmlnaHQpIFxjZG90IHANClxdDQpcWw0KXHRleHR7TW9kdXN9ID0gTW8gPSA4NS41ICsgXGxlZnQoIFxmcmFjezF9ezEgKyA0fSBccmlnaHQpIFxjZG90IDUNClxdDQpcWw0KXHRleHR7TW9kdXN9ID0gTW8gPSA4NS41ICsgXGxlZnQoIFxmcmFjezd9ezV9IFxyaWdodCkgXGNkb3QgNQ0KXF0NClxbDQpcdGV4dHtNb2R1c30gPSA4NS41ICsgNyA9IDkyLjUNClxdDQoNCkphZGksIG1vZHVzICBkYXJpIG5pbGFpIHVqaWFuIG1haGFzaXN3YSBkaWF0YXMgYWRhbGFoIDkyLjUNCg0KIyBSZWZlcmVuc2kNCg0KMS4gU2NyaWJkLiAobi5kLikuIFJ1bXVzIE1lYW4sIE1lZGlhbiwgTW9kdXMgRGF0YSBLZWxvbXBvay4gUmV0cmlldmVkIGZyb20gaHR0cHM6Ly93d3cuc2NyaWJkLmNvbS9kb2N1bWVudC82MTMwNDQ5ODAvUnVtdXMtTWVhbi1NZWRpYW4tTW9kdXMtRGF0YS1LZWxvbXBvaz9fZ2w9MWhtNHcyOV9nY2xfYXUqTWprek1qZzJOakV5TGpFM016RTVNek0xTkRnDQoNCjIuIFJ1YW5nZ3VydS4gKDIwMjAsIE9jdG9iZXIgMTUpLiBNZW5naGl0dW5nIFVrdXJhbiBQZW11c2F0YW4gRGF0YTogTWVhbiwgTWVkaWFuLCBkYW4gTW9kdXMuIFJ1YW5nZ3VydS4gUmV0cmlldmVkIGZyb20gaHR0cHM6Ly93d3cucnVhbmdndXJ1LmNvbS9ibG9nL21lbmdoaXR1bmctdWt1cmFuLXBlbXVzYXRhbi1kYXRhLW1lYW4tbWVkaWFuLWRhbi1tb2R1cw0KDQozLiBBbGdvcml0bWEuICgyMDIxLCBNYXJjaCAyNSkuIFVrdXJhbiBQZW11c2F0YW4gRGF0YS4gQWxnb3JpdG1hLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL2Jsb2cuYWxnb3JpdC5tYS91a3VyYW4tcGVtdXNhdGFuLWRhdGEvDQoNCjQuIEthdGFkYXRhLiAoMjAyMiwgTm92ZW1iZXIgMykuIENhcmEgTWVuZ2hpdHVuZyBNZWFuIERhdGEgS2Vsb21wb2sgU2VydGEgQ29udG9oIFNvYWwgZGFuIFBlbWJhaGFzYW5ueWEuIEthdGFkYXRhLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL2thdGFkYXRhLmNvLmlkL2Jlcml0YS9uYXNpb25hbC82MzVhMmNlMThmM2VlL2NhcmEtbWVuZ2hpdHVuZy1tZWFuLWRhdGEta2Vsb21wb2stc2VydGEtY29udG9oLXNvYWwtZGFuLXBlbWJhaGFzYW5ueWENCg0KNS4gTWFtaWtvcy4gKDIwMjAsIE9jdG9iZXIgMTkpLiBDb250b2ggU29hbCBNZWFuLCBNZWRpYW4sIE1vZHVzIERhdGEgVHVuZ2dhbCBTZXJ0YSBEYXRhIEtlbG9tcG9rLiBNYW1pa29zLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL21hbWlrb3MuY29tL2luZm8vY29udG9oLXNvYWwtbWVhbi1tZWRpYW4tbW9kdXMtZGF0YS10dW5nZ2FsLXNlcnRhLWRhdGEta2Vsb21wb2stcGxqci8NCg0KNi4gU2NyaWJkLiAoMjAyMCkuIFVrdXJhbiBQZW11c2F0YW4gRGF0YSBLZWxvbXBvay4gU2NyaWJkLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL2lkLnNjcmliZC5jb20vcHJlc2VudGF0aW9uLzUzNTY4OTUzMS9Va3VyYW4tUGVtdXNhdGFuLURhdGEtS2Vsb21wb2sNCg0KNy4gS29tcGFzLiAoMjAyMCwgT2N0b2JlciAxNSkuIFVrdXJhbiBQZW11c2F0YW4gZGFuIFBlbnllYmFyYW4gRGF0YSBCZXJrZWxvbXBvay4gS29tcGFzLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL3d3dy5rb21wYXMuY29tL3Nrb2xhL3JlYWQvMjAyMC8xMC8xNS8xNzUxNTQ2NjkvdWt1cmFuLXBlbXVzYXRhbi1kYW4tcGVueWViYXJhbi1kYXRhLWJlcmtlbG9tcG9rP3BhZ2U9YWxsDQoNCg0KDQo=