1. Load Libraries

2. Load Data

2.1 Load CSV Files with Mean Expression

# Load the CSV files with mean expression data
markers_mast_batch <- read.csv("1-L1_vs_L2_SCT_MAST.csv", row.names = 1)

markers_mast_batch2 <- read.csv("2-L1_vs_L2_SCT_MAST_clusters.csv", row.names = 1)

markers_mast_batch3 <- read.csv("3-L1_vs_L2_RNA_MAST_clusters.csv", row.names = 1)

3. Volcano Plots for All Genes

3.1 Volcano Plot for L1_vs_L2_SCT_MAST_using_cell_lines

EnhancedVolcano(markers_mast_batch,
                lab = rownames(markers_mast_batch),
                x = "avg_log2FC",
                y = "p_val_adj",
                title = "L1_vs_L2_SCT_MAST_using_cell_lines",
                pCutoff = 0.05,
                FCcutoff = 1.0)
Warning: One or more p-values is 0. Converting to 10^-1 * current lowest non-zero p-value...

3.2 Volcano Plot for L1_vs_L2_SCT_MAST_using_cell_lines

EnhancedVolcano(markers_mast_batch, 
                lab = rownames(markers_mast_batch),
                x = "avg_log2FC", 
                y = "p_val_adj",
                selectLab = c('EPCAM', 'KIR3DL2', 'FOXM1', 'TWIST1', 'TNFSF9', 
                              'CD80', 'FOS','PTPN6','NCR1','NCR2',
                              'PCLAF', 'KIR3DL1', 'IL4','ITGA6','CCL5',
                              'IL7R', 'TCF7', 'PTTG1', 'RRM2', 'MKI67', 'CD70', 
                              'IL2RA', 'FCGR3A', 'GNLY', 'FOXP3', 'SELL',  'LEF1',
                              'CCL17', 'THY1', 'CD27', 'CD28', 'CD7',
                              # Key Sézary syndrome genes
                              'PRF1', 'GZMB', 'NCR1', 'NFATC3', 
                              'KLRK1', 'LCK', 'KLRC1', 'KLRC2', 'TNF', 
                              'KIR3DL1','KIR3DL3','KIR3DL4', 'IFNG', 'IFNGR1', 'CD244', 'FASLG'),
                title = "L1_vs_L2_SCT_MAST_using_cell_lines",
                xlab = bquote(~Log[2]~ 'fold change'),
                pCutoff = 0.01,
                FCcutoff = 1.5, 
                pointSize = 3.0,
                labSize = 3.0,
                boxedLabels = TRUE,
                colAlpha = 0.5,
                legendPosition = 'right',
                legendLabSize = 10,
                legendIconSize = 4.0,
                drawConnectors = TRUE,
                widthConnectors = 0.5,
                colConnectors = 'black',
                arrowheads = FALSE,
                max.overlaps = 30)
Warning: One or more p-values is 0. Converting to 10^-1 * current lowest non-zero p-value...

4. Volcano Plots for All Genes

4.1 Volcano Plot for MAST with Batch Correction

EnhancedVolcano(markers_mast_batch2,
                lab = rownames(markers_mast_batch2),
                x = "avg_log2FC",
                y = "p_val_adj",
                title = "L1_vs_L2_SCT_MAST_using_clusters",
                pCutoff = 0.05,
                FCcutoff = 1.0)

4.2 Volcano Plot for L1_vs_L2_SCT_MAST_using_clusters

EnhancedVolcano(markers_mast_batch2, 
                lab = rownames(markers_mast_batch2),
                x = "avg_log2FC", 
                y = "p_val_adj",
                selectLab = c('EPCAM', 'KIR3DL2', 'FOXM1', 'TWIST1', 'TNFSF9', 
                              'CD80', 'FOS','PTPN6','NCR1','NCR2',
                              'PCLAF', 'KIR3DL1', 'IL4','ITGA6','CCL5',
                              'IL7R', 'TCF7', 'PTTG1', 'RRM2', 'MKI67', 'CD70', 
                              'IL2RA', 'FCGR3A', 'GNLY', 'FOXP3', 'SELL',  'LEF1',
                              'CCL17', 'THY1', 'CD27', 'CD28', 'CD7',
                              # Key Sézary syndrome genes
                              'PRF1', 'GZMB', 'NCR1', 'NFATC3', 
                              'KLRK1', 'LCK', 'KLRC1', 'KLRC2', 'TNF', 
                              'KIR3DL1','KIR3DL3','KIR3DL4', 'IFNG', 'IFNGR1', 'CD244', 'FASLG'),
                title = "L1_vs_L2_SCT_MAST_using_clusters",
                xlab = bquote(~Log[2]~ 'fold change'),
                pCutoff = 0.01,
                FCcutoff = 1, 
                pointSize = 3.0,
                labSize = 3.0,
                boxedLabels = TRUE,
                colAlpha = 0.5,
                legendPosition = 'right',
                legendLabSize = 10,
                legendIconSize = 4.0,
                drawConnectors = TRUE,
                widthConnectors = 0.5,
                colConnectors = 'black',
                arrowheads = FALSE,
                max.overlaps = 30)

5. Volcano Plots for All Genes

5.1 Volcano Plot for L1_vs_L2_RNA_MAST_using_clusters

EnhancedVolcano(markers_mast_batch3,
                lab = rownames(markers_mast_batch3),
                x = "avg_log2FC",
                y = "p_val_adj",
                title = "L1_vs_L2_RNA_MAST_using_clusters",
                pCutoff = 0.05,
                FCcutoff = 1.0)

5.2 Volcano Plot for L1_vs_L2_RNA_MAST_using_clusters

EnhancedVolcano(markers_mast_batch3, 
                lab = rownames(markers_mast_batch3),
                x = "avg_log2FC", 
                y = "p_val_adj",
                selectLab = c('EPCAM', 'KIR3DL2', 'FOXM1', 'TWIST1', 'TNFSF9', 
                              'CD80', 'FOS','PTPN6','NCR1','NCR2',
                              'PCLAF', 'KIR3DL1', 'IL4','ITGA6','CCL5',
                              'IL7R', 'TCF7', 'PTTG1', 'RRM2', 'MKI67', 'CD70', 
                              'IL2RA', 'FCGR3A', 'GNLY', 'FOXP3', 'SELL',  'LEF1',
                              'CCL17', 'THY1', 'CD27', 'CD28', 'CD7',
                              # Key Sézary syndrome genes
                              'PRF1', 'GZMB', 'NCR1', 'NFATC3', 
                              'KLRK1', 'LCK', 'KLRC1', 'KLRC2', 'TNF', 
                              'KIR3DL1','KIR3DL3','KIR3DL4', 'IFNG', 'IFNGR1', 'CD244', 'FASLG'),
                title = "L1_vs_L2_RNA_MAST_using_clusters",
                xlab = bquote(~Log[2]~ 'fold change'),
                pCutoff = 0.01,
                FCcutoff = 1, 
                pointSize = 3.0,
                labSize = 3.0,
                boxedLabels = TRUE,
                colAlpha = 0.5,
                legendPosition = 'right',
                legendLabSize = 10,
                legendIconSize = 4.0,
                drawConnectors = TRUE,
                widthConnectors = 0.5,
                colConnectors = 'black',
                arrowheads = FALSE,
                max.overlaps = 30)

LS0tCnRpdGxlOiAiVm9sY2Fub1Bsb3RfTDFfdnNfTDJfTUFTVCB3aXRoIFJOQSBhbmQgU0NUIGFzc2F5IgphdXRob3I6IE5hc2lyIE1haG1vb2QgQWJiYXNpCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogdHJ1ZQotLS0KCiMjIDEuIExvYWQgTGlicmFyaWVzCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoRW5oYW5jZWRWb2xjYW5vKQpsaWJyYXJ5KHBoZWF0bWFwKQpsaWJyYXJ5KHRpYmJsZSkKYGBgCgojIyAyLiBMb2FkIERhdGEKIyMjIDIuMSBMb2FkIENTViBGaWxlcyB3aXRoIE1lYW4gRXhwcmVzc2lvbgpgYGB7cn0KIyBMb2FkIHRoZSBDU1YgZmlsZXMgd2l0aCBtZWFuIGV4cHJlc3Npb24gZGF0YQptYXJrZXJzX21hc3RfYmF0Y2ggPC0gcmVhZC5jc3YoIjEtTDFfdnNfTDJfU0NUX01BU1QuY3N2Iiwgcm93Lm5hbWVzID0gMSkKCm1hcmtlcnNfbWFzdF9iYXRjaDIgPC0gcmVhZC5jc3YoIjItTDFfdnNfTDJfU0NUX01BU1RfY2x1c3RlcnMuY3N2Iiwgcm93Lm5hbWVzID0gMSkKCm1hcmtlcnNfbWFzdF9iYXRjaDMgPC0gcmVhZC5jc3YoIjMtTDFfdnNfTDJfUk5BX01BU1RfY2x1c3RlcnMuY3N2Iiwgcm93Lm5hbWVzID0gMSkKCmBgYAoKIyMgMy4gVm9sY2FubyBQbG90cyBmb3IgQWxsIEdlbmVzCiMjIyAzLjEgVm9sY2FubyBQbG90IGZvciBMMV92c19MMl9TQ1RfTUFTVF91c2luZ19jZWxsX2xpbmVzCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMn0KRW5oYW5jZWRWb2xjYW5vKG1hcmtlcnNfbWFzdF9iYXRjaCwKICAgICAgICAgICAgICAgIGxhYiA9IHJvd25hbWVzKG1hcmtlcnNfbWFzdF9iYXRjaCksCiAgICAgICAgICAgICAgICB4ID0gImF2Z19sb2cyRkMiLAogICAgICAgICAgICAgICAgeSA9ICJwX3ZhbF9hZGoiLAogICAgICAgICAgICAgICAgdGl0bGUgPSAiTDFfdnNfTDJfU0NUX01BU1RfdXNpbmdfY2VsbF9saW5lcyIsCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMC4wNSwKICAgICAgICAgICAgICAgIEZDY3V0b2ZmID0gMS4wKQpgYGAKCiMjIyAzLjIgVm9sY2FubyBQbG90IGZvciBMMV92c19MMl9TQ1RfTUFTVF91c2luZ19jZWxsX2xpbmVzCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMn0KRW5oYW5jZWRWb2xjYW5vKG1hcmtlcnNfbWFzdF9iYXRjaCwgCiAgICAgICAgICAgICAgICBsYWIgPSByb3duYW1lcyhtYXJrZXJzX21hc3RfYmF0Y2gpLAogICAgICAgICAgICAgICAgeCA9ICJhdmdfbG9nMkZDIiwgCiAgICAgICAgICAgICAgICB5ID0gInBfdmFsX2FkaiIsCiAgICAgICAgICAgICAgICBzZWxlY3RMYWIgPSBjKCdFUENBTScsICdLSVIzREwyJywgJ0ZPWE0xJywgJ1RXSVNUMScsICdUTkZTRjknLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NEODAnLCAnRk9TJywnUFRQTjYnLCdOQ1IxJywnTkNSMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQQ0xBRicsICdLSVIzREwxJywgJ0lMNCcsJ0lUR0E2JywnQ0NMNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTDdSJywgJ1RDRjcnLCAnUFRURzEnLCAnUlJNMicsICdNS0k2NycsICdDRDcwJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTDJSQScsICdGQ0dSM0EnLCAnR05MWScsICdGT1hQMycsICdTRUxMJywgICdMRUYxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NDTDE3JywgJ1RIWTEnLCAnQ0QyNycsICdDRDI4JywgJ0NENycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgS2V5IFPDqXphcnkgc3luZHJvbWUgZ2VuZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BSRjEnLCAnR1pNQicsICdOQ1IxJywgJ05GQVRDMycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnS0xSSzEnLCAnTENLJywgJ0tMUkMxJywgJ0tMUkMyJywgJ1RORicsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnS0lSM0RMMScsJ0tJUjNETDMnLCdLSVIzREw0JywgJ0lGTkcnLCAnSUZOR1IxJywgJ0NEMjQ0JywgJ0ZBU0xHJyksCiAgICAgICAgICAgICAgICB0aXRsZSA9ICJMMV92c19MMl9TQ1RfTUFTVF91c2luZ19jZWxsX2xpbmVzIiwKICAgICAgICAgICAgICAgIHhsYWIgPSBicXVvdGUofkxvZ1syXX4gJ2ZvbGQgY2hhbmdlJyksCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMC4wMSwKICAgICAgICAgICAgICAgIEZDY3V0b2ZmID0gMS41LCAKICAgICAgICAgICAgICAgIHBvaW50U2l6ZSA9IDMuMCwKICAgICAgICAgICAgICAgIGxhYlNpemUgPSAzLjAsCiAgICAgICAgICAgICAgICBib3hlZExhYmVscyA9IFRSVUUsCiAgICAgICAgICAgICAgICBjb2xBbHBoYSA9IDAuNSwKICAgICAgICAgICAgICAgIGxlZ2VuZFBvc2l0aW9uID0gJ3JpZ2h0JywKICAgICAgICAgICAgICAgIGxlZ2VuZExhYlNpemUgPSAxMCwKICAgICAgICAgICAgICAgIGxlZ2VuZEljb25TaXplID0gNC4wLAogICAgICAgICAgICAgICAgZHJhd0Nvbm5lY3RvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgd2lkdGhDb25uZWN0b3JzID0gMC41LAogICAgICAgICAgICAgICAgY29sQ29ubmVjdG9ycyA9ICdibGFjaycsCiAgICAgICAgICAgICAgICBhcnJvd2hlYWRzID0gRkFMU0UsCiAgICAgICAgICAgICAgICBtYXgub3ZlcmxhcHMgPSAzMCkKYGBgCgojIyA0LiBWb2xjYW5vIFBsb3RzIGZvciBBbGwgR2VuZXMKIyMjIDQuMSBWb2xjYW5vIFBsb3QgZm9yIE1BU1Qgd2l0aCBCYXRjaCBDb3JyZWN0aW9uCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMn0KRW5oYW5jZWRWb2xjYW5vKG1hcmtlcnNfbWFzdF9iYXRjaDIsCiAgICAgICAgICAgICAgICBsYWIgPSByb3duYW1lcyhtYXJrZXJzX21hc3RfYmF0Y2gyKSwKICAgICAgICAgICAgICAgIHggPSAiYXZnX2xvZzJGQyIsCiAgICAgICAgICAgICAgICB5ID0gInBfdmFsX2FkaiIsCiAgICAgICAgICAgICAgICB0aXRsZSA9ICJMMV92c19MMl9TQ1RfTUFTVF91c2luZ19jbHVzdGVycyIsCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMC4wNSwKICAgICAgICAgICAgICAgIEZDY3V0b2ZmID0gMS4wKQpgYGAKCgoKIyMjIDQuMiBWb2xjYW5vIFBsb3QgZm9yIEwxX3ZzX0wyX1NDVF9NQVNUX3VzaW5nX2NsdXN0ZXJzCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMn0KRW5oYW5jZWRWb2xjYW5vKG1hcmtlcnNfbWFzdF9iYXRjaDIsIAogICAgICAgICAgICAgICAgbGFiID0gcm93bmFtZXMobWFya2Vyc19tYXN0X2JhdGNoMiksCiAgICAgICAgICAgICAgICB4ID0gImF2Z19sb2cyRkMiLCAKICAgICAgICAgICAgICAgIHkgPSAicF92YWxfYWRqIiwKICAgICAgICAgICAgICAgIHNlbGVjdExhYiA9IGMoJ0VQQ0FNJywgJ0tJUjNETDInLCAnRk9YTTEnLCAnVFdJU1QxJywgJ1RORlNGOScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0Q4MCcsICdGT1MnLCdQVFBONicsJ05DUjEnLCdOQ1IyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDTEFGJywgJ0tJUjNETDEnLCAnSUw0JywnSVRHQTYnLCdDQ0w1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lMN1InLCAnVENGNycsICdQVFRHMScsICdSUk0yJywgJ01LSTY3JywgJ0NENzAnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lMMlJBJywgJ0ZDR1IzQScsICdHTkxZJywgJ0ZPWFAzJywgJ1NFTEwnLCAgJ0xFRjEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0NMMTcnLCAnVEhZMScsICdDRDI3JywgJ0NEMjgnLCAnQ0Q3JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZXkgU8OpemFyeSBzeW5kcm9tZSBnZW5lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFJGMScsICdHWk1CJywgJ05DUjEnLCAnTkZBVEMzJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdLTFJLMScsICdMQ0snLCAnS0xSQzEnLCAnS0xSQzInLCAnVE5GJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdLSVIzREwxJywnS0lSM0RMMycsJ0tJUjNETDQnLCAnSUZORycsICdJRk5HUjEnLCAnQ0QyNDQnLCAnRkFTTEcnKSwKICAgICAgICAgICAgICAgIHRpdGxlID0gIkwxX3ZzX0wyX1NDVF9NQVNUX3VzaW5nX2NsdXN0ZXJzIiwKICAgICAgICAgICAgICAgIHhsYWIgPSBicXVvdGUofkxvZ1syXX4gJ2ZvbGQgY2hhbmdlJyksCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMC4wMSwKICAgICAgICAgICAgICAgIEZDY3V0b2ZmID0gMSwgCiAgICAgICAgICAgICAgICBwb2ludFNpemUgPSAzLjAsCiAgICAgICAgICAgICAgICBsYWJTaXplID0gMy4wLAogICAgICAgICAgICAgICAgYm94ZWRMYWJlbHMgPSBUUlVFLAogICAgICAgICAgICAgICAgY29sQWxwaGEgPSAwLjUsCiAgICAgICAgICAgICAgICBsZWdlbmRQb3NpdGlvbiA9ICdyaWdodCcsCiAgICAgICAgICAgICAgICBsZWdlbmRMYWJTaXplID0gMTAsCiAgICAgICAgICAgICAgICBsZWdlbmRJY29uU2l6ZSA9IDQuMCwKICAgICAgICAgICAgICAgIGRyYXdDb25uZWN0b3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIHdpZHRoQ29ubmVjdG9ycyA9IDAuNSwKICAgICAgICAgICAgICAgIGNvbENvbm5lY3RvcnMgPSAnYmxhY2snLAogICAgICAgICAgICAgICAgYXJyb3doZWFkcyA9IEZBTFNFLAogICAgICAgICAgICAgICAgbWF4Lm92ZXJsYXBzID0gMzApCmBgYAojIyA1LiBWb2xjYW5vIFBsb3RzIGZvciBBbGwgR2VuZXMKIyMjIDUuMSBWb2xjYW5vIFBsb3QgZm9yIEwxX3ZzX0wyX1JOQV9NQVNUX3VzaW5nX2NsdXN0ZXJzCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMn0KRW5oYW5jZWRWb2xjYW5vKG1hcmtlcnNfbWFzdF9iYXRjaDMsCiAgICAgICAgICAgICAgICBsYWIgPSByb3duYW1lcyhtYXJrZXJzX21hc3RfYmF0Y2gzKSwKICAgICAgICAgICAgICAgIHggPSAiYXZnX2xvZzJGQyIsCiAgICAgICAgICAgICAgICB5ID0gInBfdmFsX2FkaiIsCiAgICAgICAgICAgICAgICB0aXRsZSA9ICJMMV92c19MMl9STkFfTUFTVF91c2luZ19jbHVzdGVycyIsCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMC4wNSwKICAgICAgICAgICAgICAgIEZDY3V0b2ZmID0gMS4wKQpgYGAKCiMjIyA1LjIgVm9sY2FubyBQbG90IGZvciBMMV92c19MMl9STkFfTUFTVF91c2luZ19jbHVzdGVycwpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTJ9CkVuaGFuY2VkVm9sY2FubyhtYXJrZXJzX21hc3RfYmF0Y2gzLCAKICAgICAgICAgICAgICAgIGxhYiA9IHJvd25hbWVzKG1hcmtlcnNfbWFzdF9iYXRjaDMpLAogICAgICAgICAgICAgICAgeCA9ICJhdmdfbG9nMkZDIiwgCiAgICAgICAgICAgICAgICB5ID0gInBfdmFsX2FkaiIsCiAgICAgICAgICAgICAgICBzZWxlY3RMYWIgPSBjKCdFUENBTScsICdLSVIzREwyJywgJ0ZPWE0xJywgJ1RXSVNUMScsICdUTkZTRjknLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NEODAnLCAnRk9TJywnUFRQTjYnLCdOQ1IxJywnTkNSMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQQ0xBRicsICdLSVIzREwxJywgJ0lMNCcsJ0lUR0E2JywnQ0NMNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTDdSJywgJ1RDRjcnLCAnUFRURzEnLCAnUlJNMicsICdNS0k2NycsICdDRDcwJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTDJSQScsICdGQ0dSM0EnLCAnR05MWScsICdGT1hQMycsICdTRUxMJywgICdMRUYxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NDTDE3JywgJ1RIWTEnLCAnQ0QyNycsICdDRDI4JywgJ0NENycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgS2V5IFPDqXphcnkgc3luZHJvbWUgZ2VuZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BSRjEnLCAnR1pNQicsICdOQ1IxJywgJ05GQVRDMycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnS0xSSzEnLCAnTENLJywgJ0tMUkMxJywgJ0tMUkMyJywgJ1RORicsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnS0lSM0RMMScsJ0tJUjNETDMnLCdLSVIzREw0JywgJ0lGTkcnLCAnSUZOR1IxJywgJ0NEMjQ0JywgJ0ZBU0xHJyksCiAgICAgICAgICAgICAgICB0aXRsZSA9ICJMMV92c19MMl9STkFfTUFTVF91c2luZ19jbHVzdGVycyIsCiAgICAgICAgICAgICAgICB4bGFiID0gYnF1b3RlKH5Mb2dbMl1+ICdmb2xkIGNoYW5nZScpLAogICAgICAgICAgICAgICAgcEN1dG9mZiA9IDAuMDEsCiAgICAgICAgICAgICAgICBGQ2N1dG9mZiA9IDEsIAogICAgICAgICAgICAgICAgcG9pbnRTaXplID0gMy4wLAogICAgICAgICAgICAgICAgbGFiU2l6ZSA9IDMuMCwKICAgICAgICAgICAgICAgIGJveGVkTGFiZWxzID0gVFJVRSwKICAgICAgICAgICAgICAgIGNvbEFscGhhID0gMC41LAogICAgICAgICAgICAgICAgbGVnZW5kUG9zaXRpb24gPSAncmlnaHQnLAogICAgICAgICAgICAgICAgbGVnZW5kTGFiU2l6ZSA9IDEwLAogICAgICAgICAgICAgICAgbGVnZW5kSWNvblNpemUgPSA0LjAsCiAgICAgICAgICAgICAgICBkcmF3Q29ubmVjdG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICB3aWR0aENvbm5lY3RvcnMgPSAwLjUsCiAgICAgICAgICAgICAgICBjb2xDb25uZWN0b3JzID0gJ2JsYWNrJywKICAgICAgICAgICAgICAgIGFycm93aGVhZHMgPSBGQUxTRSwKICAgICAgICAgICAgICAgIG1heC5vdmVybGFwcyA9IDMwKQpgYGA=