diff options
24 files changed, 6415 insertions, 361 deletions
diff --git a/01-reset_artifacts/console.log.xz b/01-reset_artifacts/console.log.xz Binary files differindex e4e7fcc..23ccb4a 100644 --- a/01-reset_artifacts/console.log.xz +++ b/01-reset_artifacts/console.log.xz diff --git a/02-build_aosp_toolchain/console.log.xz b/02-build_aosp_toolchain/console.log.xz Binary files differindex dd26ca3..31d62c4 100644 --- a/02-build_aosp_toolchain/console.log.xz +++ b/02-build_aosp_toolchain/console.log.xz diff --git a/03-build_shadow_llvm/console.log.xz b/03-build_shadow_llvm/console.log.xz Binary files differindex 12d026c..8b2cacc 100644 --- a/03-build_shadow_llvm/console.log.xz +++ b/03-build_shadow_llvm/console.log.xz diff --git a/04-build_aosp/console.log.xz b/04-build_aosp/console.log.xz Binary files differindex 5224f6f..346ec33 100644 --- a/04-build_aosp/console.log.xz +++ b/04-build_aosp/console.log.xz diff --git a/05-process_shadow_data/console.log.xz b/05-process_shadow_data/console.log.xz Binary files differindex acfe491..935db2d 100644 --- a/05-process_shadow_data/console.log.xz +++ b/05-process_shadow_data/console.log.xz diff --git a/06-check_regression/aosp.improvements b/06-check_regression/aosp.improvements new file mode 100644 index 0000000..84b0c55 --- /dev/null +++ b/06-check_regression/aosp.improvements @@ -0,0 +1 @@ +-1,AOSP reduced in size by -1% from 13872361 to 13866825 diff --git a/06-check_regression/binary.regressions b/06-check_regression/binary.regressions deleted file mode 100644 index ea86dc7..0000000 --- a/06-check_regression/binary.regressions +++ /dev/null @@ -1 +0,0 @@ -2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940 diff --git a/06-check_regression/console.log.xz b/06-check_regression/console.log.xz Binary files differindex b66e336..5a6dfc3 100644 --- a/06-check_regression/console.log.xz +++ b/06-check_regression/console.log.xz diff --git a/06-check_regression/results.regressions b/06-check_regression/results.regressions deleted file mode 100644 index 1fe8e0f..0000000 --- a/06-check_regression/results.regressions +++ /dev/null @@ -1 +0,0 @@ -# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940 diff --git a/git/llvm_rev b/git/llvm_rev index 9ad86dd..c48df1f 100644 --- a/git/llvm_rev +++ b/git/llvm_rev @@ -1 +1 @@ -3edd338a6407d9410f6a283c5dc32ba676ac0b8f +65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e diff --git a/jenkins/build-name b/jenkins/build-name index 4c0a00a..c55b80d 100644 --- a/jenkins/build-name +++ b/jenkins/build-name @@ -1 +1 @@ -#369-aosp_superproject-toolchain_superproject-R# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940 +#374-llvm-R1 diff --git a/jenkins/notify-full.log b/jenkins/notify-full.log index 4472190..da3424c 100644 --- a/jenkins/notify-full.log +++ b/jenkins/notify-full.log @@ -1,25 +1,25 @@ ++ pwd ++ cat -+ remote_exec build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true ++ remote_exec build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true + set -euf -o pipefail + local host -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -d: -f 1 -+ host=build-08.tcwglab ++ host=build-01.tcwglab + local port -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 2 + port= + local dir -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 3 -+ dir=/home/tcwg-buildslave/workspace/tcwg_aosp_0 ++ dir=/home/tcwg-buildslave/workspace/tcwg_aosp_1 + local opts -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 4 -+ opts=-p49383 ++ opts=-p49199 + local env_vars -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 5 + env_vars= + shift @@ -52,10 +52,10 @@ + for i in "$@" + cmd+=("$(printf '%q' "$i")") ++ printf %q true -++ printf %q /home/tcwg-buildslave/workspace/tcwg_aosp_0 -+ ssh -p49383 build-08.tcwglab 'cd /home/tcwg-buildslave/workspace/tcwg_aosp_0 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true' +++ printf %q /home/tcwg-buildslave/workspace/tcwg_aosp_1 ++ ssh -p49199 build-01.tcwglab 'cd /home/tcwg-buildslave/workspace/tcwg_aosp_1 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true' -/home/tcwg-buildslave/workspace/tcwg_aosp_0/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true +/home/tcwg-buildslave/workspace/tcwg_aosp_1/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true + false + dryrun= @@ -64,8 +64,8 @@ + declare -a changed_components + declare print_commits_f print_result_f print_config_f print_last_icommit_f + dump_model_only=false -+ setup_notify_environment # setup_notify_environment ++ setup_notify_environment + echo '# setup_notify_environment' + top_artifacts=artifacts ++ get_current_manifest '{rr[ci_project]}' @@ -81,17 +81,17 @@ ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/353/ +# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/ # Using dir : base-artifacts -+ echo '# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/353/' ++ echo '# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/' + echo '# Using dir : base-artifacts' ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/ +# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/ # Using dir : artifacts -+ echo '# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/' ++ echo '# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/' + echo '# Using dir : artifacts' + echo '' + mkdir -p artifacts/notify @@ -115,93 +115,99 @@ +++ set -euf -o pipefail +++ local c delim= +++ for c in ${rr[components]} -+++ '[' xhttps://android.googlesource.com/platform/superproject/main.git#main '!=' xbaseline ']' -+++ echo -ne aosp_superproject -+++ delim=' ' -+++ for c in ${rr[components]} +++ '[' xbaseline '!=' xbaseline ']' +++ for c in ${rr[components]} -+++ '[' xhttps://android.googlesource.com/platform/superproject#llvm-toolchain '!=' xbaseline ']' -+++ echo -ne ' toolchain_superproject' ++++ '[' xhttps://github.com/llvm/llvm-project.git#main '!=' xbaseline ']' ++++ echo -ne llvm +++ delim=' ' ++++ for c in ${rr[components]} ++++ '[' xbaseline '!=' xbaseline ']' +++ echo ++ for c in $(print_updated_components) -+++ get_current_git aosp_superproject_rev ++++ get_current_git llvm_rev +++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in current git' '[' -f artifacts/git/aosp_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat artifacts/git/aosp_superproject_rev -+++ get_baseline_git aosp_superproject_rev ++++ cat artifacts/git/llvm_rev ++++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in baseline git' '[' -f base-artifacts/git/aosp_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat base-artifacts/git/aosp_superproject_rev -++ '[' x479b80fea794f4a204849d0c54e73545c12a73cb '!=' x9a8bb7d4d2f937593a0e07fe58d5ac76507a5744 ']' -++ echo -ne aosp_superproject -++ delim=' ' -++ for c in $(print_updated_components) -+++ get_current_git toolchain_superproject_rev -+++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in current git' '[' -f artifacts/git/toolchain_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat artifacts/git/toolchain_superproject_rev -+++ get_baseline_git toolchain_superproject_rev -+++ set -euf -o pipefail -+++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in baseline git' '[' -f base-artifacts/git/toolchain_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat base-artifacts/git/toolchain_superproject_rev -++ '[' xf84fc78c868de1845e6149fdfe3c93032942b803 '!=' x3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7 ']' -++ echo -ne ' toolchain_superproject' ++++ cat base-artifacts/git/llvm_rev +++ '[' x65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e '!=' x3edd338a6407d9410f6a283c5dc32ba676ac0b8f ']' +++ echo -ne llvm ++ delim=' ' ++ echo -# Debug traces : -# change_kind=multiple_components : aosp_superproject toolchain_superproject + local c base_rev cur_rev c_commits -+ '[' 2 = 0 ']' -+ '[' 2 = 1 ']' -+ change_kind=multiple_components -+ changed_single_component= -+ echo '# Debug traces :' -+ echo '# change_kind=multiple_components : aosp_superproject toolchain_superproject' -+ for c in "${changed_components[@]}" -++ get_baseline_git aosp_superproject_rev ++ '[' 1 = 0 ']' ++ '[' 1 = 1 ']' ++ changed_single_component=llvm +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ first_bad=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ last_good=3edd338a6407d9410f6a283c5dc32ba676ac0b8f ++ local res ++ res=0 ++ wait 517172 ++ git -C llvm rev-parse --verify HEAD ++ assert_with_msg 'Cannot parse HEAD in repo llvm' '[' 0 = 0 ']' ++ set -euf -o pipefail +x ++ single_commit_p llvm ++ set -euf -o pipefail ++ local c=llvm ++ local base_rev cur_rev sha1 +++ get_baseline_git llvm_rev ++ set -euf -o pipefail ++ local base_artifacts=base-artifacts -++ assert_with_msg 'ERROR: No aosp_superproject_rev in baseline git' '[' -f base-artifacts/git/aosp_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat base-artifacts/git/aosp_superproject_rev -+ base_rev=9a8bb7d4d2f937593a0e07fe58d5ac76507a5744 -++ get_current_git aosp_superproject_rev +++ cat base-artifacts/git/llvm_rev ++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f +++ get_current_git llvm_rev ++ set -euf -o pipefail -++ assert_with_msg 'ERROR: No aosp_superproject_rev in current git' '[' -f artifacts/git/aosp_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat artifacts/git/aosp_superproject_rev -+ cur_rev=479b80fea794f4a204849d0c54e73545c12a73cb -++ git -C aosp_superproject rev-list --count 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb -# rev for aosp_superproject : 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb (910 commits) -+ c_commits=910 -+ echo '# rev for aosp_superproject : 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb (910 commits)' +++ cat artifacts/git/llvm_rev ++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ git -C llvm rev-parse '65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e^@' +# Debug traces : ++ for sha1 in $(git -C "$c" rev-parse "$cur_rev^@") ++ '[' 77c67436d9e7e63c50752d990a271cf860ba9a0e = 3edd338a6407d9410f6a283c5dc32ba676ac0b8f ']' ++ return 1 ++ change_kind=single_component ++ echo '# Debug traces :' +# change_kind=single_component : llvm ++ echo '# change_kind=single_component : llvm' + for c in "${changed_components[@]}" -++ get_baseline_git toolchain_superproject_rev +++ get_baseline_git llvm_rev ++ set -euf -o pipefail ++ local base_artifacts=base-artifacts -++ assert_with_msg 'ERROR: No toolchain_superproject_rev in baseline git' '[' -f base-artifacts/git/toolchain_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat base-artifacts/git/toolchain_superproject_rev -+ base_rev=3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7 -++ get_current_git toolchain_superproject_rev +++ cat base-artifacts/git/llvm_rev ++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f +++ get_current_git llvm_rev ++ set -euf -o pipefail -++ assert_with_msg 'ERROR: No toolchain_superproject_rev in current git' '[' -f artifacts/git/toolchain_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat artifacts/git/toolchain_superproject_rev -+ cur_rev=f84fc78c868de1845e6149fdfe3c93032942b803 -++ git -C toolchain_superproject rev-list --count 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 -# rev for toolchain_superproject : 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 (34 commits) +++ cat artifacts/git/llvm_rev ++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ git -C llvm rev-list --count 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +# rev for llvm : 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e (1193 commits) -+ c_commits=34 -+ echo '# rev for toolchain_superproject : 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 (34 commits)' +# post_interesting_commits ++ c_commits=1193 ++ echo '# rev for llvm : 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e (1193 commits)' + echo '' + setup_stages_to_run + '[' ignore = onregression ']' @@ -221,26 +227,25 @@ + generate_extra_details_f=generate_extra_details + case "$ci_project" in + post_interesting_commits init -# post_interesting_commits + set -euf -o pipefail + echo '# post_interesting_commits' + local stage=init -+ '[' multiple_components '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + '[' full '!=' full ']' + generate_extra_details + true +# post_interesting_commits + check_if_first_report + declare -g first_icommit_to_report + first_icommit_to_report=false -+ '[' xmultiple_components '!=' xsingle_commit ']' ++ '[' xsingle_component '!=' xsingle_commit ']' + return + post_interesting_commits full + set -euf -o pipefail -# post_interesting_commits + echo '# post_interesting_commits' + local stage=full -+ '[' multiple_components '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + true + generate_jira_dir @@ -251,7 +256,7 @@ ++ set -euf -o pipefail ++ local print_arg=--entry ++ shift 1 -++ '[' xmultiple_components '!=' xsingle_commit ']' +++ '[' xsingle_component '!=' xsingle_commit ']' ++ return 0 + icommit_entry= + '[' '' '!=' '' ']' @@ -266,74 +271,6167 @@ ++ false ++ local print_arg=--oneline ++ case "$print_arg" in -# print all notification files ++ '[' 0 = 0 ']' ++ echo Success ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x +# print all notification files + echo '# print all notification files' + true + generate_mail_files + set -euf -o pipefail + print_mail_recipients + set -euf -o pipefail -+ local c= ++ local c=llvm ++ '[' llvm = '' ']' ++ local -A emails ++ emails["tcwg-validation@linaro.org"]=bcc ++ emails["author"]=cc ++ emails["committer"]=to ++ case "$ci_project/$ci_config:$c" in ++ emails["author"]=no ++ emails["committer"]=no ++ emails["antoine.moynault@linaro.org"]=to ++ local c email base_rev cur_rev +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e ++ read -r email +++ git -C llvm log --pretty=%ae 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ local precommit_postcommit=postcommit + '[' '' = '' ']' -+ echo bcc:tcwg-validation@linaro.org -+ return 0 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e ++ read -r email +++ git -C llvm log --pretty=%ce 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ unset 'emails[author]' 'emails[committer]' ++ local type ++ recipients=() ++ local -a recipients ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=bcc ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ recipients+=("$type:$email") ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=to ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ recipients+=("$email") ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ IFS=, ++ echo bcc:tcwg-validation@linaro.org,antoine.moynault@linaro.org ++ print_commits --oneline ++ set -euf -o pipefail ++ false ++ local print_arg=--oneline -++ '[' multiple_components = no_change ']' +++ '[' single_component = no_change ']' ++ local more_lines -++ '[' multiple_components = single_commit ']' -++ '[' multiple_components = single_component ']' -++ '[' multiple_components = multiple_components ']' +++ '[' single_component = single_commit ']' +++ '[' single_component = single_component ']' ++ local new_commits c base_rev cur_rev c_commits components ++ local commits_or_patches ++ '[' '' '!=' '' ']' ++ commits_or_patches=commits ++ new_commits=0 ++ for c in "${changed_components[@]}" -+++ get_baseline_git aosp_superproject_rev -+++ set -euf -o pipefail -+++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in baseline git' '[' -f base-artifacts/git/aosp_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat base-artifacts/git/aosp_superproject_rev -++ base_rev=9a8bb7d4d2f937593a0e07fe58d5ac76507a5744 -+++ get_current_git aosp_superproject_rev -+++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in current git' '[' -f artifacts/git/aosp_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat artifacts/git/aosp_superproject_rev -++ cur_rev=479b80fea794f4a204849d0c54e73545c12a73cb -+++ git -C aosp_superproject rev-list --count 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb -++ c_commits=910 -++ new_commits=910 -++ for c in "${changed_components[@]}" -+++ get_baseline_git toolchain_superproject_rev ++++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in baseline git' '[' -f base-artifacts/git/toolchain_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat base-artifacts/git/toolchain_superproject_rev -++ base_rev=3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7 -+++ get_current_git toolchain_superproject_rev ++++ cat base-artifacts/git/llvm_rev +++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f ++++ get_current_git llvm_rev +++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in current git' '[' -f artifacts/git/toolchain_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat artifacts/git/toolchain_superproject_rev -++ cur_rev=f84fc78c868de1845e6149fdfe3c93032942b803 -+++ git -C toolchain_superproject rev-list --count 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 -++ c_commits=34 -++ new_commits=944 -+++ echo aosp_superproject toolchain_superproject ++++ cat artifacts/git/llvm_rev +++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e ++++ git -C llvm rev-list --count 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ c_commits=1193 +++ new_commits=1193 ++++ echo llvm +++ tr ' ' , -++ components=aosp_superproject,toolchain_superproject -++ echo '944 commits in aosp_superproject,toolchain_superproject' +++ components=llvm +++ echo '1193 commits in llvm' ++ '[' --oneline = --oneline ']' ++ return 0 ++ print_result --oneline @@ -342,113 +6440,74 @@ ++ case "$print_arg" in ++ '[' 0 = 0 ']' ++ echo Success -+ echo '[Linaro-TCWG-CI]' '944 commits in aosp_superproject,toolchain_superproject: Success' ++ echo '[Linaro-TCWG-CI]' '1193 commits in llvm: Success' + print_mail_body + local bad_artifacts_url good_artifacts_url ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -+ bad_artifacts_url=https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/artifact/artifacts ++ bad_artifacts_url=https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/artifact/artifacts ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -+ good_artifacts_url=https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/353/artifact/artifacts ++ good_artifacts_url=https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/artifact/artifacts + cat ++ print_commits --short ++ sed -e 's/^/ | /' ++ set -euf -o pipefail ++ false ++ local print_arg=--short -++ '[' multiple_components = no_change ']' +++ '[' single_component = no_change ']' ++ local more_lines -++ '[' multiple_components = single_commit ']' -++ '[' multiple_components = single_component ']' -++ '[' multiple_components = multiple_components ']' +++ '[' single_component = single_commit ']' +++ '[' single_component = single_component ']' ++ local new_commits c base_rev cur_rev c_commits components ++ local commits_or_patches ++ '[' '' '!=' '' ']' ++ commits_or_patches=commits ++ new_commits=0 ++ for c in "${changed_components[@]}" -+++ get_baseline_git aosp_superproject_rev ++++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in baseline git' '[' -f base-artifacts/git/aosp_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat base-artifacts/git/aosp_superproject_rev -++ base_rev=9a8bb7d4d2f937593a0e07fe58d5ac76507a5744 -+++ get_current_git aosp_superproject_rev ++++ cat base-artifacts/git/llvm_rev +++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f ++++ get_current_git llvm_rev +++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in current git' '[' -f artifacts/git/aosp_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat artifacts/git/aosp_superproject_rev -++ cur_rev=479b80fea794f4a204849d0c54e73545c12a73cb -+++ git -C aosp_superproject rev-list --count 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb -++ c_commits=910 -++ new_commits=910 -++ for c in "${changed_components[@]}" -+++ get_baseline_git toolchain_superproject_rev -+++ set -euf -o pipefail -+++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in baseline git' '[' -f base-artifacts/git/toolchain_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat base-artifacts/git/toolchain_superproject_rev -++ base_rev=3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7 -+++ get_current_git toolchain_superproject_rev -+++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in current git' '[' -f artifacts/git/toolchain_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat artifacts/git/toolchain_superproject_rev -++ cur_rev=f84fc78c868de1845e6149fdfe3c93032942b803 -+++ git -C toolchain_superproject rev-list --count 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 -++ c_commits=34 -++ new_commits=944 -+++ echo aosp_superproject toolchain_superproject ++++ cat artifacts/git/llvm_rev +++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e ++++ git -C llvm rev-list --count 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ c_commits=1193 +++ new_commits=1193 ++++ echo llvm +++ tr ' ' , -++ components=aosp_superproject,toolchain_superproject -++ echo '944 commits in aosp_superproject,toolchain_superproject' +++ components=llvm +++ echo '1193 commits in llvm' ++ '[' --short = --oneline ']' ++ for c in "${changed_components[@]}" -+++ get_baseline_git aosp_superproject_rev -+++ set -euf -o pipefail -+++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in baseline git' '[' -f base-artifacts/git/aosp_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat base-artifacts/git/aosp_superproject_rev -++ base_rev=9a8bb7d4d2f937593a0e07fe58d5ac76507a5744 -+++ get_current_git aosp_superproject_rev -+++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in current git' '[' -f artifacts/git/aosp_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat artifacts/git/aosp_superproject_rev -++ cur_rev=479b80fea794f4a204849d0c54e73545c12a73cb -+++ git -C aosp_superproject rev-list --count 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb -++ c_commits=910 -++ '[' '' '!=' '' ']' -++ git -C aosp_superproject log -n 5 --oneline 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb -++ '[' 910 -gt 5 ']' -++ echo '... and 905 more commits in aosp_superproject' -++ '[' '' '!=' '' ']' -++ for c in "${changed_components[@]}" -+++ get_baseline_git toolchain_superproject_rev ++++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in baseline git' '[' -f base-artifacts/git/toolchain_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat base-artifacts/git/toolchain_superproject_rev -++ base_rev=3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7 -+++ get_current_git toolchain_superproject_rev ++++ cat base-artifacts/git/llvm_rev +++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f ++++ get_current_git llvm_rev +++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in current git' '[' -f artifacts/git/toolchain_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat artifacts/git/toolchain_superproject_rev -++ cur_rev=f84fc78c868de1845e6149fdfe3c93032942b803 -+++ git -C toolchain_superproject rev-list --count 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 -++ c_commits=34 ++++ cat artifacts/git/llvm_rev +++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e ++++ git -C llvm rev-list --count 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ c_commits=1193 ++ '[' '' '!=' '' ']' -++ git -C toolchain_superproject log -n 5 --oneline 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 -++ '[' 34 -gt 5 ']' -++ echo '... and 29 more commits in toolchain_superproject' +++ git -C llvm log -n 5 --oneline 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ '[' 1193 -gt 5 ']' +++ echo '... and 1188 more commits in llvm' ++ '[' '' '!=' '' ']' ++ return 0 ++ print_result --short @@ -468,8 +6527,7 @@ # shadow build has no errors 0 # shadow.size present -1 -# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940' +1' ++ echo '' ++ echo From +++ cat base-artifacts/results @@ -484,14 +6542,18 @@ # shadow build has no errors 0 # shadow.size present -1' +1 +# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940' ++ print_config ++ : -+ '[' multiple_components '!=' single_commit ']' -+ return # generate dashboard # generate_dashboard_squad ... Skipping +# post_dashboard_squad +... Skipping +# post_to_jira ++ '[' single_component '!=' single_commit ']' ++ return + echo '# generate dashboard' + generate_dashboard_squad + local results_date @@ -500,9 +6562,6 @@ + echo '... Skipping' + return + post_dashboard_squad -# post_dashboard_squad -... Skipping -# post_to_jira + echo '# post_dashboard_squad' + false + echo '... Skipping' @@ -511,6 +6570,6 @@ + post_to_jira + echo '# post_to_jira' + false -Full stage ran successfully. + false +Full stage ran successfully. + echo 'Full stage ran successfully.' diff --git a/jenkins/notify-init.log b/jenkins/notify-init.log index 2c816f6..41a7f5e 100644 --- a/jenkins/notify-init.log +++ b/jenkins/notify-init.log @@ -1,25 +1,25 @@ ++ pwd ++ cat -+ remote_exec build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts --notify ignore __stage init __verbose true ++ remote_exec build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts --notify ignore __stage init __verbose true + set -euf -o pipefail + local host -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -d: -f 1 -+ host=build-08.tcwglab ++ host=build-01.tcwglab + local port -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 2 + port= + local dir -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 3 -+ dir=/home/tcwg-buildslave/workspace/tcwg_aosp_0 ++ dir=/home/tcwg-buildslave/workspace/tcwg_aosp_1 + local opts -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 4 -+ opts=-p49383 ++ opts=-p49199 + local env_vars -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 5 + env_vars= + shift @@ -52,10 +52,10 @@ + for i in "$@" + cmd+=("$(printf '%q' "$i")") ++ printf %q true -++ printf %q /home/tcwg-buildslave/workspace/tcwg_aosp_0 -+ ssh -p49383 build-08.tcwglab 'cd /home/tcwg-buildslave/workspace/tcwg_aosp_0 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts --notify ignore __stage init __verbose true' +++ printf %q /home/tcwg-buildslave/workspace/tcwg_aosp_1 ++ ssh -p49199 build-01.tcwglab 'cd /home/tcwg-buildslave/workspace/tcwg_aosp_1 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts --notify ignore __stage init __verbose true' -/home/tcwg-buildslave/workspace/tcwg_aosp_0/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts --notify ignore __stage init __verbose true +/home/tcwg-buildslave/workspace/tcwg_aosp_1/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts --notify ignore __stage init __verbose true + false + dryrun= @@ -72,33 +72,33 @@ ++ get_manifest artifacts/manifest.sh '{rr[ci_project]}' ++ set +x + ci_project=tcwg_aosp-code_size-dex2oat -# Debug traces : -# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/353/ -# Using dir : base-artifacts -# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/ -# Using dir : artifacts - ++ get_current_manifest '{rr[ci_config]}' ++ get_manifest artifacts/manifest.sh '{rr[ci_config]}' ++ set +x +# Debug traces : + ci_config=oriole-master + echo '# Debug traces :' ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -+ echo '# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/353/' +# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/ +# Using dir : base-artifacts ++ echo '# Baseline : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/' + echo '# Using dir : base-artifacts' ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -+ echo '# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/' +# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/ +# Using dir : artifacts + ++ echo '# Artifacts : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/' + echo '# Using dir : artifacts' + echo '' + mkdir -p artifacts/notify + '[' -f /home/tcwg-buildslave/.jipdate.yml ']' + set +x -+ declare -Ag pw # check_source_changes ++ declare -Ag pw + '[' ignore = precommit ']' + check_source_changes + echo '# check_source_changes' @@ -115,93 +115,98 @@ +++ set -euf -o pipefail +++ local c delim= +++ for c in ${rr[components]} -# Debug traces : -# change_kind=multiple_components : aosp_superproject toolchain_superproject -+++ '[' xhttps://android.googlesource.com/platform/superproject/main.git#main '!=' xbaseline ']' -+++ echo -ne aosp_superproject -+++ delim=' ' -+++ for c in ${rr[components]} +++ '[' xbaseline '!=' xbaseline ']' +++ for c in ${rr[components]} -+++ '[' xhttps://android.googlesource.com/platform/superproject#llvm-toolchain '!=' xbaseline ']' -+++ echo -ne ' toolchain_superproject' ++++ '[' xhttps://github.com/llvm/llvm-project.git#main '!=' xbaseline ']' ++++ echo -ne llvm +++ delim=' ' ++++ for c in ${rr[components]} ++++ '[' xbaseline '!=' xbaseline ']' +++ echo ++ for c in $(print_updated_components) -+++ get_current_git aosp_superproject_rev -+++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in current git' '[' -f artifacts/git/aosp_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat artifacts/git/aosp_superproject_rev -+++ get_baseline_git aosp_superproject_rev -+++ set -euf -o pipefail -+++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No aosp_superproject_rev in baseline git' '[' -f base-artifacts/git/aosp_superproject_rev ']' -+++ set -euf -o pipefail +x -+++ cat base-artifacts/git/aosp_superproject_rev -++ '[' x479b80fea794f4a204849d0c54e73545c12a73cb '!=' x9a8bb7d4d2f937593a0e07fe58d5ac76507a5744 ']' -++ echo -ne aosp_superproject -++ delim=' ' -++ for c in $(print_updated_components) -+++ get_current_git toolchain_superproject_rev ++++ get_current_git llvm_rev +++ set -euf -o pipefail -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in current git' '[' -f artifacts/git/toolchain_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat artifacts/git/toolchain_superproject_rev -+++ get_baseline_git toolchain_superproject_rev ++++ cat artifacts/git/llvm_rev ++++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts -+++ assert_with_msg 'ERROR: No toolchain_superproject_rev in baseline git' '[' -f base-artifacts/git/toolchain_superproject_rev ']' ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x -+++ cat base-artifacts/git/toolchain_superproject_rev -++ '[' xf84fc78c868de1845e6149fdfe3c93032942b803 '!=' x3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7 ']' -++ echo -ne ' toolchain_superproject' ++++ cat base-artifacts/git/llvm_rev +++ '[' x65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e '!=' x3edd338a6407d9410f6a283c5dc32ba676ac0b8f ']' +++ echo -ne llvm ++ delim=' ' ++ echo + local c base_rev cur_rev c_commits -+ '[' 2 = 0 ']' -+ '[' 2 = 1 ']' -+ change_kind=multiple_components -+ changed_single_component= -+ echo '# Debug traces :' -+ echo '# change_kind=multiple_components : aosp_superproject toolchain_superproject' -+ for c in "${changed_components[@]}" -++ get_baseline_git aosp_superproject_rev ++ '[' 1 = 0 ']' ++ '[' 1 = 1 ']' ++ changed_single_component=llvm +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ first_bad=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ last_good=3edd338a6407d9410f6a283c5dc32ba676ac0b8f ++ local res ++ res=0 ++ wait 517062 ++ git -C llvm rev-parse --verify HEAD ++ assert_with_msg 'Cannot parse HEAD in repo llvm' '[' 0 = 0 ']' ++ set -euf -o pipefail +x ++ single_commit_p llvm ++ set -euf -o pipefail ++ local c=llvm ++ local base_rev cur_rev sha1 +++ get_baseline_git llvm_rev ++ set -euf -o pipefail ++ local base_artifacts=base-artifacts -++ assert_with_msg 'ERROR: No aosp_superproject_rev in baseline git' '[' -f base-artifacts/git/aosp_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat base-artifacts/git/aosp_superproject_rev -+ base_rev=9a8bb7d4d2f937593a0e07fe58d5ac76507a5744 -++ get_current_git aosp_superproject_rev +++ cat base-artifacts/git/llvm_rev ++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f +++ get_current_git llvm_rev ++ set -euf -o pipefail -++ assert_with_msg 'ERROR: No aosp_superproject_rev in current git' '[' -f artifacts/git/aosp_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat artifacts/git/aosp_superproject_rev -+ cur_rev=479b80fea794f4a204849d0c54e73545c12a73cb -++ git -C aosp_superproject rev-list --count 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb -# rev for aosp_superproject : 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb (910 commits) -+ c_commits=910 -+ echo '# rev for aosp_superproject : 9a8bb7d4d2f937593a0e07fe58d5ac76507a5744..479b80fea794f4a204849d0c54e73545c12a73cb (910 commits)' +++ cat artifacts/git/llvm_rev ++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ git -C llvm rev-parse '65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e^@' ++ for sha1 in $(git -C "$c" rev-parse "$cur_rev^@") ++ '[' 77c67436d9e7e63c50752d990a271cf860ba9a0e = 3edd338a6407d9410f6a283c5dc32ba676ac0b8f ']' ++ return 1 +# Debug traces : +# change_kind=single_component : llvm ++ change_kind=single_component ++ echo '# Debug traces :' ++ echo '# change_kind=single_component : llvm' + for c in "${changed_components[@]}" -++ get_baseline_git toolchain_superproject_rev +++ get_baseline_git llvm_rev ++ set -euf -o pipefail ++ local base_artifacts=base-artifacts -++ assert_with_msg 'ERROR: No toolchain_superproject_rev in baseline git' '[' -f base-artifacts/git/toolchain_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat base-artifacts/git/toolchain_superproject_rev -+ base_rev=3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7 -++ get_current_git toolchain_superproject_rev +++ cat base-artifacts/git/llvm_rev ++ base_rev=3edd338a6407d9410f6a283c5dc32ba676ac0b8f +++ get_current_git llvm_rev ++ set -euf -o pipefail -++ assert_with_msg 'ERROR: No toolchain_superproject_rev in current git' '[' -f artifacts/git/toolchain_superproject_rev ']' +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++ set -euf -o pipefail +x -++ cat artifacts/git/toolchain_superproject_rev -+ cur_rev=f84fc78c868de1845e6149fdfe3c93032942b803 -++ git -C toolchain_superproject rev-list --count 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 -# rev for toolchain_superproject : 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 (34 commits) +++ cat artifacts/git/llvm_rev ++ cur_rev=65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +++ git -C llvm rev-list --count 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e +# rev for llvm : 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e (1193 commits) -+ c_commits=34 -+ echo '# rev for toolchain_superproject : 3aed0a17b4ee148d8a7295fd5ddd4a4a199ea2d7..f84fc78c868de1845e6149fdfe3c93032942b803 (34 commits)' ++ c_commits=1193 ++ echo '# rev for llvm : 3edd338a6407d9410f6a283c5dc32ba676ac0b8f..65b40f273f09a53f61a13ac6f4bb65ec4ac63d6e (1193 commits)' + echo '' + setup_stages_to_run + '[' ignore = onregression ']' @@ -225,7 +230,7 @@ + set -euf -o pipefail + echo '# post_interesting_commits' + local stage=init -+ '[' multiple_components '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return Init stage ran successfully. + '[' init '!=' full ']' diff --git a/jenkins/rewrite.log b/jenkins/rewrite.log index b8f509b..2cbcf18 100644 --- a/jenkins/rewrite.log +++ b/jenkins/rewrite.log @@ -1,25 +1,25 @@ ++ pwd ++ cat -+ remote_exec build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: ./jenkins-scripts/round-robin-baseline.sh '@@rr[top_artifacts]' artifacts __build_script tcwg_aosp-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100 ++ remote_exec build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ./jenkins-scripts/round-robin-baseline.sh '@@rr[top_artifacts]' artifacts __build_script tcwg_aosp-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100 + set -euf -o pipefail + local host -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -d: -f 1 -+ host=build-08.tcwglab ++ host=build-01.tcwglab + local port -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 2 + port= + local dir -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 3 -+ dir=/home/tcwg-buildslave/workspace/tcwg_aosp_0 ++ dir=/home/tcwg-buildslave/workspace/tcwg_aosp_1 + local opts -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 4 -+ opts=-p49383 ++ opts=-p49199 + local env_vars -++ echo build-08.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_0:-p49383: +++ echo build-01.tcwglab::/home/tcwg-buildslave/workspace/tcwg_aosp_1:-p49199: ++ cut -s -d: -f 5 + env_vars= + shift @@ -58,5 +58,5 @@ + for i in "$@" + cmd+=("$(printf '%q' "$i")") ++ printf %q 100 -++ printf %q /home/tcwg-buildslave/workspace/tcwg_aosp_0 -+ ssh -p49383 build-08.tcwglab 'cd /home/tcwg-buildslave/workspace/tcwg_aosp_0 && exec ./jenkins-scripts/round-robin-baseline.sh @@rr\[top_artifacts\] artifacts __build_script tcwg_aosp-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100' +++ printf %q /home/tcwg-buildslave/workspace/tcwg_aosp_1 ++ ssh -p49199 build-01.tcwglab 'cd /home/tcwg-buildslave/workspace/tcwg_aosp_1 && exec ./jenkins-scripts/round-robin-baseline.sh @@rr\[top_artifacts\] artifacts __build_script tcwg_aosp-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100' diff --git a/jenkins/run-build.env b/jenkins/run-build.env index 03af716..7df16bd 100644 --- a/jenkins/run-build.env +++ b/jenkins/run-build.env @@ -1,11 +1,9 @@ -build_name="#369" +build_name="#374" docker_opts=(--distro default ) source build_container.sh trap "cleanup_all_containers" EXIT -build_name="#369-aosp_superproject-toolchain_superproject" -branch_opt=(==rr\[aosp_superproject_git\] -https://android.googlesource.com/platform/superproject/main.git#main -==rr\[toolchain_superproject_git\] -https://android.googlesource.com/platform/superproject#llvm-toolchain ) -build_name="#369-aosp_superproject-toolchain_superproject-R# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940" +build_name="#374-llvm" +branch_opt=(==rr\[llvm_git\] +https://github.com/llvm/llvm-project.git#main ) +build_name="#374-llvm-R1" diff --git a/manifest.sh b/manifest.sh index 10000ec..b8c9e97 100644 --- a/manifest.sh +++ b/manifest.sh @@ -1,4 +1,4 @@ -declare -g "jenkins_scripts_rev=381ac9376b791b2b4c03e50192870581a5355164" +declare -g "jenkins_scripts_rev=08db330b155e9bacc4152e2fefa40f3f85a847e7" # Artifacts directory # Recording parameters to manifest: artifacts/manifest.sh rr[ci_project]="tcwg_aosp-code_size-dex2oat" @@ -7,20 +7,20 @@ declare -g "bmk_branch=master" declare -g "scripts_branch=master" rr[mode]="build" rr[update_baseline]="onsuccess" -declare -g "BUILD_URL=https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/" +declare -g "BUILD_URL=https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/" declare -g "SQUAD_GRP=tcwg" -rr[aosp_superproject_git]="https://android.googlesource.com/platform/superproject/main.git#main" -rr[toolchain_superproject_git]="https://android.googlesource.com/platform/superproject#llvm-toolchain" +rr[llvm_git]="https://github.com/llvm/llvm-project.git#main" # Saving rr[] in the manifest rr[abe_branch]="master" rr[abe_repo]="https://git-us.linaro.org/toolchain/abe.git" +rr[aosp_superproject_git]="baseline" rr[baseline_branch]="linaro-local/ci/tcwg_aosp-code_size-dex2oat/oriole-master" rr[breakup_changed_components]="breakup_changed_components llvm" rr[components]="aosp_superproject llvm toolchain_superproject" rr[host_c++]="/usr/bin/g++" rr[host_cc]="/usr/bin/gcc" -rr[llvm_git]="baseline" rr[no_regression_p]="no_regression_p" rr[no_regression_result]="0" rr[old_format_baseline_branch]="linaro-local/ci/tcwg_aosp-code_size-dex2oat/oriole-master" +rr[toolchain_superproject_git]="baseline" declare -g "notify=ignore" diff --git a/notify/jira/comments.txt b/notify/jira/comments.txt index 191c4a9..230243c 100644 --- a/notify/jira/comments.txt +++ b/notify/jira/comments.txt @@ -1,3 +1,3 @@ [GNU-692] Success -Details: https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/artifact/artifacts/notify/mail-body.txt/*view*/ +Details: https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/artifact/artifacts/notify/mail-body.txt/*view*/ diff --git a/notify/mail-body.txt b/notify/mail-body.txt index 0aef887..24937c0 100644 --- a/notify/mail-body.txt +++ b/notify/mail-body.txt @@ -4,19 +4,13 @@ Please find some details below. If you have any questions, please follow up on In CI config tcwg_aosp-code_size-dex2oat/oriole-master after: - | 944 commits in aosp_superproject,toolchain_superproject - | 479b80fea79 Merge "Use @UsesReflection for LocalTransport keep rules" into main - | f63165b9cd3 Merge "LeAudio: Fix flaky unit tests" into main - | 8988a57df99 Merge "Better documentation." into main - | c10bcde42ba Merge "Fix string comparison in otapreopt." into main - | 0e6e4d0284f Merge "DO NOT MERGE: Make proguard rule propagate with aconfig-annotations-lib" into main - | ... and 905 more commits in aosp_superproject - | f84fc78c868 Merge "NFC: Remove dead comment listing failed tests" into main - | 9750cb0469e Merge "Log the number of cores on the host machine" into main - | 7d2ee1e33d1 Merge "Use the Docker image in production" into main - | 84053d6fdad Autoupdate of 3 submodules - | 98fffdd90ec Update build-tools to ab/10712949 - | ... and 29 more commits in toolchain_superproject + | 1193 commits in llvm + | 65b40f273f09 RegAlloc: Rename MLRegalloc* files to use consistent captalization + | 77c67436d9e7 LLT: Add some stub constructors for FP types + | c2bee1ed26a3 [clang-tidy][NFC] Unwind if-else-if-... in UnusedUsingDeclsCheck + | 99be6b6d598f Haiku: Enable thread-local storag, disable PIE / enable PIC by default + | 701e6f763047 [libc][fix] Fix buffer overrun in initialization of GPU return value + | ... and 1188 more commits in llvm Results changed to # reset_artifacts: @@ -31,7 +25,6 @@ Results changed to 0 # shadow.size present 1 -# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940 From # reset_artifacts: @@ -46,12 +39,13 @@ From 0 # shadow.size present 1 +# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940 -----------------8<--------------------------8<--------------------------8<-------------------------- The information below can be used to reproduce a debug environment: -Current build : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/artifact/artifacts -Reference build : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/353/artifact/artifacts +Current build : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/374/artifact/artifacts +Reference build : https://ci.linaro.org/job/tcwg_aosp-code_size-dex2oat--oriole-master-build/369/artifact/artifacts diff --git a/notify/mail-recipients.txt b/notify/mail-recipients.txt index aa219ef..ba925c1 100644 --- a/notify/mail-recipients.txt +++ b/notify/mail-recipients.txt @@ -1 +1 @@ -bcc:tcwg-validation@linaro.org +bcc:tcwg-validation@linaro.org,antoine.moynault@linaro.org diff --git a/notify/mail-subject.txt b/notify/mail-subject.txt index 935900c..db44762 100644 --- a/notify/mail-subject.txt +++ b/notify/mail-subject.txt @@ -1 +1 @@ -[Linaro-TCWG-CI] 944 commits in aosp_superproject,toolchain_superproject: Success +[Linaro-TCWG-CI] 1193 commits in llvm: Success @@ -10,4 +10,3 @@ 0 # shadow.size present 1 -# 2,out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so increased in size by 2% from 21531 to 21940 diff --git a/results-vs-first/results.csv b/results-vs-first/results.csv index 58928cc..24e8f9f 100644 --- a/results-vs-first/results.csv +++ b/results-vs-first/results.csv @@ -11,13 +11,13 @@ out/soong/.intermediates/external/lz4/lib/liblz4/android_arm64_armv8-2a_cortex-a out/soong/.intermediates/art/libartpalette/libartpalette/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libartpalette.so,binary,n/a,-1,7621 out/soong/.intermediates/art/libnativebridge/libnativebridge/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libnativebridge.so,binary,n/a,-1,13287 out/soong/.intermediates/art/libartbase/libartbase/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libartbase.so,binary,n/a,-1,348409 -out/soong/.intermediates/art/libdexfile/libdexfile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libdexfile.so,binary,n/a,-1,254872 out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so,binary,n/a,-1,21940 out/soong/.intermediates/external/perfetto/heapprofd_client_api/android_arm64_armv8-2a_cortex-a55_shared_current/e4694d05f1cb76fefd10c9c37c092ec4/heapprofd_client_api.so,binary,n/a,-1,1048 +out/soong/.intermediates/art/libdexfile/libdexfile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libdexfile.so,binary,n/a,-1,254872 out/soong/.intermediates/art/libnativeloader/libnativeloader/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libnativeloader.so,binary,n/a,-1,148676 out/soong/.intermediates/art/libprofile/libprofile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libprofile.so,binary,n/a,-1,149815 +out/soong/.intermediates/art/dexlayout/libart-dexlayout/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libart-dexlayout.so,binary,n/a,-1,319316 out/soong/.intermediates/system/unwinding/libunwindstack/libunwindstack/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libunwindstack.so,binary,n/a,-1,711129 -out/soong/.intermediates/art/dexlayout/libart-dexlayout/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libart-dexlayout.so,binary,n/a,-1,319092 -out/soong/.intermediates/art/runtime/libart/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart.so,binary,n/a,-1,7048680 -out/soong/.intermediates/art/compiler/libart-compiler/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart-compiler.so,binary,n/a,-1,3326673 -out/soong/.intermediates/art/dex2oat/dex2oat/android_arm64_armv8-2a_cortex-a55_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/dex2oat64,binary,n/a,-1,1016181 +out/soong/.intermediates/art/runtime/libart/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart.so,binary,n/a,-1,7041520 +out/soong/.intermediates/art/compiler/libart-compiler/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart-compiler.so,binary,n/a,-1,3328041 +out/soong/.intermediates/art/dex2oat/dex2oat/android_arm64_armv8-2a_cortex-a55_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/dex2oat64,binary,n/a,-1,1016213 diff --git a/results-vs-prev/results.csv b/results-vs-prev/results.csv index 519c3d2..0b49ae5 100644 --- a/results-vs-prev/results.csv +++ b/results-vs-prev/results.csv @@ -1,23 +1,23 @@ benchmark,symbol,rel_size,size_x,size_y out/soong/.intermediates/bionic/libdl/libdl/android_arm64_armv8-2a_cortex-a55_shared_current/libdl.so,binary,100,1352,1352 out/soong/.intermediates/system/logging/liblog/liblog/android_arm64_armv8-2a_cortex-a55_shared_current/liblog.so,binary,100,4806,4806 +out/soong/.intermediates/external/zlib/libz/android_arm64_armv8-2a_cortex-a55_shared_current/libz.so,binary,100,9027,9027 out/soong/.intermediates/bionic/libm/libm/android_arm64_armv8-2a_cortex-a55_shared_current/libm.so,binary,100,24046,24046 -out/soong/.intermediates/bionic/libc/libc/android_arm64_armv8-2a_cortex-a55_shared_current/libc.so,binary,100,127748,127926 +out/soong/.intermediates/bionic/libc/libc/android_arm64_armv8-2a_cortex-a55_shared_current/libc.so,binary,100,127926,127926 out/soong/.intermediates/art/libartpalette/libartpalette/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libartpalette.so,binary,100,7621,7621 -out/soong/.intermediates/external/zlib/libz/android_arm64_armv8-2a_cortex-a55_shared_current/libz.so,binary,100,9027,9027 out/soong/.intermediates/bionic/libdl/libdl_android/android_arm64_armv8-2a_cortex-a55_shared_current/libdl_android.so,binary,100,926,926 -out/soong/.intermediates/art/libartbase/libartbase/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libartbase.so,binary,100,349523,348409 out/soong/.intermediates/art/libnativebridge/libnativebridge/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libnativebridge.so,binary,100,13287,13287 -out/soong/.intermediates/art/libdexfile/libdexfile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libdexfile.so,binary,100,254872,254872 +out/soong/.intermediates/art/libartbase/libartbase/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libartbase.so,binary,100,348409,348409 out/soong/.intermediates/external/lzma/C/liblzma/android_arm64_armv8-2a_cortex-a55_shared_apex31/unstripped/liblzma.so,binary,100,173867,173867 -out/soong/.intermediates/external/perfetto/heapprofd_client_api/android_arm64_armv8-2a_cortex-a55_shared_current/e4694d05f1cb76fefd10c9c37c092ec4/heapprofd_client_api.so,binary,100,1048,1048 +out/soong/.intermediates/art/libdexfile/libdexfile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libdexfile.so,binary,100,254872,254872 +out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so,binary,100,21940,21940 out/soong/.intermediates/packages/modules/StatsD/lib/libstatssocket/libstatssocket/android_arm64_armv8-2a_cortex-a55_shared_current/libstatssocket.so,binary,100,2217,2217 -out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so,binary,102,21531,21940 +out/soong/.intermediates/external/perfetto/heapprofd_client_api/android_arm64_armv8-2a_cortex-a55_shared_current/e4694d05f1cb76fefd10c9c37c092ec4/heapprofd_client_api.so,binary,100,1048,1048 out/soong/.intermediates/art/libnativeloader/libnativeloader/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libnativeloader.so,binary,100,148676,148676 out/soong/.intermediates/art/libprofile/libprofile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libprofile.so,binary,100,149815,149815 out/soong/.intermediates/external/lz4/lib/liblz4/android_arm64_armv8-2a_cortex-a55_shared_apex31/unstripped/liblz4.so,binary,100,160771,160771 -out/soong/.intermediates/system/unwinding/libunwindstack/libunwindstack/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libunwindstack.so,binary,100,710721,711129 -out/soong/.intermediates/art/dexlayout/libart-dexlayout/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libart-dexlayout.so,binary,100,319092,319092 -out/soong/.intermediates/art/runtime/libart/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart.so,binary,100,7036951,7048680 -out/soong/.intermediates/art/compiler/libart-compiler/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart-compiler.so,binary,100,3325234,3326673 -out/soong/.intermediates/art/dex2oat/dex2oat/android_arm64_armv8-2a_cortex-a55_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/dex2oat64,binary,100,1015621,1016181 +out/soong/.intermediates/system/unwinding/libunwindstack/libunwindstack/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libunwindstack.so,binary,100,711129,711129 +out/soong/.intermediates/art/dexlayout/libart-dexlayout/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libart-dexlayout.so,binary,100,319092,319316 +out/soong/.intermediates/art/runtime/libart/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart.so,binary,100,7048680,7041520 +out/soong/.intermediates/art/compiler/libart-compiler/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart-compiler.so,binary,100,3326673,3328041 +out/soong/.intermediates/art/dex2oat/dex2oat/android_arm64_armv8-2a_cortex-a55_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/dex2oat64,binary,100,1016181,1016213 @@ -1,23 +1,23 @@ benchmark,symbol,size -out/soong/.intermediates/bionic/libdl/libdl/android_arm64_armv8-2a_cortex-a55_shared_current/libdl.so,binary,1352 out/soong/.intermediates/system/logging/liblog/liblog/android_arm64_armv8-2a_cortex-a55_shared_current/liblog.so,binary,4806 +out/soong/.intermediates/bionic/libdl/libdl/android_arm64_armv8-2a_cortex-a55_shared_current/libdl.so,binary,1352 out/soong/.intermediates/external/zlib/libz/android_arm64_armv8-2a_cortex-a55_shared_current/libz.so,binary,9027 +out/soong/.intermediates/bionic/libdl/libdl_android/android_arm64_armv8-2a_cortex-a55_shared_current/libdl_android.so,binary,926 out/soong/.intermediates/bionic/libm/libm/android_arm64_armv8-2a_cortex-a55_shared_current/libm.so,binary,24046 out/soong/.intermediates/bionic/libc/libc/android_arm64_armv8-2a_cortex-a55_shared_current/libc.so,binary,127926 out/soong/.intermediates/art/libartpalette/libartpalette/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libartpalette.so,binary,7621 -out/soong/.intermediates/bionic/libdl/libdl_android/android_arm64_armv8-2a_cortex-a55_shared_current/libdl_android.so,binary,926 out/soong/.intermediates/art/libnativebridge/libnativebridge/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libnativebridge.so,binary,13287 out/soong/.intermediates/art/libartbase/libartbase/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libartbase.so,binary,348409 out/soong/.intermediates/external/lzma/C/liblzma/android_arm64_armv8-2a_cortex-a55_shared_apex31/unstripped/liblzma.so,binary,173867 -out/soong/.intermediates/art/libdexfile/libdexfile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libdexfile.so,binary,254872 out/soong/.intermediates/art/sigchainlib/libsigchain/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libsigchain.so,binary,21940 -out/soong/.intermediates/packages/modules/StatsD/lib/libstatssocket/libstatssocket/android_arm64_armv8-2a_cortex-a55_shared_current/libstatssocket.so,binary,2217 out/soong/.intermediates/external/perfetto/heapprofd_client_api/android_arm64_armv8-2a_cortex-a55_shared_current/e4694d05f1cb76fefd10c9c37c092ec4/heapprofd_client_api.so,binary,1048 +out/soong/.intermediates/packages/modules/StatsD/lib/libstatssocket/libstatssocket/android_arm64_armv8-2a_cortex-a55_shared_current/libstatssocket.so,binary,2217 +out/soong/.intermediates/art/libdexfile/libdexfile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libdexfile.so,binary,254872 out/soong/.intermediates/art/libnativeloader/libnativeloader/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libnativeloader.so,binary,148676 -out/soong/.intermediates/art/libprofile/libprofile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libprofile.so,binary,149815 out/soong/.intermediates/external/lz4/lib/liblz4/android_arm64_armv8-2a_cortex-a55_shared_apex31/unstripped/liblz4.so,binary,160771 +out/soong/.intermediates/art/libprofile/libprofile/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libprofile.so,binary,149815 +out/soong/.intermediates/art/dexlayout/libart-dexlayout/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libart-dexlayout.so,binary,319316 out/soong/.intermediates/system/unwinding/libunwindstack/libunwindstack/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libunwindstack.so,binary,711129 -out/soong/.intermediates/art/dexlayout/libart-dexlayout/android_arm64_armv8-2a_cortex-a55_shared_apex31/e4694d05f1cb76fefd10c9c37c092ec4/unstripped/libart-dexlayout.so,binary,319092 -out/soong/.intermediates/art/runtime/libart/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart.so,binary,7048680 -out/soong/.intermediates/art/compiler/libart-compiler/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart-compiler.so,binary,3326673 -out/soong/.intermediates/art/dex2oat/dex2oat/android_arm64_armv8-2a_cortex-a55_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/dex2oat64,binary,1016181 +out/soong/.intermediates/art/runtime/libart/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart.so,binary,7041520 +out/soong/.intermediates/art/compiler/libart-compiler/android_arm64_armv8-2a_cortex-a55_shared_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/libart-compiler.so,binary,3328041 +out/soong/.intermediates/art/dex2oat/dex2oat/android_arm64_armv8-2a_cortex-a55_apex31/85eaf79f2cdb3360398d24cccc67f3ae/unstripped/dex2oat64,binary,1016213 |