Packages

Dataset

df <- read_csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vStv7Pr69DtRKv6Nw6gVBep8hbT3pEeO6B1vNwxK_1DUHgpoTgbuRpZ4SvgtHFQnBZJVGeeQVyRuXZl/pub?gid=1081795515&single=true&output=csv")

── Column specification ─────────────────────────────────────────────────────────
cols(
  Pacients = col_character(),
  `Zoba numurs` = col_character(),
  `initial treatment-Initial/retreatment -Retreatment` = col_character(),
  Age = col_double(),
  Gender = col_character(),
  `Age 45 ≤ -1/ 45 > - 2` = col_double(),
  `Tooth type` = col_character(),
  `Tooth location.Maxillary -Maxilla/Mandibular-Mandible` = col_character(),
  `PAI before treatment` = col_double(),
  `PAI after treatment` = col_double()
)

glimpse(df)
Rows: 99
Columns: 10
$ pacients                                             <chr> "Binovska Rūtu Re…
$ zoba_numurs                                          <chr> "d46", "d37", "d1…
$ initial_treatment_initial_retreatment_retreatment    <chr> "Initial", "Initi…
$ age                                                  <dbl> 15, 28, 28, 35, 2…
$ gender                                               <chr> "Female", "Female…
$ age_45_1_45_2                                        <dbl> 1, 1, 1, 1, 1, 2,…
$ tooth_type                                           <chr> "Molar", "Molar",…
$ tooth_location_maxillary_maxilla_mandibular_mandible <chr> "Mandible", "Mand…
$ pai_before_treatment                                 <dbl> 2, 4, 2, 2, 2, 4,…
$ pai_after_treatment                                  <dbl> 1, 1, 1, 2, 1, 4,…

Table 1

Characteristic Initial, N = 1021 Retreatment, N = 961 p-value2
pai_values 0.7
1 45 (44%) 52 (54%)
2 31 (30%) 25 (26%)
3 17 (17%) 14 (15%)
4 7 (6.9%) 4 (4.2%)
5 2 (2.0%) 1 (1.0%)

1 Statistics presented: n (%)

2 Statistical tests performed: Fisher's exact test

Dear Aleksandra

I was examining your data and perhaps it would be interesting to see the behavior of each treatment, so instead of grouping them together, it is possible to see what happened to each one.

By graphing them like this it seems, as you can see, that most of the lines go down, suggesting that in general the conditions improve after. What is not clear to me is how the 5 can go to 1.

Well, I hope it works, you seem to have interesting results. In Rstudio there is a tab at the top right with very simple tutorials, take a look, I think you can get a lot out of your interesting data!

Also, seems that one female patient goes from 1 to 5, check her data.

Greetings!

Sergio

Profile plot

By gender

df %>%
  # here I create a new column with an ID for each patient
  group_by(pacients) %>%
  mutate(ID = cur_group_id()) %>% 
  # now select only relevant variables for the graph
  select(ID, Before = pai_before_treatment, After = pai_after_treatment, gender) %>%
  # and this is the graph
  ggplot() +
  # this geometry allow to merge the before and after points
  geom_segment(aes(
    x = 1,
    xend = 2,
    y = as.factor(Before), # this is important, since this numbers are actually categories
    yend = as.factor(After)
  )) +
  # this is the theme of the graph
  theme_bw() +
  # and the axis names
  scale_x_discrete(
    breaks = c("1", "2"),
    labels = c("Before", "After"),
    limits = c(1, 2)
  ) +
  labs(y = "", 
       title = "Change of PAI Before and After by Gender") +
  # this disaggregate by gender and the status before, as baseline
  facet_grid(gender~Before)
Adding missing grouping variables: `pacients`
Continuous limits supplied to discrete scale.
Did you mean `limits = factor(...)` or `scale_*_continuous()`?

By tooth

df %>%
  # here I create a new column with an ID for each patient
  group_by(pacients) %>%
  mutate(ID = cur_group_id()) %>% 
  # now select only relevant variables for the graph
  select(ID, Before = pai_before_treatment, After = pai_after_treatment, tooth_type) %>%
  # and this is the graph
  ggplot() +
  # this geometry allow to merge the before and after points
  geom_segment(aes(
    x = 1,
    xend = 2,
    y = as.factor(Before), # this is important, since this numbers are actually categories
    yend = as.factor(After)
  )) +
  # this is the theme of the graph
  theme_bw() +
  # and the axis names
  scale_x_discrete(
    breaks = c("1", "2"),
    labels = c("Before", "After"),
    limits = c(1, 2)
  ) +
  labs(y = "", 
       title = "Change of PAI Before and After by Tooth") +
  # this disaggregate by gender and the status before, as baseline
  facet_grid(tooth_type~Before)
Adding missing grouping variables: `pacients`
Continuous limits supplied to discrete scale.
Did you mean `limits = factor(...)` or `scale_*_continuous()`?

By maxilar

df %>%
  # here I create a new column with an ID for each patient
  group_by(pacients) %>%
  mutate(ID = cur_group_id()) %>% 
  # now select only relevant variables for the graph
  select(ID, Before = pai_before_treatment, After = pai_after_treatment, tooth_location_maxillary_maxilla_mandibular_mandible ) %>%
  # and this is the graph
  ggplot() +
  # this geometry allow to merge the before and after points
  geom_segment(aes(
    x = 1,
    xend = 2,
    y = as.factor(Before), # this is important, since this numbers are actually categories
    yend = as.factor(After)
  )) +
  # this is the theme of the graph
  theme_bw() +
  # and the axis names
  scale_x_discrete(
    breaks = c("1", "2"),
    labels = c("Before", "After"),
    limits = c(1, 2)
  ) +
  labs(y = "", 
       title = "Change of PAI Before and After") +
  # this disaggregate by gender and the status before, as baseline
  facet_grid(tooth_location_maxillary_maxilla_mandibular_mandible~Before)
Adding missing grouping variables: `pacients`
Continuous limits supplied to discrete scale.
Did you mean `limits = factor(...)` or `scale_*_continuous()`?

Tooth and bone

df %>%
  # here I create a new column with an ID for each patient
  group_by(pacients) %>%
  mutate(ID = cur_group_id()) %>% 
  # now select only relevant variables for the graph
  select(ID, Before = pai_before_treatment, After = pai_after_treatment, tooth_location_maxillary_maxilla_mandibular_mandible, tooth_type ) %>%
  # and this is the graph
  ggplot() +
  # this geometry allow to merge the before and after points
  geom_segment(aes(
    x = 1,
    xend = 2,
    y = as.factor(Before), # this is important, since this numbers are actually categories
    yend = as.factor(After)
  )) +
  # this is the theme of the graph
  theme_bw() +
  # and the axis names
  scale_x_discrete(
    breaks = c("1", "2"),
    labels = c("Before", "After"),
    limits = c(1, 2)
  ) +
  labs(y = "", 
       title = "Change of PAI Before and After by Bone") +
  # this disaggregate by gender and the status before, as baseline
  facet_grid(tooth_location_maxillary_maxilla_mandibular_mandible~tooth_type)
Adding missing grouping variables: `pacients`
Continuous limits supplied to discrete scale.
Did you mean `limits = factor(...)` or `scale_*_continuous()`?

LS0tCnRpdGxlOiAiQWxla3NhbmRyYSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0CmVkaXRvcl9vcHRpb25zOgogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUKLS0tCgojIFBhY2thZ2VzCgpgYGB7cn0KcGFjbWFuOjpwX2xvYWQodGlkeXZlcnNlLCAKICAgICAgICAgICAgICAgamFuaXRvciwgCiAgICAgICAgICAgICAgIGd0c3VtbWFyeSwgCiAgICAgICAgICAgICAgIHZpc2RhdCkKYGBgCgojIERhdGFzZXQKCmBgYHtyfQpkZiA8LSByZWFkX2NzdigiaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvZS8yUEFDWC0xdlN0djdQcjY5RHRSS3Y2Tnc2Z1ZCZXA4aGJUM3BFZU82QjF2Tnd4S18xRFVIZ3BvVGdidVJwWjRTdmd0SEZRbkJaSlZHZWVRVnlSdVhabC9wdWI/Z2lkPTEwODE3OTU1MTUmc2luZ2xlPXRydWUmb3V0cHV0PWNzdiIpCmBgYApgYGB7cn0KZGYgPC0gZGYgJT4lIAogIGphbml0b3I6OmNsZWFuX25hbWVzKCkKYGBgCgpgYGB7cn0KaGVhZChkZikKYGBgCgpgYGB7cn0KZGYgJT4lIAogIHZpc2RhdDo6dmlzX2RhdCgpCmBgYAoKCmBgYHtyfQpkZiA8LSBkZiAlPiUgCiAgZmlsbChwYWNpZW50cywKICAgICAgIGluaXRpYWxfdHJlYXRtZW50X2luaXRpYWxfcmV0cmVhdG1lbnRfcmV0cmVhdG1lbnQsIAogICAgICAgYWdlLCAKICAgICAgIGdlbmRlciwgCiAgICAgICBwYWlfYWZ0ZXJfdHJlYXRtZW50LCAKICAgICAgIHBhaV9iZWZvcmVfdHJlYXRtZW50LCAKICAgICAgIGFnZV80NV8xXzQ1XzIpIApgYGAKCmBgYHtyfQpnbGltcHNlKGRmKQpgYGAKYGBge3J9CmRmICU+JSAKICBtdXRhdGUocGFpX2FmdGVyX3RyZWF0bWVudCA9IGFzLmRvdWJsZShwYWlfYWZ0ZXJfdHJlYXRtZW50KSkgJT4lIAogIGZpbGwocGFpX2FmdGVyX3RyZWF0bWVudCkgJT4lIAogIG11dGF0ZShwYWlfZGlmZmVyZW5jZSA9IHBhaV9hZnRlcl90cmVhdG1lbnQgLSBwYWlfYmVmb3JlX3RyZWF0bWVudCkgJT4lIAogIGdncGxvdChhZXMoeCA9IHBhaV9kaWZmZXJlbmNlKSkgKyAKICBnZW9tX2hpc3RvZ3JhbShiaW5zID0gNSkgKyAKICBmYWNldF9ncmlkKGdlbmRlcn4uKQpgYGAKCiMgVGFibGUgMQpgYGB7cn0KZGYgJT4lIAogIHBpdm90X2xvbmdlcihwYWlfYmVmb3JlX3RyZWF0bWVudDpwYWlfYWZ0ZXJfdHJlYXRtZW50LCAKICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAicGFpIiwgCiAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJwYWlfdmFsdWVzIikgJT4lIAogIHNlbGVjdChpbml0aWFsX3RyZWF0bWVudF9pbml0aWFsX3JldHJlYXRtZW50X3JldHJlYXRtZW50LCAKICAgICAgICAgcGFpX3ZhbHVlcykgJT4lIAogIG11dGF0ZShwYWlfdmFsdWVzID0gYXMuZmFjdG9yKHBhaV92YWx1ZXMpKSAlPiUgCiAgZ3RzdW1tYXJ5Ojp0Ymxfc3VtbWFyeShieSA9IGluaXRpYWxfdHJlYXRtZW50X2luaXRpYWxfcmV0cmVhdG1lbnRfcmV0cmVhdG1lbnQpICU+JSAKICBndHN1bW1hcnk6OmFkZF9wKCkKYGBgCgoKRGVhciBBbGVrc2FuZHJhCgpJIHdhcyBleGFtaW5pbmcgeW91ciBkYXRhIGFuZCBwZXJoYXBzIGl0IHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIHNlZSB0aGUgYmVoYXZpb3Igb2YgZWFjaCB0cmVhdG1lbnQsIHNvIGluc3RlYWQgb2YgZ3JvdXBpbmcgdGhlbSB0b2dldGhlciwgaXQgaXMgcG9zc2libGUgdG8gc2VlIHdoYXQgaGFwcGVuZWQgdG8gZWFjaCBvbmUuIAoKQnkgZ3JhcGhpbmcgdGhlbSBsaWtlIHRoaXMgaXQgc2VlbXMsIGFzIHlvdSBjYW4gc2VlLCB0aGF0IG1vc3Qgb2YgdGhlIGxpbmVzIGdvIGRvd24sIHN1Z2dlc3RpbmcgdGhhdCBpbiBnZW5lcmFsIHRoZSBjb25kaXRpb25zIGltcHJvdmUgYWZ0ZXIuIFdoYXQgaXMgbm90IGNsZWFyIHRvIG1lIGlzIGhvdyB0aGUgNSBjYW4gZ28gdG8gMS4gCgpXZWxsLCBJIGhvcGUgaXQgd29ya3MsIHlvdSBzZWVtIHRvIGhhdmUgaW50ZXJlc3RpbmcgcmVzdWx0cy4gSW4gUnN0dWRpbyB0aGVyZSBpcyBhIHRhYiBhdCB0aGUgdG9wIHJpZ2h0IHdpdGggdmVyeSBzaW1wbGUgdHV0b3JpYWxzLCB0YWtlIGEgbG9vaywgSSB0aGluayB5b3UgY2FuIGdldCBhIGxvdCBvdXQgb2YgeW91ciBpbnRlcmVzdGluZyBkYXRhIQoKQWxzbywgc2VlbXMgdGhhdCBvbmUgZmVtYWxlIHBhdGllbnQgZ29lcyBmcm9tIDEgdG8gNSwgY2hlY2sgaGVyIGRhdGEuIAoKR3JlZXRpbmdzIQoKU2VyZ2lvCgoKIyBQcm9maWxlIHBsb3QKCgojIyBCeSBnZW5kZXIKYGBge3J9CgoKZGYgJT4lCiAgIyBoZXJlIEkgY3JlYXRlIGEgbmV3IGNvbHVtbiB3aXRoIGFuIElEIGZvciBlYWNoIHBhdGllbnQKICBncm91cF9ieShwYWNpZW50cykgJT4lCiAgbXV0YXRlKElEID0gY3VyX2dyb3VwX2lkKCkpICU+JSAKICAjIG5vdyBzZWxlY3Qgb25seSByZWxldmFudCB2YXJpYWJsZXMgZm9yIHRoZSBncmFwaAogIHNlbGVjdChJRCwgQmVmb3JlID0gcGFpX2JlZm9yZV90cmVhdG1lbnQsIEFmdGVyID0gcGFpX2FmdGVyX3RyZWF0bWVudCwgZ2VuZGVyKSAlPiUKICAjIGFuZCB0aGlzIGlzIHRoZSBncmFwaAogIGdncGxvdCgpICsKICAjIHRoaXMgZ2VvbWV0cnkgYWxsb3cgdG8gbWVyZ2UgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgcG9pbnRzCiAgZ2VvbV9zZWdtZW50KGFlcygKICAgIHggPSAxLAogICAgeGVuZCA9IDIsCiAgICB5ID0gYXMuZmFjdG9yKEJlZm9yZSksICMgdGhpcyBpcyBpbXBvcnRhbnQsIHNpbmNlIHRoaXMgbnVtYmVycyBhcmUgYWN0dWFsbHkgY2F0ZWdvcmllcwogICAgeWVuZCA9IGFzLmZhY3RvcihBZnRlcikKICApKSArCiAgIyB0aGlzIGlzIHRoZSB0aGVtZSBvZiB0aGUgZ3JhcGgKICB0aGVtZV9idygpICsKICAjIGFuZCB0aGUgYXhpcyBuYW1lcwogIHNjYWxlX3hfZGlzY3JldGUoCiAgICBicmVha3MgPSBjKCIxIiwgIjIiKSwKICAgIGxhYmVscyA9IGMoIkJlZm9yZSIsICJBZnRlciIpLAogICAgbGltaXRzID0gYygxLCAyKQogICkgKwogIGxhYnMoeSA9ICIiLCAKICAgICAgIHRpdGxlID0gIkNoYW5nZSBvZiBQQUkgQmVmb3JlIGFuZCBBZnRlciBieSBHZW5kZXIiKSArCiAgIyB0aGlzIGRpc2FnZ3JlZ2F0ZSBieSBnZW5kZXIgYW5kIHRoZSBzdGF0dXMgYmVmb3JlLCBhcyBiYXNlbGluZQogIGZhY2V0X2dyaWQoZ2VuZGVyfkJlZm9yZSkKYGBgCgojIEJ5IHRvb3RoCgpgYGB7cn0KZGYgJT4lCiAgIyBoZXJlIEkgY3JlYXRlIGEgbmV3IGNvbHVtbiB3aXRoIGFuIElEIGZvciBlYWNoIHBhdGllbnQKICBncm91cF9ieShwYWNpZW50cykgJT4lCiAgbXV0YXRlKElEID0gY3VyX2dyb3VwX2lkKCkpICU+JSAKICAjIG5vdyBzZWxlY3Qgb25seSByZWxldmFudCB2YXJpYWJsZXMgZm9yIHRoZSBncmFwaAogIHNlbGVjdChJRCwgQmVmb3JlID0gcGFpX2JlZm9yZV90cmVhdG1lbnQsIEFmdGVyID0gcGFpX2FmdGVyX3RyZWF0bWVudCwgdG9vdGhfdHlwZSkgJT4lCiAgIyBhbmQgdGhpcyBpcyB0aGUgZ3JhcGgKICBnZ3Bsb3QoKSArCiAgIyB0aGlzIGdlb21ldHJ5IGFsbG93IHRvIG1lcmdlIHRoZSBiZWZvcmUgYW5kIGFmdGVyIHBvaW50cwogIGdlb21fc2VnbWVudChhZXMoCiAgICB4ID0gMSwKICAgIHhlbmQgPSAyLAogICAgeSA9IGFzLmZhY3RvcihCZWZvcmUpLCAjIHRoaXMgaXMgaW1wb3J0YW50LCBzaW5jZSB0aGlzIG51bWJlcnMgYXJlIGFjdHVhbGx5IGNhdGVnb3JpZXMKICAgIHllbmQgPSBhcy5mYWN0b3IoQWZ0ZXIpCiAgKSkgKwogICMgdGhpcyBpcyB0aGUgdGhlbWUgb2YgdGhlIGdyYXBoCiAgdGhlbWVfYncoKSArCiAgIyBhbmQgdGhlIGF4aXMgbmFtZXMKICBzY2FsZV94X2Rpc2NyZXRlKAogICAgYnJlYWtzID0gYygiMSIsICIyIiksCiAgICBsYWJlbHMgPSBjKCJCZWZvcmUiLCAiQWZ0ZXIiKSwKICAgIGxpbWl0cyA9IGMoMSwgMikKICApICsKICBsYWJzKHkgPSAiIiwgCiAgICAgICB0aXRsZSA9ICJDaGFuZ2Ugb2YgUEFJIEJlZm9yZSBhbmQgQWZ0ZXIgYnkgVG9vdGgiKSArCiAgIyB0aGlzIGRpc2FnZ3JlZ2F0ZSBieSBnZW5kZXIgYW5kIHRoZSBzdGF0dXMgYmVmb3JlLCBhcyBiYXNlbGluZQogIGZhY2V0X2dyaWQodG9vdGhfdHlwZX5CZWZvcmUpCmBgYAoKIyMgQnkgbWF4aWxhcgoKYGBge3J9CmRmICU+JQogICMgaGVyZSBJIGNyZWF0ZSBhIG5ldyBjb2x1bW4gd2l0aCBhbiBJRCBmb3IgZWFjaCBwYXRpZW50CiAgZ3JvdXBfYnkocGFjaWVudHMpICU+JQogIG11dGF0ZShJRCA9IGN1cl9ncm91cF9pZCgpKSAlPiUgCiAgIyBub3cgc2VsZWN0IG9ubHkgcmVsZXZhbnQgdmFyaWFibGVzIGZvciB0aGUgZ3JhcGgKICBzZWxlY3QoSUQsIEJlZm9yZSA9IHBhaV9iZWZvcmVfdHJlYXRtZW50LCBBZnRlciA9IHBhaV9hZnRlcl90cmVhdG1lbnQsIHRvb3RoX2xvY2F0aW9uX21heGlsbGFyeV9tYXhpbGxhX21hbmRpYnVsYXJfbWFuZGlibGUgKSAlPiUKICAjIGFuZCB0aGlzIGlzIHRoZSBncmFwaAogIGdncGxvdCgpICsKICAjIHRoaXMgZ2VvbWV0cnkgYWxsb3cgdG8gbWVyZ2UgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgcG9pbnRzCiAgZ2VvbV9zZWdtZW50KGFlcygKICAgIHggPSAxLAogICAgeGVuZCA9IDIsCiAgICB5ID0gYXMuZmFjdG9yKEJlZm9yZSksICMgdGhpcyBpcyBpbXBvcnRhbnQsIHNpbmNlIHRoaXMgbnVtYmVycyBhcmUgYWN0dWFsbHkgY2F0ZWdvcmllcwogICAgeWVuZCA9IGFzLmZhY3RvcihBZnRlcikKICApKSArCiAgIyB0aGlzIGlzIHRoZSB0aGVtZSBvZiB0aGUgZ3JhcGgKICB0aGVtZV9idygpICsKICAjIGFuZCB0aGUgYXhpcyBuYW1lcwogIHNjYWxlX3hfZGlzY3JldGUoCiAgICBicmVha3MgPSBjKCIxIiwgIjIiKSwKICAgIGxhYmVscyA9IGMoIkJlZm9yZSIsICJBZnRlciIpLAogICAgbGltaXRzID0gYygxLCAyKQogICkgKwogIGxhYnMoeSA9ICIiLCAKICAgICAgIHRpdGxlID0gIkNoYW5nZSBvZiBQQUkgQmVmb3JlIGFuZCBBZnRlciBieSBCb25lIikgKwogICMgdGhpcyBkaXNhZ2dyZWdhdGUgYnkgZ2VuZGVyIGFuZCB0aGUgc3RhdHVzIGJlZm9yZSwgYXMgYmFzZWxpbmUKICBmYWNldF9ncmlkKHRvb3RoX2xvY2F0aW9uX21heGlsbGFyeV9tYXhpbGxhX21hbmRpYnVsYXJfbWFuZGlibGV+QmVmb3JlKQpgYGAKCgojIyBUb290aCBhbmQgYm9uZQoKCmBgYHtyfQpkZiAlPiUKICAjIGhlcmUgSSBjcmVhdGUgYSBuZXcgY29sdW1uIHdpdGggYW4gSUQgZm9yIGVhY2ggcGF0aWVudAogIGdyb3VwX2J5KHBhY2llbnRzKSAlPiUKICBtdXRhdGUoSUQgPSBjdXJfZ3JvdXBfaWQoKSkgJT4lIAogICMgbm93IHNlbGVjdCBvbmx5IHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgdGhlIGdyYXBoCiAgc2VsZWN0KElELCBCZWZvcmUgPSBwYWlfYmVmb3JlX3RyZWF0bWVudCwgQWZ0ZXIgPSBwYWlfYWZ0ZXJfdHJlYXRtZW50LCB0b290aF9sb2NhdGlvbl9tYXhpbGxhcnlfbWF4aWxsYV9tYW5kaWJ1bGFyX21hbmRpYmxlLCB0b290aF90eXBlICkgJT4lCiAgIyBhbmQgdGhpcyBpcyB0aGUgZ3JhcGgKICBnZ3Bsb3QoKSArCiAgIyB0aGlzIGdlb21ldHJ5IGFsbG93IHRvIG1lcmdlIHRoZSBiZWZvcmUgYW5kIGFmdGVyIHBvaW50cwogIGdlb21fc2VnbWVudChhZXMoCiAgICB4ID0gMSwKICAgIHhlbmQgPSAyLAogICAgeSA9IGFzLmZhY3RvcihCZWZvcmUpLCAjIHRoaXMgaXMgaW1wb3J0YW50LCBzaW5jZSB0aGlzIG51bWJlcnMgYXJlIGFjdHVhbGx5IGNhdGVnb3JpZXMKICAgIHllbmQgPSBhcy5mYWN0b3IoQWZ0ZXIpCiAgKSkgKwogICMgdGhpcyBpcyB0aGUgdGhlbWUgb2YgdGhlIGdyYXBoCiAgdGhlbWVfYncoKSArCiAgIyBhbmQgdGhlIGF4aXMgbmFtZXMKICBzY2FsZV94X2Rpc2NyZXRlKAogICAgYnJlYWtzID0gYygiMSIsICIyIiksCiAgICBsYWJlbHMgPSBjKCJCZWZvcmUiLCAiQWZ0ZXIiKSwKICAgIGxpbWl0cyA9IGMoMSwgMikKICApICsKICBsYWJzKHkgPSAiIiwgCiAgICAgICB0aXRsZSA9ICJDaGFuZ2Ugb2YgUEFJIEJlZm9yZSBhbmQgQWZ0ZXIgYnkgQm9uZSIpICsKICAjIHRoaXMgZGlzYWdncmVnYXRlIGJ5IGdlbmRlciBhbmQgdGhlIHN0YXR1cyBiZWZvcmUsIGFzIGJhc2VsaW5lCiAgZmFjZXRfZ3JpZCh0b290aF9sb2NhdGlvbl9tYXhpbGxhcnlfbWF4aWxsYV9tYW5kaWJ1bGFyX21hbmRpYmxlfnRvb3RoX3R5cGUpCmBgYAoK