Tugas Pertemuan 11

Ukuran Penyebaran Data


Latihan 1

  • “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 Rata-rata, Median, dan Standar Deviasi

Rata-rata

\[\bar{x} = \frac{\sum x_i}{n}\] - \(\bar{x}\) = Rata-rata - \(\sum x_i\) = Jumlah seluruh nilai data - \(n\) = Total jumlah data

  • Cabang A: \[\bar{x} = \frac{50+55+60+65+70}{5}=\frac{300}{5}=60 \]

  • Cabang B: \[\bar{x} = \frac{40+50+60+70+80}{5}=\frac{300}{5}=60 \]

  • Cabang C: \[\bar{x} = \frac{30+30+35+40+45}{5}=\frac{180}{5}=36\]

  • Cabang D: \[\bar{x} = \frac{70+75+80+85+90}{5}=\frac{400}{5}=80\]

Median

Karena datanya tunggal, median dapat dihitung sebagai berikut:

  • Cabang A: 60
  • Cabang B: 60
  • Cabang C: 35
  • Cabang D: 80

Standar Deviasi

\[s = \sqrt{\frac{\sum(x_i - \bar{x})^2}{n-1}}\]

  • Cabang A: \[s = \sqrt{\frac{(50-60)^2 + (55-60)^2 + (60-60)^2 + (65-60)^2 + (70-60)^2}{5-1}}=\sqrt{\frac{250}{4}}=\sqrt{62.5}\approx7.91\]

  • Cabang B: \[s = \sqrt{\frac{(40-60)^2 + (50-60)^2 + (60-60)^2 + (70-60)^2 + (80-60)^2}{5-1}}=\sqrt{\frac{1000}{4}}=\sqrt{250}\approx15.81\]

  • Cabang C: \[s = \sqrt{\frac{(30-36)^2 + (30-36)^2 + (35-36)^2 + (40-36)^2 + (45-36)^2}{5-1}}=\sqrt{\frac{170}{4}}=\sqrt{42.5}\approx6.52\]

  • Cabang D: \[s = \sqrt{\frac{(70-80)^2 + (75-80)^2 + (80-80)^2 + (85-80)^2 + (90-80)^2}{5-1}}=\sqrt{\frac{250}{4}}=\sqrt{62.5}\approx7.91\]

Cabang Mana yang Memiliki Penyebaran Data Terkecil?

  • Cabang A memiliki standar deviasi sebesar 7.91, yang menunjukkan bahwa variasi datanya relatif rendah. Namun, angka ini sedikit lebih tinggi dibandingkan dengan Cabang C.

  • Cabang B memiliki standar deviasi tertinggi di antara semua cabang, yaitu 15.81, menandakan adanya fluktuasi yang signifikan dalam penjualannya, dengan kisaran dari 40 juta hingga 80 juta.

  • Cabang C menampilkan standar deviasi terendah, yaitu 6.52, yang mengindikasikan bahwa data penjualannya sangat konsisten dan mendekati rata-rata, yang berada pada angka 36 juta.

  • Cabang D juga menunjukkan standar deviasi sebesar 7.91, sama dengan Cabang A, namun sedikit lebih besar dibandingkan dengan Cabang C.

Dengan demikian, dapat disimpulkan bahwa Cabang C memiliki penyebaran data yang paling kecil dengan standar deviasi 6.52, yang mencerminkan bahwa penjualannya lebih homogen jika dibandingkan dengan cabang-cabang lainnya.

Konsekuensi dari Penyebaran Kecil:

Penyebaran yang kecil di Cabang C memiliki implikasi positif dan negatif:

Positif:

Konsistensi data menunjukkan bahwa penjualan Cabang C lebih mudah diprediksi dibandingkan cabang lain. Dengan data yang seragam, perbaikan strategi (seperti promosi atau produk baru) lebih mudah diukur karena dampaknya tidak tersebar luas.

Negatif:

Semua nilai di Cabang C berada di bawah target 50 juta rupiah, yang menunjukkan bahwa meskipun seragam, performanya tetap jauh dari memadai. Strategi peningkatan sangat diperlukan.

Cabang Mana Saja yang Tidak Mencapai Target Penjualan Minimum 50 Juta?

  1. Cabang A (Data: 50, 55, 60, 65, 70):
    • Penjualannya terdiri dari 50 juta, 55 juta, 60 juta, 65 juta, dan 70 juta.
    • Semua data berada di atas atau sama dengan 50 juta, sehingga Cabang A berhasil memenuhi target.
  2. Cabang B (Data: 40, 50, 60, 70, 80):
    • Penjualannya terdiri dari 40 juta, 50 juta, 60 juta, 70 juta, dan 80 juta.
    • Terdapat satu nilai, yaitu 40 juta, yang di bawah 50 juta, sehingga Cabang B tidak memenuhi target pada sebagian data.
  3. Cabang C (Data: 30, 30, 35, 40, 45):
    • Penjualannya terdiri dari 30 juta, 30 juta, 35 juta, 40 juta, dan 45 juta.
    • Semua nilai penjualannya di bawah 50 juta, sehingga Cabang C tidak berhasil memenuhi target secara keseluruhan.
  4. Cabang D (Data: 70, 75, 80, 85, 90):
    • Penjualannya terdiri dari 70 juta, 75 juta, 80 juta, 85 juta, dan 90 juta.
    • Semua data berada di atas 50 juta, sehingga Cabang D berhasil memenuhi target.

Kesimpulannya, Cabang C adalah satu-satunya cabang yang seluruh datanya berada di bawah target penjualan minimum sebesar 50 juta rupiah.

Visualisasi Boxplot

Strategi Peningkatan Penjualan untuk Seorang Manajer Perusahaan

Sebagai seorang manajer perusahaan, informasi analisis penjualan ini dapat dimanfaatkan untuk merumuskan strategi peningkatan penjualan yang efektif. Berikut adalah beberapa langkah yang dapat diambil:

1. Fokus pada Peningkatan Cabang C

  • Identifikasi Langkah-Langkah Strategis: Perlu dilakukan evaluasi mendalam untuk mengidentifikasi langkah-langkah yang dapat diambil agar Cabang C mencapai target minimum penjualan sebesar 50 juta rupiah. Ini dapat mencakup penerapan strategi pemasaran yang lebih agresif, serta penyesuaian produk agar lebih sesuai dengan kebutuhan pelanggan.

2. Pertahankan Konsistensi di Cabang A dan D

  • Stabilitas Kinerja: Cabang A dan D telah menunjukkan kinerja yang baik dan konsisten. Penting untuk menjaga stabilitas ini dengan melakukan analisis rutin dan memastikan bahwa faktor-faktor yang mendukung kinerja positif tetap terjaga.

3. Atasi Risiko di Cabang B

  • Manajemen Ketidakpastian: Cabang B memiliki penyebaran data yang lebih besar, yang menunjukkan adanya risiko dalam hasil penjualan. Langkah-langkah perlu diambil untuk mengelola ketidakpastian ini, seperti meningkatkan pengawasan terhadap tren penjualan dan menerapkan strategi mitigasi untuk mengurangi fluktuasi yang mungkin terjadi.

Dengan pendekatan yang terfokus dan strategis ini, perusahaan dapat mengoptimalkan performa setiap cabang dan meningkatkan keseluruhan hasil penjualan.

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 (unit) Waktu (jam) Biaya per Unit (Rp)
Utara Elektronik 200 5 15000
Selatan Pakaian 150 8 8000
Timur Makanan 180 6 10000
Barat Peralatan 120 7 12000
Tengah Elektronik 250 4 14000
Utara Pakaian 300 9 8500
Selatan Makanan 220 7 9500
Timur Peralatan 140 5 11000
Barat Elektronik 180 6 14500
Tengah Pakaian 350 8 7800
Utara Peralatan 170 4 12000
Selatan Elektronik 250 6 16000
Timur Pakaian 190 5 8200
Barat Makanan 130 5 10500
Tengah Peralatan 180 6 11500

1. Analisis Efisiensi Pengiriman:

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

  • Jumlah (unit): Menunjukkan seberapa banyak barang yang dikirim. Titik yang lebih tinggi di sumbu x berarti lebih banyak barang yang dikirim.

  • Waktu (jam): Mengindikasikan waktu yang diperlukan untuk mengirim barang. Titik yang lebih tinggi di sumbu y menunjukkan waktu pengiriman yang lebih lama.

  • Biaya per Unit (Rp): Menunjukkan biaya untuk mengirim setiap unit barang. Titik yang lebih tinggi di sumbu z berarti biaya yang lebih tinggi.

Tentukan wilayah mana yang memiliki efisiensi pengiriman terendah berdasarkan biaya per unit dan waktu pengiriman.

Analisis Efisiensi Pengiriman

Untuk menentukan wilayah dengan efisiensi pengiriman terendah berdasarkan biaya per unit dan waktu pengiriman, kita dapat mengikuti langkah-langkah berikut:

Langkah 1: Memahami Data

Kita memiliki data mengenai beberapa wilayah yang mencakup informasi tentang: - Waktu pengiriman (dalam jam) - Biaya per unit (dalam Rupiah)

Wilayah Waktu (jam) Biaya per Unit (Rp)
Utara 5 15.000
Selatan 8 8.000
Timur 6 10.000
Barat 7 12.000
Tengah 4 14.000
Utara 9 8.500
Selatan 7 9.500
Timur 5 11.000
Barat 6 14.500
Tengah 8 7.800
Utara 4 12.000
Selatan 6 16.000
Timur 5 8.200
Barat 5 10.500
Tengah 6 11.500

Langkah 2: Menghitung Rasio Efisiensi

Rasio efisiensi dihitung menggunakan rumus berikut:

\[ {Rasio Efisiensi} = \frac{Biaya per Unit}{Waktu (jam)} \]

Semakin tinggi rasio ini, semakin rendah efisiensi pengiriman. Ini berarti bahwa biaya yang lebih tinggi dan waktu pengiriman yang lebih lama akan menghasilkan rasio yang lebih besar.

Langkah 3: Menghitung untuk Setiap Wilayah

Berikut adalah beberapa contoh perhitungan rasio efisiensi untuk masing-masing wilayah:

Perhitungan Rasio Efisiensi Pengiriman

Berikut adalah perhitungan rasio efisiensi untuk masing-masing wilayah berdasarkan waktu pengiriman dan biaya per unit:

Pengiriman Pertama

  • Utara:
    • Waktu: 5 jam
    • Biaya: 15.000 Rp
    • Rasio: 15.000 / 5 = 3.000
  • Selatan:
    • Waktu: 8 jam
    • Biaya: 8.000 Rp
    • Rasio: 8.000 / 8 = 1.000
  • Timur:
    • Waktu: 6 jam
    • Biaya: 10.000 Rp
    • Rasio: 10.000 / 6 ≈ 1.667
  • Barat:
    • Waktu: 7 jam
    • Biaya: 12.000 Rp
    • Rasio: 12.000 / 7 ≈ 1.714
  • Tengah:
    • Waktu: 4 jam
    • Biaya: 14.000 Rp
    • Rasio: 14.000 / 4 = 3.500

Pengiriman Kedua

  • Utara (Pengiriman Kedua):
    • Waktu: 9 jam
    • Biaya: 8.500 Rp
    • Rasio: 8.500 / 9 ≈ 944
  • Selatan (Pengiriman Kedua):
    • Waktu: 7 jam
    • Biaya: 9.500 Rp
    • Rasio: 9.500 / 7 ≈ 1.357
  • Timur (Pengiriman Kedua):
    • Waktu: 5 jam
    • Biaya: 11.000 Rp
    • Rasio: 11.000 / 5 = 2.200
  • Barat (Pengiriman Kedua):
    • Waktu: 6 jam
    • Biaya: 14.500 Rp
    • Rasio: 14.500 / 6 ≈ 2.417
  • Tengah (Pengiriman Kedua):
    • Waktu: 8 jam
    • Biaya: 7.800 Rp
    • Rasio: 7.800 / 8 ≈ 975

Pengiriman Ketiga

  • Utara (Pengiriman Ketiga):
    • Waktu: 4 jam
    • Biaya: 12.000 Rp
    • Rasio: 12.000 / 4 = 3.000
  • Selatan (Pengiriman Ketiga):
    • Waktu: 6 jam
    • Biaya: 16.000 Rp
    • Rasio: 16.000 / 6 ≈ 2.667
  • Timur (Pengiriman Ketiga):
    • Waktu: 5 jam
    • Biaya: 8.200 Rp
    • Rasio: 8.200 / 5 = 1.640
  • Barat (Pengiriman Ketiga):
    • Waktu: 5 jam
    • Biaya: 10.500 Rp
    • Rasio: 10.500 / 5 = 2.100
  • Tengah (Pengiriman Ketiga):
    • Waktu: 6 jam
    • Biaya: 11.500 Rp
    • Rasio: 11.500 / 6 ≈ 1.917

Langkah 4: Mencari Wilayah dengan Efisiensi Terendah

Semakin rendah nilai rasio efisiensi, semakin efisien pengiriman di wilayah tersebut. Berikut adalah hasil perhitungan rasio efisiensi untuk setiap wilayah berdasarkan pengiriman pertama, kedua, dan ketiga:

Pengiriman Pertama

  • Utara: 3.000
  • Selatan: 1.000
  • Timur: 1.667
  • Barat: 1.714
  • Tengah: 3.500

Pengiriman Kedua

  • Utara: 944
  • Selatan: 1.357
  • Timur: 2.200
  • Barat: 2.417
  • Tengah: 975

Pengiriman Ketiga

  • Utara: 3.000
  • Selatan: 2.667
  • Timur: 1.640
  • Barat: 2.100
  • Tengah: 1.917

Analisis

Dari hasil perhitungan di atas, kita dapat melihat bahwa:

  1. Pengiriman Pertama: Wilayah dengan efisiensi terendah adalah Tengah dengan rasio 3.500.

  2. Pengiriman Kedua: Wilayah dengan efisiensi terendah adalah Utara dengan rasio 944.

  3. Pengiriman Ketiga: Wilayah dengan efisiensi terendah adalah Utara dengan rasio 3.000.

Kesimpulan

Berdasarkan analisis di atas, wilayah yang memiliki efisiensi pengiriman terendah di keseluruhan adalah Tengah pada pengiriman pertama. Sementara itu, untuk pengiriman kedua dan ketiga, wilayah Utara menunjukkan efisiensi terendah.

Hal ini menunjukkan bahwa faktor biaya dan waktu pengiriman bervariasi antar wilayah dan pengiriman, dan penting untuk mempertimbangkan kedua faktor tersebut dalam analisis efisiensi pengiriman.

2. Rekomendasi Operasional:

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

Berdasarkan hasil analisis yang telah dilakukan, terdapat dua wilayah yang memerlukan perhatian khusus untuk meningkatkan efisiensi pengiriman, yaitu Tengah dan Utara.

  • Tengah (Pengiriman Pertama):

Wilayah ini mencatat rasio efisiensi tertinggi sebesar 3.500, yang menunjukkan bahwa biaya per unit yang dikeluarkan relatif tinggi dibandingkan dengan waktu pengiriman yang lebih singkat. Hal ini menandakan adanya potensi untuk menurunkan biaya pengiriman. Untuk mencapai peningkatan ini, perhatian perlu difokuskan pada pengurangan biaya operasional melalui peningkatan pengelolaan logistik, optimalisasi rantai pasokan, dan penegakan kebijakan harga yang lebih strategis.

  • Utara (Pengiriman Kedua dan Ketiga):

Wilayah ini menunjukkan ketidakstabilan dalam efisiensi pengiriman, dengan rasio efisiensi 944 pada pengiriman kedua yang tergolong baik, namun meloncat kembali ke 3.000 pada pengiriman ketiga. Ketidakstabilan ini menyoroti perlunya perhatian lebih untuk menjaga konsistensi dalam efisiensi pengiriman di wilayah ini.

Rekomendasi untuk Mengurangi Biaya dan Waktu Pengiriman

Berikut adalah beberapa rekomendasi untuk mengurangi biaya dan waktu pengiriman di wilayah yang memerlukan perhatian khusus, yaitu Tengah dan Utara:

  1. Optimasi Rute Pengiriman:
    • Gunakan perangkat lunak pemetaan dan analisis data untuk merencanakan rute pengiriman yang paling efisien. Hal ini dapat membantu mengurangi waktu tempuh dan konsumsi bahan bakar.
    • Pertimbangkan untuk menerapkan sistem pengiriman berbasis lokasi (geolocation) yang dapat membantu dalam menentukan jalur tercepat dan terpendek.
  2. Penerapan Teknologi:
    • Implementasikan sistem manajemen transportasi (TMS) untuk memantau pengiriman secara real-time, sehingga memungkinkan penyesuaian yang cepat jika terjadi kendala.
    • Gunakan teknologi pelacakan untuk memberikan visibilitas kepada pelanggan mengenai status pengiriman, yang dapat meningkatkan kepuasan pelanggan.
  3. Pengelolaan Persediaan yang Efisien:
    • Lakukan analisis permintaan untuk mengoptimalkan persediaan barang. Persediaan yang tepat dapat mengurangi waktu pengiriman karena barang tersedia sesuai kebutuhan.
    • Gunakan metode just-in-time (JIT) untuk mengurangi biaya penyimpanan dan memastikan produk tersedia saat dibutuhkan.
  4. Peningkatan Kinerja Karyawan:
    • Berikan pelatihan yang memadai kepada karyawan dalam manajemen logistik dan penggunaan teknologi baru. Karyawan yang terampil dapat meningkatkan efisiensi operasional.
    • Terapkan sistem insentif untuk karyawan yang berhasil mencapai target efisiensi dalam pengiriman.
  5. Kolaborasi dengan Pemasok dan Mitra Logistik:
    • Bangun hubungan yang lebih baik dengan pemasok untuk mengeksplorasi kemungkinan pengiriman langsung dari pemasok ke pelanggan (drop shipping), yang dapat mengurangi biaya dan waktu.
    • Pertimbangkan untuk bekerja sama dengan mitra logistik yang memiliki pengalaman dan infrastruktur yang baik, sehingga dapat meningkatkan efisiensi pengiriman.
  6. Analisis dan Evaluasi Kinerja:
    • Lakukan analisis berkala terhadap kinerja pengiriman untuk mengidentifikasi area yang perlu diperbaiki. Gunakan metrik kinerja utama (KPI) untuk mengukur efisiensi dan efektivitas pengiriman.
    • Kumpulkan umpan balik dari pelanggan untuk memahami pengalaman mereka dan area yang bisa diperbaiki dalam proses pengiriman.
  7. Diversifikasi Metode Pengiriman:
    • Pertimbangkan untuk menggunakan berbagai moda transportasi (darat, udara, laut) berdasarkan kebutuhan pengiriman untuk menemukan solusi yang lebih ekonomis dan cepat.
    • Uji coba pengiriman menggunakan layanan kurir lokal untuk pengiriman cepat di area perkotaan yang padat.

Kesimpulan

Dengan menerapkan rekomendasi ini, diharapkan biaya dan waktu pengiriman dapat dikurangi secara signifikan. Strategi yang terencana dan inovatif akan membantu dalam meningkatkan efisiensi operasional dan memberikan layanan yang lebih baik kepada pelanggan, sekaligus menjaga biaya tetap rendah. Upaya ini akan berkontribusi pada pertumbuhan bisnis yang berkelanjutan dan kepuasan pelanggan yang lebih tinggi.

3.Kinerja Berdasarkan Jenis Barang:

Analisis Kinerja Pengiriman Berdasarkan Jenis Barang dan Wilayah

Untuk menganalisis kinerja pengiriman berdasarkan jenis barang dan wilayah, kita perlu mempertimbangkan dua parameter utama: waktu pengiriman dan biaya per unit. Berikut adalah analisis berdasarkan data yang telah diberikan:

1. Waktu Pengiriman

Waktu pengiriman bervariasi antar wilayah dan jenis barang. Secara umum, semakin cepat waktu pengiriman, semakin efisien proses logistik.

Berikut adalah waktu pengiriman per wilayah berdasarkan jenis barang:

  • Utara:
    • Elektronik: 5 jam
    • Pakaian: 9 jam
    • Peralatan: 4 jam
  • Selatan:
    • Pakaian: 8 jam
    • Makanan: 7 jam
    • Elektronik: 6 jam
  • Timur:
    • Makanan: 6 jam
    • Pakaian: 5 jam
    • Peralatan: 5 jam
  • Barat:
    • Peralatan: 7 jam
    • Elektronik: 6 jam
    • Makanan: 5 jam
  • Tengah:
    • Elektronik: 4 jam
    • Pakaian: 8 jam
    • Peralatan: 6 jam

Dari analisis ini, dapat disimpulkan bahwa: - Tengah (Elektronik) dan Utara (Peralatan) memiliki waktu pengiriman tercepat, yaitu 4 jam.

  • Utara (Pakaian) memiliki waktu pengiriman terlama, yaitu 9 jam.

2. Biaya per Unit

Biaya per unit juga berbeda antara wilayah dan jenis barang. Sebuah biaya yang lebih rendah berarti efisiensi yang lebih baik dalam hal biaya pengiriman.

Berikut adalah biaya per unit berdasarkan wilayah dan jenis barang:

  • Utara:
    • Elektronik: Rp 15.000
    • Pakaian: Rp 8.500
    • Peralatan: Rp 12.000
  • Selatan:
    • Pakaian: Rp 8.000
    • Makanan: Rp 9.500
    • Elektronik: Rp 16.000
  • Timur:
    • Makanan: Rp 10.000
    • Pakaian: Rp 8.200
    • Peralatan: Rp 11.000
  • Barat:
    • Peralatan: Rp 12.000
    • Elektronik: 14.500
    • Makanan: Rp 10.500
  • Tengah:
    • Elektronik: Rp 14.000
    • Pakaian: Rp 7.800
    • Peralatan: Rp 11.500

Dari analisis ini, dapat disimpulkan bahwa: - Selatan (Pakaian) memiliki biaya per unit terendah, yaitu Rp 8.000 - Selatan (Elektronik) memiliki biaya per unit tertinggi, yaitu Rp 16.000

Kesimpulan

Berdasarkan analisis di atas, kita dapat menyimpulkan:

  • Wilayah dengan waktu pengiriman lebih cepat:
    • Tengah (Elektronik) dan Utara (Peralatan) dengan waktu pengiriman 4 jam.
  • Wilayah dengan biaya per unit lebih rendah:
    • Selatan (Pakaian) dengan biaya per unit Rp 8.000
  • Kombinasi terbaik:
    • Jika tujuan adalah untuk mengoptimalkan pengiriman dengan mempertimbangkan waktu dan biaya, wilayah Tengah untuk pengiriman elektronik adalah pilihan terbaik untuk waktu tercepat, sedangkan Selatan untuk pengiriman pakaian adalah pilihan terbaik untuk biaya terendah.
LS0tDQp0aXRsZTogIlR1Z2FzIFBlcnRlbXVhbiAxMSINCnN1YnRpdGxlOiAiVWt1cmFuIFBlbnllYmFyYW4gRGF0YSINCmF1dGhvcjogIkx1dGhpIEFraHlhciBIYXNpYnVhbiAoNTIyNDAwMTQpIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICANCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgDQotLS0NCg0KLS0tDQo8c3R5bGU+DQogIC5sb2dvIHsNCiAgICB3aWR0aDogMjAwcHg7DQogICAgaGVpZ2h0OiAzMjBweDsNCiAgICBib3JkZXItcmFkaXVzOiA1MCU7DQogICAgb2JqZWN0LWZpdDogY292ZXI7DQogICAgYm94LXNoYWRvdzogMCA2cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIG1hcmdpbjogMTBweDsgLyogSmFyYWsgYW50YXJhIGdhbWJhciAqLw0KICB9DQo8L3N0eWxlPg0KDQo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4NCiAgPGltZyBjbGFzcz0ibG9nbyIgc3JjPSJNZS4zLmpwZyIgYWx0PSJMb2dvIDEiPg0KPC9kaXY+DQoNCg0KIyBMYXRpaGFuIDENCg0KLSAiQ2FiYW5nIEEiOiAoNTAsIDU1LCA2MCwgNjUsIDcwKSwNCiAgDQotICJDYWJhbmcgQiI6ICg0MCwgNTAsIDYwLCA3MCwgODApLA0KICANCi0gIkNhYmFuZyBDIjogKDMwLCAzMCwgMzUsIDQwLCA0NSksDQogIA0KLSAiQ2FiYW5nIEQiOiAoNzAsIDc1LCA4MCwgODUsIDkwKQ0KDQojIyBNZW5naGl0dW5nIFJhdGEtcmF0YSwgTWVkaWFuLCBkYW4gU3RhbmRhciBEZXZpYXNpDQoNCiMjIyBSYXRhLXJhdGENCg0KJCRcYmFye3h9ID0gXGZyYWN7XHN1bSB4X2l9e259JCQNCi0gJFxiYXJ7eH0kID0gUmF0YS1yYXRhDQotICRcc3VtIHhfaSQgPSBKdW1sYWggc2VsdXJ1aCBuaWxhaSBkYXRhDQotICRuJCA9IFRvdGFsIGp1bWxhaCBkYXRhDQoNCi0gKipDYWJhbmcgQSoqOg0KJCRcYmFye3h9ID0gXGZyYWN7NTArNTUrNjArNjUrNzB9ezV9PVxmcmFjezMwMH17NX09NjAgJCQNCiAgDQotICoqQ2FiYW5nIEIqKjoNCiQkXGJhcnt4fSA9IFxmcmFjezQwKzUwKzYwKzcwKzgwfXs1fT1cZnJhY3szMDB9ezV9PTYwICQkDQogIA0KLSAqKkNhYmFuZyBDKio6DQokJFxiYXJ7eH0gPSBcZnJhY3szMCszMCszNSs0MCs0NX17NX09XGZyYWN7MTgwfXs1fT0zNiQkDQogIA0KLSAqKkNhYmFuZyBEKio6DQokJFxiYXJ7eH0gPSBcZnJhY3s3MCs3NSs4MCs4NSs5MH17NX09XGZyYWN7NDAwfXs1fT04MCQkDQoNCiMjIyBNZWRpYW4NCg0KKkthcmVuYSBkYXRhbnlhIHR1bmdnYWwsIG1lZGlhbiBkYXBhdCBkaWhpdHVuZyBzZWJhZ2FpIGJlcmlrdXQqOg0KDQotICoqQ2FiYW5nIEEqKjogNjANCi0gKipDYWJhbmcgQioqOiA2MA0KLSAqKkNhYmFuZyBDKio6IDM1DQotICoqQ2FiYW5nIEQqKjogODANCg0KIyMjIFN0YW5kYXIgRGV2aWFzaQ0KDQokJHMgPSBcc3FydHtcZnJhY3tcc3VtKHhfaSAtIFxiYXJ7eH0pXjJ9e24tMX19JCQNCg0KLSAqKkNhYmFuZyBBKio6DQokJHMgPSBcc3FydHtcZnJhY3soNTAtNjApXjIgKyAoNTUtNjApXjIgKyAoNjAtNjApXjIgKyAoNjUtNjApXjIgKyAoNzAtNjApXjJ9ezUtMX19PVxzcXJ0e1xmcmFjezI1MH17NH19PVxzcXJ0ezYyLjV9XGFwcHJveDcuOTEkJA0KICANCi0gKipDYWJhbmcgQioqOg0KJCRzID0gXHNxcnR7XGZyYWN7KDQwLTYwKV4yICsgKDUwLTYwKV4yICsgKDYwLTYwKV4yICsgKDcwLTYwKV4yICsgKDgwLTYwKV4yfXs1LTF9fT1cc3FydHtcZnJhY3sxMDAwfXs0fX09XHNxcnR7MjUwfVxhcHByb3gxNS44MSQkDQogIA0KLSAqKkNhYmFuZyBDKio6DQokJHMgPSBcc3FydHtcZnJhY3soMzAtMzYpXjIgKyAoMzAtMzYpXjIgKyAoMzUtMzYpXjIgKyAoNDAtMzYpXjIgKyAoNDUtMzYpXjJ9ezUtMX19PVxzcXJ0e1xmcmFjezE3MH17NH19PVxzcXJ0ezQyLjV9XGFwcHJveDYuNTIkJA0KICANCi0gKipDYWJhbmcgRCoqOg0KJCRzID0gXHNxcnR7XGZyYWN7KDcwLTgwKV4yICsgKDc1LTgwKV4yICsgKDgwLTgwKV4yICsgKDg1LTgwKV4yICsgKDkwLTgwKV4yfXs1LTF9fT1cc3FydHtcZnJhY3syNTB9ezR9fT1cc3FydHs2Mi41fVxhcHByb3g3LjkxJCQNCg0KIyMgQ2FiYW5nIE1hbmEgeWFuZyBNZW1pbGlraSBQZW55ZWJhcmFuIERhdGEgVGVya2VjaWw/DQoNCi0gKipDYWJhbmcgQSoqIG1lbWlsaWtpIHN0YW5kYXIgZGV2aWFzaSBzZWJlc2FyIDcuOTEsIHlhbmcgbWVudW5qdWtrYW4gYmFod2EgdmFyaWFzaSBkYXRhbnlhIHJlbGF0aWYgcmVuZGFoLiBOYW11biwgYW5na2EgaW5pIHNlZGlraXQgbGViaWggdGluZ2dpIGRpYmFuZGluZ2thbiBkZW5nYW4gQ2FiYW5nIEMuDQoNCi0gKipDYWJhbmcgQioqIG1lbWlsaWtpIHN0YW5kYXIgZGV2aWFzaSB0ZXJ0aW5nZ2kgZGkgYW50YXJhIHNlbXVhIGNhYmFuZywgeWFpdHUgMTUuODEsIG1lbmFuZGFrYW4gYWRhbnlhIGZsdWt0dWFzaSB5YW5nIHNpZ25pZmlrYW4gZGFsYW0gcGVuanVhbGFubnlhLCBkZW5nYW4ga2lzYXJhbiBkYXJpIDQwIGp1dGEgaGluZ2dhIDgwIGp1dGEuDQoNCi0gKipDYWJhbmcgQyoqIG1lbmFtcGlsa2FuIHN0YW5kYXIgZGV2aWFzaSB0ZXJlbmRhaCwgeWFpdHUgNi41MiwgeWFuZyBtZW5naW5kaWthc2lrYW4gYmFod2EgZGF0YSBwZW5qdWFsYW5ueWEgc2FuZ2F0IGtvbnNpc3RlbiBkYW4gbWVuZGVrYXRpIHJhdGEtcmF0YSwgeWFuZyBiZXJhZGEgcGFkYSBhbmdrYSAzNiBqdXRhLg0KDQotICoqQ2FiYW5nIEQqKiBqdWdhIG1lbnVuanVra2FuIHN0YW5kYXIgZGV2aWFzaSBzZWJlc2FyIDcuOTEsIHNhbWEgZGVuZ2FuIENhYmFuZyBBLCBuYW11biBzZWRpa2l0IGxlYmloIGJlc2FyIGRpYmFuZGluZ2thbiBkZW5nYW4gQ2FiYW5nIEMuDQoNCkRlbmdhbiBkZW1pa2lhbiwgZGFwYXQgZGlzaW1wdWxrYW4gYmFod2EgKipDYWJhbmcgQyoqIG1lbWlsaWtpIHBlbnllYmFyYW4gZGF0YSB5YW5nIHBhbGluZyBrZWNpbCBkZW5nYW4gc3RhbmRhciBkZXZpYXNpIDYuNTIsIHlhbmcgbWVuY2VybWlua2FuIGJhaHdhIHBlbmp1YWxhbm55YSBsZWJpaCBob21vZ2VuIGppa2EgZGliYW5kaW5na2FuIGRlbmdhbiBjYWJhbmctY2FiYW5nIGxhaW5ueWEuDQoNCiMjIyBLb25zZWt1ZW5zaSBkYXJpIFBlbnllYmFyYW4gS2VjaWw6DQoNClBlbnllYmFyYW4geWFuZyBrZWNpbCBkaSBDYWJhbmcgQyBtZW1pbGlraSBpbXBsaWthc2kgcG9zaXRpZiBkYW4gbmVnYXRpZjoNCg0KKipQb3NpdGlmOioqDQoNCktvbnNpc3RlbnNpIGRhdGEgbWVudW5qdWtrYW4gYmFod2EgcGVuanVhbGFuIENhYmFuZyBDIGxlYmloIG11ZGFoIGRpcHJlZGlrc2kgZGliYW5kaW5na2FuIGNhYmFuZyBsYWluLg0KRGVuZ2FuIGRhdGEgeWFuZyBzZXJhZ2FtLCBwZXJiYWlrYW4gc3RyYXRlZ2kgKHNlcGVydGkgcHJvbW9zaSBhdGF1IHByb2R1ayBiYXJ1KSBsZWJpaCBtdWRhaCBkaXVrdXIga2FyZW5hIGRhbXBha255YSB0aWRhayB0ZXJzZWJhciBsdWFzLg0KDQoqKk5lZ2F0aWY6KioNCg0KU2VtdWEgbmlsYWkgZGkgQ2FiYW5nIEMgYmVyYWRhIGRpIGJhd2FoIHRhcmdldCA1MCBqdXRhIHJ1cGlhaCwgeWFuZyBtZW51bmp1a2thbiBiYWh3YSBtZXNraXB1biBzZXJhZ2FtLCBwZXJmb3JtYW55YSB0ZXRhcCBqYXVoIGRhcmkgbWVtYWRhaS4gU3RyYXRlZ2kgcGVuaW5na2F0YW4gc2FuZ2F0IGRpcGVybHVrYW4uDQoNCiMjIENhYmFuZyBNYW5hIFNhamEgeWFuZyBUaWRhayBNZW5jYXBhaSBUYXJnZXQgUGVuanVhbGFuIE1pbmltdW0gNTAgSnV0YT8NCg0KMS4gKipDYWJhbmcgQSoqIChEYXRhOiA1MCwgNTUsIDYwLCA2NSwgNzApOg0KICAgLSBQZW5qdWFsYW5ueWEgdGVyZGlyaSBkYXJpIDUwIGp1dGEsIDU1IGp1dGEsIDYwIGp1dGEsIDY1IGp1dGEsIGRhbiA3MCBqdXRhLg0KICAgLSBTZW11YSBkYXRhIGJlcmFkYSBkaSBhdGFzIGF0YXUgc2FtYSBkZW5nYW4gNTAganV0YSwgc2VoaW5nZ2EgQ2FiYW5nIEEgYmVyaGFzaWwgbWVtZW51aGkgdGFyZ2V0Lg0KDQoyLiAqKkNhYmFuZyBCKiogKERhdGE6IDQwLCA1MCwgNjAsIDcwLCA4MCk6DQogICAtIFBlbmp1YWxhbm55YSB0ZXJkaXJpIGRhcmkgNDAganV0YSwgNTAganV0YSwgNjAganV0YSwgNzAganV0YSwgZGFuIDgwIGp1dGEuDQogICAtIFRlcmRhcGF0IHNhdHUgbmlsYWksIHlhaXR1IDQwIGp1dGEsIHlhbmcgZGkgYmF3YWggNTAganV0YSwgc2VoaW5nZ2EgQ2FiYW5nIEIgdGlkYWsgbWVtZW51aGkgdGFyZ2V0IHBhZGEgc2ViYWdpYW4gZGF0YS4NCg0KMy4gKipDYWJhbmcgQyoqIChEYXRhOiAzMCwgMzAsIDM1LCA0MCwgNDUpOg0KICAgLSBQZW5qdWFsYW5ueWEgdGVyZGlyaSBkYXJpIDMwIGp1dGEsIDMwIGp1dGEsIDM1IGp1dGEsIDQwIGp1dGEsIGRhbiA0NSBqdXRhLg0KICAgLSBTZW11YSBuaWxhaSBwZW5qdWFsYW5ueWEgZGkgYmF3YWggNTAganV0YSwgc2VoaW5nZ2EgQ2FiYW5nIEMgdGlkYWsgYmVyaGFzaWwgbWVtZW51aGkgdGFyZ2V0IHNlY2FyYSBrZXNlbHVydWhhbi4NCg0KNC4gKipDYWJhbmcgRCoqIChEYXRhOiA3MCwgNzUsIDgwLCA4NSwgOTApOg0KICAgLSBQZW5qdWFsYW5ueWEgdGVyZGlyaSBkYXJpIDcwIGp1dGEsIDc1IGp1dGEsIDgwIGp1dGEsIDg1IGp1dGEsIGRhbiA5MCBqdXRhLg0KICAgLSBTZW11YSBkYXRhIGJlcmFkYSBkaSBhdGFzIDUwIGp1dGEsIHNlaGluZ2dhIENhYmFuZyBEIGJlcmhhc2lsIG1lbWVudWhpIHRhcmdldC4NCg0KS2VzaW1wdWxhbm55YSwgKipDYWJhbmcgQyoqIGFkYWxhaCBzYXR1LXNhdHVueWEgY2FiYW5nIHlhbmcgc2VsdXJ1aCBkYXRhbnlhIGJlcmFkYSBkaSBiYXdhaCB0YXJnZXQgcGVuanVhbGFuIG1pbmltdW0gc2ViZXNhciA1MCBqdXRhIHJ1cGlhaC4NCg0KDQojIyBWaXN1YWxpc2FzaSBCb3hwbG90DQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YSBQZW5qdWFsYW4NCnBlbmp1YWxhbiA8LSBjKDUwLCA1NSwgNjAsIDY1LCA3MCwgDQogICAgICAgICAgICAgICA0MCwgNTAsIDYwLCA3MCwgODAsIA0KICAgICAgICAgICAgICAgMzAsIDMwLCAzNSwgNDAsIDQ1LCANCiAgICAgICAgICAgICAgIDcwLCA3NSwgODAsIDg1LCA5MCkNCmNhYmFuZyA8LSBjKHJlcCgiQ2FiYW5nIEEiLCA1KSwgDQogICAgICAgICAgICByZXAoIkNhYmFuZyBCIiwgNSksIA0KICAgICAgICAgICAgcmVwKCJDYWJhbmcgQyIsIDUpLCANCiAgICAgICAgICAgIHJlcCgiQ2FiYW5nIEQiLCA1KSkNCg0KIyBNZW1idWF0IHZpb2xpbiBwbG90IHVudHVrIGRhdGEgcGVyIGNhYmFuZyBkZW5nYW4gd2FybmEgeWFuZyBkaWluZ2lua2FuDQpwbG90X2x5KCkgJT4lDQogIGFkZF90cmFjZSgNCiAgICB5ID0gcGVuanVhbGFuWzE6NV0sIA0KICAgIHR5cGUgPSAidmlvbGluIiwgDQogICAgbmFtZSA9ICJDYWJhbmcgQSIsIA0KICAgIGJveCA9IGxpc3QodmlzaWJsZSA9IFRSVUUpLA0KICAgIG1lYW5saW5lID0gbGlzdCh2aXNpYmxlID0gVFJVRSksDQogICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdwaW5rJyksDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAnZGFya3JlZCcpDQogICkgJT4lDQogIGFkZF90cmFjZSgNCiAgICB5ID0gcGVuanVhbGFuWzY6MTBdLCANCiAgICB0eXBlID0gInZpb2xpbiIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEIiLCANCiAgICBib3ggPSBsaXN0KHZpc2libGUgPSBUUlVFKSwNCiAgICBtZWFubGluZSA9IGxpc3QodmlzaWJsZSA9IFRSVUUpLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnYmx1ZScpLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ2RhcmtibHVlJykNCiAgKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBwZW5qdWFsYW5bMTE6MTVdLCANCiAgICB0eXBlID0gInZpb2xpbiIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEMiLCANCiAgICBib3ggPSBsaXN0KHZpc2libGUgPSBUUlVFKSwNCiAgICBtZWFubGluZSA9IGxpc3QodmlzaWJsZSA9IFRSVUUpLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAneWVsbG93JyksDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAnZ29sZGVucm9kJykNCiAgKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBwZW5qdWFsYW5bMTY6MjBdLCANCiAgICB0eXBlID0gInZpb2xpbiIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEQiLCANCiAgICBib3ggPSBsaXN0KHZpc2libGUgPSBUUlVFKSwNCiAgICBtZWFubGluZSA9IGxpc3QodmlzaWJsZSA9IFRSVUUpLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAncHVycGxlJyksDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSAnZGFya3Zpb2xldCcpDQogICkgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJWaW9saW4gUGxvdCBQZW5qdWFsYW4gUGVyIENhYmFuZyIsDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlBlbmp1YWxhbiAoSnV0YSBSdXBpYWgpIiksDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkNhYmFuZyIpDQogICkNCmBgYA0KDQojIyMgU3RyYXRlZ2kgUGVuaW5na2F0YW4gUGVuanVhbGFuIHVudHVrIFNlb3JhbmcgTWFuYWplciBQZXJ1c2FoYWFuDQoNClNlYmFnYWkgc2VvcmFuZyBtYW5hamVyIHBlcnVzYWhhYW4sIGluZm9ybWFzaSBhbmFsaXNpcyBwZW5qdWFsYW4gaW5pIGRhcGF0IGRpbWFuZmFhdGthbiB1bnR1ayBtZXJ1bXVza2FuIHN0cmF0ZWdpIHBlbmluZ2thdGFuIHBlbmp1YWxhbiB5YW5nIGVmZWt0aWYuIEJlcmlrdXQgYWRhbGFoIGJlYmVyYXBhIGxhbmdrYWggeWFuZyBkYXBhdCBkaWFtYmlsOg0KDQojIyMjIDEuIEZva3VzIHBhZGEgUGVuaW5na2F0YW4gQ2FiYW5nIEMNCi0gKipJZGVudGlmaWthc2kgTGFuZ2thaC1MYW5na2FoIFN0cmF0ZWdpcyoqOiBQZXJsdSBkaWxha3VrYW4gZXZhbHVhc2kgbWVuZGFsYW0gdW50dWsgbWVuZ2lkZW50aWZpa2FzaSBsYW5na2FoLWxhbmdrYWggeWFuZyBkYXBhdCBkaWFtYmlsIGFnYXIgQ2FiYW5nIEMgbWVuY2FwYWkgdGFyZ2V0IG1pbmltdW0gcGVuanVhbGFuIHNlYmVzYXIgNTAganV0YSBydXBpYWguIEluaSBkYXBhdCBtZW5jYWt1cCBwZW5lcmFwYW4gc3RyYXRlZ2kgcGVtYXNhcmFuIHlhbmcgbGViaWggYWdyZXNpZiwgc2VydGEgcGVueWVzdWFpYW4gcHJvZHVrIGFnYXIgbGViaWggc2VzdWFpIGRlbmdhbiBrZWJ1dHVoYW4gcGVsYW5nZ2FuLg0KDQojIyMjIDIuIFBlcnRhaGFua2FuIEtvbnNpc3RlbnNpIGRpIENhYmFuZyBBIGRhbiBEDQotICoqU3RhYmlsaXRhcyBLaW5lcmphKio6IENhYmFuZyBBIGRhbiBEIHRlbGFoIG1lbnVuanVra2FuIGtpbmVyamEgeWFuZyBiYWlrIGRhbiBrb25zaXN0ZW4uIFBlbnRpbmcgdW50dWsgbWVuamFnYSBzdGFiaWxpdGFzIGluaSBkZW5nYW4gbWVsYWt1a2FuIGFuYWxpc2lzIHJ1dGluIGRhbiBtZW1hc3Rpa2FuIGJhaHdhIGZha3Rvci1mYWt0b3IgeWFuZyBtZW5kdWt1bmcga2luZXJqYSBwb3NpdGlmIHRldGFwIHRlcmphZ2EuDQoNCiMjIyMgMy4gQXRhc2kgUmlzaWtvIGRpIENhYmFuZyBCDQotICoqTWFuYWplbWVuIEtldGlkYWtwYXN0aWFuKio6IENhYmFuZyBCIG1lbWlsaWtpIHBlbnllYmFyYW4gZGF0YSB5YW5nIGxlYmloIGJlc2FyLCB5YW5nIG1lbnVuanVra2FuIGFkYW55YSByaXNpa28gZGFsYW0gaGFzaWwgcGVuanVhbGFuLiBMYW5na2FoLWxhbmdrYWggcGVybHUgZGlhbWJpbCB1bnR1ayBtZW5nZWxvbGEga2V0aWRha3Bhc3RpYW4gaW5pLCBzZXBlcnRpIG1lbmluZ2thdGthbiBwZW5nYXdhc2FuIHRlcmhhZGFwIHRyZW4gcGVuanVhbGFuIGRhbiBtZW5lcmFwa2FuIHN0cmF0ZWdpIG1pdGlnYXNpIHVudHVrIG1lbmd1cmFuZ2kgZmx1a3R1YXNpIHlhbmcgbXVuZ2tpbiB0ZXJqYWRpLg0KDQpEZW5nYW4gcGVuZGVrYXRhbiB5YW5nIHRlcmZva3VzIGRhbiBzdHJhdGVnaXMgaW5pLCBwZXJ1c2FoYWFuIGRhcGF0IG1lbmdvcHRpbWFsa2FuIHBlcmZvcm1hIHNldGlhcCBjYWJhbmcgZGFuIG1lbmluZ2thdGthbiBrZXNlbHVydWhhbiBoYXNpbCBwZW5qdWFsYW4uDQoNCg0KIyBsYXRpaGFuIDINCg0KUGVydXNhaGFhbiBYWVogbWVuZ2Vsb2xhIHBlbmdpcmltYW4gYmFyYW5nIGtlIGJlcmJhZ2FpIHdpbGF5YWggZGVuZ2FuIG1lbmdndW5ha2FuIGJlcmJhZ2FpIGplbmlzIHRyYW5zcG9ydGFzaS4gU2V0aWFwIHBlbmdpcmltYW4gbWVsaWJhdGthbiBiaWF5YSB0cmFuc3BvcnRhc2ksIHdha3R1IHlhbmcgZGlidXR1aGthbiwgZGFuIGp1bWxhaCBiYXJhbmcgeWFuZyBkaWtpcmltLiBCZXJpa3V0IGFkYWxhaCBkYXRhIHRlcmthaXQgcGVuZ2lyaW1hbiBiYXJhbmcgYmVyZGFzYXJrYW4gd2lsYXlhaCBkYW4gamVuaXMgYmFyYW5nOg0KDQoNCnwgV2lsYXlhaCAgfCBKZW5pcyBCYXJhbmcgfCBKdW1sYWggKHVuaXQpIHwgV2FrdHUgKGphbSkgfCBCaWF5YSBwZXIgVW5pdCAoUnApIHwNCnwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgVXRhcmEgICAgfCBFbGVrdHJvbmlrICAgfCAyMDAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCAxNTAwMCAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgfCBQYWthaWFuICAgICAgfCAxNTAgICAgICAgICAgIHwgOCAgICAgICAgICAgfCA4MDAwICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgfCBNYWthbmFuICAgICAgfCAxODAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxMDAwMCAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgfCBQZXJhbGF0YW4gICAgfCAxMjAgICAgICAgICAgIHwgNyAgICAgICAgICAgfCAxMjAwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgfCBFbGVrdHJvbmlrICAgfCAyNTAgICAgICAgICAgIHwgNCAgICAgICAgICAgfCAxNDAwMCAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICAgfCBQYWthaWFuICAgICAgfCAzMDAgICAgICAgICAgIHwgOSAgICAgICAgICAgfCA4NTAwICAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgfCBNYWthbmFuICAgICAgfCAyMjAgICAgICAgICAgIHwgNyAgICAgICAgICAgfCA5NTAwICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgfCBQZXJhbGF0YW4gICAgfCAxNDAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCAxMTAwMCAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgfCBFbGVrdHJvbmlrICAgfCAxODAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxNDUwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgfCBQYWthaWFuICAgICAgfCAzNTAgICAgICAgICAgIHwgOCAgICAgICAgICAgfCA3ODAwICAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICAgfCBQZXJhbGF0YW4gICAgfCAxNzAgICAgICAgICAgIHwgNCAgICAgICAgICAgfCAxMjAwMCAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgfCBFbGVrdHJvbmlrICAgfCAyNTAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxNjAwMCAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgfCBQYWthaWFuICAgICAgfCAxOTAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCA4MjAwICAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgfCBNYWthbmFuICAgICAgfCAxMzAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCAxMDUwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgfCBQZXJhbGF0YW4gICAgfCAxODAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxMTUwMCAgICAgICAgICAgICAgIHwNCg0KIyMgMS4gQW5hbGlzaXMgRWZpc2llbnNpIFBlbmdpcmltYW46DQoNCiMjIyBWaXN1YWxpc2FzaWthbiBwZW5naXJpbWFuIGJhcmFuZyBiZXJkYXNhcmthbiBqdW1sYWggYmFyYW5nLCB3YWt0dSBwZW5naXJpbWFuLCBkYW4gYmlheWEgcGVyIHVuaXQgZGVuZ2FuIG1lbmdndW5ha2FuIHBsb3QgM0QuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW11YXQgcGFrZXQgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRhdGEgZnJhbWUNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgV2lsYXlhaCA9IGMoIlV0YXJhIiwgIlNlbGF0YW4iLCAiVGltdXIiLCAiQmFyYXQiLCAiVGVuZ2FoIiwgDQogICAgICAgICAgICAgICJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIsIA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiKSwNCiAgSmVuaXNfQmFyYW5nID0gYygiRWxla3Ryb25payIsICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCANCiAgICAgICAgICAgICAgICAgICAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIsICJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLCANCiAgICAgICAgICAgICAgICAgICAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIpLA0KICBKdW1sYWggPSBjKDIwMCwgMTUwLCAxODAsIDEyMCwgMjUwLCANCiAgICAgICAgICAgICAzMDAsIDIyMCwgMTQwLCAxODAsIDM1MCwgDQogICAgICAgICAgICAgMTcwLCAyNTAsIDE5MCwgMTMwLCAxODApLA0KICBXYWt0dSA9IGMoNSwgOCwgNiwgNywgNCwgDQogICAgICAgICAgICA5LCA3LCA1LCA2LCA4LCANCiAgICAgICAgICAgIDQsIDYsIDUsIDUsIDYpLA0KICBCaWF5YV9wZXJfVW5pdCA9IGMoMTUwMDAsIDgwMDAsIDEwMDAwLCAxMjAwMCwgMTQwMDAsIA0KICAgICAgICAgICAgICAgICAgICAgODUwMCwgOTUwMCwgMTEwMDAsIDE0NTAwLCA3ODAwLCANCiAgICAgICAgICAgICAgICAgICAgIDEyMDAwLCAxNjAwMCwgODIwMCwgMTA1MDAsIDExNTAwKQ0KKQ0KDQojIE1lbmVudHVrYW4gd2FybmEgdW50dWsgc2V0aWFwIGplbmlzIGJhcmFuZw0Kd2FybmEgPC0gYygiRWxla3Ryb25payIgPSAiYmx1ZSIsICJQYWthaWFuIiA9ICJyZWQiLCANCiAgICAgICAgICAgIk1ha2FuYW4iID0gImdyZWVuIiwgIlBlcmFsYXRhbiIgPSAib3JhbmdlIikNCg0KIyBNZW1idWF0IGxhYmVsIHVudHVrIGtvb3JkaW5hdCwgdGVybWFzdWsgbmFtYSB3aWxheWFoDQpkYXRhJExhYmVsIDwtIHBhc3RlKCJXaWxheWFoOiIsIGRhdGEkV2lsYXlhaCwgDQogICAgICAgICAgICAgICAgICAgICI8YnI+SnVtbGFoOiIsIGRhdGEkSnVtbGFoLCANCiAgICAgICAgICAgICAgICAgICAgIjxicj5XYWt0dToiLCBkYXRhJFdha3R1LCAiamFtIiwgDQogICAgICAgICAgICAgICAgICAgICI8YnI+QmlheWEgcGVyIFVuaXQ6IiwgZGF0YSRCaWF5YV9wZXJfVW5pdCwgIlJwIikNCg0KIyBNZW1idWF0IHBsb3QgM0QgZGVuZ2FuIHdhcm5hIGJlcmJlZGEgYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nDQpmaWcgPC0gcGxvdF9seShkYXRhLCB4ID0gfkp1bWxhaCwgeSA9IH5XYWt0dSwgeiA9IH5CaWF5YV9wZXJfVW5pdCwgDQogICAgICAgICAgICAgICBjb2xvciA9IH5KZW5pc19CYXJhbmcsIGNvbG9ycyA9IHdhcm5hLA0KICAgICAgICAgICAgICAgdHlwZSA9ICdzY2F0dGVyM2QnLCBtb2RlID0gJ21hcmtlcnMnLCANCiAgICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDUsIG9wYWNpdHkgPSAwLjgpLA0KICAgICAgICAgICAgICAgdGV4dCA9IH5MYWJlbCwgICMgTWVuYW1iYWhrYW4gbGFiZWwga29vcmRpbmF0DQogICAgICAgICAgICAgICBob3ZlcmluZm8gPSAndGV4dCcsICAjIE1lbmFtcGlsa2FuIGxhYmVsIHNhYXQgZGlrbGlrDQogICAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkgJT4lICAjIE1lbmFtcGlsa2FuIGxlZ2VuZA0KICBsYXlvdXQoc2NlbmUgPSBsaXN0KHhheGlzID0gbGlzdCh0aXRsZSA9ICdKdW1sYWggKHVuaXQpJyksDQogICAgICAgICAgICAgICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gJ1dha3R1IChqYW0pJyksDQogICAgICAgICAgICAgICAgICAgICAgemF4aXMgPSBsaXN0KHRpdGxlID0gJ0JpYXlhIHBlciBVbml0IChScCknKSksDQogICAgICAgICB0aXRsZSA9ICdWaXN1YWxpc2FzaSBQZW5naXJpbWFuIEJhcmFuZycsDQogICAgICAgICBsZWdlbmQgPSBsaXN0KHRpdGxlID0gbGlzdCh0ZXh0ID0gJ0plbmlzIEJhcmFuZycpKSwNCiAgICAgICAgIG1hcmdpbiA9IGxpc3QobCA9IDAsIHIgPSAwLCBiID0gMCwgdCA9IDQwKSkgICMgTWVuZ2F0dXIgbWFyZ2luIHVudHVrIHRhbXBpbGFuIHlhbmcgbGViaWggcmFwaQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QNCmZpZw0KDQpgYGANCi0gKipKdW1sYWggKHVuaXQpOioqIE1lbnVuanVra2FuIHNlYmVyYXBhIGJhbnlhayBiYXJhbmcgeWFuZyBkaWtpcmltLiBUaXRpayB5YW5nIGxlYmloIHRpbmdnaSBkaSBzdW1idSB4IGJlcmFydGkgbGViaWggYmFueWFrIGJhcmFuZyB5YW5nIGRpa2lyaW0uDQoNCi0gKipXYWt0dSAoamFtKToqKiBNZW5naW5kaWthc2lrYW4gd2FrdHUgeWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdpcmltIGJhcmFuZy4gVGl0aWsgeWFuZyBsZWJpaCB0aW5nZ2kgZGkgc3VtYnUgeSBtZW51bmp1a2thbiB3YWt0dSBwZW5naXJpbWFuIHlhbmcgbGViaWggbGFtYS4NCg0KLSAqKkJpYXlhIHBlciBVbml0IChScCk6KiogTWVudW5qdWtrYW4gYmlheWEgdW50dWsgbWVuZ2lyaW0gc2V0aWFwIHVuaXQgYmFyYW5nLiBUaXRpayB5YW5nIGxlYmloIHRpbmdnaSBkaSBzdW1idSB6IGJlcmFydGkgYmlheWEgeWFuZyBsZWJpaCB0aW5nZ2kuDQoNCiMjIyBUZW50dWthbiB3aWxheWFoIG1hbmEgeWFuZyBtZW1pbGlraSBlZmlzaWVuc2kgcGVuZ2lyaW1hbiB0ZXJlbmRhaCBiZXJkYXNhcmthbiBiaWF5YSBwZXIgdW5pdCBkYW4gd2FrdHUgcGVuZ2lyaW1hbi4NCg0KIyMjIyBBbmFsaXNpcyBFZmlzaWVuc2kgUGVuZ2lyaW1hbg0KDQpVbnR1ayBtZW5lbnR1a2FuIHdpbGF5YWggZGVuZ2FuIGVmaXNpZW5zaSBwZW5naXJpbWFuIHRlcmVuZGFoIGJlcmRhc2Fya2FuIGJpYXlhIHBlciB1bml0IGRhbiB3YWt0dSBwZW5naXJpbWFuLCBraXRhIGRhcGF0IG1lbmdpa3V0aSBsYW5na2FoLWxhbmdrYWggYmVyaWt1dDoNCg0KIyMjIyBMYW5na2FoIDE6IE1lbWFoYW1pIERhdGENCktpdGEgbWVtaWxpa2kgZGF0YSBtZW5nZW5haSBiZWJlcmFwYSB3aWxheWFoIHlhbmcgbWVuY2FrdXAgaW5mb3JtYXNpIHRlbnRhbmc6DQotICoqV2FrdHUgcGVuZ2lyaW1hbiAoZGFsYW0gamFtKSoqDQotICoqQmlheWEgcGVyIHVuaXQgKGRhbGFtIFJ1cGlhaCkqKg0KDQp8IFdpbGF5YWggfCBXYWt0dSAoamFtKSB8IEJpYXlhIHBlciBVbml0IChScCkgfA0KfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IFV0YXJhICAgfCA1ICAgICAgICAgICB8IDE1LjAwMCAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiB8IDggICAgICAgICAgIHwgOC4wMDAgICAgICAgICAgICAgICAgfA0KfCBUaW11ciAgIHwgNiAgICAgICAgICAgfCAxMC4wMDAgICAgICAgICAgICAgICB8DQp8IEJhcmF0ICAgfCA3ICAgICAgICAgICB8IDEyLjAwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICB8IDQgICAgICAgICAgIHwgMTQuMDAwICAgICAgICAgICAgICAgfA0KfCBVdGFyYSAgIHwgOSAgICAgICAgICAgfCA4LjUwMCAgICAgICAgICAgICAgICB8DQp8IFNlbGF0YW4gfCA3ICAgICAgICAgICB8IDkuNTAwICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICB8IDUgICAgICAgICAgIHwgMTEuMDAwICAgICAgICAgICAgICAgfA0KfCBCYXJhdCAgIHwgNiAgICAgICAgICAgfCAxNC41MDAgICAgICAgICAgICAgICB8DQp8IFRlbmdhaCAgfCA4ICAgICAgICAgICB8IDcuODAwICAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICB8IDQgICAgICAgICAgIHwgMTIuMDAwICAgICAgICAgICAgICAgfA0KfCBTZWxhdGFuIHwgNiAgICAgICAgICAgfCAxNi4wMDAgICAgICAgICAgICAgICB8DQp8IFRpbXVyICAgfCA1ICAgICAgICAgICB8IDguMjAwICAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICB8IDUgICAgICAgICAgIHwgMTAuNTAwICAgICAgICAgICAgICAgfA0KfCBUZW5nYWggIHwgNiAgICAgICAgICAgfCAxMS41MDAgICAgICAgICAgICAgICB8DQoNCiMjIyMgTGFuZ2thaCAyOiBNZW5naGl0dW5nIFJhc2lvIEVmaXNpZW5zaQ0KUmFzaW8gZWZpc2llbnNpIGRpaGl0dW5nIG1lbmdndW5ha2FuIHJ1bXVzIGJlcmlrdXQ6DQoNCiQkDQp7UmFzaW8gRWZpc2llbnNpfSA9IFxmcmFje0JpYXlhIHBlciBVbml0fXtXYWt0dSAoamFtKX0NCiQkDQoNClNlbWFraW4gdGluZ2dpIHJhc2lvIGluaSwgc2VtYWtpbiByZW5kYWggZWZpc2llbnNpIHBlbmdpcmltYW4uIEluaSBiZXJhcnRpIGJhaHdhIGJpYXlhIHlhbmcgbGViaWggdGluZ2dpIGRhbiB3YWt0dSBwZW5naXJpbWFuIHlhbmcgbGViaWggbGFtYSBha2FuIG1lbmdoYXNpbGthbiByYXNpbyB5YW5nIGxlYmloIGJlc2FyLg0KDQojIyMjIExhbmdrYWggMzogTWVuZ2hpdHVuZyB1bnR1ayBTZXRpYXAgV2lsYXlhaA0KQmVyaWt1dCBhZGFsYWggYmViZXJhcGEgY29udG9oIHBlcmhpdHVuZ2FuIHJhc2lvIGVmaXNpZW5zaSB1bnR1ayBtYXNpbmctbWFzaW5nIHdpbGF5YWg6DQoNCiMjIyMgUGVyaGl0dW5nYW4gUmFzaW8gRWZpc2llbnNpIFBlbmdpcmltYW4NCg0KQmVyaWt1dCBhZGFsYWggcGVyaGl0dW5nYW4gcmFzaW8gZWZpc2llbnNpIHVudHVrIG1hc2luZy1tYXNpbmcgd2lsYXlhaCBiZXJkYXNhcmthbiB3YWt0dSBwZW5naXJpbWFuIGRhbiBiaWF5YSBwZXIgdW5pdDoNCg0KIyMjIyBQZW5naXJpbWFuIFBlcnRhbWENCi0gKipVdGFyYSoqOg0KICAtIFdha3R1OiA1IGphbQ0KICAtIEJpYXlhOiAxNS4wMDAgUnANCiAgLSBSYXNpbzogMTUuMDAwIC8gNSA9IDMuMDAwDQotICoqU2VsYXRhbioqOg0KICAtIFdha3R1OiA4IGphbQ0KICAtIEJpYXlhOiA4LjAwMCBScA0KICAtIFJhc2lvOiA4LjAwMCAvIDggPSAxLjAwMA0KLSAqKlRpbXVyKio6DQogIC0gV2FrdHU6IDYgamFtDQogIC0gQmlheWE6IDEwLjAwMCBScA0KICAtIFJhc2lvOiAxMC4wMDAgLyA2IOKJiCAxLjY2Nw0KLSAqKkJhcmF0Kio6DQogIC0gV2FrdHU6IDcgamFtDQogIC0gQmlheWE6IDEyLjAwMCBScA0KICAtIFJhc2lvOiAxMi4wMDAgLyA3IOKJiCAxLjcxNA0KLSAqKlRlbmdhaCoqOg0KICAtIFdha3R1OiA0IGphbQ0KICAtIEJpYXlhOiAxNC4wMDAgUnANCiAgLSBSYXNpbzogMTQuMDAwIC8gNCA9IDMuNTAwDQoNCiMjIyMgUGVuZ2lyaW1hbiBLZWR1YQ0KLSAqKlV0YXJhIChQZW5naXJpbWFuIEtlZHVhKSoqOg0KICAtIFdha3R1OiA5IGphbQ0KICAtIEJpYXlhOiA4LjUwMCBScA0KICAtIFJhc2lvOiA4LjUwMCAvIDkg4omIIDk0NA0KLSAqKlNlbGF0YW4gKFBlbmdpcmltYW4gS2VkdWEpKio6DQogIC0gV2FrdHU6IDcgamFtDQogIC0gQmlheWE6IDkuNTAwIFJwDQogIC0gUmFzaW86IDkuNTAwIC8gNyDiiYggMS4zNTcNCi0gKipUaW11ciAoUGVuZ2lyaW1hbiBLZWR1YSkqKjoNCiAgLSBXYWt0dTogNSBqYW0NCiAgLSBCaWF5YTogMTEuMDAwIFJwDQogIC0gUmFzaW86IDExLjAwMCAvIDUgPSAyLjIwMA0KLSAqKkJhcmF0IChQZW5naXJpbWFuIEtlZHVhKSoqOg0KICAtIFdha3R1OiA2IGphbQ0KICAtIEJpYXlhOiAxNC41MDAgUnANCiAgLSBSYXNpbzogMTQuNTAwIC8gNiDiiYggMi40MTcNCi0gKipUZW5nYWggKFBlbmdpcmltYW4gS2VkdWEpKio6DQogIC0gV2FrdHU6IDggamFtDQogIC0gQmlheWE6IDcuODAwIFJwDQogIC0gUmFzaW86IDcuODAwIC8gOCDiiYggOTc1DQoNCiMjIyMgUGVuZ2lyaW1hbiBLZXRpZ2ENCi0gKipVdGFyYSAoUGVuZ2lyaW1hbiBLZXRpZ2EpKio6DQogIC0gV2FrdHU6IDQgamFtDQogIC0gQmlheWE6IDEyLjAwMCBScA0KICAtIFJhc2lvOiAxMi4wMDAgLyA0ID0gMy4wMDANCi0gKipTZWxhdGFuIChQZW5naXJpbWFuIEtldGlnYSkqKjoNCiAgLSBXYWt0dTogNiBqYW0NCiAgLSBCaWF5YTogMTYuMDAwIFJwDQogIC0gUmFzaW86IDE2LjAwMCAvIDYg4omIIDIuNjY3DQotICoqVGltdXIgKFBlbmdpcmltYW4gS2V0aWdhKSoqOg0KICAtIFdha3R1OiA1IGphbQ0KICAtIEJpYXlhOiA4LjIwMCBScA0KICAtIFJhc2lvOiA4LjIwMCAvIDUgPSAxLjY0MA0KLSAqKkJhcmF0IChQZW5naXJpbWFuIEtldGlnYSkqKjoNCiAgLSBXYWt0dTogNSBqYW0NCiAgLSBCaWF5YTogMTAuNTAwIFJwDQogIC0gUmFzaW86IDEwLjUwMCAvIDUgPSAyLjEwMA0KLSAqKlRlbmdhaCAoUGVuZ2lyaW1hbiBLZXRpZ2EpKio6DQogIC0gV2FrdHU6IDYgamFtDQogIC0gQmlheWE6IDExLjUwMCBScA0KICAtIFJhc2lvOiAxMS41MDAgLyA2IOKJiCAxLjkxNw0KDQoNCiMjIyMgTGFuZ2thaCA0OiBNZW5jYXJpIFdpbGF5YWggZGVuZ2FuIEVmaXNpZW5zaSBUZXJlbmRhaA0KDQpTZW1ha2luIHJlbmRhaCBuaWxhaSByYXNpbyBlZmlzaWVuc2ksIHNlbWFraW4gZWZpc2llbiBwZW5naXJpbWFuIGRpIHdpbGF5YWggdGVyc2VidXQuIEJlcmlrdXQgYWRhbGFoIGhhc2lsIHBlcmhpdHVuZ2FuIHJhc2lvIGVmaXNpZW5zaSB1bnR1ayBzZXRpYXAgd2lsYXlhaCBiZXJkYXNhcmthbiBwZW5naXJpbWFuIHBlcnRhbWEsIGtlZHVhLCBkYW4ga2V0aWdhOg0KDQojIyMjIFBlbmdpcmltYW4gUGVydGFtYQ0KLSAqKlV0YXJhKio6IDMuMDAwDQotICoqU2VsYXRhbioqOiAxLjAwMA0KLSAqKlRpbXVyKio6IDEuNjY3DQotICoqQmFyYXQqKjogMS43MTQNCi0gKipUZW5nYWgqKjogMy41MDANCg0KIyMjIyBQZW5naXJpbWFuIEtlZHVhDQotICoqVXRhcmEqKjogOTQ0DQotICoqU2VsYXRhbioqOiAxLjM1Nw0KLSAqKlRpbXVyKio6IDIuMjAwDQotICoqQmFyYXQqKjogMi40MTcNCi0gKipUZW5nYWgqKjogOTc1DQoNCiMjIyMgUGVuZ2lyaW1hbiBLZXRpZ2ENCi0gKipVdGFyYSoqOiAzLjAwMA0KLSAqKlNlbGF0YW4qKjogMi42NjcNCi0gKipUaW11cioqOiAxLjY0MA0KLSAqKkJhcmF0Kio6IDIuMTAwDQotICoqVGVuZ2FoKio6IDEuOTE3DQoNCiMjIyMgQW5hbGlzaXMNCkRhcmkgaGFzaWwgcGVyaGl0dW5nYW4gZGkgYXRhcywga2l0YSBkYXBhdCBtZWxpaGF0IGJhaHdhOg0KDQoxLiAqKlBlbmdpcmltYW4gUGVydGFtYSoqOiBXaWxheWFoIGRlbmdhbiBlZmlzaWVuc2kgdGVyZW5kYWggYWRhbGFoICoqVGVuZ2FoKiogZGVuZ2FuIHJhc2lvIDMuNTAwLg0KDQoyLiAqKlBlbmdpcmltYW4gS2VkdWEqKjogV2lsYXlhaCBkZW5nYW4gZWZpc2llbnNpIHRlcmVuZGFoIGFkYWxhaCAqKlV0YXJhKiogZGVuZ2FuIHJhc2lvIDk0NC4NCg0KMy4gKipQZW5naXJpbWFuIEtldGlnYSoqOiBXaWxheWFoIGRlbmdhbiBlZmlzaWVuc2kgdGVyZW5kYWggYWRhbGFoICoqVXRhcmEqKiBkZW5nYW4gcmFzaW8gMy4wMDAuDQoNCiMjIyMgS2VzaW1wdWxhbg0KQmVyZGFzYXJrYW4gYW5hbGlzaXMgZGkgYXRhcywgd2lsYXlhaCB5YW5nIG1lbWlsaWtpIGVmaXNpZW5zaSBwZW5naXJpbWFuIHRlcmVuZGFoIGRpIGtlc2VsdXJ1aGFuIGFkYWxhaCAqKlRlbmdhaCoqIHBhZGEgcGVuZ2lyaW1hbiBwZXJ0YW1hLiBTZW1lbnRhcmEgaXR1LCB1bnR1ayBwZW5naXJpbWFuIGtlZHVhIGRhbiBrZXRpZ2EsIHdpbGF5YWggKipVdGFyYSoqIG1lbnVuanVra2FuIGVmaXNpZW5zaSB0ZXJlbmRhaC4gDQoNCkhhbCBpbmkgbWVudW5qdWtrYW4gYmFod2EgZmFrdG9yIGJpYXlhIGRhbiB3YWt0dSBwZW5naXJpbWFuIGJlcnZhcmlhc2kgYW50YXIgd2lsYXlhaCBkYW4gcGVuZ2lyaW1hbiwgZGFuIHBlbnRpbmcgdW50dWsgbWVtcGVydGltYmFuZ2thbiBrZWR1YSBmYWt0b3IgdGVyc2VidXQgZGFsYW0gYW5hbGlzaXMgZWZpc2llbnNpIHBlbmdpcmltYW4uDQoNCg0KIyMgMi4gUmVrb21lbmRhc2kgT3BlcmFzaW9uYWw6DQoNCiMjIyBCZXJkYXNhcmthbiBoYXNpbCBhbmFsaXNpcywgd2lsYXlhaCBtYW5hIHlhbmcgbWVtZXJsdWthbiBwZXJoYXRpYW4ga2h1c3VzIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbj8NCg0KQmVyZGFzYXJrYW4gaGFzaWwgYW5hbGlzaXMgeWFuZyB0ZWxhaCBkaWxha3VrYW4sIHRlcmRhcGF0IGR1YSB3aWxheWFoIHlhbmcgbWVtZXJsdWthbiBwZXJoYXRpYW4ga2h1c3VzIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbiwgeWFpdHUgKipUZW5nYWgqKiBkYW4gKipVdGFyYSoqLg0KDQotICoqVGVuZ2FoIChQZW5naXJpbWFuIFBlcnRhbWEpOioqIA0KDQpXaWxheWFoIGluaSBtZW5jYXRhdCByYXNpbyBlZmlzaWVuc2kgdGVydGluZ2dpIHNlYmVzYXIgMy41MDAsIHlhbmcgbWVudW5qdWtrYW4gYmFod2EgYmlheWEgcGVyIHVuaXQgeWFuZyBkaWtlbHVhcmthbiByZWxhdGlmIHRpbmdnaSBkaWJhbmRpbmdrYW4gZGVuZ2FuIHdha3R1IHBlbmdpcmltYW4geWFuZyBsZWJpaCBzaW5na2F0LiBIYWwgaW5pIG1lbmFuZGFrYW4gYWRhbnlhIHBvdGVuc2kgdW50dWsgbWVudXJ1bmthbiBiaWF5YSBwZW5naXJpbWFuLiBVbnR1ayBtZW5jYXBhaSBwZW5pbmdrYXRhbiBpbmksIHBlcmhhdGlhbiBwZXJsdSBkaWZva3Vza2FuIHBhZGEgcGVuZ3VyYW5nYW4gYmlheWEgb3BlcmFzaW9uYWwgbWVsYWx1aSBwZW5pbmdrYXRhbiBwZW5nZWxvbGFhbiBsb2dpc3Rpaywgb3B0aW1hbGlzYXNpIHJhbnRhaSBwYXNva2FuLCBkYW4gcGVuZWdha2FuIGtlYmlqYWthbiBoYXJnYSB5YW5nIGxlYmloIHN0cmF0ZWdpcy4NCg0KLSAqKlV0YXJhIChQZW5naXJpbWFuIEtlZHVhIGRhbiBLZXRpZ2EpOioqIA0KDQpXaWxheWFoIGluaSBtZW51bmp1a2thbiBrZXRpZGFrc3RhYmlsYW4gZGFsYW0gZWZpc2llbnNpIHBlbmdpcmltYW4sIGRlbmdhbiByYXNpbyBlZmlzaWVuc2kgOTQ0IHBhZGEgcGVuZ2lyaW1hbiBrZWR1YSB5YW5nIHRlcmdvbG9uZyBiYWlrLCBuYW11biBtZWxvbmNhdCBrZW1iYWxpIGtlIDMuMDAwIHBhZGEgcGVuZ2lyaW1hbiBrZXRpZ2EuIEtldGlkYWtzdGFiaWxhbiBpbmkgbWVueW9yb3RpIHBlcmx1bnlhIHBlcmhhdGlhbiBsZWJpaCB1bnR1ayBtZW5qYWdhIGtvbnNpc3RlbnNpIGRhbGFtIGVmaXNpZW5zaSBwZW5naXJpbWFuIGRpIHdpbGF5YWggaW5pLg0KDQoNCiMjIyBSZWtvbWVuZGFzaSB1bnR1ayBNZW5ndXJhbmdpIEJpYXlhIGRhbiBXYWt0dSBQZW5naXJpbWFuDQoNCkJlcmlrdXQgYWRhbGFoIGJlYmVyYXBhIHJla29tZW5kYXNpIHVudHVrIG1lbmd1cmFuZ2kgYmlheWEgZGFuIHdha3R1IHBlbmdpcmltYW4gZGkgd2lsYXlhaCB5YW5nIG1lbWVybHVrYW4gcGVyaGF0aWFuIGtodXN1cywgeWFpdHUgKipUZW5nYWgqKiBkYW4gKipVdGFyYSoqOg0KDQoxLiAqKk9wdGltYXNpIFJ1dGUgUGVuZ2lyaW1hbioqOg0KICAgLSBHdW5ha2FuIHBlcmFuZ2thdCBsdW5hayBwZW1ldGFhbiBkYW4gYW5hbGlzaXMgZGF0YSB1bnR1ayBtZXJlbmNhbmFrYW4gcnV0ZSBwZW5naXJpbWFuIHlhbmcgcGFsaW5nIGVmaXNpZW4uIEhhbCBpbmkgZGFwYXQgbWVtYmFudHUgbWVuZ3VyYW5naSB3YWt0dSB0ZW1wdWggZGFuIGtvbnN1bXNpIGJhaGFuIGJha2FyLg0KICAgLSBQZXJ0aW1iYW5na2FuIHVudHVrIG1lbmVyYXBrYW4gc2lzdGVtIHBlbmdpcmltYW4gYmVyYmFzaXMgbG9rYXNpIChnZW9sb2NhdGlvbikgeWFuZyBkYXBhdCBtZW1iYW50dSBkYWxhbSBtZW5lbnR1a2FuIGphbHVyIHRlcmNlcGF0IGRhbiB0ZXJwZW5kZWsuDQoNCjIuICoqUGVuZXJhcGFuIFRla25vbG9naSoqOg0KICAgLSBJbXBsZW1lbnRhc2lrYW4gc2lzdGVtIG1hbmFqZW1lbiB0cmFuc3BvcnRhc2kgKFRNUykgdW50dWsgbWVtYW50YXUgcGVuZ2lyaW1hbiBzZWNhcmEgcmVhbC10aW1lLCBzZWhpbmdnYSBtZW11bmdraW5rYW4gcGVueWVzdWFpYW4geWFuZyBjZXBhdCBqaWthIHRlcmphZGkga2VuZGFsYS4NCiAgIC0gR3VuYWthbiB0ZWtub2xvZ2kgcGVsYWNha2FuIHVudHVrIG1lbWJlcmlrYW4gdmlzaWJpbGl0YXMga2VwYWRhIHBlbGFuZ2dhbiBtZW5nZW5haSBzdGF0dXMgcGVuZ2lyaW1hbiwgeWFuZyBkYXBhdCBtZW5pbmdrYXRrYW4ga2VwdWFzYW4gcGVsYW5nZ2FuLg0KDQozLiAqKlBlbmdlbG9sYWFuIFBlcnNlZGlhYW4geWFuZyBFZmlzaWVuKio6DQogICAtIExha3VrYW4gYW5hbGlzaXMgcGVybWludGFhbiB1bnR1ayBtZW5nb3B0aW1hbGthbiBwZXJzZWRpYWFuIGJhcmFuZy4gUGVyc2VkaWFhbiB5YW5nIHRlcGF0IGRhcGF0IG1lbmd1cmFuZ2kgd2FrdHUgcGVuZ2lyaW1hbiBrYXJlbmEgYmFyYW5nIHRlcnNlZGlhIHNlc3VhaSBrZWJ1dHVoYW4uDQogICAtIEd1bmFrYW4gbWV0b2RlIGp1c3QtaW4tdGltZSAoSklUKSB1bnR1ayBtZW5ndXJhbmdpIGJpYXlhIHBlbnlpbXBhbmFuIGRhbiBtZW1hc3Rpa2FuIHByb2R1ayB0ZXJzZWRpYSBzYWF0IGRpYnV0dWhrYW4uDQoNCjQuICoqUGVuaW5na2F0YW4gS2luZXJqYSBLYXJ5YXdhbioqOg0KICAgLSBCZXJpa2FuIHBlbGF0aWhhbiB5YW5nIG1lbWFkYWkga2VwYWRhIGthcnlhd2FuIGRhbGFtIG1hbmFqZW1lbiBsb2dpc3RpayBkYW4gcGVuZ2d1bmFhbiB0ZWtub2xvZ2kgYmFydS4gS2FyeWF3YW4geWFuZyB0ZXJhbXBpbCBkYXBhdCBtZW5pbmdrYXRrYW4gZWZpc2llbnNpIG9wZXJhc2lvbmFsLg0KICAgLSBUZXJhcGthbiBzaXN0ZW0gaW5zZW50aWYgdW50dWsga2FyeWF3YW4geWFuZyBiZXJoYXNpbCBtZW5jYXBhaSB0YXJnZXQgZWZpc2llbnNpIGRhbGFtIHBlbmdpcmltYW4uDQoNCjUuICoqS29sYWJvcmFzaSBkZW5nYW4gUGVtYXNvayBkYW4gTWl0cmEgTG9naXN0aWsqKjoNCiAgIC0gQmFuZ3VuIGh1YnVuZ2FuIHlhbmcgbGViaWggYmFpayBkZW5nYW4gcGVtYXNvayB1bnR1ayBtZW5nZWtzcGxvcmFzaSBrZW11bmdraW5hbiBwZW5naXJpbWFuIGxhbmdzdW5nIGRhcmkgcGVtYXNvayBrZSBwZWxhbmdnYW4gKGRyb3Agc2hpcHBpbmcpLCB5YW5nIGRhcGF0IG1lbmd1cmFuZ2kgYmlheWEgZGFuIHdha3R1Lg0KICAgLSBQZXJ0aW1iYW5na2FuIHVudHVrIGJla2VyamEgc2FtYSBkZW5nYW4gbWl0cmEgbG9naXN0aWsgeWFuZyBtZW1pbGlraSBwZW5nYWxhbWFuIGRhbiBpbmZyYXN0cnVrdHVyIHlhbmcgYmFpaywgc2VoaW5nZ2EgZGFwYXQgbWVuaW5na2F0a2FuIGVmaXNpZW5zaSBwZW5naXJpbWFuLg0KDQo2LiAqKkFuYWxpc2lzIGRhbiBFdmFsdWFzaSBLaW5lcmphKio6DQogICAtIExha3VrYW4gYW5hbGlzaXMgYmVya2FsYSB0ZXJoYWRhcCBraW5lcmphIHBlbmdpcmltYW4gdW50dWsgbWVuZ2lkZW50aWZpa2FzaSBhcmVhIHlhbmcgcGVybHUgZGlwZXJiYWlraS4gR3VuYWthbiBtZXRyaWsga2luZXJqYSB1dGFtYSAoS1BJKSB1bnR1ayBtZW5ndWt1ciBlZmlzaWVuc2kgZGFuIGVmZWt0aXZpdGFzIHBlbmdpcmltYW4uDQogICAtIEt1bXB1bGthbiB1bXBhbiBiYWxpayBkYXJpIHBlbGFuZ2dhbiB1bnR1ayBtZW1haGFtaSBwZW5nYWxhbWFuIG1lcmVrYSBkYW4gYXJlYSB5YW5nIGJpc2EgZGlwZXJiYWlraSBkYWxhbSBwcm9zZXMgcGVuZ2lyaW1hbi4NCg0KNy4gKipEaXZlcnNpZmlrYXNpIE1ldG9kZSBQZW5naXJpbWFuKio6DQogICAtIFBlcnRpbWJhbmdrYW4gdW50dWsgbWVuZ2d1bmFrYW4gYmVyYmFnYWkgbW9kYSB0cmFuc3BvcnRhc2kgKGRhcmF0LCB1ZGFyYSwgbGF1dCkgYmVyZGFzYXJrYW4ga2VidXR1aGFuIHBlbmdpcmltYW4gdW50dWsgbWVuZW11a2FuIHNvbHVzaSB5YW5nIGxlYmloIGVrb25vbWlzIGRhbiBjZXBhdC4NCiAgIC0gVWppIGNvYmEgcGVuZ2lyaW1hbiBtZW5nZ3VuYWthbiBsYXlhbmFuIGt1cmlyIGxva2FsIHVudHVrIHBlbmdpcmltYW4gY2VwYXQgZGkgYXJlYSBwZXJrb3RhYW4geWFuZyBwYWRhdC4NCg0KIyMjIEtlc2ltcHVsYW4NCkRlbmdhbiBtZW5lcmFwa2FuIHJla29tZW5kYXNpIGluaSwgZGloYXJhcGthbiBiaWF5YSBkYW4gd2FrdHUgcGVuZ2lyaW1hbiBkYXBhdCBkaWt1cmFuZ2kgc2VjYXJhIHNpZ25pZmlrYW4uIFN0cmF0ZWdpIHlhbmcgdGVyZW5jYW5hIGRhbiBpbm92YXRpZiBha2FuIG1lbWJhbnR1IGRhbGFtIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgb3BlcmFzaW9uYWwgZGFuIG1lbWJlcmlrYW4gbGF5YW5hbiB5YW5nIGxlYmloIGJhaWsga2VwYWRhIHBlbGFuZ2dhbiwgc2VrYWxpZ3VzIG1lbmphZ2EgYmlheWEgdGV0YXAgcmVuZGFoLiBVcGF5YSBpbmkgYWthbiBiZXJrb250cmlidXNpIHBhZGEgcGVydHVtYnVoYW4gYmlzbmlzIHlhbmcgYmVya2VsYW5qdXRhbiBkYW4ga2VwdWFzYW4gcGVsYW5nZ2FuIHlhbmcgbGViaWggdGluZ2dpLg0KDQoNCiMjIDMuS2luZXJqYSBCZXJkYXNhcmthbiBKZW5pcyBCYXJhbmc6DQoNCiMjIyBBbmFsaXNpcyBLaW5lcmphIFBlbmdpcmltYW4gQmVyZGFzYXJrYW4gSmVuaXMgQmFyYW5nIGRhbiBXaWxheWFoDQoNClVudHVrIG1lbmdhbmFsaXNpcyBraW5lcmphIHBlbmdpcmltYW4gYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nIGRhbiB3aWxheWFoLCBraXRhIHBlcmx1IG1lbXBlcnRpbWJhbmdrYW4gZHVhIHBhcmFtZXRlciB1dGFtYTogd2FrdHUgcGVuZ2lyaW1hbiBkYW4gYmlheWEgcGVyIHVuaXQuIEJlcmlrdXQgYWRhbGFoIGFuYWxpc2lzIGJlcmRhc2Fya2FuIGRhdGEgeWFuZyB0ZWxhaCBkaWJlcmlrYW46DQoNCiMjIyMgMS4gV2FrdHUgUGVuZ2lyaW1hbg0KV2FrdHUgcGVuZ2lyaW1hbiBiZXJ2YXJpYXNpIGFudGFyIHdpbGF5YWggZGFuIGplbmlzIGJhcmFuZy4gU2VjYXJhIHVtdW0sIHNlbWFraW4gY2VwYXQgd2FrdHUgcGVuZ2lyaW1hbiwgc2VtYWtpbiBlZmlzaWVuIHByb3NlcyBsb2dpc3Rpay4gDQoNCkJlcmlrdXQgYWRhbGFoIHdha3R1IHBlbmdpcmltYW4gcGVyIHdpbGF5YWggYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nOg0KDQotICoqVXRhcmEqKjogDQogIC0gRWxla3Ryb25pazogNSBqYW0NCiAgLSBQYWthaWFuOiA5IGphbQ0KICAtIFBlcmFsYXRhbjogNCBqYW0NCiAgDQotICoqU2VsYXRhbioqOiANCiAgLSBQYWthaWFuOiA4IGphbQ0KICAtIE1ha2FuYW46IDcgamFtDQogIC0gRWxla3Ryb25pazogNiBqYW0NCiAgDQotICoqVGltdXIqKjogDQogIC0gTWFrYW5hbjogNiBqYW0NCiAgLSBQYWthaWFuOiA1IGphbQ0KICAtIFBlcmFsYXRhbjogNSBqYW0NCiAgDQotICoqQmFyYXQqKjogDQogIC0gUGVyYWxhdGFuOiA3IGphbQ0KICAtIEVsZWt0cm9uaWs6IDYgamFtDQogIC0gTWFrYW5hbjogNSBqYW0NCiAgDQotICoqVGVuZ2FoKio6IA0KICAtIEVsZWt0cm9uaWs6IDQgamFtDQogIC0gUGFrYWlhbjogOCBqYW0NCiAgLSBQZXJhbGF0YW46IDYgamFtDQoNCkRhcmkgYW5hbGlzaXMgaW5pLCBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YToNCi0gKipUZW5nYWgqKiAoRWxla3Ryb25paykgZGFuICoqVXRhcmEqKiAoUGVyYWxhdGFuKSBtZW1pbGlraSB3YWt0dSBwZW5naXJpbWFuIHRlcmNlcGF0LCB5YWl0dSA0IGphbS4NCg0KLSAqKlV0YXJhKiogKFBha2FpYW4pIG1lbWlsaWtpIHdha3R1IHBlbmdpcmltYW4gdGVybGFtYSwgeWFpdHUgOSBqYW0uDQoNCiMjIyMgMi4gQmlheWEgcGVyIFVuaXQNCg0KQmlheWEgcGVyIHVuaXQganVnYSBiZXJiZWRhIGFudGFyYSB3aWxheWFoIGRhbiBqZW5pcyBiYXJhbmcuIFNlYnVhaCBiaWF5YSB5YW5nIGxlYmloIHJlbmRhaCBiZXJhcnRpIGVmaXNpZW5zaSB5YW5nIGxlYmloIGJhaWsgZGFsYW0gaGFsIGJpYXlhIHBlbmdpcmltYW4uDQoNCkJlcmlrdXQgYWRhbGFoIGJpYXlhIHBlciB1bml0IGJlcmRhc2Fya2FuIHdpbGF5YWggZGFuIGplbmlzIGJhcmFuZzoNCg0KLSAqKlV0YXJhKio6IA0KICAtIEVsZWt0cm9uaWs6IFJwIDE1LjAwMCANCiAgLSBQYWthaWFuOiBScCA4LjUwMCANCiAgLSBQZXJhbGF0YW46IFJwIDEyLjAwMCANCiAgDQotICoqU2VsYXRhbioqOiANCiAgLSBQYWthaWFuOiBScCA4LjAwMCANCiAgLSBNYWthbmFuOiBScCA5LjUwMCANCiAgLSBFbGVrdHJvbmlrOiBScCAxNi4wMDANCiAgDQotICoqVGltdXIqKjogDQogIC0gTWFrYW5hbjogUnAgMTAuMDAwIA0KICAtIFBha2FpYW46IFJwIDguMjAwIA0KICAtIFBlcmFsYXRhbjogUnAgMTEuMDAwIA0KICANCi0gKipCYXJhdCoqOiANCiAgLSBQZXJhbGF0YW46IFJwIDEyLjAwMCANCiAgLSBFbGVrdHJvbmlrOiAxNC41MDAgDQogIC0gTWFrYW5hbjogUnAgMTAuNTAwIA0KICANCi0gKipUZW5nYWgqKjogDQogIC0gRWxla3Ryb25pazogUnAgMTQuMDAwIA0KICAtIFBha2FpYW46IFJwIDcuODAwDQogIC0gUGVyYWxhdGFuOiBScCAxMS41MDANCg0KRGFyaSBhbmFsaXNpcyBpbmksIGRhcGF0IGRpc2ltcHVsa2FuIGJhaHdhOg0KLSAqKlNlbGF0YW4qKiAoUGFrYWlhbikgbWVtaWxpa2kgYmlheWEgcGVyIHVuaXQgdGVyZW5kYWgsIHlhaXR1IFJwIDguMDAwIA0KLSAqKlNlbGF0YW4qKiAoRWxla3Ryb25paykgbWVtaWxpa2kgYmlheWEgcGVyIHVuaXQgdGVydGluZ2dpLCB5YWl0dSBScCAxNi4wMDAgDQoNCiMjIyBLZXNpbXB1bGFuDQpCZXJkYXNhcmthbiBhbmFsaXNpcyBkaSBhdGFzLCBraXRhIGRhcGF0IG1lbnlpbXB1bGthbjoNCg0KLSAqKldpbGF5YWggZGVuZ2FuIHdha3R1IHBlbmdpcmltYW4gbGViaWggY2VwYXQqKjogDQogIC0gKipUZW5nYWgqKiAoRWxla3Ryb25paykgZGFuICoqVXRhcmEqKiAoUGVyYWxhdGFuKSBkZW5nYW4gd2FrdHUgcGVuZ2lyaW1hbiA0IGphbS4NCg0KLSAqKldpbGF5YWggZGVuZ2FuIGJpYXlhIHBlciB1bml0IGxlYmloIHJlbmRhaCoqOg0KICAtICoqU2VsYXRhbioqIChQYWthaWFuKSBkZW5nYW4gYmlheWEgcGVyIHVuaXQgUnAgOC4wMDAgDQoNCi0gKipLb21iaW5hc2kgdGVyYmFpayoqOiANCiAgLSBKaWthIHR1anVhbiBhZGFsYWggdW50dWsgbWVuZ29wdGltYWxrYW4gcGVuZ2lyaW1hbiBkZW5nYW4gbWVtcGVydGltYmFuZ2thbiB3YWt0dSBkYW4gYmlheWEsIHdpbGF5YWggKipUZW5nYWgqKiB1bnR1ayBwZW5naXJpbWFuIGVsZWt0cm9uaWsgYWRhbGFoIHBpbGloYW4gdGVyYmFpayB1bnR1ayB3YWt0dSB0ZXJjZXBhdCwgc2VkYW5na2FuICoqU2VsYXRhbioqIHVudHVrIHBlbmdpcmltYW4gcGFrYWlhbiBhZGFsYWggcGlsaWhhbiB0ZXJiYWlrIHVudHVrIGJpYXlhIHRlcmVuZGFoLiANCg0KDQoNCg==