Ilinniartitaaneq


Innuttaasut ilinniarsimassusaat


UDXISCPROF_raw <- 
  statgl_url("UDXISCPROF", lang = language) |> 
  statgl_fetch(
    "place of birth"     = px_all(),
    `level of education` = px_all(),
    time                 = px_top(),
    .col_code            = T
  ) |> 
  as_tibble()

UDXISCPROF <- 
  UDXISCPROF_raw |> 
  select(-time) |> 
  mutate(`level of education` = `level of education` |> fct_inorder()) |> 
  spread(`place of birth`, value)

UDXISCPROF |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(1, bold = T)
Kalaallit Nunaanni Kalaallit Nunaata avataani
Katillugit 37.214 5.407
Atuarfik tunngaviliivik, 10.klasse tikillugu 22.383 2.063
Ilinniarnertuunngorniarneq 2.021 282
Inuussutissarsiornermik ilinniarneq 7.639 994
Angusanik qaffassaaneq 1.421 33
Ingerlariaqqiffiusumik ilinniarneq naatsoq 986 301
Bachelorinngorniarneq 221 114
Professionsbachelorinngorniarneq 2.109 708
Kandidatinngorniarneq 420 866
Ilisimatuunngorniarneq 14 46


Se Statistikbankens tabel: UDXISCPROF

UDXUMG3_raw <- 
  statgl_url("UDXUMG3", lang = language) |> 
  statgl_fetch(
    `completed education` = px_all(),
    status                = px_all(),
    time                  = px_top(),
    .col_code             = T
  ) |> 
  as_tibble()

UDXUMG3 <- 
  UDXUMG3_raw |> 
  mutate(status = status |> fct_inorder() |>  fct_rev()) |>
  select(time, `completed education`, status, value) |> 
  spread(status, value)

UDXUMG3 |> 
  select(-1) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
Katillugit Ilinnianngitsut imaluunniit suliffeqanngitsut Suliffeqarneq Ingerlariaqqiffiusumik ilinniarneq Inuussutissarsiornermik ilinniarneq Ilinniarnertuunngorniarneq Efterskoli
Ilinniakkamik naammassinnissimanngitsut 6.120 2.135 2.307 51 391 1.007 229
Ilinniarnertuunngorniarnermik naammassinnissimasut 1.019 138 505 307 58 10 0
Ingerlariaqqiffiusumik ilinniakkamik naammassinnissimasut 113 8 65 31 9 0 0
Inuussutissarsiornermik ilinniakkamik naammassinnissimasut 423 58 333 11 14 7 0
Katillugit 7.675 2.339 3.210 400 472 1.025 229


Se Statistikbankens tabel: UDXUMG3

Tunngaviusumik atuarfik


UDXESG_raw <- 
  statgl_url("UDXESG", lang = language) |> 
  statgl_fetch(
    unit                  = "Andel",
    sex                   = px_all(),
    `continuation school` = px_all(),
    status                = px_all(),
    `school year`         = px_all(),
    .col_code             = T
  ) |> 
  as_tibble()


UDXESG <- 
  UDXESG_raw |> 
  filter(`school year` == max(`school year`)) |> 
  mutate(`continuation school` = `continuation school` |> fct_inorder() |> fct_rev(),
         sex = sex |> fct_inorder() |> fct_rev()) |> 
  unite(combi, unit, `school year`, sep = "-")

UDXESG |> 
  select(-combi) |> 
  spread(`continuation school`, value) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(1:3, bold = T) |> 
  column_spec(3, bold = T) |> 
  add_footnote(UDXESG[[1]][1], notation = "symbol")
status Katillugit Qallunaat efterskolii Maniitsumi Efterskoli Efterskole Villads Villadsen
Katillugit Naammassinnissimasut 75 84 54 76
Katillugit Unitsitsisut 25 16 46 24
Katillugit Aallartittut nutaat katillugit 100 100 100 100
Niviarsiaqqat Naammassinnissimasut 74 82 60 73
Niviarsiaqqat Unitsitsisut 26 19 41 28
Niviarsiaqqat Aallartittut nutaat katillugit 100 100 100 100
Nukappiaqqat Naammassinnissimasut 76 86 47 80
Nukappiaqqat Unitsitsisut 24 14 53 20
Nukappiaqqat Aallartittut nutaat katillugit 100 100 100 100
* procentinngorlugu-2021/2022


Se Statistikbankens tabel: UDXESG

UDXTKK_raw <- 
  statgl_url("UDXTKK", lang = language) |> 
  statgl_fetch(
    subject      = px_all(),
    grade        = px_all(),
    municipality = px_all(),
    unit         = "B",
    time         = px_top(),
    .col_code    = T
  ) |> 
  as_tibble()

UDXTKK <- 
  UDXTKK_raw |> 
  unite(combi, unit, time, sep = " ") |>
  mutate(municipality = municipality |> fct_inorder()) |> 
  spread(subject, value)

UDXTKK |> 
  select(-3) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(c(1, 7), bold = T) |> 
  pack_rows(index = table(UDXTKK[[3]]))
municipality Kalaallisut Matematikki Qallunaatut Tuluttut
Inerniliillaqqissuseq (eqqortut pct.-inngorlugit) 2022
  1. klassi
Katillugit 43 50 42 NA
  1. klassi
Kommune Kujalleq 40 53 39 NA
  1. klassi
Kommuneqarfik Sermersooq 38 48 42 NA
  1. klassi
Qeqqata Kommunia 52 52 46 NA
  1. klassi
Kommune Qeqertalik 51 48 54 NA
  1. klassi
Avannaata Kommunia 46 47 37 NA
  1. klassi
Katillugit 62 42 53 84
  1. klassi
Kommune Kujalleq 58 37 42 74
  1. klassi
Kommuneqarfik Sermersooq 55 44 61 92
  1. klassi
Qeqqata Kommunia 66 39 49 79
  1. klassi
Kommune Qeqertalik 73 40 46 78
  1. klassi
Avannaata Kommunia 68 44 46 79

Se Statistikbankens tabel: UDXTKK
Inuusuttunut ilinniarfiit aamma ingerlariaqqiffiusumik ilinniakkat


UDXISC11A_raw <- 
  statgl_url("UDXISC11A", lang = language) |> 
  statgl_fetch(
    "level of education" = px_all(),
    country              = px_all(),
    time                 = px_top(1),
    .col_code            = T
  ) |> 
  as_tibble()

UDXISC11A <- 
  UDXISC11A_raw |> 
  mutate(time = time |> fct_inorder(),
         country = country |> fct_inorder()) |> 
  spread(country, value)

UDXISC11A |> 
  select(-time) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  pack_rows(index = table(UDXISC11A[[2]]))
Kalaallit Nunaanni Atuarfiit Danmarkimi atuarfiit Nunani allani atuarfiit
2022
Angusanik qaffassaanerit 191 7 0
Bachelorinngorniarneq 67 56 5
Ilinniarnertuunngorniarneq 416 27 2
Ingerlariaqqiffiusumik ilinniarneq naatsoq 85 39 3
Inuussutissarsiornermik ilinniarneq 655 38 2
Kandidatinngorniarneq 15 29 2
Professionsbachelorinngorniarneq 129 67 0


Se Statistikbankens tabel: UDXISC11A

UDXISC11L_raw <- 
  statgl_url("UDXISC11L", lang = language) |> 
  statgl_fetch(
    "number of years after enrollment" = 2,
    "level of education"               = px_all(),
    status                             = px_all(),
    time                               = px_top(3),
    .col_code                          = T
  ) |> 
  as_tibble()

UDXISC11L <- 
  UDXISC11L_raw |> 
  filter(value > 0) |> 
  mutate(status = status |> fct_inorder()) |> 
  spread(status, value) |> 
  unite(combi, `number of years after enrollment`, time, sep = " ")

UDXISC11L |> 
  select(-1) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  add_footnote(UDXISC11L[[1]][1], notation = "symbol")
Suli ingerlatsisut Naammassinnissimasut Unitsitsisut Aallartittut nutaat katillugit
Bachelorinngorniarneq 87 2 75 164
Ilinniarnertuunngorniarneq 302 2 166 470
Ingerlariaqqiffiusumik ilinniarneq naatsoq 9 50 45 104
Inuussutissarsiornermik ilinniarneq, nalinginnaasoq 163 77 247 487
Inuussutissarsiornermik ilinniarneq, naatsoq 6 182 88 276
Kandidatinngorniarneq 24 12 9 45
Professionsbachelorinngorniarneq 97 5 86 188
* Ukiut marluk 2020


Se Statistikbankens tabel: UDXISC11L

Ilinniagaqarnerup ingerlanera


UDXTRFA1_raw <- 
  statgl_url("UDXTRFA1", lang = language) |> 
  statgl_fetch(
    "number of years after lower secondary education" = 0,
    "level of education"                              = px_all(),
    "educational status"                              = px_all(),
    "graduation year"                                 = px_top(),
    .col_code                                         = T
  ) |> 
  as_tibble()

UDXTRFA1 <- 
  UDXTRFA1_raw |> 
  unite(combi, `number of years after lower secondary education`, `graduation year`, sep = " ") |> 
  mutate(`level of education` = `level of education` |> fct_inorder(),
         `educational status` = `educational status` |> fct_inorder())

UDXTRFA1 |> 
  select(-1) |> 
  spread(`level of education`, value) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  add_footnote(UDXTRFA1[[1]][1], notation = "symbol")
Ilinniarnertuunngorniarneq Inuussutissarsiornermik ilinniarneq Nalunaarsorsimanngitsut
Suli ingerlatsisut 136 15 0
Naammassinnissimasut 0 0 0
Unitsitsisut 11 1 0
Aallartitsisimanngitsut 0 0 546
* Toqqaannartumik 2021


Se Statistikbankens tabel: UDXTRFA1


Sidst opdateret: 06. juni 2023
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGFuY2hvcl9zZWN0aW9uczogZmFsc2UNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBjb25zb2xlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQoNCmtuaXRyOjpvcHRzX2NodW5rJHNldCgNCgllY2hvICAgID0gVFJVRSwNCgltZXNzYWdlID0gRkFMU0UsDQoJd2FybmluZyA9IEZBTFNFLA0KCWNsYXNzLm91dHB1dCA9ICJzY3JvbGwtMTAwIg0KKQ0KDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSgic3RhdGdsIikNCmxpYnJhcnkoImthYmxlRXh0cmEiKQ0KbGlicmFyeSgibHVicmlkYXRlIikNCmxpYnJhcnkoInlhbWwiKQ0KDQpsYW5ndWFnZSAgPC0gcGFyYW1zJGxhbmcNCm9wdGlvbiAgICA8LSBwYXN0ZTAoIj9sYW5nPSIsIGxhbmd1YWdlLCAiJnNlbGVjdCIpDQpsb2dvICAgICAgPC0gcGFzdGUwKGdldHdkKCksIi9hZGQvbG9nby5naWYiKQ0KdHh0ICAgICAgIDwtIHJlYWRfeWFtbChwYXN0ZTAoZ2V0d2QoKSwgIi9hZGQvdHh0LnltbCIpLCBmaWxlRW5jb2RpbmcgPSAiSVNPLTg4NTktMSIpDQpzb3VyY2UgICAgPC0gdHh0JHNvdXJjZVtsYW5ndWFnZV0gJT4lIHVubGlzdCgpDQoNCnhhcmluZ2FuRXh0cmE6OnVzZV9jbGlwYm9hcmQoKQ0KDQpgYGANCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KDQouYWNjb3JkaW9uIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzkxOTkwMDsNCiAgY29sb3I6IHdoaXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDE4cHg7DQogIHdpZHRoOiAxMDAlOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCiAgb3V0bGluZTogbm9uZTsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICB0cmFuc2l0aW9uOiAwLjRzOw0KfQ0KDQouYWN0aXZlLCAuYWNjb3JkaW9uOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5NzI0MjsNCn0NCg0KLmFjY29yZGlvbjphZnRlciB7DQogIGNvbnRlbnQ6ICdcMDAyQic7DQogIGNvbG9yOiAjNzc3Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBtYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQouYWN0aXZlOmFmdGVyIHsNCiAgY29udGVudDogIlwyMjEyIjsNCn0NCg0KLnBhbmVsIHsNCiAgcGFkZGluZzogMHB4IDVweCAwcHggNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2Utb3V0Ow0KfQ0KDQpkZXRhaWxzIHsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCmRldGFpbHMgPiBzdW1tYXJ5IHsNCiAgcGFkZGluZzogNHB4IDEycHg7DQogIHdpZHRoOiAxMDAlOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3Zjk5Ow0KICBib3JkZXI6IHNvbGlkOw0KICBib3JkZXItY29sb3I6IHdoaXRlOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBjb2xvcjogd2hpdGU7DQp9DQoNCmRldGFpbHNbb3Blbl0gPiBzdW1tYXJ5IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhYTQxYTsNCn0NCg0KDQoudGl0bGUgew0KICBjb2xvcjogIzFiNTQ2MzsNCiAgZm9udC1zaXplOiAzNnB4Ow0KfQ0KDQoNCi5wZXJzb25lciB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA0NDU5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi7DuGtvbm9taSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA3Rjk5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAwLjFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi50dsOmcmfDpWVuZGUgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogI2ZhYTQxYTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouY29udGFpbmVyIHsNCiAgd2lkdGg6IGluaGVyaXQ7DQp9DQoNCi5zY3JvbGwtMTAwIHsNCiAgbWF4LWhlaWdodDogMTAwOw0KICBvdmVyZmxvdy15OiBhdXRvOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0Ow0KfQ0KDQoNCnByZSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQpwcmVbY2xhc3NdIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQp9DQoNCmBgYA0KDQo8YnI+DQo8YnI+DQoNCjxjZW50ZXI+DQoNCi0tLQ0KIA0KIyBbYHIgdHh0JFVEJHRpdGxlW2xhbmd1YWdlXWBdey50aXRsZX0NCiANCi0tLQ0KPC9jZW50ZXI+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFVEJHN1YjFbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJVRFhJU0NQUk9GIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVURYSVNDUFJPRn0NCg0KVURYSVNDUFJPRl9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWElTQ1BST0YiLCBsYW5nID0gbGFuZ3VhZ2UpIHw+IA0KICBzdGF0Z2xfZmV0Y2goDQogICAgInBsYWNlIG9mIGJpcnRoIiAgICAgPSBweF9hbGwoKSwNCiAgICBgbGV2ZWwgb2YgZWR1Y2F0aW9uYCA9IHB4X2FsbCgpLA0KICAgIHRpbWUgICAgICAgICAgICAgICAgID0gcHhfdG9wKCksDQogICAgLmNvbF9jb2RlICAgICAgICAgICAgPSBUDQogICkgfD4gDQogIGFzX3RpYmJsZSgpDQoNClVEWElTQ1BST0YgPC0gDQogIFVEWElTQ1BST0ZfcmF3IHw+IA0KICBzZWxlY3QoLXRpbWUpIHw+IA0KICBtdXRhdGUoYGxldmVsIG9mIGVkdWNhdGlvbmAgPSBgbGV2ZWwgb2YgZWR1Y2F0aW9uYCB8PiBmY3RfaW5vcmRlcigpKSB8PiANCiAgc3ByZWFkKGBwbGFjZSBvZiBiaXJ0aGAsIHZhbHVlKQ0KDQpVRFhJU0NQUk9GIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICByb3dfc3BlYygxLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhJU0NQUk9GIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8xNzZlYWE0MS0wYjAwLTRjYzQtYjhhMy0wODJmOTVjNDllMDIiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAyOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWFVNRzMiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBVRFhVTUczfQ0KDQpVRFhVTUczX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYVU1HMyIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBgY29tcGxldGVkIGVkdWNhdGlvbmAgPSBweF9hbGwoKSwNCiAgICBzdGF0dXMgICAgICAgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgICAgICAgICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgICAgICAgICAgICAgPSBUDQogICkgfD4gDQogIGFzX3RpYmJsZSgpDQoNClVEWFVNRzMgPC0gDQogIFVEWFVNRzNfcmF3IHw+IA0KICBtdXRhdGUoc3RhdHVzID0gc3RhdHVzIHw+IGZjdF9pbm9yZGVyKCkgfD4gIGZjdF9yZXYoKSkgfD4NCiAgc2VsZWN0KHRpbWUsIGBjb21wbGV0ZWQgZWR1Y2F0aW9uYCwgc3RhdHVzLCB2YWx1ZSkgfD4gDQogIHNwcmVhZChzdGF0dXMsIHZhbHVlKQ0KDQpVRFhVTUczIHw+IA0KICBzZWxlY3QoLTEpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICByb3dfc3BlYygxLCBib2xkID0gVCkgfD4gDQogIGNvbHVtbl9zcGVjKDIsIGJvbGQgPSBUKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWFVNRzMiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzE1MDIwMzg2LWQ4MjMtNGUzMS1iZmI0LTE1MGViOTFkMDg1YSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRVRCRzdWIyW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDM6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVURYRVNHIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVURYRVNHfQ0KDQpVRFhFU0dfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJVRFhFU0ciLCBsYW5nID0gbGFuZ3VhZ2UpIHw+IA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdW5pdCAgICAgICAgICAgICAgICAgID0gIkFuZGVsIiwNCiAgICBzZXggICAgICAgICAgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICBgY29udGludWF0aW9uIHNjaG9vbGAgPSBweF9hbGwoKSwNCiAgICBzdGF0dXMgICAgICAgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICBgc2Nob29sIHllYXJgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICAuY29sX2NvZGUgICAgICAgICAgICAgPSBUDQogICkgfD4gDQogIGFzX3RpYmJsZSgpDQoNCg0KVURYRVNHIDwtIA0KICBVRFhFU0dfcmF3IHw+IA0KICBmaWx0ZXIoYHNjaG9vbCB5ZWFyYCA9PSBtYXgoYHNjaG9vbCB5ZWFyYCkpIHw+IA0KICBtdXRhdGUoYGNvbnRpbnVhdGlvbiBzY2hvb2xgID0gYGNvbnRpbnVhdGlvbiBzY2hvb2xgIHw+IGZjdF9pbm9yZGVyKCkgfD4gZmN0X3JldigpLA0KICAgICAgICAgc2V4ID0gc2V4IHw+IGZjdF9pbm9yZGVyKCkgfD4gZmN0X3JldigpKSB8PiANCiAgdW5pdGUoY29tYmksIHVuaXQsIGBzY2hvb2wgeWVhcmAsIHNlcCA9ICItIikNCg0KVURYRVNHIHw+IA0KICBzZWxlY3QoLWNvbWJpKSB8PiANCiAgc3ByZWFkKGBjb250aW51YXRpb24gc2Nob29sYCwgdmFsdWUpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICByb3dfc3BlYygxOjMsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMywgYm9sZCA9IFQpIHw+IA0KICBhZGRfZm9vdG5vdGUoVURYRVNHW1sxXV1bMV0sIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVURYRVNHIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS82M2ZhMWYyMC03OTMyLTRjN2EtODZlMy1iZjZmZjU5ZGI3ZDMiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDQ6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVURYVEtLIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIFVEWFRLS30NCg0KVURYVEtLX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYVEtLIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHN1YmplY3QgICAgICA9IHB4X2FsbCgpLA0KICAgIGdyYWRlICAgICAgICA9IHB4X2FsbCgpLA0KICAgIG11bmljaXBhbGl0eSA9IHB4X2FsbCgpLA0KICAgIHVuaXQgICAgICAgICA9ICJCIiwNCiAgICB0aW1lICAgICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgICAgPSBUDQogICkgfD4gDQogIGFzX3RpYmJsZSgpDQoNClVEWFRLSyA8LSANCiAgVURYVEtLX3JhdyB8PiANCiAgdW5pdGUoY29tYmksIHVuaXQsIHRpbWUsIHNlcCA9ICIgIikgfD4NCiAgbXV0YXRlKG11bmljaXBhbGl0eSA9IG11bmljaXBhbGl0eSB8PiBmY3RfaW5vcmRlcigpKSB8PiANCiAgc3ByZWFkKHN1YmplY3QsIHZhbHVlKQ0KDQpVRFhUS0sgfD4gDQogIHNlbGVjdCgtMykgfD4gDQogIHJlbmFtZSgiICIgPSAxKSB8PiANCiAgc3RhdGdsX3RhYmxlKCkgfD4gDQogIHJvd19zcGVjKGMoMSwgNyksIGJvbGQgPSBUKSB8PiANCiAgcGFja19yb3dzKGluZGV4ID0gdGFibGUoVURYVEtLW1szXV0pKQ0KDQoNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWFRLSyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMGIzY2U1ZDMtN2U5Ny00NDNmLTk4MWYtZjdkMTIzZmNmYjQwIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2Pg0KDQoNCjwvZGV0YWlscz4NCg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRVRCRzdWIzW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDU6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVURYSVNDMTFBIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIFVEWElTQzExQX0NCg0KVURYSVNDMTFBX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYSVNDMTFBIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgICJsZXZlbCBvZiBlZHVjYXRpb24iID0gcHhfYWxsKCksDQogICAgY291bnRyeSAgICAgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgICAgICAgICAgICA9IHB4X3RvcCgxKSwNCiAgICAuY29sX2NvZGUgICAgICAgICAgICA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KVURYSVNDMTFBIDwtIA0KICBVRFhJU0MxMUFfcmF3IHw+IA0KICBtdXRhdGUodGltZSA9IHRpbWUgfD4gZmN0X2lub3JkZXIoKSwNCiAgICAgICAgIGNvdW50cnkgPSBjb3VudHJ5IHw+IGZjdF9pbm9yZGVyKCkpIHw+IA0KICBzcHJlYWQoY291bnRyeSwgdmFsdWUpDQoNClVEWElTQzExQSB8PiANCiAgc2VsZWN0KC10aW1lKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgcGFja19yb3dzKGluZGV4ID0gdGFibGUoVURYSVNDMTFBW1syXV0pKQ0KDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVURYSVNDMTFBIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8xN2U2OTUyNi04ODg1LTRhNDUtOTM2ZS0zM2M2MGRjYmE4YjQiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDY6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVURYSVNDMTFMIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIFVEWElTQzExTH0NCg0KVURYSVNDMTFMX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYSVNDMTFMIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgICJudW1iZXIgb2YgeWVhcnMgYWZ0ZXIgZW5yb2xsbWVudCIgPSAyLA0KICAgICJsZXZlbCBvZiBlZHVjYXRpb24iICAgICAgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHB4X3RvcCgzKSwNCiAgICAuY29sX2NvZGUgICAgICAgICAgICAgICAgICAgICAgICAgID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhJU0MxMUwgPC0gDQogIFVEWElTQzExTF9yYXcgfD4gDQogIGZpbHRlcih2YWx1ZSA+IDApIHw+IA0KICBtdXRhdGUoc3RhdHVzID0gc3RhdHVzIHw+IGZjdF9pbm9yZGVyKCkpIHw+IA0KICBzcHJlYWQoc3RhdHVzLCB2YWx1ZSkgfD4gDQogIHVuaXRlKGNvbWJpLCBgbnVtYmVyIG9mIHllYXJzIGFmdGVyIGVucm9sbG1lbnRgLCB0aW1lLCBzZXAgPSAiICIpDQoNClVEWElTQzExTCB8PiANCiAgc2VsZWN0KC0xKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgYWRkX2Zvb3Rub3RlKFVEWElTQzExTFtbMV1dWzFdLCBub3RhdGlvbiA9ICJzeW1ib2wiKQ0KDQoNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhJU0MxMUwiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2U0YjA3NmU4LWY3MDItNDZkOC1iZmVjLWJlZGQ1NjIxYzVkYSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KPC9kZXRhaWxzPg0KDQoNCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViNFtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA3OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWFRSRkExIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIFVEWFRSRkExfQ0KDQpVRFhUUkZBMV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWFRSRkExIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgICJudW1iZXIgb2YgeWVhcnMgYWZ0ZXIgbG93ZXIgc2Vjb25kYXJ5IGVkdWNhdGlvbiIgPSAwLA0KICAgICJsZXZlbCBvZiBlZHVjYXRpb24iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICAiZWR1Y2F0aW9uYWwgc3RhdHVzIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHhfYWxsKCksDQogICAgImdyYWR1YXRpb24geWVhciIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHB4X3RvcCgpLA0KICAgIC5jb2xfY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBUDQogICkgfD4gDQogIGFzX3RpYmJsZSgpDQoNClVEWFRSRkExIDwtIA0KICBVRFhUUkZBMV9yYXcgfD4gDQogIHVuaXRlKGNvbWJpLCBgbnVtYmVyIG9mIHllYXJzIGFmdGVyIGxvd2VyIHNlY29uZGFyeSBlZHVjYXRpb25gLCBgZ3JhZHVhdGlvbiB5ZWFyYCwgc2VwID0gIiAiKSB8PiANCiAgbXV0YXRlKGBsZXZlbCBvZiBlZHVjYXRpb25gID0gYGxldmVsIG9mIGVkdWNhdGlvbmAgfD4gZmN0X2lub3JkZXIoKSwNCiAgICAgICAgIGBlZHVjYXRpb25hbCBzdGF0dXNgID0gYGVkdWNhdGlvbmFsIHN0YXR1c2AgfD4gZmN0X2lub3JkZXIoKSkNCg0KVURYVFJGQTEgfD4gDQogIHNlbGVjdCgtMSkgfD4gDQogIHNwcmVhZChgbGV2ZWwgb2YgZWR1Y2F0aW9uYCwgdmFsdWUpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICBhZGRfZm9vdG5vdGUoVURYVFJGQTFbWzFdXVsxXSwgbm90YXRpb24gPSAic3ltYm9sIikNCg0KDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVURYVFJGQTEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzdlYTE1NmRkLTU5YjEtNDFlNi05YTExLTk0ZmZjOTE1MzhkMiIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KPC9kZXRhaWxzPg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gPHNwYW4gc3R5bGU9J2NvbG9yOiNEM0QzRDM7IGZvbnQtc2l6ZTo5MCU7Jz4gYHIgcGFzdGUodHh0JHVwZGF0ZVtsYW5ndWFnZV0sIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQuICVCICVZIikpYCA8L3NwYW4+IDwvY2VudGVyPg0KDQoNCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0KDQoNCg0KDQo=