Turisme
Krydstogter
TUXKRH_raw <-
statgl_url("TUXKRH", lang = language) %>%
statgl_fetch(
month = px_all(),
port = px_all(),
time = px_top(3),
.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) %>%
mutate(
month = month %>% fct_inorder(),
port = port %>% fct_reorder(value, .fun = sum, na.rm = TRUE, .desc = TRUE)
) %>%
drop_na() %>%
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
|
Maj
|
Juni
|
Juli
|
August
|
September
|
Oktober
|
2019
|
I alt
|
122.314
|
124
|
101
|
25.681
|
74.437
|
21.907
|
64
|
Qaqortoq
|
28.214
|
-
|
-
|
3.816
|
16.700
|
7.698
|
-
|
Nuuk
|
18.172
|
-
|
25
|
3.480
|
11.164
|
3.503
|
-
|
Ilulissat
|
14.762
|
-
|
51
|
2.035
|
10.391
|
2.285
|
-
|
Nanortalik
|
11.666
|
-
|
-
|
1.600
|
9.145
|
921
|
-
|
Sisimiut
|
11.629
|
25
|
-
|
3.729
|
6.662
|
1.213
|
-
|
Kangerlussuaq
|
7.953
|
58
|
3
|
1.844
|
4.901
|
1.147
|
-
|
Paamiut
|
5.853
|
-
|
-
|
464
|
3.984
|
1.405
|
-
|
Qeqertarsuaq
|
4.895
|
6
|
22
|
2.103
|
2.559
|
205
|
-
|
Tasiilaq
|
3.099
|
-
|
-
|
1.473
|
1.626
|
-
|
-
|
Narsarsuaq
|
2.968
|
-
|
-
|
1.243
|
1.433
|
292
|
-
|
Ittoqqortoormiit
|
2.860
|
-
|
-
|
-
|
1.048
|
1.748
|
64
|
Uummannaq
|
2.717
|
-
|
-
|
1.317
|
1.264
|
136
|
-
|
Narsaq
|
2.705
|
-
|
-
|
552
|
1.393
|
760
|
-
|
Maniitsoq
|
1.736
|
28
|
-
|
768
|
940
|
-
|
-
|
Qaanaaq
|
795
|
-
|
-
|
-
|
662
|
133
|
-
|
Qassiarsuk
|
630
|
-
|
-
|
-
|
169
|
461
|
-
|
Upernavik
|
595
|
-
|
-
|
364
|
231
|
-
|
-
|
Aasiaat
|
536
|
7
|
-
|
364
|
165
|
-
|
-
|
Qasigiannguit
|
529
|
-
|
-
|
529
|
-
|
-
|
-
|
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)
|
2019
|
2018
|
2017
|
Total
|
46.633
|
45.739
|
38.182
|
Maj
|
89
|
156
|
185
|
Juni
|
76
|
1.768
|
463
|
Juli
|
7.497
|
9.620
|
7.708
|
August
|
26.236
|
17.269
|
14.820
|
September
|
12.671
|
15.990
|
14.958
|
Oktober
|
64
|
936
|
48
|
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(month, 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
|
Januar
|
Februar
|
Marts
|
April
|
Maj
|
Juni
|
Juli
|
August
|
September
|
Oktober
|
November
|
December
|
2022
|
I alt
|
85.484
|
2.865
|
3.252
|
5.322
|
6.022
|
6.085
|
9.316
|
14.543
|
12.835
|
9.321
|
6.355
|
4.374
|
5.194
|
Kangerlussuaq
|
69.036
|
2.677
|
3.079
|
4.777
|
5.471
|
5.224
|
6.970
|
10.898
|
8.612
|
7.077
|
5.689
|
3.902
|
4.660
|
Nuuk
|
5.263
|
116
|
118
|
250
|
316
|
482
|
601
|
490
|
808
|
848
|
565
|
318
|
351
|
Narsarsuaq
|
4.374
|
-
|
-
|
-
|
-
|
-
|
777
|
1.512
|
1.505
|
468
|
-
|
-
|
112
|
Kulusuk
|
4.256
|
39
|
34
|
157
|
195
|
287
|
501
|
1.083
|
1.232
|
514
|
60
|
106
|
48
|
Ilulissat
|
1.748
|
-
|
-
|
80
|
-
|
27
|
402
|
461
|
486
|
292
|
-
|
-
|
-
|
Nerlerit inaat
|
807
|
33
|
21
|
58
|
40
|
65
|
65
|
99
|
192
|
122
|
41
|
48
|
23
|
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(),
.col_code = TRUE
) %>%
as_tibble()
TUXKAP <-
TUXKAP_raw %>%
filter(time < Sys.time() %>% year()) %>%
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, 2022
|
I alt
|
47,6
|
25,5
|
34,5
|
47,7
|
44,4
|
49,6
|
52,2
|
57,2
|
64,1
|
65,8
|
54,1
|
42,8
|
25,5
|
Avannaata Kommunia og Kommune Qeqertalik
|
57,2
|
22,4
|
36,1
|
52,8
|
54,6
|
60,3
|
67,6
|
84,6
|
81,7
|
76,3
|
63,4
|
42,2
|
28,9
|
Ilulissat (*)
|
57,5
|
20,7
|
34,7
|
56,5
|
55,5
|
64,0
|
65,8
|
89,4
|
79,2
|
72,7
|
63,7
|
36,0
|
31,8
|
Qeqqata Kommunia
|
49,3
|
26,1
|
37,4
|
59,3
|
52,9
|
54,6
|
56,2
|
60,3
|
66,0
|
64,1
|
52,6
|
38,0
|
22,9
|
Kommune Kujalleq
|
27,9
|
21,7
|
19,8
|
23,2
|
19,7
|
17,4
|
30,2
|
37,3
|
39,9
|
32,5
|
27,5
|
28,5
|
22,6
|
Kommuneqarfik Sermersooq Vest
|
54,5
|
32,2
|
46,0
|
54,6
|
48,3
|
61,9
|
57,5
|
45,9
|
64,0
|
88,1
|
70,7
|
58,9
|
26,7
|
Kommuneqarfik Sermersooq Øst
|
35,0
|
17,3
|
13,1
|
34,8
|
34,7
|
33,6
|
39,3
|
56,3
|
72,3
|
53,8
|
21,7
|
18,0
|
21,7
|
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: 27. marts
2023
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGFuY2hvcl9zZWN0aW9uczogZmFsc2UNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBjb25zb2xlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQoNCmtuaXRyOjpvcHRzX2NodW5rJHNldCgNCgllY2hvICAgID0gVFJVRSwNCgltZXNzYWdlID0gVFJVRSwNCgl3YXJuaW5nID0gRkFMU0UNCikNCg0KbGlicmFyeSgidGlkeXZlcnNlIikNCmxpYnJhcnkoInN0YXRnbCIpDQpsaWJyYXJ5KCJrYWJsZUV4dHJhIikNCmxpYnJhcnkoImx1YnJpZGF0ZSIpDQpsaWJyYXJ5KCJ5YW1sIikNCg0KbGFuZ3VhZ2UgIDwtIHBhcmFtcyRsYW5nDQpvcHRpb24gICAgPC0gcGFzdGUwKCI/bGFuZz0iLCBsYW5ndWFnZSwgIiZzZWxlY3QiKQ0KbG9nbyAgICAgIDwtIHBhc3RlMChnZXR3ZCgpLCIvYWRkL2xvZ28uZ2lmIikNCnR4dCAgICAgICA8LSByZWFkX3lhbWwocGFzdGUwKGdldHdkKCksICIvYWRkL3R4dC55bWwiKSwgZmlsZUVuY29kaW5nID0gIklTTy04ODU5LTEiKQ0Kc291cmNlICAgIDwtIHR4dCRzb3VyY2VbbGFuZ3VhZ2VdICU+JSB1bmxpc3QoKQ0KYGBgDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KLmFjY29yZGlvbiB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5MTk5MDA7DQogIGNvbG9yOiB3aGl0ZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBwYWRkaW5nOiAxOHB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIG91dGxpbmU6IG5vbmU7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgdHJhbnNpdGlvbjogMC40czsNCn0NCg0KLmFjdGl2ZSwgLmFjY29yZGlvbjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmOTcyNDI7DQp9DQoNCi5hY2NvcmRpb246YWZ0ZXIgew0KICBjb250ZW50OiAnXDAwMkInOw0KICBjb2xvcjogIzc3NzsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZsb2F0OiByaWdodDsNCiAgbWFyZ2luLWxlZnQ6IDVweDsNCn0NCg0KLmFjdGl2ZTphZnRlciB7DQogIGNvbnRlbnQ6ICJcMjIxMiI7DQp9DQoNCi5wYW5lbCB7DQogIHBhZGRpbmc6IDBweCA1cHggMHB4IDVweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogIG1heC1oZWlnaHQ6IDA7DQogIG92ZXJmbG93OiBoaWRkZW47DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLW91dDsNCn0NCg0KZGV0YWlscyB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQpkZXRhaWxzID4gc3VtbWFyeSB7DQogIHBhZGRpbmc6IDRweCAxMnB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2Y5OTsNCiAgYm9yZGVyOiBzb2xpZDsNCiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgY29sb3I6IHdoaXRlOw0KfQ0KDQpkZXRhaWxzW29wZW5dID4gc3VtbWFyeSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmYWE0MWE7DQp9DQoNCg0KLnRpdGxlIHsNCiAgY29sb3I6ICMxYjU0NjM7DQogIGZvbnQtc2l6ZTogMzZweDsNCn0NCg0KDQoucGVyc29uZXIgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwNDQ1OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouw7hrb25vbWkgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwN0Y5OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMC4xcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQoudHbDpnJnw6VlbmRlIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICNmYWE0MWE7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLmNvbnRhaW5lciB7DQogIHdpZHRoOiBpbmhlcml0Ow0KfQ0KDQoNCg0KYGBgDQoNCmBgYHtyIHhhcmluZ2FuRXh0cmEtY2xpcGJvYXJkLCBlY2hvPUZBTFNFfQ0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQpgYGANCg0KDQo8YnI+DQo8YnI+DQoNCjxjZW50ZXI+DQoNCi0tLQ0KIA0KIyBbYHIgdHh0JFRVJHRpdGxlW2xhbmd1YWdlXWBdey50aXRsZX0NCiANCi0tLQ0KPC9jZW50ZXI+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFRVJHN1YjFbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDE6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS1JIIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyLCBjbGFzcy5zb3VyY2U9J2tsaXBweSd9DQoNClRVWEtSSF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtSSCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgcG9ydCAgICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDMpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQojIFNrYWwgaGF2ZSDDpm5kcmV0IHRpbWUgaSBmZXRjaCBvZyBzeXMudGltZSBmaWx0ZXIgdGlsYmFnZSBuw6VyIGRlciBrb21tZXIgbnllIHRhbCBmb3IgMjAyMiBvZ3PDpSBpIGRlIG7DpnN0ZSAyIHRhYmVsbGVyDQpUVVhLUkggPC0gDQogIFRVWEtSSF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8IFN5cy50aW1lKCkgJT4lIHllYXIoKSAtIDMpICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcG9ydCA9IHBvcnQgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCBuYS5ybSA9IFRSVUUsIC5kZXNjID0gVFJVRSkNCiAgKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUNCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkNCg0KVFVYS1JIICU+JSANCiAgc2VsZWN0KC10aW1lKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZShyZXBsYWNlXzBzID0gVFJVRSkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBUVVhLUkhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JIIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS9iNGU3ZDRmYi1kOTI3LTQxYTEtYTIzNy0wNWVmOTg1OGEwYzkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KDQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS1JQIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3J9DQoNClRVWEtSTF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtSUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWEtSTF9yYXcgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICB0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSAlPiUgZmN0X3JldigpDQogICkgJT4lIA0KICBkcm9wX25hKCkgJT4lIA0KICBhcnJhbmdlKHRpbWUsIG1vbnRoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUocmVwbGFjZV8wcyA9IFRSVUUpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8wN2NiMTE0NS0zZDA0LTRjMDAtYjU5ZS1jMDQ4NTg1OWE4NTkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWIyW2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDM6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYVVBBWCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFRVWFVQQVh9DQoNClRVWFVQQVhfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhVUEFYIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgYWlycG9ydCAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYVVBBWCA8LSANCiAgVFVYVVBBWF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8IFN5cy50aW1lKCkgJT4lIHllYXIoKSkgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBhaXJwb3J0ID0gYWlycG9ydCAlPiUgZmN0X3Jlb3JkZXIodmFsdWUsIC5mdW4gPSBzdW0sIG5hLnJtID0gVFJVRSwgLmRlc2MgPSBUUlVFKQ0KICAgICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQoNClRVWFVQQVggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWFVQQVhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYVVBBWCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMGFiMTRkN2QtM2NkMS00NmJkLWE2ZmItZWM4Y2NhYjhkNjdiIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLQVAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLQVB9DQoNClRVWEtBUF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtBUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdW5pdCAgICAgID0gYygyKSwNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICByZWdpb24gICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQoNClRVWEtBUCA8LSANCiAgVFVYS0FQX3JhdyAlPiUgDQogIGZpbHRlcih0aW1lIDwgU3lzLnRpbWUoKSAlPiUgeWVhcigpKSAlPiUgDQogIG11dGF0ZSgNCiAgICBtb250aCA9IG1vbnRoICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIHJlZ2lvbiA9IHJlZ2lvbiAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICB1bml0ZShjb21iaSwgdW5pdCwgdGltZSwgc2VwID0gIiwgIikNCg0KVFVYS0FQICU+JSANCiAgc2VsZWN0KC1jb21iaSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWEtBUFtbImNvbWJpIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS0FQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS80ODhhYWNmYi03OWU5LTQ1NmQtODg4OS1kODIwNmE0ODRjYmQiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPiANCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViNFtsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA1OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlRVWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYMDF9DQoNClRVWDAxX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYMDEiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JQ0KICBzdGF0Z2xfZmV0Y2goDQogICAgZGlzdHJpY3QgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWDAxX3JhdyAlPiUgDQogIGFycmFuZ2UoZGVzYyh0aW1lKSkgJT4lIA0KICBtdXRhdGUodGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCkpICU+JSANCiAgc3ByZWFkKHRpbWUsIHZhbHVlKSAlPiUgDQogIGFycmFuZ2UoZGVzYyhgMjAxOWApKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYMDEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2JmZThmOWRlLWFlMTgtNGY1Mi1iYzdiLWQ0ODA5MTMwMTk0MSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gDQo8c3BhbiBzdHlsZT0nY29sb3I6I0QzRDNEMzsgZm9udC1zaXplOjkwJTsnPiBgciBwYXN0ZSh0eHQkdXBkYXRlW2xhbmd1YWdlXSwgZm9ybWF0KFN5cy5EYXRlKCksICIlZC4gJUIgJVkiKSlgIDwvc3Bhbj4gDQo8L2NlbnRlcj4NCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0K