Pendahuluan

Dalam dunia bisnis, pemahaman terhadap hubungan antara aktivitas pemasaran (marketing) dan penjualan (sales) menjadi aspek penting dalam merumuskan strategi yang efektif. Salah satu pendekatan yang dapat digunakan untuk mengevaluasi kekuatan dan arah hubungan tersebut adalah melalui analisis korelasi.

Analisis korelasi merupakan uji statistika yang mengukur keeratan hubungan antara dua variabel. Keeratan hubungan antara dua variabel dapat diukur kekuatannya. Indeks yang mengukur keeratan hubungan dua variabel disebut koefisien korelasi. Ketika data tidak memenuhi asumsi normalitas atau bersifat ordinal, metode korelasi non-parametrik seperti korelasi Spearman menjadi pilihan yang lebih tepat.

Korelasi Spearman merupakan pengukuran nonparametrik. Koefisien korelasi ini mempuyai simbol \(\rho\) (rho). Pengukuran dengan menggunakan koefisien korelasi Spearman digunakan untuk menilai adanya seberapa baik fungsi monotonik (suatu fungsi yang sesuai perintah) yang digunakan untuk menggambarkan hubungan dua variabel dengan tanpa membuat asumsi distribusi frekuensi dari variabel-variabel yang diteliti.

Nilai koefisien korelasi Spearman (\(\rho\)) harus memenuhi \(-1 \leq \rho \leq 1\). Rumusnya adalah: \[ \rho = 1 - \frac{6\sum_{i=1}^{n} d_i^2}{n(n^2-1)} \]

dimana

\[\sum_{i=1}^{n} d_i^2 = \sum_{i=1}^{n} \left[ R(X_i) - R(Y_i) \right]^2 \] yaitu jumlah kuadrat dari selisih-selisih antara rank-rank \(X_i\) dan \(Y_i\) untuk masing-masing pengamatan.

Keterangan:
\(\rho\) : Koefisien korelasi rank Spearman
\(d_i^2\) : Ranking yang dikuadratkan
\(n\) : Banyaknya data

Tabel Interpretasi Nilai \(\rho\) Spearman
Nilai \(\rho\)
rho_positif rho_negatif Kategori
0.9 ≤ ρ < 1 -0.9 ≤ ρ < -1 Sangat kuat
0.7 ≤ ρ < 0.9 -0.7 ≤ ρ < -0.9 Kuat
0.5 ≤ ρ < 0.7 -0.5 ≤ ρ < -0.7 Moderat
0.3 ≤ ρ < 0.5 -0.3 ≤ ρ < -0.5 Lemah
0 ≤ ρ < 0.3 -0 ≤ ρ < -0.3 Sangat lemah

Insight

Insight yang ingin diperoleh dari analisis ini adalah apakah peningkatan aktivitas marketing memiliki hubungan signifikan secara statistik dengan kenaikan angka penjualan, yang dapat memberikan dasar bagi optimalisasi strategi promosi.

Pengujian Data

Uji Normalitas

  1. Hipotesis
    \(H_0\) : Data berdistribusi normal
    \(H_1\) : Data tidak berdistribusi normal

  2. Taraf Signifikansi (α)

  3. Daerah Kritis \(H_0\) ditolak jika p−value < \(\alpha\)

  4. Statistik Uji Menggunakan saphiro.test() untuk menguji normalitas pada masing-masing variabel.

  5. Kesimpulan Jika p-value < 0,05 → Tolak \(H_0\) → Data tidak berdistribusi normal.
    Jika p-value ≥ 0,05 → Gagal tolak \(H_0\) → Data berdistribusi normal.

Uji Korelasi Spearman

  1. Hipotesis
    \(H_0\) : Tidak terdapat hubungan (korelasi) yang signifikan antara dua variabel
    \(H_1\) : Terdapat hubungan (korelasi) yang signifikan antara dua variabel

  2. Taraf Signifikansi (α)

  3. Daerah Kritis \(H_0\) ditolak jika p−value < \(\alpha\)

  4. Statistik Uji Menggunakan cor.test() untuk menguji korelasi antara kedua variabel.

  5. Kesimpulan Jika p-value < 0,05 → Tolak \(H_0\) → Terdapat hubungan (korelasi) yang signifikan antara dua variabel.
    Jika p-value ≥ 0,05 → Gagal tolak \(H_0\) → Tidak terdapat hubungan (korelasi) yang signifikan antara dua variabel.

Deskripsi Data

  1. Aktifkan library yang digunakan
library(readxl)    # Untuk membaca file Excel
library(dplyr)     # Untuk manipulasi data
library(ggplot2)   # Untuk visualisasi data
library(scales)    # Untuk formatting axis
library(DT)        # Untuk tabel interaktif
library(tidyverse) # Koleksi paket data science
library(knitr)     # Mengatur tampilan output di RMarkdown
library(ggpubr)    # Untuk membuat grafik dan menambahkan uji statistik pada grafik ggplot
library(patchwork) # Untuk menggabungkan plot
  1. Input Data
Data02 <- read_excel("~/Semester 4/SIM/CM 1/3. CM1 - Coffee Chain Datasets.xlsx")
  1. Tampilkan Data
library(DT)
library(dplyr)
marketing_sales <- Data02 %>% select(Marketing, Sales)
DT::datatable(marketing_sales)

Analisis Korelasi Spearman

Uji Normalitas

  • Uji Normalitas Variabel Marketing
library(ggpubr)

ggqqplot(marketing_sales$Marketing) +
  labs(title = "Q-Q Plot Variabel Marketing") +
  theme(
    plot.title = element_text(
      hjust = 0.5,  
      size = 14,    
      face = "bold", 
      margin = margin(b = 15)  
  ))

shapiro.test(marketing_sales$Marketing)
## 
##  Shapiro-Wilk normality test
## 
## data:  marketing_sales$Marketing
## W = 0.81776, p-value < 2.2e-16

Kesimpulan
Karena p-value = 2.2e-16 < 0,05 maka \(H_0\) ditolak yang berarti data tidak berdistribusi normal.

  • Uji Normalitas Variabel Sales
ggqqplot(marketing_sales$Sales) +
  labs(title = "Q-Q Plot Variabel Sales") +
  theme(
    plot.title = element_text(
      hjust = 0.5,
      size = 14,
      face = "bold",
      margin = margin(b = 15))
  )

shapiro.test(marketing_sales$Sales)
## 
##  Shapiro-Wilk normality test
## 
## data:  marketing_sales$Sales
## W = 0.78969, p-value < 2.2e-16

Kesimpulan
Karena p-value = 2.2e-16 < 0,05 maka \(H_0\) ditolak yang berarti data tidak berdistribusi normal.

Uji Korelasi Spearman

library(ggplot2)
library(patchwork)  

# Plot untuk Marketing
plot_marketing <- ggplot(marketing_sales, aes(x = Marketing)) + 
  geom_histogram(bins = 30, fill = "#9A7E6F", color = "#54473F", alpha = 0.7) +
  labs(title = "Distribusi Nilai Marketing",
       x = "Marketing",
       y = "Frekuensi") +
  theme_minimal()

# Plot untuk Sales
plot_sales <- ggplot(marketing_sales, aes(x = Sales)) + 
  geom_histogram(bins = 30, fill = "#B59F78", color = "#54473F", alpha = 0.7) +
  labs(title = "Distribusi Nilai Sales",
       x = "Sales", 
       y = "Frekuensi") +
  theme_minimal()

# Menggabungkan plot secara horizontal
combined_plots <- plot_marketing + plot_sales + 
  plot_annotation(title = "Distribusi Variabel Marketing dan Sales",
                theme = theme(plot.title = element_text(hjust = 0.5, size = 14)))

# Menampilkan plot gabungan
combined_plots

cor_result <- cor.test(marketing_sales$Marketing, marketing_sales$Sales, 
                       method = "spearman", exact = FALSE)
print(cor_result)
## 
##  Spearman's rank correlation rho
## 
## data:  marketing_sales$Marketing and marketing_sales$Sales
## S = 2463882518, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8071508

Kesimpulan
Karena p-value = 2.2e-16 < 0,05 maka \(H_0\) ditolak yang berarti terdapat hubungan (korelasi) yang signifikan antara marketing dengan sales.

Didapatkan nilai rho \(\rho\) sebesar 0.8071508 yang termasuk dalam kategori korelasi kuat karena > 0,7. Terdapat hubungan positif kuat antara variabel marketing dan sales. Setiap peningkatan pada aktivitas marketing cenderung diikuti peningkatan sales.

library(ggplot2)

ggplot(marketing_sales, aes(x = Marketing, y = Sales)) +
  geom_point(alpha = 0.5, size = 1.5) +  
  geom_smooth(method = "lm", se = FALSE, color = "blue", linewidth = 1) +  
  ggtitle("Hubungan antara Marketing dan Sales") +
  xlab("Biaya Marketing") +
  ylab("Total Sales") +
  theme(
    plot.title = element_text(
      hjust = 0.5,           
      size = 14,             
      color = "#333333",      
      family = "Times New Roman"
    ),
    
    axis.title = element_text(
      size = 14,            
      color = "#555555"      
    ),
    axis.text = element_text(
      size = 12,            
      color = "#666666"    
    ),

    plot.background = element_rect(fill = "#FFF8E7"),  
    panel.background = element_rect(fill = "#FFF8E7"), 

    panel.grid.major = element_line(color = "gray80", linewidth = 0.5),  
    panel.grid.minor = element_blank(),                                  
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1)  
  )

Garis biru menunjukkan kemiringan positif, yang menandakan bahwa secara umum, semakin tinggi biaya marketing, maka semakin tinggi pula total penjualan (sales). Titik-titik data tersebar cukup luas di sekitar garis. Ini menunjukkan bahwa meskipun ada kecenderungan positif, hubungan antara biaya marketing dan penjualan tidak selalu konsisten. Ada pengaruh faktor lain atau variasi alami dalam data. Terdapat beberapa titik yang menyimpang jauh dari garis (baik di bawah maupun di atas), yang bisa dianggap sebagai outlier. Ini menunjukkan bahwa dalam beberapa kasus, biaya marketing tinggi tidak selalu menghasilkan sales tinggi atau sebaliknya.

Kesimpulan

Berdasarkan uji normalitas menggunakan Shapiro-Wilk, diketahui bahwa data pada variabel marketing dan sales tidak berdistribusi normal. Analisis dilanjutkan dengan uji korelasi non-parametrik menggunakan Spearman. Hasil uji korelasi Spearman menunjukkan bahwa nilai p-value < 0,05, sehingga \(H_0\) ditolak. Ini berarti terdapat hubungan yang signifikan antara variabel marketing dan sales. Nilai koefisien korelasi \(\rho\) (rho) sebesar 0,8071508 mengindikasikan adanya hubungan positif yang kuat antara keduanya, yang menunjukkan bahwa setiap peningkatan aktivitas marketing cenderung diikuti oleh peningkatan otal sales.

Dengan demikian, dapat disimpulkan bahwa strategi marketing yang dilakukan selama ini telah berjalan secara efektif dan sesuai dengan tujuan pemasaran, karena terbukti mampu mendorong peningkatan total penjualan. Hal ini menunjukkan bahwa alokasi anggaran dan upaya dalam kegiatan marketing memberikan dampak yang nyata terhadap total penjualan.

Referensi

  1. Nelvidawati, & Kasman, M. (2023). Penggunaan korelasi Spearman untuk menguji hubungan suhu dan besarnya curah hujan bulanan di Kota Padang. Jurnal Daur Lingkungan, 6(1), 34–39.

  2. Nugroho, S., Akbar, S., & Vusvitasari, R. (2008). Kajian hubungan koefisien korelasi Pearson (r), Spearman-rho (\(\rho\)),ρ Kendall-Tau (\(\tau\)), Gamma (\(\Gamma\)), dan Somers (\(d_{yx}\)). Jurnal Gradien, 4(2), 372–381.

  3. Yanti, C. A., & Akhri, I. J. (2021). Perbedaan uji korelasi Pearson, Spearman dan Kendall Tau dalam menganalisis kejadian diare. Jurnal Endurance: Kajian Ilmiah Problema Kesehatan, 6(1), 51–58.

  4. Amelia, D. G., Natasya, M., Septiana, M., Dewi, Z. K., & Halizah, N. (2024). Analisis korelasi antara kuantitas waktu tidur dengan konsentrasi belajar mahasiswa Agribisnis Universitas Sultan Ageng Tirtayasa. IJEDR: Indonesian Journal of Education and Development Research, 2(1).

LS0tDQp0aXRsZTogIkFOQUxJU0lTIEtPUkVMQVNJIFNQRUFSTUFOIEFOVEFSQSBNQVJLRVRJTkcgREVOR0FOIFNBTEVTIFBBREEgUEVOSlVBTEFOIENPRkZFRSBDSEFJTiINCmF1dGhvcjogIlphaHJhIE51ciBBaW5pIC0gTTA3MjMwOTMiDQpkYXRlOiANCm91dHB1dDogb3BlbmludHJvOjpsYWJfcmVwb3J0DQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KPHN0eWxlPg0KYm9keSB7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiNlMGRkY2M7DQogIGZvbnQtc2l6ZTogMThweDsNCiAgdGV4dC1hbGlnbjoganVzdGlmeTsNCiAgZm9udC1zaXplOiAxOHB4Ow0KICB0ZXh0LWp1c3RpZnk6IGludGVyLXdvcmQ7DQp9DQoNCnRhYmxlLmRhdGFUYWJsZSB7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7DQogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50Ow0KfQ0KDQovKiBUaXRsZSAqLw0KLnRpdGxlLCAuc3VidGl0bGUsIC5hdXRob3IsIC5kYXRlIHsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6ICMwMDAwMDA7DQp9DQoNCmgxIHsNCiAgY29sb3I6ICM2RjRFMzc7IA0KICBmb250LXNpemU6IDMwcHg7DQogIGZvbnQtZmFtaWx5OiBUaW1lcyBOZXcgUm9tYW47DQp9DQpoMiB7DQogIGNvbG9yOiAjOEI0NTEzOyANCiAgZm9udC1zaXplOiAyNHB4Ow0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCn0NCg0KaDMgew0KICBjb2xvcjogI0JEQjc2QjsgLyogV2FybmEgb2xpdmUvZ29sZCAoc2VwZXJ0aSAiRnVuZ3NpIE1ldG9kZSIpICovDQogIGZvbnQtc2l6ZTogMThweDsNCiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQp9DQoNCi50b2NpZnkgLnRvY2lmeS1pdGVtLmFjdGl2ZSwNCi50b2NpZnkgLnRvY2lmeS1pdGVtLmhpZ2hsaWdodCB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5NDg5NzkgIWltcG9ydGFudDsgDQogIGNvbG9yOiB3aGl0ZSFpbXBvcnRhbnQ7DQoNCi8qIFRhYmxlIG9mIGNvbnRlbnRzIChzaWRlYmFyKSBzdHlsZSAqLw0KLnRvY2lmeSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7DQogIGJvcmRlci1yYWRpdXM6IDZweDsNCiAgcGFkZGluZzogMTBweDsNCiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogIGZvbnQtc2l6ZTogMjBweDsNCn0NCg0KLnRvY2lmeS1oZWFkZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDY4MkI0OyAvKiBiaXJ1IHVudHVrIGJhZ2lhbiBhdGFzIHNpZGViYXIgKi8NCiAgY29sb3I6IHdoaXRlOw0KICBmb250LXdlaWdodDogYm9sZDsNCiAgcGFkZGluZzogNnB4Ow0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgbWFyZ2luLWJvdHRvbTogMTBweDsNCn0NCg0KLnRvY2lmeS1pdGVtIHsNCiAgY29sb3I6ICM4QjQ1MTM7DQp9DQoNCnByZSwgY29kZSB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5NDg5NzkgIWltcG9ydGFudDsNCiAgY29sb3I6ICM5NDg5NzkgIWltcG9ydGFudDsNCiAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICBwYWRkaW5nOiA0cHg7DQp9DQo8L3N0eWxlPg0KDQoNCjxkaXYgc3R5bGU9ImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogI0Q3RDNCRjsgcGFkZGluZzogMjBweDsgYm9yZGVyLXJhZGl1czogMTBweDsgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwwLDAsMC4xKTsiPg0KIyAqKlBlbmRhaHVsdWFuKiogDQo8cCBzdHlsZT0idGV4dC1pbmRlbnQ6IDMwcHg7Ij4NCkRhbGFtIGR1bmlhIGJpc25pcywgcGVtYWhhbWFuIHRlcmhhZGFwIGh1YnVuZ2FuIGFudGFyYSBha3Rpdml0YXMgcGVtYXNhcmFuIChtYXJrZXRpbmcpIGRhbiBwZW5qdWFsYW4gKHNhbGVzKSBtZW5qYWRpIGFzcGVrIHBlbnRpbmcgZGFsYW0gbWVydW11c2thbiBzdHJhdGVnaSB5YW5nIGVmZWt0aWYuIFNhbGFoIHNhdHUgcGVuZGVrYXRhbiB5YW5nIGRhcGF0IGRpZ3VuYWthbiB1bnR1ayBtZW5nZXZhbHVhc2kga2VrdWF0YW4gZGFuIGFyYWggaHVidW5nYW4gdGVyc2VidXQgYWRhbGFoIG1lbGFsdWkgYW5hbGlzaXMga29yZWxhc2kuIA0KPC9wPg0KDQo8cCBzdHlsZT0idGV4dC1pbmRlbnQ6IDMwcHg7Ij4NCkFuYWxpc2lzIGtvcmVsYXNpIG1lcnVwYWthbiB1amkgc3RhdGlzdGlrYSB5YW5nIG1lbmd1a3VyIGtlZXJhdGFuIGh1YnVuZ2FuIGFudGFyYSBkdWEgdmFyaWFiZWwuIEtlZXJhdGFuIGh1YnVuZ2FuIGFudGFyYSBkdWEgdmFyaWFiZWwgZGFwYXQgZGl1a3VyIGtla3VhdGFubnlhLiBJbmRla3MgeWFuZyBtZW5ndWt1ciBrZWVyYXRhbiBodWJ1bmdhbiBkdWEgdmFyaWFiZWwgZGlzZWJ1dCBrb2VmaXNpZW4ga29yZWxhc2kuIEtldGlrYSBkYXRhIHRpZGFrIG1lbWVudWhpIGFzdW1zaSBub3JtYWxpdGFzIGF0YXUgYmVyc2lmYXQgb3JkaW5hbCwgbWV0b2RlIGtvcmVsYXNpIG5vbi1wYXJhbWV0cmlrIHNlcGVydGkga29yZWxhc2kgU3BlYXJtYW4gbWVuamFkaSBwaWxpaGFuIHlhbmcgbGViaWggdGVwYXQuDQo8L3A+DQoNCjxwIHN0eWxlPSJ0ZXh0LWluZGVudDogMzBweDsiPg0KS29yZWxhc2kgU3BlYXJtYW4gbWVydXBha2FuIHBlbmd1a3VyYW4gbm9ucGFyYW1ldHJpay4gS29lZmlzaWVuIGtvcmVsYXNpIGluaSBtZW1wdXlhaSBzaW1ib2wgJFxyaG8kIChyaG8pLiBQZW5ndWt1cmFuIGRlbmdhbiBtZW5nZ3VuYWthbiBrb2VmaXNpZW4ga29yZWxhc2kgU3BlYXJtYW4gZGlndW5ha2FuIHVudHVrIG1lbmlsYWkgYWRhbnlhIHNlYmVyYXBhIGJhaWsgZnVuZ3NpIG1vbm90b25payAoc3VhdHUgZnVuZ3NpIHlhbmcgc2VzdWFpIHBlcmludGFoKSB5YW5nIGRpZ3VuYWthbiB1bnR1ayBtZW5nZ2FtYmFya2FuIGh1YnVuZ2FuIGR1YSB2YXJpYWJlbCBkZW5nYW4gdGFucGEgbWVtYnVhdCBhc3Vtc2kgZGlzdHJpYnVzaSBmcmVrdWVuc2kgZGFyaSB2YXJpYWJlbC12YXJpYWJlbCB5YW5nIGRpdGVsaXRpLg0KPC9wPg0KDQoNCmBgYHtyLCByZXN1bHRzPSdhc2lzJywgZWNobz1GQUxTRX0NCmNhdCgiDQpOaWxhaSBrb2VmaXNpZW4ga29yZWxhc2kgU3BlYXJtYW4gKCRcXHJobyQpIGhhcnVzIG1lbWVudWhpICQtMSBcXGxlcSBcXHJobyBcXGxlcSAxJC4gDQpSdW11c255YSBhZGFsYWg6DQokJA0KXFxyaG8gPSAxIC0gXFxmcmFjezZcXHN1bV97aT0xfV57bn0gZF9pXjJ9e24obl4yLTEpfQ0KJCQNCiIpDQpgYGANCg0KPHAgYWxpZ249ImNlbnRlciI+DQpkaW1hbmEgDQo8L3A+DQoNCmBgYHtyLCByZXN1bHRzPSdhc2lzJywgZWNobz1GQUxTRX0NCmNhdCgiDQokJFxcc3VtX3tpPTF9XntufSBkX2leMiA9IFxcc3VtX3tpPTF9XntufSBcXGxlZnRbIFIoWF9pKSAtIFIoWV9pKSBcXHJpZ2h0XV4yDQokJCB5YWl0dSBqdW1sYWgga3VhZHJhdCBkYXJpIHNlbGlzaWgtc2VsaXNpaCBhbnRhcmEgcmFuay1yYW5rICRYX2kkIGRhbiAkWV9pJCB1bnR1ayBtYXNpbmctbWFzaW5nIHBlbmdhbWF0YW4uDQoiKQ0KYGBgDQoNCioqS2V0ZXJhbmdhbjoqKiAgDQokXHJobyQgICAgICA6IEtvZWZpc2llbiBrb3JlbGFzaSByYW5rIFNwZWFybWFuICANCiRkX2leMiQgICAgIDogUmFua2luZyB5YW5nIGRpa3VhZHJhdGthbiAgDQokbiQgICAgICAgICA6IEJhbnlha255YSBkYXRhICANCg0KDQpgYGB7ciB0YWJsZSwgZWNobz1GQUxTRSwgcmVzdWx0cz0nYXNpcycsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KGh0bWx0b29scykNCg0KIyBNZW1idWF0IGRhdGEgZnJhbWUgdW50dWsgdGFiZWwNCnRhYmVsX3JobyA8LSBkYXRhLmZyYW1lKA0KICAicmhvX3Bvc2l0aWYiID0gYygNCiAgICAiMC45IFwg4omkIFwgKs+BKiA8IDEiLA0KICAgICIwLjcgXCDiiaQgXCAqz4EqIDwgMC45IiwNCiAgICAiMC41IFwg4omkIFwgKs+BKiA8IDAuNyIsDQogICAgIjAuMyBcIOKJpCBcICrPgSogPCAwLjUiLA0KICAgICIwIFwg4omkIFwgKs+BKiA8IDAuMyINCiAgKSwNCiAgInJob19uZWdhdGlmIiA9IGMoDQogICAgIi0wLjkgXCDiiaQgXCAqz4EqIDwgLTEiLA0KICAgICItMC43IFwg4omkIFwgKs+BKiA8IC0wLjkiLA0KICAgICItMC41IFwg4omkIFwgKs+BKiA8IC0wLjciLA0KICAgICItMC4zIFwg4omkIFwgKs+BKiA8IC0wLjUiLA0KICAgICItMCBcIOKJpCBcICrPgSogPCAtMC4zIg0KICApLA0KICAiS2F0ZWdvcmkiID0gYygNCiAgICAiU2FuZ2F0IGt1YXQiLA0KICAgICJLdWF0IiwNCiAgICAiTW9kZXJhdCIsDQogICAgIkxlbWFoIiwNCiAgICAiU2FuZ2F0IGxlbWFoIg0KICApDQopDQoNCmtibCh0YWJlbF9yaG8sDQogICAgY2FwdGlvbiA9ICI8Y2VudGVyPjxiPlRhYmVsPC9iPiBJbnRlcnByZXRhc2kgTmlsYWkgJFxccmhvJCBTcGVhcm1hbjwvY2VudGVyPiIsDQogICAgZm9ybWF0ID0gImh0bWwiLA0KICAgIGFsaWduID0gImMiLA0KICAgIGVzY2FwZSA9IEZBTFNFKSAlPiUNCiAga2FibGVfc3R5bGluZygNCiAgICBib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiKSwNCiAgICBmdWxsX3dpZHRoID0gRkFMU0UsDQogICAgcG9zaXRpb24gPSAiY2VudGVyIiwNCiAgICBmb250X3NpemUgPSAxNA0KICApICU+JQ0KICByb3dfc3BlYygwLCBiYWNrZ3JvdW5kID0gIndoaXRlIikgJT4lICAjIGhlYWRlciBwdXRpaA0KICByb3dfc3BlYygxOm5yb3codGFiZWxfcmhvKSwgYmFja2dyb3VuZCA9ICJ3aGl0ZSIpICU+JSAgIyBpc2kgcHV0aWgNCiAgYWRkX2hlYWRlcl9hYm92ZShjKCJOaWxhaSAkXFxyaG8kIiA9IDIsICIgIiA9IDEpKQ0KYGBgDQojIyAqKkluc2lnaHQqKg0KPHAgc3R5bGU9InRleHQtaW5kZW50OiAzMHB4OyI+DQpJbnNpZ2h0IHlhbmcgaW5naW4gZGlwZXJvbGVoIGRhcmkgYW5hbGlzaXMgaW5pIGFkYWxhaCBhcGFrYWggcGVuaW5na2F0YW4gYWt0aXZpdGFzIG1hcmtldGluZyBtZW1pbGlraSBodWJ1bmdhbiBzaWduaWZpa2FuIHNlY2FyYSBzdGF0aXN0aWsgZGVuZ2FuIGtlbmFpa2FuIGFuZ2thIHBlbmp1YWxhbiwgeWFuZyBkYXBhdCBtZW1iZXJpa2FuIGRhc2FyIGJhZ2kgb3B0aW1hbGlzYXNpIHN0cmF0ZWdpIHByb21vc2kuDQo8L3A+DQoNCjwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwcHg7Ij48L2Rpdj4NCg0KPGRpdiBzdHlsZT0iY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRDdEM0JGOyBwYWRkaW5nOiAyMHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLDAsMCwwLjEpOyI+DQojICoqUGVuZ3VqaWFuIERhdGEqKnsudGFic2V0fQ0KIyMgKipVamkgTm9ybWFsaXRhcyoqDQoxLiBIaXBvdGVzaXM8YnI+DQogICRIXzAkIDogRGF0YSBiZXJkaXN0cmlidXNpIG5vcm1hbDxicj4NCiAgJEhfMSQgOiBEYXRhIHRpZGFrIGJlcmRpc3RyaWJ1c2kgbm9ybWFsDQogICAgDQoyLiBUYXJhZiBTaWduaWZpa2Fuc2kgKM6xKQ0KDQozLiBEYWVyYWggS3JpdGlzICRIXzAkIGRpdG9sYWsgamlrYSAqcOKIknZhbHVlKiA8ICRcYWxwaGEkDQo0LiBTdGF0aXN0aWsgVWppDQogICAgTWVuZ2d1bmFrYW4gc2FwaGlyby50ZXN0KCkgdW50dWsgbWVuZ3VqaSBub3JtYWxpdGFzIHBhZGEgbWFzaW5nLW1hc2luZyB2YXJpYWJlbC4NCjUuIEtlc2ltcHVsYW4NCiAgICBKaWthIHAtdmFsdWUgPCAwLDA1IOKGkiBUb2xhayAkSF8wJCDihpIgRGF0YSB0aWRhayBiZXJkaXN0cmlidXNpIG5vcm1hbC48YnI+DQogICAgSmlrYSBwLXZhbHVlIOKJpSAwLDA1IOKGkiBHYWdhbCB0b2xhayAkSF8wJCDihpIgRGF0YSBiZXJkaXN0cmlidXNpIG5vcm1hbC4NCiAgICANCiMjICoqVWppIEtvcmVsYXNpIFNwZWFybWFuKioNCjEuIEhpcG90ZXNpczxicj4NCiAgICAkSF8wJCA6IFRpZGFrIHRlcmRhcGF0IGh1YnVuZ2FuIChrb3JlbGFzaSkgeWFuZyBzaWduaWZpa2FuIGFudGFyYSBkdWEgdmFyaWFiZWwgPGJyPg0KICAgICRIXzEkIDogVGVyZGFwYXQgaHVidW5nYW4gKGtvcmVsYXNpKSB5YW5nIHNpZ25pZmlrYW4gYW50YXJhIGR1YSB2YXJpYWJlbA0KICAgIA0KMi4gVGFyYWYgU2lnbmlmaWthbnNpICjOsSkNCg0KMy4gRGFlcmFoIEtyaXRpcyAkSF8wJCBkaXRvbGFrIGppa2EgICpw4oiSdmFsdWUqIDwgJFxhbHBoYSQNCg0KNC4gU3RhdGlzdGlrIFVqaQ0KICAgIE1lbmdndW5ha2FuIGNvci50ZXN0KCkgdW50dWsgbWVuZ3VqaSBrb3JlbGFzaSBhbnRhcmEga2VkdWEgdmFyaWFiZWwuDQogICAgDQo1LiBLZXNpbXB1bGFuDQogIEppa2EgcC12YWx1ZSA8IDAsMDUg4oaSIFRvbGFrICRIXzAkIOKGkiBUZXJkYXBhdCBodWJ1bmdhbiAoa29yZWxhc2kpIHlhbmcgc2lnbmlmaWthbiBhbnRhcmEgZHVhIHZhcmlhYmVsLjxicj4NCiAgSmlrYSBwLXZhbHVlIOKJpSAwLDA1IOKGkiBHYWdhbCB0b2xhayAkSF8wJCDihpIgVGlkYWsgdGVyZGFwYXQgaHVidW5nYW4gKGtvcmVsYXNpKSB5YW5nIHNpZ25pZmlrYW4gYW50YXJhIGR1YSB2YXJpYWJlbC4NCjwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwcHg7Ij48L2Rpdj4NCg0KPGRpdiBzdHlsZT0iY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRDdEM0JGOyBwYWRkaW5nOiAyMHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLDAsMCwwLjEpOyI+ICANCiMgKipEZXNrcmlwc2kgRGF0YSoqDQoxLiBBa3RpZmthbiBsaWJyYXJ5IHlhbmcgZGlndW5ha2FuDQpgYGB7ciBsaWJyYSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkocmVhZHhsKSAgICAjIFVudHVrIG1lbWJhY2EgZmlsZSBFeGNlbA0KbGlicmFyeShkcGx5cikgICAgICMgVW50dWsgbWFuaXB1bGFzaSBkYXRhDQpsaWJyYXJ5KGdncGxvdDIpICAgIyBVbnR1ayB2aXN1YWxpc2FzaSBkYXRhDQpsaWJyYXJ5KHNjYWxlcykgICAgIyBVbnR1ayBmb3JtYXR0aW5nIGF4aXMNCmxpYnJhcnkoRFQpICAgICAgICAjIFVudHVrIHRhYmVsIGludGVyYWt0aWYNCmxpYnJhcnkodGlkeXZlcnNlKSAjIEtvbGVrc2kgcGFrZXQgZGF0YSBzY2llbmNlDQpsaWJyYXJ5KGtuaXRyKSAgICAgIyBNZW5nYXR1ciB0YW1waWxhbiBvdXRwdXQgZGkgUk1hcmtkb3duDQpsaWJyYXJ5KGdncHVicikgICAgIyBVbnR1ayBtZW1idWF0IGdyYWZpayBkYW4gbWVuYW1iYWhrYW4gdWppIHN0YXRpc3RpayBwYWRhIGdyYWZpayBnZ3Bsb3QNCmxpYnJhcnkocGF0Y2h3b3JrKSAjIFVudHVrIG1lbmdnYWJ1bmdrYW4gcGxvdA0KYGBgDQoNCjIuIElucHV0IERhdGENCmBgYHtyLCB9DQpEYXRhMDIgPC0gcmVhZF9leGNlbCgifi9TZW1lc3RlciA0L1NJTS9DTSAxLzMuIENNMSAtIENvZmZlZSBDaGFpbiBEYXRhc2V0cy54bHN4IikNCmBgYA0KDQozLiBUYW1waWxrYW4gRGF0YQ0KYGBge3IsIGVjaG89VFJVRX0NCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KGRwbHlyKQ0KbWFya2V0aW5nX3NhbGVzIDwtIERhdGEwMiAlPiUgc2VsZWN0KE1hcmtldGluZywgU2FsZXMpDQpEVDo6ZGF0YXRhYmxlKG1hcmtldGluZ19zYWxlcykNCmBgYA0KPC9kaXY+DQoNCjxkaXYgc3R5bGU9ImhlaWdodDogMjBweDsiPjwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJjb2xvcjogYmxhY2s7IGJhY2tncm91bmQtY29sb3I6ICNEN0QzQkY7IHBhZGRpbmc6IDIwcHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsMCwwLDAuMSk7Ij4gIA0KIyAqKkFuYWxpc2lzIEtvcmVsYXNpIFNwZWFybWFuKiogey50YWJzZXR9DQoNCiMjIFVqaSBOb3JtYWxpdGFzDQoNCi0gKipVamkgTm9ybWFsaXRhcyBWYXJpYWJlbCBNYXJrZXRpbmcqKiANCg0KYGBge3IgcXFwbG90LW1hcmtldGluZywgZmlnLndpZHRoPTYsIGZpZy5oZWlnaHQ9NSwgZmlnLmFsaWduPSdjZW50ZXInLCB3YXJuaW5nPUZBTFNFLCBlY2hvPVRSVUV9DQpsaWJyYXJ5KGdncHVicikNCg0KZ2dxcXBsb3QobWFya2V0aW5nX3NhbGVzJE1hcmtldGluZykgKw0KICBsYWJzKHRpdGxlID0gIlEtUSBQbG90IFZhcmlhYmVsIE1hcmtldGluZyIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dCgNCiAgICAgIGhqdXN0ID0gMC41LCAgDQogICAgICBzaXplID0gMTQsICAgIA0KICAgICAgZmFjZSA9ICJib2xkIiwgDQogICAgICBtYXJnaW4gPSBtYXJnaW4oYiA9IDE1KSAgDQogICkpDQpgYGANCg0KYGBge3J9DQpzaGFwaXJvLnRlc3QobWFya2V0aW5nX3NhbGVzJE1hcmtldGluZykNCmBgYA0KDQoNCioqS2VzaW1wdWxhbioqPGJyPg0KS2FyZW5hIHAtdmFsdWUgPSAyLjJlLTE2IDwgMCwwNSBtYWthICRIXzAkIGRpdG9sYWsgeWFuZyBiZXJhcnRpIGRhdGEgdGlkYWsgYmVyZGlzdHJpYnVzaSBub3JtYWwuDQoNCg0KDQotICoqVWppIE5vcm1hbGl0YXMgVmFyaWFiZWwgU2FsZXMqKg0KDQoNCmBgYHtyIHFxcGxvdC1zYWxlcywgZmlnLndpZHRoPTYsIGZpZy5oZWlnaHQ9NSwgZmlnLmFsaWduPSdjZW50ZXInLCBlY2hvPVRSVUV9DQpnZ3FxcGxvdChtYXJrZXRpbmdfc2FsZXMkU2FsZXMpICsNCiAgbGFicyh0aXRsZSA9ICJRLVEgUGxvdCBWYXJpYWJlbCBTYWxlcyIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dCgNCiAgICAgIGhqdXN0ID0gMC41LA0KICAgICAgc2l6ZSA9IDE0LA0KICAgICAgZmFjZSA9ICJib2xkIiwNCiAgICAgIG1hcmdpbiA9IG1hcmdpbihiID0gMTUpKQ0KICApDQpgYGANCg0KYGBge3J9DQpzaGFwaXJvLnRlc3QobWFya2V0aW5nX3NhbGVzJFNhbGVzKQ0KYGBgDQoNCioqS2VzaW1wdWxhbioqIDxicj4NCkthcmVuYSBwLXZhbHVlID0gMi4yZS0xNiA8IDAsMDUgbWFrYSAkSF8wJCBkaXRvbGFrIHlhbmcgYmVyYXJ0aSBkYXRhIHRpZGFrIGJlcmRpc3RyaWJ1c2kgbm9ybWFsLg0KDQoNCg0KDQojIyBVamkgS29yZWxhc2kgU3BlYXJtYW4NCg0KYGBge3IgY29tYmluZWQtcGxvdHMsIGVjaG89VFJVRSwgd2FybmluZz1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInLCBtZXNzYWdlPUZBTFNFLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9NX0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGF0Y2h3b3JrKSAgDQoNCiMgUGxvdCB1bnR1ayBNYXJrZXRpbmcNCnBsb3RfbWFya2V0aW5nIDwtIGdncGxvdChtYXJrZXRpbmdfc2FsZXMsIGFlcyh4ID0gTWFya2V0aW5nKSkgKyANCiAgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDMwLCBmaWxsID0gIiM5QTdFNkYiLCBjb2xvciA9ICIjNTQ0NzNGIiwgYWxwaGEgPSAwLjcpICsNCiAgbGFicyh0aXRsZSA9ICJEaXN0cmlidXNpIE5pbGFpIE1hcmtldGluZyIsDQogICAgICAgeCA9ICJNYXJrZXRpbmciLA0KICAgICAgIHkgPSAiRnJla3VlbnNpIikgKw0KICB0aGVtZV9taW5pbWFsKCkNCg0KIyBQbG90IHVudHVrIFNhbGVzDQpwbG90X3NhbGVzIDwtIGdncGxvdChtYXJrZXRpbmdfc2FsZXMsIGFlcyh4ID0gU2FsZXMpKSArIA0KICBnZW9tX2hpc3RvZ3JhbShiaW5zID0gMzAsIGZpbGwgPSAiI0I1OUY3OCIsIGNvbG9yID0gIiM1NDQ3M0YiLCBhbHBoYSA9IDAuNykgKw0KICBsYWJzKHRpdGxlID0gIkRpc3RyaWJ1c2kgTmlsYWkgU2FsZXMiLA0KICAgICAgIHggPSAiU2FsZXMiLCANCiAgICAgICB5ID0gIkZyZWt1ZW5zaSIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQoNCiMgTWVuZ2dhYnVuZ2thbiBwbG90IHNlY2FyYSBob3Jpem9udGFsDQpjb21iaW5lZF9wbG90cyA8LSBwbG90X21hcmtldGluZyArIHBsb3Rfc2FsZXMgKyANCiAgcGxvdF9hbm5vdGF0aW9uKHRpdGxlID0gIkRpc3RyaWJ1c2kgVmFyaWFiZWwgTWFya2V0aW5nIGRhbiBTYWxlcyIsDQogICAgICAgICAgICAgICAgdGhlbWUgPSB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBzaXplID0gMTQpKSkNCg0KIyBNZW5hbXBpbGthbiBwbG90IGdhYnVuZ2FuDQpjb21iaW5lZF9wbG90cw0KYGBgDQoNCg0KYGBge3IsIHdhcm5pbmc9RkFMU0V9DQpjb3JfcmVzdWx0IDwtIGNvci50ZXN0KG1hcmtldGluZ19zYWxlcyRNYXJrZXRpbmcsIG1hcmtldGluZ19zYWxlcyRTYWxlcywgDQogICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJzcGVhcm1hbiIsIGV4YWN0ID0gRkFMU0UpDQpwcmludChjb3JfcmVzdWx0KQ0KYGBgDQoNCioqS2VzaW1wdWxhbioqPGJyPg0KS2FyZW5hIHAtdmFsdWUgPSAyLjJlLTE2IDwgMCwwNSBtYWthICRIXzAkIGRpdG9sYWsgeWFuZyBiZXJhcnRpIHRlcmRhcGF0IGh1YnVuZ2FuIChrb3JlbGFzaSkgeWFuZyBzaWduaWZpa2FuIGFudGFyYSBtYXJrZXRpbmcgZGVuZ2FuIHNhbGVzLiANCg0KRGlkYXBhdGthbiAgbmlsYWkgcmhvICRccmhvJCBzZWJlc2FyICoqMC44MDcxNTA4KiogeWFuZyB0ZXJtYXN1ayBkYWxhbSBrYXRlZ29yaSBrb3JlbGFzaSBrdWF0IGthcmVuYSA+IDAsNy4gVGVyZGFwYXQgaHVidW5nYW4gcG9zaXRpZiBrdWF0IGFudGFyYSB2YXJpYWJlbCBtYXJrZXRpbmcgZGFuIHNhbGVzLiBTZXRpYXAgcGVuaW5na2F0YW4gcGFkYSBha3Rpdml0YXMgbWFya2V0aW5nIGNlbmRlcnVuZyBkaWlrdXRpIHBlbmluZ2thdGFuIHNhbGVzLg0KDQoNCmBgYHtyLCBlY2hvPVRSVUUsIGZpZy5hbGlnbj0nY2VudGVyJywgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZ2dwbG90MikNCg0KZ2dwbG90KG1hcmtldGluZ19zYWxlcywgYWVzKHggPSBNYXJrZXRpbmcsIHkgPSBTYWxlcykpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNSwgc2l6ZSA9IDEuNSkgKyAgDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gRkFMU0UsIGNvbG9yID0gImJsdWUiLCBsaW5ld2lkdGggPSAxKSArICANCiAgZ2d0aXRsZSgiSHVidW5nYW4gYW50YXJhIE1hcmtldGluZyBkYW4gU2FsZXMiKSArDQogIHhsYWIoIkJpYXlhIE1hcmtldGluZyIpICsNCiAgeWxhYigiVG90YWwgU2FsZXMiKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoDQogICAgICBoanVzdCA9IDAuNSwgICAgICAgICAgIA0KICAgICAgc2l6ZSA9IDE0LCAgICAgICAgICAgICANCiAgICAgIGNvbG9yID0gIiMzMzMzMzMiLCAgICAgIA0KICAgICAgZmFtaWx5ID0gIlRpbWVzIE5ldyBSb21hbiINCiAgICApLA0KICAgIA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoDQogICAgICBzaXplID0gMTQsICAgICAgICAgICAgDQogICAgICBjb2xvciA9ICIjNTU1NTU1IiAgICAgIA0KICAgICksDQogICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KA0KICAgICAgc2l6ZSA9IDEyLCAgICAgICAgICAgIA0KICAgICAgY29sb3IgPSAiIzY2NjY2NiIgICAgDQogICAgKSwNCg0KICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNGRkY4RTciKSwgIA0KICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjRkZGOEU3IiksIA0KDQogICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfbGluZShjb2xvciA9ICJncmF5ODAiLCBsaW5ld2lkdGggPSAwLjUpLCAgDQogICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG9yID0gImJsYWNrIiwgZmlsbCA9IE5BLCBsaW5ld2lkdGggPSAxKSAgDQogICkNCmBgYA0KPHAgc3R5bGU9InRleHQtaW5kZW50OiAzMHB4OyI+DQpHYXJpcyBiaXJ1IG1lbnVuanVra2FuIGtlbWlyaW5nYW4gcG9zaXRpZiwgeWFuZyBtZW5hbmRha2FuIGJhaHdhIHNlY2FyYSB1bXVtLCBzZW1ha2luIHRpbmdnaSBiaWF5YSBtYXJrZXRpbmcsIG1ha2Egc2VtYWtpbiB0aW5nZ2kgcHVsYSB0b3RhbCBwZW5qdWFsYW4gKHNhbGVzKS4gVGl0aWstdGl0aWsgZGF0YSB0ZXJzZWJhciBjdWt1cCBsdWFzIGRpIHNla2l0YXIgZ2FyaXMuIEluaSBtZW51bmp1a2thbiBiYWh3YSBtZXNraXB1biBhZGEga2VjZW5kZXJ1bmdhbiBwb3NpdGlmLCBodWJ1bmdhbiBhbnRhcmEgYmlheWEgbWFya2V0aW5nIGRhbiBwZW5qdWFsYW4gdGlkYWsgc2VsYWx1IGtvbnNpc3Rlbi4gQWRhIHBlbmdhcnVoIGZha3RvciBsYWluIGF0YXUgdmFyaWFzaSBhbGFtaSBkYWxhbSBkYXRhLiBUZXJkYXBhdCBiZWJlcmFwYSB0aXRpayB5YW5nIG1lbnlpbXBhbmcgamF1aCBkYXJpIGdhcmlzIChiYWlrIGRpIGJhd2FoIG1hdXB1biBkaSBhdGFzKSwgeWFuZyBiaXNhIGRpYW5nZ2FwIHNlYmFnYWkgb3V0bGllci4gSW5pIG1lbnVuanVra2FuIGJhaHdhIGRhbGFtIGJlYmVyYXBhIGthc3VzLCBiaWF5YSBtYXJrZXRpbmcgdGluZ2dpIHRpZGFrIHNlbGFsdSBtZW5naGFzaWxrYW4gc2FsZXMgdGluZ2dpIGF0YXUgc2ViYWxpa255YS4NCjwvcD4NCg0KDQo8L2Rpdj4NCg0KPGRpdiBzdHlsZT0iaGVpZ2h0OiAyMHB4OyI+PC9kaXY+DQoNCjxkaXYgc3R5bGU9ImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogI0Q3RDNCRjsgcGFkZGluZzogMjBweDsgYm9yZGVyLXJhZGl1czogMTBweDsgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwwLDAsMC4xKTsiPiAgDQojICoqS2VzaW1wdWxhbioqDQo8cCBzdHlsZT0idGV4dC1pbmRlbnQ6IDMwcHg7Ij4NCkJlcmRhc2Fya2FuIHVqaSBub3JtYWxpdGFzIG1lbmdndW5ha2FuIFNoYXBpcm8tV2lsaywgZGlrZXRhaHVpIGJhaHdhIGRhdGEgcGFkYSB2YXJpYWJlbCBtYXJrZXRpbmcgZGFuIHNhbGVzIHRpZGFrIGJlcmRpc3RyaWJ1c2kgbm9ybWFsLiBBbmFsaXNpcyBkaWxhbmp1dGthbiBkZW5nYW4gdWppIGtvcmVsYXNpIG5vbi1wYXJhbWV0cmlrIG1lbmdndW5ha2FuIFNwZWFybWFuLiBIYXNpbCB1amkga29yZWxhc2kgU3BlYXJtYW4gbWVudW5qdWtrYW4gYmFod2EgbmlsYWkgKnAtdmFsdWUqIDwgMCwwNSwgc2VoaW5nZ2EgJEhfMCQgZGl0b2xhay4gSW5pIGJlcmFydGkgdGVyZGFwYXQgaHVidW5nYW4geWFuZyBzaWduaWZpa2FuIGFudGFyYSB2YXJpYWJlbCBtYXJrZXRpbmcgZGFuIHNhbGVzLiBOaWxhaSBrb2VmaXNpZW4ga29yZWxhc2kgJFxyaG8kIChyaG8pIHNlYmVzYXIgMCw4MDcxNTA4IG1lbmdpbmRpa2FzaWthbiBhZGFueWEgaHVidW5nYW4gcG9zaXRpZiB5YW5nIGt1YXQgYW50YXJhIGtlZHVhbnlhLCB5YW5nIG1lbnVuanVra2FuIGJhaHdhIHNldGlhcCBwZW5pbmdrYXRhbiBha3Rpdml0YXMgbWFya2V0aW5nIGNlbmRlcnVuZyBkaWlrdXRpIG9sZWggcGVuaW5na2F0YW4gb3RhbCBzYWxlcy4NCjwvcD4NCjxwIHN0eWxlPSJ0ZXh0LWluZGVudDogMzBweDsiPg0KRGVuZ2FuIGRlbWlraWFuLCBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YSBzdHJhdGVnaSBtYXJrZXRpbmcgeWFuZyBkaWxha3VrYW4gc2VsYW1hIGluaSB0ZWxhaCBiZXJqYWxhbiBzZWNhcmEgZWZla3RpZiBkYW4gc2VzdWFpIGRlbmdhbiB0dWp1YW4gcGVtYXNhcmFuLCBrYXJlbmEgdGVyYnVrdGkgbWFtcHUgbWVuZG9yb25nIHBlbmluZ2thdGFuIHRvdGFsIHBlbmp1YWxhbi4gSGFsIGluaSBtZW51bmp1a2thbiBiYWh3YSBhbG9rYXNpIGFuZ2dhcmFuIGRhbiB1cGF5YSBkYWxhbSBrZWdpYXRhbiBtYXJrZXRpbmcgbWVtYmVyaWthbiBkYW1wYWsgeWFuZyBueWF0YSB0ZXJoYWRhcCB0b3RhbCBwZW5qdWFsYW4uDQo8L3A+DQo8L2Rpdj4NCg0KPGRpdiBzdHlsZT0iaGVpZ2h0OiAyMHB4OyI+PC9kaXY+DQoNCjxkaXYgc3R5bGU9ImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogI0Q3RDNCRjsgcGFkZGluZzogMjBweDsgYm9yZGVyLXJhZGl1czogMTBweDsgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwwLDAsMC4xKTsiPg0KIyAqKlJlZmVyZW5zaSoqDQoNCjEuIE5lbHZpZGF3YXRpLCAmIEthc21hbiwgTS4gKDIwMjMpLiBQZW5nZ3VuYWFuIGtvcmVsYXNpIFNwZWFybWFuIHVudHVrIG1lbmd1amkgaHVidW5nYW4gc3VodSBkYW4gYmVzYXJueWEgY3VyYWggaHVqYW4gYnVsYW5hbiBkaSBLb3RhIFBhZGFuZy4gSnVybmFsIERhdXIgTGluZ2t1bmdhbiwgNigxKSwgMzTigJMzOS4NCg0KMi4gTnVncm9obywgUy4sIEFrYmFyLCBTLiwgJiBWdXN2aXRhc2FyaSwgUi4gKDIwMDgpLiBLYWppYW4gaHVidW5nYW4ga29lZmlzaWVuIGtvcmVsYXNpIFBlYXJzb24gKHIpLCBTcGVhcm1hbi1yaG8gKCRccmhvJCksz4EgS2VuZGFsbC1UYXUgKCRcdGF1JCksIEdhbW1hICgkXEdhbW1hJCksIGRhbiBTb21lcnMgKCRkX3t5eH0kKS4gSnVybmFsIEdyYWRpZW4sIDQoMiksIDM3MuKAkzM4MS4NCg0KMy4gWWFudGksIEMuIEEuLCAmIEFraHJpLCBJLiBKLiAoMjAyMSkuIFBlcmJlZGFhbiB1amkga29yZWxhc2kgUGVhcnNvbiwgU3BlYXJtYW4gZGFuIEtlbmRhbGwgVGF1IGRhbGFtIG1lbmdhbmFsaXNpcyBrZWphZGlhbiBkaWFyZS4gSnVybmFsIEVuZHVyYW5jZTogS2FqaWFuIElsbWlhaCBQcm9ibGVtYSBLZXNlaGF0YW4sIDYoMSksIDUx4oCTNTguDQoNCjQuIEFtZWxpYSwgRC4gRy4sIE5hdGFzeWEsIE0uLCBTZXB0aWFuYSwgTS4sIERld2ksIFouIEsuLCAmIEhhbGl6YWgsIE4uICgyMDI0KS4gQW5hbGlzaXMga29yZWxhc2kgYW50YXJhIGt1YW50aXRhcyB3YWt0dSB0aWR1ciBkZW5nYW4ga29uc2VudHJhc2kgYmVsYWphciBtYWhhc2lzd2EgQWdyaWJpc25pcyBVbml2ZXJzaXRhcyBTdWx0YW4gQWdlbmcgVGlydGF5YXNhLiBJSkVEUjogSW5kb25lc2lhbiBKb3VybmFsIG9mIEVkdWNhdGlvbiBhbmQgRGV2ZWxvcG1lbnQgUmVzZWFyY2gsIDIoMSkuDQoNCg0KPC9kaXY+DQo=