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.028 5.649
Atuarfik tunngaviliivik, 10.klasse tikillugu 22.345 2.905
Ilinniarnertuunngorniarneq 1.896 219
Inuussutissarsiornermik ilinniarneq 7.636 872
Angusanik qaffassaaneq 1.442 34
Ingerlariaqqiffiusumik ilinniarneq naatsoq 980 250
Bachelorinngorniarneq 223 93
Professionsbachelorinngorniarneq 2.079 573
Kandidatinngorniarneq 411 665
Ilisimatuunngorniarneq 16 38


Se Statistikbankens tabel: UDXISCPROF

UDXUMG3_raw <- 
  statgl_url("UDXUMG3", lang = language) |> 
  statgl_fetch(
    registrering = px_all(),
    HFU          = px_all(),
    aar          = px_top(),
    .col_code    = T
  ) |> 
  as_tibble()

UDXUMG3 <- 
  UDXUMG3_raw |> 
  mutate(HFU = HFU |> fct_inorder() |>  fct_rev()) |>
  select(aar, registrering, HFU, value) |> 
  spread(HFU, value)

UDXUMG3 |> 
  select(-1) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
Katillugit Ilinniakkamik naammassinnissimanngitsut Ingerlariaqqiffiusumik ilinniakkamik naammassinnissimasut Inuussutissarsiornermik ilinniakkamik naammassinnissimasut Ilinniarnertuunngorniarnermik naammassinnissimasut
Efterskoli 289 289 0 0 0
Ilinnianngitsut imaluunniit suliffeqanngitsut 2.304 2.122 11 68 103
Ilinniarnertuunngorniarneq 1.015 1.000 0 6 9
Ingerlariaqqiffiusumik ilinniarneq 406 76 25 15 290
Inuussutissarsiornermik ilinniarneq 475 391 11 15 58
Katillugit 7.557 6.281 103 356 817
Suliffeqarneq 3.068 2.403 56 252 357


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 69 75 59 55
Katillugit Unitsitsisut 31 25 41 45
Katillugit Aallartittut nutaat katillugit 100 100 100 100
Niviarsiaqqat Naammassinnissimasut 71 78 63 54
Niviarsiaqqat Unitsitsisut 29 22 37 46
Niviarsiaqqat Aallartittut nutaat katillugit 100 100 100 100
Nukappiaqqat Naammassinnissimasut 67 72 56 58
Nukappiaqqat Unitsitsisut 34 28 44 42
Nukappiaqqat Aallartittut nutaat katillugit 100 100 100 100
* procentinngorlugu-2022/2023


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) 2023
  1. klassi
Katillugit 48 52 48 NA
  1. klassi
Kommune Kujalleq 57 56 55 NA
  1. klassi
Kommuneqarfik Sermersooq 39 53 50 NA
  1. klassi
Qeqqata Kommunia 59 57 49 NA
  1. klassi
Kommune Qeqertalik 52 44 40 NA
  1. klassi
Avannaata Kommunia 44 49 43 NA
  1. klassi
Katillugit 59 41 45 86
  1. klassi
Kommune Kujalleq 52 33 40 81
  1. klassi
Kommuneqarfik Sermersooq 51 45 53 92
  1. klassi
Qeqqata Kommunia 67 45 48 86
  1. klassi
Kommune Qeqertalik 67 44 40 86
  1. klassi
Avannaata Kommunia 62 40 41 75

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 88 8 0
Naammassinnissimasut 0 0 0
Unitsitsisut 10 1 0
Aallartitsisimanngitsut 0 0 571
* Toqqaannartumik 2022


Se Statistikbankens tabel: UDXTRFA1


Sidst opdateret: 17. april 2024
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQoNCmxhbmd1YWdlICA8LSBwYXJhbXMkbGFuZw0Kb3B0aW9uICAgIDwtIHBhc3RlMCgiP2xhbmc9IiwgbGFuZ3VhZ2UsICImc2VsZWN0IikNCmxvZ28gICAgICA8LSBwYXN0ZTAoZ2V0d2QoKSwiL2FkZC9sb2dvLmdpZiIpDQp0eHQgICAgICAgPC0gcmVhZF95YW1sKHBhc3RlMChnZXR3ZCgpLCAiL2FkZC90eHQueW1sIiksIGZpbGVFbmNvZGluZyA9ICJJU08tODg1OS0xIikNCnNvdXJjZSAgICA8LSB0eHQkc291cmNlW2xhbmd1YWdlXSAlPiUgdW5saXN0KCkNCg0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQoNCi5hY2NvcmRpb24gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5OTAwOw0KICBjb2xvcjogd2hpdGU7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMThweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJvcmRlcjogbm9uZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICBvdXRsaW5lOiBub25lOw0KICBmb250LXNpemU6IDE1cHg7DQogIHRyYW5zaXRpb246IDAuNHM7DQp9DQoNCi5hY3RpdmUsIC5hY2NvcmRpb246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjk3MjQyOw0KfQ0KDQouYWNjb3JkaW9uOmFmdGVyIHsNCiAgY29udGVudDogJ1wwMDJCJzsNCiAgY29sb3I6ICM3Nzc7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmbG9hdDogcmlnaHQ7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5hY3RpdmU6YWZ0ZXIgew0KICBjb250ZW50OiAiXDIyMTIiOw0KfQ0KDQoucGFuZWwgew0KICBwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KICBtYXgtaGVpZ2h0OiAwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7DQp9DQoNCmRldGFpbHMgew0KICB3aWR0aDogMTAwJTsNCn0NCg0KZGV0YWlscyA+IHN1bW1hcnkgew0KICBwYWRkaW5nOiA0cHggMTJweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMDdmOTk7DQogIGJvcmRlcjogc29saWQ7DQogIGJvcmRlci1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBmb250LXNpemU6IDE1cHg7DQogIGNvbG9yOiB3aGl0ZTsNCn0NCg0KZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFhNDFhOw0KfQ0KDQoNCi50aXRsZSB7DQogIGNvbG9yOiAjMWI1NDYzOw0KICBmb250LXNpemU6IDM2cHg7DQp9DQoNCg0KLnBlcnNvbmVyIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDQ0NTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLsO4a29ub21pIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDdGOTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDAuMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnR2w6ZyZ8OlZW5kZSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjZmFhNDFhOw0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5jb250YWluZXIgew0KICB3aWR0aDogaW5oZXJpdDsNCn0NCg0KLnNjcm9sbC0xMDAgew0KICBtYXgtaGVpZ2h0OiAxMDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7DQp9DQoNCg0KcHJlIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCnByZVtjbGFzc10gew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCn0NCg0KYGBgDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkVUQkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAxOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWElTQ1BST0YiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBVRFhJU0NQUk9GfQ0KDQpVRFhJU0NQUk9GX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYSVNDUFJPRiIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICAicGxhY2Ugb2YgYmlydGgiICAgICA9IHB4X2FsbCgpLA0KICAgIGBsZXZlbCBvZiBlZHVjYXRpb25gID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgICAgICAgICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgICAgICAgICAgICA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KVURYSVNDUFJPRiA8LSANCiAgVURYSVNDUFJPRl9yYXcgfD4gDQogIHNlbGVjdCgtdGltZSkgfD4gDQogIG11dGF0ZShgbGV2ZWwgb2YgZWR1Y2F0aW9uYCA9IGBsZXZlbCBvZiBlZHVjYXRpb25gIHw+IGZjdF9pbm9yZGVyKCkpIHw+IA0KICBzcHJlYWQoYHBsYWNlIG9mIGJpcnRoYCwgdmFsdWUpDQoNClVEWElTQ1BST0YgfD4gDQogIHJlbmFtZSgiICIgPSAxKSB8PiANCiAgc3RhdGdsX3RhYmxlKCkgfD4gDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWElTQ1BST0YiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzE3NmVhYTQxLTBiMDAtNGNjNC1iOGEzLTA4MmY5NWM0OWUwMiIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVURYVU1HMyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFVEWFVNRzN9DQoNClVEWFVNRzNfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJVRFhVTUczIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHJlZ2lzdHJlcmluZyA9IHB4X2FsbCgpLA0KICAgIEhGVSAgICAgICAgICA9IHB4X2FsbCgpLA0KICAgIGFhciAgICAgICAgICA9IHB4X3RvcCgpLA0KICAgIC5jb2xfY29kZSAgICA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KVURYVU1HMyA8LSANCiAgVURYVU1HM19yYXcgfD4gDQogIG11dGF0ZShIRlUgPSBIRlUgfD4gZmN0X2lub3JkZXIoKSB8PiAgZmN0X3JldigpKSB8Pg0KICBzZWxlY3QoYWFyLCByZWdpc3RyZXJpbmcsIEhGVSwgdmFsdWUpIHw+IA0KICBzcHJlYWQoSEZVLCB2YWx1ZSkNCg0KVURYVU1HMyB8PiANCiAgc2VsZWN0KC0xKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFQpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhVTUczIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8xNTAyMDM4Ni1kODIzLTRlMzEtYmZiNC0xNTBlYjkxZDA4NWEiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViMltsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAzOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWEVTRyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFVEWEVTR30NCg0KVURYRVNHX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVURYRVNHIiwgbGFuZyA9IGxhbmd1YWdlKSB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXQgICAgICAgICAgICAgICAgICA9ICJBbmRlbCIsDQogICAgc2V4ICAgICAgICAgICAgICAgICAgID0gcHhfYWxsKCksDQogICAgYGNvbnRpbnVhdGlvbiBzY2hvb2xgID0gcHhfYWxsKCksDQogICAgc3RhdHVzICAgICAgICAgICAgICAgID0gcHhfYWxsKCksDQogICAgYHNjaG9vbCB5ZWFyYCAgICAgICAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlICAgICAgICAgICAgID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQoNClVEWEVTRyA8LSANCiAgVURYRVNHX3JhdyB8PiANCiAgZmlsdGVyKGBzY2hvb2wgeWVhcmAgPT0gbWF4KGBzY2hvb2wgeWVhcmApKSB8PiANCiAgbXV0YXRlKGBjb250aW51YXRpb24gc2Nob29sYCA9IGBjb250aW51YXRpb24gc2Nob29sYCB8PiBmY3RfaW5vcmRlcigpIHw+IGZjdF9yZXYoKSwNCiAgICAgICAgIHNleCA9IHNleCB8PiBmY3RfaW5vcmRlcigpIHw+IGZjdF9yZXYoKSkgfD4gDQogIHVuaXRlKGNvbWJpLCB1bml0LCBgc2Nob29sIHllYXJgLCBzZXAgPSAiLSIpDQoNClVEWEVTRyB8PiANCiAgc2VsZWN0KC1jb21iaSkgfD4gDQogIHNwcmVhZChgY29udGludWF0aW9uIHNjaG9vbGAsIHZhbHVlKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgcm93X3NwZWMoMTozLCBib2xkID0gVCkgfD4gDQogIGNvbHVtbl9zcGVjKDMsIGJvbGQgPSBUKSB8PiANCiAgYWRkX2Zvb3Rub3RlKFVEWEVTR1tbMV1dWzFdLCBub3RhdGlvbiA9ICJzeW1ib2wiKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWEVTRyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNjNmYTFmMjAtNzkzMi00YzdhLTg2ZTMtYmY2ZmY1OWRiN2QzIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2Pg0KDQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA0OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWFRLSyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQpgYGB7ciBVRFhUS0t9DQoNClVEWFRLS19yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWFRLSyIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBzdWJqZWN0ICAgICAgPSBweF9hbGwoKSwNCiAgICBncmFkZSAgICAgICAgPSBweF9hbGwoKSwNCiAgICBtdW5pY2lwYWxpdHkgPSBweF9hbGwoKSwNCiAgICB1bml0ICAgICAgICAgPSAiQiIsDQogICAgdGltZSAgICAgICAgID0gcHhfdG9wKCksDQogICAgLmNvbF9jb2RlICAgID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhUS0sgPC0gDQogIFVEWFRLS19yYXcgfD4gDQogIHVuaXRlKGNvbWJpLCB1bml0LCB0aW1lLCBzZXAgPSAiICIpIHw+DQogIG11dGF0ZShtdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHkgfD4gZmN0X2lub3JkZXIoKSkgfD4gDQogIHNwcmVhZChzdWJqZWN0LCB2YWx1ZSkNCg0KVURYVEtLIHw+IA0KICBzZWxlY3QoLTMpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICByb3dfc3BlYyhjKDEsIDcpLCBib2xkID0gVCkgfD4gDQogIHBhY2tfcm93cyhpbmRleCA9IHRhYmxlKFVEWFRLS1tbM11dKSkNCg0KDQoNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJVRFhUS0siKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzBiM2NlNWQzLTdlOTctNDQzZi05ODFmLWY3ZDEyM2ZjZmI0MCIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4NCg0KDQo8L2RldGFpbHM+DQoNCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVUQkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA1OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWElTQzExQSIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQpgYGB7ciBVRFhJU0MxMUF9DQoNClVEWElTQzExQV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWElTQzExQSIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICAibGV2ZWwgb2YgZWR1Y2F0aW9uIiA9IHB4X2FsbCgpLA0KICAgIGNvdW50cnkgICAgICAgICAgICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgICAgICAgICAgICAgPSBweF90b3AoMSksDQogICAgLmNvbF9jb2RlICAgICAgICAgICAgPSBUDQogICkgfD4gDQogIGFzX3RpYmJsZSgpDQoNClVEWElTQzExQSA8LSANCiAgVURYSVNDMTFBX3JhdyB8PiANCiAgbXV0YXRlKHRpbWUgPSB0aW1lIHw+IGZjdF9pbm9yZGVyKCksDQogICAgICAgICBjb3VudHJ5ID0gY291bnRyeSB8PiBmY3RfaW5vcmRlcigpKSB8PiANCiAgc3ByZWFkKGNvdW50cnksIHZhbHVlKQ0KDQpVRFhJU0MxMUEgfD4gDQogIHNlbGVjdCgtdGltZSkgfD4gDQogIHJlbmFtZSgiICIgPSAxKSB8PiANCiAgc3RhdGdsX3RhYmxlKCkgfD4gDQogIHBhY2tfcm93cyhpbmRleCA9IHRhYmxlKFVEWElTQzExQVtbMl1dKSkNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWElTQzExQSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMTdlNjk1MjYtODg4NS00YTQ1LTkzNmUtMzNjNjBkY2JhOGI0Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2Pg0KDQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA2OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlVEWElTQzExTCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQpgYGB7ciBVRFhJU0MxMUx9DQoNClVEWElTQzExTF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlVEWElTQzExTCIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICAibnVtYmVyIG9mIHllYXJzIGFmdGVyIGVucm9sbG1lbnQiID0gMiwNCiAgICAibGV2ZWwgb2YgZWR1Y2F0aW9uIiAgICAgICAgICAgICAgID0gcHhfYWxsKCksDQogICAgc3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHB4X2FsbCgpLA0KICAgIHRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBweF90b3AoMyksDQogICAgLmNvbF9jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KVURYSVNDMTFMIDwtIA0KICBVRFhJU0MxMUxfcmF3IHw+IA0KICBmaWx0ZXIodmFsdWUgPiAwKSB8PiANCiAgbXV0YXRlKHN0YXR1cyA9IHN0YXR1cyB8PiBmY3RfaW5vcmRlcigpKSB8PiANCiAgc3ByZWFkKHN0YXR1cywgdmFsdWUpIHw+IA0KICB1bml0ZShjb21iaSwgYG51bWJlciBvZiB5ZWFycyBhZnRlciBlbnJvbGxtZW50YCwgdGltZSwgc2VwID0gIiAiKQ0KDQpVRFhJU0MxMUwgfD4gDQogIHNlbGVjdCgtMSkgfD4gDQogIHJlbmFtZSgiICIgPSAxKSB8PiANCiAgc3RhdGdsX3RhYmxlKCkgfD4gDQogIGFkZF9mb290bm90ZShVRFhJU0MxMUxbWzFdXVsxXSwgbm90YXRpb24gPSAic3ltYm9sIikNCg0KDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVURYSVNDMTFMIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS9lNGIwNzZlOC1mNzAyLTQ2ZDgtYmZlYy1iZWRkNTYyMWM1ZGEiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCjwvZGV0YWlscz4NCg0KDQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFVEJHN1YjRbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNzogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJVRFhUUkZBMSIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQpgYGB7ciBVRFhUUkZBMX0NCg0KVURYVFJGQTFfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJVRFhUUkZBMSIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICAibnVtYmVyIG9mIHllYXJzIGFmdGVyIGxvd2VyIHNlY29uZGFyeSBlZHVjYXRpb24iID0gMCwNCiAgICAibGV2ZWwgb2YgZWR1Y2F0aW9uIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHhfYWxsKCksDQogICAgImVkdWNhdGlvbmFsIHN0YXR1cyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHB4X2FsbCgpLA0KICAgICJncmFkdWF0aW9uIHllYXIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVA0KICApIHw+IA0KICBhc190aWJibGUoKQ0KDQpVRFhUUkZBMSA8LSANCiAgVURYVFJGQTFfcmF3IHw+IA0KICB1bml0ZShjb21iaSwgYG51bWJlciBvZiB5ZWFycyBhZnRlciBsb3dlciBzZWNvbmRhcnkgZWR1Y2F0aW9uYCwgYGdyYWR1YXRpb24geWVhcmAsIHNlcCA9ICIgIikgfD4gDQogIG11dGF0ZShgbGV2ZWwgb2YgZWR1Y2F0aW9uYCA9IGBsZXZlbCBvZiBlZHVjYXRpb25gIHw+IGZjdF9pbm9yZGVyKCksDQogICAgICAgICBgZWR1Y2F0aW9uYWwgc3RhdHVzYCA9IGBlZHVjYXRpb25hbCBzdGF0dXNgIHw+IGZjdF9pbm9yZGVyKCkpDQoNClVEWFRSRkExIHw+IA0KICBzZWxlY3QoLTEpIHw+IA0KICBzcHJlYWQoYGxldmVsIG9mIGVkdWNhdGlvbmAsIHZhbHVlKSB8PiANCiAgcmVuYW1lKCIgIiA9IDEpIHw+IA0KICBzdGF0Z2xfdGFibGUoKSB8PiANCiAgYWRkX2Zvb3Rub3RlKFVEWFRSRkExW1sxXV1bMV0sIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlVEWFRSRkExIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS83ZWExNTZkZC01OWIxLTQxZTYtOWExMS05NGZmYzkxNTM4ZDIiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+DQoNCjwvZGV0YWlscz4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo8aHIgc3R5bGU9ImJvcmRlcjoxcHggcmlkZ2UgbGlnaHRncmF5Ij4gPC9ocj4NCjxjZW50ZXI+IDxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiA8L2NlbnRlcj4NCg0KDQoNCg0KPHNjcmlwdD4NCnZhciBhY2MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhY2NvcmRpb24iKTsNCnZhciBpOw0KDQpmb3IgKGkgPSAwOyBpIDwgYWNjLmxlbmd0aDsgaSsrKSB7DQogIGFjY1tpXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgew0KICAgIHRoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7DQogICAgdmFyIHBhbmVsID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmc7DQogICAgaWYgKHBhbmVsLnN0eWxlLm1heEhlaWdodCkgew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gcGFuZWwuc2Nyb2xsSGVpZ2h0ICsgInB4IjsNCiAgICB9IA0KICB9KTsNCn0NCjwvc2NyaXB0Pg0KDQoNCg0KDQoNCg0K