Intro

This doc will explore mortality and DALYs by risk factors

First to load the pre requisite packages and script for downloading data.

library(tidyverse)
source("download_completed_request.R")

Next I will download the data from the request. (Only has to be done once so now set not to evaluate (run)).

The files can now be loaded and joined locally as follows

dta <- read_csv("raw_data/risk/1.csv") %>% bind_rows(read_csv("raw_data/risk/2.csv"))
Parsed with column specification:
cols(
  measure_id = col_integer(),
  measure_name = col_character(),
  location_id = col_integer(),
  location_name = col_character(),
  sex_id = col_integer(),
  sex_name = col_character(),
  age_id = col_integer(),
  age_name = col_character(),
  cause_id = col_integer(),
  cause_name = col_character(),
  rei_id = col_integer(),
  rei_name = col_character(),
  metric_id = col_integer(),
  metric_name = col_character(),
  year = col_integer(),
  val = col_double(),
  upper = col_double(),
  lower = col_double()
)

|                                                                                                          |   0%
|                                                                                                          |   0%
|                                                                                                          |   0%
|                                                                                                          |   0%
|                                                                                                          |   0%
|                                                                                                          |   0%
|                                                                                                          |   0%
|=                                                                                                         |   1%
|=                                                                                                         |   1%
|=                                                                                                 |   1%    1 MB
|=                                                                                                 |   1%    1 MB
|=                                                                                                 |   1%    1 MB
|=                                                                                                 |   1%    1 MB
|=                                                                                                 |   1%    1 MB
|=                                                                                                 |   1%    1 MB
|=                                                                                                 |   1%    1 MB
|=                                                                                                 |   2%    1 MB
|==                                                                                                |   2%    1 MB
|==                                                                                                |   2%    1 MB
|==                                                                                                |   2%    1 MB
|==                                                                                                |   2%    1 MB
|==                                                                                                |   2%    1 MB
|==                                                                                                |   2%    2 MB
|==                                                                                                |   2%    2 MB
|==                                                                                                |   2%    2 MB
|==                                                                                                |   2%    2 MB
|==                                                                                                |   2%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    2 MB
|===                                                                                               |   3%    3 MB
|===                                                                                               |   3%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   4%    3 MB
|====                                                                                              |   5%    3 MB
|=====                                                                                             |   5%    4 MB
|=====                                                                                             |   5%    4 MB
|=====                                                                                             |   5%    4 MB
|=====                                                                                             |   5%    4 MB
|=====                                                                                             |   5%    4 MB
|=====                                                                                             |   5%    4 MB
|=====                                                                                             |   5%    4 MB
|=====                                                                                             |   5%    4 MB
|======                                                                                            |   6%    4 MB
|======                                                                                            |   6%    4 MB
|======                                                                                            |   6%    4 MB
|======                                                                                            |   6%    5 MB
|======                                                                                            |   6%    5 MB
|======                                                                                            |   6%    5 MB
|======                                                                                            |   6%    5 MB
|======                                                                                            |   6%    5 MB
|======                                                                                            |   6%    5 MB
|======                                                                                            |   6%    5 MB
|======                                                                                            |   7%    5 MB
|=======                                                                                           |   7%    5 MB
|=======                                                                                           |   7%    5 MB
|=======                                                                                           |   7%    5 MB
|=======                                                                                           |   7%    5 MB
|=======                                                                                           |   7%    5 MB
|=======                                                                                           |   7%    5 MB
|=======                                                                                           |   7%    6 MB
|=======                                                                                           |   7%    6 MB
|=======                                                                                           |   7%    6 MB
|========                                                                                          |   8%    6 MB
|========                                                                                          |   8%    6 MB
|========                                                                                          |   8%    6 MB
|========                                                                                          |   8%    6 MB
|========                                                                                          |   8%    6 MB
|========                                                                                          |   8%    6 MB
|========                                                                                          |   8%    6 MB
|========                                                                                          |   8%    7 MB
|========                                                                                          |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |   9%    7 MB
|=========                                                                                         |  10%    7 MB
|==========                                                                                        |  10%    7 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  10%    8 MB
|==========                                                                                        |  11%    8 MB
|===========                                                                                       |  11%    8 MB
|===========                                                                                       |  11%    8 MB
|===========                                                                                       |  11%    8 MB
|===========                                                                                       |  11%    8 MB
|===========                                                                                       |  11%    9 MB
|===========                                                                                       |  11%    9 MB
|===========                                                                                       |  11%    9 MB
|===========                                                                                       |  11%    9 MB
|===========                                                                                       |  11%    9 MB
|===========                                                                                       |  12%    9 MB
|============                                                                                      |  12%    9 MB
|============                                                                                      |  12%    9 MB
|============                                                                                      |  12%    9 MB
|============                                                                                      |  12%    9 MB
|============                                                                                      |  12%    9 MB
|============                                                                                      |  12%    9 MB
|============                                                                                      |  12%   10 MB
|============                                                                                      |  12%   10 MB
|============                                                                                      |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  13%   10 MB
|=============                                                                                     |  14%   11 MB
|==============                                                                                    |  14%   11 MB
|==============                                                                                    |  14%   11 MB
|==============                                                                                    |  14%   11 MB
|==============                                                                                    |  14%   11 MB
|==============                                                                                    |  14%   11 MB
|==============                                                                                    |  14%   11 MB
|==============                                                                                    |  14%   11 MB
|==============                                                                                    |  15%   11 MB
|==============                                                                                    |  15%   11 MB
|===============                                                                                   |  15%   11 MB
|===============                                                                                   |  15%   12 MB
|===============                                                                                   |  15%   12 MB
|===============                                                                                   |  15%   12 MB
|===============                                                                                   |  15%   12 MB
|===============                                                                                   |  15%   12 MB
|===============                                                                                   |  15%   12 MB
|===============                                                                                   |  16%   12 MB
|================                                                                                  |  16%   12 MB
|================                                                                                  |  16%   12 MB
|================                                                                                  |  16%   12 MB
|================                                                                                  |  16%   12 MB
|================                                                                                  |  16%   13 MB
|================                                                                                  |  16%   13 MB
|================                                                                                  |  16%   13 MB
|================                                                                                  |  16%   13 MB
|================                                                                                  |  16%   13 MB
|================                                                                                  |  17%   13 MB
|=================                                                                                 |  17%   13 MB
|=================                                                                                 |  17%   13 MB
|=================                                                                                 |  17%   13 MB
|=================                                                                                 |  17%   13 MB
|=================                                                                                 |  17%   13 MB
|=================                                                                                 |  17%   13 MB
|=================                                                                                 |  17%   13 MB
|=================                                                                                 |  17%   14 MB
|=================                                                                                 |  17%   14 MB
|=================                                                                                 |  18%   14 MB
|=================                                                                                 |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  18%   14 MB
|==================                                                                                |  19%   15 MB
|===================                                                                               |  19%   15 MB
|===================                                                                               |  19%   15 MB
|===================                                                                               |  19%   15 MB
|===================                                                                               |  19%   15 MB
|===================                                                                               |  19%   15 MB
|===================                                                                               |  19%   15 MB
|===================                                                                               |  19%   15 MB
|===================                                                                               |  20%   15 MB
|====================                                                                              |  20%   15 MB
|====================                                                                              |  20%   15 MB
|====================                                                                              |  20%   16 MB
|====================                                                                              |  20%   16 MB
|====================                                                                              |  20%   16 MB
|====================                                                                              |  20%   16 MB
|====================                                                                              |  20%   16 MB
|====================                                                                              |  21%   16 MB
|====================                                                                              |  21%   16 MB
|=====================                                                                             |  21%   16 MB
|=====================                                                                             |  21%   16 MB
|=====================                                                                             |  21%   16 MB
|=====================                                                                             |  21%   17 MB
|=====================                                                                             |  21%   17 MB
|=====================                                                                             |  21%   17 MB
|=====================                                                                             |  22%   17 MB
|=====================                                                                             |  22%   17 MB
|======================                                                                            |  22%   17 MB
|======================                                                                            |  22%   17 MB
|======================                                                                            |  22%   17 MB
|======================                                                                            |  22%   17 MB
|======================                                                                            |  22%   17 MB
|======================                                                                            |  22%   17 MB
|======================                                                                            |  22%   17 MB
|======================                                                                            |  22%   18 MB
|======================                                                                            |  23%   18 MB
|======================                                                                            |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  23%   18 MB
|=======================                                                                           |  24%   18 MB
|=======================                                                                           |  24%   18 MB
|=======================                                                                           |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  24%   19 MB
|========================                                                                          |  25%   19 MB
|========================                                                                          |  25%   19 MB
|=========================                                                                         |  25%   19 MB
|=========================                                                                         |  25%   19 MB
|=========================                                                                         |  25%   20 MB
|=========================                                                                         |  25%   20 MB
|=========================                                                                         |  25%   20 MB
|=========================                                                                         |  25%   20 MB
|=========================                                                                         |  26%   20 MB
|=========================                                                                         |  26%   20 MB
|==========================                                                                        |  26%   20 MB
|==========================                                                                        |  26%   20 MB
|==========================                                                                        |  26%   20 MB
|==========================                                                                        |  26%   20 MB
|==========================                                                                        |  26%   21 MB
|==========================                                                                        |  26%   21 MB
|==========================                                                                        |  27%   21 MB
|==========================                                                                        |  27%   21 MB
|==========================                                                                        |  27%   21 MB
|===========================                                                                       |  27%   21 MB
|===========================                                                                       |  27%   21 MB
|===========================                                                                       |  27%   21 MB
|===========================                                                                       |  27%   21 MB
|===========================                                                                       |  27%   21 MB
|===========================                                                                       |  27%   21 MB
|===========================                                                                       |  28%   22 MB
|===========================                                                                       |  28%   22 MB
|============================                                                                      |  28%   22 MB
|============================                                                                      |  28%   22 MB
|============================                                                                      |  28%   22 MB
|============================                                                                      |  28%   22 MB
|============================                                                                      |  28%   22 MB
|============================                                                                      |  28%   22 MB
|============================                                                                      |  29%   22 MB
|============================                                                                      |  29%   22 MB
|============================                                                                      |  29%   22 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  29%   23 MB
|=============================                                                                     |  30%   23 MB
|=============================                                                                     |  30%   23 MB
|=============================                                                                     |  30%   23 MB
|==============================                                                                    |  30%   23 MB
|==============================                                                                    |  30%   23 MB
|==============================                                                                    |  30%   24 MB
|==============================                                                                    |  30%   24 MB
|==============================                                                                    |  30%   24 MB
|==============================                                                                    |  30%   24 MB
|==============================                                                                    |  31%   24 MB
|==============================                                                                    |  31%   24 MB
|===============================                                                                   |  31%   24 MB
|===============================                                                                   |  31%   24 MB
|===============================                                                                   |  31%   24 MB
|===============================                                                                   |  31%   24 MB
|===============================                                                                   |  31%   24 MB
|===============================                                                                   |  31%   25 MB
|===============================                                                                   |  32%   25 MB
|===============================                                                                   |  32%   25 MB
|===============================                                                                   |  32%   25 MB
|===============================                                                                   |  32%   25 MB
|================================                                                                  |  32%   25 MB
|================================                                                                  |  32%   25 MB
|================================                                                                  |  32%   25 MB
|================================                                                                  |  32%   25 MB
|================================                                                                  |  32%   25 MB
|================================                                                                  |  32%   25 MB
|================================                                                                  |  33%   25 MB
|================================                                                                  |  33%   26 MB
|================================                                                                  |  33%   26 MB
|=================================                                                                 |  33%   26 MB
|=================================                                                                 |  33%   26 MB
|=================================                                                                 |  33%   26 MB
|=================================                                                                 |  33%   26 MB
|=================================                                                                 |  33%   26 MB
|=================================                                                                 |  33%   26 MB
|=================================                                                                 |  34%   26 MB
|=================================                                                                 |  34%   26 MB
|=================================                                                                 |  34%   26 MB
|==================================                                                                |  34%   27 MB
|==================================                                                                |  34%   27 MB
|==================================                                                                |  34%   27 MB
|==================================                                                                |  34%   27 MB
|==================================                                                                |  34%   27 MB
|==================================                                                                |  34%   27 MB
|==================================                                                                |  35%   27 MB
|==================================                                                                |  35%   27 MB
|==================================                                                                |  35%   27 MB
|===================================                                                               |  35%   27 MB
|===================================                                                               |  35%   27 MB
|===================================                                                               |  35%   27 MB
|===================================                                                               |  35%   28 MB
|===================================                                                               |  35%   28 MB
|===================================                                                               |  35%   28 MB
|===================================                                                               |  35%   28 MB
|===================================                                                               |  36%   28 MB
|===================================                                                               |  36%   28 MB
|===================================                                                               |  36%   28 MB
|===================================                                                               |  36%   28 MB
|====================================                                                              |  36%   28 MB
|====================================                                                              |  36%   28 MB
|====================================                                                              |  36%   28 MB
|====================================                                                              |  36%   28 MB
|====================================                                                              |  36%   28 MB
|====================================                                                              |  37%   29 MB
|====================================                                                              |  37%   29 MB
|====================================                                                              |  37%   29 MB
|=====================================                                                             |  37%   29 MB
|=====================================                                                             |  37%   29 MB
|=====================================                                                             |  37%   29 MB
|=====================================                                                             |  37%   29 MB
|=====================================                                                             |  37%   29 MB
|=====================================                                                             |  38%   29 MB
|=====================================                                                             |  38%   29 MB
|=====================================                                                             |  38%   30 MB
|======================================                                                            |  38%   30 MB
|======================================                                                            |  38%   30 MB
|======================================                                                            |  38%   30 MB
|======================================                                                            |  38%   30 MB
|======================================                                                            |  38%   30 MB
|======================================                                                            |  38%   30 MB
|======================================                                                            |  39%   30 MB
|======================================                                                            |  39%   30 MB
|======================================                                                            |  39%   30 MB
|=======================================                                                           |  39%   30 MB
|=======================================                                                           |  39%   31 MB
|=======================================                                                           |  39%   31 MB
|=======================================                                                           |  39%   31 MB
|=======================================                                                           |  39%   31 MB
|=======================================                                                           |  40%   31 MB
|=======================================                                                           |  40%   31 MB
|=======================================                                                           |  40%   31 MB
|========================================                                                          |  40%   31 MB
|========================================                                                          |  40%   31 MB
|========================================                                                          |  40%   31 MB
|========================================                                                          |  40%   32 MB
|========================================                                                          |  40%   32 MB
|========================================                                                          |  41%   32 MB
|========================================                                                          |  41%   32 MB
|========================================                                                          |  41%   32 MB
|=========================================                                                         |  41%   32 MB
|=========================================                                                         |  41%   32 MB
|=========================================                                                         |  41%   32 MB
|=========================================                                                         |  41%   32 MB
|=========================================                                                         |  41%   32 MB
|=========================================                                                         |  42%   33 MB
|=========================================                                                         |  42%   33 MB
|=========================================                                                         |  42%   33 MB
|=========================================                                                         |  42%   33 MB
|=========================================                                                         |  42%   33 MB
|==========================================                                                        |  42%   33 MB
|==========================================                                                        |  42%   33 MB
|==========================================                                                        |  42%   33 MB
|==========================================                                                        |  42%   33 MB
|==========================================                                                        |  42%   33 MB
|==========================================                                                        |  42%   33 MB
|==========================================                                                        |  43%   33 MB
|==========================================                                                        |  43%   33 MB
|==========================================                                                        |  43%   33 MB
|==========================================                                                        |  43%   34 MB
|===========================================                                                       |  43%   34 MB
|===========================================                                                       |  43%   34 MB
|===========================================                                                       |  43%   34 MB
|===========================================                                                       |  43%   34 MB
|===========================================                                                       |  43%   34 MB
|===========================================                                                       |  43%   34 MB
|===========================================                                                       |  44%   34 MB
|===========================================                                                       |  44%   34 MB
|===========================================                                                       |  44%   34 MB
|===========================================                                                       |  44%   34 MB
|============================================                                                      |  44%   34 MB
|============================================                                                      |  44%   35 MB
|============================================                                                      |  44%   35 MB
|============================================                                                      |  44%   35 MB
|============================================                                                      |  44%   35 MB
|============================================                                                      |  44%   35 MB
|============================================                                                      |  45%   35 MB
|============================================                                                      |  45%   35 MB
|============================================                                                      |  45%   35 MB
|============================================                                                      |  45%   35 MB
|=============================================                                                     |  45%   35 MB
|=============================================                                                     |  45%   35 MB
|=============================================                                                     |  45%   35 MB
|=============================================                                                     |  45%   35 MB
|=============================================                                                     |  45%   36 MB
|=============================================                                                     |  45%   36 MB
|=============================================                                                     |  46%   36 MB
|=============================================                                                     |  46%   36 MB
|=============================================                                                     |  46%   36 MB
|=============================================                                                     |  46%   36 MB
|==============================================                                                    |  46%   36 MB
|==============================================                                                    |  46%   36 MB
|==============================================                                                    |  46%   36 MB
|==============================================                                                    |  46%   36 MB
|==============================================                                                    |  46%   36 MB
|==============================================                                                    |  47%   36 MB
|==============================================                                                    |  47%   36 MB
|==============================================                                                    |  47%   37 MB
|==============================================                                                    |  47%   37 MB
|==============================================                                                    |  47%   37 MB
|===============================================                                                   |  47%   37 MB
|===============================================                                                   |  47%   37 MB
|===============================================                                                   |  47%   37 MB
|===============================================                                                   |  47%   37 MB
|===============================================                                                   |  47%   37 MB
|===============================================                                                   |  47%   37 MB
|===============================================                                                   |  48%   37 MB
|===============================================                                                   |  48%   37 MB
|===============================================                                                   |  48%   37 MB
|================================================                                                  |  48%   38 MB
|================================================                                                  |  48%   38 MB
|================================================                                                  |  48%   38 MB
|================================================                                                  |  48%   38 MB
|================================================                                                  |  48%   38 MB
|================================================                                                  |  49%   38 MB
|================================================                                                  |  49%   38 MB
|================================================                                                  |  49%   38 MB
|================================================                                                  |  49%   38 MB
|=================================================                                                 |  49%   38 MB
|=================================================                                                 |  49%   39 MB
|=================================================                                                 |  49%   39 MB
|=================================================                                                 |  49%   39 MB
|=================================================                                                 |  50%   39 MB
|=================================================                                                 |  50%   39 MB
|=================================================                                                 |  50%   39 MB
|=================================================                                                 |  50%   39 MB
|==================================================                                                |  50%   39 MB
|==================================================                                                |  50%   39 MB
|==================================================                                                |  50%   39 MB
|==================================================                                                |  50%   39 MB
|==================================================                                                |  51%   40 MB
|==================================================                                                |  51%   40 MB
|==================================================                                                |  51%   40 MB
|==================================================                                                |  51%   40 MB
|==================================================                                                |  51%   40 MB
|===================================================                                               |  51%   40 MB
|===================================================                                               |  51%   40 MB
|===================================================                                               |  51%   40 MB
|===================================================                                               |  51%   40 MB
|===================================================                                               |  52%   40 MB
|===================================================                                               |  52%   41 MB
|===================================================                                               |  52%   41 MB
|===================================================                                               |  52%   41 MB
|====================================================                                              |  52%   41 MB
|====================================================                                              |  52%   41 MB
|====================================================                                              |  52%   41 MB
|====================================================                                              |  52%   41 MB
|====================================================                                              |  53%   41 MB
|====================================================                                              |  53%   41 MB
|====================================================                                              |  53%   41 MB
|====================================================                                              |  53%   41 MB
|====================================================                                              |  53%   42 MB
|=====================================================                                             |  53%   42 MB
|=====================================================                                             |  53%   42 MB
|=====================================================                                             |  53%   42 MB
|=====================================================                                             |  54%   42 MB
|=====================================================                                             |  54%   42 MB
|=====================================================                                             |  54%   42 MB
|=====================================================                                             |  54%   42 MB
|=====================================================                                             |  54%   42 MB
|======================================================                                            |  54%   42 MB
|======================================================                                            |  54%   43 MB
|======================================================                                            |  54%   43 MB
|======================================================                                            |  55%   43 MB
|======================================================                                            |  55%   43 MB
|======================================================                                            |  55%   43 MB
|======================================================                                            |  55%   43 MB
|======================================================                                            |  55%   43 MB
|======================================================                                            |  55%   43 MB
|=======================================================                                           |  55%   43 MB
|=======================================================                                           |  55%   43 MB
|=======================================================                                           |  55%   43 MB
|=======================================================                                           |  55%   43 MB
|=======================================================                                           |  56%   43 MB
|=======================================================                                           |  56%   44 MB
|=======================================================                                           |  56%   44 MB
|=======================================================                                           |  56%   44 MB
|=======================================================                                           |  56%   44 MB
|=======================================================                                           |  56%   44 MB
|========================================================                                          |  56%   44 MB
|========================================================                                          |  56%   44 MB
|========================================================                                          |  56%   44 MB
|========================================================                                          |  56%   44 MB
|========================================================                                          |  57%   44 MB
|========================================================                                          |  57%   44 MB
|========================================================                                          |  57%   44 MB
|========================================================                                          |  57%   44 MB
|========================================================                                          |  57%   45 MB
|========================================================                                          |  57%   45 MB
|=========================================================                                         |  57%   45 MB
|=========================================================                                         |  57%   45 MB
|=========================================================                                         |  57%   45 MB
|=========================================================                                         |  57%   45 MB
|=========================================================                                         |  57%   45 MB
|=========================================================                                         |  58%   45 MB
|=========================================================                                         |  58%   45 MB
|=========================================================                                         |  58%   45 MB
|=========================================================                                         |  58%   45 MB
|==========================================================                                        |  58%   46 MB
|==========================================================                                        |  58%   46 MB
|==========================================================                                        |  58%   46 MB
|==========================================================                                        |  58%   46 MB
|==========================================================                                        |  59%   46 MB
|==========================================================                                        |  59%   46 MB
|==========================================================                                        |  59%   46 MB
|==========================================================                                        |  59%   46 MB
|==========================================================                                        |  59%   46 MB
|===========================================================                                       |  59%   46 MB
|===========================================================                                       |  59%   46 MB
|===========================================================                                       |  59%   47 MB
|===========================================================                                       |  60%   47 MB
|===========================================================                                       |  60%   47 MB
|===========================================================                                       |  60%   47 MB
|===========================================================                                       |  60%   47 MB
|===========================================================                                       |  60%   47 MB
|===========================================================                                       |  60%   47 MB
|============================================================                                      |  60%   47 MB
|============================================================                                      |  60%   47 MB
|============================================================                                      |  60%   47 MB
|============================================================                                      |  60%   47 MB
|============================================================                                      |  61%   47 MB
|============================================================                                      |  61%   48 MB
|============================================================                                      |  61%   48 MB
|============================================================                                      |  61%   48 MB
|============================================================                                      |  61%   48 MB
|============================================================                                      |  61%   48 MB
|=============================================================                                     |  61%   48 MB
|=============================================================                                     |  61%   48 MB
|=============================================================                                     |  61%   48 MB
|=============================================================                                     |  61%   48 MB
|=============================================================                                     |  62%   48 MB
|=============================================================                                     |  62%   48 MB
|=============================================================                                     |  62%   48 MB
|=============================================================                                     |  62%   48 MB
|=============================================================                                     |  62%   49 MB
|=============================================================                                     |  62%   49 MB
|==============================================================                                    |  62%   49 MB
|==============================================================                                    |  62%   49 MB
|==============================================================                                    |  62%   49 MB
|==============================================================                                    |  62%   49 MB
|==============================================================                                    |  63%   49 MB
|==============================================================                                    |  63%   49 MB
|==============================================================                                    |  63%   49 MB
|==============================================================                                    |  63%   49 MB
|==============================================================                                    |  63%   49 MB
|==============================================================                                    |  63%   49 MB
|===============================================================                                   |  63%   50 MB
|===============================================================                                   |  63%   50 MB
|===============================================================                                   |  63%   50 MB
|===============================================================                                   |  63%   50 MB
|===============================================================                                   |  64%   50 MB
|===============================================================                                   |  64%   50 MB
|===============================================================                                   |  64%   50 MB
|===============================================================                                   |  64%   50 MB
|===============================================================                                   |  64%   50 MB
|===============================================================                                   |  64%   50 MB
|================================================================                                  |  64%   50 MB
|================================================================                                  |  64%   50 MB
|================================================================                                  |  64%   50 MB
|================================================================                                  |  65%   51 MB
|================================================================                                  |  65%   51 MB
|================================================================                                  |  65%   51 MB
|================================================================                                  |  65%   51 MB
|================================================================                                  |  65%   51 MB
|================================================================                                  |  65%   51 MB
|================================================================                                  |  65%   51 MB
|=================================================================                                 |  65%   51 MB
|=================================================================                                 |  65%   51 MB
|=================================================================                                 |  65%   51 MB
|=================================================================                                 |  66%   51 MB
|=================================================================                                 |  66%   51 MB
|=================================================================                                 |  66%   52 MB
|=================================================================                                 |  66%   52 MB
|=================================================================                                 |  66%   52 MB
|==================================================================                                |  66%   52 MB
|==================================================================                                |  66%   52 MB
|==================================================================                                |  66%   52 MB
|==================================================================                                |  67%   52 MB
|==================================================================                                |  67%   52 MB
|==================================================================                                |  67%   52 MB
|==================================================================                                |  67%   52 MB
|==================================================================                                |  67%   53 MB
|==================================================================                                |  67%   53 MB
|===================================================================                               |  67%   53 MB
|===================================================================                               |  67%   53 MB
|===================================================================                               |  68%   53 MB
|===================================================================                               |  68%   53 MB
|===================================================================                               |  68%   53 MB
|===================================================================                               |  68%   53 MB
|===================================================================                               |  68%   53 MB
|===================================================================                               |  68%   53 MB
|====================================================================                              |  68%   54 MB
|====================================================================                              |  68%   54 MB
|====================================================================                              |  69%   54 MB
|====================================================================                              |  69%   54 MB
|====================================================================                              |  69%   54 MB
|====================================================================                              |  69%   54 MB
|====================================================================                              |  69%   54 MB
|====================================================================                              |  69%   54 MB
|=====================================================================                             |  69%   54 MB
|=====================================================================                             |  69%   54 MB
|=====================================================================                             |  70%   55 MB
|=====================================================================                             |  70%   55 MB
|=====================================================================                             |  70%   55 MB
|=====================================================================                             |  70%   55 MB
|=====================================================================                             |  70%   55 MB
|=====================================================================                             |  70%   55 MB
|======================================================================                            |  70%   55 MB
|======================================================================                            |  70%   55 MB
|======================================================================                            |  71%   55 MB
|======================================================================                            |  71%   55 MB
|======================================================================                            |  71%   55 MB
|======================================================================                            |  71%   56 MB
|======================================================================                            |  71%   56 MB
|======================================================================                            |  71%   56 MB
|=======================================================================                           |  71%   56 MB
|=======================================================================                           |  71%   56 MB
|=======================================================================                           |  71%   56 MB
|=======================================================================                           |  72%   56 MB
|=======================================================================                           |  72%   56 MB
|=======================================================================                           |  72%   56 MB
|=======================================================================                           |  72%   56 MB
|=======================================================================                           |  72%   57 MB
|=======================================================================                           |  72%   57 MB
|========================================================================                          |  72%   57 MB
|========================================================================                          |  72%   57 MB
|========================================================================                          |  73%   57 MB
|========================================================================                          |  73%   57 MB
|========================================================================                          |  73%   57 MB
|========================================================================                          |  73%   57 MB
|========================================================================                          |  73%   57 MB
|========================================================================                          |  73%   57 MB
|========================================================================                          |  73%   57 MB
|=========================================================================                         |  73%   57 MB
|=========================================================================                         |  73%   58 MB
|=========================================================================                         |  74%   58 MB
|=========================================================================                         |  74%   58 MB
|=========================================================================                         |  74%   58 MB
|=========================================================================                         |  74%   58 MB
|=========================================================================                         |  74%   58 MB
|=========================================================================                         |  74%   58 MB
|=========================================================================                         |  74%   58 MB
|==========================================================================                        |  74%   58 MB
|==========================================================================                        |  74%   58 MB
|==========================================================================                        |  75%   58 MB
|==========================================================================                        |  75%   59 MB
|==========================================================================                        |  75%   59 MB
|==========================================================================                        |  75%   59 MB
|==========================================================================                        |  75%   59 MB
|==========================================================================                        |  75%   59 MB
|===========================================================================                       |  75%   59 MB
|===========================================================================                       |  75%   59 MB
|===========================================================================                       |  76%   59 MB
|===========================================================================                       |  76%   59 MB
|===========================================================================                       |  76%   59 MB
|===========================================================================                       |  76%   59 MB
|===========================================================================                       |  76%   60 MB
|===========================================================================                       |  76%   60 MB
|===========================================================================                       |  76%   60 MB
|============================================================================                      |  76%   60 MB
|============================================================================                      |  76%   60 MB
|============================================================================                      |  76%   60 MB
|============================================================================                      |  77%   60 MB
|============================================================================                      |  77%   60 MB
|============================================================================                      |  77%   60 MB
|============================================================================                      |  77%   60 MB
|============================================================================                      |  77%   60 MB
|============================================================================                      |  77%   60 MB
|============================================================================                      |  77%   61 MB
|=============================================================================                     |  77%   61 MB
|=============================================================================                     |  77%   61 MB
|=============================================================================                     |  77%   61 MB
|=============================================================================                     |  78%   61 MB
|=============================================================================                     |  78%   61 MB
|=============================================================================                     |  78%   61 MB
|=============================================================================                     |  78%   61 MB
|=============================================================================                     |  78%   61 MB
|=============================================================================                     |  78%   61 MB
|=============================================================================                     |  78%   61 MB
|==============================================================================                    |  78%   61 MB
|==============================================================================                    |  78%   61 MB
|==============================================================================                    |  79%   62 MB
|==============================================================================                    |  79%   62 MB
|==============================================================================                    |  79%   62 MB
|==============================================================================                    |  79%   62 MB
|==============================================================================                    |  79%   62 MB
|==============================================================================                    |  79%   62 MB
|==============================================================================                    |  79%   62 MB
|===============================================================================                   |  79%   62 MB
|===============================================================================                   |  79%   62 MB
|===============================================================================                   |  80%   62 MB
|===============================================================================                   |  80%   62 MB
|===============================================================================                   |  80%   63 MB
|===============================================================================                   |  80%   63 MB
|===============================================================================                   |  80%   63 MB
|===============================================================================                   |  80%   63 MB
|================================================================================                  |  80%   63 MB
|================================================================================                  |  80%   63 MB
|================================================================================                  |  81%   63 MB
|================================================================================                  |  81%   63 MB
|================================================================================                  |  81%   63 MB
|================================================================================                  |  81%   63 MB
|================================================================================                  |  81%   64 MB
|================================================================================                  |  81%   64 MB
|=================================================================================                 |  81%   64 MB
|=================================================================================                 |  81%   64 MB
|=================================================================================                 |  82%   64 MB
|=================================================================================                 |  82%   64 MB
|=================================================================================                 |  82%   64 MB
|=================================================================================                 |  82%   64 MB
|=================================================================================                 |  82%   64 MB
|=================================================================================                 |  82%   64 MB
|==================================================================================                |  82%   65 MB
|==================================================================================                |  82%   65 MB
|==================================================================================                |  83%   65 MB
|==================================================================================                |  83%   65 MB
|==================================================================================                |  83%   65 MB
|==================================================================================                |  83%   65 MB
|==================================================================================                |  83%   65 MB
|==================================================================================                |  83%   65 MB
|==================================================================================                |  83%   65 MB
|==================================================================================                |  83%   65 MB
|===================================================================================               |  83%   65 MB
|===================================================================================               |  84%   65 MB
|===================================================================================               |  84%   66 MB
|===================================================================================               |  84%   66 MB
|===================================================================================               |  84%   66 MB
|===================================================================================               |  84%   66 MB
|===================================================================================               |  84%   66 MB
|===================================================================================               |  84%   66 MB
|===================================================================================               |  84%   66 MB
|===================================================================================               |  84%   66 MB
|====================================================================================              |  84%   66 MB
|====================================================================================              |  84%   66 MB
|====================================================================================              |  85%   66 MB
|====================================================================================              |  85%   66 MB
|====================================================================================              |  85%   66 MB
|====================================================================================              |  85%   67 MB
|====================================================================================              |  85%   67 MB
|====================================================================================              |  85%   67 MB
|====================================================================================              |  85%   67 MB
|====================================================================================              |  85%   67 MB
|=====================================================================================             |  85%   67 MB
|=====================================================================================             |  86%   67 MB
|=====================================================================================             |  86%   67 MB
|=====================================================================================             |  86%   67 MB
|=====================================================================================             |  86%   67 MB
|=====================================================================================             |  86%   67 MB
|=====================================================================================             |  86%   68 MB
|=====================================================================================             |  86%   68 MB
|======================================================================================            |  86%   68 MB
|======================================================================================            |  87%   68 MB
|======================================================================================            |  87%   68 MB
|======================================================================================            |  87%   68 MB
|======================================================================================            |  87%   68 MB
|======================================================================================            |  87%   68 MB
|======================================================================================            |  87%   68 MB
|======================================================================================            |  87%   68 MB
|=======================================================================================           |  87%   69 MB
|=======================================================================================           |  88%   69 MB
|=======================================================================================           |  88%   69 MB
|=======================================================================================           |  88%   69 MB
|=======================================================================================           |  88%   69 MB
|=======================================================================================           |  88%   69 MB
|=======================================================================================           |  88%   69 MB
|=======================================================================================           |  88%   69 MB
|========================================================================================          |  88%   69 MB
|========================================================================================          |  89%   69 MB
|========================================================================================          |  89%   70 MB
|========================================================================================          |  89%   70 MB
|========================================================================================          |  89%   70 MB
|========================================================================================          |  89%   70 MB
|========================================================================================          |  89%   70 MB
|========================================================================================          |  89%   70 MB
|========================================================================================          |  89%   70 MB
|=========================================================================================         |  89%   70 MB
|=========================================================================================         |  90%   70 MB
|=========================================================================================         |  90%   70 MB
|=========================================================================================         |  90%   70 MB
|=========================================================================================         |  90%   70 MB
|=========================================================================================         |  90%   71 MB
|=========================================================================================         |  90%   71 MB
|=========================================================================================         |  90%   71 MB
|=========================================================================================         |  90%   71 MB
|=========================================================================================         |  90%   71 MB
|==========================================================================================        |  91%   71 MB
|==========================================================================================        |  91%   71 MB
|==========================================================================================        |  91%   71 MB
|==========================================================================================        |  91%   71 MB
|==========================================================================================        |  91%   71 MB
|==========================================================================================        |  91%   71 MB
|==========================================================================================        |  91%   71 MB
|==========================================================================================        |  91%   72 MB
|==========================================================================================        |  91%   72 MB
|===========================================================================================       |  91%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|===========================================================================================       |  92%   72 MB
|============================================================================================      |  93%   73 MB
|============================================================================================      |  93%   73 MB
|============================================================================================      |  93%   73 MB
|============================================================================================      |  93%   73 MB
|============================================================================================      |  93%   73 MB
|============================================================================================      |  93%   73 MB
|============================================================================================      |  93%   73 MB
|============================================================================================      |  93%   73 MB
|=============================================================================================     |  94%   73 MB
|=============================================================================================     |  94%   73 MB
|=============================================================================================     |  94%   74 MB
|=============================================================================================     |  94%   74 MB
|=============================================================================================     |  94%   74 MB
|=============================================================================================     |  94%   74 MB
|=============================================================================================     |  94%   74 MB
|==============================================================================================    |  94%   74 MB
|==============================================================================================    |  95%   74 MB
|==============================================================================================    |  95%   74 MB
|==============================================================================================    |  95%   74 MB
|==============================================================================================    |  95%   74 MB
|==============================================================================================    |  95%   75 MB
|==============================================================================================    |  95%   75 MB
|==============================================================================================    |  95%   75 MB
|===============================================================================================   |  95%   75 MB
|===============================================================================================   |  96%   75 MB
|===============================================================================================   |  96%   75 MB
|===============================================================================================   |  96%   75 MB
|===============================================================================================   |  96%   75 MB
|===============================================================================================   |  96%   75 MB
|===============================================================================================   |  96%   75 MB
|===============================================================================================   |  96%   76 MB
|================================================================================================  |  96%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================  |  97%   76 MB
|================================================================================================= |  98%   77 MB
|================================================================================================= |  98%   77 MB
|================================================================================================= |  98%   77 MB
|================================================================================================= |  98%   77 MB
|================================================================================================= |  98%   77 MB
|================================================================================================= |  98%   77 MB
|================================================================================================= |  98%   77 MB
|================================================================================================= |  98%   77 MB
|==================================================================================================|  99%   77 MB
|==================================================================================================|  99%   77 MB
|==================================================================================================|  99%   77 MB
|==================================================================================================|  99%   77 MB
|==================================================================================================|  99%   78 MB
|==================================================================================================|  99%   78 MB
|==================================================================================================|  99%   78 MB
|==================================================================================================|  99%   78 MB
|==================================================================================================|  99%   78 MB
|==================================================================================================|  99%   78 MB
|===================================================================================================| 100%   78 MB
|===================================================================================================| 100%   78 MB
Parsed with column specification:
cols(
  measure_id = col_integer(),
  measure_name = col_character(),
  location_id = col_integer(),
  location_name = col_character(),
  sex_id = col_integer(),
  sex_name = col_character(),
  age_id = col_integer(),
  age_name = col_character(),
  cause_id = col_integer(),
  cause_name = col_character(),
  rei_id = col_integer(),
  rei_name = col_character(),
  metric_id = col_integer(),
  metric_name = col_character(),
  year = col_integer(),
  val = col_double(),
  upper = col_double(),
  lower = col_double()
)
dta
glimpse(dta)
Observations: 501,900
Variables: 18
$ measure_id    <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ...
$ measure_name  <chr> "DALYs (Disability-Adjusted Life Years)", "DALYs (Disability-Adjusted Life Years)", "DA...
$ location_id   <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
$ location_name <chr> "Global", "Global", "Global", "Global", "Global", "Global", "Global", "Global", "Global...
$ sex_id        <int> 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, ...
$ sex_name      <chr> "Male", "Female", "Male", "Female", "Male", "Female", "Male", "Female", "Male", "Female...
$ age_id        <int> 1, 1, 1, 1, 1, 1, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 2...
$ age_name      <chr> "Under 5", "Under 5", "Under 5", "Under 5", "Under 5", "Under 5", "All Ages", "All Ages...
$ cause_id      <int> 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 29...
$ cause_name    <chr> "All causes", "All causes", "All causes", "All causes", "All causes", "All causes", "Al...
$ rei_id        <int> 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 16...
$ rei_name      <chr> "Occupational exposure to silica", "Occupational exposure to silica", "Occupational exp...
$ metric_id     <int> 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, ...
$ metric_name   <chr> "Number", "Number", "Percent", "Percent", "Rate", "Rate", "Number", "Number", "Percent"...
$ year          <int> 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 199...
$ val           <dbl> 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 1.0...
$ upper         <dbl> 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 1.4...
$ lower         <dbl> 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 5.9...

The _id suffix columns can be used to join to the lookup tables. In this case for risk (by rei_id)

lookup <- readxl::read_excel("raw_data/IHME_GBD_2016_CODEBOOK/IHME_GBD_2016_REI_HIERARCHY_Y2018M04D26.XLSX")
lookup
glimpse(lookup)
Observations: 144
Variables: 5
$ rei_id     <dbl> 169, 202, 203, 104, 171, 191, 82, 83, 84, 238, 85, 86, 87, 88, 89, 90, 91, 126, 127, 150, ...
$ rei_name   <chr> "All risk factors", "Environmental/occupational risks", "Behavioral risks", "Metabolic ris...
$ parent_id  <dbl> 169, 169, 169, 169, 171, 191, 202, 82, 82, 82, 202, 85, 85, 85, 202, 89, 89, 202, 126, 127...
$ level      <dbl> 0, 1, 1, 1, 0, 0, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...
$ sort_order <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,...

In this example I’ll join then filter only level 1 categories in the rei hierarchy

dta %>% 
  left_join(lookup) %>% 
  filter(level == 1) -> dta_lvl1
Joining, by = c("rei_id", "rei_name")

Now to start exploring: age-standardised, global, deaths, by lvl 1 risk factor and gender

dta_lvl1 %>%
  filter(measure_name == "Deaths") %>% 
  filter(location_name == "Global") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  filter(cause_name == "All causes") %>% 
  select(year, sex = sex_name, risk_factor = rei_name, death_rate = val) %>% 
  ggplot(aes(x = year, y = death_rate, linetype = sex, colour = sex)) + 
  facet_wrap(~ risk_factor) +
  geom_line()

Now to do the same by SDI

dta_lvl1 %>%
  filter(measure_name == "Deaths") %>% 
  filter(location_name != "Global") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  filter(cause_name == "All causes") %>% 
  select(year, sex = sex_name, sdi = location_name, risk_factor = rei_name, death_rate = val) %>% 
  mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T)) %>% 
  ggplot(aes(x = year, y = death_rate, linetype = sex, colour = sex)) + 
  facet_grid(risk_factor ~ sdi) +
  geom_line()

And now let’s see what this implies for relative inequalities

dta_lvl1 %>%
    filter(measure_name == "Deaths") %>% 
    filter(location_name != "Global") %>% 
    filter(age_name == "Age-standardized") %>% 
    filter(metric_name == "Rate") %>% 
    filter(cause_name == "All causes") %>% 
    select(year, sex = sex_name, sdi = location_name, risk_factor = rei_name, death_rate = val) %>% 
    mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
    mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T)) %>% spread(sex, death_rate) %>% mutate(ratio = Male / Female) %>% 
  ggplot(aes(x = year, y = ratio, colour = risk_factor)) + 
  geom_line() + 
  facet_grid(.  ~ sdi) + 
  geom_hline(yintercept = 1)

DALY decomposition

Let’s look at the contribution of different risk factors to DALY difference

dta_lvl1 %>% 
  filter(measure_name == "DALYs (Disability-Adjusted Life Years)") %>% 
  filter(location_name != "Global") %>% 
  filter(cause_name == "All causes") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  select(year, sex = sex_name, sdi = location_name, risk_factor = rei_name, daly_rate = val) %>% 
  mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T)) %>% 
  ggplot(aes(x = year, y = daly_rate, fill = risk_factor), colour = "black") + 
  geom_area() + 
  facet_grid(sdi~sex)

Now proportion of all DALYs attributable to each risk factor by year and SDI

dta_lvl1 %>% 
  filter(measure_name == "DALYs (Disability-Adjusted Life Years)") %>% 
  filter(location_name != "Global") %>% 
  filter(cause_name == "All causes") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  select(year, sex = sex_name, sdi = location_name, risk_factor = rei_name, daly_rate = val) %>% 
  mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T)) %>% 
  group_by(year, sex, sdi) %>% 
  mutate(total = sum(daly_rate)) %>% 
  mutate(proportion_total = daly_rate / total) %>% 
  ungroup() %>%
  ggplot(aes(x = year, y = proportion_total, fill = risk_factor), colour = "black") + 
  geom_area() + 
  facet_grid(sdi~sex)

Prop total deaths attributable to diff risk factors

Now proportion of total deaths

by_factor <- dta_lvl1 %>% 
  filter(measure_name == "Deaths") %>% 
  select(-measure_name, -measure_id) %>% 
  filter(location_name != "Global") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  filter(cause_name == "All causes") %>% 
  select(year, sex = sex_name, sdi = location_name, rei = rei_name, rate = val) %>%   mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T))
overall <- dta %>% 
  filter(rei_name == "All risk factors") %>% 
  filter(measure_name == "Deaths") %>% 
  select(-measure_name, -measure_id) %>% 
  filter(location_name != "Global") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  filter(cause_name == "All causes") %>% 
  select(year, sex = sex_name, sdi = location_name, rei = rei_name, rate = val) %>%   mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T))
joined <- bind_rows(by_factor, overall)
rm(by_factor, overall)

Unfortunately it seems ‘all risk factors’ is not the same as ‘total’, i.e. the absolute differences in age-standardised death rates from each of the three level 1 risk factors do not add up to the ‘all risk factors’ absolute difference

joined %>% 
  spread(sex, rate) %>% 
  mutate(abs_diff = Male - Female) %>% 
  group_by(year, sdi) %>% 
  mutate(perc_of_abs_diff = 100 * abs_diff / abs_diff[rei=="All risk factors"]) %>% 
  summarise(discrepancy = sum(perc_of_abs_diff[rei != "All risk factors"]) - 100) %>% 
  ungroup() %>% 
  ggplot(aes(x = year, y = discrepancy, colour = sdi)) + 
  geom_line() 

So, the risk factors might not be mutually exclusive and exhaustive. Let’s take middle SDI in 2000 as an example

joined %>% 
  filter(sdi == "Middle") %>% 
  filter(year == 2000) %>% 
  spread(sex, rate) %>% 
  mutate(abs_diff = Male - Female) %>% 
  group_by(year, sdi) %>% 
  mutate(perc_of_abs_diff = 100 * abs_diff / abs_diff[rei=="All risk factors"]) 

So, the total of the three bottom rows adds up to around 160, when I might expect them to add to 100. A simple decomposition assumption doesn’t seem to apply when using the ‘all risk factors’ designation as total.

To try to account for this let’s look at a different dataset, with:

Let’s try to grab this data with a new query

The query link is here.

url_body <- "http://s3.healthdata.org/gbd-api-2016-production/c9bf1a5197bf46a966c1467c3103e8a9_files"
url_head <- "IHME-GBD_2016_DATA-c9bf1a51-"
outdir <- "raw_data/rate_all_cause"

download_completed_request(url_body, url_head, outdir, flush = T)

And now to load this file

dta_total <- read_csv("raw_data/rate_all_cause/1.csv")
Parsed with column specification:
cols(
  measure = col_character(),
  location = col_character(),
  sex = col_character(),
  age = col_character(),
  cause = col_character(),
  metric = col_character(),
  year = col_integer(),
  val = col_double(),
  upper = col_double(),
  lower = col_double()
)
by_factor <- dta_lvl1 %>% 
  filter(measure_name == "Deaths") %>% 
  select(-measure_name, -measure_id) %>% 
  filter(location_name != "Global") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  filter(cause_name == "All causes") %>% 
  select(year, sex = sex_name, sdi = location_name, rei = rei_name, rate = val) %>%   mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T))
overall <- dta_total %>% filter(location != "Global") %>% mutate(rei = "total") %>% mutate(sdi = stringr::str_replace(location, " SDI", "")) %>% 
    mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T)) %>% select(year, sex, sdi, rei, rate = val)

Let’s see if the totals add up this time. The three level 1 risk factors are shown as stacked areas, and the total is shown as a black line…

by_factor %>% 
  ggplot(aes(x = year, y = rate, fill = rei)) + 
  geom_area() + 
  facet_grid(sex ~ sdi) +
  geom_line(aes(x = year, y = rate), inherit.aes = F, data = overall)

So, there is still discrepancy, which seems to be largest for low SDI, and smallest for high-middle SDI, but this might be decomposable subject to some assumptions.

Let’s now compare with previous attempt at an ‘overall’ estimate (based on ‘all risk factors’). In the following this is added as a black dashed line. We might expect the dashed and solid lines to be the same, but are they?

overall2 <- dta %>% 
  filter(rei_name == "All risk factors") %>% 
  filter(measure_name == "Deaths") %>% 
  select(-measure_name, -measure_id) %>% 
  filter(location_name != "Global") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  filter(cause_name == "All causes") %>% 
  select(year, sex = sex_name, sdi = location_name, rei = rei_name, rate = val) %>%   mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T))
by_factor %>% 
  ggplot(aes(x = year, y = rate, fill = rei)) + 
  geom_area() + 
  facet_grid(sex ~ sdi) +
  geom_line(aes(x = year, y = rate), inherit.aes = F, data = overall) +
  geom_line(aes(x = year, y = rate), inherit.aes = F, data = overall2, linetype = "dashed")

So, there are clear differences between age-standardised rates drawn from all causes (solid line), and age-standardised rates drawm from all risk factors (dashed lines), with the latter below the former. Again, this raises questions about how to perform a decomposition into risk factors, the effect of age-standardization, and so on.

Level 1 internal decomposition

Let’s not use level 0 for decomposing level 1 etc, and instead just produce estimates of total by summing up level 1 risks. Then, do the same for level 2.

contributions <- by_factor %>% 
  inner_join(
    by_factor %>% 
      group_by(year, sex, sdi) %>% 
      summarise(total_rate = sum(rate)) %>% 
      ungroup()
    ) %>% 
  group_by(year, sdi) %>% 
  mutate(abs_sex_diff = total_rate[sex == "Male"][1] - total_rate[sex == "Female"][1]) %>% 
  group_by(year, sdi, rei) %>% 
  mutate(rei_abs_sex_diff = rate[sex == "Male"] - rate[sex == "Female"]) %>% 
  ungroup() %>% 
  mutate(contribution = 100 * rei_abs_sex_diff / abs_sex_diff)
Joining, by = c("year", "sex", "sdi")

Now to plot the contribution over time by SDI

contributions %>% 
  select(year, sex, sdi, rei, contribution) %>% 
  distinct() %>% 
  ggplot(aes(x = year, y= contribution, colour = rei)) + 
  geom_line() + 
  facet_wrap(~sdi)

Let’s think again about how to present this in the case of three risk factors, such that it could be scaled up to more factors

by_factor %>% 
  spread(sex, rate) %>% 
  mutate(diff_abs = Male - Female) %>% 
  group_by(year, sdi) %>%
  mutate(diff_cumulative = cumsum(diff_abs)) -> cumulative_contributions

Now to plot for two years, 1990 and 2010

# use geom_segement
cumulative_contributions %>% 
    filter(year %in% c(1990, 2010)) %>% 
    mutate(start_pos = diff_cumulative - diff_abs) %>% 
    mutate(is_increasing = diff_cumulative > start_pos) %>% 
  group_by(year, sdi) %>% 
  mutate(max_cumulative = diff_cumulative[length(diff_cumulative)]) %>% 
  ungroup() %>% 
  ggplot(aes(x = start_pos, xend = diff_cumulative, y = rei, yend = rei, colour = is_increasing)) + 
  geom_segment( arrow = arrow(length = unit(0.2, "npc"))) + 
  facet_grid(sdi ~ year) +
  geom_vline(xintercept = 0) + 
  geom_vline(aes(xintercept = max_cumulative), linetype = "dashed") + 
  guides(colour = FALSE) + 
  labs(x = "Gender difference in rates", y = "Risk factors (level 1)", title = "Contribution of risk factors to gender differences in all-cause mortality rates", subtitle = "Age-standardised rates per 100 000", caption = "Source: GBD")
ggsave("figures/contribution_of_level1_riskfactors_death_rate.png", height = 30, width = 30, units = "cm", dpi = 300)

This seems to work as a visualisation. Let’s try to scale up to level 2

by_factor_l2 <- dta %>% 
  left_join(lookup) %>% 
  filter(level == 2)  %>% 
  filter(measure_name == "Deaths") %>% 
  select(-measure_name, -measure_id) %>% 
  filter(location_name != "Global") %>% 
  filter(age_name == "Age-standardized") %>% 
  filter(metric_name == "Rate") %>% 
  filter(cause_name == "All causes") %>% 
  select(year, sex = sex_name, sdi = location_name, rei = rei_name, rate = val) %>%   mutate(sdi = stringr::str_replace(sdi, " SDI", "")) %>% 
  mutate(sdi = factor(sdi, levels = c("Low", "Low-middle", "Middle", "High-middle", "High"), ordered = T)) 
Joining, by = c("rei_id", "rei_name")
by_factor_l2 %>% 
  spread(sex, rate) %>% 
  mutate(diff_abs = Male - Female) %>% 
  group_by(year, sdi) %>%
  mutate(diff_cumulative = cumsum(diff_abs)) %>% 
    filter(year %in% c(1990, 2010)) %>% 
    mutate(start_pos = diff_cumulative - diff_abs) %>% 
    mutate(is_increasing = diff_cumulative > start_pos) %>% 
  group_by(year, sdi) %>% 
  mutate(max_cumulative = diff_cumulative[length(diff_cumulative)]) %>% 
  ungroup() %>% 
  ggplot(aes(x = start_pos, xend = diff_cumulative, y = rei, yend = rei, colour = is_increasing)) + 
  geom_segment( arrow = arrow(length = unit(0.05, "npc"))) + 
  facet_grid(sdi ~ year) +
  geom_vline(xintercept = 0) + 
  geom_vline(aes(xintercept = max_cumulative), linetype = "dashed") + 
  guides(colour = FALSE) + 
  labs(x = "Gender difference in rates", y = "Risk factors (level 2)", title = "Contribution of risk factors to gender differences in all-cause mortality rates", subtitle = "Age-standardised rates per 100 000", caption = "Source: GBD")
ggsave("figures/contribution_of_level2_riskfactors_death_rate.png", height = 30, width = 30, units = "cm", dpi = 300)

This seems to work pretty well though is perhaps at the limit of visual complexity. More time periods etc would likely make this image too busy.

LS0tDQp0aXRsZTogIlJpc2sgRmFjdG9ycyINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KIyBJbnRybw0KDQpUaGlzIGRvYyB3aWxsIGV4cGxvcmUgbW9ydGFsaXR5IGFuZCBEQUxZcyBieSByaXNrIGZhY3RvcnMgDQoNCkZpcnN0IHRvIGxvYWQgdGhlIHByZSByZXF1aXNpdGUgcGFja2FnZXMgYW5kIHNjcmlwdCBmb3IgZG93bmxvYWRpbmcgZGF0YS4gDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQoNCnNvdXJjZSgiZG93bmxvYWRfY29tcGxldGVkX3JlcXVlc3QuUiIpDQpgYGANCg0KTmV4dCBJIHdpbGwgZG93bmxvYWQgdGhlIGRhdGEgZnJvbSB0aGUgcmVxdWVzdC4gKE9ubHkgaGFzIHRvIGJlIGRvbmUgb25jZSBzbyBub3cgc2V0IG5vdCB0byBldmFsdWF0ZSAocnVuKSkuDQoNCg0KYGBge3IsIGV2YWwgPSBGLCBjb21tZW50PSBGLCBlY2hvID0gRn0NCg0KDQp1cmxfYm9keSA8LSAiaHR0cDovL3MzLmhlYWx0aGRhdGEub3JnL2diZC1hcGktMjAxNi1wcm9kdWN0aW9uLzY3OTBhM2YyZDU5NDhhODY5Mjk5MzljODM1MjVmODFlX2ZpbGVzIg0KdXJsX2hlYWQgPC0gIklITUUtR0JEXzIwMTZfREFUQS02NzkwYTNmMi0iDQpvdXRkaXIgPC0gInJhd19kYXRhL3Jpc2siDQoNCmRvd25sb2FkX2NvbXBsZXRlZF9yZXF1ZXN0KHVybF9ib2R5LCB1cmxfaGVhZCwgb3V0ZGlyLCBmbHVzaCA9IFQpDQoNCg0KYGBgDQoNClRoZSBmaWxlcyBjYW4gbm93IGJlIGxvYWRlZCBhbmQgam9pbmVkIGxvY2FsbHkgYXMgZm9sbG93cyANCg0KYGBge3J9DQpkdGEgPC0gcmVhZF9jc3YoInJhd19kYXRhL3Jpc2svMS5jc3YiKSAlPiUgYmluZF9yb3dzKHJlYWRfY3N2KCJyYXdfZGF0YS9yaXNrLzIuY3N2IikpDQoNCmR0YQ0KZ2xpbXBzZShkdGEpDQoNCmBgYA0KDQpUaGUgYF9pZGAgc3VmZml4IGNvbHVtbnMgY2FuIGJlIHVzZWQgdG8gam9pbiB0byB0aGUgbG9va3VwIHRhYmxlcy4gSW4gdGhpcyBjYXNlIGZvciByaXNrIChieSByZWlfaWQpDQoNCmBgYHtyfQ0KbG9va3VwIDwtIHJlYWR4bDo6cmVhZF9leGNlbCgicmF3X2RhdGEvSUhNRV9HQkRfMjAxNl9DT0RFQk9PSy9JSE1FX0dCRF8yMDE2X1JFSV9ISUVSQVJDSFlfWTIwMThNMDREMjYuWExTWCIpDQpsb29rdXANCmdsaW1wc2UobG9va3VwKQ0KDQpgYGANCg0KSW4gdGhpcyBleGFtcGxlIEknbGwgam9pbiB0aGVuIGZpbHRlciBvbmx5IGxldmVsIDEgY2F0ZWdvcmllcyBpbiB0aGUgcmVpIGhpZXJhcmNoeSANCg0KYGBge3J9DQpkdGEgJT4lIA0KICBsZWZ0X2pvaW4obG9va3VwKSAlPiUgDQogIGZpbHRlcihsZXZlbCA9PSAxKSAtPiBkdGFfbHZsMQ0KYGBgDQoNCk5vdyB0byBzdGFydCBleHBsb3Jpbmc6IGFnZS1zdGFuZGFyZGlzZWQsIGdsb2JhbCwgZGVhdGhzLCBieSBsdmwgMSByaXNrIGZhY3RvciBhbmQgZ2VuZGVyIA0KDQpgYGB7cn0NCg0KZHRhX2x2bDEgJT4lDQogIGZpbHRlcihtZWFzdXJlX25hbWUgPT0gIkRlYXRocyIpICU+JSANCiAgZmlsdGVyKGxvY2F0aW9uX25hbWUgPT0gIkdsb2JhbCIpICU+JSANCiAgZmlsdGVyKGFnZV9uYW1lID09ICJBZ2Utc3RhbmRhcmRpemVkIikgJT4lIA0KICBmaWx0ZXIobWV0cmljX25hbWUgPT0gIlJhdGUiKSAlPiUgDQogIGZpbHRlcihjYXVzZV9uYW1lID09ICJBbGwgY2F1c2VzIikgJT4lIA0KICBzZWxlY3QoeWVhciwgc2V4ID0gc2V4X25hbWUsIHJpc2tfZmFjdG9yID0gcmVpX25hbWUsIGRlYXRoX3JhdGUgPSB2YWwpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0geWVhciwgeSA9IGRlYXRoX3JhdGUsIGxpbmV0eXBlID0gc2V4LCBjb2xvdXIgPSBzZXgpKSArIA0KICBmYWNldF93cmFwKH4gcmlza19mYWN0b3IpICsNCiAgZ2VvbV9saW5lKCkNCg0KYGBgDQoNCk5vdyB0byBkbyB0aGUgc2FtZSBieSBTREkNCg0KYGBge3J9DQoNCmR0YV9sdmwxICU+JQ0KICBmaWx0ZXIobWVhc3VyZV9uYW1lID09ICJEZWF0aHMiKSAlPiUgDQogIGZpbHRlcihsb2NhdGlvbl9uYW1lICE9ICJHbG9iYWwiKSAlPiUgDQogIGZpbHRlcihhZ2VfbmFtZSA9PSAiQWdlLXN0YW5kYXJkaXplZCIpICU+JSANCiAgZmlsdGVyKG1ldHJpY19uYW1lID09ICJSYXRlIikgJT4lIA0KICBmaWx0ZXIoY2F1c2VfbmFtZSA9PSAiQWxsIGNhdXNlcyIpICU+JSANCiAgc2VsZWN0KHllYXIsIHNleCA9IHNleF9uYW1lLCBzZGkgPSBsb2NhdGlvbl9uYW1lLCByaXNrX2ZhY3RvciA9IHJlaV9uYW1lLCBkZWF0aF9yYXRlID0gdmFsKSAlPiUgDQogIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShzZGksICIgU0RJIiwgIiIpKSAlPiUgDQogIG11dGF0ZShzZGkgPSBmYWN0b3Ioc2RpLCBsZXZlbHMgPSBjKCJMb3ciLCAiTG93LW1pZGRsZSIsICJNaWRkbGUiLCAiSGlnaC1taWRkbGUiLCAiSGlnaCIpLCBvcmRlcmVkID0gVCkpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0geWVhciwgeSA9IGRlYXRoX3JhdGUsIGxpbmV0eXBlID0gc2V4LCBjb2xvdXIgPSBzZXgpKSArIA0KICBmYWNldF9ncmlkKHJpc2tfZmFjdG9yIH4gc2RpKSArDQogIGdlb21fbGluZSgpDQoNCmBgYA0KDQpBbmQgbm93IGxldCdzIHNlZSB3aGF0IHRoaXMgaW1wbGllcyBmb3IgcmVsYXRpdmUgaW5lcXVhbGl0aWVzDQoNCg0KYGBge3J9DQoNCmR0YV9sdmwxICU+JQ0KICAgIGZpbHRlcihtZWFzdXJlX25hbWUgPT0gIkRlYXRocyIpICU+JSANCiAgICBmaWx0ZXIobG9jYXRpb25fbmFtZSAhPSAiR2xvYmFsIikgJT4lIA0KICAgIGZpbHRlcihhZ2VfbmFtZSA9PSAiQWdlLXN0YW5kYXJkaXplZCIpICU+JSANCiAgICBmaWx0ZXIobWV0cmljX25hbWUgPT0gIlJhdGUiKSAlPiUgDQogICAgZmlsdGVyKGNhdXNlX25hbWUgPT0gIkFsbCBjYXVzZXMiKSAlPiUgDQogICAgc2VsZWN0KHllYXIsIHNleCA9IHNleF9uYW1lLCBzZGkgPSBsb2NhdGlvbl9uYW1lLCByaXNrX2ZhY3RvciA9IHJlaV9uYW1lLCBkZWF0aF9yYXRlID0gdmFsKSAlPiUgDQogICAgbXV0YXRlKHNkaSA9IHN0cmluZ3I6OnN0cl9yZXBsYWNlKHNkaSwgIiBTREkiLCAiIikpICU+JSANCiAgICBtdXRhdGUoc2RpID0gZmFjdG9yKHNkaSwgbGV2ZWxzID0gYygiTG93IiwgIkxvdy1taWRkbGUiLCAiTWlkZGxlIiwgIkhpZ2gtbWlkZGxlIiwgIkhpZ2giKSwgb3JkZXJlZCA9IFQpKSAlPiUgc3ByZWFkKHNleCwgZGVhdGhfcmF0ZSkgJT4lIG11dGF0ZShyYXRpbyA9IE1hbGUgLyBGZW1hbGUpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0geWVhciwgeSA9IHJhdGlvLCBjb2xvdXIgPSByaXNrX2ZhY3RvcikpICsgDQogIGdlb21fbGluZSgpICsgDQogIGZhY2V0X2dyaWQoLiAgfiBzZGkpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDEpDQoNCmBgYA0KDQojIERBTFkgZGVjb21wb3NpdGlvbiANCg0KTGV0J3MgbG9vayBhdCB0aGUgY29udHJpYnV0aW9uIG9mIGRpZmZlcmVudCByaXNrIGZhY3RvcnMgdG8gREFMWSBkaWZmZXJlbmNlDQoNCg0KYGBge3J9DQpkdGFfbHZsMSAlPiUgDQogIGZpbHRlcihtZWFzdXJlX25hbWUgPT0gIkRBTFlzIChEaXNhYmlsaXR5LUFkanVzdGVkIExpZmUgWWVhcnMpIikgJT4lIA0KICBmaWx0ZXIobG9jYXRpb25fbmFtZSAhPSAiR2xvYmFsIikgJT4lIA0KICBmaWx0ZXIoY2F1c2VfbmFtZSA9PSAiQWxsIGNhdXNlcyIpICU+JSANCiAgZmlsdGVyKGFnZV9uYW1lID09ICJBZ2Utc3RhbmRhcmRpemVkIikgJT4lIA0KICBmaWx0ZXIobWV0cmljX25hbWUgPT0gIlJhdGUiKSAlPiUgDQogIHNlbGVjdCh5ZWFyLCBzZXggPSBzZXhfbmFtZSwgc2RpID0gbG9jYXRpb25fbmFtZSwgcmlza19mYWN0b3IgPSByZWlfbmFtZSwgZGFseV9yYXRlID0gdmFsKSAlPiUgDQogIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShzZGksICIgU0RJIiwgIiIpKSAlPiUgDQogIG11dGF0ZShzZGkgPSBmYWN0b3Ioc2RpLCBsZXZlbHMgPSBjKCJMb3ciLCAiTG93LW1pZGRsZSIsICJNaWRkbGUiLCAiSGlnaC1taWRkbGUiLCAiSGlnaCIpLCBvcmRlcmVkID0gVCkpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0geWVhciwgeSA9IGRhbHlfcmF0ZSwgZmlsbCA9IHJpc2tfZmFjdG9yKSwgY29sb3VyID0gImJsYWNrIikgKyANCiAgZ2VvbV9hcmVhKCkgKyANCiAgZmFjZXRfZ3JpZChzZGl+c2V4KQ0KDQpgYGANCg0KDQpOb3cgcHJvcG9ydGlvbiBvZiBhbGwgREFMWXMgYXR0cmlidXRhYmxlIHRvIGVhY2ggcmlzayBmYWN0b3IgYnkgeWVhciBhbmQgU0RJDQpgYGB7cn0NCmR0YV9sdmwxICU+JSANCiAgZmlsdGVyKG1lYXN1cmVfbmFtZSA9PSAiREFMWXMgKERpc2FiaWxpdHktQWRqdXN0ZWQgTGlmZSBZZWFycykiKSAlPiUgDQogIGZpbHRlcihsb2NhdGlvbl9uYW1lICE9ICJHbG9iYWwiKSAlPiUgDQogIGZpbHRlcihjYXVzZV9uYW1lID09ICJBbGwgY2F1c2VzIikgJT4lIA0KICBmaWx0ZXIoYWdlX25hbWUgPT0gIkFnZS1zdGFuZGFyZGl6ZWQiKSAlPiUgDQogIGZpbHRlcihtZXRyaWNfbmFtZSA9PSAiUmF0ZSIpICU+JSANCiAgc2VsZWN0KHllYXIsIHNleCA9IHNleF9uYW1lLCBzZGkgPSBsb2NhdGlvbl9uYW1lLCByaXNrX2ZhY3RvciA9IHJlaV9uYW1lLCBkYWx5X3JhdGUgPSB2YWwpICU+JSANCiAgbXV0YXRlKHNkaSA9IHN0cmluZ3I6OnN0cl9yZXBsYWNlKHNkaSwgIiBTREkiLCAiIikpICU+JSANCiAgbXV0YXRlKHNkaSA9IGZhY3RvcihzZGksIGxldmVscyA9IGMoIkxvdyIsICJMb3ctbWlkZGxlIiwgIk1pZGRsZSIsICJIaWdoLW1pZGRsZSIsICJIaWdoIiksIG9yZGVyZWQgPSBUKSkgJT4lIA0KICBncm91cF9ieSh5ZWFyLCBzZXgsIHNkaSkgJT4lIA0KICBtdXRhdGUodG90YWwgPSBzdW0oZGFseV9yYXRlKSkgJT4lIA0KICBtdXRhdGUocHJvcG9ydGlvbl90b3RhbCA9IGRhbHlfcmF0ZSAvIHRvdGFsKSAlPiUgDQogIHVuZ3JvdXAoKSAlPiUNCiAgZ2dwbG90KGFlcyh4ID0geWVhciwgeSA9IHByb3BvcnRpb25fdG90YWwsIGZpbGwgPSByaXNrX2ZhY3RvciksIGNvbG91ciA9ICJibGFjayIpICsgDQogIGdlb21fYXJlYSgpICsgDQogIGZhY2V0X2dyaWQoc2RpfnNleCkNCg0KYGBgDQoNCiMgUHJvcCB0b3RhbCBkZWF0aHMgYXR0cmlidXRhYmxlIHRvIGRpZmYgcmlzayBmYWN0b3JzDQoNCg0KTm93IHByb3BvcnRpb24gb2YgdG90YWwgZGVhdGhzIA0KYGBge3J9DQpieV9mYWN0b3IgPC0gZHRhX2x2bDEgJT4lIA0KICBmaWx0ZXIobWVhc3VyZV9uYW1lID09ICJEZWF0aHMiKSAlPiUgDQogIHNlbGVjdCgtbWVhc3VyZV9uYW1lLCAtbWVhc3VyZV9pZCkgJT4lIA0KICBmaWx0ZXIobG9jYXRpb25fbmFtZSAhPSAiR2xvYmFsIikgJT4lIA0KICBmaWx0ZXIoYWdlX25hbWUgPT0gIkFnZS1zdGFuZGFyZGl6ZWQiKSAlPiUgDQogIGZpbHRlcihtZXRyaWNfbmFtZSA9PSAiUmF0ZSIpICU+JSANCiAgZmlsdGVyKGNhdXNlX25hbWUgPT0gIkFsbCBjYXVzZXMiKSAlPiUgDQogIHNlbGVjdCh5ZWFyLCBzZXggPSBzZXhfbmFtZSwgc2RpID0gbG9jYXRpb25fbmFtZSwgcmVpID0gcmVpX25hbWUsIHJhdGUgPSB2YWwpICU+JSAgIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShzZGksICIgU0RJIiwgIiIpKSAlPiUgDQogIG11dGF0ZShzZGkgPSBmYWN0b3Ioc2RpLCBsZXZlbHMgPSBjKCJMb3ciLCAiTG93LW1pZGRsZSIsICJNaWRkbGUiLCAiSGlnaC1taWRkbGUiLCAiSGlnaCIpLCBvcmRlcmVkID0gVCkpDQoNCm92ZXJhbGwgPC0gZHRhICU+JSANCiAgZmlsdGVyKHJlaV9uYW1lID09ICJBbGwgcmlzayBmYWN0b3JzIikgJT4lIA0KICBmaWx0ZXIobWVhc3VyZV9uYW1lID09ICJEZWF0aHMiKSAlPiUgDQogIHNlbGVjdCgtbWVhc3VyZV9uYW1lLCAtbWVhc3VyZV9pZCkgJT4lIA0KICBmaWx0ZXIobG9jYXRpb25fbmFtZSAhPSAiR2xvYmFsIikgJT4lIA0KICBmaWx0ZXIoYWdlX25hbWUgPT0gIkFnZS1zdGFuZGFyZGl6ZWQiKSAlPiUgDQogIGZpbHRlcihtZXRyaWNfbmFtZSA9PSAiUmF0ZSIpICU+JSANCiAgZmlsdGVyKGNhdXNlX25hbWUgPT0gIkFsbCBjYXVzZXMiKSAlPiUgDQogIHNlbGVjdCh5ZWFyLCBzZXggPSBzZXhfbmFtZSwgc2RpID0gbG9jYXRpb25fbmFtZSwgcmVpID0gcmVpX25hbWUsIHJhdGUgPSB2YWwpICU+JSAgIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShzZGksICIgU0RJIiwgIiIpKSAlPiUgDQogIG11dGF0ZShzZGkgPSBmYWN0b3Ioc2RpLCBsZXZlbHMgPSBjKCJMb3ciLCAiTG93LW1pZGRsZSIsICJNaWRkbGUiLCAiSGlnaC1taWRkbGUiLCAiSGlnaCIpLCBvcmRlcmVkID0gVCkpDQoNCmpvaW5lZCA8LSBiaW5kX3Jvd3MoYnlfZmFjdG9yLCBvdmVyYWxsKQ0Kcm0oYnlfZmFjdG9yLCBvdmVyYWxsKQ0KDQpgYGANCg0KVW5mb3J0dW5hdGVseSBpdCBzZWVtcyAnYWxsIHJpc2sgZmFjdG9ycycgaXMgbm90IHRoZSBzYW1lIGFzICd0b3RhbCcsIGkuZS4gdGhlIGFic29sdXRlIGRpZmZlcmVuY2VzIGluIGFnZS1zdGFuZGFyZGlzZWQgZGVhdGggcmF0ZXMgZnJvbSBlYWNoIG9mIHRoZSB0aHJlZSBsZXZlbCAxIHJpc2sgZmFjdG9ycyBkbyBub3QgYWRkIHVwIHRvIHRoZSAnYWxsIHJpc2sgZmFjdG9ycycgYWJzb2x1dGUgZGlmZmVyZW5jZQ0KDQoNCmBgYHtyfQ0Kam9pbmVkICU+JSANCiAgc3ByZWFkKHNleCwgcmF0ZSkgJT4lIA0KICBtdXRhdGUoYWJzX2RpZmYgPSBNYWxlIC0gRmVtYWxlKSAlPiUgDQogIGdyb3VwX2J5KHllYXIsIHNkaSkgJT4lIA0KICBtdXRhdGUocGVyY19vZl9hYnNfZGlmZiA9IDEwMCAqIGFic19kaWZmIC8gYWJzX2RpZmZbcmVpPT0iQWxsIHJpc2sgZmFjdG9ycyJdKSAlPiUgDQogIHN1bW1hcmlzZShkaXNjcmVwYW5jeSA9IHN1bShwZXJjX29mX2Fic19kaWZmW3JlaSAhPSAiQWxsIHJpc2sgZmFjdG9ycyJdKSAtIDEwMCkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSB5ZWFyLCB5ID0gZGlzY3JlcGFuY3ksIGNvbG91ciA9IHNkaSkpICsgDQogIGdlb21fbGluZSgpIA0KDQpgYGANCg0KU28sIHRoZSByaXNrIGZhY3RvcnMgbWlnaHQgbm90IGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBhbmQgZXhoYXVzdGl2ZS4gTGV0J3MgdGFrZSBtaWRkbGUgU0RJIGluIDIwMDAgYXMgYW4gZXhhbXBsZQ0KDQpgYGB7cn0NCmpvaW5lZCAlPiUgDQogIGZpbHRlcihzZGkgPT0gIk1pZGRsZSIpICU+JSANCiAgZmlsdGVyKHllYXIgPT0gMjAwMCkgJT4lIA0KICBzcHJlYWQoc2V4LCByYXRlKSAlPiUgDQogIG11dGF0ZShhYnNfZGlmZiA9IE1hbGUgLSBGZW1hbGUpICU+JSANCiAgZ3JvdXBfYnkoeWVhciwgc2RpKSAlPiUgDQogIG11dGF0ZShwZXJjX29mX2Fic19kaWZmID0gMTAwICogYWJzX2RpZmYgLyBhYnNfZGlmZltyZWk9PSJBbGwgcmlzayBmYWN0b3JzIl0pIA0KDQoNCg0KYGBgDQpTbywgdGhlIHRvdGFsIG9mIHRoZSB0aHJlZSBib3R0b20gcm93cyBhZGRzIHVwIHRvIGFyb3VuZCAxNjAsIHdoZW4gSSBtaWdodCBleHBlY3QgdGhlbSB0byBhZGQgdG8gMTAwLiBBIHNpbXBsZSBkZWNvbXBvc2l0aW9uIGFzc3VtcHRpb24gZG9lc24ndCBzZWVtIHRvIGFwcGx5IHdoZW4gdXNpbmcgdGhlICdhbGwgcmlzayBmYWN0b3JzJyBkZXNpZ25hdGlvbiBhcyB0b3RhbC4gDQoNClRvIHRyeSB0byBhY2NvdW50IGZvciB0aGlzIGxldCdzIGxvb2sgYXQgYSBkaWZmZXJlbnQgZGF0YXNldCwgd2l0aDoNCg0KKiBBZ2Ugc3RhbmRhcmRpc2VkIGFnZXMNCiogQWxsIGNhdXNlDQoqIE1vcnRhbGl0eSByYXRlcyANCiogQnkgU0RJDQoNCkxldCdzIHRyeSB0byBncmFiIHRoaXMgZGF0YSB3aXRoIGEgbmV3IHF1ZXJ5IA0KDQpUaGUgcXVlcnkgbGluayBpcyBbaGVyZV0oaHR0cDovL2doZHguaGVhbHRoZGF0YS5vcmcvZ2JkLXJlc3VsdHMtdG9vbC9yZXN1bHQvYzliZjFhNTE5N2JmNDZhOTY2YzE0NjdjMzEwM2U4YTkpLg0KDQoNCmBgYHtyLCBldmFsID0gRn0NCg0KdXJsX2JvZHkgPC0gImh0dHA6Ly9zMy5oZWFsdGhkYXRhLm9yZy9nYmQtYXBpLTIwMTYtcHJvZHVjdGlvbi9jOWJmMWE1MTk3YmY0NmE5NjZjMTQ2N2MzMTAzZThhOV9maWxlcyINCnVybF9oZWFkIDwtICJJSE1FLUdCRF8yMDE2X0RBVEEtYzliZjFhNTEtIg0Kb3V0ZGlyIDwtICJyYXdfZGF0YS9yYXRlX2FsbF9jYXVzZSINCg0KZG93bmxvYWRfY29tcGxldGVkX3JlcXVlc3QodXJsX2JvZHksIHVybF9oZWFkLCBvdXRkaXIsIGZsdXNoID0gVCkNCmBgYA0KDQoNCkFuZCBub3cgdG8gbG9hZCB0aGlzIGZpbGUgDQoNCmBgYHtyfQ0KDQpkdGFfdG90YWwgPC0gcmVhZF9jc3YoInJhd19kYXRhL3JhdGVfYWxsX2NhdXNlLzEuY3N2IikNCmBgYA0KDQoNCmBgYHtyfQ0KDQpieV9mYWN0b3IgPC0gZHRhX2x2bDEgJT4lIA0KICBmaWx0ZXIobWVhc3VyZV9uYW1lID09ICJEZWF0aHMiKSAlPiUgDQogIHNlbGVjdCgtbWVhc3VyZV9uYW1lLCAtbWVhc3VyZV9pZCkgJT4lIA0KICBmaWx0ZXIobG9jYXRpb25fbmFtZSAhPSAiR2xvYmFsIikgJT4lIA0KICBmaWx0ZXIoYWdlX25hbWUgPT0gIkFnZS1zdGFuZGFyZGl6ZWQiKSAlPiUgDQogIGZpbHRlcihtZXRyaWNfbmFtZSA9PSAiUmF0ZSIpICU+JSANCiAgZmlsdGVyKGNhdXNlX25hbWUgPT0gIkFsbCBjYXVzZXMiKSAlPiUgDQogIHNlbGVjdCh5ZWFyLCBzZXggPSBzZXhfbmFtZSwgc2RpID0gbG9jYXRpb25fbmFtZSwgcmVpID0gcmVpX25hbWUsIHJhdGUgPSB2YWwpICU+JSAgIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShzZGksICIgU0RJIiwgIiIpKSAlPiUgDQogIG11dGF0ZShzZGkgPSBmYWN0b3Ioc2RpLCBsZXZlbHMgPSBjKCJMb3ciLCAiTG93LW1pZGRsZSIsICJNaWRkbGUiLCAiSGlnaC1taWRkbGUiLCAiSGlnaCIpLCBvcmRlcmVkID0gVCkpDQoNCm92ZXJhbGwgPC0gZHRhX3RvdGFsICU+JSBmaWx0ZXIobG9jYXRpb24gIT0gIkdsb2JhbCIpICU+JSBtdXRhdGUocmVpID0gInRvdGFsIikgJT4lIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShsb2NhdGlvbiwgIiBTREkiLCAiIikpICU+JSANCiAgICBtdXRhdGUoc2RpID0gZmFjdG9yKHNkaSwgbGV2ZWxzID0gYygiTG93IiwgIkxvdy1taWRkbGUiLCAiTWlkZGxlIiwgIkhpZ2gtbWlkZGxlIiwgIkhpZ2giKSwgb3JkZXJlZCA9IFQpKSAlPiUgc2VsZWN0KHllYXIsIHNleCwgc2RpLCByZWksIHJhdGUgPSB2YWwpDQoNCg0KYGBgDQoNCg0KTGV0J3Mgc2VlIGlmIHRoZSB0b3RhbHMgYWRkIHVwIHRoaXMgdGltZS4gVGhlIHRocmVlIGxldmVsIDEgcmlzayBmYWN0b3JzIGFyZSBzaG93biBhcyBzdGFja2VkIGFyZWFzLCBhbmQgdGhlIHRvdGFsIGlzIHNob3duIGFzIGEgYmxhY2sgbGluZS4uLiANCg0KDQpgYGB7cn0NCmJ5X2ZhY3RvciAlPiUgDQogIGdncGxvdChhZXMoeCA9IHllYXIsIHkgPSByYXRlLCBmaWxsID0gcmVpKSkgKyANCiAgZ2VvbV9hcmVhKCkgKyANCiAgZmFjZXRfZ3JpZChzZXggfiBzZGkpICsNCiAgZ2VvbV9saW5lKGFlcyh4ID0geWVhciwgeSA9IHJhdGUpLCBpbmhlcml0LmFlcyA9IEYsIGRhdGEgPSBvdmVyYWxsKQ0KDQpgYGANCg0KDQpTbywgdGhlcmUgaXMgc3RpbGwgZGlzY3JlcGFuY3ksIHdoaWNoIHNlZW1zIHRvIGJlIGxhcmdlc3QgZm9yIGxvdyBTREksIGFuZCBzbWFsbGVzdCBmb3IgaGlnaC1taWRkbGUgU0RJLCBidXQgdGhpcyBtaWdodCBiZSBkZWNvbXBvc2FibGUgc3ViamVjdCB0byBzb21lIGFzc3VtcHRpb25zLg0KDQpMZXQncyBub3cgY29tcGFyZSB3aXRoIHByZXZpb3VzIGF0dGVtcHQgYXQgYW4gJ292ZXJhbGwnIGVzdGltYXRlIChiYXNlZCBvbiAnYWxsIHJpc2sgZmFjdG9ycycpLiBJbiB0aGUgZm9sbG93aW5nIHRoaXMgaXMgYWRkZWQgYXMgYSBibGFjayBkYXNoZWQgbGluZS4gV2UgbWlnaHQgZXhwZWN0IHRoZSBkYXNoZWQgYW5kIHNvbGlkIGxpbmVzIHRvIGJlIHRoZSBzYW1lLCBidXQgYXJlIHRoZXk/IA0KDQoNCmBgYHtyfQ0Kb3ZlcmFsbDIgPC0gZHRhICU+JSANCiAgZmlsdGVyKHJlaV9uYW1lID09ICJBbGwgcmlzayBmYWN0b3JzIikgJT4lIA0KICBmaWx0ZXIobWVhc3VyZV9uYW1lID09ICJEZWF0aHMiKSAlPiUgDQogIHNlbGVjdCgtbWVhc3VyZV9uYW1lLCAtbWVhc3VyZV9pZCkgJT4lIA0KICBmaWx0ZXIobG9jYXRpb25fbmFtZSAhPSAiR2xvYmFsIikgJT4lIA0KICBmaWx0ZXIoYWdlX25hbWUgPT0gIkFnZS1zdGFuZGFyZGl6ZWQiKSAlPiUgDQogIGZpbHRlcihtZXRyaWNfbmFtZSA9PSAiUmF0ZSIpICU+JSANCiAgZmlsdGVyKGNhdXNlX25hbWUgPT0gIkFsbCBjYXVzZXMiKSAlPiUgDQogIHNlbGVjdCh5ZWFyLCBzZXggPSBzZXhfbmFtZSwgc2RpID0gbG9jYXRpb25fbmFtZSwgcmVpID0gcmVpX25hbWUsIHJhdGUgPSB2YWwpICU+JSAgIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShzZGksICIgU0RJIiwgIiIpKSAlPiUgDQogIG11dGF0ZShzZGkgPSBmYWN0b3Ioc2RpLCBsZXZlbHMgPSBjKCJMb3ciLCAiTG93LW1pZGRsZSIsICJNaWRkbGUiLCAiSGlnaC1taWRkbGUiLCAiSGlnaCIpLCBvcmRlcmVkID0gVCkpDQoNCmJ5X2ZhY3RvciAlPiUgDQogIGdncGxvdChhZXMoeCA9IHllYXIsIHkgPSByYXRlLCBmaWxsID0gcmVpKSkgKyANCiAgZ2VvbV9hcmVhKCkgKyANCiAgZmFjZXRfZ3JpZChzZXggfiBzZGkpICsNCiAgZ2VvbV9saW5lKGFlcyh4ID0geWVhciwgeSA9IHJhdGUpLCBpbmhlcml0LmFlcyA9IEYsIGRhdGEgPSBvdmVyYWxsKSArDQogIGdlb21fbGluZShhZXMoeCA9IHllYXIsIHkgPSByYXRlKSwgaW5oZXJpdC5hZXMgPSBGLCBkYXRhID0gb3ZlcmFsbDIsIGxpbmV0eXBlID0gImRhc2hlZCIpDQoNCg0KYGBgDQoNClNvLCB0aGVyZSBhcmUgY2xlYXIgZGlmZmVyZW5jZXMgYmV0d2VlbiBhZ2Utc3RhbmRhcmRpc2VkIHJhdGVzIGRyYXduIGZyb20gYWxsIGNhdXNlcyAoc29saWQgbGluZSksIGFuZCBhZ2Utc3RhbmRhcmRpc2VkIHJhdGVzIGRyYXdtIGZyb20gYWxsIHJpc2sgZmFjdG9ycyAoZGFzaGVkIGxpbmVzKSwgd2l0aCB0aGUgbGF0dGVyIGJlbG93IHRoZSBmb3JtZXIuIEFnYWluLCB0aGlzIHJhaXNlcyBxdWVzdGlvbnMgYWJvdXQgaG93IHRvIHBlcmZvcm0gYSBkZWNvbXBvc2l0aW9uIGludG8gcmlzayBmYWN0b3JzLCB0aGUgZWZmZWN0IG9mIGFnZS1zdGFuZGFyZGl6YXRpb24sIGFuZCBzbyBvbi4gDQoNCiMgTGV2ZWwgMSBpbnRlcm5hbCBkZWNvbXBvc2l0aW9uIA0KDQpMZXQncyBub3QgdXNlIGxldmVsIDAgZm9yIGRlY29tcG9zaW5nIGxldmVsIDEgZXRjLCBhbmQgaW5zdGVhZCBqdXN0IHByb2R1Y2UgZXN0aW1hdGVzIG9mIHRvdGFsIGJ5IHN1bW1pbmcgdXAgbGV2ZWwgMSByaXNrcy4gVGhlbiwgZG8gdGhlIHNhbWUgZm9yIGxldmVsIDIuIA0KDQpgYGB7cn0NCg0KY29udHJpYnV0aW9ucyA8LSBieV9mYWN0b3IgJT4lIA0KICBpbm5lcl9qb2luKA0KICAgIGJ5X2ZhY3RvciAlPiUgDQogICAgICBncm91cF9ieSh5ZWFyLCBzZXgsIHNkaSkgJT4lIA0KICAgICAgc3VtbWFyaXNlKHRvdGFsX3JhdGUgPSBzdW0ocmF0ZSkpICU+JSANCiAgICAgIHVuZ3JvdXAoKQ0KICAgICkgJT4lIA0KICBncm91cF9ieSh5ZWFyLCBzZGkpICU+JSANCiAgbXV0YXRlKGFic19zZXhfZGlmZiA9IHRvdGFsX3JhdGVbc2V4ID09ICJNYWxlIl1bMV0gLSB0b3RhbF9yYXRlW3NleCA9PSAiRmVtYWxlIl1bMV0pICU+JSANCiAgZ3JvdXBfYnkoeWVhciwgc2RpLCByZWkpICU+JSANCiAgbXV0YXRlKHJlaV9hYnNfc2V4X2RpZmYgPSByYXRlW3NleCA9PSAiTWFsZSJdIC0gcmF0ZVtzZXggPT0gIkZlbWFsZSJdKSAlPiUgDQogIHVuZ3JvdXAoKSAlPiUgDQogIG11dGF0ZShjb250cmlidXRpb24gPSAxMDAgKiByZWlfYWJzX3NleF9kaWZmIC8gYWJzX3NleF9kaWZmKQ0KDQpgYGANCg0KTm93IHRvIHBsb3QgdGhlIGNvbnRyaWJ1dGlvbiBvdmVyIHRpbWUgYnkgU0RJDQoNCmBgYHtyfQ0KY29udHJpYnV0aW9ucyAlPiUgDQogIHNlbGVjdCh5ZWFyLCBzZXgsIHNkaSwgcmVpLCBjb250cmlidXRpb24pICU+JSANCiAgZGlzdGluY3QoKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IHllYXIsIHk9IGNvbnRyaWJ1dGlvbiwgY29sb3VyID0gcmVpKSkgKyANCiAgZ2VvbV9saW5lKCkgKyANCiAgZmFjZXRfd3JhcCh+c2RpKQ0KDQpgYGANCg0KDQpMZXQncyB0aGluayBhZ2FpbiBhYm91dCBob3cgdG8gcHJlc2VudCB0aGlzIGluIHRoZSBjYXNlIG9mIHRocmVlIHJpc2sgZmFjdG9ycywgc3VjaCB0aGF0IGl0IGNvdWxkIGJlIHNjYWxlZCB1cCB0byBtb3JlIGZhY3RvcnMgDQoNCmBgYHtyfQ0KYnlfZmFjdG9yICU+JSANCiAgc3ByZWFkKHNleCwgcmF0ZSkgJT4lIA0KICBtdXRhdGUoZGlmZl9hYnMgPSBNYWxlIC0gRmVtYWxlKSAlPiUgDQogIGdyb3VwX2J5KHllYXIsIHNkaSkgJT4lDQogIG11dGF0ZShkaWZmX2N1bXVsYXRpdmUgPSBjdW1zdW0oZGlmZl9hYnMpKSAtPiBjdW11bGF0aXZlX2NvbnRyaWJ1dGlvbnMNCg0KDQpgYGANCg0KDQpOb3cgdG8gcGxvdCBmb3IgdHdvIHllYXJzLCAxOTkwIGFuZCAyMDEwDQoNCmBgYHtyfQ0KDQojIHVzZSBnZW9tX3NlZ2VtZW50DQoNCmN1bXVsYXRpdmVfY29udHJpYnV0aW9ucyAlPiUgDQogICAgZmlsdGVyKHllYXIgJWluJSBjKDE5OTAsIDIwMTApKSAlPiUgDQogICAgbXV0YXRlKHN0YXJ0X3BvcyA9IGRpZmZfY3VtdWxhdGl2ZSAtIGRpZmZfYWJzKSAlPiUgDQogICAgbXV0YXRlKGlzX2luY3JlYXNpbmcgPSBkaWZmX2N1bXVsYXRpdmUgPiBzdGFydF9wb3MpICU+JSANCiAgZ3JvdXBfYnkoeWVhciwgc2RpKSAlPiUgDQogIG11dGF0ZShtYXhfY3VtdWxhdGl2ZSA9IGRpZmZfY3VtdWxhdGl2ZVtsZW5ndGgoZGlmZl9jdW11bGF0aXZlKV0pICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gc3RhcnRfcG9zLCB4ZW5kID0gZGlmZl9jdW11bGF0aXZlLCB5ID0gcmVpLCB5ZW5kID0gcmVpLCBjb2xvdXIgPSBpc19pbmNyZWFzaW5nKSkgKyANCiAgZ2VvbV9zZWdtZW50KCBhcnJvdyA9IGFycm93KGxlbmd0aCA9IHVuaXQoMC4yLCAibnBjIikpKSArIA0KICBmYWNldF9ncmlkKHNkaSB+IHllYXIpICsNCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMCkgKyANCiAgZ2VvbV92bGluZShhZXMoeGludGVyY2VwdCA9IG1heF9jdW11bGF0aXZlKSwgbGluZXR5cGUgPSAiZGFzaGVkIikgKyANCiAgZ3VpZGVzKGNvbG91ciA9IEZBTFNFKSArIA0KICBsYWJzKHggPSAiR2VuZGVyIGRpZmZlcmVuY2UgaW4gcmF0ZXMiLCB5ID0gIlJpc2sgZmFjdG9ycyAobGV2ZWwgMSkiLCB0aXRsZSA9ICJDb250cmlidXRpb24gb2YgcmlzayBmYWN0b3JzIHRvIGdlbmRlciBkaWZmZXJlbmNlcyBpbiBhbGwtY2F1c2UgbW9ydGFsaXR5IHJhdGVzIiwgc3VidGl0bGUgPSAiQWdlLXN0YW5kYXJkaXNlZCByYXRlcyBwZXIgMTAwIDAwMCIsIGNhcHRpb24gPSAiU291cmNlOiBHQkQiKQ0KDQoNCmdnc2F2ZSgiZmlndXJlcy9jb250cmlidXRpb25fb2ZfbGV2ZWwxX3Jpc2tmYWN0b3JzX2RlYXRoX3JhdGUucG5nIiwgaGVpZ2h0ID0gMzAsIHdpZHRoID0gMzAsIHVuaXRzID0gImNtIiwgZHBpID0gMzAwKQ0KDQoNCmBgYA0KDQpUaGlzIHNlZW1zIHRvIHdvcmsgYXMgYSB2aXN1YWxpc2F0aW9uLiBMZXQncyB0cnkgdG8gc2NhbGUgdXAgdG8gbGV2ZWwgMg0KDQpgYGB7cn0NCmJ5X2ZhY3Rvcl9sMiA8LSBkdGEgJT4lIA0KICBsZWZ0X2pvaW4obG9va3VwKSAlPiUgDQogIGZpbHRlcihsZXZlbCA9PSAyKSAgJT4lIA0KICBmaWx0ZXIobWVhc3VyZV9uYW1lID09ICJEZWF0aHMiKSAlPiUgDQogIHNlbGVjdCgtbWVhc3VyZV9uYW1lLCAtbWVhc3VyZV9pZCkgJT4lIA0KICBmaWx0ZXIobG9jYXRpb25fbmFtZSAhPSAiR2xvYmFsIikgJT4lIA0KICBmaWx0ZXIoYWdlX25hbWUgPT0gIkFnZS1zdGFuZGFyZGl6ZWQiKSAlPiUgDQogIGZpbHRlcihtZXRyaWNfbmFtZSA9PSAiUmF0ZSIpICU+JSANCiAgZmlsdGVyKGNhdXNlX25hbWUgPT0gIkFsbCBjYXVzZXMiKSAlPiUgDQogIHNlbGVjdCh5ZWFyLCBzZXggPSBzZXhfbmFtZSwgc2RpID0gbG9jYXRpb25fbmFtZSwgcmVpID0gcmVpX25hbWUsIHJhdGUgPSB2YWwpICU+JSAgIG11dGF0ZShzZGkgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZShzZGksICIgU0RJIiwgIiIpKSAlPiUgDQogIG11dGF0ZShzZGkgPSBmYWN0b3Ioc2RpLCBsZXZlbHMgPSBjKCJMb3ciLCAiTG93LW1pZGRsZSIsICJNaWRkbGUiLCAiSGlnaC1taWRkbGUiLCAiSGlnaCIpLCBvcmRlcmVkID0gVCkpIA0KYGBgDQoNCg0KYGBge3J9DQpieV9mYWN0b3JfbDIgJT4lIA0KICBzcHJlYWQoc2V4LCByYXRlKSAlPiUgDQogIG11dGF0ZShkaWZmX2FicyA9IE1hbGUgLSBGZW1hbGUpICU+JSANCiAgZ3JvdXBfYnkoeWVhciwgc2RpKSAlPiUNCiAgbXV0YXRlKGRpZmZfY3VtdWxhdGl2ZSA9IGN1bXN1bShkaWZmX2FicykpICU+JSANCiAgICBmaWx0ZXIoeWVhciAlaW4lIGMoMTk5MCwgMjAxMCkpICU+JSANCiAgICBtdXRhdGUoc3RhcnRfcG9zID0gZGlmZl9jdW11bGF0aXZlIC0gZGlmZl9hYnMpICU+JSANCiAgICBtdXRhdGUoaXNfaW5jcmVhc2luZyA9IGRpZmZfY3VtdWxhdGl2ZSA+IHN0YXJ0X3BvcykgJT4lIA0KICBncm91cF9ieSh5ZWFyLCBzZGkpICU+JSANCiAgbXV0YXRlKG1heF9jdW11bGF0aXZlID0gZGlmZl9jdW11bGF0aXZlW2xlbmd0aChkaWZmX2N1bXVsYXRpdmUpXSkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBzdGFydF9wb3MsIHhlbmQgPSBkaWZmX2N1bXVsYXRpdmUsIHkgPSByZWksIHllbmQgPSByZWksIGNvbG91ciA9IGlzX2luY3JlYXNpbmcpKSArIA0KICBnZW9tX3NlZ21lbnQoIGFycm93ID0gYXJyb3cobGVuZ3RoID0gdW5pdCgwLjA1LCAibnBjIikpKSArIA0KICBmYWNldF9ncmlkKHNkaSB+IHllYXIpICsNCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMCkgKyANCiAgZ2VvbV92bGluZShhZXMoeGludGVyY2VwdCA9IG1heF9jdW11bGF0aXZlKSwgbGluZXR5cGUgPSAiZGFzaGVkIikgKyANCiAgZ3VpZGVzKGNvbG91ciA9IEZBTFNFKSArIA0KICBsYWJzKHggPSAiR2VuZGVyIGRpZmZlcmVuY2UgaW4gcmF0ZXMiLCB5ID0gIlJpc2sgZmFjdG9ycyAobGV2ZWwgMikiLCB0aXRsZSA9ICJDb250cmlidXRpb24gb2YgcmlzayBmYWN0b3JzIHRvIGdlbmRlciBkaWZmZXJlbmNlcyBpbiBhbGwtY2F1c2UgbW9ydGFsaXR5IHJhdGVzIiwgc3VidGl0bGUgPSAiQWdlLXN0YW5kYXJkaXNlZCByYXRlcyBwZXIgMTAwIDAwMCIsIGNhcHRpb24gPSAiU291cmNlOiBHQkQiKQ0KDQpnZ3NhdmUoImZpZ3VyZXMvY29udHJpYnV0aW9uX29mX2xldmVsMl9yaXNrZmFjdG9yc19kZWF0aF9yYXRlLnBuZyIsIGhlaWdodCA9IDMwLCB3aWR0aCA9IDMwLCB1bml0cyA9ICJjbSIsIGRwaSA9IDMwMCkNCg0KYGBgDQoNClRoaXMgc2VlbXMgdG8gd29yayBwcmV0dHkgd2VsbCB0aG91Z2ggaXMgcGVyaGFwcyBhdCB0aGUgbGltaXQgb2YgdmlzdWFsIGNvbXBsZXhpdHkuIE1vcmUgdGltZSBwZXJpb2RzIGV0YyB3b3VsZCBsaWtlbHkgbWFrZSB0aGlzIGltYWdlIHRvbyBidXN5Lg0KDQo=