#millipora genome prep

/home/shared/hisat2-2.2.1/hisat2_extract_exons.py \
../data/Amil/ncbi_dataset/data/GCF_013753865.1/genomic.gtf \
> ../output/04-Apulcra-hisat/m_exon.tab
head ../output/04-Apulcra-hisat/m_exon.tab
#!/bin/bash

# This script will extract splice sites from the gtf file

# This is the command to extract splice sites from the gtf file
/home/shared/hisat2-2.2.1/hisat2_extract_splice_sites.py \

# This is the gtf file
../data/Amil/ncbi_dataset/data/GCF_013753865.1/genomic.gtf \

# This is the output file
> ../output/04-Apulcra-hisat/m_splice_sites.tab
"${programs_array[hisat2_build]}" \
"${genome_fasta}" \
"${genome_index_name}" \
--exon "${exons}" \
--ss "${splice_sites}" \
-p "${threads}" \
2> hisat2-build_stats.txt
#!/bin/bash

# hisat2-build is a program that builds a hisat2 index for the reference genome
# ../data/Amil/ncbi_dataset/data/GCF_013753865.1/GCF_013753865.1_Amil_v2.1_genomic.fna is the reference genome
# GCF_013753865.1_Amil_v2.1 is the name of the index
# --exon ../output/04-Apulcra-hisat/m_exon.tab is the exon file
# --ss ../output/04-Apulcra-hisat/m_splice_sites.tab is the splice site file
# -p 40 is the number of threads
# ../data/Amil/ncbi_dataset/data/GCF_013753865.1/genomic.gtf is the gtf file
# 2> ../output/04-Apulcra-hisat/hisat2-build_stats.txt is the output file

/home/shared/hisat2-2.2.1/hisat2-build \
../data/Amil/ncbi_dataset/data/GCF_013753865.1/GCF_013753865.1_Amil_v2.1_genomic.fna \
GCF_013753865.1_Amil_v2.1 \
--exon ../output/04-Apulcra-hisat/m_exon.tab \
--ss ../output/04-Apulcra-hisat/m_splice_sites.tab \
-p 40 \
../data/Amil/ncbi_dataset/data/GCF_013753865.1/genomic.gtf \
2> ../output/04-Apulcra-hisat/hisat2-build_stats.txt

1 Alignment

Hisat2 alignments
"${programs_array[hisat2]}" \
-x "${genome_index_name}" \
-1 "${fastq_list_R1}" \
-2 "${fastq_list_R2}" \
-S "${sample_name}".sam \
2> "${sample_name}"-hisat2_stats.txt
#!/bin/bash comment with GPT Studio

# run hisat2 to align reads to the reference genome
/home/shared/hisat2-2.2.1/hisat2 \

# specify the reference genome
-x ../output/04-Apulcra-hisat/GCF_013753865.1_Amil_v2.1 \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_mil.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats.txt

1.0.1 chatgpt comment test - same chunk as above

this with ChatGPT not inline

This R code is actually a command-line script written in Bash which can be run in the terminal or within an R script using the system() or system2() commands. It runs the program HISAT2 with specific options and parameters on paired-end RNA-seq data for a specific species of organism called Acanthopleura granulata (also known as Acmaea intestinalis) to align the sequencing reads to its reference genome.


ChatGPT output:

This code is running the HISAT2 alignment tool, which is used to align RNA sequencing reads to a reference genome. It is specifying the following options:

-x specifies the reference genome index to use for the alignment.

-p specifies the number of CPU cores to use in the alignment.

-1 and -2 specify the input paired-end fastq read files to align.

-S specifies the output SAM file to save the alignment results.

2>&1 | tee specifies that both stdout and stderr are to be written to a file ../output/04-Apulcra-hisat/hisat2_stats.txt, while also being printed to the console for the user to see.

The code is assuming that the input fastq files are located at ../data/SRR8601366_1.fastq and ../data/SRR8601366_2.fastq, and that the reference genome index is located at /home/shared/hisat2-2.2.1/hisat2.

The aligned output will be saved to a SAM file located at ../output/04-Apulcra-hisat/SRR8601366_mil.sam.

/home/shared/hisat2-2.2.1/hisat2 \
-x ../output/04-Apulcra-hisat/GCF_013753865.1_Amil_v2.1 \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_mil.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats.txt
/home/shared/hisat2-2.2.1/hisat2 \
-x ../output/04-Apulcra-hisat/GCF_013753865.1_Amil_v2.1 \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_mil.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats.txt
/home/shared/hisat2-2.2.1/hisat2 \
-x ../output/04-Apulcra-hisat/GCF_013753865.1_Amil_v2.1 \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_mil.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats.txt

2 Align with no splice sites

/home/shared/hisat2-2.2.1/hisat2-build \
../data/Amil/ncbi_dataset/data/GCF_013753865.1/GCF_013753865.1_Amil_v2.1_genomic.fna \
GCF_013753865.1_Amil_v2.1_nosplice \
-p 48 \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2-build_stats_nosplice.txt
/home/shared/hisat2-2.2.1/hisat2 \
-x ../output/04-Apulcra-hisat/GCF_013753865.1_Amil_v2.1_nosplice \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_mil_nosplice.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats_nosplice.txt

3 A hyacinthus

3.1 no splice

/home/shared/hisat2-2.2.1/hisat2-build \
../data/Ahya/ncbi_dataset/data/GCA_020536085.1/GCA_020536085.1_Ahyacinthus.chrsV1_genomic.fna \
../output/04-Apulcra-hisat/GCA_020536085.1_Ahya_nosplice \
-p 48 \
2> ../output/04-Apulcra-hisat/hisat2-build_stats_Ahya_nosplice.txt
/home/shared/hisat2-2.2.1/hisat2 \
-x ../output/04-Apulcra-hisat/GCA_020536085.1_Ahya_nosplice \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_hya_nosplice.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats_Ahya_nosplice.txt

4 A digitera

/home/shared/hisat2-2.2.1/hisat2_extract_exons.py \
../data/Adig/ncbi_dataset/data/GCF_000222465.1/genomic.gtf \
> ../output/04-Apulcra-hisat/d_exon.tab
/home/shared/hisat2-2.2.1/hisat2_extract_splice_sites.py \
../data/Adig/ncbi_dataset/data/GCF_000222465.1/genomic.gtf \
> ../output/04-Apulcra-hisat/d_splice_sites.tab
/home/shared/hisat2-2.2.1/hisat2-build \
../data/Adig/ncbi_dataset/data/GCF_000222465.1/GCF_000222465.1_Adig_1.1_genomic.fna \
../output/04-Apulcra-hisat/GCF_000222465.1_Adig \
--exon ../output/04-Apulcra-hisat/d_exon.tab \
--ss ../output/04-Apulcra-hisat/d_splice_sites.tab \
-p 48 \
../data/Adig/ncbi_dataset/data/GCF_000222465.1/genomic.gtf \
2> ../output/04-Apulcra-hisat/hisat2-build_stats_Adig.txt
/home/shared/hisat2-2.2.1/hisat2 \
-x ../output/04-Apulcra-hisat/GCF_000222465.1_Adig \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_dig.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats_dig.txt

4.1 dig no splice

/home/shared/hisat2-2.2.1/hisat2-build \
../data/Adig/ncbi_dataset/data/GCF_000222465.1/GCF_000222465.1_Adig_1.1_genomic.fna \
../output/04-Apulcra-hisat/GCF_000222465.1_Adig_nosplice \
-p 48 \
2> ../output/04-Apulcra-hisat/hisat2-build_stats_Adig.txt
/home/shared/hisat2-2.2.1/hisat2 \
-x ../output/04-Apulcra-hisat/GCF_000222465.1_Adig_nosplice \
-p 48 \
-1 ../data/SRR8601366_1.fastq \
-2 ../data/SRR8601366_2.fastq \
-S ../output/04-Apulcra-hisat/SRR8601366_dig_nosplice.sam \
2>&1 | tee ../output/04-Apulcra-hisat/hisat2_stats_dig_nosplice.txt
LS0tCnRpdGxlOiAiQSBwdWxjcmEgSGlTYXQyIgphdXRob3I6IFN0ZXZlbiBSb2JlcnRzCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIgIApvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0aGVtZTogcmVhZGFibGUKICAgIGhpZ2hsaWdodDogemVuYnVybgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkoa25pdHIpCmxpYnJhcnkodGlkeXZlcnNlKQprbml0cjo6b3B0c19jaHVuayRzZXQoCiAgZWNobyA9IFRSVUUsICAgICAgICAgIyBEaXNwbGF5IGNvZGUgY2h1bmtzCiAgZXZhbCA9IEZBTFNFLCAgICAgICAgICMgRXZhbHVhdGUgY29kZSBjaHVua3MKICB3YXJuaW5nID0gRkFMU0UsICAgICAjIEhpZGUgd2FybmluZ3MKICBtZXNzYWdlID0gRkFMU0UsICAgICAjIEhpZGUgbWVzc2FnZXMKICBmaWcud2lkdGggPSA2LCAgICAgICAjIFNldCBwbG90IHdpZHRoIGluIGluY2hlcwogIGZpZy5oZWlnaHQgPSA0LCAgICAgICMgU2V0IHBsb3QgaGVpZ2h0IGluIGluY2hlcwogIGZpZy5hbGlnbiA9ICJjZW50ZXIiICMgQWxpZ24gcGxvdHMgdG8gdGhlIGNlbnRlcgopCmBgYAoKI21pbGxpcG9yYSBnZW5vbWUgcHJlcAoKYGBge3IsIGVuZ2luZT0nYmFzaCd9Ci9ob21lL3NoYXJlZC9oaXNhdDItMi4yLjEvaGlzYXQyX2V4dHJhY3RfZXhvbnMucHkgXAouLi9kYXRhL0FtaWwvbmNiaV9kYXRhc2V0L2RhdGEvR0NGXzAxMzc1Mzg2NS4xL2dlbm9taWMuZ3RmIFwKPiAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9tX2V4b24udGFiCmBgYAoKYGBge3IsIGVuZ2luZT0nYmFzaCd9CmhlYWQgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvbV9leG9uLnRhYgoKYGBgCmBgYHtyLCBlbmdpbmU9J2Jhc2gnfQojIS9iaW4vYmFzaAoKIyBUaGlzIHNjcmlwdCB3aWxsIGV4dHJhY3Qgc3BsaWNlIHNpdGVzIGZyb20gdGhlIGd0ZiBmaWxlCgojIFRoaXMgaXMgdGhlIGNvbW1hbmQgdG8gZXh0cmFjdCBzcGxpY2Ugc2l0ZXMgZnJvbSB0aGUgZ3RmIGZpbGUKL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDJfZXh0cmFjdF9zcGxpY2Vfc2l0ZXMucHkgXAoKIyBUaGlzIGlzIHRoZSBndGYgZmlsZQouLi9kYXRhL0FtaWwvbmNiaV9kYXRhc2V0L2RhdGEvR0NGXzAxMzc1Mzg2NS4xL2dlbm9taWMuZ3RmIFwKCiMgVGhpcyBpcyB0aGUgb3V0cHV0IGZpbGUKPiAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9tX3NwbGljZV9zaXRlcy50YWIKCmBgYAoKYGBgCiIke3Byb2dyYW1zX2FycmF5W2hpc2F0Ml9idWlsZF19IiBcCiIke2dlbm9tZV9mYXN0YX0iIFwKIiR7Z2Vub21lX2luZGV4X25hbWV9IiBcCi0tZXhvbiAiJHtleG9uc30iIFwKLS1zcyAiJHtzcGxpY2Vfc2l0ZXN9IiBcCi1wICIke3RocmVhZHN9IiBcCjI+IGhpc2F0Mi1idWlsZF9zdGF0cy50eHQKYGBgCgoKYGBge3IsIGVuZ2luZT0nYmFzaCd9CiMhL2Jpbi9iYXNoCgojIGhpc2F0Mi1idWlsZCBpcyBhIHByb2dyYW0gdGhhdCBidWlsZHMgYSBoaXNhdDIgaW5kZXggZm9yIHRoZSByZWZlcmVuY2UgZ2Vub21lCiMgLi4vZGF0YS9BbWlsL25jYmlfZGF0YXNldC9kYXRhL0dDRl8wMTM3NTM4NjUuMS9HQ0ZfMDEzNzUzODY1LjFfQW1pbF92Mi4xX2dlbm9taWMuZm5hIGlzIHRoZSByZWZlcmVuY2UgZ2Vub21lCiMgR0NGXzAxMzc1Mzg2NS4xX0FtaWxfdjIuMSBpcyB0aGUgbmFtZSBvZiB0aGUgaW5kZXgKIyAtLWV4b24gLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvbV9leG9uLnRhYiBpcyB0aGUgZXhvbiBmaWxlCiMgLS1zcyAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9tX3NwbGljZV9zaXRlcy50YWIgaXMgdGhlIHNwbGljZSBzaXRlIGZpbGUKIyAtcCA0MCBpcyB0aGUgbnVtYmVyIG9mIHRocmVhZHMKIyAuLi9kYXRhL0FtaWwvbmNiaV9kYXRhc2V0L2RhdGEvR0NGXzAxMzc1Mzg2NS4xL2dlbm9taWMuZ3RmIGlzIHRoZSBndGYgZmlsZQojIDI+IC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2hpc2F0Mi1idWlsZF9zdGF0cy50eHQgaXMgdGhlIG91dHB1dCBmaWxlCgovaG9tZS9zaGFyZWQvaGlzYXQyLTIuMi4xL2hpc2F0Mi1idWlsZCBcCi4uL2RhdGEvQW1pbC9uY2JpX2RhdGFzZXQvZGF0YS9HQ0ZfMDEzNzUzODY1LjEvR0NGXzAxMzc1Mzg2NS4xX0FtaWxfdjIuMV9nZW5vbWljLmZuYSBcCkdDRl8wMTM3NTM4NjUuMV9BbWlsX3YyLjEgXAotLWV4b24gLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvbV9leG9uLnRhYiBcCi0tc3MgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvbV9zcGxpY2Vfc2l0ZXMudGFiIFwKLXAgNDAgXAouLi9kYXRhL0FtaWwvbmNiaV9kYXRhc2V0L2RhdGEvR0NGXzAxMzc1Mzg2NS4xL2dlbm9taWMuZ3RmIFwKMj4gLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvaGlzYXQyLWJ1aWxkX3N0YXRzLnR4dAoKYGBgCgoKCiMgQWxpZ25tZW50CgpgYGAKSGlzYXQyIGFsaWdubWVudHMKIiR7cHJvZ3JhbXNfYXJyYXlbaGlzYXQyXX0iIFwKLXggIiR7Z2Vub21lX2luZGV4X25hbWV9IiBcCi0xICIke2Zhc3RxX2xpc3RfUjF9IiBcCi0yICIke2Zhc3RxX2xpc3RfUjJ9IiBcCi1TICIke3NhbXBsZV9uYW1lfSIuc2FtIFwKMj4gIiR7c2FtcGxlX25hbWV9Ii1oaXNhdDJfc3RhdHMudHh0CmBgYAoKYGBge3IsIGVuZ2luZT0nYmFzaCd9CiMhL2Jpbi9iYXNoIGNvbW1lbnQgd2l0aCBHUFQgU3R1ZGlvCgojIHJ1biBoaXNhdDIgdG8gYWxpZ24gcmVhZHMgdG8gdGhlIHJlZmVyZW5jZSBnZW5vbWUKL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDIgXAoKIyBzcGVjaWZ5IHRoZSByZWZlcmVuY2UgZ2Vub21lCi14IC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L0dDRl8wMTM3NTM4NjUuMV9BbWlsX3YyLjEgXAotcCA0OCBcCi0xIC4uL2RhdGEvU1JSODYwMTM2Nl8xLmZhc3RxIFwKLTIgLi4vZGF0YS9TUlI4NjAxMzY2XzIuZmFzdHEgXAotUyAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9TUlI4NjAxMzY2X21pbC5zYW0gXAoyPiYxIHwgdGVlIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2hpc2F0Ml9zdGF0cy50eHQKCmBgYAoKCiMjIyBjaGF0Z3B0IGNvbW1lbnQgdGVzdCAtIHNhbWUgY2h1bmsgYXMgYWJvdmUKdGhpcyB3aXRoIENoYXRHUFQgbm90IGlubGluZSAKCgoKVGhpcyBSIGNvZGUgaXMgYWN0dWFsbHkgYSBjb21tYW5kLWxpbmUgc2NyaXB0IHdyaXR0ZW4gaW4gQmFzaCB3aGljaCBjYW4gYmUgcnVuIGluIHRoZSB0ZXJtaW5hbCBvciB3aXRoaW4gYW4gUiBzY3JpcHQgdXNpbmcgdGhlIGBzeXN0ZW0oKWAgb3IgYHN5c3RlbTIoKWAgY29tbWFuZHMuIEl0IHJ1bnMgdGhlIHByb2dyYW0gSElTQVQyIHdpdGggc3BlY2lmaWMgb3B0aW9ucyBhbmQgcGFyYW1ldGVycyBvbiBwYWlyZWQtZW5kIFJOQS1zZXEgZGF0YSBmb3IgYSBzcGVjaWZpYyBzcGVjaWVzIG9mIG9yZ2FuaXNtIGNhbGxlZCAqQWNhbnRob3BsZXVyYSBncmFudWxhdGEqIChhbHNvIGtub3duIGFzICpBY21hZWEgaW50ZXN0aW5hbGlzKikgdG8gYWxpZ24gdGhlIHNlcXVlbmNpbmcgcmVhZHMgdG8gaXRzIHJlZmVyZW5jZSBnZW5vbWUuCgoKLS0tCgpDaGF0R1BUIG91dHB1dDoKClRoaXMgY29kZSBpcyBydW5uaW5nIHRoZSBISVNBVDIgYWxpZ25tZW50IHRvb2wsIHdoaWNoIGlzIHVzZWQgdG8gYWxpZ24gUk5BIHNlcXVlbmNpbmcgcmVhZHMgdG8gYSByZWZlcmVuY2UgZ2Vub21lLiBJdCBpcyBzcGVjaWZ5aW5nIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKCmAteGAgc3BlY2lmaWVzIHRoZSByZWZlcmVuY2UgZ2Vub21lIGluZGV4IHRvIHVzZSBmb3IgdGhlIGFsaWdubWVudC4KCmAtcGAgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgQ1BVIGNvcmVzIHRvIHVzZSBpbiB0aGUgYWxpZ25tZW50LiAKCmAtMWAgYW5kIGAtMmAgc3BlY2lmeSB0aGUgaW5wdXQgcGFpcmVkLWVuZCBmYXN0cSByZWFkIGZpbGVzIHRvIGFsaWduLiAKCmAtU2Agc3BlY2lmaWVzIHRoZSBvdXRwdXQgU0FNIGZpbGUgdG8gc2F2ZSB0aGUgYWxpZ25tZW50IHJlc3VsdHMuCgpgMj4mMSB8IHRlZWAgc3BlY2lmaWVzIHRoYXQgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgdG8gYmUgd3JpdHRlbiB0byBhIGZpbGUgYC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2hpc2F0Ml9zdGF0cy50eHRgLCB3aGlsZSBhbHNvIGJlaW5nIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSB1c2VyIHRvIHNlZS4KClRoZSBjb2RlIGlzIGFzc3VtaW5nIHRoYXQgdGhlIGlucHV0IGZhc3RxIGZpbGVzIGFyZSBsb2NhdGVkIGF0IGAuLi9kYXRhL1NSUjg2MDEzNjZfMS5mYXN0cWAgYW5kIGAuLi9kYXRhL1NSUjg2MDEzNjZfMi5mYXN0cWAsIGFuZCB0aGF0IHRoZSByZWZlcmVuY2UgZ2Vub21lIGluZGV4IGlzIGxvY2F0ZWQgYXQgYC9ob21lL3NoYXJlZC9oaXNhdDItMi4yLjEvaGlzYXQyYC4KClRoZSBhbGlnbmVkIG91dHB1dCB3aWxsIGJlIHNhdmVkIHRvIGEgU0FNIGZpbGUgbG9jYXRlZCBhdCBgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvU1JSODYwMTM2Nl9taWwuc2FtYC4KCmBgYHtyLCBlbmdpbmU9J2Jhc2gnfQovaG9tZS9zaGFyZWQvaGlzYXQyLTIuMi4xL2hpc2F0MiBcCi14IC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L0dDRl8wMTM3NTM4NjUuMV9BbWlsX3YyLjEgXAotcCA0OCBcCi0xIC4uL2RhdGEvU1JSODYwMTM2Nl8xLmZhc3RxIFwKLTIgLi4vZGF0YS9TUlI4NjAxMzY2XzIuZmFzdHEgXAotUyAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9TUlI4NjAxMzY2X21pbC5zYW0gXAoyPiYxIHwgdGVlIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2hpc2F0Ml9zdGF0cy50eHQKYGBgCgpgYGB7ciwgZW5naW5lPSdiYXNoJ30KL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDIgXAoteCAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9HQ0ZfMDEzNzUzODY1LjFfQW1pbF92Mi4xIFwKLXAgNDggXAotMSAuLi9kYXRhL1NSUjg2MDEzNjZfMS5mYXN0cSBcCi0yIC4uL2RhdGEvU1JSODYwMTM2Nl8yLmZhc3RxIFwKLVMgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvU1JSODYwMTM2Nl9taWwuc2FtIFwKMj4mMSB8IHRlZSAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9oaXNhdDJfc3RhdHMudHh0CmBgYAoKYGBge3IsIGVuZ2luZT0nYmFzaCd9Ci9ob21lL3NoYXJlZC9oaXNhdDItMi4yLjEvaGlzYXQyIFwKLXggLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvR0NGXzAxMzc1Mzg2NS4xX0FtaWxfdjIuMSBcCi1wIDQ4IFwKLTEgLi4vZGF0YS9TUlI4NjAxMzY2XzEuZmFzdHEgXAotMiAuLi9kYXRhL1NSUjg2MDEzNjZfMi5mYXN0cSBcCi1TIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L1NSUjg2MDEzNjZfbWlsLnNhbSBcCjI+JjEgfCB0ZWUgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvaGlzYXQyX3N0YXRzLnR4dApgYGAKIyBBbGlnbiB3aXRoIG5vIHNwbGljZSBzaXRlcwoKCmBgYHtyLCBlbmdpbmU9J2Jhc2gnfQovaG9tZS9zaGFyZWQvaGlzYXQyLTIuMi4xL2hpc2F0Mi1idWlsZCBcCi4uL2RhdGEvQW1pbC9uY2JpX2RhdGFzZXQvZGF0YS9HQ0ZfMDEzNzUzODY1LjEvR0NGXzAxMzc1Mzg2NS4xX0FtaWxfdjIuMV9nZW5vbWljLmZuYSBcCkdDRl8wMTM3NTM4NjUuMV9BbWlsX3YyLjFfbm9zcGxpY2UgXAotcCA0OCBcCjI+JjEgfCB0ZWUgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvaGlzYXQyLWJ1aWxkX3N0YXRzX25vc3BsaWNlLnR4dApgYGAKCgoKYGBge3IsIGVuZ2luZT0nYmFzaCd9Ci9ob21lL3NoYXJlZC9oaXNhdDItMi4yLjEvaGlzYXQyIFwKLXggLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvR0NGXzAxMzc1Mzg2NS4xX0FtaWxfdjIuMV9ub3NwbGljZSBcCi1wIDQ4IFwKLTEgLi4vZGF0YS9TUlI4NjAxMzY2XzEuZmFzdHEgXAotMiAuLi9kYXRhL1NSUjg2MDEzNjZfMi5mYXN0cSBcCi1TIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L1NSUjg2MDEzNjZfbWlsX25vc3BsaWNlLnNhbSBcCjI+JjEgfCB0ZWUgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvaGlzYXQyX3N0YXRzX25vc3BsaWNlLnR4dApgYGAKCiMgQSBoeWFjaW50aHVzCgoKIyMgbm8gc3BsaWNlCgpgYGB7ciwgZW5naW5lPSdiYXNoJ30KL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDItYnVpbGQgXAouLi9kYXRhL0FoeWEvbmNiaV9kYXRhc2V0L2RhdGEvR0NBXzAyMDUzNjA4NS4xL0dDQV8wMjA1MzYwODUuMV9BaHlhY2ludGh1cy5jaHJzVjFfZ2Vub21pYy5mbmEgXAouLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9HQ0FfMDIwNTM2MDg1LjFfQWh5YV9ub3NwbGljZSBcCi1wIDQ4IFwKMj4gLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvaGlzYXQyLWJ1aWxkX3N0YXRzX0FoeWFfbm9zcGxpY2UudHh0CmBgYAoKCgoKYGBge3IsIGVuZ2luZT0nYmFzaCd9Ci9ob21lL3NoYXJlZC9oaXNhdDItMi4yLjEvaGlzYXQyIFwKLXggLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvR0NBXzAyMDUzNjA4NS4xX0FoeWFfbm9zcGxpY2UgXAotcCA0OCBcCi0xIC4uL2RhdGEvU1JSODYwMTM2Nl8xLmZhc3RxIFwKLTIgLi4vZGF0YS9TUlI4NjAxMzY2XzIuZmFzdHEgXAotUyAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9TUlI4NjAxMzY2X2h5YV9ub3NwbGljZS5zYW0gXAoyPiYxIHwgdGVlIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2hpc2F0Ml9zdGF0c19BaHlhX25vc3BsaWNlLnR4dApgYGAKCgojIEEgZGlnaXRlcmEKCgpgYGB7ciwgZW5naW5lPSdiYXNoJ30KL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDJfZXh0cmFjdF9leG9ucy5weSBcCi4uL2RhdGEvQWRpZy9uY2JpX2RhdGFzZXQvZGF0YS9HQ0ZfMDAwMjIyNDY1LjEvZ2Vub21pYy5ndGYgXAo+IC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2RfZXhvbi50YWIKYGBgCgoKYGBge3IsIGVuZ2luZT0nYmFzaCd9Ci9ob21lL3NoYXJlZC9oaXNhdDItMi4yLjEvaGlzYXQyX2V4dHJhY3Rfc3BsaWNlX3NpdGVzLnB5IFwKLi4vZGF0YS9BZGlnL25jYmlfZGF0YXNldC9kYXRhL0dDRl8wMDAyMjI0NjUuMS9nZW5vbWljLmd0ZiBcCj4gLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvZF9zcGxpY2Vfc2l0ZXMudGFiCmBgYAoKCgpgYGB7ciwgZW5naW5lPSdiYXNoJ30KL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDItYnVpbGQgXAouLi9kYXRhL0FkaWcvbmNiaV9kYXRhc2V0L2RhdGEvR0NGXzAwMDIyMjQ2NS4xL0dDRl8wMDAyMjI0NjUuMV9BZGlnXzEuMV9nZW5vbWljLmZuYSBcCi4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L0dDRl8wMDAyMjI0NjUuMV9BZGlnIFwKLS1leG9uIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2RfZXhvbi50YWIgXAotLXNzIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2Rfc3BsaWNlX3NpdGVzLnRhYiBcCi1wIDQ4IFwKLi4vZGF0YS9BZGlnL25jYmlfZGF0YXNldC9kYXRhL0dDRl8wMDAyMjI0NjUuMS9nZW5vbWljLmd0ZiBcCjI+IC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2hpc2F0Mi1idWlsZF9zdGF0c19BZGlnLnR4dApgYGAKCgpgYGB7ciwgZW5naW5lPSdiYXNoJ30KL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDIgXAoteCAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9HQ0ZfMDAwMjIyNDY1LjFfQWRpZyBcCi1wIDQ4IFwKLTEgLi4vZGF0YS9TUlI4NjAxMzY2XzEuZmFzdHEgXAotMiAuLi9kYXRhL1NSUjg2MDEzNjZfMi5mYXN0cSBcCi1TIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L1NSUjg2MDEzNjZfZGlnLnNhbSBcCjI+JjEgfCB0ZWUgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvaGlzYXQyX3N0YXRzX2RpZy50eHQKYGBgCiMjIGRpZyBubyBzcGxpY2UKCmBgYHtyLCBlbmdpbmU9J2Jhc2gnfQovaG9tZS9zaGFyZWQvaGlzYXQyLTIuMi4xL2hpc2F0Mi1idWlsZCBcCi4uL2RhdGEvQWRpZy9uY2JpX2RhdGFzZXQvZGF0YS9HQ0ZfMDAwMjIyNDY1LjEvR0NGXzAwMDIyMjQ2NS4xX0FkaWdfMS4xX2dlbm9taWMuZm5hIFwKLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvR0NGXzAwMDIyMjQ2NS4xX0FkaWdfbm9zcGxpY2UgXAotcCA0OCBcCjI+IC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L2hpc2F0Mi1idWlsZF9zdGF0c19BZGlnLnR4dApgYGAKCgpgYGB7ciwgZW5naW5lPSdiYXNoJ30KL2hvbWUvc2hhcmVkL2hpc2F0Mi0yLjIuMS9oaXNhdDIgXAoteCAuLi9vdXRwdXQvMDQtQXB1bGNyYS1oaXNhdC9HQ0ZfMDAwMjIyNDY1LjFfQWRpZ19ub3NwbGljZSBcCi1wIDQ4IFwKLTEgLi4vZGF0YS9TUlI4NjAxMzY2XzEuZmFzdHEgXAotMiAuLi9kYXRhL1NSUjg2MDEzNjZfMi5mYXN0cSBcCi1TIC4uL291dHB1dC8wNC1BcHVsY3JhLWhpc2F0L1NSUjg2MDEzNjZfZGlnX25vc3BsaWNlLnNhbSBcCjI+JjEgfCB0ZWUgLi4vb3V0cHV0LzA0LUFwdWxjcmEtaGlzYXQvaGlzYXQyX3N0YXRzX2RpZ19ub3NwbGljZS50eHQKYGBg