UNICEF [Link]
- 世界では、六人に一人(3億5600万人)の子どもたちが「極度にまずしい」暮らしをしています。
どのようなデータから、このようなことがわかるのでしょうか。まずは、極度の貧困とは、どのように定義しているのでしょうか。
Fact Sheet: An Adjustment to Global Poverty Lines [Link]
The World Bank updated the global poverty lines in September 2022.
The decision, announced in May, follows the release in 2020 of new
purchasing power parities (PPPs)—the main data used to convert different
currencies into a common, comparable unit and account for price
differences across countries. The new extreme poverty line of $2.15 per
person per day, which replaces the $1.90 poverty line, is based on 2017
PPPs. Here you find more information about this change and what it means
for measuring global poverty.
世界銀行は2022年9月に世界の貧困ラインを更新した。5月に発表されたこの決定は、2020年に新購買力平価(PPP)が発表されたことを受けてのものである。新購買力平価(PPP)とは、さまざまな通貨を共通の比較可能な単位に変換し、貧困の範囲を説明するために使用される主要なデータである。国ごとの価格差。1.90ドルの貧困線に代わる、1人当たり1日当たり2.15ドルという新たな極度の貧困線は、2017年のPPPに基づいている。ここでは、この変化とそれが世界の貧困の測定に何を意味するかに関する詳細情報をご覧いただけます。
そこで、この購買力平価(PPP: purchasing power
parities)をまずは、調べてみましょう。国や、地域ごとの、GDP, PPP
(国内総生産(Gross Domestic
Prodoct))を、人口で割った、一人当たりの、GDP PPP
です。2017年を基準として、インフレ率を調整し、ドル換算されています。総人口の指標も使います。
- GDP per capita, PPP (constant 2017 international $):
NY.GDP.PCAP.PP.KD
GDP per capita, PPP (constant 2017 international $)
を、指標名(Indicator Name)といい、NY.GDP.PCAP.PP.KD
を、指標コード(Indicator
Code)と言います。後者を、WDI(世界開発指標、World Development
Indicator)と呼ぶこともあります。
準備
Step 1. (R
に機能を付け加える)パッケージのインストール(最初だけ)
install.packages("tidyverse")
install.packages("WDI")
install.packages('showtext')
Step 2. パッケージを使えるように読み込みます。
library(tidyverse)
library(WDI)
library(showtext)
showtext_auto(FALSE)
# showtext_auto() # for Word remove #
Step 3. データを保存するための data
という名前のディレクトリ(フォルダー)を作成します。(最初だけ)
dir.create("data")
Warning: 'data' already exists
Step 4. エラーが生じた時に、調べやすいので、‘システム言語(System
Language)’ を英語にしておきます。(最初だけ)
Sys.setenv(LANG = "en")
Step 5. データを読み込みます。WDI
パッケージをつかうと、簡単に、データを読み込むことができます。わかりやすい名前(gdppcap,
pop)をつけ、人口(pop)も読み込んでおきます。extra = TRUE
としておくと、使い情報を一緒に読み込むことができます。
df_pcap <- WDI(indicator = c(gdppcap = "NY.GDP.PCAP.PP.KD"), extra = TRUE)
Step 6. データをみてみます。
head(df_pcap)
Step 7.
データの列(columns、変数 variables)はどのようなものがあるかを表示します。
str(df_pcap)
'data.frame': 16758 obs. of 13 variables:
$ country : chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
$ iso2c : chr "AF" "AF" "AF" "AF" ...
$ iso3c : chr "AFG" "AFG" "AFG" "AFG" ...
$ year : int 1991 1987 1990 1989 1988 2019 2018 2017 2016 2015 ...
$ gdppcap : num NA NA NA NA NA ...
..- attr(*, "label")= chr "GDP per capita, PPP (constant 2017 international $)"
$ status : chr "" "" "" "" ...
$ lastupdated: chr "2024-02-21" "2024-02-21" "2024-02-21" "2024-02-21" ...
$ region : chr "South Asia" "South Asia" "South Asia" "South Asia" ...
$ capital : chr "Kabul" "Kabul" "Kabul" "Kabul" ...
$ longitude : chr "69.1761" "69.1761" "69.1761" "69.1761" ...
$ latitude : chr "34.5228" "34.5228" "34.5228" "34.5228" ...
$ income : chr "Low income" "Low income" "Low income" "Low income" ...
$ lending : chr "IDA" "IDA" "IDA" "IDA" ...
Step 8. 必要な列だけ取り出します。
df_pcap <- df_pcap |> select(c(1,2,4,5,8,12))
head(df_pcap)
Step 9. (ちょっと高度ですが)region, income, lending
には、どのようなものがあるか、みてみます。
df_pcap |> select(region, income) |> lapply(unique)
$region
[1] "South Asia" "Aggregates"
[3] "Europe & Central Asia" "Middle East & North Africa"
[5] "East Asia & Pacific" "Sub-Saharan Africa"
[7] "Latin America & Caribbean" "North America"
[9] NA
$income
[1] "Low income" "Aggregates" "Upper middle income"
[4] "Lower middle income" "High income" NA
[7] "Not classified"
視覚化(Visualization)
図 1. 世界の GDP per Capita の推移(経年変化)を見てみます。
COUNTRY <- "World"
df_pcap |> filter(country == COUNTRY) |> drop_na(gdppcap) |>
ggplot(aes(year, gdppcap)) + geom_line() +
labs(title = "世界の一人当たりの GDP の平均の推移")
図 2. Low Income の 推移をみてみましょう。
COUNTRY <- "Low income"
df_pcap |> filter(country == COUNTRY) |> drop_na(gdppcap) |>
ggplot(aes(year, gdppcap)) + geom_line() +
labs(title = "低所得国の一人当たりの GDP の平均の推移")
図 3. Low Income の 推移を、1日あたりに変えてみてみましょう。
COUNTRY <- "Low income"
df_pcap |> filter(country == COUNTRY) |> drop_na(gdppcap) |>
ggplot(aes(year, gdppcap/365)) + geom_line() +
labs(title = "世界の1日一人当たりの GDP の平均の推移")
図 4. 2022年の、Low Income Country について、GDP per Capita
の少ないから順に並べてみましょう。
df_pcap |> filter(year == 2022, region != "Aggregates") |>
filter(income == "Low income") |>
drop_na(gdppcap) |> arrange(gdppcap)
図 5. 一人当たりのGDP の2022年の分布をみてみましょう。
df_pcap |> filter(year == 2022, region != "Aggregates") |> drop_na(gdppcap) |>
ggplot(aes(gdppcap)) + geom_histogram(binwidth = 10000) +
labs(title = "2022年の 一人当たりの GDP の国の分布")
図 6. 地域ごとに色分けしてみてみましょう。
df_pcap |> filter(year == 2022, region != "Aggregates") |>
drop_na(gdppcap) |>
ggplot(aes(gdppcap, fill = region)) +
geom_histogram(col = "black", linewidth = 0.2, binwidth = 10000) +
labs(title = "2022年の 一人当たりの GDP の国の分布",
subtitle = "地域情報付き")
図 7. 箱ひげ図で見てみましょう。
df_pcap |> filter(year == 2020) |> drop_na(gdppcap) |>
filter(income != "Aggregates") |>
ggplot(aes(gdppcap, factor(income, levels = c("High income", "Upper middle income", "Lower middle income", "Low income")), fill = income)) + geom_boxplot() + scale_x_log10() +
labs(y = "") +
theme(legend.position = "none") +
labs(title = "一人当たりの GDP の所得レベル毎の分布")
課題
図1から図7 それぞれからどんなことが分かりましたか。
図1から図7
でわからなかったことで、このデータから、どのようなことが知りたいですか。
こんな図は、描けないかなどの提案はありますか。
極度の貧困の人について知りたいときには、あとどのような情報が必要でしょうか。
LS0tCnRpdGxlOiAi5qW15bqm44Gr6LKn44GX44GE77yB77yfIgpkYXRlOiAiMjAyMy4xMi4xMiIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBkZl9wcmludDogcGFnZWQKICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0Ci0tLQoKCj4gVU5JQ0VGIFtbTGlua10oaHR0cHM6Ly93d3cudW5pY2VmLm9yLmpwL2tvZG9tby9zZGdzLzE3Z29hbHMvMS1wb3ZlcnR5LyldCj4KPiAxLiAg5LiW55WM44Gn44Gv44CB5YWt5Lq644Gr5LiA5Lq677yIM+WEhDU2MDDkuIfkurrvvInjga7lrZDjganjgoLjgZ/jgaHjgYzjgIzmpbXluqbjgavjgb7jgZrjgZfjgYTjgI3mmq7jgonjgZfjgpLjgZfjgabjgYTjgb7jgZnjgIIKCuOBqeOBruOCiOOBhuOBquODh+ODvOOCv+OBi+OCieOAgeOBk+OBruOCiOOBhuOBquOBk+OBqOOBjOOCj+OBi+OCi+OBruOBp+OBl+OCh+OBhuOBi+OAguOBvuOBmuOBr+OAgealteW6puOBruiyp+WbsOOBqOOBr+OAgeOBqeOBruOCiOOBhuOBq+Wumue+qeOBl+OBpuOBhOOCi+OBruOBp+OBl+OCh+OBhuOBi+OAggoKIyMjIyBGYWN0IFNoZWV0OiBBbiBBZGp1c3RtZW50IHRvIEdsb2JhbCBQb3ZlcnR5IExpbmVzIFtbTGlua10oaHR0cHM6Ly93d3cud29ybGRiYW5rLm9yZy9lbi9uZXdzL2ZhY3RzaGVldC8yMDIyLzA1LzAyL2ZhY3Qtc2hlZXQtYW4tYWRqdXN0bWVudC10by1nbG9iYWwtcG92ZXJ0eS1saW5lcyldCgpUaGUgV29ybGQgQmFuayB1cGRhdGVkIHRoZSBnbG9iYWwgcG92ZXJ0eSBsaW5lcyBpbiBTZXB0ZW1iZXIgMjAyMi4gVGhlIGRlY2lzaW9uLCBhbm5vdW5jZWQgaW4gTWF5LCBmb2xsb3dzIHRoZSByZWxlYXNlIGluIDIwMjAgb2YgbmV3IHB1cmNoYXNpbmcgcG93ZXIgcGFyaXRpZXMgKFBQUHMpLS0tdGhlIG1haW4gZGF0YSB1c2VkIHRvIGNvbnZlcnQgZGlmZmVyZW50IGN1cnJlbmNpZXMgaW50byBhIGNvbW1vbiwgY29tcGFyYWJsZSB1bml0IGFuZCBhY2NvdW50IGZvciBwcmljZSBkaWZmZXJlbmNlcyBhY3Jvc3MgY291bnRyaWVzLiBUaGUgbmV3IGV4dHJlbWUgcG92ZXJ0eSBsaW5lIG9mIFwkMi4xNSBwZXIgcGVyc29uIHBlciBkYXksIHdoaWNoIHJlcGxhY2VzIHRoZSBcJDEuOTAgcG92ZXJ0eSBsaW5lLCBpcyBiYXNlZCBvbiAyMDE3IFBQUHMuIEhlcmUgeW91IGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNoYW5nZSBhbmQgd2hhdCBpdCBtZWFucyBmb3IgbWVhc3VyaW5nIGdsb2JhbCBwb3ZlcnR5LgoK5LiW55WM6YqA6KGM44GvMjAyMuW5tDnmnIjjgavkuJbnlYzjga7osqflm7Djg6njgqTjg7PjgpLmm7TmlrDjgZfjgZ/jgII15pyI44Gr55m66KGo44GV44KM44Gf44GT44Gu5rG65a6a44Gv44CBMjAyMOW5tOOBq+aWsOizvOiyt+WKm+W5s+S+oe+8iFBQUO+8ieOBjOeZuuihqOOBleOCjOOBn+OBk+OBqOOCkuWPl+OBkeOBpuOBruOCguOBruOBp+OBguOCi+OAguaWsOizvOiyt+WKm+W5s+S+oe+8iFBQUO+8ieOBqOOBr+OAgeOBleOBvuOBluOBvuOBqumAmuiyqOOCkuWFsemAmuOBruavlOi8g+WPr+iDveOBquWNmOS9jeOBq+WkieaPm+OBl+OAgeiyp+WbsOOBruevhOWbsuOCkuiqrOaYjuOBmeOCi+OBn+OCgeOBq+S9v+eUqOOBleOCjOOCi+S4u+imgeOBquODh+ODvOOCv+OBp+OBguOCi+OAguWbveOBlOOBqOOBruS+oeagvOW3ruOAgjEuOTDjg4njg6vjga7osqflm7Dnt5rjgavku6Pjgo/jgovjgIEx5Lq65b2T44Gf44KKMeaXpeW9k+OBn+OCijIuMTXjg4njg6vjgajjgYTjgYbmlrDjgZ/jgarmpbXluqbjga7osqflm7Dnt5rjga/jgIEyMDE35bm044GuUFBQ44Gr5Z+644Gl44GE44Gm44GE44KL44CC44GT44GT44Gn44Gv44CB44GT44Gu5aSJ5YyW44Go44Gd44KM44GM5LiW55WM44Gu6LKn5Zuw44Gu5ris5a6a44Gr5L2V44KS5oSP5ZGz44GZ44KL44GL44Gr6Zai44GZ44KL6Kmz57Sw5oOF5aCx44KS44GU6Kan44GE44Gf44Gg44GR44G+44GZ44CCCgrjgZ3jgZPjgafjgIHjgZPjga7os7zosrflipvlubPkvqHvvIhQUFA6IHB1cmNoYXNpbmcgcG93ZXIgcGFyaXRpZXPvvInjgpLjgb7jgZrjga/jgIHoqr/jgbnjgabjgb/jgb7jgZfjgofjgYbjgILlm73jgoTjgIHlnLDln5/jgZTjgajjga7jgIFHRFAsIFBQUCDvvIjlm73lhoXnt4/nlJ/nlKPvvIhHcm9zcyBEb21lc3RpYyBQcm9kb2N077yJ77yJ44KS44CB5Lq65Y+j44Gn5Ymy44Gj44Gf44CB5LiA5Lq65b2T44Gf44KK44Gu44CBR0RQIFBQUCDjgafjgZnjgIIyMDE35bm044KS5Z+65rqW44Go44GX44Gm44CB44Kk44Oz44OV44Os546H44KS6Kq/5pW044GX44CB44OJ44Or5o+b566X44GV44KM44Gm44GE44G+44GZ44CC57eP5Lq65Y+j44Gu5oyH5qiZ44KC5L2/44GE44G+44GZ44CCCgotICAgR0RQIHBlciBjYXBpdGEsIFBQUCAoY29uc3RhbnQgMjAxNyBpbnRlcm5hdGlvbmFsIFwkKTogTlkuR0RQLlBDQVAuUFAuS0QKCkdEUCBwZXIgY2FwaXRhLCBQUFAgKGNvbnN0YW50IDIwMTcgaW50ZXJuYXRpb25hbCBcJCkg44KS44CB5oyH5qiZ5ZCN77yISW5kaWNhdG9yIE5hbWXvvInjgajjgYTjgYTjgIFOWS5HRFAuUENBUC5QUC5LRCDjgpLjgIHmjIfmqJnjgrPjg7zjg4nvvIhJbmRpY2F0b3IgQ29kZe+8ieOBqOiogOOBhOOBvuOBmeOAguW+jOiAheOCkuOAgVdESe+8iOS4lueVjOmWi+eZuuaMh+aomeOAgVdvcmxkIERldmVsb3BtZW50IEluZGljYXRvcu+8ieOBqOWRvOOBtuOBk+OBqOOCguOBguOCiuOBvuOBmeOAggoKIyMjIOa6luWCmQoKU3RlcCAxLiDvvIhSIOOBq+apn+iDveOCkuS7mOOBkeWKoOOBiOOCi++8ieODkeODg+OCseODvOOCuOOBruOCpOODs+OCueODiOODvOODq++8iOacgOWIneOBoOOBke+8iQoKYGBge3IgZXZhbCA9IEZBTFNFfQppbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQppbnN0YWxsLnBhY2thZ2VzKCJXREkiKQppbnN0YWxsLnBhY2thZ2VzKCdzaG93dGV4dCcpCmBgYAoKU3RlcCAyLiDjg5Hjg4PjgrHjg7zjgrjjgpLkvb/jgYjjgovjgojjgYbjgavoqq3jgb/ovrzjgb/jgb7jgZnjgIIKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShXREkpCmxpYnJhcnkoc2hvd3RleHQpCnNob3d0ZXh0X2F1dG8oRkFMU0UpCiMgc2hvd3RleHRfYXV0bygpICMgZm9yIFdvcmQgcmVtb3ZlICMgCmBgYAoKU3RlcCAzLiDjg4fjg7zjgr/jgpLkv53lrZjjgZnjgovjgZ/jgoHjga4gZGF0YSDjgajjgYTjgYblkI3liY3jga7jg4fjgqPjg6zjgq/jg4jjg6rvvIjjg5Xjgqnjg6vjg4Djg7zvvInjgpLkvZzmiJDjgZfjgb7jgZnjgILvvIjmnIDliJ3jgaDjgZHvvIkKCmBgYHtyIGNyZWF0ZS1kaXJzfQpkaXIuY3JlYXRlKCJkYXRhIikKYGBgCgpTdGVwIDQuIOOCqOODqeODvOOBjOeUn+OBmOOBn+aZguOBq+OAgeiqv+OBueOChOOBmeOBhOOBruOBp+OAgSfjgrfjgrnjg4bjg6DoqIDoqp7vvIhTeXN0ZW0gTGFuZ3VhZ2XvvIknIOOCkuiLseiqnuOBq+OBl+OBpuOBiuOBjeOBvuOBmeOAgu+8iOacgOWIneOBoOOBke+8iQoKYGBge3IgZXZhbCA9IEZBTFNFfQpTeXMuc2V0ZW52KExBTkcgPSAiZW4iKQpgYGAKClN0ZXAgNS4g44OH44O844K/44KS6Kqt44G/6L6844G/44G+44GZ44CCV0RJIOODkeODg+OCseODvOOCuOOCkuOBpOOBi+OBhuOBqOOAgeewoeWNmOOBq+OAgeODh+ODvOOCv+OCkuiqreOBv+i+vOOCgOOBk+OBqOOBjOOBp+OBjeOBvuOBmeOAguOCj+OBi+OCiuOChOOBmeOBhOWQjeWJje+8iGdkcHBjYXAsIHBvcO+8ieOCkuOBpOOBkeOAgeS6uuWPo++8iHBvcO+8ieOCguiqreOBv+i+vOOCk+OBp+OBiuOBjeOBvuOBmeOAgmV4dHJhID0gVFJVRSDjgajjgZfjgabjgYrjgY/jgajjgIHkvb/jgYTmg4XloLHjgpLkuIDnt5Ljgavoqq3jgb/ovrzjgoDjgZPjgajjgYzjgafjgY3jgb7jgZnjgIIKCmBgYHtyIGNhY2hlID0gVFJVRX0KZGZfcGNhcCA8LSBXREkoaW5kaWNhdG9yID0gYyhnZHBwY2FwID0gIk5ZLkdEUC5QQ0FQLlBQLktEIiksIGV4dHJhID0gVFJVRSkKYGBgCgpTdGVwIDYuIOODh+ODvOOCv+OCkuOBv+OBpuOBv+OBvuOBmeOAggoKYGBge3J9CmhlYWQoZGZfcGNhcCkKYGBgCgpTdGVwIDcuIOODh+ODvOOCv+OBruWIl++8iGNvbHVtbnPjgIHlpInmlbDjgIB2YXJpYWJsZXPvvInjga/jganjga7jgojjgYbjgarjgoLjga7jgYzjgYLjgovjgYvjgpLooajnpLrjgZfjgb7jgZnjgIIKCmBgYHtyfQpzdHIoZGZfcGNhcCkKYGBgCgpTdGVwIDguIOW/heimgeOBquWIl+OBoOOBkeWPluOCiuWHuuOBl+OBvuOBmeOAggoKYGBge3J9CmRmX3BjYXAgPC0gZGZfcGNhcCB8PiBzZWxlY3QoYygxLDIsNCw1LDgsMTIpKQpoZWFkKGRmX3BjYXApCmBgYAoKU3RlcCA5LiDvvIjjgaHjgofjgaPjgajpq5jluqbjgafjgZnjgYzvvIlyZWdpb24sIGluY29tZSwgbGVuZGluZyDjgavjga/jgIHjganjga7jgojjgYbjgarjgoLjga7jgYzjgYLjgovjgYvjgIHjgb/jgabjgb/jgb7jgZnjgIIKCmBgYHtyfQpkZl9wY2FwIHw+IHNlbGVjdChyZWdpb24sIGluY29tZSkgfD4gbGFwcGx5KHVuaXF1ZSkKYGBgCgojIyMg6KaW6Kaa5YyW77yIVmlzdWFsaXphdGlvbu+8iQoK5ZuzIDEuIOS4lueVjOOBruOAgEdEUCBwZXIgQ2FwaXRhIOOBruaOqOenu++8iOe1jOW5tOWkieWMlu+8ieOCkuimi+OBpuOBv+OBvuOBmeOAggoKYGBge3J9CkNPVU5UUlkgPC0gIldvcmxkIgpkZl9wY2FwIHw+IGZpbHRlcihjb3VudHJ5ID09IENPVU5UUlkpIHw+IGRyb3BfbmEoZ2RwcGNhcCkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIGdkcHBjYXApKSArIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlID0gIuS4lueVjOOBruS4gOS6uuW9k+OBn+OCiuOBriBHRFAg44Gu5bmz5Z2H44Gu5o6o56e7IikKYGBgCgrlm7MgMi4gTG93IEluY29tZSDjga4g5o6o56e744KS44G/44Gm44G/44G+44GX44KH44GG44CCCgpgYGB7cn0KQ09VTlRSWSA8LSAiTG93IGluY29tZSIKZGZfcGNhcCB8PiBmaWx0ZXIoY291bnRyeSA9PSBDT1VOVFJZKSB8PiBkcm9wX25hKGdkcHBjYXApIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCBnZHBwY2FwKSkgKyBnZW9tX2xpbmUoKSArCiAgbGFicyh0aXRsZSA9ICLkvY7miYDlvpflm73jga7kuIDkurrlvZPjgZ/jgorjga4gR0RQIOOBruW5s+Wdh+OBruaOqOenuyIpCmBgYAoK5ZuzIDMuIExvdyBJbmNvbWUg44GuIOaOqOenu+OCkuOAge+8keaXpeOBguOBn+OCiuOBq+WkieOBiOOBpuOBv+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CkNPVU5UUlkgPC0gIkxvdyBpbmNvbWUiCmRmX3BjYXAgfD4gZmlsdGVyKGNvdW50cnkgPT0gQ09VTlRSWSkgfD4gZHJvcF9uYShnZHBwY2FwKSB8PgogIGdncGxvdChhZXMoeWVhciwgZ2RwcGNhcC8zNjUpKSArIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlID0gIuS4lueVjOOBru+8keaXpeS4gOS6uuW9k+OBn+OCiuOBriBHRFAg44Gu5bmz5Z2H44Gu5o6o56e7IikKYGBgCgrlm7MgNC4gMjAyMuW5tOOBruOAgUxvdyBJbmNvbWUgQ291bnRyeSDjgavjgaTjgYTjgabjgIFHRFAgcGVyIENhcGl0YSDjga7lsJHjgarjgYTjgYvjgonpoIbjgavkuKbjgbnjgabjgb/jgb7jgZfjgofjgYbjgIIKCmBgYHtyfQpkZl9wY2FwIHw+IGZpbHRlcih5ZWFyID09IDIwMjIsIHJlZ2lvbiAhPSAiQWdncmVnYXRlcyIpIHw+IAogIGZpbHRlcihpbmNvbWUgPT0gIkxvdyBpbmNvbWUiKSB8PgogIGRyb3BfbmEoZ2RwcGNhcCkgfD4gYXJyYW5nZShnZHBwY2FwKQpgYGAKCuWbsyA1LiDkuIDkurrlvZPjgZ/jgorjga5HRFAg44GuMjAyMuW5tOOBruWIhuW4g+OCkuOBv+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CmRmX3BjYXAgfD4gZmlsdGVyKHllYXIgPT0gMjAyMiwgcmVnaW9uICE9ICJBZ2dyZWdhdGVzIikgfD4gZHJvcF9uYShnZHBwY2FwKSB8PiAKICBnZ3Bsb3QoYWVzKGdkcHBjYXApKSArIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gMTAwMDApICsKICBsYWJzKHRpdGxlID0gIjIwMjLlubTjga4g5LiA5Lq65b2T44Gf44KK44GuIEdEUCDjga7lm73jga7liIbluIMiKQpgYGAKCuWbsyA2LiDlnLDln5/jgZTjgajjgavoibLliIbjgZHjgZfjgabjgb/jgabjgb/jgb7jgZfjgofjgYbjgIIKCmBgYHtyfQpkZl9wY2FwIHw+IGZpbHRlcih5ZWFyID09IDIwMjIsIHJlZ2lvbiAhPSAiQWdncmVnYXRlcyIpIHw+IAogIGRyb3BfbmEoZ2RwcGNhcCkgfD4gCiAgZ2dwbG90KGFlcyhnZHBwY2FwLCBmaWxsID0gcmVnaW9uKSkgKyAKICBnZW9tX2hpc3RvZ3JhbShjb2wgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAwLjIsIGJpbndpZHRoID0gMTAwMDApICsKICBsYWJzKHRpdGxlID0gIjIwMjLlubTjga4g5LiA5Lq65b2T44Gf44KK44GuIEdEUCDjga7lm73jga7liIbluIMiLCAKICAgICAgIHN1YnRpdGxlID0gIuWcsOWfn+aDheWgseS7mOOBjSIpCmBgYAoK5ZuzIDcuIOeuseOBsuOBkuWbs+OBp+imi+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CmRmX3BjYXAgfD4gZmlsdGVyKHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShnZHBwY2FwKSB8PiAKICBmaWx0ZXIoaW5jb21lICE9ICJBZ2dyZWdhdGVzIikgfD4gCiAgZ2dwbG90KGFlcyhnZHBwY2FwLCBmYWN0b3IoaW5jb21lLCBsZXZlbHMgPSBjKCJIaWdoIGluY29tZSIsICJVcHBlciBtaWRkbGUgaW5jb21lIiwgIkxvd2VyIG1pZGRsZSBpbmNvbWUiLCAiTG93IGluY29tZSIpKSwgZmlsbCA9IGluY29tZSkpICsgZ2VvbV9ib3hwbG90KCkgKyBzY2FsZV94X2xvZzEwKCkgKwogIGxhYnMoeSA9ICIiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICLkuIDkurrlvZPjgZ/jgorjga4gR0RQIOOBruaJgOW+l+ODrOODmeODq+avjuOBruWIhuW4gyIpCmBgYAoKIyMjIOiqsumhjAoKLSAgIOWbszHjgYvjgonlm7M3IOOBneOCjOOBnuOCjOOBi+OCieOBqeOCk+OBquOBk+OBqOOBjOWIhuOBi+OCiuOBvuOBl+OBn+OBi+OAggoKLSAgIOWbszHjgYvjgonlm7M3IOOBp+OCj+OBi+OCieOBquOBi+OBo+OBn+OBk+OBqOOBp+OAgeOBk+OBruODh+ODvOOCv+OBi+OCieOAgeOBqeOBruOCiOOBhuOBquOBk+OBqOOBjOefpeOCiuOBn+OBhOOBp+OBmeOBi+OAggoKLSAgIOOBk+OCk+OBquWbs+OBr+OAgeaPj+OBkeOBquOBhOOBi+OBquOBqeOBruaPkOahiOOBr+OBguOCiuOBvuOBmeOBi+OAggoKLSAgIOalteW6puOBruiyp+WbsOOBruS6uuOBq+OBpOOBhOOBpuefpeOCiuOBn+OBhOOBqOOBjeOBq+OBr+OAgeOBguOBqOOBqeOBruOCiOOBhuOBquaDheWgseOBjOW/heimgeOBp+OBl+OCh+OBhuOBi+OAggo=