1 ワークフロー

  • 表題 Title
  • 概要 Abstract
  • データ情報:データ名、データコード、変数名、データ概要
  • データの取得 - ダウンロードして保存しておく
    • 準備:library(tidyverse); library(WDI)
    • df_w6eda <- WDI(indicator = c(co2pcap = "EN.ATM.CO2E.PC", forest = "AG.LND.FRST.ZS"), extra = TRUE)
    • 二つ以上の指標、それぞれに変数名 co2pcap, forest
    • 追加情報:extra = TRUE; region 地域情報, income 収入レベル
    • データの確認:データが十分あるか、国名リスト、地域名リスト
  • 分析する国のリスト:南部アフリカ関税同盟、国や地域を選択
  • 分析・視覚化
    • 各年毎のデータの数の棒グラフ
    • 経年変化
      • 日本(身近な馴染みのあるデータを確認)
      • 南部アフリカ関税同盟、選択した国・地域
    • 分布
      • ヒストグラム(年を指定した度数分布)
      • 値が大きい10カ国とその値の棒グラフ
      • 値が小さい10カ国とその値の棒グラフ
    • 相関
      • 散布図(scatter plot)x-軸と、y-軸に、それぞれの変数をとる
      • 相関係数
  • 各項目に、気づいたこと、疑問などを記録

2 準備

Posit.Cloud または RStudio で R を使うことを想定して説明と注意点を書きます。

2.1 R Notebook の作成

再現性と記録、さらには、コミュニケーションのために、R Notebook を作成します。R Notebook は、R Markdown の一形式です。

2.1.1 ファイルを作成するときの注意

  1. Posit Cloud のときは、まず、Login し、プロジェクトに移動(クラスでは、共有プロジェクト intro2rj を使用)のプロジェクトに入り、 ファイルから、ges001 のフォルダーを選択して、移動します。この中に、data フォルダが作成されていることを確認し、このges001 に、新しく作成したファイルを保存します。新しく作成したファイルの入っているフォルダーの中に、data フォルダがあることが大切です。そこに、データを書き込みます。

  2. RStudio の場合には、まずは、新しい Project を作成します。File > New Project から作成します。すでに、作成してある場合は、それを、Open Project や、Recent Project から開きます。その中に、新しいファイルを作成します。作成したフォルダーに、data フォルダがあることを確認してください。新しく作成したファイルの入っているフォルダーの中に、data フォルダがあることが大切です。そこに、データを書き込みます。

  •  Rmd ファイルを作成したら、すぐに、ID と名前を書きます。タイトルも決まっていたら書きます。

2.1.2 ファイルを提出するときの注意

2.1.2.1 確認作業

  • Run All で、最後に、もう一度、すべてを、実行。

  • エラーが修正できない場合には、その次のコードチャンクから、Run Below で実行。

  • Preview の右のギアマークから、Preview in Widow を選択し、View in Browser で、いつも、使っている、Web Browser で、最後まで、グラフなどが出ているか確認。

2.1.2.2 Posit.Cloud のファイルダウンロード

RStudio の場合には、自分の PC に作成したファイルがありますから、問題ないと思いますが、Posit Cloud で作成した場合には、自分の PC にダウンロードする必要があります。

提出したいファイルの左にあるチェックボックスをチェックします。Files の 右端にある、ギアマークの Export を押すと、ダウンロードできます。それを提出してください。末尾が、nb.html となっているものを提出していただくのがよいですが、よくわからないときは、nb.html ファイルと、Rmd ファイルと両方提出してください。

2.2 必要なパッケージの読み込み

このコースでは、この二つのパッケージ(R の機能を拡張するもの)を読み込みます。初めて使う時は、Tools > Install Packages からインストールします。

library(tidyverse)
library(WDI)

3 データ

  • 世界開発指標(World Development Indicators)Link からデータを選択します。

  • 授業で使ったデータのリスト:リンク

3.1 データ情報

データ名、データID(WDI コード)、データ概要を取得して書きます。

リンクを残しておくとあとで便利です。サイトの Details に概要も、データ ID もあります。日本語にしておくのも良いでしょう。

このときに、短い変数名も決めておきます。

3.1.1

データ1:一人当たりの二酸化炭素排出量(トン)CO2 emissions (metric tons per capita) :EN.ATM.CO2E.PC [Link]

データ1変数名:co2

データ1概要:Carbon dioxide emissions are those stemming from the burning of fossil fuels and the manufacture of cement. They include carbon dioxide produced during consumption of solid, liquid, and gas fuels and gas flaring.

データ2:化石燃料での電気生成の割合(%)Electricity production from oil, gas and coal sources (% of total):EG.ELC.FOSL.ZS [Link]

データ2変数名:fossil

データ2概要:Sources of electricity refer to the inputs used to generate electricity. Oil refers to crude oil and petroleum products. Gas refers to natural gas but excludes natural gas liquids. Coal refers to all coal and brown coal, both primary (including hard coal and lignite-brown coal) and derived fuels (including patent fuel, coke oven coke, gas coke, coke oven gas, and blast furnace gas). Peat is also included in this category.

3.2 データの読み込み(Importing)

WDI で読み込みます。

  • 読み込むときには、指標 ID と、変数名が必要です。
  • 読み込んだデータに名前をつけます。

3.2.1

この例では、二つの指標を、読み込みます。

df_co2_fossil <- WDI(indicator = c(co2 = "EN.ATM.CO2E.PC",
                     fossil = "EG.ELC.FOSL.ZS"), extra = TRUE)
df_co2_fossil
  • 一つ目のデータの指標(ID)は、EN.ATM.CO2E.PC、変数名は、co2 にしました。二つ目のデータの指標(ID)は、EG.ELC.FOSL.ZS、変数名は、fossil にしました。

  • 指標 (ID) は WDI のサイトから得たものを使わなければいけませんが、変数名は自分で決められます。 できるだけ、分かりやすい名前にしておくのが良いでしょう。データ名と、変数名を区別する為、わたしは、データは、df_ で始まる名前にしています。

  • 最後にextra = TRUE としておくと、国ごとの地域、所得レベルなどの情報を一緒に読み込んでくれます。必要がなければ、次のようになります。

df_co2_fossil_short <- WDI(indicator = c(co2 = "EN.ATM.CO2E.PC",
                     fossil = "EG.ELC.FOSL.ZS"))
df_co2_fossil_short

-「機械は思った通りに動かない。書いた通りに動く。」と言われます。引用符や、かっこなど、マッチするように、書いてください。

3.2.2 WDI でのデータの読み込みのコードについて

実は、次の命令でも、データをとってきます。

WDI()

Help をみると次のように書かれています。

WDI(
  country = "all",
  indicator = "NY.GDP.PCAP.KD",
  start = 1960,
  end = NULL,
  extra = FALSE,
  cache = NULL,
  latest = NULL,
  language = "en"
)

これらの変数を指定できますが、右にあるのが、初期値です。一つ一つの説明も、Help ページに書いてあります。

WDI() だと、GDP (PPP) のすべての国のデータとダウンロードします。使う為には、これに名前をつける必要があるので、上の例では、df_co2_fossil とか、df_co2_fossil_short としてあります。 最後の行に、これらを加えておくことで、内容を表示することも同時にしてくれます。

3.3 データの保存

ダウンロードしたデータは、data フォルダに保存しておくことをお勧めします。世界銀行は、ときどき、データをアップデータするために、サービスが停止することがあります。また、保存したものを読み込むことで、毎回ダウンロードしないで済むメリットもあります。

3.3.1

読み込んだデータ df_co2_fossil を、CSV(カンマ区切り形式)で、data フォルダーの中に、co2_fossil.csv という名前で保存します。このときに、data フォールだがないと、保存できません。R Notebook があるフォルダーの中に、data フォルダがあることが必要です。data フォルダがないというエラーメッセージが出たら、最初に説明した、ファイルを作る時の部分を読み返してください。間違っていたら、ここで、Save as で適切なところに、保存しなおしてください。

write_csv(df_co2_fossil, "data/co2_fossil.csv")
df_co2_fossil <- read_csv("data/co2_fossil.csv")
Rows: 16758 Columns: 14── Column specification ────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (7): country, iso2c, iso3c, region, capital, income, lending
dbl  (5): year, co2, fossil, longitude, latitude
lgl  (1): status
date (1): lastupdated
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
write_csv(df_co2_fossil_short, "data/co2_fossil_short.csv")
df_co2_fossil_short <- read_csv("data/co2_fossil_short.csv")
Rows: 16758 Columns: 6── Column specification ────────────────────────────────────────────────────────────────
Delimiter: ","
chr (3): country, iso2c, iso3c
dbl (3): year, co2, fossil
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

3.4 データの確認

データを確認します。どのような列(変数)があるかを確認しますが、特に、最初に定めた、指標の変数が、ある列にはっていることを確認することも大切です。特に、extra = TRUE として読み込むと、さまざまな変数を読み込んでいますから、確認してください。

3.4.1

データ全体の確認。右上の三角印から、隠れている変数をみることができ、下の NEXT や、番号から、次のページへと移動し、10データずつ確認できるようになっています。

head(df_co2_fossil) とすると、最初の6行だけ、tail(df_co2_fossil) とすると、最後の、6行を確認することができます。

df_co2_fossil

データの変数(列)の確認には、str() も便利です。下のコードは、df_co2_fossil |> str() としても同じです。|> はパイプオペレータと呼ばれます。かっこの中の第一引数として、一つ前の出力を代入します。

str(df_co2_fossil)
spc_tbl_ [16,758 × 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ country    : chr [1:16758] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
 $ iso2c      : chr [1:16758] "AF" "AF" "AF" "AF" ...
 $ iso3c      : chr [1:16758] "AFG" "AFG" "AFG" "AFG" ...
 $ year       : num [1:16758] 2014 1971 2006 2013 1995 ...
 $ status     : logi [1:16758] NA NA NA NA NA NA ...
 $ lastupdated: Date[1:16758], format: "2023-12-19" "2023-12-19" ...
 $ co2        : num [1:16758] 0.2837 NA 0.0898 0.2981 0.0888 ...
 $ fossil     : num [1:16758] NA NA NA NA NA NA NA NA NA NA ...
 $ region     : chr [1:16758] "South Asia" "South Asia" "South Asia" "South Asia" ...
 $ capital    : chr [1:16758] "Kabul" "Kabul" "Kabul" "Kabul" ...
 $ longitude  : num [1:16758] 69.2 69.2 69.2 69.2 69.2 ...
 $ latitude   : num [1:16758] 34.5 34.5 34.5 34.5 34.5 ...
 $ income     : chr [1:16758] "Low income" "Low income" "Low income" "Low income" ...
 $ lending    : chr [1:16758] "IDA" "IDA" "IDA" "IDA" ...
 - attr(*, "spec")=
  .. cols(
  ..   country = col_character(),
  ..   iso2c = col_character(),
  ..   iso3c = col_character(),
  ..   year = col_double(),
  ..   status = col_logical(),
  ..   lastupdated = col_date(format = ""),
  ..   co2 = col_double(),
  ..   fossil = col_double(),
  ..   region = col_character(),
  ..   capital = col_character(),
  ..   longitude = col_double(),
  ..   latitude = col_double(),
  ..   income = col_character(),
  ..   lending = col_character()
  .. )
 - attr(*, "problems")=<externalptr> 

3.5 各年毎のデータの数の棒グラフ

世界銀行では、1960年から昨年までのデータを作成していますが、すべてあるわけではありません。また、国や地域によっては、データがない場合があります。最新のデータは何年のものかも含めて、調べておく必要があります。

3.5.1

この棒グラフでは、1990年から2015年までのデータが180程度、すなわち、180の国の地域については、両方の知っ方についてのデータがあることがわかります。

df_co2_fossil |> drop_na(co2, fossil) |> 
  ggplot(aes(year)) + geom_bar() + labs(title = "各年毎のデータの数:co2, fossil ともに存在する国・地域の数")

各、変数ごとに調べたい時は、long table を使います。少し高級ですね。

この例では、fossil のデータは、1960 年からありますが、co2 は、1990 年から。また、co2 は、2020 年までのデータがありますが、fossil は、2015 年までのデータしかないことがわかります。

pivot_longer(c(co2, fossil)) では、これら二つの指標を、name という変数に、それぞれの値は、value に入れます。縦長のデータということで、説明しました。(演習7)

df_co2_fossil |> pivot_longer(c(co2, fossil)) |> drop_na(value) |> 
  ggplot(aes(year, fill = name)) + geom_bar()+ 
  labs(title = "各年毎のデータの数:co2, fossil それぞれが存在する国・地域の数")

4 変形(transforming)

データの必要な部分だけを取り出して、分析します。

4.1 基本的な変形

  • 行の選択filter(country %in% c("Japan", "China")), distinct(country), drop_na(value)

  • 列の選択select(country, iso2c, year, var1, var2, region)

4.2 縦長データ・横長データ

  • 横並びの変数を縦並びに:name 列と、value 列を作り、var_1, var_2, … , var_n を name 列に、対応する値を value 列に

    • pivot_longer(cols = c(var_1, var_2, ... , var_n))

    • pivot_longer(cols = c(female_unemploy, male_unemploy))

    • pivot_longer(c(electricity_urban, electricity_rural)): cols = は省略可能

    • pivot_longer(cols = electricity_urban:sanitation_rural)):electricity_urban の列から、sanitation_rural の列までのすべての変数を指定

  • 活用:pivot_longer(cols = c(var1, var2))|> ggplot(aes(year, value, col = name) + geom_line()

  • 縦並びの変数を横並びに:列名を指定する変数と、値の変数を指定し、横並びにします。

    • `pivot_wider(names_from = var1, values_from = var2)

    • `pivot_wider(names_from = name, values_from = value): pivot_longer の逆です。

4.3 変数の選択(selecting)

extra = TRUE として、データを入手すると、使わない変数もたくさんあるので、見やすいように、必要な変数だけにします。必要なものを、落とさないように、気をつけます。

4.3.1

わたしは、少し短めの名前を使っています。結果を、すぐ表示するようにして、そこで、必要な変数が、のこていることを確認します。

df_co2fos <- df_co2_fossil |> 
  select(country, iso2c, year, co2, fossil, region, income)
df_co2fos

4.4 縦長の表(Long Table)に変換

上の説明を、確認してください。たいせつなのは、これをどのように活用するかですから、このあとに、df_co2fos_long を使って、図を描いているものを、確認して、df_co2fos との違いを比較してください。このあとも、df_co2fos を使って描画をしている場合もあります。どちらでも、使えるものと、一方を使うと、他方を使うのと比較して、非常に、単純になる場合があることを確認していってください。

4.4.1

co2fossil の列(変数)を、変数を name に、値を value に入れて、縦に並べます。

df_co2fos_long <- df_co2fos |> 
  pivot_longer(cols = c(co2,fossil))
df_co2fos_long

4.5 国と地域

主として分析する国や地域のリストを作成します。最初に書いてありますが、このあとの分析で、国や、地域を加えたり、変更することもあるでしょう。全体の構成としては、視覚化などを始める前に、リストを作成しておくことが必要です。定義がされていないと、エラーが生じるからです。最後に、Run All などをすればわかりますが、上から順に実行するので、たとえば、ASEAN などの分析をするときに、それが、最初の方で定義されていなければ、エラーとなります。途中では、その都度定義すれば、それを、理解して実行しますが、完成形にするときには、実際に使うコードより前に定義しておかないといけません。

国や地域を選択するには、国名 country または、iso2c などの国のコードが必要です。正確でないといけませんし、iso2c などをすべて覚えているわけではないので、それらを表示させ、そこから、コピー・ペーストするのが安全です。

国名は一般的に長いので、iso2c も便利です。指定する時は、たとえば、asean に国名が、ASEAN に iso2c コードが入っていれば、

  • filter(country %in$ asean)

  • filter(iso2c %in% ASEAN)

選択するときの、条件が変わりますから、注意してください。

4.5.1 地域の iso2c コード

country には、国と地域両方が入っています。地域の iso2c は以下のものです。国と地域を区別するときに使います。

  • 地域のみ filter(country %in% REGION)
  • 国のみ filter(!(country %in% REGION))

! は否定です。

REGION <- c("1A", "1W", "4E", "6F", "6N", "6X", "7E", "8S", "A4", "A5", 
"A9", "B1", "B2", "B3", "B4", "B6", "B7", "B8", "C4", "C5", "C6", 
"C7", "C8", "C9", "D2", "D3", "D4", "D5", "D6", "D7", "EU", "F1", 
"F6", "M1", "M2", "N6", "OE", "R6", "S1", "S2", "S3", "S4", "T2", 
"T3", "T4", "T5", "T6", "T7", "V1", "V2", "V3", "V4", "XC", "XD", 
"XE", "XF", "XG", "XH", "XI", "XJ", "XL", "XM", "XN", "XO", "XP", 
"XQ", "XT", "XU", "XY", "Z4", "Z7", "ZB", "ZF", "ZG", "ZH", "ZI", 
"ZJ", "ZQ", "ZT")

4.5.1.1 地域のリストを表示

df_co2fos |> filter(iso2c %in% REGION) |> distinct(country, iso2c)

4.5.1.2 国名とその地域・所得レベルを表示

df_co2_fossil とそれから変数を選択した、df_co2fos は、extra=TRUE として、追加情報がありますから、地域情報(region)と 所得レベル(income)も加えておきます。

df_co2fos |> filter(!(iso2c %in% REGION)) |> distinct(country, iso2c,region,income)

df_co2_fossil_short では、extra=TRUE は指定せず(初期設定通り extra = FALSE)としてありますから、上の、df_co2fos を、df_co2_fossil_short に置き換えるとエラーが出ます。region や、income の列がないからです。その場合は、次のようにします。

df_co2_fossil_short |> filter(!(iso2c %in% REGION)) |> distinct(country, iso2c)

存在しない変数についてなにかをしようとすると Error になります。そのときは、そこで使っているデータに実際に、その変数があるかどうか確認してください。この場合なら、以下のようにすれば、region や、income という変数がないことは確認できますね。

df_co2_fossil_short

4.5.2 国や地域の選択

授業で紹介したものを次に書いておきます。

asean <- c("Brunei Darussalam", "Cambodia", "Indonesia", "Lao PDR", "Malaysia", 
"Myanmar", "Philippines", "Singapore", "Viet Nam")
ASEAN <- c("BN", "KH", "ID", "LA", "MY", "MM", "PH", "SG", "VN")
BRICS <- c("Brazil", "Russian Federation", "India", "China", "South Africa")
SACU <- c("South Africa", "Namibia", "Eswatini", "Botswana", "Lesotho")
LA_GINI <- c("Suriname", "Belize", "Brazil", "Colombia")

4.5.3 地域(region)と、所得レベル

extra = TRUE として、データを入手すると、地域名と、所得レベルも一緒に得られます。それらは、どのようなものか確認してみます。distinct(region) は、異なるもののみ取得、pull() は、表形式ではなく、ベクトル(データのならび)で取得する為に使っています。

df_co2fos |> distinct(region) |> pull()
[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                          

これも、定義しておきます。REGION はすでに使ってありますから、混乱をさけるため、小文字にしました。

regions <- c("South Asia", "Europe & Central Asia", "Middle East & North Africa", 
"East Asia & Pacific", "Sub-Saharan Africa", "Latin America & Caribbean", 
"North America")
df_co2fos |> distinct(income) |> pull()
[1] "Low income"          "Aggregates"          "Upper middle income"
[4] "Lower middle income" "High income"         NA                   
[7] "Not classified"     

こちらは、ある程度順番も重要ですから、次のようにしておきます。

INCOME <- c("High income", "Upper middle income", "Lower middle income", 
"Low income")

4.5.4 分析する国や地域のリスト

あなたが分析したい国や地域のリストをまずは書いておくと、思いつきで変更するのではなく、首尾一貫した分析ができます。

最初の確認のためには、わたしは、Japan (iso2c では、JP) か、World (iso2c では、1W) をつかうことにしています。身近な、または、全体から始める為です。分析を始めたら、CHOSEN_COUNTRIES は変更した方が良い場合もありますし、CHOSEN_COUNTRIES_1, CHOSEN_COUNTRIES_2 などとして、幾つものグループについて分析するのもよいでしょう。もっと短い名前にしてもよいですが、途中まで、入力すればあとは自動的に表示されますから、矢印と、Tab を使えば、簡単に入力できます。

CHOSEN_COUNTRY <- ""
CHOSEN_COUNTRIES <- c()

5 分析・視覚化

一般的な形で書く時は、今後、データは、df で表します。data frame の意味です。R では、基本的なデータ形式です。df_co2fos などとした、df もそこからとったものです。

視覚化は、探索的データ分析の核とも言えるものです。視覚化して、それから、見えるものを通して、考えます。気づいたこと、疑問に思ったことを、書き留めておく。そして、次の視覚化で、さらに、理解を深めていくといった感じです。また、ちがった、データをみることもあるかと思いますが、ここでは、限られたデータをみる、基本的な方法を見ていきます。

基本は、二つ。

  1. 一つのデータの、分布をみる。
  2. 二つのデータの相関をみる。

データは、数値データ(numerical data)ばかりでなく、文字からなるデータ、通常は、カテゴリー・データ(categorical data、日本語では、名目データということもあります)の場合もあります。

5.1 さまざまな視覚化(Visualizing)

例として、中心的に使うデータは、二つです。

  • df_co2fos: co2 (Co2 per Capita) の値と、化石燃料による発電の割合を表す fossil が変数に含まれ、year 以外に、region や、income のデータも入っています。

  • df_co2fos_long: 縦長の表で、name に、co2 と fossil を含み、value に その値が入っています。データをよく確認してください。上の方にあります。

基本的には、データを絞り込み、そのあとで、ggplot2 を使います。以下のようなフォーマットになります。

df_co2fos |> filter などで必要な行を絞り込む |> drop_na(変数) などで、NA を削除 |>
  ggplot(aes(x, y)) + geom_***()

aes() の部分を mapping と言います。実は、mapping = aes(x, y) と書くのが正式で、その mapping を省略しています。詳細は、geom_***() のいろいろな描写方法によって異なりますので、それぞれの、Help(右下の窓枠(pane)の Help タブの検索窓に入れれば、説明や、パラメタ(オプションとして書き込む内容)や、その初期値などの情報が得られます)を確認してください。

データの最初の6行を表示させるのは、head() でしたが、head と Help に入れてみてください。かなり詳しく書かれていますから、すべて理解するのは難しいかもしれませんね。視覚化の最初は、折れ線グラフから始めますが、それには、geom_line を使います。これもみてみてください。

5.2 経年変化

year を x 軸に、変数の値を y 軸に取ると、経年変化がわかります。日本や、世界でみてみます。drop_na(var) を使うことで、空白部分がなくなり、Warning も減りますが、違う指標を比較する時は、これを入れないのも手ですし、同じ基準にするために、drop_na(var1, var2) としておく手もあります。

基本は、年毎に、数値変数 var の点を、結びます。

df |> ggplot(aes(year, var)) + geom_line()

次のように書くことも可能です。

df |> ggplot() +geom_line(aes(year, var))
df |> ggplot(aes(year)) + geom_line(var1) + geom_line(var2)

なども可能です。

例をみていきましょう。一つの国・地域

df_co2_fos |> filter(country == "国名") |> drop_na(変数) |>
  ggplot(aes(year, 変数)) + geom_line()

いくつかの国・地域

df_co2_fos |> filter(country %in% c("国名1", "国名2", ... , "国名n")) |> drop_na(変数) |>
  ggplot(aes(year, 変数, col = country)) + geom_line()

iso2c で、国・地域を選択することも可能です。

df_co2_fos |> filter(iso2c %in% c("二文字コード1", "二文字コード2", ... , "二文字コードn")) |>
  drop_na(変数) |>
  ggplot(aes(year, 変数, col = country)) + geom_line()

最初分析中は、省略してもよいですが、なるべく、

  • labs(title = “グラフのタイトル”)

として、タイトル名を入れましょう。x 軸、y 軸のラベルを変更する時は、

  • labs(title = “グラフのタイトル”, x = “年”, y = “変数の名前”)

とします。

改行するときには、|> の後、+、(、, や、= の後で改行します。なんとなく、続くことが明らかなところで改行するということですね。

5.2.1

5.2.1.1 国または地域の一つの変数に関する経年変化

一番、簡単な形は、

df_co2fos |> filter(country == "Japan") |> ggplot(aes(year, co2)) + geom_line() +
  labs(title = "日本の一人当たりの二酸化炭素排出量:NA も含む")

ただ、これだと、最初の方はデータがないので、グラフが途中から始まります。そこで、drop_na(co2) を入れて、co2 の値が、NA ではないところだけ表示します。

df_co2fos |> filter(country == "Japan") |> drop_na(co2) |>
  ggplot(aes(year, co2)) + geom_line() + labs(title = "日本の一人当たりの二酸化炭素排出量(トン):NA を除く")

df_co2fos |> filter(country == "World") |> drop_na(fossil) |>
  ggplot(aes(year, fossil)) + geom_line() + labs(title = "世界の化石燃料による発電量(%)")

化石燃料のデータは、1970年からデータがあることも分かりましたね。データの数を最初に調べたときのことを思い出してください。特に、色付きの方。違う条件で描くと、比較ができます。いろいろなことが分かりますよ。

ここでは、日本と世界と変えましたが、同じ国または地域で比較するのが適切でしょう。いくつもの国や、地域でみてみることはおすすめです。

5.2.1.1.1 参考

では、次のようにしたらどうでしょう。

df_co2fos |> ggplot(aes(year, fossil)) + geom_line() +
  labs(title = "Filter を使わなかった時の折線グラフ")

なにか変ですね。これは、それぞれの年にたくさんデータがあって、それを線では結べないので、こうなってしまうのです。実は、geom_line を geom_point に変えれば、多少状況は分かります。

df_co2fos |> ggplot(aes(year, fossil)) + geom_point() +
  labs(title = "Filter を使わなかった時の散布図")

これを、折線で結ぶことはできません。また、missing value もたくさんあるよとなっています。そこで、ちょっと改良します。

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(fossil, income) |> 
  ggplot(aes(year, fossil, col = factor(income, levels = INCOME))) + geom_point() +
  labs(title = "国別、所得レベル別の一人当たりの化石燃料での発電割合", col = "Income Level")

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(co2, income) |> 
  ggplot(aes(year, co2, col = factor(income, levels = INCOME))) + geom_point() +
  labs(title = "国別、所得レベル別の一人当たりの二酸化炭素排出量", col = "Income Level")

現時点では、何をやっているかわからないかもしれませんが、二つのグラフは、散布図のひとつで、所得レベルで、色を変えています。また、その表示の順序を、何も指定しないと、アルファベット順になるので、ここでは、特別に、INCOME に登録した順序で表示しています。いろいろなことを見てとることもできると思います。あなたは、どんなことに気づきましたか。

実は、散布図の方が基本的です。そちらを先に学ぶ方がよいように思います。ただ、世界開発指標は、年毎のデータになっていますから、経年変化を先にしています。上に書いたように、経験変化を調べる時は、まずは、国などを指定する必要があることを、理解してください。

5.2.1.2 国または地域の二つ以上の変数に関する経年変化

このためには、縦長の表を使います。

ただ、この例では、二つの指標の単位がことなるため、このように表示するのが適切かどうかは不明です。

表題が長い時は、‘’ を挿入すれば、改行できます。

df_co2fos_long |> filter(country == "Japan") |> drop_na(value) |>
  ggplot(aes(year, value, col = name)) + geom_line() + 
  labs(title = "日本の一人当たりの二酸化炭素排出量と、\n化石燃料による発電の割合")

df_co2fos_long |> filter(country == "World") |> drop_na(value) |>
  ggplot(aes(year, value, col = name)) + geom_line() +
  labs(title = "世界の一人当たりの二酸化炭素排出量と、\n化石燃料による発電の割合")

5.2.1.2.1 参考

実は、指標の数が二つぐらいであれば、df_co2fos を使って、描くことも可能です。座標軸名を変更しています。

df_co2fos |> filter(country == "Japan") |> drop_na(co2, fossil) |>
  ggplot(aes(x = year)) + geom_line(aes(y = co2), col = "red") + 
  geom_line(aes(y = fossil), col = "blue") +
  labs(title = "df_co2fos を使って一つ一つの指標を描画", y = "fossil (%) in blue, co2 (ton) in red")

co2 の方は、大体、9ton ぐらいなので、7倍ぐらいしてみましょう。

df_co2fos |> filter(country == "Japan") |> drop_na(co2, fossil) |>
  ggplot(aes(x = year)) + geom_line(aes(y = co2*7), col = "red") + geom_line(aes(y = fossil), col = "blue") + labs(title = "df_co2fos を使って一つ一つの指標を描画:co2 七倍", y = "fossil (%) in blue, co2 (ton) x 7 in red")

どうですか、縦軸は、少し変ですが、いままでとは、違って気づくこともありますよね。両方のデータがあるところだけを表示させています。

簡単なのは、df_co2fos_long を使った方でしたが、df_co2fos を使った方も、使えそうなことが分かりました。

色の取り扱いもいろいろとありますが、それは、参考文献などを参照してください。

5.2.1.3 データの確認

グラフが表示されなかったり、期待したものではない時はそのデータを見てみましょう。 途中から、co2 と fossil の両方のデータがあることがわかります。上の方で、各年のデータの数の棒グラフでも一般的傾向を確認してありますね。

df_co2fos_long |> filter(country == "Japan") |> drop_na(value)

5.2.1.4 いくつかの国または地域の二つ以上の変数に関する経年変化

regions は、国名で定義していましたから、filter(country %in% regions) で選択しています。次の、ASEAN は、iso2c で定義していましたから、filter(iso2c %in% ASEAN) としています。違いを理解してください。

filter の使い方、一つの国や地域のときは、filter(country == “Japan”), filter(country == “World”) でした。今度は、%in% をつかい、そのあとのグループに入っているものを選択しています。

参考:

regions <- c("South Asia", "Europe & Central Asia", "Middle East & North Africa", 
"East Asia & Pacific", "Sub-Saharan Africa", "Latin America & Caribbean", 
"North America")

ASEAN <- c("BN", "KH", "ID", "LA", "MY", "MM", "PH", "SG", "VN")
df_co2fos |> filter(country %in% regions) |> drop_na(co2) |>
  ggplot(aes(year, co2, col = country)) + geom_line() +
  labs(title = "地域ごとの一人当たりの二酸化炭素排出量")

選択は、iso2c でしていますが、col = country としてあるので、国名が表示されています。この次の 一人当たりの二酸化炭素排出量の方のグラフでは、それを、iso2c に変更しています。

df_co2fos |> filter(iso2c %in% ASEAN) |> drop_na(fossil) |>
  ggplot(aes(year, fossil, col = country)) + geom_line()  +
  labs(title = "ASEAN の化石燃料による発電割合")

グラフのスペースが確保できる利点もあります。

df_co2fos |> filter(iso2c %in% ASEAN) |> drop_na(co2) |>
  ggplot(aes(year, co2, col = iso2c)) + geom_line()  +
  labs(title = "ASEAN(iso2c 表示)の一人当たりの二酸化炭素排出量")

5.2.1.5 いくつかの国または地域の二つ以上の変数に関する経年変化

上にも書いたように、単位が異なるので、適切かは疑問ですが、同時にみることはできます。

df_co2fos_long |> filter(country %in% regions) |> drop_na(value) |>
  ggplot(aes(year, value, col = country, linetype = name)) + geom_line() +
  labs(title = "一人当たりの二酸化炭素排出量と\n化石燃料による発電割合")

df_co2fos_long |> filter(country %in% SACU) |> drop_na(value) |>
  ggplot(aes(year, value, col = country, linetype = name)) + geom_line() +
  labs(title = "南部アフリカ関税同盟の一人当たりの二酸化炭素排出量と\n化石燃料による発電割合")

5.3 分布

それぞれの指標の分布をみます。比較するには、箱ひげ図も有効です。

5.3.1 ヒストグラム

bins 区分けの数、binwidth 区分幅を変更して、適切に表示されるようにします。何も書いていないと、初期設定では、bins = 30 になっています。

5.3.1.1

特定の年に、一定の範囲のところにはいる、国の数(度数分布)を表します。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2) |>
  ggplot(aes(co2)) + geom_histogram() +
  labs(title = "2020年の国別の一人当たりの二酸化炭素排出量のヒストグラム")

区分けの個数を10個 bins = 10 に変更すると次のようになります。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2) |>
  ggplot(aes(co2)) + geom_histogram(bins = 10) +
  labs(title = "2020年の国別の一人当たりの二酸化炭素排出量のヒストグラム")

区分けの幅を binwidth = 2 とすると下のようなグラフになります。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2) |>
  ggplot(aes(co2)) + geom_histogram(binwidth = 2) +
  labs(title = "2020年の国別の一人当たりの二酸化炭素排出量のヒストグラム")

地域名を色で加えることも可能です。塗りつぶしなので、fill を使っています。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2) |>
  ggplot(aes(co2, fill = region)) + geom_histogram(bins = 10) +
  labs(title = "2020年の国別の一人当たりの二酸化炭素排出量のヒストグラム\n地域情報を加えたもの")

境目がみにくいように思うので、わたしは、黒枠の細めの線を入れます。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2) |>
  ggplot(aes(co2, fill = region)) + geom_histogram(bins = 10, col = "black", linewidth = 0.2)+
  labs(title = "2020年の国別の一人当たりの二酸化炭素排出量のヒストグラム\n地域情報を加えたもの")

左に偏っているので、LOG 表示を使うこともひとつです。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(co2) |>
  ggplot(aes(co2, fill = region)) + 
  geom_histogram(bins = 10, col = "black", linewidth = 0.2) + scale_x_log10()+
  labs(title = "2020年の国別の一人当たりの二酸化炭素排出量のヒストグラム\n地域情報を加えたもの", x = "co2 (ton/person, log10 scale)")

もう一つの変数、fossil についてもやってみてください。

5.3.1.1.1 参考

年を、2020 にしましたが、fossil のときにも同じように、2020 にするとどうなるでしょうか。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(fossil) |>
  ggplot(aes(fossil)) + geom_histogram(bins = 10) +
  labs(title = "2020年の化石燃料による発電割合")

何も現れません。何が問題なのでしょう。一番最初に、データの数をみましたよね。特に、カラーの方を思い出してください。確かめてみましょう。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2020) |> drop_na(fossil)

2020にすると、NA でないデータはないことが確認できます。では、何年なら大丈夫でしょうか。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2015) |> drop_na(fossil) |>
  ggplot(aes(fossil)) + geom_histogram(bins = 10) +
  labs(title = "2015年の化石燃料による発電割合")

グラフは現れましたが、bins や、binwidth はこれが適切でしょうか。指標によって、変えないといけませんね。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2015) |> drop_na(fossil) |>
  ggplot(aes(fossil, fill = income)) + geom_histogram(binwidth = 10, col = "black", linewidth = 0.2) +
  labs(title = "2015年の化石燃料による発電割合, 所得レベルを含む")

どんなことがわかりますか。

5.3.2 棒グラフ

カテゴリー変数(日本語では名目変数ということばも使われます)と、その値(numerical value)が与えられているときに使います。データの数の時に使った、geom_bar も似ていますが、こちらは、カテゴリー変数や飛び飛びの値(discrete numerical variable)の数値変数などの、数を数えます。

5.3.2.1

df_co2fos |> filter(year == 2015, country %in% regions) |> drop_na(co2) |>
  ggplot(aes(country, co2)) + geom_col() +
  labs(title ="地域別一人当たりの二酸化炭素排出量", x = "")

重なり合ってしまうので、軸を変えます。

df_co2fos |> filter(year == 2015, country %in% regions) |> drop_na(co2) |>
  ggplot(aes(country, co2)) + geom_col() + coord_flip() +
  labs(title ="地域別一人当たりの二酸化炭素排出量", x = "")

化石燃料での発電割合はどうでしょうか。次のグラフでは、情報は加えていませんが、塗る色を変えてあります。でも、凡例は不要ですよね。theme(legend.position = “none”) とします。

country は、regions とする手もありますが、消しておいても良さそうです。注意が必要なのは、coord_flip をする前の座標なので、x を消します。theme(legend.position = ’none”)

df_co2fos |> filter(year == 2015, country %in% regions) |> drop_na(fossil) |>
  ggplot(aes(country, fossil, fill = country)) + geom_col() + coord_flip()

df_co2fos |> filter(year == 2015, country %in% regions) |> drop_na(fossil) |>
  ggplot(aes(country, fossil, fill = country)) + geom_col() + coord_flip()  +
  labs(title ="地域別化石燃料による発電量(%)", x = "", y = "") +
  theme(legend.position = "none")

fill(塗りつぶし)を使いましたが、col だとどうなるのでしょうか。あまり適切だとは思えません。しかし、ヒストグラムのときのように、枠を黒にすることは、多少意味があるかもしれません。

df_co2fos |> filter(year == 2015, country %in% regions) |> drop_na(fossil) |>
  ggplot(aes(country, fossil, col = country)) + geom_col() + coord_flip() + 
  labs(col = "")

df_co2fos |> filter(year == 2015, country %in% regions) |> drop_na(fossil) |>
  ggplot(aes(country, fossil, fill = country)) + geom_col(col = "black", linewidth = 0.2) +
  coord_flip() + labs(title = "地域別化石燃料による発電量(%)", x = "", y = "") + theme(legend.position = "none")

5.3.2.1.1 参考

実は、縦のままにすることも可能です。ただ、それには、strngr という、tidyverse の一部ではありますが、読み込まれていない、パッケージの命令を使います。

df_co2fos |> filter(year == 2015, country %in% regions) |> drop_na(fossil) |>
  ggplot(aes(country, fossil, fill = country)) + geom_col(col = "black", linewidth = 0.2) +
  scale_x_discrete(labels = function(x) stringr::str_wrap(x, width = 15)) +
  labs(title = "地域別化石燃料による発電量(%)", x = "", y = "") + theme(legend.position = "none")

5.3.2.2 データが十分ある最近の年の値の10カ国の値の棒グラフ

表示の順序を制御するのには、factor というものを使います。カテゴリー変数に順序をつけるものです。普通は、factor(var, legends = c(var の 順序)) とします。ただ、基本的な順序付を制御することは、個別に定義しなくても可能です。それが、fct_inorder で、データに現れる順序に表示します。ここでは、大きい順に表示されます。それを、fct_rev で逆にしています。fct_rev をとった、この次の例を比較してください。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2015) |> drop_na(co2) |>
  arrange(desc(co2)) |> slice_head(n = 10) |>
  ggplot(aes(fct_rev(fct_inorder(country)), co2)) + geom_col() + coord_flip() + labs(title = "一人当たりの二酸化炭素排出量が多い順", x = "")

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2015) |> drop_na(co2) |>
  arrange(desc(co2)) |> slice_head(n = 10) |>
  ggplot(aes(fct_inorder(country), co2)) + geom_col() + coord_flip() + labs(title = "一人当たりの二酸化炭素排出量が多い順", x = "")

地域ことに色分けすることも可能です。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2015) |> drop_na(co2) |>
  arrange(desc(co2)) |> slice_head(n = 10) |>
  ggplot(aes(fct_rev(fct_inorder(country)), co2, fill = region)) + geom_col() + coord_flip() + labs(title = "一人当たりの二酸化炭素排出量が多い順", x = "")

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2015) |> drop_na(fossil) |>
  arrange(fossil) |> slice_head(n = 10) |>
  ggplot(aes(fct_rev(fct_inorder(country)), fossil)) + geom_col() + coord_flip()  + labs(title = "化石燃料による発電割合の少ない順", x = "")

所得レベルで色分けをしてみましょう。

df_co2fos |> filter(!(iso2c %in% REGION)) |> filter(year == 2015) |> drop_na(fossil) |>
  arrange(fossil) |> slice_head(n = 10) |>
  ggplot(aes(fct_rev(fct_inorder(country)), fossil, fill = income)) + geom_col() + coord_flip()  + labs(title = "化石燃料による発電割合の少ない順", x = "")

5.3.3 箱ひげ図(Boxplot)

カテゴリ変数(country, region, income など)毎の分布を描く

  • ggplot(aes(categorical_var, numerical_var)) + geom_boxplot()

  • ggplot(aes(region, electricity_urban)) + geom_boxplot()

  • ggplot(aes(income, electricity_rural)) + geom_boxplot()

  • pivot_longer(cols = c(var1, var2)) |> ggplot(aes(name, value)) + geom_boxplot()

  • year は、整数なので数値変数(numerical variable)。これを カテゴリー変数として扱うためには、factor(year) を使う。x 軸のラベルなどはあとから修正が必要。

    • filter(year %in% c(1960,1990,2020))|> ggplot(aes(factor(year), var)) + geom_boxplot()

5.3.3.1

国や地域はカテゴリー変数ですから、地域別で、一人あたりの二酸化炭素排出量を箱ひげ図に書いてみましょう。ここでは、df_co2fos_long を使っていますが、このような箱ひげ図は、df_co2fos でも同様に描けます。ただ、コードは異なりますから注意してください。

df_co2fos_long のときは、name に、co2 と fossil が含まれていますから、まず、co2 を選択します。グラフを書く時は、value にある値を使います。

df_co2fos_long |> filter(name == "co2") |> 
  filter(region != "Aggregates") |> drop_na(value) |>
  ggplot(aes(region, value)) + geom_boxplot() + coord_flip() +
  labs(title = "地域ごとの一人当たりの二酸化炭素排出量(トン)")

今度は、df_co2fos を使います。こちらでは、filter(region != “Aggregates”) としていますが、REGION を使うてもあります。それは、次に示します。実は、次の方が正確です。それは、ちょっと細かい話ですが、地域名が、入っていない国があるのです。そのこともあって、REGION を最初に定義してあります。

df_co2fos |> filter(region != "Aggregates") |> drop_na(fossil) |>
  ggplot(aes(region, fossil)) + geom_boxplot() + coord_flip() +
  labs(title = "地域ごとの化石燃料による発電量の割合")

REGION は、iso2c で定義していましたから、filter(!(iso2c %in% REGION)) とします。

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(fossil, region) |>
  ggplot(aes(region, fossil)) + geom_boxplot() + coord_flip()+
  labs(title = "地域ごとの化石燃料による発電量の割合")

co2 と、fossil は、一方は、トンで、他方は、パーセントで、尺度が違いますから、同時に、箱ひげ図に表すのは、適切とは言えませんが、一応、df_co2fos_long を使って、コードを書いてみます。

df_co2fos_long |> 
  filter(income != "Aggregates") |> drop_na(value) |>
  ggplot(aes(income, value, fill = name)) + geom_boxplot() + coord_flip() +
  labs(title = "所得レベル別の、化石燃料による発電の割合と\n一人当たりの二酸化炭素排出量")

順序を、INCOME <- c("High income", "Upper middle income", "Lower middle income", "Low income") と指定した順序に帰る時は、factor を使います。

df_co2fos_long |> filter(income != "Aggregates", income != "Not classified") |> 
  drop_na(value) |>
  ggplot(aes(factor(income, levels = INCOME), value, fill = name)) + geom_boxplot() +
  coord_flip() + labs(title = "所得レベル別の、化石燃料による発電の割合と\n一人当たりの二酸化炭素排出量", x = "")

5.4 相関

5.4.1 相関係数

値の正負:正の相関・負の相関、1に近いと強い正の相関、-1に近いと強い負の相関

相関係数:散布図の近似(回帰)直線の傾きが正なら正、負なら負、直線に近い程、1 または-1 に近い

あくまでも、相関であり、因果関係ではない。再生可能エネルギーを増やしたり、化石燃料による発電を減らしたり、森を増やせば、二酸化炭素排出量が減ると、ここから結論できるわけではない。あくまでも、化石燃料の発電が多い国のほうが、二酸化炭素排出量が多い傾向があるというようなことが見て取れることである。相関関係は因果関係にあらず。Correlation is not causation.

5.4.1.1

変数同士の相関関係: NA ではないところのみ選択します。

df_co2fos |> filter(!(iso2c %in% REGION)) |> # 地域以外(国のみ選択)
  drop_na(co2, fossil) |> 
  select(co2, fossil) |> cor()
             co2    fossil
co2    1.0000000 0.3195902
fossil 0.3195902 1.0000000

これは、弱い正の相関となります。つまり、「化石燃料による発電が多い国はある程度、二酸化炭素排出量が多い傾向にある」と言えます。

5.4.2 散布図

基本形は、次のようになります。

df_co2fos |> filter で選択 |> drop_na(変数1, 変数2) |>
  ggplot(aes(変数1, 変数2)) + geom_point()

5.4.2.1

二変数の相関をみるには、df_co2fos を使います。地域は、filter(!(iso2c %in% REGION)) で、省いてあります。

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(co2, fossil) |>
  ggplot(aes(co2, fossil)) + geom_point() + 
  labs(title = "一人当たりの二酸化炭素排出量と化石燃料での発電割合")

回帰直線を加えます。

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(co2, fossil) |>
  ggplot(aes(co2, fossil)) + geom_point() + geom_smooth(formula = 'y~x', method = "lm", se = FALSE) + ylim(0,100) +
  labs(title = "一人当たりの二酸化炭素排出量と化石燃料での発電割合(回帰直線)")

収入レベルで色分けをすることも可能です。

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(co2, fossil) |> 
  ggplot(aes(co2, fossil, col = factor(income, levels = INCOME))) + geom_point() + 
  labs(title = "一人当たりの二酸化炭素排出量と化石燃料での発電割合", col = "Income Level")

0 に近い方に値がかたまっているので、scale_x_log10() で 対数表時をしてみます。すこし広がります。

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(co2, fossil) |>
  ggplot(aes(co2, fossil)) + geom_point() + scale_x_log10() + 
  labs(title = "一人当たりの二酸化炭素排出量と化石燃料での発電割合")

こちらに回帰直線を加えると下のようになります。

df_co2fos |> filter(!(iso2c %in% REGION)) |> drop_na(co2, fossil) |>
  ggplot(aes(co2, fossil)) + geom_point() + scale_x_log10() + 
  geom_smooth(formula = 'y~x', method = "lm", se = FALSE) + 
  labs(title = "一人当たりの二酸化炭素排出量(LOG)と化石燃料での発電割合")

5.4.3 補足:散布図

一人当たりの購買力平価による国内総生産 GDP (PPP) と、一人当たりの二酸化炭素排出量と、人口のデータを読み込みます。

df_co2_gdp <- WDI(indicator = c(pop = "SP.POP.TOTL", gdppcap = "NY.GDP.PCAP.PP.KD", co2 = "EN.ATM.CO2E.PC"), extra = TRUE)
write_csv(df_co2_gdp, "data/co2_gdp.csv")
df_co2_gdp <- read_csv("data/co2_gdp.csv")
Rows: 16758 Columns: 15── Column specification ────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (7): country, iso2c, iso3c, region, capital, income, lending
dbl  (6): year, pop, gdppcap, co2, longitude, latitude
lgl  (1): status
date (1): lastupdated
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
df_co2_gdp
df_co2_gdp |> filter(!(iso2c %in% REGION)) |> drop_na(gdppcap, co2) |> 
  ggplot(aes(gdppcap, co2)) + geom_point() +
  labs(title = "購買力平価による一人当たりの国内総生産と\n一人当たりの二酸化炭素排出量")

明らかに、0 の付近に密集していますから、Log10 スケールを使います。

df_co2_gdp |> filter(!(iso2c %in% REGION)) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |>
  ggplot(aes(gdppcap, co2)) + geom_point() + scale_x_log10() + scale_y_log10()+
  labs(title = "購買力平価による一人当たりの国内総生産と\n一人当たりの二酸化炭素排出量(ともに Log10 スケール)")

強い相関がみられそうです。回帰直線を引いてみます。subtitle を使ってみました。

df_co2_gdp |> filter(!(iso2c %in% REGION)) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |>
  ggplot(aes(gdppcap, co2)) + geom_point() + scale_x_log10() + scale_y_log10() +
  geom_smooth(formula = 'y~x', method = "lm", se = FALSE)+
  labs(title = "購買力平価による一人当たりの国内総生産と一人当たりの二酸化炭素排出量", subtitle = "ともに Log10 スケール、回帰直線を加えたもの")

少し点を減らすため、年を、2020 に制限します。さらに、地域を色で加えます。

df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |>
  ggplot(aes(gdppcap, co2, col = region)) + geom_point() + scale_x_log10() + scale_y_log10()+
  labs(title = "購買力平価による一人当たりの国内総生産と一人当たりの二酸化炭素排出量",
       subtitle = "ともに 2020年の Log10 スケール のデータ")

さらに、人口の大きさにより、点の大きさを変えます。

df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |>
  ggplot(aes(gdppcap, co2, col = region, size = pop)) + geom_point() + scale_x_log10() + scale_y_log10()+
  labs(title = "購買力平価による一人当たりの国内総生産と一人当たりの二酸化炭素排出量",
       subtitle = "ともに 2020年の Log10 スケール のデータ、点の大きさは人口")

5.4.3.0.1 参考

plotly という別のパッケージを使うと、ポインターを点にあてると、情報が読み取れるようになります。

library(plotly)
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
ggp <- df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |>
  ggplot(aes(text = country, gdppcap, co2, col = region, size = pop)) + geom_point() + scale_x_log10() + scale_y_log10() +
  labs(title = "一人当たりの国内総生産と二酸化炭素排出量(ポインタでデータ表示)")
ggplotly(ggp)

回帰直線を加えます。

df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |>
  ggplot(aes(gdppcap, co2)) + geom_point(aes(col = region, size = pop)) + scale_x_log10() + scale_y_log10() +
  geom_smooth(formula = 'y~x', method = "lm", se = FALSE)+
  labs(title = "購買力平価による一人当たりの国内総生産と一人当たりの二酸化炭素排出量",
       subtitle = "ともに 2020年の Log10 スケール のデータ、点の大きさは人口、回帰直線を含む")

5.4.3.0.2 参考:線形モデル概要

直線とフィットしているかをみるのは、線形回帰分析と言いますが、その概要は以下のようになります。

上は、対数をとる前と、下は、対数をとってから。

第6週に、少し紹介しましたから、大体どのようなことを言っているかだけ、書いておきます。

  • Residuals: 直線よりどのぐらい大き値や小さい値があるか
  • Coefficients: Estimate の (Intercept) は直線の y-切片、gdppcap は、傾き
  • Residual Standard Error: 直線からこの値の幅の間に、おおよそ 2/3 程度(68.2%)の点が入っている
  • Multiple R-squared: 直線がどの程度近似しているか、0 と 1 の間で、相関係数の二乗
  • p-value: かなり小さいと(たとえば 0.01 未満)相関が正か負かがほぼ確実といえる
df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |> lm(co2 ~ gdppcap, data = _) |> summary()

Call:
lm(formula = co2 ~ gdppcap, data = filter(drop_na(filter(df_co2_gdp, 
    !(iso2c %in% REGION), year == 2020), gdppcap, co2), gdppcap > 
    0, co2 > 0))

Residuals:
    Min      1Q  Median      3Q     Max 
-9.3224 -1.0320 -0.6497  0.3410 16.1035 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 6.194e-01  3.351e-01   1.849   0.0662 .  
gdppcap     1.686e-04  1.203e-05  14.012   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.251 on 180 degrees of freedom
Multiple R-squared:  0.5217,    Adjusted R-squared:  0.519 
F-statistic: 196.3 on 1 and 180 DF,  p-value: < 2.2e-16
df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
  filter(gdppcap >0, co2 >0) |> lm(log10(co2) ~ log10(gdppcap), data = _) |> summary()

Call:
lm(formula = log10(co2) ~ log10(gdppcap), data = filter(drop_na(filter(df_co2_gdp, 
    !(iso2c %in% REGION), year == 2020), gdppcap, co2), gdppcap > 
    0, co2 > 0))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.66078 -0.16519 -0.01013  0.16526  0.61827 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)    -4.33682    0.15238  -28.46   <2e-16 ***
log10(gdppcap)  1.13770    0.03739   30.43   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.249 on 180 degrees of freedom
Multiple R-squared:  0.8373,    Adjusted R-squared:  0.8364 
F-statistic:   926 on 1 and 180 DF,  p-value: < 2.2e-16

この線形回帰モデルによる分析は、いくつかの仮定の上に載っていますので、個人的には、現時点では利用をお勧めしません。ただ、これから、分野によっては、この情報をよく使うことになると思いますので、大雑把なことだけ、上に紹介しました。

df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
 select(gdppcap, co2) |> cor()
          gdppcap       co2
gdppcap 1.0000000 0.7222794
co2     0.7222794 1.0000000
0.7222794*0.7222794
[1] 0.5216875

この値が、log10 をとらない、最初のモデルの、Multiple R Squared の値になっています。

df_co2_gdp |> filter(!(iso2c %in% REGION), year == 2020) |> drop_na(gdppcap, co2) |> 
 filter(gdppcap >0, co2>0) |> select(gdppcap, co2) |> sapply(log10) |> cor()
          gdppcap       co2
gdppcap 1.0000000 0.9150164
co2     0.9150164 1.0000000
0.9150164 * 0.9150164
[1] 0.837255

確かに、この値が、log10 をとった方の、Multiple R Squared の値になっています。

6 コミュニケーション

探索的データ分析の最後は、コミュニケーションです。最後には、プレゼンテーション(発表)や、レポート(paper)の作成になります。わかりやすく伝えるには、作業履歴がしっかり書かれている、R Notebook よりも、簡潔にまとめたものが必要とされます。探索的データ分析は、再現性(Reproducibility)が大切ですから、実際の作業は、R Notebook で行うことを紹介していきました。これによって、根拠が求められば、どのように、データを取得し、どのように、図が表示されたかも、簡単に、シェアすることができます。しかし、分析結果、それから、わかることを正確に、かつ、簡潔に伝えることも必要です。そのために、どうしても必要なことを書いておきます。

一般的な道筋として、

  1. スライドで、プレゼンをする。
  2. Word または、Google Doc でレポートを書く。
  3. PDF にして提出する。

このことを想定して書いていきます。

6.1 図の取り出し

6.1.1 Preview から生成

Preview の図を、Ctrl + Click すると、Copy Image の選択ができます。

Copy Image とすると、図がクリップボードにコピーできると思います。開いていた、Word や、Google Doc に、貼り付けが可能です。サイズもそこで、調節できます。しかし、サイズを変更すると、表題なども一緒にサイズが変わると思います。

6.1.2 Code から生成

  1. Code Chunk から、実際のコードの部分をコピーします。({r} などはコピーしません。)
  2. 左下の、Console を開き、ペーストします。そして、実行(Enter など)
  3. 右下の、Plots に表示されます。
  4. Save as Image … , Save as PDF, Copy to Clipboad と出ます。
  • Copy to Clipboard を選択し、Width と、Height などを調節し、Update Preview で確認し、Copy Plot とすれば、Word または、Google doc に貼り付けることができます。
  • Save as PDF は、Device Size を調節し、Portrait(縦置き), Landscape(横置き) を選択し、名前と保存場所を決めて、Save です。
  • Save as Image は、画像の種類を選べますが、図のときは、おそらく、png でよいと思います。種類は、圧縮率や圧縮方法が異なります。あとは、サイズと名前と保存場所を決めて、Save です。

保存したものは、Word や、Google Doc から、Image の挿入を選択し、画像を選択することになります。図は一つのときは、良いですが、幾つもあるとわからなくなりますから、適切に、名前をつけることも大切です。

6.2 文書の作成

日本語の場合は特にいくつか注意することがありますので、まとめておきます。Windows, Mac, Linux で、方法が違う部分もありますが、極力、どれでも同じにできる方法を紹介します。(分断をさけるため)

6.2.1 R Markdown テンプレート

  • R Markdown いろいろな形式での出力 [リンク], [Rmd]

このファイルを使うと、さまざまな形式に出力できるだけではなく、説明も書かれていますので、まずは、これを丁寧に読んでください。基本だけ、少し書いておきます。

6.2.2 Word への出力

上の knit ボタンから、Word を作成できます。しかし、日本語が、図の表題に入っている時は、文字化けが起きる可能性がありますので、必ず、次を入れておいてください。

library(showtext) 
knitr::opts_chunk$set(fig.showtext=TRUE)

また、初期設定では、紙のサイズが、US Letter になっています。印刷するときなど、問題が起きる可能性がありますから、必ず、A4 に修正してください。このような問題をさけるためにも、基本的に、R Markdown(R Notebook はその一形式)で文章を作り、Word に出力する場合には、形式を整えた、参照ファイルを作って、それにそって、出力するようにすることもできます。詳しくは、[R Markdown クックブック] を参照してください。

R Notebook から、Word を作成し、それを編集することで、十分だと思います。

最終的に、PDF にする時は、Word の機能の、Print to PDF を使って、印刷を選び、PDF に保存をします。

直接、PDF を作成することも可能ですが、さまざまな制御が複雑ですから、お勧めしません。基本的なことは、上に引用した、「R Markdown いろいろな形式での出力」に書いてあります。

6.2.3 スライド作成

基本的な部分は、「R Markdown いろいろな形式での出力」に書いてあります。参照してください。

PowerPoint を使われる方が多いかもしれませんが、そのテンプレートでの制御も可能です。ただ、個人的には、PowerPoint のテンプレート作成は手間がかかるので、これも、PowerPoint に出力して、そちらを修正した方がお勧めです。

わたしは、授業では、isoslides を利用しています。軽いのと、HTML 形式なので、表の、paged 機能も使えるため、見せながら、ページ送りもできるからです。

いずれにしても、スライド作成には、ページサイズにあった、ページ送りの場所をきめないといけません。## の Heading 2 があると、ページ替えができますが、それ以外では、— ハイフン三つ、または、Visual Editor の Insert から、Horizontal Rule を選べば、回ページできます。

ただ、Horizontal Rule の後には、空白行が必要です。それがないと、Error になります。

6.2.4 さまざまな形式

上の、Preview や、knit の右にある、ギアマークの一番下に、Output Options があります。図のサイズや、他の項目も変更可能です。

図は、初期設定では、6.5 in x 4 in となっています。また、それぞれの Code Chunk の右上のギアマークから、それぞれの図のサイズも指定できます。その文書の図のサイズの初期設定をして、あとは、個別の図のサイズを変更という具合です。

6.2.5 コード・チャンク

上に個別の図のサイズの変更は、コードチャンクの右上のギアマークからと書きました。同じ、ギアマークから、いくつかの変更が可能です。簡単に書いておきます。

  • Chunk Name: 名前をつけておくと、エラーが起こった時にどこだかすぐわかりますが、同じ名前のチャンクが二つあると、エラーになるので、わたしは、つけていません。
  • Output Option: (Use document default), Show output only, show code and output, show nothing (run code), show nothing (don’t run code)
    • (Use document default) 文書の設定通りという意味ですが、特に設定してなければ、関係ありません。
    • Show output only: これは、コードは見せないときに使います。文書を作成する時には、コードはいらないことも多いでしょう。
    • show code and output: これが通常の状態です。初期設定で帰る場合もあるので、このオプションも入れてあるのでしょう。
    • show nothing (run code): コードを表示せず、Warning や、message も出さず、実行結果だけを示すということです。Show output only ではなく、こちらを使った方がよい場合が多いかと思います。ただ、それは、最後にWord などの文書を作成する時で、最初からこれにしてあると、問題がわかりません。
    • show nothing (don’t run code): エラーが修正できず、削除したい場合に選択します。実は、これをすると、{r eval=FALSE, include=FALSE} とはいるのですが、コードはみせるが、実行はしない時は、eval = FALSE だけを入れておくように、わたしはしています。

最後の Chunk Options を選択すると、Option の詳細が書かれています。

7 おわりに

7.1 トラブル・シューティング

いろいろな問題が背景にあり、一般的にはかけません。世界の問題・課題と同じです。これが、問題ですということはできませんよね。

しかし、演習を担当して、質問されたり、課題をみていて、わかった問題などを中心に少し書いておきます。

  • Error: … does not exist.
    • さまざまな背景が考えられます。まずは、この最初に説明した、R Notebook の保存場所に、data フォルダーがないために、書き込めないことがあります。大切なのは、R Notebook と、data フォールダがあるかないかではなく、どこにあるか、同じ場所にあるかどうかです。多くの場合、data フォルダの中に、R Notebook が作成されてて、data に書き込めないという状況が生じていました。write_csv(df_co2_fossil, “data/co2_fossil.csv”) は、読み込んだ、df_co2_fossil と名前をつけたデータを、data フォルダの中に、co2_fossil.csv という名前の、CSV 形式(カンマ区切られたテキストデータ)として、書き込むという命令です。data フォルダがなければ、書き込めませんし、data フォルダが、R Notebook のある場所に、なければ書き込めません。次に、df_co2_fossil <- read_csv(“data/co2_fossil.csv”) として、もう一度読み込んでいますが、このときも、data フォルダのなかに、co2_fossil.csv という名前の、CSV ファイルがないと読み込めません。
    • 何かがないと言われたら、それが最初に作成された場所にもどることです。たとえば、df_co2_fossil であれば、最初に、WDI() で読み込むところで、適切に定義されているか、または、 が適切になされているかです。読み込む時に、前のコードのままで、read_csv(“data/co2_fossil.csv”) の部分が、read_csv(“data/unemployment.csv”) などとなっていたら、おかしいですよね。
    • REGION がないと言われたら、それを定義してあるコードが、実行されているか確認する必要があります。そのようなこともあるので、エラーが出たら、Run All Chunks Above をしてみるのも一つです。
    • 次に多いのが、綴りの間違いです。スペルをしっかりチェックしましょう。
  • Error: Incomplete expression
    • かっこが足りなかったり、最後に、|> や、+ で終わってる場合によく出ます。|> は次に、データを渡す命令ですから、受け取り側がないわけですし、+ は、ggplot で、図を描く時に、順に繋げていくためのものですから、そのあとには、何かが続くはずです。
  • Error: unexpected input in:
    • これは、いろいろな理由があり得ますが、全角空白によって生じる場合があります。Edit から、Find を選び、検索窓に、全角で空白をいれ、Replace の方には、半角で空白を入れ、Next とし、見つかったら、Replace を押すと修正できます。私が例に挙げた、coord_flip() のあとに、全角空白があり、それを、コピーしてしまい、全角空白が入ってしまう例もあったようです。日本語システムでは、無視する場合もありますが、PositCloud ではエラーになります。
  • R Notebook で、Run Code をすると、問題なく図が現れるのに、最後に、R Notebook を、Browser で確認すると、最後の方の図が表示されない。
    • これは、途中に、または、--- などが入り込んでいる場合が多いです。わたしは、どうするかというと、Run All をします。すると、エラー箇所がわかる場合があります。そこで、コードを修正する。わからないときは、それより下を、Cut(Windows では、Ctrl + X、Mac では、Command + X)をして、 R Notebook が適切に生成されるかをみます。できていれば、Ctrl + V Mac では、Command + V または、Ctrl + Z (Mac では、Command + Z) で元に戻し、すこし、先からあとを、カットします。と順に、みていくと、どこが問題かがわかります。これは、おそらく、コピーをするときに、間違って、 まで含めてコピーしてしまうようなことから起こるのでしょう。実際、グラフがあると、間違いがわかありづらいこともあるようです。x を押して、図を、消すと、間違いがわかりやすいことが多いようです。せっかく出てきた図を消すのに勇気がいるのでしょうが。
    • 以前、Code chunk の中でも同じようなことをしました。上のほうから、みていき、大丈夫だと思うところの次から、Cut し、実行します。うまくいっていたら、次の塊までもどして、実行。一ステップ、一ステップ、確認することですから、有効で、一般的でもあります。
  • なんだかわからなくなったら。
    • 問題は、自分自身がパニックに陥ることです。冷静さをうしない、よぶんなことをどんどんします。まずは、そこまでを Save し、次に、Sava as で違った名前にして、カットなどを使って、上から順にみていく。それでも、うまくいかなかったら、最初からやり直す。ただし、大丈夫そうなところは、コピー・ペーストして、前のものを使う。
    • 編集にもある、Undo, Redo も有効ですよ。だいたい、間違った時は、直近で変なことをしたことが多いので。

(また気づいたら書いておきます)

7.2 エラー対応

  • 入力したときには、例を参照して、スペルを確認。全角や変数名の空白は問題を起こす。括弧 () や引用符がペアでマッチしているか、確認。引用符が入っていなかったり、== のところが、= だったり、Error は様々。
  • File not found のときは、データを読み込むコードを再実行。それでもうまくいかないときは、data フォルダに、データ(***.csv)が入っているかを確認、なければ、data フォルダがあることを確認、なければ作成して読み込みを実行。
  • Object not found のエラーがでたときには、上から順に、Run (Code Chunk の右上の三角印を押して実行)。または、エラー箇所にカーソルを置き、Run ボタンの右の三角から、Run All Chunks Above を選択して実行。
  • 実行できていても、結果が見えないことがある。そのときは、Code Chunk の下にある、山二つの記号を押す。結果の表示、非表示の切り替え。
  • Error message を読む。エラーが出た Code Chunk と、Error message を、ChatGPT や、Google Bard, Google Search に入れ解決方法を探る。
  • Posit.Cloud で、Error 137 が出た時はメモリーオーバーなので、例など不要な部分を削除。ただし、一番上の、YAML は、かならず残すこと。他にも、select で短いデータにしたり、long データを作成するようなときに、{r} の部分を、{r cache = TRUE} として、キャッシュすることで、メモリーを節約することで、エラーを回避できる場合もあります。しかし、おすすめなのは、前半と、後半などに分けて、ファイルを作成することです。最初のデータをよみ込むところは必要ですから、まず、コピーを作成し、最初のファイルは視覚化の後半を消去、二つ目のファイルは、視覚化の前半を消去とするなどしてみてください。短いファイルであれば、問題ないと思います。

7.3 参考文献

  1. 「みんなのデータサイエンス - Data Science for All」[はじめてのデータサイエンス]

  2. Posit Recipes(旧 Posit Primers): The Basics 対話型の演習サイトの最初 [Link]

  3. Posit Cheat Sheet. 早見表です。印刷して使うために、PDF も提供しています。[Site Link]

  4. DataCamp Cheat Sheet: Tidyverse for Biginners. データサイエンスの教育をしている会社の早見表の一つです。基本が簡単にまとまっています。[Link]

  5. 箱ひげ図の見方 Link、外れ値検出のある箱ひげ図 Link

  6. Video: Histogram, Boxplot

LS0tCnRpdGxlOiAi5o6i57Si55qE44OH44O844K/5YiG5p6Q77yIRXhwbG9yYXRvcnkgRGF0YSBBbmFseXNpc++8iSIKYXV0aG9yOiAiSC4gU3V6dWtpIgpkYXRlOiAiMjAyNOW5tDLmnIgxM+aXpSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB0cnVlCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQotLS0KCiMg44Ov44O844Kv44OV44Ot44O8CgotICAg6KGo6aGMIFRpdGxlCi0gICDmpoLopoEgQWJzdHJhY3QKLSAgIOODh+ODvOOCv+aDheWgse+8muODh+ODvOOCv+WQjeOAgeODh+ODvOOCv+OCs+ODvOODieOAgeWkieaVsOWQjeOAgeODh+ODvOOCv+amguimgQotICAg44OH44O844K/44Gu5Y+W5b6XIC0g44OA44Km44Oz44Ot44O844OJ44GX44Gm5L+d5a2Y44GX44Gm44GK44GPCiAgICAtICAg5rqW5YKZ77yaYGxpYnJhcnkodGlkeXZlcnNlKTsgbGlicmFyeShXREkpYAogICAgLSAgIGBkZl93NmVkYSA8LSBXREkoaW5kaWNhdG9yID0gYyhjbzJwY2FwID0gIkVOLkFUTS5DTzJFLlBDIiwgZm9yZXN0ID0gIkFHLkxORC5GUlNULlpTIiksIGV4dHJhID0gVFJVRSlgCiAgICAtICAgKuS6jOOBpOS7peS4iuOBruaMh+aomeOAgeOBneOCjOOBnuOCjOOBq+WkieaVsOWQjSogYGNvMnBjYXBgLCBgZm9yZXN0YAogICAgLSAgIOi/veWKoOaDheWgse+8mmBleHRyYSA9IFRSVUVgOyBgcmVnaW9uYCDlnLDln5/mg4XloLEsIGBpbmNvbWVgIOWPjuWFpeODrOODmeODqwogICAgLSAgIOODh+ODvOOCv+OBrueiuuiqje+8muODh+ODvOOCv+OBjOWNgeWIhuOBguOCi+OBi+OAgeWbveWQjeODquOCueODiOOAgeWcsOWfn+WQjeODquOCueODiAotICAg5YiG5p6Q44GZ44KL5Zu944Gu44Oq44K544OI77ya5Y2X6YOo44Ki44OV44Oq44Kr6Zai56iO5ZCM55uf44CB5Zu944KE5Zyw5Z+f44KS6YG45oqeCi0gICDliIbmnpDjg7voppbopprljJYKICAgIC0gICDlkITlubTmr47jga7jg4fjg7zjgr/jga7mlbDjga7mo5LjgrDjg6njg5UKICAgIC0gICDntYzlubTlpInljJYKICAgICAgICAtICAg5pel5pys77yI6Lqr6L+R44Gq6aa05p+T44G/44Gu44GC44KL44OH44O844K/44KS56K66KqN77yJCiAgICAgICAgLSAgIOWNl+mDqOOCouODleODquOCq+mWoueojuWQjOebn+OAgemBuOaKnuOBl+OBn+WbveODu+WcsOWfnwogICAgLSAgIOWIhuW4gwogICAgICAgIC0gICDjg5Ljgrnjg4jjgrDjg6njg6DvvIjlubTjgpLmjIflrprjgZfjgZ/luqbmlbDliIbluIPvvIkKICAgICAgICAtICAg5YCk44GM5aSn44GN44GEMTDjgqvlm73jgajjgZ3jga7lgKTjga7mo5LjgrDjg6njg5UKICAgICAgICAtICAg5YCk44GM5bCP44GV44GEMTDjgqvlm73jgajjgZ3jga7lgKTjga7mo5LjgrDjg6njg5UKICAgIC0gICDnm7jplqIKICAgICAgICAtICAg5pWj5biD5Zuz77yIc2NhdHRlciBwbG9077yJeC3ou7jjgajjgIF5Lei7uOOBq+OAgeOBneOCjOOBnuOCjOOBruWkieaVsOOCkuOBqOOCiwogICAgICAgIC0gICDnm7jplqLkv4LmlbAKLSAgIOWQhOmgheebruOBq+OAgeawl+OBpeOBhOOBn+OBk+OBqOOAgeeWkeWVj+OBquOBqeOCkuiomOmMsgoKIyDmupblgpkKClBvc2l0LkNsb3VkIOOBvuOBn+OBryBSU3R1ZGlvIOOBpyBSIOOCkuS9v+OBhuOBk+OBqOOCkuaDs+WumuOBl+OBpuiqrOaYjuOBqOazqOaEj+eCueOCkuabuOOBjeOBvuOBmeOAggoKIyMgUiBOb3RlYm9vayDjga7kvZzmiJAKCuWGjeePvuaAp+OBqOiomOmMsuOAgeOBleOCieOBq+OBr+OAgeOCs+ODn+ODpeODi+OCseODvOOCt+ODp+ODs+OBruOBn+OCgeOBq+OAgVIgTm90ZWJvb2sg44KS5L2c5oiQ44GX44G+44GZ44CCUiBOb3RlYm9vayDjga/jgIFSIE1hcmtkb3duIOOBruS4gOW9ouW8j+OBp+OBmeOAggoKIyMjIOODleOCoeOCpOODq+OCkuS9nOaIkOOBmeOCi+OBqOOBjeOBruazqOaEjwoKMS4gIFBvc2l0IENsb3VkIOOBruOBqOOBjeOBr+OAgeOBvuOBmuOAgUxvZ2luIOOBl+OAgeODl+ODreOCuOOCp+OCr+ODiOOBq+enu+WLle+8iOOCr+ODqeOCueOBp+OBr+OAgVvlhbHmnInjg5fjg63jgrjjgqfjgq/jg4hdKGh0dHBzOi8vcG9zaXQuY2xvdWQvY29udGVudC81NTM5NzYzKSBgaW50cm8ycmpgIOOCkuS9v+eUqO+8ieOBruODl+ODreOCuOOCp+OCr+ODiOOBq+WFpeOCiuOAgSDjg5XjgqHjgqTjg6vjgYvjgonjgIFnZXMwMDEg44Gu44OV44Kp44Or44OA44O844KS6YG45oqe44GX44Gm44CB56e75YuV44GX44G+44GZ44CC44GT44Gu5Lit44Gr44CBZGF0YSDjg5Xjgqnjg6vjg4DjgYzkvZzmiJDjgZXjgozjgabjgYTjgovjgZPjgajjgpLnorroqo3jgZfjgIHjgZPjga5nZXMwMDEg44Gr44CB5paw44GX44GP5L2c5oiQ44GX44Gf44OV44Kh44Kk44Or44KS5L+d5a2Y44GX44G+44GZ44CC5paw44GX44GP5L2c5oiQ44GX44Gf44OV44Kh44Kk44Or44Gu5YWl44Gj44Gm44GE44KL44OV44Kp44Or44OA44O844Gu5Lit44Gr44CBZGF0YSDjg5Xjgqnjg6vjg4DjgYzjgYLjgovjgZPjgajjgYzlpKfliIfjgafjgZnjgILjgZ3jgZPjgavjgIHjg4fjg7zjgr/jgpLmm7jjgY3ovrzjgb/jgb7jgZnjgIIKCjIuICBSU3R1ZGlvIOOBruWgtOWQiOOBq+OBr+OAgeOBvuOBmuOBr+OAgeaWsOOBl+OBhCBQcm9qZWN0IOOCkuS9nOaIkOOBl+OBvuOBmeOAgkZpbGUgXD4gTmV3IFByb2plY3Qg44GL44KJ5L2c5oiQ44GX44G+44GZ44CC44GZ44Gn44Gr44CB5L2c5oiQ44GX44Gm44GC44KL5aC05ZCI44Gv44CB44Gd44KM44KS44CBT3BlbiBQcm9qZWN0IOOChOOAgVJlY2VudCBQcm9qZWN0IOOBi+OCiemWi+OBjeOBvuOBmeOAguOBneOBruS4reOBq+OAgeaWsOOBl+OBhOODleOCoeOCpOODq+OCkuS9nOaIkOOBl+OBvuOBmeOAguS9nOaIkOOBl+OBn+ODleOCqeODq+ODgOODvOOBq+OAgWRhdGEg44OV44Kp44Or44OA44GM44GC44KL44GT44Go44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CC5paw44GX44GP5L2c5oiQ44GX44Gf44OV44Kh44Kk44Or44Gu5YWl44Gj44Gm44GE44KL44OV44Kp44Or44OA44O844Gu5Lit44Gr44CBZGF0YSDjg5Xjgqnjg6vjg4DjgYzjgYLjgovjgZPjgajjgYzlpKfliIfjgafjgZnjgILjgZ3jgZPjgavjgIHjg4fjg7zjgr/jgpLmm7jjgY3ovrzjgb/jgb7jgZnjgIIKCi0g44CAUm1kIOODleOCoeOCpOODq+OCkuS9nOaIkOOBl+OBn+OCieOAgeOBmeOBkOOBq+OAgUlEIOOBqOWQjeWJjeOCkuabuOOBjeOBvuOBmeOAguOCv+OCpOODiOODq+OCguaxuuOBvuOBo+OBpuOBhOOBn+OCieabuOOBjeOBvuOBmeOAggoKCiMjIyDjg5XjgqHjgqTjg6vjgpLmj5Dlh7rjgZnjgovjgajjgY3jga7ms6jmhI8KCiMjIyMg56K66KqN5L2c5qWtCgotICAgUnVuIEFsbCDjgafjgIHmnIDlvozjgavjgIHjgoLjgYbkuIDluqbjgIHjgZnjgbnjgabjgpLjgIHlrp/ooYzjgIIKCi0gICDjgqjjg6njg7zjgYzkv67mraPjgafjgY3jgarjgYTloLTlkIjjgavjga/jgIHjgZ3jga7mrKHjga7jgrPjg7zjg4njg4Hjg6Pjg7Pjgq/jgYvjgonjgIFSdW4gQmVsb3cg44Gn5a6f6KGM44CCCgotICAgUHJldmlldyDjga7lj7Pjga7jgq7jgqLjg57jg7zjgq/jgYvjgonjgIFQcmV2aWV3IGluIFdpZG93IOOCkumBuOaKnuOBl+OAgVZpZXcgaW4gQnJvd3NlciDjgafjgIHjgYTjgaTjgoLjgIHkvb/jgaPjgabjgYTjgovjgIFXZWIgQnJvd3NlciDjgafjgIHmnIDlvozjgb7jgafjgIHjgrDjg6njg5XjgarjganjgYzlh7rjgabjgYTjgovjgYvnorroqo3jgIIKCiMjIyMgUG9zaXQuQ2xvdWQg44Gu44OV44Kh44Kk44Or44OA44Km44Oz44Ot44O844OJCgpSU3R1ZGlvIOOBruWgtOWQiOOBq+OBr+OAgeiHquWIhuOBriBQQyDjgavkvZzmiJDjgZfjgZ/jg5XjgqHjgqTjg6vjgYzjgYLjgorjgb7jgZnjgYvjgonjgIHllY/poYzjgarjgYTjgajmgJ3jgYTjgb7jgZnjgYzjgIFQb3NpdCBDbG91ZCDjgafkvZzmiJDjgZfjgZ/loLTlkIjjgavjga/jgIHoh6rliIbjga4gUEMg44Gr44OA44Km44Oz44Ot44O844OJ44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCCgrmj5Dlh7rjgZfjgZ/jgYTjg5XjgqHjgqTjg6vjga7lt6bjgavjgYLjgovjg4Hjgqfjg4Pjgq/jg5zjg4Pjgq/jgrnjgpLjg4Hjgqfjg4Pjgq/jgZfjgb7jgZnjgIJGaWxlcyDjga4g5Y+z56uv44Gr44GC44KL44CB44Ku44Ki44Oe44O844Kv44GuIEV4cG9ydCDjgpLmirzjgZnjgajjgIHjg4Djgqbjg7Pjg63jg7zjg4njgafjgY3jgb7jgZnjgILjgZ3jgozjgpLmj5Dlh7rjgZfjgabjgY/jgaDjgZXjgYTjgILmnKvlsL7jgYzjgIFuYi5odG1sIOOBqOOBquOBo+OBpuOBhOOCi+OCguOBruOCkuaPkOWHuuOBl+OBpuOBhOOBn+OBoOOBj+OBruOBjOOCiOOBhOOBp+OBmeOBjOOAgeOCiOOBj+OCj+OBi+OCieOBquOBhOOBqOOBjeOBr+OAgW5iLmh0bWwg44OV44Kh44Kk44Or44Go44CBUm1kIOODleOCoeOCpOODq+OBqOS4oeaWueaPkOWHuuOBl+OBpuOBj+OBoOOBleOBhOOAggoKIyMg5b+F6KaB44Gq44OR44OD44Kx44O844K444Gu6Kqt44G/6L6844G/CgrjgZPjga7jgrPjg7zjgrnjgafjga/jgIHjgZPjga7kuozjgaTjga7jg5Hjg4PjgrHjg7zjgrjvvIhSIOOBruapn+iDveOCkuaLoeW8teOBmeOCi+OCguOBru+8ieOCkuiqreOBv+i+vOOBv+OBvuOBmeOAguWIneOCgeOBpuS9v+OBhuaZguOBr+OAgVRvb2xzID4gSW5zdGFsbCBQYWNrYWdlcyDjgYvjgonjgqTjg7Pjgrnjg4jjg7zjg6vjgZfjgb7jgZnjgIIKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShXREkpCmBgYAoKCiMg44OH44O844K/CgotIOS4lueVjOmWi+eZuuaMh+aome+8iFdvcmxkIERldmVsb3BtZW50IEluZGljYXRvcnPvvIlbTGlua10oaHR0cHM6Ly9kYXRhdG9waWNzLndvcmxkYmFuay5vcmcvd29ybGQtZGV2ZWxvcG1lbnQtaW5kaWNhdG9ycy8pIOOBi+OCieODh+ODvOOCv+OCkumBuOaKnuOBl+OBvuOBmeOAggoKLSDmjojmpa3jgafkvb/jgaPjgZ/jg4fjg7zjgr/jga7jg6rjgrnjg4jvvJpb44Oq44Oz44KvXShodHRwczovL2RzLXNsLmdpdGh1Yi5pby9pbnRybzJyL2dlczAwMS9nZXMwMDFkYXRhLm5iLmh0bWwpCgoKIyMg44OH44O844K/5oOF5aCxCgrjg4fjg7zjgr/lkI3jgIHjg4fjg7zjgr9JRO+8iFdESSDjgrPjg7zjg4nvvInjgIHjg4fjg7zjgr/mpoLopoHjgpLlj5blvpfjgZfjgabmm7jjgY3jgb7jgZnjgIIKCuODquODs+OCr+OCkuaui+OBl+OBpuOBiuOBj+OBqOOBguOBqOOBp+S+v+WIqeOBp+OBmeOAguOCteOCpOODiOOBriBEZXRhaWxzIOOBq+amguimgeOCguOAgeODh+ODvOOCvyBJRCDjgoLjgYLjgorjgb7jgZnjgILml6XmnKzoqp7jgavjgZfjgabjgYrjgY/jga7jgoLoia/jgYTjgafjgZfjgofjgYbjgIIKCuOBk+OBruOBqOOBjeOBq+OAgeefreOBhOWkieaVsOWQjeOCguaxuuOCgeOBpuOBiuOBjeOBvuOBmeOAggoKIyMjIOS+iwoK44OH44O844K/77yR77ya5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP77yI44OI44Oz77yJQ08yIGVtaXNzaW9ucyAobWV0cmljIHRvbnMgcGVyIGNhcGl0YSkg77yaRU4uQVRNLkNPMkUuUEMgW1tMaW5rXShodHRwczovL2RhdGEud29ybGRiYW5rLm9yZy9pbmRpY2F0b3IvRU4uQVRNLkNPMkUuUEMpXQoK44OH44O844K/77yR5aSJ5pWw5ZCN77yaY28yCgrjg4fjg7zjgr/vvJHmpoLopoHvvJpDYXJib24gZGlveGlkZSBlbWlzc2lvbnMgYXJlIHRob3NlIHN0ZW1taW5nIGZyb20gdGhlIGJ1cm5pbmcgb2YgZm9zc2lsIGZ1ZWxzIGFuZCB0aGUgbWFudWZhY3R1cmUgb2YgY2VtZW50LiBUaGV5IGluY2x1ZGUgY2FyYm9uIGRpb3hpZGUgcHJvZHVjZWQgZHVyaW5nIGNvbnN1bXB0aW9uIG9mIHNvbGlkLCBsaXF1aWQsIGFuZCBnYXMgZnVlbHMgYW5kIGdhcyBmbGFyaW5nLgoK44OH44O844K/77yS77ya5YyW55+z54eD5paZ44Gn44Gu6Zu75rCX55Sf5oiQ44Gu5Ymy5ZCI77yIJe+8iUVsZWN0cmljaXR5IHByb2R1Y3Rpb24gZnJvbSBvaWwsIGdhcyBhbmQgY29hbCBzb3VyY2VzICglIG9mIHRvdGFsKe+8mkVHLkVMQy5GT1NMLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL0VHLkVMQy5GT1NMLlpTKV0KCuODh+ODvOOCv++8kuWkieaVsOWQje+8mmZvc3NpbAoK44OH44O844K/77yS5qaC6KaB77yaU291cmNlcyBvZiBlbGVjdHJpY2l0eSByZWZlciB0byB0aGUgaW5wdXRzIHVzZWQgdG8gZ2VuZXJhdGUgZWxlY3RyaWNpdHkuIE9pbCByZWZlcnMgdG8gY3J1ZGUgb2lsIGFuZCBwZXRyb2xldW0gcHJvZHVjdHMuIEdhcyByZWZlcnMgdG8gbmF0dXJhbCBnYXMgYnV0IGV4Y2x1ZGVzIG5hdHVyYWwgZ2FzIGxpcXVpZHMuIENvYWwgcmVmZXJzIHRvIGFsbCBjb2FsIGFuZCBicm93biBjb2FsLCBib3RoIHByaW1hcnkgKGluY2x1ZGluZyBoYXJkIGNvYWwgYW5kIGxpZ25pdGUtYnJvd24gY29hbCkgYW5kIGRlcml2ZWQgZnVlbHMgKGluY2x1ZGluZyBwYXRlbnQgZnVlbCwgY29rZSBvdmVuIGNva2UsIGdhcyBjb2tlLCBjb2tlIG92ZW4gZ2FzLCBhbmQgYmxhc3QgZnVybmFjZSBnYXMpLiBQZWF0IGlzIGFsc28gaW5jbHVkZWQgaW4gdGhpcyBjYXRlZ29yeS4KCgoKIyMg44OH44O844K/44Gu6Kqt44G/6L6844G/77yISW1wb3J0aW5n77yJCgpXREkg44Gn6Kqt44G/6L6844G/44G+44GZ44CCCgotIOiqreOBv+i+vOOCgOOBqOOBjeOBq+OBr+OAgeaMh+aomSBJRCDjgajjgIHlpInmlbDlkI3jgYzlv4XopoHjgafjgZnjgIIKLSDoqq3jgb/ovrzjgpPjgaDjg4fjg7zjgr/jgavlkI3liY3jgpLjgaTjgZHjgb7jgZnjgIIKCiMjIyDkvosKCuOBk+OBruS+i+OBp+OBr+OAgeS6jOOBpOOBruaMh+aomeOCkuOAgeiqreOBv+i+vOOBv+OBvuOBmeOAggoKYGBge3IgZXZhbCA9IEZBTFNFfQpkZl9jbzJfZm9zc2lsIDwtIFdESShpbmRpY2F0b3IgPSBjKGNvMiA9ICJFTi5BVE0uQ08yRS5QQyIsCiAgICAgICAgICAgICAgICAgICAgIGZvc3NpbCA9ICJFRy5FTEMuRk9TTC5aUyIpLCBleHRyYSA9IFRSVUUpCmRmX2NvMl9mb3NzaWwKYGBgCgotIOS4gOOBpOebruOBruODh+ODvOOCv+OBruaMh+aome+8iElE77yJ44Gv44CBRU4uQVRNLkNPMkUuUEPjgIHlpInmlbDlkI3jga/jgIFjbzIg44Gr44GX44G+44GX44Gf44CC5LqM44Gk55uu44Gu44OH44O844K/44Gu5oyH5qiZ77yISUTvvInjga/jgIFFRy5FTEMuRk9TTC5aU+OAgeWkieaVsOWQjeOBr+OAgWZvc3NpbCDjgavjgZfjgb7jgZfjgZ/jgIIKCi0g5oyH5qiZIChJRCkg44GvIFdESSDjga7jgrXjgqTjg4jjgYvjgonlvpfjgZ/jgoLjga7jgpLkvb/jgo/jgarjgZHjgozjgbDjgYTjgZHjgb7jgZvjgpPjgYzjgIHlpInmlbDlkI3jga/oh6rliIbjgafmsbrjgoHjgonjgozjgb7jgZnjgIIK44Gn44GN44KL44Gg44GR44CB5YiG44GL44KK44KE44GZ44GE5ZCN5YmN44Gr44GX44Gm44GK44GP44Gu44GM6Imv44GE44Gn44GX44KH44GG44CC44OH44O844K/5ZCN44Go44CB5aSJ5pWw5ZCN44KS5Yy65Yil44GZ44KL54K644CB44KP44Gf44GX44Gv44CB44OH44O844K/44Gv44CBZGZfIOOBp+Wni+OBvuOCi+WQjeWJjeOBq+OBl+OBpuOBhOOBvuOBmeOAggoKLSDmnIDlvozjgatleHRyYSA9IFRSVUUg44Go44GX44Gm44GK44GP44Go44CB5Zu944GU44Go44Gu5Zyw5Z+f44CB5omA5b6X44Os44OZ44Or44Gq44Gp44Gu5oOF5aCx44KS5LiA57eS44Gr6Kqt44G/6L6844KT44Gn44GP44KM44G+44GZ44CC5b+F6KaB44GM44Gq44GR44KM44Gw44CB5qyh44Gu44KI44GG44Gr44Gq44KK44G+44GZ44CCCgpgYGB7ciBldmFsPUZBTFNFfQpkZl9jbzJfZm9zc2lsX3Nob3J0IDwtIFdESShpbmRpY2F0b3IgPSBjKGNvMiA9ICJFTi5BVE0uQ08yRS5QQyIsCiAgICAgICAgICAgICAgICAgICAgIGZvc3NpbCA9ICJFRy5FTEMuRk9TTC5aUyIpKQpkZl9jbzJfZm9zc2lsX3Nob3J0CmBgYAoKLeOAjOapn+aisOOBr+aAneOBo+OBn+mAmuOCiuOBq+WLleOBi+OBquOBhOOAguabuOOBhOOBn+mAmuOCiuOBq+WLleOBj+OAguOAjeOBqOiogOOCj+OCjOOBvuOBmeOAguW8leeUqOespuOChOOAgeOBi+OBo+OBk+OBquOBqeOAgeODnuODg+ODgeOBmeOCi+OCiOOBhuOBq+OAgeabuOOBhOOBpuOBj+OBoOOBleOBhOOAggoKIyMjIFdESSDjgafjga7jg4fjg7zjgr/jga7oqq3jgb/ovrzjgb/jga7jgrPjg7zjg4njgavjgaTjgYTjgaYKCuWun+OBr+OAgeasoeOBruWRveS7pOOBp+OCguOAgeODh+ODvOOCv+OCkuOBqOOBo+OBpuOBjeOBvuOBmeOAggoKYGBge3IgY2FjaGUgPSBUUlVFfQpXREkoKQpgYGAKCkhlbHAg44KS44G/44KL44Go5qyh44Gu44KI44GG44Gr5pu444GL44KM44Gm44GE44G+44GZ44CCCgpgYGAKV0RJKAogIGNvdW50cnkgPSAiYWxsIiwKICBpbmRpY2F0b3IgPSAiTlkuR0RQLlBDQVAuS0QiLAogIHN0YXJ0ID0gMTk2MCwKICBlbmQgPSBOVUxMLAogIGV4dHJhID0gRkFMU0UsCiAgY2FjaGUgPSBOVUxMLAogIGxhdGVzdCA9IE5VTEwsCiAgbGFuZ3VhZ2UgPSAiZW4iCikKYGBgCgrjgZPjgozjgonjga7lpInmlbDjgpLmjIflrprjgafjgY3jgb7jgZnjgYzjgIHlj7PjgavjgYLjgovjga7jgYzjgIHliJ3mnJ/lgKTjgafjgZnjgILkuIDjgaTkuIDjgaTjga7oqqzmmI7jgoLjgIFIZWxwIOODmuODvOOCuOOBq+abuOOBhOOBpuOBguOCiuOBvuOBmeOAggoKV0RJKCkg44Gg44Go44CBR0RQIChQUFApIOOBruOBmeOBueOBpuOBruWbveOBruODh+ODvOOCv+OBqOODgOOCpuODs+ODreODvOODieOBl+OBvuOBmeOAguS9v+OBhueCuuOBq+OBr+OAgeOBk+OCjOOBq+WQjeWJjeOCkuOBpOOBkeOCi+W/heimgeOBjOOBguOCi+OBruOBp+OAgeS4iuOBruS+i+OBp+OBr+OAgWRmX2NvMl9mb3NzaWwg44Go44GL44CBZGZfY28yX2Zvc3NpbF9zaG9ydCDjgajjgZfjgabjgYLjgorjgb7jgZnjgIIK5pyA5b6M44Gu6KGM44Gr44CB44GT44KM44KJ44KS5Yqg44GI44Gm44GK44GP44GT44Go44Gn44CB5YaF5a6544KS6KGo56S644GZ44KL44GT44Go44KC5ZCM5pmC44Gr44GX44Gm44GP44KM44G+44GZ44CCCgojIyDjg4fjg7zjgr/jga7kv53lrZgKCuODgOOCpuODs+ODreODvOODieOBl+OBn+ODh+ODvOOCv+OBr+OAgWRhdGEg44OV44Kp44Or44OA44Gr5L+d5a2Y44GX44Gm44GK44GP44GT44Go44KS44GK5Yun44KB44GX44G+44GZ44CC5LiW55WM6YqA6KGM44Gv44CB44Go44GN44Gp44GN44CB44OH44O844K/44KS44Ki44OD44OX44OH44O844K/44GZ44KL44Gf44KB44Gr44CB44K144O844OT44K544GM5YGc5q2i44GZ44KL44GT44Go44GM44GC44KK44G+44GZ44CC44G+44Gf44CB5L+d5a2Y44GX44Gf44KC44Gu44KS6Kqt44G/6L6844KA44GT44Go44Gn44CB5q+O5Zue44OA44Km44Oz44Ot44O844OJ44GX44Gq44GE44Gn5riI44KA44Oh44Oq44OD44OI44KC44GC44KK44G+44GZ44CCCgojIyMg5L6LCgroqq3jgb/ovrzjgpPjgaDjg4fjg7zjgr8gZGZfY28yX2Zvc3NpbCDjgpLjgIFDU1bvvIjjgqvjg7Pjg57ljLrliIfjgorlvaLlvI/vvInjgafjgIFkYXRhIOODleOCqeODq+ODgOODvOOBruS4reOBq+OAgWNvMl9mb3NzaWwuY3N2IOOBqOOBhOOBhuWQjeWJjeOBp+S/neWtmOOBl+OBvuOBmeOAguOBk+OBruOBqOOBjeOBq+OAgWRhdGEg44OV44Kp44O844Or44Gg44GM44Gq44GE44Go44CB5L+d5a2Y44Gn44GN44G+44Gb44KT44CCUiBOb3RlYm9vayDjgYzjgYLjgovjg5Xjgqnjg6vjg4Djg7zjga7kuK3jgavjgIFkYXRhIOODleOCqeODq+ODgOOBjOOBguOCi+OBk+OBqOOBjOW/heimgeOBp+OBmeOAgmRhdGEg44OV44Kp44Or44OA44GM44Gq44GE44Go44GE44GG44Ko44Op44O844Oh44OD44K744O844K444GM5Ye644Gf44KJ44CB5pyA5Yid44Gr6Kqs5piO44GX44Gf44CB44OV44Kh44Kk44Or44KS5L2c44KL5pmC44Gu6YOo5YiG44KS6Kqt44G/6L+U44GX44Gm44GP44Gg44GV44GE44CC6ZaT6YGV44Gj44Gm44GE44Gf44KJ44CB44GT44GT44Gn44CBU2F2ZSBhcyDjgafpganliIfjgarjgajjgZPjgo3jgavjgIHkv53lrZjjgZfjgarjgYrjgZfjgabjgY/jgaDjgZXjgYTjgIIKCmBgYHtyIGV2YWwgPSBGQUxTRX0Kd3JpdGVfY3N2KGRmX2NvMl9mb3NzaWwsICJkYXRhL2NvMl9mb3NzaWwuY3N2IikKYGBgCgpgYGB7cn0KZGZfY28yX2Zvc3NpbCA8LSByZWFkX2NzdigiZGF0YS9jbzJfZm9zc2lsLmNzdiIpCmBgYAoKYGBge3IgZXZhbD1GQUxTRX0Kd3JpdGVfY3N2KGRmX2NvMl9mb3NzaWxfc2hvcnQsICJkYXRhL2NvMl9mb3NzaWxfc2hvcnQuY3N2IikKYGBgCgpgYGB7cn0KZGZfY28yX2Zvc3NpbF9zaG9ydCA8LSByZWFkX2NzdigiZGF0YS9jbzJfZm9zc2lsX3Nob3J0LmNzdiIpCmBgYAoKIyMg44OH44O844K/44Gu56K66KqNCgrjg4fjg7zjgr/jgpLnorroqo3jgZfjgb7jgZnjgILjganjga7jgojjgYbjgarliJfvvIjlpInmlbDvvInjgYzjgYLjgovjgYvjgpLnorroqo3jgZfjgb7jgZnjgYzjgIHnibnjgavjgIHmnIDliJ3jgavlrprjgoHjgZ/jgIHmjIfmqJnjga7lpInmlbDjgYzjgIHjgYLjgovliJfjgavjga/jgaPjgabjgYTjgovjgZPjgajjgpLnorroqo3jgZnjgovjgZPjgajjgoLlpKfliIfjgafjgZnjgILnibnjgavjgIFleHRyYSA9IFRSVUUg44Go44GX44Gm6Kqt44G/6L6844KA44Go44CB44GV44G+44GW44G+44Gq5aSJ5pWw44KS6Kqt44G/6L6844KT44Gn44GE44G+44GZ44GL44KJ44CB56K66KqN44GX44Gm44GP44Gg44GV44GE44CCCgojIyMg5L6LCgrjg4fjg7zjgr/lhajkvZPjga7norroqo3jgILlj7PkuIrjga7kuInop5LljbDjgYvjgonjgIHpmqDjgozjgabjgYTjgovlpInmlbDjgpLjgb/jgovjgZPjgajjgYzjgafjgY3jgIHkuIvjga4gTkVYVCDjgoTjgIHnlarlj7fjgYvjgonjgIHmrKHjga7jg5rjg7zjgrjjgbjjgajnp7vli5XjgZfjgIExMOODh+ODvOOCv+OBmuOBpOeiuuiqjeOBp+OBjeOCi+OCiOOBhuOBq+OBquOBo+OBpuOBhOOBvuOBmeOAggogCmhlYWQoZGZfY28yX2Zvc3NpbCkg44Go44GZ44KL44Go44CB5pyA5Yid44Gu77yW6KGM44Gg44GR44CBdGFpbChkZl9jbzJfZm9zc2lsKSDjgajjgZnjgovjgajjgIHmnIDlvozjga7jgIE26KGM44KS56K66KqN44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCCgpgYGB7cn0KZGZfY28yX2Zvc3NpbApgYGAKCuODh+ODvOOCv+OBruWkieaVsO+8iOWIl++8ieOBrueiuuiqjeOBq+OBr+OAgXN0cigpIOOCguS+v+WIqeOBp+OBmeOAguS4i+OBruOCs+ODvOODieOBr+OAgWRmX2NvMl9mb3NzaWwgfD4gc3RyKCkg44Go44GX44Gm44KC5ZCM44GY44Gn44GZ44CCfD4g44Gv44OR44Kk44OX44Kq44Oa44Os44O844K/44Go5ZG844Gw44KM44G+44GZ44CC44GL44Gj44GT44Gu5Lit44Gu56ys5LiA5byV5pWw44Go44GX44Gm44CB5LiA44Gk5YmN44Gu5Ye65Yqb44KS5Luj5YWl44GX44G+44GZ44CCCgpgYGB7cn0Kc3RyKGRmX2NvMl9mb3NzaWwpCmBgYAoKIyMg5ZCE5bm05q+O44Gu44OH44O844K/44Gu5pWw44Gu5qOS44Kw44Op44OVCgrkuJbnlYzpioDooYzjgafjga/jgIExOTYw5bm044GL44KJ5pio5bm044G+44Gn44Gu44OH44O844K/44KS5L2c5oiQ44GX44Gm44GE44G+44GZ44GM44CB44GZ44G544Gm44GC44KL44KP44GR44Gn44Gv44GC44KK44G+44Gb44KT44CC44G+44Gf44CB5Zu944KE5Zyw5Z+f44Gr44KI44Gj44Gm44Gv44CB44OH44O844K/44GM44Gq44GE5aC05ZCI44GM44GC44KK44G+44GZ44CC5pyA5paw44Gu44OH44O844K/44Gv5L2V5bm044Gu44KC44Gu44GL44KC5ZCr44KB44Gm44CB6Kq/44G544Gm44GK44GP5b+F6KaB44GM44GC44KK44G+44GZ44CCCgojIyMg5L6LCgrjgZPjga7mo5LjgrDjg6njg5Xjgafjga/jgIExOTkw5bm044GL44KJMjAxNeW5tOOBvuOBp+OBruODh+ODvOOCv+OBjDE4MOeoi+W6puOAgeOBmeOBquOCj+OBoeOAgTE4MOOBruWbveOBruWcsOWfn+OBq+OBpOOBhOOBpuOBr+OAgeS4oeaWueOBruefpeOBo+aWueOBq+OBpOOBhOOBpuOBruODh+ODvOOCv+OBjOOBguOCi+OBk+OBqOOBjOOCj+OBi+OCiuOBvuOBmeOAggoKYGBge3J9CmRmX2NvMl9mb3NzaWwgfD4gZHJvcF9uYShjbzIsIGZvc3NpbCkgfD4gCiAgZ2dwbG90KGFlcyh5ZWFyKSkgKyBnZW9tX2JhcigpICsgbGFicyh0aXRsZSA9ICLlkITlubTmr47jga7jg4fjg7zjgr/jga7mlbDvvJpjbzIsIGZvc3NpbCDjgajjgoLjgavlrZjlnKjjgZnjgovlm73jg7vlnLDln5/jga7mlbAiKQpgYGAKCuWQhOOAgeWkieaVsOOBlOOBqOOBq+iqv+OBueOBn+OBhOaZguOBr+OAgWxvbmcgdGFibGUg44KS5L2/44GE44G+44GZ44CC5bCR44GX6auY57Sa44Gn44GZ44Gt44CCCgrjgZPjga7kvovjgafjga/jgIFmb3NzaWwg44Gu44OH44O844K/44Gv44CBMTk2MCDlubTjgYvjgonjgYLjgorjgb7jgZnjgYzjgIFjbzIg44Gv44CBMTk5MCDlubTjgYvjgonjgILjgb7jgZ/jgIFjbzIg44Gv44CBMjAyMCDlubTjgb7jgafjga7jg4fjg7zjgr/jgYzjgYLjgorjgb7jgZnjgYzjgIFmb3NzaWwg44Gv44CBMjAxNSDlubTjgb7jgafjga7jg4fjg7zjgr/jgZfjgYvjgarjgYTjgZPjgajjgYzjgo/jgYvjgorjgb7jgZnjgIIKCnBpdm90X2xvbmdlcihjKGNvMiwgZm9zc2lsKSkg44Gn44Gv44CB44GT44KM44KJ5LqM44Gk44Gu5oyH5qiZ44KS44CBbmFtZSDjgajjgYTjgYblpInmlbDjgavjgIHjgZ3jgozjgZ7jgozjga7lgKTjga/jgIF2YWx1ZSDjgavlhaXjgozjgb7jgZnjgILnuKbplbfjga7jg4fjg7zjgr/jgajjgYTjgYbjgZPjgajjgafjgIHoqqzmmI7jgZfjgb7jgZfjgZ/jgILvvIjmvJTnv5I377yJCgpgYGB7cn0KZGZfY28yX2Zvc3NpbCB8PiBwaXZvdF9sb25nZXIoYyhjbzIsIGZvc3NpbCkpIHw+IGRyb3BfbmEodmFsdWUpIHw+IAogIGdncGxvdChhZXMoeWVhciwgZmlsbCA9IG5hbWUpKSArIGdlb21fYmFyKCkrIAogIGxhYnModGl0bGUgPSAi5ZCE5bm05q+O44Gu44OH44O844K/44Gu5pWw77yaY28yLCBmb3NzaWwg44Gd44KM44Ge44KM44GM5a2Y5Zyo44GZ44KL5Zu944O75Zyw5Z+f44Gu5pWwIikKYGBgCgojIOWkieW9ou+8iHRyYW5zZm9ybWluZ++8iQoK44OH44O844K/44Gu5b+F6KaB44Gq6YOo5YiG44Gg44GR44KS5Y+W44KK5Ye644GX44Gm44CB5YiG5p6Q44GX44G+44GZ44CCCgojIyDln7rmnKznmoTjgarlpInlvaIKCi0gICAqKuihjOOBrumBuOaKnioq77yaYGZpbHRlcihjb3VudHJ5ICVpbiUgYygiSmFwYW4iLCAiQ2hpbmEiKSlgLCBgZGlzdGluY3QoY291bnRyeSlgLCBgZHJvcF9uYSh2YWx1ZSlgCgotICAgKirliJfjga7pgbjmip4qKu+8mmBzZWxlY3QoY291bnRyeSwgaXNvMmMsIHllYXIsIHZhcjEsIHZhcjIsIHJlZ2lvbilgCgojIyDnuKbplbfjg4fjg7zjgr/jg7vmqKrplbfjg4fjg7zjgr8KCi0gICAqKuaoquS4puOBs+OBruWkieaVsOOCkue4puS4puOBs+OBqyoq77yabmFtZSDliJfjgajjgIF2YWx1ZSDliJfjgpLkvZzjgorjgIF2YXJfMSwgdmFyXzIsIC4uLiAsIHZhcl9uIOOCkiBuYW1lIOWIl+OBq+OAgeWvvuW/nOOBmeOCi+WApOOCkuOAgHZhbHVlIOWIl+OBqwoKICAgIC0gICBgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKHZhcl8xLCB2YXJfMiwgLi4uICwgdmFyX24pKWAKCiAgICAtICAgYHBpdm90X2xvbmdlcihjb2xzID0gYyhmZW1hbGVfdW5lbXBsb3ksIG1hbGVfdW5lbXBsb3kpKWAKCiAgICAtICAgYHBpdm90X2xvbmdlcihjKGVsZWN0cmljaXR5X3VyYmFuLCBlbGVjdHJpY2l0eV9ydXJhbCkpYDogYGNvbHMgPWAg44Gv55yB55Wl5Y+v6IO9CgogICAgLSAgIGBwaXZvdF9sb25nZXIoY29scyA9IGVsZWN0cmljaXR5X3VyYmFuOnNhbml0YXRpb25fcnVyYWwpKWDvvJplbGVjdHJpY2l0eV91cmJhbiDjga7liJfjgYvjgonjgIFzYW5pdGF0aW9uX3J1cmFsIOOBruWIl+OBvuOBp+OBruOBmeOBueOBpuOBruWkieaVsOOCkuaMh+WumgoKLSAgICoq5rS755So77yaKipgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKHZhcjEsIHZhcjIpKXw+IGdncGxvdChhZXMoeWVhciwgdmFsdWUsIGNvbCA9IG5hbWUpICsgZ2VvbV9saW5lKClgCgotICAqKue4puS4puOBs+OBruWkieaVsOOCkuaoquS4puOBs+OBqyoq77ya5YiX5ZCN44KS5oyH5a6a44GZ44KL5aSJ5pWw44Go44CB5YCk44Gu5aSJ5pWw44KS5oyH5a6a44GX44CB5qiq5Lim44Gz44Gr44GX44G+44GZ44CCCgogICAgLSAgIGBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gdmFyMSwgdmFsdWVzX2Zyb20gPSB2YXIyKQogICAgCiAgICAtICAgYHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBuYW1lLCB2YWx1ZXNfZnJvbSA9IHZhbHVlKTogcGl2b3RfbG9uZ2VyIOOBrumAhuOBp+OBmeOAggogICAgCiAgICAKCiMjIOWkieaVsOOBrumBuOaKnu+8iHNlbGVjdGluZ++8iQoKZXh0cmEgPSBUUlVFIOOBqOOBl+OBpuOAgeODh+ODvOOCv+OCkuWFpeaJi+OBmeOCi+OBqOOAgeS9v+OCj+OBquOBhOWkieaVsOOCguOBn+OBj+OBleOCk+OBguOCi+OBruOBp+OAgeimi+OChOOBmeOBhOOCiOOBhuOBq+OAgeW/heimgeOBquWkieaVsOOBoOOBkeOBq+OBl+OBvuOBmeOAguW/heimgeOBquOCguOBruOCkuOAgeiQveOBqOOBleOBquOBhOOCiOOBhuOBq+OAgeawl+OCkuOBpOOBkeOBvuOBmeOAggoKIyMjIOS+iwoK44KP44Gf44GX44Gv44CB5bCR44GX55+t44KB44Gu5ZCN5YmN44KS5L2/44Gj44Gm44GE44G+44GZ44CC57WQ5p6c44KS44CB44GZ44GQ6KGo56S644GZ44KL44KI44GG44Gr44GX44Gm44CB44Gd44GT44Gn44CB5b+F6KaB44Gq5aSJ5pWw44GM44CB44Gu44GT44Gm44GE44KL44GT44Go44KS56K66KqN44GX44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIDwtIGRmX2NvMl9mb3NzaWwgfD4gCiAgc2VsZWN0KGNvdW50cnksIGlzbzJjLCB5ZWFyLCBjbzIsIGZvc3NpbCwgcmVnaW9uLCBpbmNvbWUpCmRmX2NvMmZvcwpgYGAKCiMjIOe4pumVt+OBruihqO+8iExvbmcgVGFibGXvvInjgavlpInmj5sKCuS4iuOBruiqrOaYjuOCkuOAgeeiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAguOBn+OBhOOBm+OBpOOBquOBruOBr+OAgeOBk+OCjOOCkuOBqeOBruOCiOOBhuOBq+a0u+eUqOOBmeOCi+OBi+OBp+OBmeOBi+OCieOAgeOBk+OBruOBguOBqOOBq+OAgWRmX2NvMmZvc19sb25nIOOCkuS9v+OBo+OBpuOAgeWbs+OCkuaPj+OBhOOBpuOBhOOCi+OCguOBruOCkuOAgeeiuuiqjeOBl+OBpuOAgWRmX2NvMmZvcyDjgajjga7pgZXjgYTjgpLmr5TovIPjgZfjgabjgY/jgaDjgZXjgYTjgILjgZPjga7jgYLjgajjgoLjgIFkZl9jbzJmb3Mg44KS5L2/44Gj44Gm5o+P55S744KS44GX44Gm44GE44KL5aC05ZCI44KC44GC44KK44G+44GZ44CC44Gp44Gh44KJ44Gn44KC44CB5L2/44GI44KL44KC44Gu44Go44CB5LiA5pa544KS5L2/44GG44Go44CB5LuW5pa544KS5L2/44GG44Gu44Go5q+U6LyD44GX44Gm44CB6Z2e5bi444Gr44CB5Y2Y57SU44Gr44Gq44KL5aC05ZCI44GM44GC44KL44GT44Go44KS56K66KqN44GX44Gm44GE44Gj44Gm44GP44Gg44GV44GE44CCCgojIyMg5L6LCgoqYGNvMmAg44GoIGBmb3NzaWxgIOOBruWIl++8iOWkieaVsO+8ieOCkuOAgeWkieaVsOOCkiBuYW1lIOOBq+OAgeWApOOCkiB2YWx1ZSDjgavlhaXjgozjgabjgIHnuKbjgavkuKbjgbnjgb7jgZnjgIIqCgpgYGB7cn0KZGZfY28yZm9zX2xvbmcgPC0gZGZfY28yZm9zIHw+IAogIHBpdm90X2xvbmdlcihjb2xzID0gYyhjbzIsZm9zc2lsKSkKZGZfY28yZm9zX2xvbmcKYGBgCgojIyDlm73jgajlnLDln58KCuS4u+OBqOOBl+OBpuWIhuaekOOBmeOCi+WbveOChOWcsOWfn+OBruODquOCueODiOOCkuS9nOaIkOOBl+OBvuOBmeOAguacgOWIneOBq+abuOOBhOOBpuOBguOCiuOBvuOBmeOBjOOAgeOBk+OBruOBguOBqOOBruWIhuaekOOBp+OAgeWbveOChOOAgeWcsOWfn+OCkuWKoOOBiOOBn+OCiuOAgeWkieabtOOBmeOCi+OBk+OBqOOCguOBguOCi+OBp+OBl+OCh+OBhuOAguWFqOS9k+OBruani+aIkOOBqOOBl+OBpuOBr+OAgeimluimmuWMluOBquOBqeOCkuWni+OCgeOCi+WJjeOBq+OAgeODquOCueODiOOCkuS9nOaIkOOBl+OBpuOBiuOBj+OBk+OBqOOBjOW/heimgeOBp+OBmeOAguWumue+qeOBjOOBleOCjOOBpuOBhOOBquOBhOOBqOOAgeOCqOODqeODvOOBjOeUn+OBmOOCi+OBi+OCieOBp+OBmeOAguacgOW+jOOBq+OAgVJ1biBBbGwg44Gq44Gp44KS44GZ44KM44Gw44KP44GL44KK44G+44GZ44GM44CB5LiK44GL44KJ6aCG44Gr5a6f6KGM44GZ44KL44Gu44Gn44CB44Gf44Go44GI44Gw44CBQVNFQU4g44Gq44Gp44Gu5YiG5p6Q44KS44GZ44KL44Go44GN44Gr44CB44Gd44KM44GM44CB5pyA5Yid44Gu5pa544Gn5a6a576p44GV44KM44Gm44GE44Gq44GR44KM44Gw44CB44Ko44Op44O844Go44Gq44KK44G+44GZ44CC6YCU5Lit44Gn44Gv44CB44Gd44Gu6YO95bqm5a6a576p44GZ44KM44Gw44CB44Gd44KM44KS44CB55CG6Kej44GX44Gm5a6f6KGM44GX44G+44GZ44GM44CB5a6M5oiQ5b2i44Gr44GZ44KL44Go44GN44Gr44Gv44CB5a6f6Zqb44Gr5L2/44GG44Kz44O844OJ44KI44KK5YmN44Gr5a6a576p44GX44Gm44GK44GL44Gq44GE44Go44GE44GR44G+44Gb44KT44CCCgrlm73jgoTlnLDln5/jgpLpgbjmip7jgZnjgovjgavjga/jgIHlm73lkI0gY291bnRyeSDjgb7jgZ/jga/jgIFpc28yYyDjgarjganjga7lm73jga7jgrPjg7zjg4njgYzlv4XopoHjgafjgZnjgILmraPnorrjgafjgarjgYTjgajjgYTjgZHjgb7jgZvjgpPjgZfjgIFpc28yYyDjgarjganjgpLjgZnjgbnjgabopprjgYjjgabjgYTjgovjgo/jgZHjgafjga/jgarjgYTjga7jgafjgIHjgZ3jgozjgonjgpLooajnpLrjgZXjgZvjgIHjgZ3jgZPjgYvjgonjgIHjgrPjg5Tjg7zjg7vjg5rjg7zjgrnjg4jjgZnjgovjga7jgYzlronlhajjgafjgZnjgIIKCuWbveWQjeOBr+S4gOiIrOeahOOBq+mVt+OBhOOBruOBp+OAgWlzbzJjIOOCguS+v+WIqeOBp+OBmeOAguaMh+WumuOBmeOCi+aZguOBr+OAgeOBn+OBqOOBiOOBsOOAgWFzZWFuIOOBq+WbveWQjeOBjOOAgUFTRUFOIOOBqyBpc28yYyDjgrPjg7zjg4njgYzlhaXjgaPjgabjgYTjgozjgbDjgIEKCi0gIGBmaWx0ZXIoY291bnRyeSAlaW4kIGFzZWFuKWAKCi0gIGBmaWx0ZXIoaXNvMmMgJWluJSBBU0VBTilgCgrpgbjmip7jgZnjgovjgajjgY3jga7jgIHmnaHku7bjgYzlpInjgo/jgorjgb7jgZnjgYvjgonjgIHms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIIKCiMjIyDlnLDln5/jga4gYGlzbzJjYCDjgrPjg7zjg4kKCmNvdW50cnkg44Gr44Gv44CB5Zu944Go5Zyw5Z+f5Lih5pa544GM5YWl44Gj44Gm44GE44G+44GZ44CC5Zyw5Z+f44GuIGlzbzJjIOOBr+S7peS4i+OBruOCguOBruOBp+OBmeOAguWbveOBqOWcsOWfn+OCkuWMuuWIpeOBmeOCi+OBqOOBjeOBq+S9v+OBhOOBvuOBmeOAggoKLSAg5Zyw5Z+f44Gu44G/IGBmaWx0ZXIoY291bnRyeSAlaW4lIFJFR0lPTilgCi0gIOWbveOBruOBvyBgZmlsdGVyKCEoY291bnRyeSAlaW4lIFJFR0lPTikpYAoKISDjga/lkKblrprjgafjgZnjgIIKCmBgYHtyfQpSRUdJT04gPC0gYygiMUEiLCAiMVciLCAiNEUiLCAiNkYiLCAiNk4iLCAiNlgiLCAiN0UiLCAiOFMiLCAiQTQiLCAiQTUiLCAKIkE5IiwgIkIxIiwgIkIyIiwgIkIzIiwgIkI0IiwgIkI2IiwgIkI3IiwgIkI4IiwgIkM0IiwgIkM1IiwgIkM2IiwgCiJDNyIsICJDOCIsICJDOSIsICJEMiIsICJEMyIsICJENCIsICJENSIsICJENiIsICJENyIsICJFVSIsICJGMSIsIAoiRjYiLCAiTTEiLCAiTTIiLCAiTjYiLCAiT0UiLCAiUjYiLCAiUzEiLCAiUzIiLCAiUzMiLCAiUzQiLCAiVDIiLCAKIlQzIiwgIlQ0IiwgIlQ1IiwgIlQ2IiwgIlQ3IiwgIlYxIiwgIlYyIiwgIlYzIiwgIlY0IiwgIlhDIiwgIlhEIiwgCiJYRSIsICJYRiIsICJYRyIsICJYSCIsICJYSSIsICJYSiIsICJYTCIsICJYTSIsICJYTiIsICJYTyIsICJYUCIsIAoiWFEiLCAiWFQiLCAiWFUiLCAiWFkiLCAiWjQiLCAiWjciLCAiWkIiLCAiWkYiLCAiWkciLCAiWkgiLCAiWkkiLCAKIlpKIiwgIlpRIiwgIlpUIikKYGBgCgojIyMjIOWcsOWfn+OBruODquOCueODiOOCkuihqOekugoKYGBge3IgZXZhbD1GQUxTRX0KZGZfY28yZm9zIHw+IGZpbHRlcihpc28yYyAlaW4lIFJFR0lPTikgfD4gZGlzdGluY3QoY291bnRyeSwgaXNvMmMpCmBgYAoKIyMjIyDlm73lkI3jgajjgZ3jga7lnLDln5/jg7vmiYDlvpfjg6zjg5njg6vjgpLooajnpLoKCmRmX2NvMl9mb3NzaWwg44Go44Gd44KM44GL44KJ5aSJ5pWw44KS6YG45oqe44GX44Gf44CBZGZfY28yZm9zIOOBr+OAgWV4dHJhPVRSVUUg44Go44GX44Gm44CB6L+95Yqg5oOF5aCx44GM44GC44KK44G+44GZ44GL44KJ44CB5Zyw5Z+f5oOF5aCx77yIcmVnaW9u77yJ44GoIOaJgOW+l+ODrOODmeODq++8iGluY29tZe+8ieOCguWKoOOBiOOBpuOBiuOBjeOBvuOBmeOAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGRpc3RpbmN0KGNvdW50cnksIGlzbzJjLHJlZ2lvbixpbmNvbWUpCmBgYAoKZGZfY28yX2Zvc3NpbF9zaG9ydCDjgafjga/jgIFleHRyYT1UUlVFIOOBr+aMh+WumuOBm+OBmu+8iOWIneacn+ioreWumumAmuOCiiBleHRyYSA9IEZBTFNF77yJ44Go44GX44Gm44GC44KK44G+44GZ44GL44KJ44CB5LiK44Gu44CBZGZfY28yZm9zIOOCkuOAgWRmX2NvMl9mb3NzaWxfc2hvcnQg44Gr572u44GN5o+b44GI44KL44Go44Ko44Op44O844GM5Ye644G+44GZ44CCcmVnaW9uIOOChOOAgWluY29tZSDjga7liJfjgYzjgarjgYTjgYvjgonjgafjgZnjgILjgZ3jga7loLTlkIjjga/jgIHmrKHjga7jgojjgYbjgavjgZfjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJfZm9zc2lsX3Nob3J0IHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZGlzdGluY3QoY291bnRyeSwgaXNvMmMpCmBgYAoK5a2Y5Zyo44GX44Gq44GE5aSJ5pWw44Gr44Gk44GE44Gm44Gq44Gr44GL44KS44GX44KI44GG44Go44GZ44KL44GoIEVycm9yIOOBq+OBquOCiuOBvuOBmeOAguOBneOBruOBqOOBjeOBr+OAgeOBneOBk+OBp+S9v+OBo+OBpuOBhOOCi+ODh+ODvOOCv+OBq+Wun+mam+OBq+OAgeOBneOBruWkieaVsOOBjOOBguOCi+OBi+OBqeOBhuOBi+eiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAguOBk+OBruWgtOWQiOOBquOCieOAgeS7peS4i+OBruOCiOOBhuOBq+OBmeOCjOOBsOOAgXJlZ2lvbiDjgoTjgIFpbmNvbWUg44Go44GE44GG5aSJ5pWw44GM44Gq44GE44GT44Go44Gv56K66KqN44Gn44GN44G+44GZ44Gt44CCCgpgYGB7cn0KZGZfY28yX2Zvc3NpbF9zaG9ydApgYGAKCiMjIyDlm73jgoTlnLDln5/jga7pgbjmip4KCuaOiOalreOBp+e0ueS7i+OBl+OBn+OCguOBruOCkuasoeOBq+abuOOBhOOBpuOBiuOBjeOBvuOBmeOAggoKYGBge3J9CmFzZWFuIDwtIGMoIkJydW5laSBEYXJ1c3NhbGFtIiwgIkNhbWJvZGlhIiwgIkluZG9uZXNpYSIsICJMYW8gUERSIiwgIk1hbGF5c2lhIiwgCiJNeWFubWFyIiwgIlBoaWxpcHBpbmVzIiwgIlNpbmdhcG9yZSIsICJWaWV0IE5hbSIpCmBgYAoKYGBge3J9CkFTRUFOIDwtIGMoIkJOIiwgIktIIiwgIklEIiwgIkxBIiwgIk1ZIiwgIk1NIiwgIlBIIiwgIlNHIiwgIlZOIikKYGBgCgpgYGB7cn0KQlJJQ1MgPC0gYygiQnJhemlsIiwgIlJ1c3NpYW4gRmVkZXJhdGlvbiIsICJJbmRpYSIsICJDaGluYSIsICJTb3V0aCBBZnJpY2EiKQpgYGAKCmBgYHtyfQpTQUNVIDwtIGMoIlNvdXRoIEFmcmljYSIsICJOYW1pYmlhIiwgIkVzd2F0aW5pIiwgIkJvdHN3YW5hIiwgIkxlc290aG8iKQpgYGAKCmBgYHtyfQpMQV9HSU5JIDwtIGMoIlN1cmluYW1lIiwgIkJlbGl6ZSIsICJCcmF6aWwiLCAiQ29sb21iaWEiKQpgYGAKCiMjIyDlnLDln5/vvIhyZWdpb27vvInjgajjgIHmiYDlvpfjg6zjg5njg6sKCmV4dHJhID0gVFJVRSDjgajjgZfjgabjgIHjg4fjg7zjgr/jgpLlhaXmiYvjgZnjgovjgajjgIHlnLDln5/lkI3jgajjgIHmiYDlvpfjg6zjg5njg6vjgoLkuIDnt5Ljgavlvpfjgonjgozjgb7jgZnjgILjgZ3jgozjgonjga/jgIHjganjga7jgojjgYbjgarjgoLjga7jgYvnorroqo3jgZfjgabjgb/jgb7jgZnjgIJkaXN0aW5jdChyZWdpb24pIOOBr+OAgeeVsOOBquOCi+OCguOBruOBruOBv+WPluW+l+OAgXB1bGwoKSDjga/jgIHooajlvaLlvI/jgafjga/jgarjgY/jgIHjg5njgq/jg4jjg6vvvIjjg4fjg7zjgr/jga7jgarjgonjgbPvvInjgaflj5blvpfjgZnjgovngrrjgavkvb/jgaPjgabjgYTjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZGlzdGluY3QocmVnaW9uKSB8PiBwdWxsKCkKYGBgCuOBk+OCjOOCguOAgeWumue+qeOBl+OBpuOBiuOBjeOBvuOBmeOAglJFR0lPTiDjga/jgZnjgafjgavkvb/jgaPjgabjgYLjgorjgb7jgZnjgYvjgonjgIHmt7fkubHjgpLjgZXjgZHjgovjgZ/jgoHjgIHlsI/mloflrZfjgavjgZfjgb7jgZfjgZ/jgIIKCmBgYHtyfQpyZWdpb25zIDwtIGMoIlNvdXRoIEFzaWEiLCAiRXVyb3BlICYgQ2VudHJhbCBBc2lhIiwgIk1pZGRsZSBFYXN0ICYgTm9ydGggQWZyaWNhIiwgCiJFYXN0IEFzaWEgJiBQYWNpZmljIiwgIlN1Yi1TYWhhcmFuIEFmcmljYSIsICJMYXRpbiBBbWVyaWNhICYgQ2FyaWJiZWFuIiwgCiJOb3J0aCBBbWVyaWNhIikKYGBgCgpgYGB7cn0KZGZfY28yZm9zIHw+IGRpc3RpbmN0KGluY29tZSkgfD4gcHVsbCgpCmBgYAoK44GT44Gh44KJ44Gv44CB44GC44KL56iL5bqm6aCG55Wq44KC6YeN6KaB44Gn44GZ44GL44KJ44CB5qyh44Gu44KI44GG44Gr44GX44Gm44GK44GN44G+44GZ44CCCgpgYGB7cn0KSU5DT01FIDwtIGMoIkhpZ2ggaW5jb21lIiwgIlVwcGVyIG1pZGRsZSBpbmNvbWUiLCAiTG93ZXIgbWlkZGxlIGluY29tZSIsIAoiTG93IGluY29tZSIpCmBgYAoKIyMjIOWIhuaekOOBmeOCi+WbveOChOWcsOWfn+OBruODquOCueODiAoK44GC44Gq44Gf44GM5YiG5p6Q44GX44Gf44GE5Zu944KE5Zyw5Z+f44Gu44Oq44K544OI44KS44G+44Ga44Gv5pu444GE44Gm44GK44GP44Go44CB5oCd44GE44Gk44GN44Gn5aSJ5pu044GZ44KL44Gu44Gn44Gv44Gq44GP44CB6aaW5bC+5LiA6LKr44GX44Gf5YiG5p6Q44GM44Gn44GN44G+44GZ44CCCgrmnIDliJ3jga7norroqo3jga7jgZ/jgoHjgavjga/jgIHjgo/jgZ/jgZfjga/jgIFKYXBhbiAoaXNvMmMg44Gn44Gv44CBSlApIOOBi+OAgVdvcmxkIChpc28yYyDjgafjga/jgIExVykg44KS44Gk44GL44GG44GT44Go44Gr44GX44Gm44GE44G+44GZ44CC6Lqr6L+R44Gq44CB44G+44Gf44Gv44CB5YWo5L2T44GL44KJ5aeL44KB44KL54K644Gn44GZ44CC5YiG5p6Q44KS5aeL44KB44Gf44KJ44CBQ0hPU0VOX0NPVU5UUklFUyDjga/lpInmm7TjgZfjgZ/mlrnjgYzoia/jgYTloLTlkIjjgoLjgYLjgorjgb7jgZnjgZfjgIFDSE9TRU5fQ09VTlRSSUVTXzEsIENIT1NFTl9DT1VOVFJJRVNfMiDjgarjganjgajjgZfjgabjgIHlub7jgaTjgoLjga7jgrDjg6vjg7zjg5fjgavjgaTjgYTjgabliIbmnpDjgZnjgovjga7jgoLjgojjgYTjgafjgZfjgofjgYbjgILjgoLjgaPjgajnn63jgYTlkI3liY3jgavjgZfjgabjgoLjgojjgYTjgafjgZnjgYzjgIHpgJTkuK3jgb7jgafjgIHlhaXlipvjgZnjgozjgbDjgYLjgajjga/oh6rli5XnmoTjgavooajnpLrjgZXjgozjgb7jgZnjgYvjgonjgIHnn6LljbDjgajjgIFUYWIg44KS5L2/44GI44Gw44CB57Ch5Y2Y44Gr5YWl5Yqb44Gn44GN44G+44GZ44CCCgpgYGAKQ0hPU0VOX0NPVU5UUlkgPC0gIiIKQ0hPU0VOX0NPVU5UUklFUyA8LSBjKCkKYGBgCgojIOWIhuaekOODu+imluimmuWMlgoK5LiA6Iis55qE44Gq5b2i44Gn5pu444GP5pmC44Gv44CB5LuK5b6M44CB44OH44O844K/44Gv44CBYGRmYCDjgafooajjgZfjgb7jgZnjgIJkYXRhIGZyYW1lIOOBruaEj+WRs+OBp+OBmeOAglIg44Gn44Gv44CB5Z+65pys55qE44Gq44OH44O844K/5b2i5byP44Gn44GZ44CCZGZfY28yZm9zIOOBquOBqeOBqOOBl+OBn+OAgWRmIOOCguOBneOBk+OBi+OCieOBqOOBo+OBn+OCguOBruOBp+OBmeOAggoK6KaW6Kaa5YyW44Gv44CB5o6i57Si55qE44OH44O844K/5YiG5p6Q44Gu5qC444Go44KC6KiA44GI44KL44KC44Gu44Gn44GZ44CC6KaW6Kaa5YyW44GX44Gm44CB44Gd44KM44GL44KJ44CB6KaL44GI44KL44KC44Gu44KS6YCa44GX44Gm44CB6ICD44GI44G+44GZ44CC5rCX44Gl44GE44Gf44GT44Go44CB55aR5ZWP44Gr5oCd44Gj44Gf44GT44Go44KS44CB5pu444GN55WZ44KB44Gm44GK44GP44CC44Gd44GX44Gm44CB5qyh44Gu6KaW6Kaa5YyW44Gn44CB44GV44KJ44Gr44CB55CG6Kej44KS5rex44KB44Gm44GE44GP44Go44GE44Gj44Gf5oSf44GY44Gn44GZ44CC44G+44Gf44CB44Gh44GM44Gj44Gf44CB44OH44O844K/44KS44G/44KL44GT44Go44KC44GC44KL44GL44Go5oCd44GE44G+44GZ44GM44CB44GT44GT44Gn44Gv44CB6ZmQ44KJ44KM44Gf44OH44O844K/44KS44G/44KL44CB5Z+65pys55qE44Gq5pa55rOV44KS6KaL44Gm44GE44GN44G+44GZ44CCCgrln7rmnKzjga/jgIHkuozjgaTjgIIKCjEuIOS4gOOBpOOBruODh+ODvOOCv+OBruOAgeWIhuW4g+OCkuOBv+OCi+OAggoyLiDkuozjgaTjga7jg4fjg7zjgr/jga7nm7jplqLjgpLjgb/jgovjgIIKCuODh+ODvOOCv+OBr+OAgeaVsOWApOODh+ODvOOCv++8iG51bWVyaWNhbCBkYXRh77yJ44Gw44GL44KK44Gn44Gq44GP44CB5paH5a2X44GL44KJ44Gq44KL44OH44O844K/44CB6YCa5bi444Gv44CB44Kr44OG44K044Oq44O844O744OH44O844K/77yIY2F0ZWdvcmljYWwgZGF0YeOAgeaXpeacrOiqnuOBp+OBr+OAgeWQjeebruODh+ODvOOCv+OBqOOBhOOBhuOBk+OBqOOCguOBguOCiuOBvuOBme+8ieOBruWgtOWQiOOCguOBguOCiuOBvuOBmeOAggoKIyMg44GV44G+44GW44G+44Gq6KaW6Kaa5YyW77yIVmlzdWFsaXppbmfvvIkKCuS+i+OBqOOBl+OBpuOAgeS4reW/g+eahOOBq+S9v+OBhuODh+ODvOOCv+OBr+OAgeS6jOOBpOOBp+OBmeOAggoKLSBkZl9jbzJmb3M6IGNvMiAoQ28yIHBlciBDYXBpdGEpIOOBruWApOOBqOOAgeWMluefs+eHg+aWmeOBq+OCiOOCi+eZuumbu+OBruWJsuWQiOOCkuihqOOBmSBmb3NzaWwg44GM5aSJ5pWw44Gr5ZCr44G+44KM44CBeWVhciDku6XlpJbjgavjgIFyZWdpb24g44KE44CBaW5jb21lIOOBruODh+ODvOOCv+OCguWFpeOBo+OBpuOBhOOBvuOBmeOAggoKLSBkZl9jbzJmb3NfbG9uZzog57im6ZW344Gu6KGo44Gn44CBbmFtZSDjgavjgIFjbzIg44GoIGZvc3NpbCDjgpLlkKvjgb/jgIF2YWx1ZSDjgasg44Gd44Gu5YCk44GM5YWl44Gj44Gm44GE44G+44GZ44CC44OH44O844K/44KS44KI44GP56K66KqN44GX44Gm44GP44Gg44GV44GE44CC5LiK44Gu5pa544Gr44GC44KK44G+44GZ44CCCgrln7rmnKznmoTjgavjga/jgIHjg4fjg7zjgr/jgpLntZ7jgorovrzjgb/jgIHjgZ3jga7jgYLjgajjgafjgIFnZ3Bsb3QyIOOCkuS9v+OBhOOBvuOBmeOAguS7peS4i+OBruOCiOOBhuOBquODleOCqeODvOODnuODg+ODiOOBq+OBquOCiuOBvuOBmeOAggoKYGBgCmRmX2NvMmZvcyB8PiBmaWx0ZXIg44Gq44Gp44Gn5b+F6KaB44Gq6KGM44KS57We44KK6L6844KA44CAfD4gZHJvcF9uYSjlpInmlbApIOOBquOBqeOBp+OAgU5BIOOCkuWJiumZpCB8PgogIGdncGxvdChhZXMoeCwgeSkpICsgZ2VvbV8qKiooKQpgYGAKCmFlcygpIOOBrumDqOWIhuOCkiBtYXBwaW5nIOOBqOiogOOBhOOBvuOBmeOAguWun+OBr+OAgWBtYXBwaW5nID0gYWVzKHgsIHkpYCDjgajmm7jjgY/jga7jgYzmraPlvI/jgafjgIHjgZ3jga7jgIBtYXBwaW5nIOOCkuecgeeVpeOBl+OBpuOBhOOBvuOBmeOAguips+e0sOOBr+OAgWdlb21fKioqKCkg44Gu44GE44KN44GE44KN44Gq5o+P5YaZ5pa55rOV44Gr44KI44Gj44Gm55Ww44Gq44KK44G+44GZ44Gu44Gn44CB44Gd44KM44Ge44KM44Gu44CBSGVscO+8iOWPs+S4i+OBrueqk+aeoO+8iHBhbmXvvInjga4gSGVscCDjgr/jg5bjga7mpJzntKLnqpPjgavlhaXjgozjgozjgbDjgIHoqqzmmI7jgoTjgIHjg5Hjg6njg6Hjgr/vvIjjgqrjg5fjgrfjg6fjg7PjgajjgZfjgabmm7jjgY3ovrzjgoDlhoXlrrnvvInjgoTjgIHjgZ3jga7liJ3mnJ/lgKTjgarjganjga7mg4XloLHjgYzlvpfjgonjgozjgb7jgZnvvInjgpLnorroqo3jgZfjgabjgY/jgaDjgZXjgYTjgIIKCuODh+ODvOOCv+OBruacgOWIneOBrjbooYzjgpLooajnpLrjgZXjgZvjgovjga7jga/jgIFoZWFkKCkg44Gn44GX44Gf44GM44CBaGVhZCDjgaggSGVscCDjgavlhaXjgozjgabjgb/jgabjgY/jgaDjgZXjgYTjgILjgYvjgarjgoroqbPjgZfjgY/mm7jjgYvjgozjgabjgYTjgb7jgZnjgYvjgonjgIHjgZnjgbnjgabnkIbop6PjgZnjgovjga7jga/pm6PjgZfjgYTjgYvjgoLjgZfjgozjgb7jgZvjgpPjga3jgILoppbopprljJbjga7mnIDliJ3jga/jgIHmipjjgoznt5rjgrDjg6njg5XjgYvjgonlp4vjgoHjgb7jgZnjgYzjgIHjgZ3jgozjgavjga/jgIFnZW9tX2xpbmUg44KS5L2/44GE44G+44GZ44CC44GT44KM44KC44G/44Gm44G/44Gm44GP44Gg44GV44GE44CCCgojIyDntYzlubTlpInljJYKCnllYXIg44KSIHgg6Lu444Gr44CB5aSJ5pWw44Gu5YCk44KS44CAeSDou7jjgavlj5bjgovjgajjgIHntYzlubTlpInljJbjgYzjgo/jgYvjgorjgb7jgZnjgILml6XmnKzjgoTjgIHkuJbnlYzjgafjgb/jgabjgb/jgb7jgZnjgIJkcm9wX25hKHZhcikg44KS5L2/44GG44GT44Go44Gn44CB56m655m96YOo5YiG44GM44Gq44GP44Gq44KK44CBV2FybmluZyDjgoLmuJvjgorjgb7jgZnjgYzjgIHpgZXjgYbmjIfmqJnjgpLmr5TovIPjgZnjgovmmYLjga/jgIHjgZPjgozjgpLlhaXjgozjgarjgYTjga7jgoLmiYvjgafjgZnjgZfjgIHlkIzjgZjln7rmupbjgavjgZnjgovjgZ/jgoHjgavjgIFkcm9wX25hKHZhcjEsIHZhcjIpIOOBqOOBl+OBpuOBiuOBj+aJi+OCguOBguOCiuOBvuOBmeOAggoK5Z+65pys44Gv44CB5bm05q+O44Gr44CB5pWw5YCk5aSJ5pWwIHZhciDjga7ngrnjgpLjgIHntZDjgbPjgb7jgZnjgIIKCmBgYCAKZGYgfD4gZ2dwbG90KGFlcyh5ZWFyLCB2YXIpKSArIGdlb21fbGluZSgpCmBgYAoK5qyh44Gu44KI44GG44Gr5pu444GP44GT44Go44KC5Y+v6IO944Gn44GZ44CCCgpgYGAKZGYgfD4gZ2dwbG90KCkgK2dlb21fbGluZShhZXMoeWVhciwgdmFyKSkKYGBgCgpgYGAKZGYgfD4gZ2dwbG90KGFlcyh5ZWFyKSkgKyBnZW9tX2xpbmUodmFyMSkgKyBnZW9tX2xpbmUodmFyMikKYGBgCgrjgarjganjgoLlj6/og73jgafjgZnjgIIKCgrkvovjgpLjgb/jgabjgYTjgY3jgb7jgZfjgofjgYbjgILkuIDjgaTjga7lm73jg7vlnLDln58KCmBgYApkZl9jbzJfZm9zIHw+IGZpbHRlcihjb3VudHJ5ID09ICLlm73lkI0iKSB8PiBkcm9wX25hKOWkieaVsCkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIOWkieaVsCkpICsgZ2VvbV9saW5lKCkKYGBgCgrjgYTjgY/jgaTjgYvjga7lm73jg7vlnLDln58KCmBgYApkZl9jbzJfZm9zIHw+IGZpbHRlcihjb3VudHJ5ICVpbiUgYygi5Zu95ZCNMSIsICLlm73lkI0yIiwgLi4uICwgIuWbveWQjW4iKSkgfD4gZHJvcF9uYSjlpInmlbApIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCDlpInmlbAsIGNvbCA9IGNvdW50cnkpKSArIGdlb21fbGluZSgpCmBgYAoKaXNvMmMg44Gn44CB5Zu944O75Zyw5Z+f44KS6YG45oqe44GZ44KL44GT44Go44KC5Y+v6IO944Gn44GZ44CCCgpgYGAKZGZfY28yX2ZvcyB8PiBmaWx0ZXIoaXNvMmMgJWluJSBjKCLkuozmloflrZfjgrPjg7zjg4kxIiwgIuS6jOaWh+Wtl+OCs+ODvOODiTIiLCAuLi4gLCAi5LqM5paH5a2X44Kz44O844OJbiIpKSB8PgogIGRyb3BfbmEo5aSJ5pWwKSB8PgogIGdncGxvdChhZXMoeWVhciwg5aSJ5pWwLCBjb2wgPSBjb3VudHJ5KSkgKyBnZW9tX2xpbmUoKQpgYGAKCuacgOWIneWIhuaekOS4reOBr+OAgeecgeeVpeOBl+OBpuOCguOCiOOBhOOBp+OBmeOBjOOAgeOBquOCi+OBueOBj+OAgQoKLSBsYWJzKHRpdGxlID0gIuOCsOODqeODleOBruOCv+OCpOODiOODqyIpIAoK44Go44GX44Gm44CB44K/44Kk44OI44Or5ZCN44KS5YWl44KM44G+44GX44KH44GG44CCeCDou7jjgIF5IOi7uOOBruODqeODmeODq+OCkuWkieabtOOBmeOCi+aZguOBr+OAgQoKLSBsYWJzKHRpdGxlID0gIuOCsOODqeODleOBruOCv+OCpOODiOODqyIsIHggPSAi5bm0IiwgeSA9ICLlpInmlbDjga7lkI3liY0iKQoK44Go44GX44G+44GZ44CCCgrmlLnooYzjgZnjgovjgajjgY3jgavjga/jgIF8PiDjga7lvozjgIEr44CBKOOAgSwg44KE44CBPSAg44Gu5b6M44Gn5pS56KGM44GX44G+44GZ44CC44Gq44KT44Go44Gq44GP44CB57aa44GP44GT44Go44GM5piO44KJ44GL44Gq44Go44GT44KN44Gn5pS56KGM44GZ44KL44Go44GE44GG44GT44Go44Gn44GZ44Gt44CCCgojIyMg5L6LCgojIyMjIOWbveOBvuOBn+OBr+WcsOWfn+OBruS4gOOBpOOBruWkieaVsOOBq+mWouOBmeOCi+e1jOW5tOWkieWMlgoK5LiA55Wq44CB57Ch5Y2Y44Gq5b2i44Gv44CBCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcihjb3VudHJ5ID09ICJKYXBhbiIpIHw+IGdncGxvdChhZXMoeWVhciwgY28yKSkgKyBnZW9tX2xpbmUoKSArCiAgbGFicyh0aXRsZSA9ICLml6XmnKzjga7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/vvJpOQSDjgoLlkKvjgoAiKQpgYGAKCuOBn+OBoOOAgeOBk+OCjOOBoOOBqOOAgeacgOWIneOBruaWueOBr+ODh+ODvOOCv+OBjOOBquOBhOOBruOBp+OAgeOCsOODqeODleOBjOmAlOS4reOBi+OCieWni+OBvuOCiuOBvuOBmeOAguOBneOBk+OBp+OAgWRyb3BfbmEoY28yKSDjgpLlhaXjgozjgabjgIFjbzIg44Gu5YCk44GM44CBTkEg44Gn44Gv44Gq44GE44Go44GT44KN44Gg44GR6KGo56S644GX44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcihjb3VudHJ5ID09ICJKYXBhbiIpIHw+IGRyb3BfbmEoY28yKSB8PgogIGdncGxvdChhZXMoeWVhciwgY28yKSkgKyBnZW9tX2xpbmUoKSArIGxhYnModGl0bGUgPSAi5pel5pys44Gu5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP77yI44OI44Oz77yJ77yaTkEg44KS6Zmk44GPIikKYGBgCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcihjb3VudHJ5ID09ICJXb3JsZCIpIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGdncGxvdChhZXMoeWVhciwgZm9zc2lsKSkgKyBnZW9tX2xpbmUoKSArIGxhYnModGl0bGUgPSAi5LiW55WM44Gu5YyW55+z54eD5paZ44Gr44KI44KL55m66Zu76YeP77yI77yF77yJIikKYGBgCgrljJbnn7Pnh4Pmlpnjga7jg4fjg7zjgr/jga/jgIExOTcw5bm044GL44KJ44OH44O844K/44GM44GC44KL44GT44Go44KC5YiG44GL44KK44G+44GX44Gf44Gt44CC44OH44O844K/44Gu5pWw44KS5pyA5Yid44Gr6Kq/44G544Gf44Go44GN44Gu44GT44Go44KS5oCd44GE5Ye644GX44Gm44GP44Gg44GV44GE44CC54m544Gr44CB6Imy5LuY44GN44Gu5pa544CC6YGV44GG5p2h5Lu244Gn5o+P44GP44Go44CB5q+U6LyD44GM44Gn44GN44G+44GZ44CC44GE44KN44GE44KN44Gq44GT44Go44GM5YiG44GL44KK44G+44GZ44KI44CCCgrjgZPjgZPjgafjga/jgIHml6XmnKzjgajkuJbnlYzjgajlpInjgYjjgb7jgZfjgZ/jgYzjgIHlkIzjgZjlm73jgb7jgZ/jga/lnLDln5/jgafmr5TovIPjgZnjgovjga7jgYzpganliIfjgafjgZfjgofjgYbjgILjgYTjgY/jgaTjgoLjga7lm73jgoTjgIHlnLDln5/jgafjgb/jgabjgb/jgovjgZPjgajjga/jgYrjgZnjgZnjgoHjgafjgZnjgIIKCiMjIyMjIOWPguiAgwoK44Gn44Gv44CB5qyh44Gu44KI44GG44Gr44GX44Gf44KJ44Gp44GG44Gn44GX44KH44GG44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGdncGxvdChhZXMoeWVhciwgZm9zc2lsKSkgKyBnZW9tX2xpbmUoKSArCiAgbGFicyh0aXRsZSA9ICJGaWx0ZXIg44KS5L2/44KP44Gq44GL44Gj44Gf5pmC44Gu5oqY57ea44Kw44Op44OVIikKYGBgCgrjgarjgavjgYvlpInjgafjgZnjga3jgILjgZPjgozjga/jgIHjgZ3jgozjgZ7jgozjga7lubTjgavjgZ/jgY/jgZXjgpPjg4fjg7zjgr/jgYzjgYLjgaPjgabjgIHjgZ3jgozjgpLnt5rjgafjga/ntZDjgbnjgarjgYTjga7jgafjgIHjgZPjgYbjgarjgaPjgabjgZfjgb7jgYbjga7jgafjgZnjgILlrp/jga/jgIFnZW9tX2xpbmUg44KSIGdlb21fcG9pbnQg44Gr5aSJ44GI44KM44Gw44CB5aSa5bCR54q25rOB44Gv5YiG44GL44KK44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGdncGxvdChhZXMoeWVhciwgZm9zc2lsKSkgKyBnZW9tX3BvaW50KCkgKwogIGxhYnModGl0bGUgPSAiRmlsdGVyIOOCkuS9v+OCj+OBquOBi+OBo+OBn+aZguOBruaVo+W4g+WbsyIpCmBgYAoK44GT44KM44KS44CB5oqY57ea44Gn57WQ44G244GT44Go44Gv44Gn44GN44G+44Gb44KT44CC44G+44Gf44CBbWlzc2luZyB2YWx1ZSDjgoLjgZ/jgY/jgZXjgpPjgYLjgovjgojjgajjgarjgaPjgabjgYTjgb7jgZnjgILjgZ3jgZPjgafjgIHjgaHjgofjgaPjgajmlLnoia/jgZfjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGZvc3NpbCwgaW5jb21lKSB8PiAKICBnZ3Bsb3QoYWVzKHllYXIsIGZvc3NpbCwgY29sID0gZmFjdG9yKGluY29tZSwgbGV2ZWxzID0gSU5DT01FKSkpICsgZ2VvbV9wb2ludCgpICsKICBsYWJzKHRpdGxlID0gIuWbveWIpeOAgeaJgOW+l+ODrOODmeODq+WIpeOBruS4gOS6uuW9k+OBn+OCiuOBruWMluefs+eHg+aWmeOBp+OBrueZuumbu+WJsuWQiCIsIGNvbCA9ICJJbmNvbWUgTGV2ZWwiKQpgYGAKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGNvMiwgaW5jb21lKSB8PiAKICBnZ3Bsb3QoYWVzKHllYXIsIGNvMiwgY29sID0gZmFjdG9yKGluY29tZSwgbGV2ZWxzID0gSU5DT01FKSkpICsgZ2VvbV9wb2ludCgpICsKICBsYWJzKHRpdGxlID0gIuWbveWIpeOAgeaJgOW+l+ODrOODmeODq+WIpeOBruS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHjyIsIGNvbCA9ICJJbmNvbWUgTGV2ZWwiKQpgYGAKCuePvuaZgueCueOBp+OBr+OAgeS9leOCkuOChOOBo+OBpuOBhOOCi+OBi+OCj+OBi+OCieOBquOBhOOBi+OCguOBl+OCjOOBvuOBm+OCk+OBjOOAgeS6jOOBpOOBruOCsOODqeODleOBr+OAgeaVo+W4g+Wbs+OBruOBsuOBqOOBpOOBp+OAgeaJgOW+l+ODrOODmeODq+OBp+OAgeiJsuOCkuWkieOBiOOBpuOBhOOBvuOBmeOAguOBvuOBn+OAgeOBneOBruihqOekuuOBrumghuW6j+OCkuOAgeS9leOCguaMh+WumuOBl+OBquOBhOOBqOOAgeOCouODq+ODleOCoeODmeODg+ODiOmghuOBq+OBquOCi+OBruOBp+OAgeOBk+OBk+OBp+OBr+OAgeeJueWIpeOBq+OAgUlOQ09NRSDjgavnmbvpjLLjgZfjgZ/poIbluo/jgafooajnpLrjgZfjgabjgYTjgb7jgZnjgILjgYTjgo3jgYTjgo3jgarjgZPjgajjgpLopovjgabjgajjgovjgZPjgajjgoLjgafjgY3jgovjgajmgJ3jgYTjgb7jgZnjgILjgYLjgarjgZ/jga/jgIHjganjgpPjgarjgZPjgajjgavmsJfjgaXjgY3jgb7jgZfjgZ/jgYvjgIIKCuWun+OBr+OAgeaVo+W4g+Wbs+OBruaWueOBjOWfuuacrOeahOOBp+OBmeOAguOBneOBoeOCieOCkuWFiOOBq+WtpuOBtuaWueOBjOOCiOOBhOOCiOOBhuOBq+aAneOBhOOBvuOBmeOAguOBn+OBoOOAgeS4lueVjOmWi+eZuuaMh+aomeOBr+OAgeW5tOavjuOBruODh+ODvOOCv+OBq+OBquOBo+OBpuOBhOOBvuOBmeOBi+OCieOAgee1jOW5tOWkieWMluOCkuWFiOOBq+OBl+OBpuOBhOOBvuOBmeOAguS4iuOBq+abuOOBhOOBn+OCiOOBhuOBq+OAgee1jOmok+WkieWMluOCkuiqv+OBueOCi+aZguOBr+OAgeOBvuOBmuOBr+OAgeWbveOBquOBqeOCkuaMh+WumuOBmeOCi+W/heimgeOBjOOBguOCi+OBk+OBqOOCkuOAgeeQhuino+OBl+OBpuOBj+OBoOOBleOBhOOAggoKIyMjIyDlm73jgb7jgZ/jga/lnLDln5/jga7kuozjgaTku6XkuIrjga7lpInmlbDjgavplqLjgZnjgovntYzlubTlpInljJYKCuOBk+OBruOBn+OCgeOBq+OBr+OAgee4pumVt+OBruihqOOCkuS9v+OBhOOBvuOBmeOAggoK44Gf44Gg44CB44GT44Gu5L6L44Gn44Gv44CB5LqM44Gk44Gu5oyH5qiZ44Gu5Y2Y5L2N44GM44GT44Go44Gq44KL44Gf44KB44CB44GT44Gu44KI44GG44Gr6KGo56S644GZ44KL44Gu44GM6YGp5YiH44GL44Gp44GG44GL44Gv5LiN5piO44Gn44GZ44CCCgrooajpoYzjgYzplbfjgYTmmYLjga/jgIEnXG4nIOOCkuaMv+WFpeOBmeOCjOOBsOOAgeaUueihjOOBp+OBjeOBvuOBmeOAggoKYGBge3J9CmRmX2NvMmZvc19sb25nIHw+IGZpbHRlcihjb3VudHJ5ID09ICJKYXBhbiIpIHw+IGRyb3BfbmEodmFsdWUpIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCB2YWx1ZSwgY29sID0gbmFtZSkpICsgZ2VvbV9saW5lKCkgKyAKICBsYWJzKHRpdGxlID0gIuaXpeacrOOBruS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHj+OBqOOAgVxu5YyW55+z54eD5paZ44Gr44KI44KL55m66Zu744Gu5Ymy5ZCIIikKYGBgCgpgYGB7cn0KZGZfY28yZm9zX2xvbmcgfD4gZmlsdGVyKGNvdW50cnkgPT0gIldvcmxkIikgfD4gZHJvcF9uYSh2YWx1ZSkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIHZhbHVlLCBjb2wgPSBuYW1lKSkgKyBnZW9tX2xpbmUoKSArCiAgbGFicyh0aXRsZSA9ICLkuJbnlYzjga7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/jgajjgIFcbuWMluefs+eHg+aWmeOBq+OCiOOCi+eZuumbu+OBruWJsuWQiCIpCmBgYAoKIyMjIyMg5Y+C6ICDCgrlrp/jga/jgIHmjIfmqJnjga7mlbDjgYzkuozjgaTjgZDjgonjgYTjgafjgYLjgozjgbDjgIFgZGZfY28yZm9zYCDjgpLkvb/jgaPjgabjgIHmj4/jgY/jgZPjgajjgoLlj6/og73jgafjgZnjgILluqfmqJnou7jlkI3jgpLlpInmm7TjgZfjgabjgYTjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKGNvdW50cnkgPT0gIkphcGFuIikgfD4gZHJvcF9uYShjbzIsIGZvc3NpbCkgfD4KICBnZ3Bsb3QoYWVzKHggPSB5ZWFyKSkgKyBnZW9tX2xpbmUoYWVzKHkgPSBjbzIpLCBjb2wgPSAicmVkIikgKyAKICBnZW9tX2xpbmUoYWVzKHkgPSBmb3NzaWwpLCBjb2wgPSAiYmx1ZSIpICsKICBsYWJzKHRpdGxlID0gImRmX2NvMmZvcyDjgpLkvb/jgaPjgabkuIDjgaTkuIDjgaTjga7mjIfmqJnjgpLmj4/nlLsiLCB5ID0gImZvc3NpbCAoJSkgaW4gYmx1ZSwgY28yICh0b24pIGluIHJlZCIpCmBgYAoKY28yIOOBruaWueOBr+OAgeWkp+S9k+OAgTl0b24g44GQ44KJ44GE44Gq44Gu44Gn44CBN+WAjeOBkOOCieOBhOOBl+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoY291bnRyeSA9PSAiSmFwYW4iKSB8PiBkcm9wX25hKGNvMiwgZm9zc2lsKSB8PgogIGdncGxvdChhZXMoeCA9IHllYXIpKSArIGdlb21fbGluZShhZXMoeSA9IGNvMio3KSwgY29sID0gInJlZCIpICsgZ2VvbV9saW5lKGFlcyh5ID0gZm9zc2lsKSwgY29sID0gImJsdWUiKSArIGxhYnModGl0bGUgPSAiZGZfY28yZm9zIOOCkuS9v+OBo+OBpuS4gOOBpOS4gOOBpOOBruaMh+aomeOCkuaPj+eUu++8mmNvMiDkuIPlgI0iLCB5ID0gImZvc3NpbCAoJSkgaW4gYmx1ZSwgY28yICh0b24pIHggNyBpbiByZWQiKQpgYGAKCuOBqeOBhuOBp+OBmeOBi+OAgee4pui7uOOBr+OAgeWwkeOBl+WkieOBp+OBmeOBjOOAgeOBhOOBvuOBvuOBp+OBqOOBr+OAgemBleOBo+OBpuawl+OBpeOBj+OBk+OBqOOCguOBguOCiuOBvuOBmeOCiOOBreOAguS4oeaWueOBruODh+ODvOOCv+OBjOOBguOCi+OBqOOBk+OCjeOBoOOBkeOCkuihqOekuuOBleOBm+OBpuOBhOOBvuOBmeOAggoK57Ch5Y2Y44Gq44Gu44Gv44CBZGZfY28yZm9zX2xvbmcg44KS5L2/44Gj44Gf5pa544Gn44GX44Gf44GM44CBZGZfY28yZm9zIOOCkuS9v+OBo+OBn+aWueOCguOAgeS9v+OBiOOBneOBhuOBquOBk+OBqOOBjOWIhuOBi+OCiuOBvuOBl+OBn+OAggoK6Imy44Gu5Y+W44KK5omx44GE44KC44GE44KN44GE44KN44Go44GC44KK44G+44GZ44GM44CB44Gd44KM44Gv44CB5Y+C6ICD5paH54yu44Gq44Gp44KS5Y+C54Wn44GX44Gm44GP44Gg44GV44GE44CCCgojIyMjIOODh+ODvOOCv+OBrueiuuiqjQoK44Kw44Op44OV44GM6KGo56S644GV44KM44Gq44GL44Gj44Gf44KK44CB5pyf5b6F44GX44Gf44KC44Gu44Gn44Gv44Gq44GE5pmC44Gv44Gd44Gu44OH44O844K/44KS6KaL44Gm44G/44G+44GX44KH44GG44CCCumAlOS4reOBi+OCieOAgWNvMiDjgaggZm9zc2lsIOOBruS4oeaWueOBruODh+ODvOOCv+OBjOOBguOCi+OBk+OBqOOBjOOCj+OBi+OCiuOBvuOBmeOAguS4iuOBruaWueOBp+OAgeWQhOW5tOOBruODh+ODvOOCv+OBruaVsOOBruajkuOCsOODqeODleOBp+OCguS4gOiIrOeahOWCvuWQkeOCkueiuuiqjeOBl+OBpuOBguOCiuOBvuOBmeOBreOAggoKYGBge3J9CmRmX2NvMmZvc19sb25nIHw+IGZpbHRlcihjb3VudHJ5ID09ICJKYXBhbiIpIHw+IGRyb3BfbmEodmFsdWUpCmBgYAoKIyMjIyDjgYTjgY/jgaTjgYvjga7lm73jgb7jgZ/jga/lnLDln5/jga7kuozjgaTku6XkuIrjga7lpInmlbDjgavplqLjgZnjgovntYzlubTlpInljJYKCnJlZ2lvbnMg44Gv44CB5Zu95ZCN44Gn5a6a576p44GX44Gm44GE44G+44GX44Gf44GL44KJ44CBZmlsdGVyKGNvdW50cnkgJWluJSByZWdpb25zKSDjgafpgbjmip7jgZfjgabjgYTjgb7jgZnjgILmrKHjga7jgIFBU0VBTiDjga/jgIFpc28yYyDjgaflrprnvqnjgZfjgabjgYTjgb7jgZfjgZ/jgYvjgonjgIFmaWx0ZXIoaXNvMmMgJWluJSBBU0VBTikg44Go44GX44Gm44GE44G+44GZ44CC6YGV44GE44KS55CG6Kej44GX44Gm44GP44Gg44GV44GE44CCCgpmaWx0ZXIg44Gu5L2/44GE5pa544CB5LiA44Gk44Gu5Zu944KE5Zyw5Z+f44Gu44Go44GN44Gv44CBZmlsdGVyKGNvdW50cnkgPT0gIkphcGFuIiksIGZpbHRlcihjb3VudHJ5ID09ICJXb3JsZCIpIOOBp+OBl+OBn+OAguS7iuW6puOBr+OAgSVpbiUg44KS44Gk44GL44GE44CB44Gd44Gu44GC44Go44Gu44Kw44Or44O844OX44Gr5YWl44Gj44Gm44GE44KL44KC44Gu44KS6YG45oqe44GX44Gm44GE44G+44GZ44CCCgrlj4LogIPvvJoKYGBgCnJlZ2lvbnMgPC0gYygiU291dGggQXNpYSIsICJFdXJvcGUgJiBDZW50cmFsIEFzaWEiLCAiTWlkZGxlIEVhc3QgJiBOb3J0aCBBZnJpY2EiLCAKIkVhc3QgQXNpYSAmIFBhY2lmaWMiLCAiU3ViLVNhaGFyYW4gQWZyaWNhIiwgIkxhdGluIEFtZXJpY2EgJiBDYXJpYmJlYW4iLCAKIk5vcnRoIEFtZXJpY2EiKQoKQVNFQU4gPC0gYygiQk4iLCAiS0giLCAiSUQiLCAiTEEiLCAiTVkiLCAiTU0iLCAiUEgiLCAiU0ciLCAiVk4iKQpgYGAKCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcihjb3VudHJ5ICVpbiUgcmVnaW9ucykgfD4gZHJvcF9uYShjbzIpIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCBjbzIsIGNvbCA9IGNvdW50cnkpKSArIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlID0gIuWcsOWfn+OBlOOBqOOBruS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHjyIpCmBgYAoK6YG45oqe44Gv44CBaXNvMmMg44Gn44GX44Gm44GE44G+44GZ44GM44CBY29sID0gY291bnRyeSDjgajjgZfjgabjgYLjgovjga7jgafjgIHlm73lkI3jgYzooajnpLrjgZXjgozjgabjgYTjgb7jgZnjgILjgZPjga7mrKHjga4g5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44Gu5pa544Gu44Kw44Op44OV44Gn44Gv44CB44Gd44KM44KS44CBaXNvMmMg44Gr5aSJ5pu044GX44Gm44GE44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcihpc28yYyAlaW4lIEFTRUFOKSB8PiBkcm9wX25hKGZvc3NpbCkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIGZvc3NpbCwgY29sID0gY291bnRyeSkpICsgZ2VvbV9saW5lKCkgICsKICBsYWJzKHRpdGxlID0gIkFTRUFOIOOBruWMluefs+eHg+aWmeOBq+OCiOOCi+eZuumbu+WJsuWQiCIpCmBgYArjgrDjg6njg5Xjga7jgrnjg5rjg7zjgrnjgYznorrkv53jgafjgY3jgovliKnngrnjgoLjgYLjgorjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKGlzbzJjICVpbiUgQVNFQU4pIHw+IGRyb3BfbmEoY28yKSB8PgogIGdncGxvdChhZXMoeWVhciwgY28yLCBjb2wgPSBpc28yYykpICsgZ2VvbV9saW5lKCkgICsKICBsYWJzKHRpdGxlID0gIkFTRUFO77yIaXNvMmMg6KGo56S677yJ44Gu5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YePIikKYGBgCgojIyMjIOOBhOOBj+OBpOOBi+OBruWbveOBvuOBn+OBr+WcsOWfn+OBruS6jOOBpOS7peS4iuOBruWkieaVsOOBq+mWouOBmeOCi+e1jOW5tOWkieWMlgoK5LiK44Gr44KC5pu444GE44Gf44KI44GG44Gr44CB5Y2Y5L2N44GM55Ww44Gq44KL44Gu44Gn44CB6YGp5YiH44GL44Gv55aR5ZWP44Gn44GZ44GM44CB5ZCM5pmC44Gr44G/44KL44GT44Go44Gv44Gn44GN44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zX2xvbmcgfD4gZmlsdGVyKGNvdW50cnkgJWluJSByZWdpb25zKSB8PiBkcm9wX25hKHZhbHVlKSB8PgogIGdncGxvdChhZXMoeWVhciwgdmFsdWUsIGNvbCA9IGNvdW50cnksIGxpbmV0eXBlID0gbmFtZSkpICsgZ2VvbV9saW5lKCkgKwogIGxhYnModGl0bGUgPSAi5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44GoXG7ljJbnn7Pnh4Pmlpnjgavjgojjgovnmbrpm7vlibLlkIgiKQpgYGAKCmBgYHtyfQpkZl9jbzJmb3NfbG9uZyB8PiBmaWx0ZXIoY291bnRyeSAlaW4lIFNBQ1UpIHw+IGRyb3BfbmEodmFsdWUpIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCB2YWx1ZSwgY29sID0gY291bnRyeSwgbGluZXR5cGUgPSBuYW1lKSkgKyBnZW9tX2xpbmUoKSArCiAgbGFicyh0aXRsZSA9ICLljZfpg6jjgqLjg5Xjg6rjgqvplqLnqI7lkIznm5/jga7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/jgahcbuWMluefs+eHg+aWmeOBq+OCiOOCi+eZuumbu+WJsuWQiCIpCmBgYAoKIyMg5YiG5biDCgrjgZ3jgozjgZ7jgozjga7mjIfmqJnjga7liIbluIPjgpLjgb/jgb7jgZnjgILmr5TovIPjgZnjgovjgavjga/jgIHnrrHjgbLjgZLlm7PjgoLmnInlirnjgafjgZnjgIIKCiMjIyDjg5Ljgrnjg4jjgrDjg6njg6AKCmJpbnMg5Yy65YiG44GR44Gu5pWw44CBYmlud2lkdGgg5Yy65YiG5bmF44KS5aSJ5pu044GX44Gm44CB6YGp5YiH44Gr6KGo56S644GV44KM44KL44KI44GG44Gr44GX44G+44GZ44CC5L2V44KC5pu444GE44Gm44GE44Gq44GE44Go44CB5Yid5pyf6Kit5a6a44Gn44Gv44CBYmlucyA9IDMwIOOBq+OBquOBo+OBpuOBhOOBvuOBmeOAggoKIyMjIyDkvosKCueJueWumuOBruW5tOOBq+OAgeS4gOWumuOBruevhOWbsuOBruOBqOOBk+OCjeOBq+OBr+OBhOOCi+OAgeWbveOBruaVsO+8iOW6puaVsOWIhuW4g++8ieOCkuihqOOBl+OBvuOBmeOAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGZpbHRlcih5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEoY28yKSB8PgogIGdncGxvdChhZXMoY28yKSkgKyBnZW9tX2hpc3RvZ3JhbSgpICsKICBsYWJzKHRpdGxlID0gIjIwMjDlubTjga7lm73liKXjga7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/jga7jg5Ljgrnjg4jjgrDjg6njg6AiKQpgYGAKCuWMuuWIhuOBkeOBruWAi+aVsOOCkjEw5YCLIGJpbnMgPSAxMCDjgavlpInmm7TjgZnjgovjgajmrKHjga7jgojjgYbjgavjgarjgorjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciA9PSAyMDIwKSB8PiBkcm9wX25hKGNvMikgfD4KICBnZ3Bsb3QoYWVzKGNvMikpICsgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDEwKSArCiAgbGFicyh0aXRsZSA9ICIyMDIw5bm044Gu5Zu95Yil44Gu5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44Gu44OS44K544OI44Kw44Op44OgIikKYGBgCgrljLrliIbjgZHjga7luYXjgpIgYmlud2lkdGggPSAyIOOBqOOBmeOCi+OBqOS4i+OBruOCiOOBhuOBquOCsOODqeODleOBq+OBquOCiuOBvuOBmeOAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGZpbHRlcih5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEoY28yKSB8PgogIGdncGxvdChhZXMoY28yKSkgKyBnZW9tX2hpc3RvZ3JhbShiaW53aWR0aCA9IDIpICsKICBsYWJzKHRpdGxlID0gIjIwMjDlubTjga7lm73liKXjga7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/jga7jg5Ljgrnjg4jjgrDjg6njg6AiKQpgYGAKCuWcsOWfn+WQjeOCkuiJsuOBp+WKoOOBiOOCi+OBk+OBqOOCguWPr+iDveOBp+OBmeOAguWhl+OCiuOBpOOBtuOBl+OBquOBruOBp+OAgWZpbGwg44KS5L2/44Gj44Gm44GE44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZmlsdGVyKHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShjbzIpIHw+CiAgZ2dwbG90KGFlcyhjbzIsIGZpbGwgPSByZWdpb24pKSArIGdlb21faGlzdG9ncmFtKGJpbnMgPSAxMCkgKwogIGxhYnModGl0bGUgPSAiMjAyMOW5tOOBruWbveWIpeOBruS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHj+OBruODkuOCueODiOOCsOODqeODoFxu5Zyw5Z+f5oOF5aCx44KS5Yqg44GI44Gf44KC44GuIikKYGBgCgrlooPnm67jgYzjgb/jgavjgY/jgYTjgojjgYbjgavmgJ3jgYbjga7jgafjgIHjgo/jgZ/jgZfjga/jgIHpu5LmnqDjga7ntLDjgoHjga7nt5rjgpLlhaXjgozjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciA9PSAyMDIwKSB8PiBkcm9wX25hKGNvMikgfD4KICBnZ3Bsb3QoYWVzKGNvMiwgZmlsbCA9IHJlZ2lvbikpICsgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDEwLCBjb2wgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAwLjIpKwogIGxhYnModGl0bGUgPSAiMjAyMOW5tOOBruWbveWIpeOBruS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHj+OBruODkuOCueODiOOCsOODqeODoFxu5Zyw5Z+f5oOF5aCx44KS5Yqg44GI44Gf44KC44GuIikKYGBgCuW3puOBq+WBj+OBo+OBpuOBhOOCi+OBruOBp+OAgUxPRyDooajnpLrjgpLkvb/jgYbjgZPjgajjgoLjgbLjgajjgaTjgafjgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciA9PSAyMDIwKSB8PiBkcm9wX25hKGNvMikgfD4KICBnZ3Bsb3QoYWVzKGNvMiwgZmlsbCA9IHJlZ2lvbikpICsgCiAgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDEwLCBjb2wgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAwLjIpICsgc2NhbGVfeF9sb2cxMCgpKwogIGxhYnModGl0bGUgPSAiMjAyMOW5tOOBruWbveWIpeOBruS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHj+OBruODkuOCueODiOOCsOODqeODoFxu5Zyw5Z+f5oOF5aCx44KS5Yqg44GI44Gf44KC44GuIiwgeCA9ICJjbzIgKHRvbi9wZXJzb24sIGxvZzEwIHNjYWxlKSIpCmBgYAoK44KC44GG5LiA44Gk44Gu5aSJ5pWw44CBZm9zc2lsIOOBq+OBpOOBhOOBpuOCguOChOOBo+OBpuOBv+OBpuOBj+OBoOOBleOBhOOAggoKIyMjIyMg5Y+C6ICDCgrlubTjgpLjgIEyMDIwIOOBq+OBl+OBvuOBl+OBn+OBjOOAgWZvc3NpbCDjga7jgajjgY3jgavjgoLlkIzjgZjjgojjgYbjgavjgIEyMDIwIOOBq+OBmeOCi+OBqOOBqeOBhuOBquOCi+OBp+OBl+OCh+OBhuOBi+OAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGZpbHRlcih5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGdncGxvdChhZXMoZm9zc2lsKSkgKyBnZW9tX2hpc3RvZ3JhbShiaW5zID0gMTApICsKICBsYWJzKHRpdGxlID0gIjIwMjDlubTjga7ljJbnn7Pnh4Pmlpnjgavjgojjgovnmbrpm7vlibLlkIgiKQpgYGAKCuS9leOCguePvuOCjOOBvuOBm+OCk+OAguS9leOBjOWVj+mhjOOBquOBruOBp+OBl+OCh+OBhuOAguS4gOeVquacgOWIneOBq+OAgeODh+ODvOOCv+OBruaVsOOCkuOBv+OBvuOBl+OBn+OCiOOBreOAgueJueOBq+OAgeOCq+ODqeODvOOBruaWueOCkuaAneOBhOWHuuOBl+OBpuOBj+OBoOOBleOBhOOAgueiuuOBi+OCgeOBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGZpbHRlcih5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEoZm9zc2lsKQpgYGAKCjIwMjDjgavjgZnjgovjgajjgIFOQSDjgafjgarjgYTjg4fjg7zjgr/jga/jgarjgYTjgZPjgajjgYznorroqo3jgafjgY3jgb7jgZnjgILjgafjga/jgIHkvZXlubTjgarjgonlpKfkuIjlpKvjgafjgZfjgofjgYbjgYvjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciA9PSAyMDE1KSB8PiBkcm9wX25hKGZvc3NpbCkgfD4KICBnZ3Bsb3QoYWVzKGZvc3NpbCkpICsgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDEwKSArCiAgbGFicyh0aXRsZSA9ICIyMDE15bm044Gu5YyW55+z54eD5paZ44Gr44KI44KL55m66Zu75Ymy5ZCIIikKYGBgCgrjgrDjg6njg5Xjga/nj77jgozjgb7jgZfjgZ/jgYzjgIFiaW5zIOOChOOAgWJpbndpZHRoIOOBr+OBk+OCjOOBjOmBqeWIh+OBp+OBl+OCh+OBhuOBi+OAguaMh+aomeOBq+OCiOOBo+OBpuOAgeWkieOBiOOBquOBhOOBqOOBhOOBkeOBvuOBm+OCk+OBreOAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGZpbHRlcih5ZWFyID09IDIwMTUpIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGdncGxvdChhZXMoZm9zc2lsLCBmaWxsID0gaW5jb21lKSkgKyBnZW9tX2hpc3RvZ3JhbShiaW53aWR0aCA9IDEwLCBjb2wgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAwLjIpICsKICBsYWJzKHRpdGxlID0gIjIwMTXlubTjga7ljJbnn7Pnh4Pmlpnjgavjgojjgovnmbrpm7vlibLlkIgsIOaJgOW+l+ODrOODmeODq+OCkuWQq+OCgCIpCmBgYAoK44Gp44KT44Gq44GT44Go44GM44KP44GL44KK44G+44GZ44GL44CCCgojIyMg5qOS44Kw44Op44OVCgrjgqvjg4bjgrTjg6rjg7zlpInmlbDvvIjml6XmnKzoqp7jgafjga/lkI3nm67lpInmlbDjgajjgYTjgYbjgZPjgajjgbDjgoLkvb/jgo/jgozjgb7jgZnvvInjgajjgIHjgZ3jga7lgKTvvIhudW1lcmljYWwgdmFsdWXvvInjgYzkuI7jgYjjgonjgozjgabjgYTjgovjgajjgY3jgavkvb/jgYTjgb7jgZnjgILjg4fjg7zjgr/jga7mlbDjga7mmYLjgavkvb/jgaPjgZ/jgIFnZW9tX2JhciDjgoLkvLzjgabjgYTjgb7jgZnjgYzjgIHjgZPjgaHjgonjga/jgIHjgqvjg4bjgrTjg6rjg7zlpInmlbDjgoTpo5vjgbPpo5vjgbPjga7lgKTvvIhkaXNjcmV0ZSBudW1lcmljYWwgdmFyaWFibGXvvInjga7mlbDlgKTlpInmlbDjgarjganjga7jgIHmlbDjgpLmlbDjgYjjgb7jgZnjgIIKCiMjIyMg5L6LCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcih5ZWFyID09IDIwMTUsIGNvdW50cnkgJWluJSByZWdpb25zKSB8PiBkcm9wX25hKGNvMikgfD4KICBnZ3Bsb3QoYWVzKGNvdW50cnksIGNvMikpICsgZ2VvbV9jb2woKSArCiAgbGFicyh0aXRsZSA9IuWcsOWfn+WIpeS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHjyIsIHggPSAiIikKYGBgCgrph43jgarjgorlkIjjgaPjgabjgZfjgb7jgYbjga7jgafjgIHou7jjgpLlpInjgYjjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKHllYXIgPT0gMjAxNSwgY291bnRyeSAlaW4lIHJlZ2lvbnMpIHw+IGRyb3BfbmEoY28yKSB8PgogIGdncGxvdChhZXMoY291bnRyeSwgY28yKSkgKyBnZW9tX2NvbCgpICsgY29vcmRfZmxpcCgpICsKICBsYWJzKHRpdGxlID0i5Zyw5Z+f5Yil5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YePIiwgeCA9ICIiKQpgYGAKCuWMluefs+eHg+aWmeOBp+OBrueZuumbu+WJsuWQiOOBr+OBqeOBhuOBp+OBl+OCh+OBhuOBi+OAguasoeOBruOCsOODqeODleOBp+OBr+OAgeaDheWgseOBr+WKoOOBiOOBpuOBhOOBvuOBm+OCk+OBjOOAgeWhl+OCi+iJsuOCkuWkieOBiOOBpuOBguOCiuOBvuOBmeOAguOBp+OCguOAgeWHoeS+i+OBr+S4jeimgeOBp+OBmeOCiOOBreOAgnRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikg44Go44GX44G+44GZ44CCCgpjb3VudHJ5IOOBr+OAgXJlZ2lvbnMg44Go44GZ44KL5omL44KC44GC44KK44G+44GZ44GM44CB5raI44GX44Gm44GK44GE44Gm44KC6Imv44GV44Gd44GG44Gn44GZ44CC5rOo5oSP44GM5b+F6KaB44Gq44Gu44Gv44CBY29vcmRfZmxpcCDjgpLjgZnjgovliY3jga7luqfmqJnjgarjga7jgafjgIF4IOOCkua2iOOBl+OBvuOBmeOAgnRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICdub25lIikKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKHllYXIgPT0gMjAxNSwgY291bnRyeSAlaW4lIHJlZ2lvbnMpIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGdncGxvdChhZXMoY291bnRyeSwgZm9zc2lsLCBmaWxsID0gY291bnRyeSkpICsgZ2VvbV9jb2woKSArIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKHllYXIgPT0gMjAxNSwgY291bnRyeSAlaW4lIHJlZ2lvbnMpIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGdncGxvdChhZXMoY291bnRyeSwgZm9zc2lsLCBmaWxsID0gY291bnRyeSkpICsgZ2VvbV9jb2woKSArIGNvb3JkX2ZsaXAoKSAgKwogIGxhYnModGl0bGUgPSLlnLDln5/liKXljJbnn7Pnh4Pmlpnjgavjgojjgovnmbrpm7vph4/vvIgl77yJIiwgeCA9ICIiLCB5ID0gIiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKZmlsbO+8iOWhl+OCiuOBpOOBtuOBl++8ieOCkuS9v+OBhOOBvuOBl+OBn+OBjOOAgWNvbCDjgaDjgajjganjgYbjgarjgovjga7jgafjgZfjgofjgYbjgYvjgILjgYLjgb7jgorpganliIfjgaDjgajjga/mgJ3jgYjjgb7jgZvjgpPjgILjgZfjgYvjgZfjgIHjg5Ljgrnjg4jjgrDjg6njg6Djga7jgajjgY3jga7jgojjgYbjgavjgIHmnqDjgpLpu5LjgavjgZnjgovjgZPjgajjga/jgIHlpJrlsJHmhI/lkbPjgYzjgYLjgovjgYvjgoLjgZfjgozjgb7jgZvjgpPjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKHllYXIgPT0gMjAxNSwgY291bnRyeSAlaW4lIHJlZ2lvbnMpIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGdncGxvdChhZXMoY291bnRyeSwgZm9zc2lsLCBjb2wgPSBjb3VudHJ5KSkgKyBnZW9tX2NvbCgpICsgY29vcmRfZmxpcCgpICsgCiAgbGFicyhjb2wgPSAiIikKYGBgCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcih5ZWFyID09IDIwMTUsIGNvdW50cnkgJWluJSByZWdpb25zKSB8PiBkcm9wX25hKGZvc3NpbCkgfD4KICBnZ3Bsb3QoYWVzKGNvdW50cnksIGZvc3NpbCwgZmlsbCA9IGNvdW50cnkpKSArIGdlb21fY29sKGNvbCA9ICJibGFjayIsIGxpbmV3aWR0aCA9IDAuMikgKwogIGNvb3JkX2ZsaXAoKSArIGxhYnModGl0bGUgPSAi5Zyw5Z+f5Yil5YyW55+z54eD5paZ44Gr44KI44KL55m66Zu76YeP77yIJe+8iSIsIHggPSAiIiwgeSA9ICIiKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgojIyMjIyDlj4LogIMKCuWun+OBr+OAgee4puOBruOBvuOBvuOBq+OBmeOCi+OBk+OBqOOCguWPr+iDveOBp+OBmeOAguOBn+OBoOOAgeOBneOCjOOBq+OBr+OAgXN0cm5nciDjgajjgYTjgYbjgIF0aWR5dmVyc2Ug44Gu5LiA6YOo44Gn44Gv44GC44KK44G+44GZ44GM44CB6Kqt44G/6L6844G+44KM44Gm44GE44Gq44GE44CB44OR44OD44Kx44O844K444Gu5ZG95Luk44KS5L2/44GE44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcih5ZWFyID09IDIwMTUsIGNvdW50cnkgJWluJSByZWdpb25zKSB8PiBkcm9wX25hKGZvc3NpbCkgfD4KICBnZ3Bsb3QoYWVzKGNvdW50cnksIGZvc3NpbCwgZmlsbCA9IGNvdW50cnkpKSArIGdlb21fY29sKGNvbCA9ICJibGFjayIsIGxpbmV3aWR0aCA9IDAuMikgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gZnVuY3Rpb24oeCkgc3RyaW5ncjo6c3RyX3dyYXAoeCwgd2lkdGggPSAxNSkpICsKICBsYWJzKHRpdGxlID0gIuWcsOWfn+WIpeWMluefs+eHg+aWmeOBq+OCiOOCi+eZuumbu+mHj++8iCXvvIkiLCB4ID0gIiIsIHkgPSAiIikgKyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKIyMjIyDjg4fjg7zjgr/jgYzljYHliIbjgYLjgovmnIDov5Hjga7lubTjga7lgKTjga4xMOOCq+WbveOBruWApOOBruajkuOCsOODqeODlQoK6KGo56S644Gu6aCG5bqP44KS5Yi25b6h44GZ44KL44Gu44Gr44Gv44CBZmFjdG9yIOOBqOOBhOOBhuOCguOBruOCkuS9v+OBhOOBvuOBmeOAguOCq+ODhuOCtOODquODvOWkieaVsOOBq+mghuW6j+OCkuOBpOOBkeOCi+OCguOBruOBp+OBmeOAguaZrumAmuOBr+OAgWBmYWN0b3IodmFyLCBsZWdlbmRzID0gYyh2YXIg44GuIOmghuW6jykpYCDjgajjgZfjgb7jgZnjgILjgZ/jgaDjgIHln7rmnKznmoTjgarpoIbluo/ku5jjgpLliLblvqHjgZnjgovjgZPjgajjga/jgIHlgIvliKXjgavlrprnvqnjgZfjgarjgY/jgabjgoLlj6/og73jgafjgZnjgILjgZ3jgozjgYzjgIFmY3RfaW5vcmRlciDjgafjgIHjg4fjg7zjgr/jgavnj77jgozjgovpoIbluo/jgavooajnpLrjgZfjgb7jgZnjgILjgZPjgZPjgafjga/jgIHlpKfjgY3jgYTpoIbjgavooajnpLrjgZXjgozjgb7jgZnjgILjgZ3jgozjgpLjgIFmY3RfcmV2IOOBp+mAhuOBq+OBl+OBpuOBhOOBvuOBmeOAgmZjdF9yZXYg44KS44Go44Gj44Gf44CB44GT44Gu5qyh44Gu5L6L44KS5q+U6LyD44GX44Gm44GP44Gg44GV44GE44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZmlsdGVyKHllYXIgPT0gMjAxNSkgfD4gZHJvcF9uYShjbzIpIHw+CiAgYXJyYW5nZShkZXNjKGNvMikpIHw+IHNsaWNlX2hlYWQobiA9IDEwKSB8PgogIGdncGxvdChhZXMoZmN0X3JldihmY3RfaW5vcmRlcihjb3VudHJ5KSksIGNvMikpICsgZ2VvbV9jb2woKSArIGNvb3JkX2ZsaXAoKSArIGxhYnModGl0bGUgPSAi5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44GM5aSa44GE6aCGIiwgeCA9ICIiKQpgYGAKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciA9PSAyMDE1KSB8PiBkcm9wX25hKGNvMikgfD4KICBhcnJhbmdlKGRlc2MoY28yKSkgfD4gc2xpY2VfaGVhZChuID0gMTApIHw+CiAgZ2dwbG90KGFlcyhmY3RfaW5vcmRlcihjb3VudHJ5KSwgY28yKSkgKyBnZW9tX2NvbCgpICsgY29vcmRfZmxpcCgpICsgbGFicyh0aXRsZSA9ICLkuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/jgYzlpJrjgYTpoIYiLCB4ID0gIiIpCmBgYAoK5Zyw5Z+f44GT44Go44Gr6Imy5YiG44GR44GZ44KL44GT44Go44KC5Y+v6IO944Gn44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZmlsdGVyKHllYXIgPT0gMjAxNSkgfD4gZHJvcF9uYShjbzIpIHw+CiAgYXJyYW5nZShkZXNjKGNvMikpIHw+IHNsaWNlX2hlYWQobiA9IDEwKSB8PgogIGdncGxvdChhZXMoZmN0X3JldihmY3RfaW5vcmRlcihjb3VudHJ5KSksIGNvMiwgZmlsbCA9IHJlZ2lvbikpICsgZ2VvbV9jb2woKSArIGNvb3JkX2ZsaXAoKSArIGxhYnModGl0bGUgPSAi5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44GM5aSa44GE6aCGIiwgeCA9ICIiKQpgYGAKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciA9PSAyMDE1KSB8PiBkcm9wX25hKGZvc3NpbCkgfD4KICBhcnJhbmdlKGZvc3NpbCkgfD4gc2xpY2VfaGVhZChuID0gMTApIHw+CiAgZ2dwbG90KGFlcyhmY3RfcmV2KGZjdF9pbm9yZGVyKGNvdW50cnkpKSwgZm9zc2lsKSkgKyBnZW9tX2NvbCgpICsgY29vcmRfZmxpcCgpICArIGxhYnModGl0bGUgPSAi5YyW55+z54eD5paZ44Gr44KI44KL55m66Zu75Ymy5ZCI44Gu5bCR44Gq44GE6aCGIiwgeCA9ICIiKQpgYGAKCuaJgOW+l+ODrOODmeODq+OBp+iJsuWIhuOBkeOCkuOBl+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CmRmX2NvMmZvcyB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGZpbHRlcih5ZWFyID09IDIwMTUpIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGFycmFuZ2UoZm9zc2lsKSB8PiBzbGljZV9oZWFkKG4gPSAxMCkgfD4KICBnZ3Bsb3QoYWVzKGZjdF9yZXYoZmN0X2lub3JkZXIoY291bnRyeSkpLCBmb3NzaWwsIGZpbGwgPSBpbmNvbWUpKSArIGdlb21fY29sKCkgKyBjb29yZF9mbGlwKCkgICsgbGFicyh0aXRsZSA9ICLljJbnn7Pnh4Pmlpnjgavjgojjgovnmbrpm7vlibLlkIjjga7lsJHjgarjgYTpoIYiLCB4ID0gIiIpCmBgYAoKIyMjIOeuseOBsuOBkuWbs++8iEJveHBsb3TvvIkKCuOCq+ODhuOCtOODquWkieaVsO+8iGNvdW50cnksIHJlZ2lvbiwgaW5jb21lIOOBquOBqe+8ieavjuOBruWIhuW4g+OCkuaPj+OBjwoKLSAgIGBnZ3Bsb3QoYWVzKGNhdGVnb3JpY2FsX3ZhciwgbnVtZXJpY2FsX3ZhcikpICsgZ2VvbV9ib3hwbG90KClgCgotICAgYGdncGxvdChhZXMocmVnaW9uLCBlbGVjdHJpY2l0eV91cmJhbikpICsgZ2VvbV9ib3hwbG90KClgCgotICAgYGdncGxvdChhZXMoaW5jb21lLCBlbGVjdHJpY2l0eV9ydXJhbCkpICsgZ2VvbV9ib3hwbG90KClgCgotICAgYHBpdm90X2xvbmdlcihjb2xzID0gYyh2YXIxLCB2YXIyKSkgfD4gZ2dwbG90KGFlcyhuYW1lLCB2YWx1ZSkpICsgZ2VvbV9ib3hwbG90KClgCgotICAgeWVhciDjga/jgIHmlbTmlbDjgarjga7jgafmlbDlgKTlpInmlbDvvIhudW1lcmljYWwgdmFyaWFibGXvvInjgILjgZPjgozjgpIg44Kr44OG44K044Oq44O85aSJ5pWw44Go44GX44Gm5omx44GG44Gf44KB44Gr44Gv44CBYGZhY3Rvcih5ZWFgcikg44KS5L2/44GG44CCYHhgIOi7uOOBruODqeODmeODq+OBquOBqeOBr+OBguOBqOOBi+OCieS/ruato+OBjOW/heimgeOAggoKICAgIC0gICBgZmlsdGVyKHllYXIgJWluJSBjKDE5NjAsMTk5MCwyMDIwKSl8PiBnZ3Bsb3QoYWVzKGZhY3Rvcih5ZWFyKSwgdmFyKSkgKyBnZW9tX2JveHBsb3QoKWAKCiMjIyMg5L6LCgrlm73jgoTlnLDln5/jga/jgqvjg4bjgrTjg6rjg7zlpInmlbDjgafjgZnjgYvjgonjgIHlnLDln5/liKXjgafjgIHkuIDkurrjgYLjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/jgpLnrrHjgbLjgZLlm7Pjgavmm7jjgYTjgabjgb/jgb7jgZfjgofjgYbjgILjgZPjgZPjgafjga/jgIFkZl9jbzJmb3NfbG9uZyDjgpLkvb/jgaPjgabjgYTjgb7jgZnjgYzjgIHjgZPjga7jgojjgYbjgarnrrHjgbLjgZLlm7Pjga/jgIFkZl9jbzJmb3Mg44Gn44KC5ZCM5qeY44Gr5o+P44GR44G+44GZ44CC44Gf44Gg44CB44Kz44O844OJ44Gv55Ww44Gq44KK44G+44GZ44GL44KJ5rOo5oSP44GX44Gm44GP44Gg44GV44GE44CCCgpkZl9jbzJmb3NfbG9uZyDjga7jgajjgY3jga/jgIFuYW1lIOOBq+OAgWNvMiDjgaggZm9zc2lsIOOBjOWQq+OBvuOCjOOBpuOBhOOBvuOBmeOBi+OCieOAgeOBvuOBmuOAgWNvMiDjgpLpgbjmip7jgZfjgb7jgZnjgILjgrDjg6njg5XjgpLmm7jjgY/mmYLjga/jgIF2YWx1ZSDjgavjgYLjgovlgKTjgpLkvb/jgYTjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3NfbG9uZyB8PiBmaWx0ZXIobmFtZSA9PSAiY28yIikgfD4gCiAgZmlsdGVyKHJlZ2lvbiAhPSAiQWdncmVnYXRlcyIpIHw+IGRyb3BfbmEodmFsdWUpIHw+CiAgZ2dwbG90KGFlcyhyZWdpb24sIHZhbHVlKSkgKyBnZW9tX2JveHBsb3QoKSArIGNvb3JkX2ZsaXAoKSArCiAgbGFicyh0aXRsZSA9ICLlnLDln5/jgZTjgajjga7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/vvIjjg4jjg7PvvIkiKQpgYGAKCuS7iuW6puOBr+OAgWRmX2NvMmZvcyDjgpLkvb/jgYTjgb7jgZnjgILjgZPjgaHjgonjgafjga/jgIFmaWx0ZXIocmVnaW9uICE9ICJBZ2dyZWdhdGVzIikg44Go44GX44Gm44GE44G+44GZ44GM44CBUkVHSU9OIOOCkuS9v+OBhuOBpuOCguOBguOCiuOBvuOBmeOAguOBneOCjOOBr+OAgeasoeOBq+ekuuOBl+OBvuOBmeOAguWun+OBr+OAgeasoeOBruaWueOBjOato+eiuuOBp+OBmeOAguOBneOCjOOBr+OAgeOBoeOCh+OBo+OBqOe0sOOBi+OBhOipseOBp+OBmeOBjOOAgeWcsOWfn+WQjeOBjOOAgeWFpeOBo+OBpuOBhOOBquOBhOWbveOBjOOBguOCi+OBruOBp+OBmeOAguOBneOBruOBk+OBqOOCguOBguOBo+OBpuOAgVJFR0lPTiDjgpLmnIDliJ3jgavlrprnvqnjgZfjgabjgYLjgorjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKHJlZ2lvbiAhPSAiQWdncmVnYXRlcyIpIHw+IGRyb3BfbmEoZm9zc2lsKSB8PgogIGdncGxvdChhZXMocmVnaW9uLCBmb3NzaWwpKSArIGdlb21fYm94cGxvdCgpICsgY29vcmRfZmxpcCgpICsKICBsYWJzKHRpdGxlID0gIuWcsOWfn+OBlOOBqOOBruWMluefs+eHg+aWmeOBq+OCiOOCi+eZuumbu+mHj+OBruWJsuWQiCIpCmBgYAoKUkVHSU9OIOOBr+OAgWlzbzJjIOOBp+Wumue+qeOBl+OBpuOBhOOBvuOBl+OBn+OBi+OCieOAgWZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkg44Go44GX44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZHJvcF9uYShmb3NzaWwsIHJlZ2lvbikgfD4KICBnZ3Bsb3QoYWVzKHJlZ2lvbiwgZm9zc2lsKSkgKyBnZW9tX2JveHBsb3QoKSArIGNvb3JkX2ZsaXAoKSsKICBsYWJzKHRpdGxlID0gIuWcsOWfn+OBlOOBqOOBruWMluefs+eHg+aWmeOBq+OCiOOCi+eZuumbu+mHj+OBruWJsuWQiCIpCmBgYAoKY28yIOOBqOOAgWZvc3NpbCDjga/jgIHkuIDmlrnjga/jgIHjg4jjg7PjgafjgIHku5bmlrnjga/jgIHjg5Hjg7zjgrvjg7Pjg4jjgafjgIHlsLrluqbjgYzpgZXjgYTjgb7jgZnjgYvjgonjgIHlkIzmmYLjgavjgIHnrrHjgbLjgZLlm7PjgavooajjgZnjga7jga/jgIHpganliIfjgajjga/oqIDjgYjjgb7jgZvjgpPjgYzjgIHkuIDlv5zjgIFkZl9jbzJmb3NfbG9uZyDjgpLkvb/jgaPjgabjgIHjgrPjg7zjg4njgpLmm7jjgYTjgabjgb/jgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3NfbG9uZyB8PiAKICBmaWx0ZXIoaW5jb21lICE9ICJBZ2dyZWdhdGVzIikgfD4gZHJvcF9uYSh2YWx1ZSkgfD4KICBnZ3Bsb3QoYWVzKGluY29tZSwgdmFsdWUsIGZpbGwgPSBuYW1lKSkgKyBnZW9tX2JveHBsb3QoKSArIGNvb3JkX2ZsaXAoKSArCiAgbGFicyh0aXRsZSA9ICLmiYDlvpfjg6zjg5njg6vliKXjga7jgIHljJbnn7Pnh4Pmlpnjgavjgojjgovnmbrpm7vjga7libLlkIjjgahcbuS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHjyIpCmBgYAoK6aCG5bqP44KS44CBYElOQ09NRSA8LSBjKCJIaWdoIGluY29tZSIsICJVcHBlciBtaWRkbGUgaW5jb21lIiwgIkxvd2VyIG1pZGRsZSBpbmNvbWUiLCAKIkxvdyBpbmNvbWUiKWAg44Go5oyH5a6a44GX44Gf6aCG5bqP44Gr5biw44KL5pmC44Gv44CBZmFjdG9yIOOCkuS9v+OBhOOBvuOBmeOAggoKYGBge3J9CmRmX2NvMmZvc19sb25nIHw+IGZpbHRlcihpbmNvbWUgIT0gIkFnZ3JlZ2F0ZXMiLCBpbmNvbWUgIT0gIk5vdCBjbGFzc2lmaWVkIikgfD4gCiAgZHJvcF9uYSh2YWx1ZSkgfD4KICBnZ3Bsb3QoYWVzKGZhY3RvcihpbmNvbWUsIGxldmVscyA9IElOQ09NRSksIHZhbHVlLCBmaWxsID0gbmFtZSkpICsgZ2VvbV9ib3hwbG90KCkgKwogIGNvb3JkX2ZsaXAoKSArIGxhYnModGl0bGUgPSAi5omA5b6X44Os44OZ44Or5Yil44Gu44CB5YyW55+z54eD5paZ44Gr44KI44KL55m66Zu744Gu5Ymy5ZCI44GoXG7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph48iLCB4ID0gIiIpCmBgYAoKIyMg55u46ZaiCgojIyMg55u46Zai5L+C5pWwCgrlgKTjga7mraPosqDvvJrmraPjga7nm7jplqLjg7vosqDjga7nm7jplqLjgIEx44Gr6L+R44GE44Go5by344GE5q2j44Gu55u46Zai44CBLTHjgavov5HjgYTjgajlvLfjgYTosqDjga7nm7jplqIKCuebuOmWouS/guaVsO+8muaVo+W4g+Wbs+OBrui/keS8vO+8iOWbnuW4sO+8ieebtOe3muOBruWCvuOBjeOBjOato+OBquOCieato+OAgeiyoOOBquOCieiyoOOAgeebtOe3muOBq+i/keOBhOeoi+OAgTEg44G+44Gf44GvLTEg44Gr6L+R44GECgrjgYLjgY/jgb7jgafjgoLjgIHnm7jplqLjgafjgYLjgorjgIHlm6DmnpzplqLkv4Ljgafjga/jgarjgYTjgILlho3nlJ/lj6/og73jgqjjg43jg6vjgq7jg7zjgpLlopfjgoTjgZfjgZ/jgorjgIHljJbnn7Pnh4Pmlpnjgavjgojjgovnmbrpm7vjgpLmuJvjgonjgZfjgZ/jgorjgIHmo67jgpLlopfjgoTjgZvjgbDjgIHkuozphbjljJbngq3ntKDmjpLlh7rph4/jgYzmuJvjgovjgajjgIHjgZPjgZPjgYvjgonntZDoq5bjgafjgY3jgovjgo/jgZHjgafjga/jgarjgYTjgILjgYLjgY/jgb7jgafjgoLjgIHljJbnn7Pnh4Pmlpnjga7nmbrpm7vjgYzlpJrjgYTlm73jga7jgbvjgYbjgYzjgIHkuozphbjljJbngq3ntKDmjpLlh7rph4/jgYzlpJrjgYTlgr7lkJHjgYzjgYLjgovjgajjgYTjgYbjgojjgYbjgarjgZPjgajjgYzopovjgablj5bjgozjgovjgZPjgajjgafjgYLjgovjgILnm7jplqLplqLkv4Ljga/lm6DmnpzplqLkv4LjgavjgYLjgonjgZrjgIJDb3JyZWxhdGlvbiBpcyBub3QgY2F1c2F0aW9uLgoKIyMjIyDkvosKCuWkieaVsOWQjOWjq+OBruebuOmWoumWouS/gjogTkEg44Gn44Gv44Gq44GE44Go44GT44KN44Gu44G/6YG45oqe44GX44G+44GZ44CCCgpgYGB7cn0KZGZfY28yZm9zIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gIyDlnLDln5/ku6XlpJbvvIjlm73jga7jgb/pgbjmip7vvIkKICBkcm9wX25hKGNvMiwgZm9zc2lsKSB8PiAKICBzZWxlY3QoY28yLCBmb3NzaWwpIHw+IGNvcigpCmBgYAoK44GT44KM44Gv44CB5byx44GE5q2j44Gu55u46Zai44Go44Gq44KK44G+44GZ44CC44Gk44G+44KK44CB44CM5YyW55+z54eD5paZ44Gr44KI44KL55m66Zu744GM5aSa44GE5Zu944Gv44GC44KL56iL5bqm44CB5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44GM5aSa44GE5YK+5ZCR44Gr44GC44KL44CN44Go6KiA44GI44G+44GZ44CCCgoKCiMjIyDmlaPluIPlm7MKCuWfuuacrOW9ouOBr+OAgeasoeOBruOCiOOBhuOBq+OBquOCiuOBvuOBmeOAggoKYGBgCmRmX2NvMmZvcyB8PiBmaWx0ZXIg44Gn6YG45oqeIHw+IGRyb3BfbmEo5aSJ5pWwMSwg5aSJ5pWwMikgfD4KICBnZ3Bsb3QoYWVzKOWkieaVsDEsIOWkieaVsDIpKSArIGdlb21fcG9pbnQoKQpgYGAKCiMjIyMg5L6LCgrkuozlpInmlbDjga7nm7jplqLjgpLjgb/jgovjgavjga/jgIFkZl9jbzJmb3Mg44KS5L2/44GE44G+44GZ44CC5Zyw5Z+f44Gv44CBZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSDjgafjgIHnnIHjgYTjgabjgYLjgorjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGNvMiwgZm9zc2lsKSB8PgogIGdncGxvdChhZXMoY28yLCBmb3NzaWwpKSArIGdlb21fcG9pbnQoKSArIAogIGxhYnModGl0bGUgPSAi5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44Go5YyW55+z54eD5paZ44Gn44Gu55m66Zu75Ymy5ZCIIikKYGBgCgrlm57luLDnm7Tnt5rjgpLliqDjgYjjgb7jgZnjgIIKCmBgYHtyIHdhcm5pbmcgPSBGQUxTRX0KZGZfY28yZm9zIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZHJvcF9uYShjbzIsIGZvc3NpbCkgfD4KICBnZ3Bsb3QoYWVzKGNvMiwgZm9zc2lsKSkgKyBnZW9tX3BvaW50KCkgKyBnZW9tX3Ntb290aChmb3JtdWxhID0gJ3l+eCcsIG1ldGhvZCA9ICJsbSIsIHNlID0gRkFMU0UpICsgeWxpbSgwLDEwMCkgKwogIGxhYnModGl0bGUgPSAi5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44Go5YyW55+z54eD5paZ44Gn44Gu55m66Zu75Ymy5ZCI77yI5Zue5biw55u057ea77yJIikKYGBgCgrlj47lhaXjg6zjg5njg6vjgafoibLliIbjgZHjgpLjgZnjgovjgZPjgajjgoLlj6/og73jgafjgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGNvMiwgZm9zc2lsKSB8PiAKICBnZ3Bsb3QoYWVzKGNvMiwgZm9zc2lsLCBjb2wgPSBmYWN0b3IoaW5jb21lLCBsZXZlbHMgPSBJTkNPTUUpKSkgKyBnZW9tX3BvaW50KCkgKyAKICBsYWJzKHRpdGxlID0gIuS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHj+OBqOWMluefs+eHg+aWmeOBp+OBrueZuumbu+WJsuWQiCIsIGNvbCA9ICJJbmNvbWUgTGV2ZWwiKQpgYGAKCjAg44Gr6L+R44GE5pa544Gr5YCk44GM44GL44Gf44G+44Gj44Gm44GE44KL44Gu44Gn44CBc2NhbGVfeF9sb2cxMCgpIOOBpyDlr77mlbDooajmmYLjgpLjgZfjgabjgb/jgb7jgZnjgILjgZnjgZPjgZfluoPjgYzjgorjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGNvMiwgZm9zc2lsKSB8PgogIGdncGxvdChhZXMoY28yLCBmb3NzaWwpKSArIGdlb21fcG9pbnQoKSArIHNjYWxlX3hfbG9nMTAoKSArIAogIGxhYnModGl0bGUgPSAi5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YeP44Go5YyW55+z54eD5paZ44Gn44Gu55m66Zu75Ymy5ZCIIikKYGBgCgrjgZPjgaHjgonjgavlm57luLDnm7Tnt5rjgpLliqDjgYjjgovjgajkuIvjga7jgojjgYbjgavjgarjgorjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJmb3MgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGNvMiwgZm9zc2lsKSB8PgogIGdncGxvdChhZXMoY28yLCBmb3NzaWwpKSArIGdlb21fcG9pbnQoKSArIHNjYWxlX3hfbG9nMTAoKSArIAogIGdlb21fc21vb3RoKGZvcm11bGEgPSAneX54JywgbWV0aG9kID0gImxtIiwgc2UgPSBGQUxTRSkgKyAKICBsYWJzKHRpdGxlID0gIuS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHj++8iExPR++8ieOBqOWMluefs+eHg+aWmeOBp+OBrueZuumbu+WJsuWQiCIpCmBgYAoKIyMjIOijnOi2s++8muaVo+W4g+WbswoK5LiA5Lq65b2T44Gf44KK44Gu6LO86LK35Yqb5bmz5L6h44Gr44KI44KL5Zu95YaF57eP55Sf55SjIEdEUCAoUFBQKSDjgajjgIHkuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/jgajjgIHkurrlj6Pjga7jg4fjg7zjgr/jgpLoqq3jgb/ovrzjgb/jgb7jgZnjgIIKCmBgYHtyIGV2YWw9RkFMU0V9CmRmX2NvMl9nZHAgPC0gV0RJKGluZGljYXRvciA9IGMocG9wID0gIlNQLlBPUC5UT1RMIiwgZ2RwcGNhcCA9ICJOWS5HRFAuUENBUC5QUC5LRCIsIGNvMiA9ICJFTi5BVE0uQ08yRS5QQyIpLCBleHRyYSA9IFRSVUUpCndyaXRlX2NzdihkZl9jbzJfZ2RwLCAiZGF0YS9jbzJfZ2RwLmNzdiIpCmBgYAoKYGBge3J9CmRmX2NvMl9nZHAgPC0gcmVhZF9jc3YoImRhdGEvY28yX2dkcC5jc3YiKQpkZl9jbzJfZ2RwCmBgYAoKYGBge3J9CmRmX2NvMl9nZHAgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGdkcHBjYXAsIGNvMikgfD4gCiAgZ2dwbG90KGFlcyhnZHBwY2FwLCBjbzIpKSArIGdlb21fcG9pbnQoKSArCiAgbGFicyh0aXRsZSA9ICLos7zosrflipvlubPkvqHjgavjgojjgovkuIDkurrlvZPjgZ/jgorjga7lm73lhoXnt4/nlJ/nlKPjgahcbuS4gOS6uuW9k+OBn+OCiuOBruS6jOmFuOWMlueCree0oOaOkuWHuumHjyIpCmBgYArmmI7jgonjgYvjgavjgIEwIOOBruS7mOi/keOBq+WvhumbhuOBl+OBpuOBhOOBvuOBmeOBi+OCieOAgUxvZzEwIOOCueOCseODvOODq+OCkuS9v+OBhOOBvuOBmeOAggoKYGBge3J9CmRmX2NvMl9nZHAgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGdkcHBjYXAsIGNvMikgfD4gCiAgZmlsdGVyKGdkcHBjYXAgPjAsIGNvMiA+MCkgfD4KICBnZ3Bsb3QoYWVzKGdkcHBjYXAsIGNvMikpICsgZ2VvbV9wb2ludCgpICsgc2NhbGVfeF9sb2cxMCgpICsgc2NhbGVfeV9sb2cxMCgpKwogIGxhYnModGl0bGUgPSAi6LO86LK35Yqb5bmz5L6h44Gr44KI44KL5LiA5Lq65b2T44Gf44KK44Gu5Zu95YaF57eP55Sf55Sj44GoXG7kuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph4/vvIjjgajjgoLjgasgTG9nMTAg44K544Kx44O844Or77yJIikKYGBgCuW8t+OBhOebuOmWouOBjOOBv+OCieOCjOOBneOBhuOBp+OBmeOAguWbnuW4sOebtOe3muOCkuW8leOBhOOBpuOBv+OBvuOBmeOAgnN1YnRpdGxlIOOCkuS9v+OBo+OBpuOBv+OBvuOBl+OBn+OAggoKYGBge3J9CmRmX2NvMl9nZHAgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkcm9wX25hKGdkcHBjYXAsIGNvMikgfD4gCiAgZmlsdGVyKGdkcHBjYXAgPjAsIGNvMiA+MCkgfD4KICBnZ3Bsb3QoYWVzKGdkcHBjYXAsIGNvMikpICsgZ2VvbV9wb2ludCgpICsgc2NhbGVfeF9sb2cxMCgpICsgc2NhbGVfeV9sb2cxMCgpICsKICBnZW9tX3Ntb290aChmb3JtdWxhID0gJ3l+eCcsIG1ldGhvZCA9ICJsbSIsIHNlID0gRkFMU0UpKwogIGxhYnModGl0bGUgPSAi6LO86LK35Yqb5bmz5L6h44Gr44KI44KL5LiA5Lq65b2T44Gf44KK44Gu5Zu95YaF57eP55Sf55Sj44Go5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YePIiwgc3VidGl0bGUgPSAi44Go44KC44GrIExvZzEwIOOCueOCseODvOODq+OAgeWbnuW4sOebtOe3muOCkuWKoOOBiOOBn+OCguOBriIpCmBgYAoK5bCR44GX54K544KS5rib44KJ44GZ44Gf44KB44CB5bm044KS44CBMjAyMCDjgavliLbpmZDjgZfjgb7jgZnjgILjgZXjgonjgavjgIHlnLDln5/jgpLoibLjgafliqDjgYjjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJfZ2RwIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSwgeWVhciA9PSAyMDIwKSB8PiBkcm9wX25hKGdkcHBjYXAsIGNvMikgfD4gCiAgZmlsdGVyKGdkcHBjYXAgPjAsIGNvMiA+MCkgfD4KICBnZ3Bsb3QoYWVzKGdkcHBjYXAsIGNvMiwgY29sID0gcmVnaW9uKSkgKyBnZW9tX3BvaW50KCkgKyBzY2FsZV94X2xvZzEwKCkgKyBzY2FsZV95X2xvZzEwKCkrCiAgbGFicyh0aXRsZSA9ICLos7zosrflipvlubPkvqHjgavjgojjgovkuIDkurrlvZPjgZ/jgorjga7lm73lhoXnt4/nlJ/nlKPjgajkuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph48iLAogICAgICAgc3VidGl0bGUgPSAi44Go44KC44GrIDIwMjDlubTjga4gTG9nMTAg44K544Kx44O844OrIOOBruODh+ODvOOCvyIpCmBgYAoK44GV44KJ44Gr44CB5Lq65Y+j44Gu5aSn44GN44GV44Gr44KI44KK44CB54K544Gu5aSn44GN44GV44KS5aSJ44GI44G+44GZ44CCCgpgYGB7cn0KZGZfY28yX2dkcCB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTiksIHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShnZHBwY2FwLCBjbzIpIHw+IAogIGZpbHRlcihnZHBwY2FwID4wLCBjbzIgPjApIHw+CiAgZ2dwbG90KGFlcyhnZHBwY2FwLCBjbzIsIGNvbCA9IHJlZ2lvbiwgc2l6ZSA9IHBvcCkpICsgZ2VvbV9wb2ludCgpICsgc2NhbGVfeF9sb2cxMCgpICsgc2NhbGVfeV9sb2cxMCgpKwogIGxhYnModGl0bGUgPSAi6LO86LK35Yqb5bmz5L6h44Gr44KI44KL5LiA5Lq65b2T44Gf44KK44Gu5Zu95YaF57eP55Sf55Sj44Go5LiA5Lq65b2T44Gf44KK44Gu5LqM6YW45YyW54Kt57Sg5o6S5Ye66YePIiwKICAgICAgIHN1YnRpdGxlID0gIuOBqOOCguOBqyAyMDIw5bm044GuIExvZzEwIOOCueOCseODvOODqyDjga7jg4fjg7zjgr/jgIHngrnjga7lpKfjgY3jgZXjga/kurrlj6MiKQpgYGAKCiMjIyMjIOWPguiAgwoKcGxvdGx5IOOBqOOBhOOBhuWIpeOBruODkeODg+OCseODvOOCuOOCkuS9v+OBhuOBqOOAgeODneOCpOODs+OCv+ODvOOCkueCueOBq+OBguOBpuOCi+OBqOOAgeaDheWgseOBjOiqreOBv+WPluOCjOOCi+OCiOOBhuOBq+OBquOCiuOBvuOBmeOAggoKYGBge3J9CmxpYnJhcnkocGxvdGx5KQpnZ3AgPC0gZGZfY28yX2dkcCB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTiksIHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShnZHBwY2FwLCBjbzIpIHw+IAogIGZpbHRlcihnZHBwY2FwID4wLCBjbzIgPjApIHw+CiAgZ2dwbG90KGFlcyh0ZXh0ID0gY291bnRyeSwgZ2RwcGNhcCwgY28yLCBjb2wgPSByZWdpb24sIHNpemUgPSBwb3ApKSArIGdlb21fcG9pbnQoKSArIHNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCiAgbGFicyh0aXRsZSA9ICLkuIDkurrlvZPjgZ/jgorjga7lm73lhoXnt4/nlJ/nlKPjgajkuozphbjljJbngq3ntKDmjpLlh7rph48o44Od44Kk44Oz44K/44Gn44OH44O844K/6KGo56S6KSIpCmdncGxvdGx5KGdncCkKYGBgCgrlm57luLDnm7Tnt5rjgpLliqDjgYjjgb7jgZnjgIIKCmBgYHtyfQpkZl9jbzJfZ2RwIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSwgeWVhciA9PSAyMDIwKSB8PiBkcm9wX25hKGdkcHBjYXAsIGNvMikgfD4gCiAgZmlsdGVyKGdkcHBjYXAgPjAsIGNvMiA+MCkgfD4KICBnZ3Bsb3QoYWVzKGdkcHBjYXAsIGNvMikpICsgZ2VvbV9wb2ludChhZXMoY29sID0gcmVnaW9uLCBzaXplID0gcG9wKSkgKyBzY2FsZV94X2xvZzEwKCkgKyBzY2FsZV95X2xvZzEwKCkgKwogIGdlb21fc21vb3RoKGZvcm11bGEgPSAneX54JywgbWV0aG9kID0gImxtIiwgc2UgPSBGQUxTRSkrCiAgbGFicyh0aXRsZSA9ICLos7zosrflipvlubPkvqHjgavjgojjgovkuIDkurrlvZPjgZ/jgorjga7lm73lhoXnt4/nlJ/nlKPjgajkuIDkurrlvZPjgZ/jgorjga7kuozphbjljJbngq3ntKDmjpLlh7rph48iLAogICAgICAgc3VidGl0bGUgPSAi44Go44KC44GrIDIwMjDlubTjga4gTG9nMTAg44K544Kx44O844OrIOOBruODh+ODvOOCv+OAgeeCueOBruWkp+OBjeOBleOBr+S6uuWPo+OAgeWbnuW4sOebtOe3muOCkuWQq+OCgCIpCmBgYAoKIyMjIyMg5Y+C6ICD77ya57ea5b2i44Oi44OH44Or5qaC6KaBCgrnm7Tnt5rjgajjg5XjgqPjg4Pjg4jjgZfjgabjgYTjgovjgYvjgpLjgb/jgovjga7jga/jgIHnt5rlvaLlm57luLDliIbmnpDjgajoqIDjgYTjgb7jgZnjgYzjgIHjgZ3jga7mpoLopoHjga/ku6XkuIvjga7jgojjgYbjgavjgarjgorjgb7jgZnjgIIKCuS4iuOBr+OAgeWvvuaVsOOCkuOBqOOCi+WJjeOBqOOAgeS4i+OBr+OAgeWvvuaVsOOCkuOBqOOBo+OBpuOBi+OCieOAggoK56ys77yW6YCx44Gr44CB5bCR44GX57S55LuL44GX44G+44GX44Gf44GL44KJ44CB5aSn5L2T44Gp44Gu44KI44GG44Gq44GT44Go44KS6KiA44Gj44Gm44GE44KL44GL44Gg44GR44CB5pu444GE44Gm44GK44GN44G+44GZ44CCCgotIFJlc2lkdWFsczog55u057ea44KI44KK44Gp44Gu44GQ44KJ44GE5aSn44GN5YCk44KE5bCP44GV44GE5YCk44GM44GC44KL44GLCi0gQ29lZmZpY2llbnRzOiBFc3RpbWF0ZSDjga7jgIAoSW50ZXJjZXB0KSDjga/nm7Tnt5rjga4geS3liIfniYfjgIFnZHBwY2FwIOOBr+OAgeWCvuOBjQotIFJlc2lkdWFsIFN0YW5kYXJkIEVycm9yOiDnm7Tnt5rjgYvjgonjgZPjga7lgKTjga7luYXjga7plpPjgavjgIHjgYrjgYrjgojjgZ0gMi8zIOeoi+W6pu+8iDY4LjIl77yJ44Gu54K544GM5YWl44Gj44Gm44GE44KLCi0gTXVsdGlwbGUgUi1zcXVhcmVkOiDnm7Tnt5rjgYzjganjga7nqIvluqbov5HkvLzjgZfjgabjgYTjgovjgYvjgIEwIOOBqCAxIOOBrumWk+OBp+OAgeebuOmWouS/guaVsOOBruS6jOS5lwotIHAtdmFsdWU6IOOBi+OBquOCiuWwj+OBleOBhOOBqO+8iOOBn+OBqOOBiOOBsCAwLjAxIOacqua6gO+8ieebuOmWouOBjOato+OBi+iyoOOBi+OBjOOBu+OBvOeiuuWun+OBqOOBhOOBiOOCiwoKYGBge3J9CmRmX2NvMl9nZHAgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pLCB5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEoZ2RwcGNhcCwgY28yKSB8PiAKICBmaWx0ZXIoZ2RwcGNhcCA+MCwgY28yID4wKSB8PiBsbShjbzIgfiBnZHBwY2FwLCBkYXRhID0gXykgfD4gc3VtbWFyeSgpCmBgYAoKCmBgYHtyfQpkZl9jbzJfZ2RwIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSwgeWVhciA9PSAyMDIwKSB8PiBkcm9wX25hKGdkcHBjYXAsIGNvMikgfD4gCiAgZmlsdGVyKGdkcHBjYXAgPjAsIGNvMiA+MCkgfD4gbG0obG9nMTAoY28yKSB+IGxvZzEwKGdkcHBjYXApLCBkYXRhID0gXykgfD4gc3VtbWFyeSgpCmBgYAoK44GT44Gu57ea5b2i5Zue5biw44Oi44OH44Or44Gr44KI44KL5YiG5p6Q44Gv44CB44GE44GP44Gk44GL44Gu5Luu5a6a44Gu5LiK44Gr6LyJ44Gj44Gm44GE44G+44GZ44Gu44Gn44CB5YCL5Lq655qE44Gr44Gv44CB54++5pmC54K544Gn44Gv5Yip55So44KS44GK5Yun44KB44GX44G+44Gb44KT44CC44Gf44Gg44CB44GT44KM44GL44KJ44CB5YiG6YeO44Gr44KI44Gj44Gm44Gv44CB44GT44Gu5oOF5aCx44KS44KI44GP5L2/44GG44GT44Go44Gr44Gq44KL44Go5oCd44GE44G+44GZ44Gu44Gn44CB5aSn6ZuR5oqK44Gq44GT44Go44Gg44GR44CB5LiK44Gr57S55LuL44GX44G+44GX44Gf44CCCgoKYGBge3J9CmRmX2NvMl9nZHAgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pLCB5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEoZ2RwcGNhcCwgY28yKSB8PiAKIHNlbGVjdChnZHBwY2FwLCBjbzIpIHw+IGNvcigpCmBgYAoKYGBge3J9CjAuNzIyMjc5NCowLjcyMjI3OTQKYGBgCgrjgZPjga7lgKTjgYzjgIFsb2cxMCDjgpLjgajjgonjgarjgYTjgIHmnIDliJ3jga7jg6Ljg4fjg6vjga7jgIFNdWx0aXBsZSBSIFNxdWFyZWQg44Gu5YCk44Gr44Gq44Gj44Gm44GE44G+44GZ44CCCgpgYGB7cn0KZGZfY28yX2dkcCB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTiksIHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShnZHBwY2FwLCBjbzIpIHw+IAogZmlsdGVyKGdkcHBjYXAgPjAsIGNvMj4wKSB8PiBzZWxlY3QoZ2RwcGNhcCwgY28yKSB8PiBzYXBwbHkobG9nMTApIHw+IGNvcigpCmBgYAoKYGBge3J9CjAuOTE1MDE2NCAqIDAuOTE1MDE2NApgYGAKCgrnorrjgYvjgavjgIHjgZPjga7lgKTjgYzjgIFsb2cxMCDjgpLjgajjgaPjgZ/mlrnjga7jgIFNdWx0aXBsZSBSIFNxdWFyZWQg44Gu5YCk44Gr44Gq44Gj44Gm44GE44G+44GZ44CCCgojIOOCs+ODn+ODpeODi+OCseODvOOCt+ODp+ODswoK5o6i57Si55qE44OH44O844K/5YiG5p6Q44Gu5pyA5b6M44Gv44CB44Kz44Of44Ol44OL44Kx44O844K344On44Oz44Gn44GZ44CC5pyA5b6M44Gr44Gv44CB44OX44Os44K844Oz44OG44O844K344On44Oz77yI55m66KGo77yJ44KE44CB44Os44Od44O844OI77yIcGFwZXLvvInjga7kvZzmiJDjgavjgarjgorjgb7jgZnjgILjgo/jgYvjgorjgoTjgZnjgY/kvJ3jgYjjgovjgavjga/jgIHkvZzmpa3lsaXmrbTjgYzjgZfjgaPjgYvjgormm7jjgYvjgozjgabjgYTjgovjgIFSIE5vdGVib29rIOOCiOOCiuOCguOAgeewoea9lOOBq+OBvuOBqOOCgeOBn+OCguOBruOBjOW/heimgeOBqOOBleOCjOOBvuOBmeOAguaOoue0oueahOODh+ODvOOCv+WIhuaekOOBr+OAgeWGjeePvuaAp++8iFJlcHJvZHVjaWJpbGl0ee+8ieOBjOWkp+WIh+OBp+OBmeOBi+OCieOAgeWun+mam+OBruS9nOalreOBr+OAgVIgTm90ZWJvb2sg44Gn6KGM44GG44GT44Go44KS57S55LuL44GX44Gm44GE44GN44G+44GX44Gf44CC44GT44KM44Gr44KI44Gj44Gm44CB5qC55oug44GM5rGC44KB44KJ44KM44Gw44CB44Gp44Gu44KI44GG44Gr44CB44OH44O844K/44KS5Y+W5b6X44GX44CB44Gp44Gu44KI44GG44Gr44CB5Zuz44GM6KGo56S644GV44KM44Gf44GL44KC44CB57Ch5Y2Y44Gr44CB44K344Kn44Ki44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC44GX44GL44GX44CB5YiG5p6Q57WQ5p6c44CB44Gd44KM44GL44KJ44CB44KP44GL44KL44GT44Go44KS5q2j56K644Gr44CB44GL44Gk44CB57Ch5r2U44Gr5Lyd44GI44KL44GT44Go44KC5b+F6KaB44Gn44GZ44CC44Gd44Gu44Gf44KB44Gr44CB44Gp44GG44GX44Gm44KC5b+F6KaB44Gq44GT44Go44KS5pu444GE44Gm44GK44GN44G+44GZ44CCCgrkuIDoiKznmoTjgarpgZPnrYvjgajjgZfjgabjgIEKCjEuIOOCueODqeOCpOODieOBp+OAgeODl+ODrOOCvOODs+OCkuOBmeOCi+OAggoyLiBXb3JkIOOBvuOBn+OBr+OAgUdvb2dsZSBEb2Mg44Gn44Os44Od44O844OI44KS5pu444GP44CCCjMuIFBERiDjgavjgZfjgabmj5Dlh7rjgZnjgovjgIIKCuOBk+OBruOBk+OBqOOCkuaDs+WumuOBl+OBpuabuOOBhOOBpuOBhOOBjeOBvuOBmeOAggoKIyMg5Zuz44Gu5Y+W44KK5Ye644GXCgojIyMgUHJldmlldyDjgYvjgonnlJ/miJAKClByZXZpZXcg44Gu5Zuz44KS44CBQ3RybCArIENsaWNrIOOBmeOCi+OBqOOAgUNvcHkgSW1hZ2Ug44Gu6YG45oqe44GM44Gn44GN44G+44GZ44CCCgpDb3B5IEltYWdlIOOBqOOBmeOCi+OBqOOAgeWbs+OBjOOCr+ODquODg+ODl+ODnOODvOODieOBq+OCs+ODlOODvOOBp+OBjeOCi+OBqOaAneOBhOOBvuOBmeOAgumWi+OBhOOBpuOBhOOBn+OAgVdvcmQg44KE44CBR29vZ2xlIERvYyDjgavjgIHosrzjgorku5jjgZHjgYzlj6/og73jgafjgZnjgILjgrXjgqTjgrrjgoLjgZ3jgZPjgafjgIHoqr/nr4DjgafjgY3jgb7jgZnjgILjgZfjgYvjgZfjgIHjgrXjgqTjgrrjgpLlpInmm7TjgZnjgovjgajjgIHooajpoYzjgarjganjgoLkuIDnt5LjgavjgrXjgqTjgrrjgYzlpInjgo/jgovjgajmgJ3jgYTjgb7jgZnjgIIKCiMjIyBDb2RlIOOBi+OCieeUn+aIkAoKMS4gQ29kZSBDaHVuayDjgYvjgonjgIHlrp/pmpvjga7jgrPjg7zjg4njga7pg6jliIbjgpLjgrPjg5Tjg7zjgZfjgb7jgZnjgILvvIh7cn0g44Gq44Gp44Gv44Kz44OU44O844GX44G+44Gb44KT44CC77yJCjIuIOW3puS4i+OBruOAgUNvbnNvbGUg44KS6ZaL44GN44CB44Oa44O844K544OI44GX44G+44GZ44CC44Gd44GX44Gm44CB5a6f6KGM77yIRW50ZXIg44Gq44Gp77yJCjMuIOWPs+S4i+OBruOAgVBsb3RzIOOBq+ihqOekuuOBleOCjOOBvuOBmeOAggo0LiBTYXZlIGFzIEltYWdlIC4uLiAsIFNhdmUgYXMgUERGLCBDb3B5IHRvIENsaXBib2FkIOOBqOWHuuOBvuOBmeOAggoKLSAgQ29weSB0byBDbGlwYm9hcmQg44KS6YG45oqe44GX44CBV2lkdGgg44Go44CBSGVpZ2h0IOOBquOBqeOCkuiqv+evgOOBl+OAgVVwZGF0ZSBQcmV2aWV3IOOBp+eiuuiqjeOBl+OAgUNvcHkgUGxvdCDjgajjgZnjgozjgbDjgIFXb3JkIOOBvuOBn+OBr+OAgUdvb2dsZSBkb2Mg44Gr6LK844KK5LuY44GR44KL44GT44Go44GM44Gn44GN44G+44GZ44CCCi0gIFNhdmUgYXMgUERGIOOBr+OAgURldmljZSBTaXplIOOCkuiqv+evgOOBl+OAgVBvcnRyYWl077yI57im572u44GN77yJLCBMYW5kc2NhcGXvvIjmqKrnva7jgY3vvIkg44KS6YG45oqe44GX44CB5ZCN5YmN44Go5L+d5a2Y5aC05omA44KS5rG644KB44Gm44CBU2F2ZSDjgafjgZnjgIIKLSAgU2F2ZSBhcyBJbWFnZSDjga/jgIHnlLvlg4/jga7nqK7poZ7jgpLpgbjjgbnjgb7jgZnjgYzjgIHlm7Pjga7jgajjgY3jga/jgIHjgYrjgZ3jgonjgY/jgIFwbmcg44Gn44KI44GE44Go5oCd44GE44G+44GZ44CC56iu6aGe44Gv44CB5Zyn57iu546H44KE5Zyn57iu5pa55rOV44GM55Ww44Gq44KK44G+44GZ44CC44GC44Go44Gv44CB44K144Kk44K644Go5ZCN5YmN44Go5L+d5a2Y5aC05omA44KS5rG644KB44Gm44CBU2F2ZSDjgafjgZnjgIIKCuS/neWtmOOBl+OBn+OCguOBruOBr+OAgVdvcmQg44KE44CBR29vZ2xlIERvYyDjgYvjgonjgIFJbWFnZSDjga7mjL/lhaXjgpLpgbjmip7jgZfjgIHnlLvlg4/jgpLpgbjmip7jgZnjgovjgZPjgajjgavjgarjgorjgb7jgZnjgILlm7Pjga/kuIDjgaTjga7jgajjgY3jga/jgIHoia/jgYTjgafjgZnjgYzjgIHlub7jgaTjgoLjgYLjgovjgajjgo/jgYvjgonjgarjgY/jgarjgorjgb7jgZnjgYvjgonjgIHpganliIfjgavjgIHlkI3liY3jgpLjgaTjgZHjgovjgZPjgajjgoLlpKfliIfjgafjgZnjgIIKCiMjIOaWh+abuOOBruS9nOaIkAoK5pel5pys6Kqe44Gu5aC05ZCI44Gv54m544Gr44GE44GP44Gk44GL5rOo5oSP44GZ44KL44GT44Go44GM44GC44KK44G+44GZ44Gu44Gn44CB44G+44Go44KB44Gm44GK44GN44G+44GZ44CCV2luZG93cywgTWFjLCBMaW51eCDjgafjgIHmlrnms5XjgYzpgZXjgYbpg6jliIbjgoLjgYLjgorjgb7jgZnjgYzjgIHmpbXlipvjgIHjganjgozjgafjgoLlkIzjgZjjgavjgafjgY3jgovmlrnms5XjgpLntLnku4vjgZfjgb7jgZnjgILvvIjliIbmlq3jgpLjgZXjgZHjgovjgZ/jgoHvvIkKCiMjIyBSIE1hcmtkb3duIOODhuODs+ODl+ODrOODvOODiAoKLSBSIE1hcmtkb3duIOOBhOOCjeOBhOOCjeOBquW9ouW8j+OBp+OBruWHuuWKmwpbW+ODquODs+OCr10oaHR0cHM6Ly9kcy1zbC5naXRodWIuaW8vaW50cm8yci9SbWFya2Rvd24tSi5uYi5odG1sKV0sIFtbUm1kXShodHRwczovL2dpdGh1Yi5jb20vZHMtc2wvaW50cm8yci9ibG9iL21haW4vZG9jcy9SbWFya2Rvd24tSi5SbWQpXQoK44GT44Gu44OV44Kh44Kk44Or44KS5L2/44GG44Go44CB44GV44G+44GW44G+44Gq5b2i5byP44Gr5Ye65Yqb44Gn44GN44KL44Gg44GR44Gn44Gv44Gq44GP44CB6Kqs5piO44KC5pu444GL44KM44Gm44GE44G+44GZ44Gu44Gn44CB44G+44Ga44Gv44CB44GT44KM44KS5LiB5a+n44Gr6Kqt44KT44Gn44GP44Gg44GV44GE44CC5Z+65pys44Gg44GR44CB5bCR44GX5pu444GE44Gm44GK44GN44G+44GZ44CCCgojIyMgV29yZCDjgbjjga7lh7rlipsKCuS4iuOBriBrbml0IOODnOOCv+ODs+OBi+OCieOAgVdvcmQg44KS5L2c5oiQ44Gn44GN44G+44GZ44CC44GX44GL44GX44CB5pel5pys6Kqe44GM44CB5Zuz44Gu6KGo6aGM44Gr5YWl44Gj44Gm44GE44KL5pmC44Gv44CB5paH5a2X5YyW44GR44GM6LW344GN44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44Gu44Gn44CB5b+F44Ga44CB5qyh44KS5YWl44KM44Gm44GK44GE44Gm44GP44Gg44GV44GE44CCCgpgYGAKbGlicmFyeShzaG93dGV4dCkgCmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcuc2hvd3RleHQ9VFJVRSkKYGBgCgrjgb7jgZ/jgIHliJ3mnJ/oqK3lrprjgafjga/jgIHntJnjga7jgrXjgqTjgrrjgYzjgIFVUyBMZXR0ZXIg44Gr44Gq44Gj44Gm44GE44G+44GZ44CC5Y2w5Yi344GZ44KL44Go44GN44Gq44Gp44CB5ZWP6aGM44GM6LW344GN44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44GL44KJ44CB5b+F44Ga44CBQTQg44Gr5L+u5q2j44GX44Gm44GP44Gg44GV44GE44CC44GT44Gu44KI44GG44Gq5ZWP6aGM44KS44GV44GR44KL44Gf44KB44Gr44KC44CB5Z+65pys55qE44Gr44CBUiBNYXJrZG93bu+8iFIgTm90ZWJvb2sg44Gv44Gd44Gu5LiA5b2i5byP77yJ44Gn5paH56ug44KS5L2c44KK44CBV29yZCDjgavlh7rlipvjgZnjgovloLTlkIjjgavjga/jgIHlvaLlvI/jgpLmlbTjgYjjgZ/jgIHlj4Lnhafjg5XjgqHjgqTjg6vjgpLkvZzjgaPjgabjgIHjgZ3jgozjgavjgZ3jgaPjgabjgIHlh7rlipvjgZnjgovjgojjgYbjgavjgZnjgovjgZPjgajjgoLjgafjgY3jgb7jgZnjgILoqbPjgZfjgY/jga/jgIFbW1IgTWFya2Rvd24g44Kv44OD44Kv44OW44OD44KvXShodHRwczovL2dlZGV2YW4tYWxla3NpemRlLmdpdGh1Yi5pby9ybWFya2Rvd24tY29va2Jvb2svd29yZC10ZW1wbGF0ZS5odG1sKV0g44KS5Y+C54Wn44GX44Gm44GP44Gg44GV44GE44CCCgpSIE5vdGVib29rIOOBi+OCieOAgVdvcmQg44KS5L2c5oiQ44GX44CB44Gd44KM44KS57eo6ZuG44GZ44KL44GT44Go44Gn44CB5Y2B5YiG44Gg44Go5oCd44GE44G+44GZ44CCCgrmnIDntYLnmoTjgavjgIFQREYg44Gr44GZ44KL5pmC44Gv44CBV29yZCDjga7mqZ/og73jga7jgIFQcmludCB0byBQREYg44KS5L2/44Gj44Gm44CB5Y2w5Yi344KS6YG444Gz44CBUERGIOOBq+S/neWtmOOCkuOBl+OBvuOBmeOAggoK55u05o6l44CBUERGIOOCkuS9nOaIkOOBmeOCi+OBk+OBqOOCguWPr+iDveOBp+OBmeOBjOOAgeOBleOBvuOBluOBvuOBquWItuW+oeOBjOikh+mbkeOBp+OBmeOBi+OCieOAgeOBiuWLp+OCgeOBl+OBvuOBm+OCk+OAguWfuuacrOeahOOBquOBk+OBqOOBr+OAgeS4iuOBq+W8leeUqOOBl+OBn+OAgeOAjFIgTWFya2Rvd24g44GE44KN44GE44KN44Gq5b2i5byP44Gn44Gu5Ye65Yqb44CN44Gr5pu444GE44Gm44GC44KK44G+44GZ44CCCgojIyMg44K544Op44Kk44OJ5L2c5oiQCgrln7rmnKznmoTjgarpg6jliIbjga/jgIHjgIxSIE1hcmtkb3duIOOBhOOCjeOBhOOCjeOBquW9ouW8j+OBp+OBruWHuuWKm+OAjeOBq+abuOOBhOOBpuOBguOCiuOBvuOBmeOAguWPgueFp+OBl+OBpuOBj+OBoOOBleOBhOOAggoKUG93ZXJQb2ludCDjgpLkvb/jgo/jgozjgovmlrnjgYzlpJrjgYTjgYvjgoLjgZfjgozjgb7jgZvjgpPjgYzjgIHjgZ3jga7jg4bjg7Pjg5fjg6zjg7zjg4jjgafjga7liLblvqHjgoLlj6/og73jgafjgZnjgILjgZ/jgaDjgIHlgIvkurrnmoTjgavjga/jgIFQb3dlclBvaW50IOOBruODhuODs+ODl+ODrOODvOODiOS9nOaIkOOBr+aJi+mWk+OBjOOBi+OBi+OCi+OBruOBp+OAgeOBk+OCjOOCguOAgVBvd2VyUG9pbnQg44Gr5Ye65Yqb44GX44Gm44CB44Gd44Gh44KJ44KS5L+u5q2j44GX44Gf5pa544GM44GK5Yun44KB44Gn44GZ44CCCgrjgo/jgZ/jgZfjga/jgIHmjojmpa3jgafjga/jgIFpc29zbGlkZXMg44KS5Yip55So44GX44Gm44GE44G+44GZ44CC6Lu944GE44Gu44Go44CBSFRNTCDlvaLlvI/jgarjga7jgafjgIHooajjga7jgIFwYWdlZCDmqZ/og73jgoLkvb/jgYjjgovjgZ/jgoHjgIHopovjgZvjgarjgYzjgonjgIHjg5rjg7zjgrjpgIHjgorjgoLjgafjgY3jgovjgYvjgonjgafjgZnjgIIKCuOBhOOBmuOCjOOBq+OBl+OBpuOCguOAgeOCueODqeOCpOODieS9nOaIkOOBq+OBr+OAgeODmuODvOOCuOOCteOCpOOCuuOBq+OBguOBo+OBn+OAgeODmuODvOOCuOmAgeOCiuOBruWgtOaJgOOCkuOBjeOCgeOBquOBhOOBqOOBhOOBkeOBvuOBm+OCk+OAglwjXCMg44GuIEhlYWRpbmcgMiDjgYzjgYLjgovjgajjgIHjg5rjg7zjgrjmm7/jgYjjgYzjgafjgY3jgb7jgZnjgYzjgIHjgZ3jgozku6XlpJbjgafjga/jgIEtLS0g44OP44Kk44OV44Oz5LiJ44Gk44CB44G+44Gf44Gv44CBVmlzdWFsIEVkaXRvciDjga4gSW5zZXJ0IOOBi+OCieOAgUhvcml6b250YWwgUnVsZSDjgpLpgbjjgbnjgbDjgIHlm57jg5rjg7zjgrjjgafjgY3jgb7jgZnjgIIKCuOBn+OBoOOAgUhvcml6b250YWwgUnVsZSDjga7lvozjgavjga/jgIHnqbrnmb3ooYzjgYzlv4XopoHjgafjgZnjgILjgZ3jgozjgYzjgarjgYTjgajjgIFFcnJvciDjgavjgarjgorjgb7jgZnjgIIKCiMjIyDjgZXjgb7jgZbjgb7jgarlvaLlvI8KCuS4iuOBruOAgVByZXZpZXcg44KE44CBa25pdCDjga7lj7PjgavjgYLjgovjgIHjgq7jgqLjg57jg7zjgq/jga7kuIDnlarkuIvjgavjgIFPdXRwdXQgT3B0aW9ucyDjgYzjgYLjgorjgb7jgZnjgILlm7Pjga7jgrXjgqTjgrrjgoTjgIHku5bjga7poIXnm67jgoLlpInmm7Tlj6/og73jgafjgZnjgIIKCuWbs+OBr+OAgeWIneacn+ioreWumuOBp+OBr+OAgTYuNSBpbiB4IDQgaW4g44Go44Gq44Gj44Gm44GE44G+44GZ44CC44G+44Gf44CB44Gd44KM44Ge44KM44GuIENvZGUgQ2h1bmsg44Gu5Y+z5LiK44Gu44Ku44Ki44Oe44O844Kv44GL44KJ44CB44Gd44KM44Ge44KM44Gu5Zuz44Gu44K144Kk44K644KC5oyH5a6a44Gn44GN44G+44GZ44CC44Gd44Gu5paH5pu444Gu5Zuz44Gu44K144Kk44K644Gu5Yid5pyf6Kit5a6a44KS44GX44Gm44CB44GC44Go44Gv44CB5YCL5Yil44Gu5Zuz44Gu44K144Kk44K644KS5aSJ5pu044Go44GE44GG5YW35ZCI44Gn44GZ44CCCgojIyMg44Kz44O844OJ44O744OB44Oj44Oz44KvCgrkuIrjgavlgIvliKXjga7lm7Pjga7jgrXjgqTjgrrjga7lpInmm7Tjga/jgIHjgrPjg7zjg4njg4Hjg6Pjg7Pjgq/jga7lj7PkuIrjga7jgq7jgqLjg57jg7zjgq/jgYvjgonjgajmm7jjgY3jgb7jgZfjgZ/jgILlkIzjgZjjgIHjgq7jgqLjg57jg7zjgq/jgYvjgonjgIHjgYTjgY/jgaTjgYvjga7lpInmm7TjgYzlj6/og73jgafjgZnjgILnsKHljZjjgavmm7jjgYTjgabjgYrjgY3jgb7jgZnjgIIKCi0gQ2h1bmsgTmFtZTog5ZCN5YmN44KS44Gk44GR44Gm44GK44GP44Go44CB44Ko44Op44O844GM6LW344GT44Gj44Gf5pmC44Gr44Gp44GT44Gg44GL44GZ44GQ44KP44GL44KK44G+44GZ44GM44CB5ZCM44GY5ZCN5YmN44Gu44OB44Oj44Oz44Kv44GM5LqM44Gk44GC44KL44Go44CB44Ko44Op44O844Gr44Gq44KL44Gu44Gn44CB44KP44Gf44GX44Gv44CB44Gk44GR44Gm44GE44G+44Gb44KT44CCCi0gT3V0cHV0IE9wdGlvbjogKFVzZSBkb2N1bWVudCBkZWZhdWx0KSwgU2hvdyBvdXRwdXQgb25seSwgc2hvdyBjb2RlIGFuZCBvdXRwdXQsIApzaG93IG5vdGhpbmcgKHJ1biBjb2RlKSwgc2hvdyBub3RoaW5nIChkb24ndCBydW4gY29kZSkKICAgIC0gKFVzZSBkb2N1bWVudCBkZWZhdWx0KSDmlofmm7jjga7oqK3lrprpgJrjgorjgajjgYTjgYbmhI/lkbPjgafjgZnjgYzjgIHnibnjgavoqK3lrprjgZfjgabjgarjgZHjgozjgbDjgIHplqLkv4LjgYLjgorjgb7jgZvjgpPjgIIKICAgIC0gU2hvdyBvdXRwdXQgb25seTog44GT44KM44Gv44CB44Kz44O844OJ44Gv6KaL44Gb44Gq44GE44Go44GN44Gr5L2/44GE44G+44GZ44CC5paH5pu444KS5L2c5oiQ44GZ44KL5pmC44Gr44Gv44CB44Kz44O844OJ44Gv44GE44KJ44Gq44GE44GT44Go44KC5aSa44GE44Gn44GX44KH44GG44CCCiAgICAtIHNob3cgY29kZSBhbmQgb3V0cHV0OiDjgZPjgozjgYzpgJrluLjjga7nirbmhYvjgafjgZnjgILliJ3mnJ/oqK3lrprjgafluLDjgovloLTlkIjjgoLjgYLjgovjga7jgafjgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgoLlhaXjgozjgabjgYLjgovjga7jgafjgZfjgofjgYbjgIIKICAgIC0gc2hvdyBub3RoaW5nIChydW4gY29kZSk6IOOCs+ODvOODieOCkuihqOekuuOBm+OBmuOAgVdhcm5pbmcg44KE44CBbWVzc2FnZSDjgoLlh7rjgZXjgZrjgIHlrp/ooYzntZDmnpzjgaDjgZHjgpLnpLrjgZnjgajjgYTjgYbjgZPjgajjgafjgZnjgIJTaG93IG91dHB1dCBvbmx5IOOBp+OBr+OBquOBj+OAgeOBk+OBoeOCieOCkuS9v+OBo+OBn+aWueOBjOOCiOOBhOWgtOWQiOOBjOWkmuOBhOOBi+OBqOaAneOBhOOBvuOBmeOAguOBn+OBoOOAgeOBneOCjOOBr+OAgeacgOW+jOOBq1dvcmQg44Gq44Gp44Gu5paH5pu444KS5L2c5oiQ44GZ44KL5pmC44Gn44CB5pyA5Yid44GL44KJ44GT44KM44Gr44GX44Gm44GC44KL44Go44CB5ZWP6aGM44GM44KP44GL44KK44G+44Gb44KT44CCCiAgICAtIHNob3cgbm90aGluZyAoZG9uJ3QgcnVuIGNvZGUpOiDjgqjjg6njg7zjgYzkv67mraPjgafjgY3jgZrjgIHliYrpmaTjgZfjgZ/jgYTloLTlkIjjgavpgbjmip7jgZfjgb7jgZnjgILlrp/jga/jgIHjgZPjgozjgpLjgZnjgovjgajjgIF7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfSDjgajjga/jgYTjgovjga7jgafjgZnjgYzjgIHjgrPjg7zjg4njga/jgb/jgZvjgovjgYzjgIHlrp/ooYzjga/jgZfjgarjgYTmmYLjga/jgIFldmFsID0gRkFMU0Ug44Gg44GR44KS5YWl44KM44Gm44GK44GP44KI44GG44Gr44CB44KP44Gf44GX44Gv44GX44Gm44GE44G+44GZ44CCCiAgICAK5pyA5b6M44GuIENodW5rIE9wdGlvbnMg44KS6YG45oqe44GZ44KL44Go44CBT3B0aW9uIOOBruips+e0sOOBjOabuOOBi+OCjOOBpuOBhOOBvuOBmeOAggoKIyDjgYrjgo/jgorjgasKCiMjIOODiOODqeODluODq+ODu+OCt+ODpeODvOODhuOCo+ODs+OCsAoK44GE44KN44GE44KN44Gq5ZWP6aGM44GM6IOM5pmv44Gr44GC44KK44CB5LiA6Iis55qE44Gr44Gv44GL44GR44G+44Gb44KT44CC5LiW55WM44Gu5ZWP6aGM44O76Kqy6aGM44Go5ZCM44GY44Gn44GZ44CC44GT44KM44GM44CB5ZWP6aGM44Gn44GZ44Go44GE44GG44GT44Go44Gv44Gn44GN44G+44Gb44KT44KI44Gt44CCCgrjgZfjgYvjgZfjgIHmvJTnv5LjgpLmi4XlvZPjgZfjgabjgIHos6rllY/jgZXjgozjgZ/jgorjgIHoqrLpoYzjgpLjgb/jgabjgYTjgabjgIHjgo/jgYvjgaPjgZ/llY/poYzjgarjganjgpLkuK3lv4PjgavlsJHjgZfmm7jjgYTjgabjgYrjgY3jgb7jgZnjgIIKCi0gICBFcnJvcjogLi4uIGRvZXMgbm90IGV4aXN0LgogICAgLSDjgZXjgb7jgZbjgb7jgarog4zmma/jgYzogIPjgYjjgonjgozjgb7jgZnjgILjgb7jgZrjga/jgIHjgZPjga7mnIDliJ3jgavoqqzmmI7jgZfjgZ/jgIFSIE5vdGVib29rIOOBruS/neWtmOWgtOaJgOOBq+OAgWRhdGEg44OV44Kp44Or44OA44O844GM44Gq44GE44Gf44KB44Gr44CB5pu444GN6L6844KB44Gq44GE44GT44Go44GM44GC44KK44G+44GZ44CC5aSn5YiH44Gq44Gu44Gv44CBUiBOb3RlYm9vayDjgajjgIFkYXRhIOODleOCqeODvOODq+ODgOOBjOOBguOCi+OBi+OBquOBhOOBi+OBp+OBr+OBquOBj+OAgeOBqeOBk+OBq+OBguOCi+OBi+OAgeWQjOOBmOWgtOaJgOOBq+OBguOCi+OBi+OBqeOBhuOBi+OBp+OBmeOAguWkmuOBj+OBruWgtOWQiOOAgWRhdGEg44OV44Kp44Or44OA44Gu5Lit44Gr44CBUiBOb3RlYm9vayDjgYzkvZzmiJDjgZXjgozjgabjgabjgIFkYXRhIOOBq+abuOOBjei+vOOCgeOBquOBhOOBqOOBhOOBhueKtuazgeOBjOeUn+OBmOOBpuOBhOOBvuOBl+OBn+OAgndyaXRlX2NzdihkZl9jbzJfZm9zc2lsLCAiZGF0YS9jbzJfZm9zc2lsLmNzdiIpIOOBr+OAgeiqreOBv+i+vOOCk+OBoOOAgWRmX2NvMl9mb3NzaWwg44Go5ZCN5YmN44KS44Gk44GR44Gf44OH44O844K/44KS44CBZGF0YSDjg5Xjgqnjg6vjg4Djga7kuK3jgavjgIFjbzJfZm9zc2lsLmNzdiDjgajjgYTjgYblkI3liY3jga7jgIFDU1Yg5b2i5byP77yI44Kr44Oz44Oe5Yy65YiH44KJ44KM44Gf44OG44Kt44K544OI44OH44O844K/77yJ44Go44GX44Gm44CB5pu444GN6L6844KA44Go44GE44GG5ZG95Luk44Gn44GZ44CCZGF0YSDjg5Xjgqnjg6vjg4DjgYzjgarjgZHjgozjgbDjgIHmm7jjgY3ovrzjgoHjgb7jgZvjgpPjgZfjgIFkYXRhIOODleOCqeODq+ODgOOBjOOAgVIgTm90ZWJvb2sg44Gu44GC44KL5aC05omA44Gr44CB44Gq44GR44KM44Gw5pu444GN6L6844KB44G+44Gb44KT44CC5qyh44Gr44CBZGZfY28yX2Zvc3NpbCA8LSByZWFkX2NzdigiZGF0YS9jbzJfZm9zc2lsLmNzdiIpIOOBqOOBl+OBpuOAgeOCguOBhuS4gOW6puiqreOBv+i+vOOCk+OBp+OBhOOBvuOBmeOBjOOAgeOBk+OBruOBqOOBjeOCguOAgWRhdGEg44OV44Kp44Or44OA44Gu44Gq44GL44Gr44CBY28yX2Zvc3NpbC5jc3Yg44Go44GE44GG5ZCN5YmN44Gu44CBQ1NWIOODleOCoeOCpOODq+OBjOOBquOBhOOBqOiqreOBv+i+vOOCgeOBvuOBm+OCk+OAggogICAgLSDkvZXjgYvjgYzjgarjgYTjgajoqIDjgo/jgozjgZ/jgonjgIHjgZ3jgozjgYzmnIDliJ3jgavkvZzmiJDjgZXjgozjgZ/loLTmiYDjgavjgoLjganjgovjgZPjgajjgafjgZnjgILjgZ/jgajjgYjjgbDjgIFkZl9jbzJfZm9zc2lsIOOBp+OBguOCjOOBsOOAgeacgOWIneOBq+OAgVdESSgpIOOBp+iqreOBv+i+vOOCgOOBqOOBk+OCjeOBp+OAgemBqeWIh+OBq+Wumue+qeOBleOCjOOBpuOBhOOCi+OBi+OAgeOBvuOBn+OBr+OAgSDjgYzpganliIfjgavjgarjgZXjgozjgabjgYTjgovjgYvjgafjgZnjgILoqq3jgb/ovrzjgoDmmYLjgavjgIHliY3jga7jgrPjg7zjg4njga7jgb7jgb7jgafjgIFyZWFkX2NzdigiZGF0YS9jbzJfZm9zc2lsLmNzdiIpIOOBrumDqOWIhuOBjOOAgXJlYWRfY3N2KCJkYXRhL3VuZW1wbG95bWVudC5jc3YiKSDjgarjganjgajjgarjgaPjgabjgYTjgZ/jgonjgIHjgYrjgYvjgZfjgYTjgafjgZnjgojjga3jgIIKICAgIC0gUkVHSU9OIOOBjOOBquOBhOOBqOiogOOCj+OCjOOBn+OCieOAgeOBneOCjOOCkuWumue+qeOBl+OBpuOBguOCi+OCs+ODvOODieOBjOOAgeWun+ihjOOBleOCjOOBpuOBhOOCi+OBi+eiuuiqjeOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAguOBneOBruOCiOOBhuOBquOBk+OBqOOCguOBguOCi+OBruOBp+OAgeOCqOODqeODvOOBjOWHuuOBn+OCieOAgVJ1biBBbGwgQ2h1bmtzIEFib3ZlIOOCkuOBl+OBpuOBv+OCi+OBruOCguS4gOOBpOOBp+OBmeOAggogICAgLSDmrKHjgavlpJrjgYTjga7jgYzjgIHntrTjgorjga7plpPpgZXjgYTjgafjgZnjgILjgrnjg5rjg6vjgpLjgZfjgaPjgYvjgorjg4Hjgqfjg4Pjgq/jgZfjgb7jgZfjgofjgYbjgIIKICAgIAotICAgRXJyb3I6IEluY29tcGxldGUgZXhwcmVzc2lvbgogICAgLSDjgYvjgaPjgZPjgYzotrPjgorjgarjgYvjgaPjgZ/jgorjgIHmnIDlvozjgavjgIF8PiDjgoTjgIErIOOBp+e1guOCj+OBo+OBpuOCi+WgtOWQiOOBq+OCiOOBj+WHuuOBvuOBmeOAgnw+IOOBr+asoeOBq+OAgeODh+ODvOOCv+OCkua4oeOBmeWRveS7pOOBp+OBmeOBi+OCieOAgeWPl+OBkeWPluOCiuWBtOOBjOOBquOBhOOCj+OBkeOBp+OBmeOBl+OAgSsg44Gv44CBZ2dwbG90IOOBp+OAgeWbs+OCkuaPj+OBj+aZguOBq+OAgemghuOBq+e5i+OBkuOBpuOBhOOBj+OBn+OCgeOBruOCguOBruOBp+OBmeOBi+OCieOAgeOBneOBruOBguOBqOOBq+OBr+OAgeS9leOBi+OBjOe2muOBj+OBr+OBmuOBp+OBmeOAggogICAgCi0gICBFcnJvcjogdW5leHBlY3RlZCBpbnB1dCBpbjoKICAgIC0g44GT44KM44Gv44CB44GE44KN44GE44KN44Gq55CG55Sx44GM44GC44KK5b6X44G+44GZ44GM44CB5YWo6KeS56m655m944Gr44KI44Gj44Gm55Sf44GY44KL5aC05ZCI44GM44GC44KK44G+44GZ44CCRWRpdCDjgYvjgonjgIFGaW5kIOOCkumBuOOBs+OAgeaknOe0oueqk+OBq+OAgeWFqOinkuOBp+epuueZveOCkuOBhOOCjOOAgVJlcGxhY2Ug44Gu5pa544Gr44Gv44CB5Y2K6KeS44Gn56m655m944KS5YWl44KM44CBTmV4dCDjgajjgZfjgIHopovjgaTjgYvjgaPjgZ/jgonjgIFSZXBsYWNlIOOCkuaKvOOBmeOBqOS/ruato+OBp+OBjeOBvuOBmeOAguengeOBjOS+i+OBq+aMmeOBkuOBn+OAgWNvb3JkX2ZsaXAoKSDjga7jgYLjgajjgavjgIHlhajop5Lnqbrnmb3jgYzjgYLjgorjgIHjgZ3jgozjgpLjgIHjgrPjg5Tjg7zjgZfjgabjgZfjgb7jgYTjgIHlhajop5Lnqbrnmb3jgYzlhaXjgaPjgabjgZfjgb7jgYbkvovjgoLjgYLjgaPjgZ/jgojjgYbjgafjgZnjgILml6XmnKzoqp7jgrfjgrnjg4bjg6Djgafjga/jgIHnhKHoppbjgZnjgovloLTlkIjjgoLjgYLjgorjgb7jgZnjgYzjgIFQb3NpdENsb3VkIOOBp+OBr+OCqOODqeODvOOBq+OBquOCiuOBvuOBmeOAggogICAgCi0gICBSIE5vdGVib29rIOOBp+OAgVJ1biBDb2RlIOOCkuOBmeOCi+OBqOOAgeWVj+mhjOOBquOBj+Wbs+OBjOePvuOCjOOCi+OBruOBq+OAgeacgOW+jOOBq+OAgVIgTm90ZWJvb2sg44KS44CBQnJvd3NlciDjgafnorroqo3jgZnjgovjgajjgIHmnIDlvozjga7mlrnjga7lm7PjgYzooajnpLrjgZXjgozjgarjgYTjgIIKICAgIC0g44GT44KM44Gv44CB6YCU5Lit44Gr44CBYGBgIOOBvuOBn+OBr+OAgS0tLSAg44Gq44Gp44GM5YWl44KK6L6844KT44Gn44GE44KL5aC05ZCI44GM5aSa44GE44Gn44GZ44CC44KP44Gf44GX44Gv44CB44Gp44GG44GZ44KL44GL44Go44GE44GG44Go44CBUnVuIEFsbCDjgpLjgZfjgb7jgZnjgILjgZnjgovjgajjgIHjgqjjg6njg7znrofmiYDjgYzjgo/jgYvjgovloLTlkIjjgYzjgYLjgorjgb7jgZnjgILjgZ3jgZPjgafjgIHjgrPjg7zjg4njgpLkv67mraPjgZnjgovjgILjgo/jgYvjgonjgarjgYTjgajjgY3jga/jgIHjgZ3jgozjgojjgorkuIvjgpLjgIFDdXTvvIhXaW5kb3dzIOOBp+OBr+OAgUN0cmwgKyBY44CBTWFjIOOBp+OBr+OAgUNvbW1hbmQgKyBY77yJ44KS44GX44Gm44CBIFIgTm90ZWJvb2sg44GM6YGp5YiH44Gr55Sf5oiQ44GV44KM44KL44GL44KS44G/44G+44GZ44CC44Gn44GN44Gm44GE44KM44Gw44CBQ3RybCArIFYgTWFjIOOBp+OBr+OAgUNvbW1hbmQgKyBWIOOBvuOBn+OBr+OAgUN0cmwgKyBaIChNYWMg44Gn44Gv44CBQ29tbWFuZCArIFopIOOBp+WFg+OBq+aIu+OBl+OAgeOBmeOBk+OBl+OAgeWFiOOBi+OCieOBguOBqOOCkuOAgeOCq+ODg+ODiOOBl+OBvuOBmeOAguOBqOmghuOBq+OAgeOBv+OBpuOBhOOBj+OBqOOAgeOBqeOBk+OBjOWVj+mhjOOBi+OBjOOCj+OBi+OCiuOBvuOBmeOAguOBk+OCjOOBr+OAgeOBiuOBneOCieOBj+OAgeOCs+ODlOODvOOCkuOBmeOCi+OBqOOBjeOBq+OAgemWk+mBleOBo+OBpuOAgWBgYCDjgb7jgaflkKvjgoHjgabjgrPjg5Tjg7zjgZfjgabjgZfjgb7jgYbjgojjgYbjgarjgZPjgajjgYvjgonotbfjgZPjgovjga7jgafjgZfjgofjgYbjgILlrp/pmpvjgIHjgrDjg6njg5XjgYzjgYLjgovjgajjgIHplpPpgZXjgYTjgYzjgo/jgYvjgYLjgorjgaXjgonjgYTjgZPjgajjgoLjgYLjgovjgojjgYbjgafjgZnjgIJ4IOOCkuaKvOOBl+OBpuOAgeWbs+OCkuOAgea2iOOBmeOBqOOAgemWk+mBleOBhOOBjOOCj+OBi+OCiuOChOOBmeOBhOOBk+OBqOOBjOWkmuOBhOOCiOOBhuOBp+OBmeOAguOBm+OBo+OBi+OBj+WHuuOBpuOBjeOBn+Wbs+OCkua2iOOBmeOBruOBq+WLh+awl+OBjOOBhOOCi+OBruOBp+OBl+OCh+OBhuOBjOOAggogICAgLSDku6XliY3jgIFDb2RlIGNodW5rIOOBruS4reOBp+OCguWQjOOBmOOCiOOBhuOBquOBk+OBqOOCkuOBl+OBvuOBl+OBn+OAguS4iuOBruOBu+OBhuOBi+OCieOAgeOBv+OBpuOBhOOBjeOAgeWkp+S4iOWkq+OBoOOBqOaAneOBhuOBqOOBk+OCjeOBruasoeOBi+OCieOAgUN1dCDjgZfjgIHlrp/ooYzjgZfjgb7jgZnjgILjgYbjgb7jgY/jgYTjgaPjgabjgYTjgZ/jgonjgIHmrKHjga7loYrjgb7jgafjgoLjganjgZfjgabjgIHlrp/ooYzjgILkuIDjgrnjg4bjg4Pjg5fjgIHkuIDjgrnjg4bjg4Pjg5fjgIHnorroqo3jgZnjgovjgZPjgajjgafjgZnjgYvjgonjgIHmnInlirnjgafjgIHkuIDoiKznmoTjgafjgoLjgYLjgorjgb7jgZnjgIIKICAgIAotICAg44Gq44KT44Gg44GL44KP44GL44KJ44Gq44GP44Gq44Gj44Gf44KJ44CCCiAgICAtIOWVj+mhjOOBr+OAgeiHquWIhuiHqui6q+OBjOODkeODi+ODg+OCr+OBq+mZpeOCi+OBk+OBqOOBp+OBmeOAguWGt+mdmeOBleOCkuOBhuOBl+OBquOBhOOAgeOCiOOBtuOCk+OBquOBk+OBqOOCkuOBqeOCk+OBqeOCk+OBl+OBvuOBmeOAguOBvuOBmuOBr+OAgeOBneOBk+OBvuOBp+OCkuOAgFNhdmUg44GX44CB5qyh44Gr44CBU2F2YSBhcyDjgafpgZXjgaPjgZ/lkI3liY3jgavjgZfjgabjgIHjgqvjg4Pjg4jjgarjganjgpLkvb/jgaPjgabjgIHkuIrjgYvjgonpoIbjgavjgb/jgabjgYTjgY/jgILjgZ3jgozjgafjgoLjgIHjgYbjgb7jgY/jgYTjgYvjgarjgYvjgaPjgZ/jgonjgIHmnIDliJ3jgYvjgonjgoTjgornm7TjgZnjgILjgZ/jgaDjgZfjgIHlpKfkuIjlpKvjgZ3jgYbjgarjgajjgZPjgo3jga/jgIHjgrPjg5Tjg7zjg7vjg5rjg7zjgrnjg4jjgZfjgabjgIHliY3jga7jgoLjga7jgpLkvb/jgYbjgIIKICAgIC0g57eo6ZuG44Gr44KC44GC44KL44CBVW5kbywgUmVkbyDjgoLmnInlirnjgafjgZnjgojjgILjgaDjgYTjgZ/jgYTjgIHplpPpgZXjgaPjgZ/mmYLjga/jgIHnm7Tov5HjgaflpInjgarjgZPjgajjgpLjgZfjgZ/jgZPjgajjgYzlpJrjgYTjga7jgafjgIIKICAgIArvvIjjgb7jgZ/msJfjgaXjgYTjgZ/jgonmm7jjgYTjgabjgYrjgY3jgb7jgZnvvIkKCiMjIOOCqOODqeODvOWvvuW/nAoKLSAgIOWFpeWKm+OBl+OBn+OBqOOBjeOBq+OBr+OAgeS+i+OCkuWPgueFp+OBl+OBpuOAgeOCueODmuODq+OCkueiuuiqjeOAguWFqOinkuOChOWkieaVsOWQjeOBruepuueZveOBr+WVj+mhjOOCkui1t+OBk+OBmeOAguaLrOW8p+OAgCgpIOOChOW8leeUqOespuOBjOODmuOCouOBp+ODnuODg+ODgeOBl+OBpuOBhOOCi+OBi+OAgeeiuuiqjeOAguW8leeUqOespuOBjOWFpeOBo+OBpuOBhOOBquOBi+OBo+OBn+OCiuOAgT09IOOBruOBqOOBk+OCjeOBjOOAgT0g44Gg44Gj44Gf44KK44CBRXJyb3Ig44Gv5qeY44CF44CCCi0gICBGaWxlIG5vdCBmb3VuZCDjga7jgajjgY3jga/jgIHjg4fjg7zjgr/jgpLoqq3jgb/ovrzjgoDjgrPjg7zjg4njgpLlho3lrp/ooYzjgILjgZ3jgozjgafjgoLjgYbjgb7jgY/jgYTjgYvjgarjgYTjgajjgY3jga/jgIFkYXRhIOODleOCqeODq+ODgOOBq+OAgeODh+ODvOOCv++8iFwqXCpcKi5jc3bvvInjgYzlhaXjgaPjgabjgYTjgovjgYvjgpLnorroqo3jgIHjgarjgZHjgozjgbDjgIFkYXRhIOODleOCqeODq+ODgOOBjOOBguOCi+OBk+OBqOOCkueiuuiqjeOAgeOBquOBkeOCjOOBsOS9nOaIkOOBl+OBpuiqreOBv+i+vOOBv+OCkuWun+ihjOOAggotICAgT2JqZWN0IG5vdCBmb3VuZCDjga7jgqjjg6njg7zjgYzjgafjgZ/jgajjgY3jgavjga/jgIHkuIrjgYvjgonpoIbjgavjgIFSdW4g77yIQ29kZSBDaHVuayDjga7lj7PkuIrjga7kuInop5LljbDjgpLmirzjgZfjgablrp/ooYzvvInjgILjgb7jgZ/jga/jgIHjgqjjg6njg7znrofmiYDjgavjgqvjg7zjgr3jg6vjgpLnva7jgY3jgIFSdW4g44Oc44K/44Oz44Gu5Y+z44Gu5LiJ6KeS44GL44KJ44CBUnVuIEFsbCBDaHVua3MgQWJvdmUg44KS6YG45oqe44GX44Gm5a6f6KGM44CCCi0gICDlrp/ooYzjgafjgY3jgabjgYTjgabjgoLjgIHntZDmnpzjgYzopovjgYjjgarjgYTjgZPjgajjgYzjgYLjgovjgILjgZ3jga7jgajjgY3jga/jgIFDb2RlIENodW5rIOOBruS4i+OBq+OBguOCi+OAgeWxseS6jOOBpOOBruiomOWPt+OCkuaKvOOBmeOAgue1kOaenOOBruihqOekuuOAgemdnuihqOekuuOBruWIh+OCiuabv+OBiOOAggotICAgRXJyb3IgbWVzc2FnZSDjgpLoqq3jgoDjgILjgqjjg6njg7zjgYzlh7rjgZ8gQ29kZSBDaHVuayDjgajjgIFFcnJvciBtZXNzYWdlIOOCkuOAgUNoYXRHUFQg44KE44CBR29vZ2xlIEJhcmQsIEdvb2dsZSBTZWFyY2gg44Gr5YWl44KM6Kej5rG65pa55rOV44KS5o6i44KL44CCCi0gICBQb3NpdC5DbG91ZCDjgafjgIFFcnJvciAxMzcg44GM5Ye644Gf5pmC44Gv44Oh44Oi44Oq44O844Kq44O844OQ44O844Gq44Gu44Gn44CB5L6L44Gq44Gp5LiN6KaB44Gq6YOo5YiG44KS5YmK6Zmk44CC44Gf44Gg44GX44CB5LiA55Wq5LiK44Gu44CBWUFNTCDjga/jgIHjgYvjgarjgonjgZrmrovjgZnjgZPjgajjgILku5bjgavjgoLjgIFzZWxlY3Qg44Gn55+t44GE44OH44O844K/44Gr44GX44Gf44KK44CBbG9uZyDjg4fjg7zjgr/jgpLkvZzmiJDjgZnjgovjgojjgYbjgarjgajjgY3jgavjgIF7cn0g44Gu6YOo5YiG44KS44CBe3IgY2FjaGUgPSBUUlVFfSDjgajjgZfjgabjgIHjgq3jg6Pjg4Pjgrfjg6XjgZnjgovjgZPjgajjgafjgIHjg6Hjg6Ljg6rjg7zjgpLnr4DntITjgZnjgovjgZPjgajjgafjgIHjgqjjg6njg7zjgpLlm57pgb/jgafjgY3jgovloLTlkIjjgoLjgYLjgorjgb7jgZnjgILjgZfjgYvjgZfjgIHjgYrjgZnjgZnjgoHjgarjga7jga/jgIHliY3ljYrjgajjgIHlvozljYrjgarjganjgavliIbjgZHjgabjgIHjg5XjgqHjgqTjg6vjgpLkvZzmiJDjgZnjgovjgZPjgajjgafjgZnjgILmnIDliJ3jga7jg4fjg7zjgr/jgpLjgojjgb/ovrzjgoDjgajjgZPjgo3jga/lv4XopoHjgafjgZnjgYvjgonjgIHjgb7jgZrjgIHjgrPjg5Tjg7zjgpLkvZzmiJDjgZfjgIHmnIDliJ3jga7jg5XjgqHjgqTjg6vjga/oppbopprljJbjga7lvozljYrjgpLmtojljrvjgIHkuozjgaTnm67jga7jg5XjgqHjgqTjg6vjga/jgIHoppbopprljJbjga7liY3ljYrjgpLmtojljrvjgajjgZnjgovjgarjganjgZfjgabjgb/jgabjgY/jgaDjgZXjgYTjgILnn63jgYTjg5XjgqHjgqTjg6vjgafjgYLjgozjgbDjgIHllY/poYzjgarjgYTjgajmgJ3jgYTjgb7jgZnjgIIKCiMjIOWPguiAg+aWh+eMrgoKLSAgIOiqsumhjDHvvJrop6PoqqwgW+ODquODs+OCr10oaHR0cHM6Ly9kcy1zbC5naXRodWIuaW8vaW50cm8yci9nZXMwMDEvdzVhX3Jlc3BvbnNlLm5iLmh0bWwp44O76Kej562U5L6LIFvjg6rjg7Pjgq9dKGh0dHBzOi8vZHMtc2wuZ2l0aHViLmlvL2ludHJvMnIvZ2VzMDAxL3c1ZWRhMC5uYi5odG1sKQotICAg56ysNumAsea8lOe/ku+8muino+etlOS+iyBb44Oq44Oz44KvXShodHRwczovL2RzLXNsLmdpdGh1Yi5pby9pbnRybzJyL2dlczAwMS93NmVkYTAubmIuaHRtbCkKCjEuICDjgIzjgb/jgpPjgarjga7jg4fjg7zjgr/jgrXjgqTjgqjjg7PjgrkgLSBEYXRhIFNjaWVuY2UgZm9yIEFsbOOAjVtb44Gv44GY44KB44Gm44Gu44OH44O844K/44K144Kk44Ko44Oz44K5XShodHRwczovL2ljdS1oc3V6dWtpLmdpdGh1Yi5pby9kczRhai9maXJzdC1leGFtcGxlLmh0bWwjZmlyc3QtZXhhbXBsZSldCgoyLiAgUG9zaXQgUmVjaXBlc++8iOaXpyBQb3NpdCBQcmltZXJz77yJOiBUaGUgQmFzaWNzIOWvvuipseWei+OBrua8lOe/kuOCteOCpOODiOOBruacgOWInSBbW0xpbmtdKGh0dHBzOi8vcG9zaXQuY2xvdWQvbGVhcm4vcmVjaXBlcyldCgozLiAgUG9zaXQgQ2hlYXQgU2hlZXQuIOaXqeimi+ihqOOBp+OBmeOAguWNsOWIt+OBl+OBpuS9v+OBhuOBn+OCgeOBq+OAgVBERiDjgoLmj5DkvpvjgZfjgabjgYTjgb7jgZnjgIJbW1NpdGUgTGlua10oaHR0cHM6Ly9yc3R1ZGlvLmdpdGh1Yi5pby9jaGVhdHNoZWV0cy8pXQoKNC4gIERhdGFDYW1wIENoZWF0IFNoZWV0OiBUaWR5dmVyc2UgZm9yIEJpZ2lubmVycy4g44OH44O844K/44K144Kk44Ko44Oz44K544Gu5pWZ6IKy44KS44GX44Gm44GE44KL5Lya56S+44Gu5pep6KaL6KGo44Gu5LiA44Gk44Gn44GZ44CC5Z+65pys44GM57Ch5Y2Y44Gr44G+44Go44G+44Gj44Gm44GE44G+44GZ44CCW1tMaW5rXShodHRwczovL2ltYWdlcy5kYXRhY2FtcC5jb20vaW1hZ2UvdXBsb2FkL3YxNjc2MzAyNjk3L01hcmtldGluZy9CbG9nL1RpZHl2ZXJzZV9DaGVhdF9TaGVldC5wZGYpXQoKNS4gIOeuseOBsuOBkuWbs+OBruimi+aWuSBbTGlua10oaHR0cHM6Ly9iZWxsY3VydmUuanAvc3RhdGlzdGljcy9jb3Vyc2UvNTIyMC5odG1sKeOAgeWkluOCjOWApOaknOWHuuOBruOBguOCi+euseOBsuOBkuWbsyBbTGlua10oaHR0cHM6Ly9iZWxsY3VydmUuanAvc3RhdGlzdGljcy9jb3Vyc2UvNTIyMi5odG1sKQoKNi4gIFZpZGVvOiBbSGlzdG9ncmFtXShodHRwczovL3ZpbWVvLmNvbS8yMjE2MDczNDEpLCBbQm94cGxvdF0oaHR0cHM6Ly92aW1lby5jb20vMjIyMzU4MDM0KQoK