Turisme


Krydstogter
TUXKRH_raw <- 
  statgl_url("TUXKRH", lang = language) %>% 
  statgl_fetch(
    month     = px_all(),
    port      = px_all(),
    time      = px_top(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

# Skal have ændret time i fetch og sys.time filter tilbage når der kommer nye tal for 2022 også i de næste 2 tabeller

TUXKRH <- 
  TUXKRH_raw %>% 
  #filter(time <= Sys.time() %>% year() - 3) %>% 
  drop_na() %>%
  mutate(
    month = month %>% fct_inorder(),
    port = port %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
  ) %>% 
  spread(month, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0))

TUXKRH %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = TUXKRH[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) |> 
  column_spec(2, bold = T)
Total April Maj Juni Juli August September Oktober
2024
I alt 181.406 152 420 4.607 32.478 107.604 35.577 568
Qaqortoq 46.630 0 104 0 1.283 36.744 8.499 0
Nuuk 37.242 0 0 727 17.546 12.678 6.100 191
Nanortalik 28.937 0 0 0 2.354 20.310 6.273 0
Sisimiut 14.842 0 0 692 2.306 8.964 2.880 0
Ilulissat 14.165 0 0 388 2.326 8.558 2.893 0
Kangerlussuaq 7.109 0 0 0 1.057 4.067 1.985 0
Ittoqqortoormiit 6.633 0 196 133 1.025 2.902 2.186 191
Qeqertarsuaq 5.254 0 0 12 806 3.647 789 0
Paamiut 5.196 0 0 1.931 1.371 1.894 0 0
Narsaq 3.299 0 0 11 124 1.933 1.231 0
Uummannaq 3.150 0 0 0 725 1.877 548 0
Narsarsuaq 2.624 0 0 11 884 1.423 131 175
Maniitsoq 2.028 0 0 691 429 392 516 0
Upernavik 1.207 0 0 0 216 533 458 0
Tasiilaq 934 152 120 0 0 211 440 11
Qaanaaq 652 0 0 0 0 203 449 0
Aasiaat 516 0 0 0 19 497 0 0
Qasigiannguit 497 0 0 0 0 497 0 0
Qassiarsuk 133 0 0 0 0 133 0 0


Se Statistikbankens tabel: TUXKRH

TUXKRL_raw <- 
  statgl_url("TUXKRP", lang = language) %>% 
  statgl_fetch(
    month     = px_all(),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUXKRL_raw %>% 
  mutate(
    month = month %>% fct_inorder(),
    time = time %>% fct_inorder() %>% fct_rev()
  ) %>% 
  drop_na() %>% 
  arrange(time, month) %>% 
  spread(time, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0)) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  row_spec(1, bold = TRUE)
2024 2023 2022
Total 95.185 76.477 43.999
April 152 19 9
Maj 420 557 252
Juni 3.160 4.066 1.403
Juli 23.043 21.627 12.496
August 52.606 38.469 22.012
September 15.427 11.739 7.827
Oktober 377 0 0


Se Statistikbankens tabel: TUXKRP

Flypassagerer
TUXUPAX_raw <- 
  statgl_url("TUXUPAX", lang = language) %>% 
  statgl_fetch(
    time      = px_top(2),
    month     = px_all(),
    airport   = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUXUPAX <- 
  TUXUPAX_raw %>% 
  filter(time < Sys.time() %>% year()) %>% 
  mutate(
    month = month %>% fct_inorder(),
    airport = airport %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
    ) %>% 
  spread(airport, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0))


TUXUPAX %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = TUXUPAX[["time"]] %>% table()) %>% 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
I alt Kangerlussuaq Nuuk Narsarsuaq Kulusuk Ilulissat Nerlerit inaat
2024
I alt 96.817 69.447 11.306 5.997 5.359 3.816 892
Januar 4.256 3.849 265 74 40 0 28
Februar 4.254 3.819 298 0 27 67 43
Marts 7.042 5.700 516 193 397 166 70
April 6.803 5.851 298 278 297 17 62
Maj 6.858 5.592 465 496 229 0 76
Juni 9.867 7.376 672 719 624 404 72
Juli 16.037 11.073 871 1.531 1.256 1.212 94
August 14.665 9.400 426 1.691 1.564 1.438 146
September 9.481 7.044 128 954 682 512 161
Oktober 7.056 6.383 457 0 162 0 54
November 4.616 3.360 1.146 0 61 0 49
December 5.882 0 5.764 61 20 0 37


Se Statistikbankens tabel: TUXUPAX

Hotelovernatninger
TUXKAP_raw <- 
  statgl_url("TUXKAP", lang = language) %>% 
  statgl_fetch(
    unit      = c(2),
    month     = px_all(),
    region    = px_all(),
    time      = px_top(2),
    .col_code = TRUE
  ) %>% 
  as_tibble()


TUXKAP <- 
  TUXKAP_raw %>% 
  filter(time <= Sys.time() %>% year() -1) %>% 
  mutate(
    month = month %>% fct_inorder(),
    region = region %>% fct_inorder()
  ) %>% 
  spread(month, value) %>% 
  unite(combi, unit, time, sep = ", ")

TUXKAP %>% 
  select(-combi) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = TUXKAP[["combi"]] %>% table()) %>% 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
I alt Januar Februar Marts April Maj Juni Juli August September Oktober November December
Belægningsprocent, 2024
I alt 46,2 28,1 38,0 50,7 46,0 45,5 49,5 59,6 64,8 56,1 48,6 37,0 24,4
Avannaata Kommunia og Kommune Qeqertalik 47,7 21,6 32,2 57,2 37,9 48,3 44,6 77,7 83,5 58,1 46,5 32,5 20,2
Ilulissat (*) 48,6 20,3 33,9 60,5 38,9 50,9 43,2 79,7 82,4 59,5 48,6 32,3 21,1
Qeqqata Kommunia 45,9 19,5 41,5 52,3 48,0 51,4 61,3 58,9 66,9 58,2 49,9 29,9 11,7
Kommune Kujalleq 36,4 36,0 26,5 27,4 32,5 26,2 43,1 54,5 51,4 39,7 33,5 24,6 30,3
Kommuneqarfik Sermersooq Vest 51,7 39,1 52,0 56,7 58,3 54,8 51,9 43,4 52,4 63,0 58,7 55,1 35,8
Kommuneqarfik Sermersooq Øst 42,8 12,5 24,0 51,4 50,9 35,4 49,2 70,6 71,7 57,9 44,9 22,7 12,9


Se Statistikbankens tabel: TUXKAP

Slædehunde
TUX01_raw <- 
  statgl_url("TUX01", lang = language) %>%
  statgl_fetch(
    district  = px_all(),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUX01_raw %>% 
  arrange(desc(time)) %>% 
  mutate(time = time %>% fct_inorder()) %>% 
  spread(time, value) %>% 
  arrange(desc(`2019`)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  row_spec(1, bold = TRUE)
2022 2021 2020 2019 2018
I alt 13.123 13.395 13.417 13.315 14.130
Upernavik 2.501 2.478 2.719 3.058 2.954
Ilulissat 2.974 3.096 3.108 2.690 2.933
Uummannaq 1.863 1.863 1.751 1.811 2.633
Sisimiut 1.321 1.252 1.153 1.129 1.067
Qaanaaq 983 1.163 1.163 1.071 1.053
Tasiilaq 942 1.045 924 1.028 1.012
Qasigiannguit 806 943 810 809 756
Aasiaat 602 417 635 656 656
Kangaatsiaq 576 593 625 550 550
Qeqertarsuaq 375 365 349 319 327
Ittoqqortoormiit 180 180 180 194 189


Se Statistikbankens tabel: TUX01


Sidst opdateret: 22. juni 2025
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBUUlVFLA0KCXdhcm5pbmcgPSBGQUxTRQ0KKQ0KDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSgic3RhdGdsIikNCmxpYnJhcnkoImthYmxlRXh0cmEiKQ0KbGlicmFyeSgibHVicmlkYXRlIikNCmxpYnJhcnkoInlhbWwiKQ0KDQpsYW5ndWFnZSAgPC0gcGFyYW1zJGxhbmcNCm9wdGlvbiAgICA8LSBwYXN0ZTAoIj9sYW5nPSIsIGxhbmd1YWdlLCAiJnNlbGVjdCIpDQpsb2dvICAgICAgPC0gcGFzdGUwKGdldHdkKCksIi9hZGQvbG9nby5naWYiKQ0KdHh0ICAgICAgIDwtIHJlYWRfeWFtbChwYXN0ZTAoZ2V0d2QoKSwgIi9hZGQvdHh0LnltbCIpLCBmaWxlRW5jb2RpbmcgPSAiSVNPLTg4NTktMSIpDQpzb3VyY2UgICAgPC0gdHh0JHNvdXJjZVtsYW5ndWFnZV0gJT4lIHVubGlzdCgpDQpgYGANCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KDQouYWNjb3JkaW9uIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzkxOTkwMDsNCiAgY29sb3I6IHdoaXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDE4cHg7DQogIHdpZHRoOiAxMDAlOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCiAgb3V0bGluZTogbm9uZTsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICB0cmFuc2l0aW9uOiAwLjRzOw0KfQ0KDQouYWN0aXZlLCAuYWNjb3JkaW9uOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5NzI0MjsNCn0NCg0KLmFjY29yZGlvbjphZnRlciB7DQogIGNvbnRlbnQ6ICdcMDAyQic7DQogIGNvbG9yOiAjNzc3Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBtYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQouYWN0aXZlOmFmdGVyIHsNCiAgY29udGVudDogIlwyMjEyIjsNCn0NCg0KLnBhbmVsIHsNCiAgcGFkZGluZzogMHB4IDVweCAwcHggNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2Utb3V0Ow0KfQ0KDQpkZXRhaWxzIHsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCmRldGFpbHMgPiBzdW1tYXJ5IHsNCiAgcGFkZGluZzogNHB4IDEycHg7DQogIHdpZHRoOiAxMDAlOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3Zjk5Ow0KICBib3JkZXI6IHNvbGlkOw0KICBib3JkZXItY29sb3I6IHdoaXRlOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBjb2xvcjogd2hpdGU7DQp9DQoNCmRldGFpbHNbb3Blbl0gPiBzdW1tYXJ5IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhYTQxYTsNCn0NCg0KDQoudGl0bGUgew0KICBjb2xvcjogIzFiNTQ2MzsNCiAgZm9udC1zaXplOiAzNnB4Ow0KfQ0KDQoNCi5wZXJzb25lciB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA0NDU5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi7DuGtvbm9taSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA3Rjk5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAwLjFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi50dsOmcmfDpWVuZGUgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogI2ZhYTQxYTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouY29udGFpbmVyIHsNCiAgd2lkdGg6IGluaGVyaXQ7DQp9DQoNCg0KDQpgYGANCg0KYGBge3IgeGFyaW5nYW5FeHRyYS1jbGlwYm9hcmQsIGVjaG89RkFMU0V9DQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCmBgYA0KDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkVFUkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUkgiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KYGBge3IsIGNsYXNzLnNvdXJjZT0na2xpcHB5J30NCg0KVFVYS1JIX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYS1JIIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICBwb3J0ICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQojIFNrYWwgaGF2ZSDDpm5kcmV0IHRpbWUgaSBmZXRjaCBvZyBzeXMudGltZSBmaWx0ZXIgdGlsYmFnZSBuw6VyIGRlciBrb21tZXIgbnllIHRhbCBmb3IgMjAyMiBvZ3PDpSBpIGRlIG7DpnN0ZSAyIHRhYmVsbGVyDQoNClRVWEtSSCA8LSANCiAgVFVYS1JIX3JhdyAlPiUgDQogICNmaWx0ZXIodGltZSA8PSBTeXMudGltZSgpICU+JSB5ZWFyKCkgLSAzKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUNCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcG9ydCA9IHBvcnQgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAubmFfcm0gPSBUUlVFLCAuZGVzYyA9IFRSVUUpDQogICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQpUVVhLUkggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWEtSSFtbInRpbWUiXV0gJT4lIHRhYmxlKCkpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVhLUkgiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2I0ZTdkNGZiLWQ5MjctNDFhMS1hMjM3LTA1ZWY5ODU4YTBjOSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQoNCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMjogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUlAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLUlB9DQoNClRVWEtSTF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtSUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWEtSTF9yYXcgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICB0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSAlPiUgZmN0X3JldigpDQogICkgJT4lIA0KICBkcm9wX25hKCkgJT4lIA0KICBhcnJhbmdlKHRpbWUsIG1vbnRoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUocmVwbGFjZV8wcyA9IFRSVUUpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8wN2NiMTE0NS0zZDA0LTRjMDAtYjU5ZS1jMDQ4NTg1OWE4NTkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWIyW2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDM6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYVVBBWCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFRVWFVQQVh9DQoNClRVWFVQQVhfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhVUEFYIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgYWlycG9ydCAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYVVBBWCA8LSANCiAgVFVYVVBBWF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8IFN5cy50aW1lKCkgJT4lIHllYXIoKSkgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBhaXJwb3J0ID0gYWlycG9ydCAlPiUgZmN0X3Jlb3JkZXIodmFsdWUsIC5mdW4gPSBzdW0sIC5uYV9ybSA9IFRSVUUsIC5kZXNjID0gVFJVRSkNCiAgICApICU+JSANCiAgc3ByZWFkKGFpcnBvcnQsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQoNClRVWFVQQVggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWFVQQVhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYVVBBWCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMGFiMTRkN2QtM2NkMS00NmJkLWE2ZmItZWM4Y2NhYjhkNjdiIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLQVAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLQVB9DQoNClRVWEtBUF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtBUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdW5pdCAgICAgID0gYygyKSwNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICByZWdpb24gICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KDQpUVVhLQVAgPC0gDQogIFRVWEtBUF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8PSBTeXMudGltZSgpICU+JSB5ZWFyKCkgLTEpICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcmVnaW9uID0gcmVnaW9uICU+JSBmY3RfaW5vcmRlcigpDQogICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIHVuaXRlKGNvbWJpLCB1bml0LCB0aW1lLCBzZXAgPSAiLCAiKQ0KDQpUVVhLQVAgJT4lIA0KICBzZWxlY3QoLWNvbWJpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gVFVYS0FQW1siY29tYmkiXV0gJT4lIHRhYmxlKCkpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFQpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVhLQVAiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzQ4OGFhY2ZiLTc5ZTktNDU2ZC04ODg5LWQ4MjA2YTQ4NGNiZCIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+IA0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWI0W2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDU6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYMDEiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVgwMX0NCg0KVFVYMDFfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVgwMSIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lDQogIHN0YXRnbF9mZXRjaCgNCiAgICBkaXN0cmljdCAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoNSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYMDFfcmF3ICU+JSANCiAgYXJyYW5nZShkZXNjKHRpbWUpKSAlPiUgDQogIG11dGF0ZSh0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpICU+JSANCiAgYXJyYW5nZShkZXNjKGAyMDE5YCkpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVgwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvYmZlOGY5ZGUtYWUxOC00ZjUyLWJjN2ItZDQ4MDkxMzAxOTQxIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGhyIHN0eWxlPSJib3JkZXI6MXB4IHJpZGdlIGxpZ2h0Z3JheSI+IDwvaHI+DQo8Y2VudGVyPiANCjxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiANCjwvY2VudGVyPg0KDQoNCjxzY3JpcHQ+DQp2YXIgYWNjID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNjb3JkaW9uIik7DQp2YXIgaTsNCg0KZm9yIChpID0gMDsgaSA8IGFjYy5sZW5ndGg7IGkrKykgew0KICBhY2NbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIpOw0KICAgIHZhciBwYW5lbCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nOw0KICAgIGlmIChwYW5lbC5zdHlsZS5tYXhIZWlnaHQpIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IG51bGw7DQogICAgfSBlbHNlIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IHBhbmVsLnNjcm9sbEhlaWdodCArICJweCI7DQogICAgfSANCiAgfSk7DQp9DQo8L3NjcmlwdD4NCg0KDQo=