library(kableExtra)
library(tidyverse)
library(dplyr)
library(ggplot2)
library(gridExtra)

Khi đó các giá trị phù hợp cho bốn loại ngáy ngủ sẽ thay đổi một chút. Nhưng chúng sẽ không thay đổi nếu khoảng cách tương đối giữa các điểm số là như nhau, chẳng hạn như {0, 4, 8, 10} hoặc {1, 3, 5, 6}. Cho dù vậy, đối với những dữ liệu này, bất cứ điểm số nào tăng đều cho kết luận rằng nguy cơ mắc bệnh tim tăng lên khi mức ngáy tăng lên.

Nếu nhập dữ liệu là 2484 quan sát nhị phân của 0 hoặc 1 và ước lượng mô hình xác suất tuyến tính bằng OLS:

\[\begin{array}{lrllr} \hline \text{Dependent Variable}: \text{𝜋} \\ \text{Method: Least Squares} \\ \text{Included observations}: 2484 & & & & \\ \hline \text{Variable} & \text{Coefficient} & \text{Std. Error} & \text{z-Statistic} & \text{Prob.} \\ \hline\hline \text{C} & 0.016872 & 0.020038 & 3.271697 & 0.0011 \\ \text{X} & 0.020038 & 0.002317 & ~~~8.649795 & 0.0000 \\ \hline\hline \text{R-squared} & 0.029263 & \text{Mean dependent var} & & 0.044283 & \\ \text{S.E. of regression} & 0.202773 & \text{Akaike info criterion} & & -0.352651 & \\ \text{Log likelihood} & 439.9923 & \text{Hannan-Quinn criter} & & -0.350950 & \\ \text{Prob(F-statistic)} & 0.000000 & & & \\ \end{array}\]

Bảng 3.3. Kết quả hồi quy mô hình xác suất tuyến tính cho dữ liệu bảng 3.1 bằng OLS

Chúng ta nhận được mô hình xác suất tuyến tính ước lượng:

\[ \hat{\pi} = 0,016872+0,020038.x \] Trong thực tế, khi mẫu phù hợp, ước lượng OLS và ước lượng ML thường gần nhau.

Mô hình hồi quy logistic

Như trên chúng ta đã thấy sự hạn chế của mô hình xác suất tuyến tính. Sự thay đổi của xác suất thành công tuy phụ thuộc đơn điệu theo X, nhưng thường là phi tuyến. Các đường cong hình chữ S thể hiện trong hình 3.2 thường là hình dạng thực tế cho mối quan hệ. Để khắc phục các hạn chế trên của LPM, người ta muốn tìm một hàm liên kết mà nó đồng biến với xác suất 𝜋 và giá trị biến thiên của nó là tùy ý (từ \(-\infty\) đến \(+\infty\) ). Hàm liên kết được đề xuất là \(\log(\frac{\pi(x)}{1-\pi(x)})\), được gọi là hàm \(logit(\pi)\) và ký hiệu là và mô hình hồi quy tương ứng là:

\[\begin{equation*} \log(\frac{\pi(x)}{1-\pi(x)})= \alpha + \beta x \tag{3.2.2} \end{equation*}\]

Đây được gọi là mô hình logistic hay mô hình logit. Từ mô hình, ta có: \[\pi(x) = \frac{1}{1 + e^{-\alpha + \beta x}}\]

Mô hình hồi quy logistic là trường hợp đặc biệt của GLM. Thành phần ngẫu nhiên (thành công, thất bại) là nhị phân. Hàm liên kết logit của \(\pi\) là phép biến đổi \(\log[\frac{\pi}{1 - \pi}]\), ký hiệu bởi \(logit(\pi)\) . Các mô hình hồi quy logistic thường được gọi là mô hình logit. Logit là tham số tự nhiên của phân phối nhị thức. Trong đó \(\pi\) bị giới hạn trong phạm vi (0, 1), logit có thể là số thực bất kỳ. Tập số thực cũng là khoảng giá trị có thể có cho các dự báo tuyến tính \((\alpha + \beta x)\), do đó, mô hình này không có vấn đề cấu trúc mà mô hình xác suất tuyến tính mắc phải.

# Hàm logistic
logistic <- function(x, beta0, beta1) {
  1 / (1 + exp(-(beta0 + beta1 * x)))
}

# Tạo dữ liệu cho biến độc lập X
x <- seq(-10, 10, by = 0.1)

# Hệ số cho mô hình logistic
beta0 <- 0
beta1_positive <- 1
beta1_negative <- -1

# Tính xác suất P(Y=1) cho mỗi giá trị của X
y_positive <- logistic(x, beta0, beta1_positive)
y_negative <- logistic(x, beta0, beta1_negative)

# Tạo data frame để dùng ggplot2
data_positive <- data.frame(x = x, y = y_positive)
data_negative <- data.frame(x = x, y = y_negative)

# Vẽ đồ thị
plot1 <- ggplot(data_positive, aes(x = x, y = y)) +
  geom_line() +
  labs(title = expression(beta > 0), y = "Y", x = "X") +
  theme_minimal() +
  ylim(0, 1)

plot2 <- ggplot(data_negative, aes(x = x, y = y)) +
  geom_line() +
  labs(title = expression(beta < 0), y = "Y", x = "X") +
  theme_minimal() +
  ylim(0, 1)

grid.arrange(plot1, plot2, ncol = 2)

Hình 3.2 (a,b)

Tham số \(\beta\) trong (3.2.2) là tốc độ biến thiên của logit nhưng logit đồng biến theo \(\pi(x)\) nên khi nó cũng thể hiện xu hướng biến thiên của \(\pi(x)\) theo x. Khi \(\beta>0\) , \(\pi(x)\) tăng khi tăng, như trong hình 3.2a. Khi \(\beta<0\), \(\pi(x)\) giảm khi x tăng, như trong hình 3.2b. Độ lớn của xác định tốc độ tăng hoặc giảm đường cong. Khi \(|\beta|\) tăng, đường cong có tỷ lệ thay đổi dốc hơn. Khi \(\beta=0\) , đường cong phẳng gần như đường thẳng nằm ngang.

Phương pháp ML để tìm ước lượng \(\hat{\alpha},\hat{\beta}\) cho các hệ số \(\alpha,\beta\) là trên cơ sở mẫu quan sát: {\((x_1,y_1),(x_2,y_2),...,(x_n,y_n)\)}, tìm nghiệm của phương trình hợp lý: \[\begin{align}\begin{cases}\frac{\partial log(L(\alpha,\beta))}{\partial\alpha}=0\\\frac{\partial log(L(\alpha,\beta))}{\partial\beta}=0\end{cases}\end{align}\]

Với hàm hợp lý: \(L(\alpha,\beta) = \prod \limits_{i}\pi^{y_i}(x_i).[1- \pi(x_i)]^{1-y_i} (\pi(x)=\frac{1}{1+e^{-\alpha-\beta x}})\)

Ví dụ 2: Đối với dữ liệu bệnh ngáy và bệnh tim ở Bảng 3.1, phần mềm cho thấy sự phù hợp của ML đối với mô hình hồi quy logistic

\[\begin{array}{lrllr} \hline \text{Dependent Variable}: \text{Y} \\ \text{Method: ML - Binary Probit (Quadratic hill climbing)} \\ \text{Included observations}: 2484 & & & & \\ \hline \text{Variable} & \text{Coefficient} & \text{Std. Error} & \text{z-Statistic} & \text{Prob.} \\ \hline\hline \text{C} & -3.866248 & 0.397337 & 0.166214 & 0.050011 \\ \text{X} & -23.26061 & 7.945039 & ~~~40.0000 & 0.0000 \\ \hline\hline \text{McFadden R-squared} & 0.070042 & \text{Mean dependent var} & & 0.044283 & \\ \text{Akaike info criterion} & 0.338861 & \text{Sum squared resid} & & 102.1917 & \\ \text{Schwarz criterion} & 0.343545 & \text{Log likelihood} & & -418.8658 & \\ \text{Hannan-Quinn criter.} & 0.340562 & \text{Deviance} & & 837.7316 & \\ \text{Restr. deviance} & 900.8272 & \text{Restr. log likelihood} & & -450.4136 & \\ \text{LR statistic} & 63.09557 & \text{Avg. log likelihood} & & -0.168626 & \\ \text{Prob(LR statistic)} & 0.000000 & & & \\ \hline \text{Obs with Dep}=0 & 2374 & \text{Total obs} & & 2484 & \\ \text{Obs with Dep}=1 & 110 \\ \hline \end{array}\]

Bảng 3.4. Hồi quy logistic cho dữ liệu bảng 3.1

\[logit[\hat\pi(x)] = −3,866248+0,397337. x \] - Diễn giải kết quả hồi quy: - Giá trị \(\hat\beta=0,397337\) phản ánh sự gia tăng nguy cơ mắc bệnh tim ở mức độ ngáy cao hơn.

  • Tính xác suất mắc bệnh tim ứng với các mức ngáy:

    • \(x = 0\), \(logit[\hat\pi(0)] = −3,866248+0,397337.0=−3,866248\) nên \(\hat\pi(0)=\frac{e^{-3,866248}}{1 + e^{-3,866248}} = 0,020507417\), nghĩa là: xác suất mắc bệnh tim đối với người không ngáy là khoảng 2,051%.

    • \(x = 2\), \(logit[\hat\pi(2)] = −3,866248+0,397337.2=−3,071574\) nên \(\hat\pi(2)=\frac{e^{-3,071574}}{1 + e^{-3,071574}} = 0,044295\), nghĩa là xác suất mắc bệnh tim đối với người thỉnh thoảng ngáy là khoảng 4,43%.

    • \(x = 4\), \(logit[\hat\pi(4)] = −3,866248+0,397337.4=−2,2769\) nên \(\hat\pi(2)=\frac{e^{−2,2769}}{1 + e^{−2,2769}} = 0,093054\), nghĩa là xác suất mắc bệnh tim đối với người ngáy gần như mỗi đêm là khoảng 9,31%.

    • \(x = 5\), \(logit[\hat\pi(4)] = −3,866248+0,397337.5=−1,879563\) nên \(\hat\pi(2)=\frac{e^{−1,879563}}{1 + e^{−1,879563}} = 0,132439\),nghĩa là xác suất mắc bệnh tim đối với người ngáy mỗi đêm là khoảng 13,244%.

Khoảng tin cậy cho các hệ số trong mô hình được tính bằng phần mềm và kết quả như sau:

data_frame5 <- data.frame(
  Variable = c("C", "N"),
  Coefficient = c(-3.866248, 0.397337),
  Low = c(-4.139748, 0.315046),
  High = c(-3.592748, 0.479628),
  Low = c(-4.192181, 0.299270),
  High = c(-3.540315, 0.495404),
  Low = c(-4.294717, 0.268419),
  High = c(-3.437779, 0.526255)
)

data_frame5 %>%
  kbl(caption = "Coefficient Confidence Intervals") %>%
  kable_classic_2(full_width = F) %>%
  add_header_above(c(" " = 1, " " = 1, "90% CI" = 2, "95% CI" = 2, "99% CI" = 2))
Coefficient Confidence Intervals
90% CI
95% CI
99% CI
Variable Coefficient Low High Low.1 High.1 Low.2 High.2
C -3.8662 -4.140 -3.5927 -4.1922 -3.5403 -4.2947 -3.4378
N 0.3973 0.315 0.4796 0.2993 0.4954 0.2684 0.5263

Các liên kết nhị phân thay thế

Đối với các đường cong hồi quy logit được minh họa trong Hình 3.2, xác suất thành công tăng liên tục hoặc giảm liên tục khi tăng x. Từ mô hình logit: \[\log(\frac{\pi(x)}{1-\pi(x)})=\alpha+\beta x \]

ta có: \(\pi(x)=\frac{1}{1+e6{-\alpha+\beta x}}= F(x)\)

thì F(x) biến thiên từ 0 đến 1 và là hàm đơn điệu (tăng nếu $ > 0 $, giảm nếu $ < 0 $). Nói cách khác \(\pi(x)\) (hoặc \(1-\pi(x)\)) là hàm phân phối xác suất của một biến ngẫu nhiên. Điều này gợi mở cho ý tưởng xem \(\pi(x)\) (hoặc \(1-\pi(x)\)) là hàm phân phối xác suất F(x) của một biến ngẫu nhiên nào đó:

\[\begin{equation*} \pi(x)=F(x) \tag{3.2.3} \end{equation*}\]

Khi thay đổi hàm phân phối F(x), (3.2.3) xác định một lớp các mô hình.

Mô hình từ (3.2.3) xảy ra một cách tự nhiên khi phân phối dung sai (hay mức chịu đựng) áp dụng cho các đáp ứng của đối tượng. Chẳng hạn, đối với một loại côn trùng, mỗi con có thể chịu đựng một lượng thuốc diệt côn trùng nhất định và nó sẽ chết nếu liều lượng thuốc vượt quá mức chịu đựng. Như vậy lượng X về thuốc diệt côn trùng mà một con côn trùng có thể chịu đựng là một biến ngẫu nhiên mà: \(\pi(x)=P(X \leq x)= F(x)\) là xác suất để một con côn trùng loại này chết ở mức độ 𝑥 về lượng thuốc, tức là mô hình xác suất này có dạng (3.2.3). Chẳng hạn, nếu mức chịu đựng khác nhau giữa các con muỗi theo phân phối logistic, thì mô hình hồi quy logit sẽ được áp dụng.

Các mô hình Probit

Hồi quy Probit, đôi khi còn được gọi là mô hình probit, được sử dụng để ước lượng mô hình có biến phụ thuộc dạng nhị phân. Trong hồi quy probit, xem hàm xác suất \(\pi(x)\) là hàm phân phối xác suất của một biến ngẫu nhiên có phân phối chuẩn, tức là có dạng:

\[\begin{equation*} \pi(x)= \Phi(\alpha+\beta x) \tag{3.2.4} \end{equation*}\]

trong đó \(\Phi(x)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^x \mathrm{e}^{-\frac{-1}{2}t^2}\,\mathrm{d}t\) là hàm chuẩn tắc.

Ký hiệu: \(Probit(\pi(x))=\Phi^{-1}(\pi(x))\) và mô hình Probit được viết dươi dạng: \[Probit(\pi(x))=\alpha+\beta x\] Khi biết giá trị của xác suất \(\pi\), ta tìm được probit tương ứng và ngược lại. Chẳng hạn \(\pi(x)=0,05\), thì \(prpbit(0,05) = \Phi^{-1} (0,05) = −1,645\) ; $ = 0,5 $, thì \(probit(0,5)=\Phi^{-1}(0,5)\) ; $ probit((x))=1,96 $ thì \(\pi(x)=\Phi(1,96)=0,975,...\)

Mô hình Probit là một GLM với thành phần ngẫu nhiên nhị phân và liên kết probit.

Việc ước lượng mô hình Probit chuyển về ước lượng các tham số \(\alpha,\beta\). Để ước lượng cho hai tham số này, người ta sử dụng phương pháp ML, trong đó ước lượng hợp lý cực đại cho \(\alpha,\beta\) là nghiệm của phương trình hợp lý:

\[\begin{equation*} \begin{cases} \frac{\partial \log(L(\alpha,\beta))}{\partial \alpha} = 0 \\ \frac{\partial \log(L(\alpha,\beta))}{\partial \beta} = 0 \end{cases} \tag{3.2.5} \end{equation*}\]

với hàm lý là: \[L(\alpha,\beta)= \prod\limits_{i}\pi^{y_i}[1-\pi(x_i)]^{1-y_i} \space\space\space\space\space(\pi(x))=\Phi(\alpha+\beta x)\]

Việc giải (3.2.5) và do đó việc chạy mô hình probit phải dựa vào các phần mềm thống kê.

Ví dụ 3: Chúng ta minh họa bằng cách sử dụng dữ liệu bệnh ngáy và bệnh tim. ML phù hợp với mô hình probit, sử dụng điểm số {0,2,4,5} cho mức ngáy.

Từ bảng 3.5. về kết quả hồi quy ta có mô hình Probit ước lượng: \[Probit[\hat\pi(x)]= −2,060552+0,187770 x\]

  • Khi \(x = 0 \ \Rightarrow \hat\pi(2)=\Phi((−2,061)=0,0197\)
  • Khi \(x = 2 \ \Rightarrow \hat\pi(2)=\Phi((−1,6865)=0,0455\)
  • Khi \(x = 4 \ \Rightarrow \hat\pi(4)=\Phi(−1,309)= 0,0951\)
  • Khi \(x = 5 \ \Rightarrow \hat\pi(5)=\Phi(−1,122)=0,1314\)
\[\begin{array}{lrllr} \hline \text{Dependent Variable}: \text{Y} \\ \text{Method: ML - Binary Probit (Quadratic hill climbing)} \\ \text{Included observations}: 2484 \\ \text{Convergence achieved after 5 iterations}\\ \text{Covariance matrix computed using second derivatives} \\ & & & & \\ \hline \text{Variable} & \text{Coefficient} & \text{Std. Error} & \text{z-Statistic} & \text{Prob.} \\ \hline\hline \text{C} & -3.866248 & 0.397337 & 0.166214 & 0.050011 \\ \text{X} & -23.26061 & 7.945039 & ~~~40.0000 & 0.0000 \\ \hline\hline \text{McFadden R-squared} & 0.071082 & \text{Mean dependent var} & & 0.044283 & \\ \text{Akaike info criterion} & .338484 & \text{Sum squared resid} & & 102.1504 & \\ \text{Schwarz criterion} & 0.343168 & \text{Log likelihood} & & -418.3971 & \\ \text{Hannan-Quinn criter.} & 0.340185 & \text{Deviance} & & 836.7943 & \\ \text{Restr. deviance} & 900.8272 & \text{Restr. log likelihood} & & -450.4136 & \\ \text{LR statistic} & 64.03292 & \text{Avg. log likelihood} & & -0.168437 & \\ \text{Prob(LR statistic)} & 0.000000 & & & \\ \hline \text{Obs with Dep}=0 & 2374 & \text{Total obs} & & 2484 & \\ \text{Obs with Dep}=1 & 110 \\ \hline \end{array}\]

Bảng 3.5. Hồi quy Probit cho dữ liệu bảng 3.1

Ước lượng khoảng tin cậy cho các hệ số trong mô hình:

data_frame6 <- data.frame(
  Variable = c("C", "X"),
  Coefficient = c(-2.060552 , 0.187770),
  Low = c(-2.176474, 0.148888),
  High = c(-1.944630, 0.226653),
  Low = c(-2.1998697, 0.141434),
  High = c(-1.922406, 0.234107),
  Low = c(-2.242156, 0.126857),
  High = c(-1.878947, 0.248684)
)

data_frame6 %>%
  kbl(caption = "Coefficient Confidence Intervals") %>%
  kable_classic_2(full_width = F) %>%
  add_header_above(c(" " = 1, " " = 1, "90% CI" = 2, "95% CI" = 2, "99% CI" = 2))
Coefficient Confidence Intervals
90% CI
95% CI
99% CI
Variable Coefficient Low High Low.1 High.1 Low.2 High.2
C -2.0606 -2.1765 -1.9446 -2.1999 -1.9224 -2.2422 -1.8789
X 0.1878 0.1489 0.2267 0.1414 0.2341 0.1269 0.2487

Xác suất bị bệnh tim ứng với các mức ngáy được ước lượng qua các mô hình: Xác suất tuyến tính, logit và probit được tổng kết trong bảng 3.2 sau:

Ngáy Bệnh tim Tỷ lệ Có Ước lượng tuyến tính Ước lượng logit Ước lượng probit
Không
Không ngáy 24 1355 0.0174 0.0172 0.0204 0.0197
Thỉnh thoảng 35 603 0.0549 0.0568 0.0444 0.0455
Gần như mỗi đêm 21 192 0.0990 0.0964 0.0936 0.0951
Mỗi đêm 30 224 0.118 0.1161 0.1335 0.1314

Bảng 3.6 Ước lượng xác suất bị bệnh tim theo các mức ngáy

Bảng 3.6 cho thấy rằng các ươc lượng probit và logistic khá gần nhau và mô hình tuyến tính phù hợp với những dữ liệu này. (Phần sau thảo luận về các mô hình phù hợp cho việc phân tích các GLM với biến đáp ứng là biến nhị phân).

Các mô hình tuyến tính tổng quát cho dữ liệu đếm

Nhiều biến đáp ứng rời rạc đóng vai trò đếm số lần xuất hiện một biến cố ngẫu nhiên A nào đó trong một khoảng thời gian hay không gian hay một bối cảnh nhất định, hay nói cách khác là các biến ngẫu nhiên có phân phối Poisson. Những dữ liệu thu được khi quan sát các biến dạng này thường được gọi là dữ liệu đếm. Ví dụ, số vụ tai nạn giao thông xảy ra trên một cung đường trong một ngày, số vụ trộm xe ô tô trong năm 2017, hay số khách hàng đến một hệ thống dịch vụ trong một tuần làm việc,…. Phần này giới thiệu GLM cho dữ liệu đếm. Các GLM giả sử một phân phối Poisson cho thành phần ngẫu nhiên. Cũng giống như các số đếm, biến ngẫu nhiên Poisson có thể lấy bất kỳ giá trị số nguyên không âm.

LS0tDQp0aXRsZTogIkdJw4FPIFRSw4xOSCBUUkFORyA2NiAtIDcwIg0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJUg6JU06JVMsICVkIC0gJW0gLSAlWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogIHBkZl9kb2N1bWVudDoNCiAgICBleHRyYV9kZXBlbmRlbmNpZXM6DQogICAgICB2aWV0bmFtOiB1dGY4DQogICAgdG9jOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCmdlb21ldHJ5Og0KICAgICAgLSBpbm5lcj0zY20NCiAgICAgIC0gb3V0ZXI9NGNtDQogICAgICAtIHRvcD0zY20NCiAgICAgIC0gYm90dG9tPTRjbQ0KICAgICAgLSBoZWFkc2VwPTIycHQNCiAgICAgIC0gaGVhZGhlaWdodD0xMXB0DQogICAgICAtIGZvb3Rza2lwPTMzcHQNCiAgICAgIC0gaWdub3JlaGVhZA0KICAgICAgLSBpZ25vcmVmb290DQogICAgICAtIGhlaWdodHJvdW5kZWQNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgb3B0aW9ucyhkaWdpdHMgPSA0KSwgIGF0dHIuc291cmNlPScubnVtYmVyTGluZXMnKQ0KYGBgDQoNCmBgYHtyLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkoa2FibGVFeHRyYSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KYGBgDQoNCktoaSDEkcOzIGPDoWMgZ2nDoSB0cuG7iyBwaMO5IGjhu6NwIGNobyBi4buRbiBsb+G6oWkgbmfDoXkgbmfhu6cgc+G6vSB0aGF5IMSR4buVaSBt4buZdCBjaMO6dC4gTmjGsG5nIGNow7puZyBz4bq9IGtow7RuZyB0aGF5IMSR4buVaSBu4bq/dSBraG/huqNuZyBjw6FjaCB0xrDGoW5nIMSR4buRaSBnaeG7r2EgY8OhYyDEkWnhu4NtIHPhu5EgbMOgIG5oxrAgbmhhdSwgY2jhurNuZyBo4bqhbiBuaMawIHswLCA0LCA4LCAxMH0gaG/hurdjIHsxLCAzLCA1LCA2fS4gQ2hvIGTDuSB24bqteSwgxJHhu5FpIHbhu5tpIG5o4buvbmcgZOG7ryBsaeG7h3UgbsOgeSwgYuG6pXQgY+G7qSDEkWnhu4NtIHPhu5EgbsOgbyB0xINuZyDEkeG7gXUgY2hvIGvhur90IGx14bqtbiBy4bqxbmcgbmd1eSBjxqEgbeG6r2MgYuG7h25oIHRpbSB0xINuZyBsw6puIGtoaSBt4bupYyBuZ8OheSB0xINuZyBsw6puLg0KDQpO4bq/dSBuaOG6rXAgZOG7ryBsaeG7h3UgbMOgIDI0ODQgcXVhbiBzw6F0IG5o4buLIHBow6JuIGPhu6dhIDAgaG/hurdjIDEgdsOgIMaw4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCBi4bqxbmcgT0xTOg0KDQpcYmVnaW57YXJyYXl9e2xybGxyfQ0KXGhsaW5lDQpcdGV4dHtEZXBlbmRlbnQgVmFyaWFibGV9OiBcdGV4dHvwnZyLfSAgXFwNClx0ZXh0e01ldGhvZDogTGVhc3QgU3F1YXJlc30gXFwNClx0ZXh0e0luY2x1ZGVkIG9ic2VydmF0aW9uc306IDI0ODQgJiAmICYgJiBcXA0KXGhsaW5lDQpcdGV4dHtWYXJpYWJsZX0gJiBcdGV4dHtDb2VmZmljaWVudH0gJiBcdGV4dHtTdGQuIEVycm9yfSAmIFx0ZXh0e3otU3RhdGlzdGljfSAmIFx0ZXh0e1Byb2IufSBcXA0KXGhsaW5lXGhsaW5lDQpcdGV4dHtDfSAmIDAuMDE2ODcyICYgMC4wMjAwMzggJiAzLjI3MTY5NyAmIDAuMDAxMSBcXA0KXHRleHR7WH0gJiAwLjAyMDAzOCAmIDAuMDAyMzE3ICYgfn5+OC42NDk3OTUgJiAwLjAwMDAgXFwNClxobGluZVxobGluZQ0KXHRleHR7Ui1zcXVhcmVkfSAmIDAuMDI5MjYzICYgXHRleHR7TWVhbiBkZXBlbmRlbnQgdmFyfSAmICYgMC4wNDQyODMgJiAgXFwNClx0ZXh0e1MuRS4gb2YgcmVncmVzc2lvbn0gJiAwLjIwMjc3MyAgJiBcdGV4dHtBa2Fpa2UgaW5mbyBjcml0ZXJpb259ICYgJiAtMC4zNTI2NTEgJiAgXFwNClx0ZXh0e0xvZyBsaWtlbGlob29kfSAmIDQzOS45OTIzICYgXHRleHR7SGFubmFuLVF1aW5uIGNyaXRlcn0gJiAmIC0wLjM1MDk1MCAmICBcXA0KXHRleHR7UHJvYihGLXN0YXRpc3RpYyl9ICYgMC4wMDAwMDAgJiAgJiAgJiAgXFwNClxlbmR7YXJyYXl9DQoqQuG6o25nIDMuMy4gS+G6v3QgcXXhuqMgaOG7k2kgcXV5IG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIGNobyBk4buvIGxp4buHdSBi4bqjbmcgMy4xIGLhurFuZyBPTFMqDQoNCkNow7puZyB0YSBuaOG6rW4gxJHGsOG7o2MgbcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmggxrDhu5tjIGzGsOG7o25nOg0KDQokJCBcaGF0e1xwaX0gPSAwLDAxNjg3MiswLDAyMDAzOC54ICQkIA0KVHJvbmcgdGjhu7FjIHThur8sIGtoaSBt4bqrdSBwaMO5IGjhu6NwLCDGsOG7m2MgbMaw4bujbmcgT0xTIHbDoCDGsOG7m2MgbMaw4bujbmcgTUwgdGjGsOG7nW5nIGfhuqduIG5oYXUuDQoNCiMjIyAqKk3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMqKg0KDQpOaMawIHRyw6puIGNow7puZyB0YSDEkcOjIHRo4bqleSBz4buxIGjhuqFuIGNo4bq/IGPhu6dhIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oLiBT4buxIHRoYXkgxJHhu5VpIGPhu6dhIHjDoWMgc3XhuqV0IHRow6BuaCBjw7RuZyB0dXkgcGjhu6UgdGh14buZYyDEkcahbiDEkWnhu4d1IHRoZW8gWCwgbmjGsG5nIHRoxrDhu51uZyBsw6AgcGhpIHR1eeG6v24uIEPDoWMgxJHGsOG7nW5nIGNvbmcgaMOsbmggY2jhu68gUyB0aOG7gyBoaeG7h24gdHJvbmcgaMOsbmggMy4yIHRoxrDhu51uZyBsw6AgaMOsbmggZOG6oW5nIHRo4buxYyB04bq/IGNobyBt4buRaSBxdWFuIGjhu4cuIMSQ4buDIGto4bqvYyBwaOG7pWMgY8OhYyBo4bqhbiBjaOG6vyB0csOqbiBj4bunYSBMUE0sIG5nxrDhu51pIHRhIG114buRbiB0w6xtIG3hu5l0IGjDoG0gbGnDqm4ga+G6v3QgbcOgIG7DsyDEkeG7k25nIGJp4bq/biB24bubaSB4w6FjIHN14bqldCDwnZyLIHbDoCBnacOhIHRy4buLIGJp4bq/biB0aGnDqm4gY+G7p2EgbsOzIGzDoCB0w7l5IMO9ICh04burICQtXGluZnR5JCDEkeG6v24gJCtcaW5mdHkkICkuIEjDoG0gbGnDqm4ga+G6v3QgxJHGsOG7o2MgxJHhu4EgeHXhuqV0IGzDoCAkXGxvZyhcZnJhY3tccGkoeCl9ezEtXHBpKHgpfSkkLCDEkcaw4bujYyBn4buNaSBsw6AgaMOgbSAkbG9naXQoXHBpKSQgdsOgIGvDvSBoaeG7h3UgbMOgIHbDoCBtw7QgaMOsbmggaOG7k2kgcXV5IHTGsMahbmcg4bupbmcgbMOgOg0KDQpcYmVnaW57ZXF1YXRpb24qfQ0KXGxvZyhcZnJhY3tccGkoeCl9ezEtXHBpKHgpfSk9IFxhbHBoYSArIFxiZXRhIHggXHRhZ3szLjIuMn0NClxlbmR7ZXF1YXRpb24qfQ0KDQoNCsSQw6J5IMSRxrDhu6NjIGfhu41pIGzDoCBtw7QgaMOsbmggbG9naXN0aWMgaGF5IG3DtCBow6xuaCBsb2dpdC4gVOG7qyBtw7QgaMOsbmgsIHRhIGPDszogJCRccGkoeCkgPSBcZnJhY3sxfXsxICsgZV57LVxhbHBoYSArIFxiZXRhIHh9fSQkIA0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIGzDoCB0csaw4budbmcgaOG7o3AgxJHhurdjIGJp4buHdCBj4bunYSBHTE0uIFRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiAodGjDoG5oIGPDtG5nLCB0aOG6pXQgYuG6oWkpIGzDoCBuaOG7iyBwaMOibi4gSMOgbSBsacOqbiBr4bq/dCBsb2dpdCBj4bunYSAkXHBpJCBsw6AgcGjDqXAgYmnhur9uIMSR4buVaSAkXGxvZ1tcZnJhY3tccGl9ezEgLSBccGl9XSQsIGvDvSBoaeG7h3UgYuG7n2kgJGxvZ2l0KFxwaSkkIC4gQ8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHRoxrDhu51uZyDEkcaw4bujYyBn4buNaSBsw6AgbcO0IGjDrG5oIGxvZ2l0LiBMb2dpdCBsw6AgdGhhbSBz4buRIHThu7Egbmhpw6puIGPhu6dhIHBow6JuIHBo4buRaSBuaOG7iyB0aOG7qWMuIFRyb25nIMSRw7MgJFxwaSQgYuG7iyBnaeG7m2kgaOG6oW4gdHJvbmcgcGjhuqFtIHZpICgwLCAxKSwgbG9naXQgY8OzIHRo4buDIGzDoCBz4buRIHRo4buxYyBi4bqldCBr4buzLiBU4bqtcCBz4buRIHRo4buxYyBjxaluZyBsw6Aga2hv4bqjbmcgZ2nDoSB0cuG7iyBjw7MgdGjhu4MgY8OzIGNobyBjw6FjIGThu7EgYsOhbyB0dXnhur9uIHTDrW5oICQoXGFscGhhICsgXGJldGEgeCkkLCBkbyDEkcOzLCBtw7QgaMOsbmggbsOgeSBraMO0bmcgY8OzIHbhuqVuIMSR4buBIGPhuqV1IHRyw7pjIG3DoCBtw7QgaMOsbmggeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCBt4bqvYyBwaOG6o2kuICANCg0KDQpgYGB7cn0NCiMgSMOgbSBsb2dpc3RpYw0KbG9naXN0aWMgPC0gZnVuY3Rpb24oeCwgYmV0YTAsIGJldGExKSB7DQogIDEgLyAoMSArIGV4cCgtKGJldGEwICsgYmV0YTEgKiB4KSkpDQp9DQoNCiMgVOG6oW8gZOG7ryBsaeG7h3UgY2hvIGJp4bq/biDEkeG7mWMgbOG6rXAgWA0KeCA8LSBzZXEoLTEwLCAxMCwgYnkgPSAwLjEpDQoNCiMgSOG7hyBz4buRIGNobyBtw7QgaMOsbmggbG9naXN0aWMNCmJldGEwIDwtIDANCmJldGExX3Bvc2l0aXZlIDwtIDENCmJldGExX25lZ2F0aXZlIDwtIC0xDQoNCiMgVMOtbmggeMOhYyBzdeG6pXQgUChZPTEpIGNobyBt4buXaSBnacOhIHRy4buLIGPhu6dhIFgNCnlfcG9zaXRpdmUgPC0gbG9naXN0aWMoeCwgYmV0YTAsIGJldGExX3Bvc2l0aXZlKQ0KeV9uZWdhdGl2ZSA8LSBsb2dpc3RpYyh4LCBiZXRhMCwgYmV0YTFfbmVnYXRpdmUpDQoNCiMgVOG6oW8gZGF0YSBmcmFtZSDEkeG7gyBkw7luZyBnZ3Bsb3QyDQpkYXRhX3Bvc2l0aXZlIDwtIGRhdGEuZnJhbWUoeCA9IHgsIHkgPSB5X3Bvc2l0aXZlKQ0KZGF0YV9uZWdhdGl2ZSA8LSBkYXRhLmZyYW1lKHggPSB4LCB5ID0geV9uZWdhdGl2ZSkNCg0KIyBW4bq9IMSR4buTIHRo4buLDQpwbG90MSA8LSBnZ3Bsb3QoZGF0YV9wb3NpdGl2ZSwgYWVzKHggPSB4LCB5ID0geSkpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBsYWJzKHRpdGxlID0gZXhwcmVzc2lvbihiZXRhID4gMCksIHkgPSAiWSIsIHggPSAiWCIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgeWxpbSgwLCAxKQ0KDQpwbG90MiA8LSBnZ3Bsb3QoZGF0YV9uZWdhdGl2ZSwgYWVzKHggPSB4LCB5ID0geSkpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBsYWJzKHRpdGxlID0gZXhwcmVzc2lvbihiZXRhIDwgMCksIHkgPSAiWSIsIHggPSAiWCIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgeWxpbSgwLCAxKQ0KDQpncmlkLmFycmFuZ2UocGxvdDEsIHBsb3QyLCBuY29sID0gMikNCmBgYA0KKkjDrG5oIDMuMiAoYSxiKSogDQoNClRoYW0gc+G7kSAkXGJldGEkIHRyb25nICgzLjIuMikgbMOgIHThu5FjIMSR4buZIGJp4bq/biB0aGnDqm4gY+G7p2EgbG9naXQgbmjGsG5nIGxvZ2l0IMSR4buTbmcgYmnhur9uIHRoZW8gJFxwaSh4KSQgbsOqbiBraGkgbsOzIGPFqW5nIHRo4buDIGhp4buHbiB4dSBoxrDhu5tuZyBiaeG6v24gdGhpw6puIGPhu6dhICRccGkoeCkkIHRoZW8geC4gS2hpICRcYmV0YT4wJCAsICRccGkoeCkkIHTEg25nIGtoaSB0xINuZywgbmjGsCB0cm9uZyBow6xuaCAzLjJhLiBLaGkgJFxiZXRhPDAkLCAkXHBpKHgpJCBnaeG6o20ga2hpIHggdMSDbmcsIG5oxrAgdHJvbmcgaMOsbmggMy4yYi4gxJDhu5kgbOG7m24gY+G7p2EgeMOhYyDEkeG7i25oIHThu5FjIMSR4buZIHTEg25nIGhv4bq3YyBnaeG6o20gxJHGsOG7nW5nIGNvbmcuIEtoaSAkfFxiZXRhfCQgdMSDbmcsIMSRxrDhu51uZyBjb25nIGPDsyB04bu3IGzhu4cgdGhheSDEkeG7lWkgZOG7kWMgaMahbi4gS2hpICRcYmV0YT0wJCAsIMSRxrDhu51uZyBjb25nIHBo4bqzbmcgZ+G6p24gbmjGsCDEkcaw4budbmcgdGjhurNuZyBu4bqxbSBuZ2FuZy4gDQoNClBoxrDGoW5nIHBow6FwIE1MIMSR4buDIHTDrG0gxrDhu5tjIGzGsOG7o25nICRcaGF0e1xhbHBoYX0sXGhhdHtcYmV0YX0kIGNobyBjw6FjIGjhu4cgc+G7kSAkXGFscGhhLFxiZXRhJCBsw6AgdHLDqm4gY8ahIHPhu58gbeG6q3UgcXVhbiBzw6F0Og0KeyQoeF8xLHlfMSksKHhfMix5XzIpLC4uLiwoeF9uLHlfbikkfSwgdMOsbSBuZ2hp4buHbSBj4bunYSBwaMawxqFuZyB0csOsbmggaOG7o3AgbMO9OiAkJFxiZWdpbnthbGlnbn1cYmVnaW57Y2FzZXN9XGZyYWN7XHBhcnRpYWwgbG9nKEwoXGFscGhhLFxiZXRhKSl9e1xwYXJ0aWFsXGFscGhhfT0wXFxcZnJhY3tccGFydGlhbCBsb2coTChcYWxwaGEsXGJldGEpKX17XHBhcnRpYWxcYmV0YX09MFxlbmR7Y2FzZXN9XGVuZHthbGlnbn0kJA0KDQpW4bubaSBow6BtIGjhu6NwIGzDvTogJEwoXGFscGhhLFxiZXRhKSA9IFxwcm9kIFxsaW1pdHNfe2l9XHBpXnt5X2l9KHhfaSkuWzEtIFxwaSh4X2kpXV57MS15X2l9IChccGkoeCk9XGZyYWN7MX17MStlXnstXGFscGhhLVxiZXRhIHh9fSkkIA0KDQpWw60gZOG7pSAyOiDEkOG7kWkgduG7m2kgZOG7ryBsaeG7h3UgYuG7h25oIG5nw6F5IHbDoCBi4buHbmggdGltIOG7nyBC4bqjbmcgMy4xLCBwaOG6p24gbeG7gW0gY2hvIHRo4bqleSBz4buxIHBow7kgaOG7o3AgY+G7p2EgTUwgxJHhu5FpIHbhu5tpIG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMNCg0KXGJlZ2lue2FycmF5fXtscmxscn0NClxobGluZQ0KXHRleHR7RGVwZW5kZW50IFZhcmlhYmxlfTogXHRleHR7WX0gIFxcDQpcdGV4dHtNZXRob2Q6IE1MIC0gQmluYXJ5IFByb2JpdCAoUXVhZHJhdGljIGhpbGwgY2xpbWJpbmcpfSBcXA0KXHRleHR7SW5jbHVkZWQgb2JzZXJ2YXRpb25zfTogMjQ4NCAmICYgJiAmIFxcDQpcaGxpbmUNClx0ZXh0e1ZhcmlhYmxlfSAmIFx0ZXh0e0NvZWZmaWNpZW50fSAmIFx0ZXh0e1N0ZC4gRXJyb3J9ICYgXHRleHR7ei1TdGF0aXN0aWN9ICYgXHRleHR7UHJvYi59IFxcDQpcaGxpbmVcaGxpbmUNClx0ZXh0e0N9ICYgLTMuODY2MjQ4ICYgMC4zOTczMzcgJiAwLjE2NjIxNCAmIDAuMDUwMDExIFxcDQpcdGV4dHtYfSAmIC0yMy4yNjA2MSAmIDcuOTQ1MDM5ICYgfn5+NDAuMDAwMCAmIDAuMDAwMCBcXA0KXGhsaW5lXGhsaW5lDQpcdGV4dHtNY0ZhZGRlbiBSLXNxdWFyZWR9ICYgMC4wNzAwNDIgJiBcdGV4dHtNZWFuIGRlcGVuZGVudCB2YXJ9ICYgJiAwLjA0NDI4MyAmICBcXA0KXHRleHR7QWthaWtlIGluZm8gY3JpdGVyaW9ufSAmIDAuMzM4ODYxICAmIFx0ZXh0e1N1bSBzcXVhcmVkIHJlc2lkfSAmICYgMTAyLjE5MTcgJiAgXFwNClx0ZXh0e1NjaHdhcnogY3JpdGVyaW9ufSAmIDAuMzQzNTQ1ICYgXHRleHR7TG9nIGxpa2VsaWhvb2R9ICYgJiAtNDE4Ljg2NTggJiAgXFwNClx0ZXh0e0hhbm5hbi1RdWlubiBjcml0ZXIufSAmIDAuMzQwNTYyICYgXHRleHR7RGV2aWFuY2V9ICYgJiAgODM3LjczMTYgJiAgXFwNClx0ZXh0e1Jlc3RyLiBkZXZpYW5jZX0gJiA5MDAuODI3MiAmIFx0ZXh0e1Jlc3RyLiBsb2cgbGlrZWxpaG9vZH0gJiAmIC00NTAuNDEzNiAmICBcXA0KXHRleHR7TFIgc3RhdGlzdGljfSAmIDYzLjA5NTU3ICYgXHRleHR7QXZnLiBsb2cgbGlrZWxpaG9vZH0gJiAmIC0wLjE2ODYyNiAmICBcXA0KXHRleHR7UHJvYihMUiBzdGF0aXN0aWMpfSAmIDAuMDAwMDAwICYgICYgICYgIFxcDQpcaGxpbmUNClx0ZXh0e09icyB3aXRoIERlcH09MCAmIDIzNzQgJiBcdGV4dHtUb3RhbCBvYnN9ICYgJiAyNDg0ICYgXFwNClx0ZXh0e09icyB3aXRoIERlcH09MSAmIDExMCBcXA0KXGhsaW5lDQpcZW5ke2FycmF5fQ0KKkLhuqNuZyAzLjQuIEjhu5NpIHF1eSBsb2dpc3RpYyBjaG8gZOG7ryBsaeG7h3UgYuG6o25nIDMuMSoNCg0KDQokJGxvZ2l0W1xoYXRccGkoeCldID0g4oiSMyw4NjYyNDgrMCwzOTczMzcuIHggJCQgDQotIERp4buFbiBnaeG6o2kga+G6v3QgcXXhuqMgaOG7k2kgcXV5OiAtIEdpw6EgdHLhu4sgJFxoYXRcYmV0YT0wLDM5NzMzNyQgcGjhuqNuIMOhbmggc+G7sSBnaWEgdMSDbmcgbmd1eSBjxqEgbeG6r2MgYuG7h25oIHRpbSDhu58gbeG7qWMgxJHhu5kgbmfDoXkgY2FvIGjGoW4uIA0KDQotIFTDrW5oIHjDoWMgc3XhuqV0IG3huq9jIGLhu4duaCB0aW0g4bupbmcgduG7m2kgY8OhYyBt4bupYyBuZ8OheToNCg0KICAgLSAgJHggPSAwJCwgJGxvZ2l0W1xoYXRccGkoMCldID0g4oiSMyw4NjYyNDgrMCwzOTczMzcuMD3iiJIzLDg2NjI0OCQgbsOqbiAkXGhhdFxwaSgwKT1cZnJhY3tlXnstMyw4NjYyNDh9fXsxICsgZV57LTMsODY2MjQ4fX0gPSAwLDAyMDUwNzQxNyQsIG5naMSpYSBsw6A6IHjDoWMgc3XhuqV0IG3huq9jIGLhu4duaCB0aW0gxJHhu5FpIHbhu5tpIG5nxrDhu51pIGtow7RuZyBuZ8OheSBsw6Aga2hv4bqjbmcgMiwwNTElLg0KDQogICAtICAkeCA9IDIkLCAkbG9naXRbXGhhdFxwaSgyKV0gPSDiiJIzLDg2NjI0OCswLDM5NzMzNy4yPeKIkjMsMDcxNTc0JCBuw6puICRcaGF0XHBpKDIpPVxmcmFje2Veey0zLDA3MTU3NH19ezEgKyBlXnstMywwNzE1NzR9fSA9IDAsMDQ0Mjk1JCwgbmdoxKlhIGzDoCB4w6FjIHN14bqldCBt4bqvYyBi4buHbmggdGltIMSR4buRaSB24bubaSBuZ8aw4budaSB0aOG7iW5oIHRob+G6o25nIG5nw6F5IGzDoCBraG/huqNuZyA0LDQzJS4NCg0KICAgLSAgJHggPSA0JCwgJGxvZ2l0W1xoYXRccGkoNCldID0g4oiSMyw4NjYyNDgrMCwzOTczMzcuND3iiJIyLDI3NjkkIG7Dqm4gJFxoYXRccGkoMik9XGZyYWN7ZV574oiSMiwyNzY5fX17MSArIGVee+KIkjIsMjc2OX19ID0gMCwwOTMwNTQkLCBuZ2jEqWEgbMOgIHjDoWMgc3XhuqV0IG3huq9jIGLhu4duaCB0aW0gxJHhu5FpIHbhu5tpIG5nxrDhu51pIG5nw6F5IGfhuqduIG5oxrAgbeG7l2kgxJHDqm0gbMOgIGtob+G6o25nIDksMzElLg0KDQogICAtICAgJHggPSA1JCwgJGxvZ2l0W1xoYXRccGkoNCldID0g4oiSMyw4NjYyNDgrMCwzOTczMzcuNT3iiJIxLDg3OTU2MyQgbsOqbiAkXGhhdFxwaSgyKT1cZnJhY3tlXnviiJIxLDg3OTU2M319ezEgKyBlXnviiJIxLDg3OTU2M319ID0gMCwxMzI0MzkkLG5naMSpYSBsw6AgeMOhYyBzdeG6pXQgbeG6r2MgYuG7h25oIHRpbSDEkeG7kWkgduG7m2kgbmfGsOG7nWkgbmfDoXkgbeG7l2kgxJHDqm0gbMOgIGtob+G6o25nIDEzLDI0NCUuDQoNCktob+G6o25nIHRpbiBj4bqteSBjaG8gY8OhYyBo4buHIHPhu5EgdHJvbmcgbcO0IGjDrG5oIMSRxrDhu6NjIHTDrW5oIGLhurFuZyBwaOG6p24gbeG7gW0gdsOgIGvhur90IHF14bqjIG5oxrAgc2F1Og0KDQpgYGB7cn0NCmRhdGFfZnJhbWU1IDwtIGRhdGEuZnJhbWUoDQogIFZhcmlhYmxlID0gYygiQyIsICJOIiksDQogIENvZWZmaWNpZW50ID0gYygtMy44NjYyNDgsIDAuMzk3MzM3KSwNCiAgTG93ID0gYygtNC4xMzk3NDgsIDAuMzE1MDQ2KSwNCiAgSGlnaCA9IGMoLTMuNTkyNzQ4LCAwLjQ3OTYyOCksDQogIExvdyA9IGMoLTQuMTkyMTgxLCAwLjI5OTI3MCksDQogIEhpZ2ggPSBjKC0zLjU0MDMxNSwgMC40OTU0MDQpLA0KICBMb3cgPSBjKC00LjI5NDcxNywgMC4yNjg0MTkpLA0KICBIaWdoID0gYygtMy40Mzc3NzksIDAuNTI2MjU1KQ0KKQ0KDQpkYXRhX2ZyYW1lNSAlPiUNCiAga2JsKGNhcHRpb24gPSAiQ29lZmZpY2llbnQgQ29uZmlkZW5jZSBJbnRlcnZhbHMiKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGggPSBGKSAlPiUNCiAgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiA9IDEsICIgIiA9IDEsICI5MCUgQ0kiID0gMiwgIjk1JSBDSSIgPSAyLCAiOTklIENJIiA9IDIpKQ0KYGBgDQoNCiMjIyAqKkPDoWMgbGnDqm4ga+G6v3Qgbmjhu4sgcGjDom4gdGhheSB0aOG6vyoqDQoNCsSQ4buRaSB24bubaSBjw6FjIMSRxrDhu51uZyBjb25nIGjhu5NpIHF1eSBsb2dpdCDEkcaw4bujYyBtaW5oIGjhu41hIHRyb25nIEjDrG5oIDMuMiwgeMOhYyBzdeG6pXQgdGjDoG5oIGPDtG5nIHTEg25nIGxpw6puIHThu6VjIGhv4bq3YyBnaeG6o20gbGnDqm4gdOG7pWMga2hpIHTEg25nIHguIFThu6sgbcO0IGjDrG5oIGxvZ2l0OiAkJFxsb2coXGZyYWN7XHBpKHgpfXsxLVxwaSh4KX0pPVxhbHBoYStcYmV0YSB4ICQkDQoNCnRhIGPDszogJFxwaSh4KT1cZnJhY3sxfXsxK2U2ey1cYWxwaGErXGJldGEgeH19PSBGKHgpJCANCg0KdGjDrCBGKHgpIGJp4bq/biB0aGnDqm4gdOG7qyAwIMSR4bq/biAxIHbDoCBsw6AgaMOgbSDEkcahbiDEkWnhu4d1ICh0xINuZyBu4bq/dSAkIFxiZXRhID4gMCAkLCBnaeG6o20gbuG6v3UgJCBcYmV0YSA8IDAgJCkuIE7Ds2kgY8OhY2gga2jDoWMgJFxwaSh4KSQgKGhv4bq3YyAkMS1ccGkoeCkkKSBsw6AgaMOgbSBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY+G7p2EgbeG7mXQgYmnhur9uIG5n4bqrdSBuaGnDqm4uIMSQaeG7gXUgbsOgeSBn4bujaSBt4bufIGNobyDDvSB0xrDhu59uZyB4ZW0gJFxwaSh4KSQgKGhv4bq3YyAkMS1ccGkoeCkkKSBsw6AgaMOgbSBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgRih4KSBj4bunYSBt4buZdCBiaeG6v24gbmfhuqt1IG5oacOqbiBuw6BvIMSRw7M6IA0KDQpcYmVnaW57ZXF1YXRpb24qfQ0KXHBpKHgpPUYoeCkgXHRhZ3szLjIuM30NClxlbmR7ZXF1YXRpb24qfQ0KDQpLaGkgdGhheSDEkeG7lWkgaMOgbSBwaMOibiBwaOG7kWkgRih4KSwgKDMuMi4zKSB4w6FjIMSR4buLbmggbeG7mXQgbOG7m3AgY8OhYyBtw7QgaMOsbmguDQoNCk3DtCBow6xuaCB04burICgzLjIuMykgeOG6o3kgcmEgbeG7mXQgY8OhY2ggdOG7sSBuaGnDqm4ga2hpIHBow6JuIHBo4buRaSBkdW5nIHNhaSAoaGF5IG3hu6ljIGNo4buLdSDEkeG7sW5nKSDDoXAgZOG7pW5nIGNobyBjw6FjIMSRw6FwIOG7qW5nIGPhu6dhIMSR4buRaSB0xrDhu6NuZy4gQ2jhurNuZyBo4bqhbiwgxJHhu5FpIHbhu5tpIG3hu5l0IGxv4bqhaSBjw7RuIHRyw7luZywgbeG7l2kgY29uIGPDsyB0aOG7gyBjaOG7i3UgxJHhu7FuZyBt4buZdCBsxrDhu6NuZyB0aHXhu5FjIGRp4buHdCBjw7RuIHRyw7luZyBuaOG6pXQgxJHhu4tuaCB2w6AgbsOzIHPhur0gY2jhur90IG7hur91IGxp4buBdSBsxrDhu6NuZyB0aHXhu5FjIHbGsOG7o3QgcXXDoSBt4bupYyBjaOG7i3UgxJHhu7FuZy4gTmjGsCB24bqteSBsxrDhu6NuZyBYIHbhu4EgdGh14buRYyBkaeG7h3QgY8O0biB0csO5bmcgbcOgIG3hu5l0IGNvbiBjw7RuIHRyw7luZyBjw7MgdGjhu4MgY2jhu4t1IMSR4buxbmcgbMOgIG3hu5l0IGJp4bq/biBuZ+G6q3Ugbmhpw6puIG3DoDogJFxwaSh4KT1QKFggXGxlcSB4KT0gRih4KSQgbMOgIHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IGNvbiBjw7RuIHRyw7luZyBsb+G6oWkgbsOgeSBjaOG6v3Qg4bufIG3hu6ljIMSR4buZIPCdkaUgduG7gSBsxrDhu6NuZyB0aHXhu5FjLCB04bupYyBsw6AgbcO0IGjDrG5oIHjDoWMgc3XhuqV0IG7DoHkgY8OzIGThuqFuZyAoMy4yLjMpLiBDaOG6s25nIGjhuqFuLCBu4bq/dSBt4bupYyBjaOG7i3UgxJHhu7FuZyBraMOhYyBuaGF1IGdp4buvYSBjw6FjIGNvbiBtdeG7l2kgdGhlbyBwaMOibiBwaOG7kWkgbG9naXN0aWMsIHRow6wgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpdCBz4bq9IMSRxrDhu6NjIMOhcCBk4bulbmcuIA0KDQoNCiMjIyAqKkPDoWMgbcO0IGjDrG5oIFByb2JpdCAqKg0KDQoNCkjhu5NpIHF1eSBQcm9iaXQsIMSRw7RpIGtoaSBjw7JuIMSRxrDhu6NjIGfhu41pIGzDoCBtw7QgaMOsbmggcHJvYml0LCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDGsOG7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGPDsyBiaeG6v24gcGjhu6UgdGh14buZYyBk4bqhbmcgbmjhu4sgcGjDom4uIFRyb25nIGjhu5NpIHF1eSBwcm9iaXQsIHhlbSBow6BtIHjDoWMgc3XhuqV0ICRccGkoeCkkIGzDoCBow6BtIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBj4bunYSBt4buZdCBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7MgcGjDom4gcGjhu5FpIGNodeG6qW4sIHThu6ljIGzDoCBjw7MgZOG6oW5nOiANCg0KDQpcYmVnaW57ZXF1YXRpb24qfQ0KXHBpKHgpPSBcUGhpKFxhbHBoYStcYmV0YSB4KSBcdGFnezMuMi40fQ0KXGVuZHtlcXVhdGlvbip9DQoNCnRyb25nIMSRw7MgJFxQaGkoeCk9XGZyYWN7MX17XHNxcnR7MlxwaX19XGludF97LVxpbmZ0eX1eeCBcbWF0aHJte2V9XnstXGZyYWN7LTF9ezJ9dF4yfVwsXG1hdGhybXtkfXQkIGzDoCBow6BtIGNodeG6qW4gdOG6r2MuIA0KDQpLw70gaGnhu4d1OiAkUHJvYml0KFxwaSh4KSk9XFBoaV57LTF9KFxwaSh4KSkkIHbDoCBtw7QgaMOsbmggUHJvYml0IMSRxrDhu6NjIHZp4bq/dCBkxrDGoWkgZOG6oW5nOiAkJFByb2JpdChccGkoeCkpPVxhbHBoYStcYmV0YSB4JCQgS2hpIGJp4bq/dCBnacOhIHRy4buLIGPhu6dhIHjDoWMgc3XhuqV0ICRccGkkLCB0YSB0w6xtIMSRxrDhu6NjIHByb2JpdCB0xrDGoW5nIOG7qW5nIHbDoCBuZ8aw4bujYyBs4bqhaS4gQ2jhurNuZyBo4bqhbiAkXHBpKHgpPTAsMDUkLCB0aMOsICRwcnBiaXQoMCwwNSkgPSBcUGhpXnstMX0gKDAsMDUpID0g4oiSMSw2NDUkIDsgJCBccGkgPSAwLDUgJCwgdGjDrCAkcHJvYml0KDAsNSk9XFBoaV57LTF9KDAsNSkkIDsgJCBwcm9iaXQoXHBpKHgpKT0xLDk2ICQgdGjDrCAkXHBpKHgpPVxQaGkoMSw5Nik9MCw5NzUsLi4uJA0KDQpNw7QgaMOsbmggUHJvYml0IGzDoCBt4buZdCBHTE0gduG7m2kgdGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIG5o4buLIHBow6JuIHbDoCBsacOqbiBr4bq/dCBwcm9iaXQuIA0KDQpWaeG7h2MgxrDhu5tjIGzGsOG7o25nIG3DtCBow6xuaCBQcm9iaXQgY2h1eeG7g24gduG7gSDGsOG7m2MgbMaw4bujbmcgY8OhYyB0aGFtIHPhu5EgJFxhbHBoYSxcYmV0YSQuIMSQ4buDIMaw4bubYyBsxrDhu6NuZyBjaG8gaGFpIHRoYW0gc+G7kSBuw6B5LCBuZ8aw4budaSB0YSBz4butIGThu6VuZyBwaMawxqFuZyBwaMOhcCBNTCwgdHJvbmcgxJHDsyDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSBjaG8gJFxhbHBoYSxcYmV0YSQgbMOgIG5naGnhu4dtIGPhu6dhIHBoxrDGoW5nIHRyw6xuaCBo4bujcCBsw706DQoNCg0KXGJlZ2lue2VxdWF0aW9uKn0NClxiZWdpbntjYXNlc30NClxmcmFje1xwYXJ0aWFsIFxsb2coTChcYWxwaGEsXGJldGEpKX17XHBhcnRpYWwgXGFscGhhfSA9IDAgXFwNClxmcmFje1xwYXJ0aWFsIFxsb2coTChcYWxwaGEsXGJldGEpKX17XHBhcnRpYWwgXGJldGF9ID0gMA0KXGVuZHtjYXNlc30NClx0YWd7My4yLjV9DQpcZW5ke2VxdWF0aW9uKn0NCg0KduG7m2kgaMOgbSBsw70gbMOgOiAkJEwoXGFscGhhLFxiZXRhKT0gXHByb2RcbGltaXRzX3tpfVxwaV57eV9pfVsxLVxwaSh4X2kpXV57MS15X2l9ICBcc3BhY2Vcc3BhY2Vcc3BhY2Vcc3BhY2Vcc3BhY2UoXHBpKHgpKT1cUGhpKFxhbHBoYStcYmV0YSB4KSQkIA0KDQpWaeG7h2MgZ2nhuqNpICgzLjIuNSkgdsOgIGRvIMSRw7Mgdmnhu4djIGNo4bqheSBtw7QgaMOsbmggcHJvYml0IHBo4bqjaSBk4buxYSB2w6BvIGPDoWMgcGjhuqduIG3hu4FtIHRo4buRbmcga8OqLiANCg0KVsOtIGThu6UgMzogQ2jDum5nIHRhIG1pbmggaOG7jWEgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGThu68gbGnhu4d1IGLhu4duaCBuZ8OheSB2w6AgYuG7h25oIHRpbS4gTUwgcGjDuSBo4bujcCB24bubaSBtw7QgaMOsbmggcHJvYml0LCBz4butIGThu6VuZyDEkWnhu4NtIHPhu5EgezAsMiw0LDV9IGNobyBt4bupYyBuZ8OheS4gDQoNClThu6sgYuG6o25nIDMuNS4gduG7gSBr4bq/dCBxdeG6oyBo4buTaSBxdXkgdGEgY8OzIG3DtCBow6xuaCBQcm9iaXQgxrDhu5tjIGzGsOG7o25nOiAkJFByb2JpdFtcaGF0XHBpKHgpXT0g4oiSMiwwNjA1NTIrMCwxODc3NzAgeCQkIA0KDQotIEtoaSAkeCA9IDAgXCBcUmlnaHRhcnJvdyBcaGF0XHBpKDIpPVxQaGkoKOKIkjIsMDYxKT0wLDAxOTckIA0KLSBLaGkgJHggPSAyIFwgXFJpZ2h0YXJyb3cgXGhhdFxwaSgyKT1cUGhpKCjiiJIxLDY4NjUpPTAsMDQ1NSQgDQotIEtoaSAkeCA9IDQgXCBcUmlnaHRhcnJvdyBcaGF0XHBpKDQpPVxQaGko4oiSMSwzMDkpPSAwLDA5NTEkIA0KLSBLaGkgJHggPSA1IFwgXFJpZ2h0YXJyb3cgXGhhdFxwaSg1KT1cUGhpKOKIkjEsMTIyKT0wLDEzMTQkDQoNClxiZWdpbnthcnJheX17bHJsbHJ9DQpcaGxpbmUNClx0ZXh0e0RlcGVuZGVudCBWYXJpYWJsZX06IFx0ZXh0e1l9ICBcXA0KXHRleHR7TWV0aG9kOiBNTCAtIEJpbmFyeSBQcm9iaXQgKFF1YWRyYXRpYyBoaWxsIGNsaW1iaW5nKX0gXFwNClx0ZXh0e0luY2x1ZGVkIG9ic2VydmF0aW9uc306IDI0ODQgXFwNClx0ZXh0e0NvbnZlcmdlbmNlIGFjaGlldmVkIGFmdGVyIDUgaXRlcmF0aW9uc31cXA0KXHRleHR7Q292YXJpYW5jZSBtYXRyaXggY29tcHV0ZWQgdXNpbmcgc2Vjb25kIGRlcml2YXRpdmVzfSBcXCAmICYgJiAmIFxcDQpcaGxpbmUNClx0ZXh0e1ZhcmlhYmxlfSAmIFx0ZXh0e0NvZWZmaWNpZW50fSAmIFx0ZXh0e1N0ZC4gRXJyb3J9ICYgXHRleHR7ei1TdGF0aXN0aWN9ICYgXHRleHR7UHJvYi59IFxcDQpcaGxpbmVcaGxpbmUNClx0ZXh0e0N9ICYgLTMuODY2MjQ4ICYgMC4zOTczMzcgJiAwLjE2NjIxNCAmIDAuMDUwMDExIFxcDQpcdGV4dHtYfSAmIC0yMy4yNjA2MSAmIDcuOTQ1MDM5ICYgfn5+NDAuMDAwMCAmIDAuMDAwMCBcXA0KXGhsaW5lXGhsaW5lDQpcdGV4dHtNY0ZhZGRlbiBSLXNxdWFyZWR9ICYgMC4wNzEwODIgJiBcdGV4dHtNZWFuIGRlcGVuZGVudCB2YXJ9ICYgJiAwLjA0NDI4MyAmICBcXA0KXHRleHR7QWthaWtlIGluZm8gY3JpdGVyaW9ufSAmIC4zMzg0ODQgICYgXHRleHR7U3VtIHNxdWFyZWQgcmVzaWR9ICYgJiAxMDIuMTUwNCAmICBcXA0KXHRleHR7U2Nod2FyeiBjcml0ZXJpb259ICYgMC4zNDMxNjggJiBcdGV4dHtMb2cgbGlrZWxpaG9vZH0gJiAmIC00MTguMzk3MSAmICBcXA0KXHRleHR7SGFubmFuLVF1aW5uIGNyaXRlci59ICYgMC4zNDAxODUgJiBcdGV4dHtEZXZpYW5jZX0gJiAmICA4MzYuNzk0MyAmICBcXA0KXHRleHR7UmVzdHIuIGRldmlhbmNlfSAmIDkwMC44MjcyICYgXHRleHR7UmVzdHIuIGxvZyBsaWtlbGlob29kfSAmICYgLTQ1MC40MTM2ICYgIFxcDQpcdGV4dHtMUiBzdGF0aXN0aWN9ICYgNjQuMDMyOTIgJiBcdGV4dHtBdmcuIGxvZyBsaWtlbGlob29kfSAmICYgLTAuMTY4NDM3ICYgIFxcDQpcdGV4dHtQcm9iKExSIHN0YXRpc3RpYyl9ICYgMC4wMDAwMDAgJiAgJiAgJiAgXFwNClxobGluZQ0KXHRleHR7T2JzIHdpdGggRGVwfT0wICYgMjM3NCAmIFx0ZXh0e1RvdGFsIG9ic30gJiAmIDI0ODQgJiBcXA0KXHRleHR7T2JzIHdpdGggRGVwfT0xICYgMTEwIFxcDQpcaGxpbmUNClxlbmR7YXJyYXl9DQoqQuG6o25nIDMuNS4gSOG7k2kgcXV5IFByb2JpdCBjaG8gZOG7ryBsaeG7h3UgYuG6o25nIDMuMSAqDQoNCsav4bubYyBsxrDhu6NuZyBraG/huqNuZyB0aW4gY+G6rXkgY2hvIGPDoWMgaOG7hyBz4buRIHRyb25nIG3DtCBow6xuaDoNCg0KYGBge3J9DQpkYXRhX2ZyYW1lNiA8LSBkYXRhLmZyYW1lKA0KICBWYXJpYWJsZSA9IGMoIkMiLCAiWCIpLA0KICBDb2VmZmljaWVudCA9IGMoLTIuMDYwNTUyICwgMC4xODc3NzApLA0KICBMb3cgPSBjKC0yLjE3NjQ3NCwgMC4xNDg4ODgpLA0KICBIaWdoID0gYygtMS45NDQ2MzAsIDAuMjI2NjUzKSwNCiAgTG93ID0gYygtMi4xOTk4Njk3LCAwLjE0MTQzNCksDQogIEhpZ2ggPSBjKC0xLjkyMjQwNiwgMC4yMzQxMDcpLA0KICBMb3cgPSBjKC0yLjI0MjE1NiwgMC4xMjY4NTcpLA0KICBIaWdoID0gYygtMS44Nzg5NDcsIDAuMjQ4Njg0KQ0KKQ0KDQpkYXRhX2ZyYW1lNiAlPiUNCiAga2JsKGNhcHRpb24gPSAiQ29lZmZpY2llbnQgQ29uZmlkZW5jZSBJbnRlcnZhbHMiKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGggPSBGKSAlPiUNCiAgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiA9IDEsICIgIiA9IDEsICI5MCUgQ0kiID0gMiwgIjk1JSBDSSIgPSAyLCAiOTklIENJIiA9IDIpKQ0KYGBgDQoNCljDoWMgc3XhuqV0IGLhu4sgYuG7h25oIHRpbSDhu6luZyB24bubaSBjw6FjIG3hu6ljIG5nw6F5IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBxdWEgY8OhYyBtw7QgaMOsbmg6IFjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmgsIGxvZ2l0IHbDoCBwcm9iaXQgxJHGsOG7o2MgdOG7lW5nIGvhur90IHRyb25nIGLhuqNuZyAzLjIgc2F1Og0KDQorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsNCnwgTmfDoXkgICAgICAgICAgICB8QuG7h25oIHRpbSAgICAgICAgICAgIHwgVOG7tyBs4buHIEPDsyB8IMav4bubYyBsxrDhu6NuZyB0dXnhur9uIHTDrW5oIHwgxq/hu5tjIGzGsOG7o25nIGxvZ2l0IHwgxq/hu5tjIGzGsOG7o25nIHByb2JpdCB8DQp8ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsNCnwgICAgICAgICAgICAgICAgIHwgQ8OzICAgICAgIHwgS2jDtG5nICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8DQorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsNCnwgS2jDtG5nIG5nw6F5ICAgICAgfCAyNCAgICAgICB8IDEzNTUgICAgfCAwLjAxNzQgICB8ICAwLjAxNzIgICAgICAgICAgICAgIHwgMC4wMjA0ICAgICAgICAgIHwgMC4wMTk3ICAgICAgICAgICB8DQorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsNCnwgVGjhu4luaCB0aG/huqNuZyAgICB8IDM1ICAgICAgIHwgNjAzICAgICB8IDAuMDU0OSAgIHwgMC4wNTY4ICAgICAgICAgICAgICAgfCAwLjA0NDQgICAgICAgICAgfCAwLjA0NTUgICAgICAgICAgIHwNCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKw0KfCBH4bqnbiBuaMawIG3hu5dpIMSRw6ptIHwgMjEgICAgICAgfCAxOTIgICAgIHwgMC4wOTkwICAgfCAwLjA5NjQgICAgICAgICAgICAgICB8IDAuMDkzNiAgICAgICAgICB8IDAuMDk1MSAgICAgICAgICAgfA0KKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rDQp8IE3hu5dpIMSRw6ptICAgICAgICAgfCAzMCAgICAgICB8IDIyNCAgICAgfCAwLjExOCAgICB8IDAuMTE2MSAgICAgICAgICAgICAgIHwgMC4xMzM1ICAgICAgICAgIHwgMC4xMzE0ICAgICAgICAgICB8DQorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsNCipC4bqjbmcgMy42IMav4bubYyBsxrDhu6NuZyB4w6FjIHN14bqldCBi4buLIGLhu4duaCB0aW0gdGhlbyBjw6FjIG3hu6ljIG5nw6F5ICoNCg0KQuG6o25nIDMuNiBjaG8gdGjhuqV5IHLhurFuZyBjw6FjIMawxqFjIGzGsOG7o25nIHByb2JpdCB2w6AgbG9naXN0aWMga2jDoSBn4bqnbiBuaGF1IHbDoCBtw7QgaMOsbmggdHV54bq/biB0w61uaCBwaMO5IGjhu6NwIHbhu5tpIG5o4buvbmcgZOG7ryBsaeG7h3UgbsOgeS4gKFBo4bqnbiBzYXUgdGjhuqNvIGx14bqtbiB24buBIGPDoWMgbcO0IGjDrG5oIHBow7kgaOG7o3AgY2hvIHZp4buHYyBwaMOibiB0w61jaCBjw6FjIEdMTSB24bubaSBiaeG6v24gxJHDoXAg4bupbmcgbMOgIGJp4bq/biBuaOG7iyBwaMOibikuDQoNCiMjIyAqKkPDoWMgbcO0IGjDrG5oIHR1eeG6v24gdMOtbmggdOG7lW5nIHF1w6F0IGNobyBk4buvIGxp4buHdSDEkeG6v20qKg0KDQpOaGnhu4F1IGJp4bq/biDEkcOhcCDhu6luZyBy4budaSBy4bqhYyDEkcOzbmcgdmFpIHRyw7IgxJHhur9tIHPhu5EgbOG6p24geHXhuqV0IGhp4buHbiBt4buZdCBiaeG6v24gY+G7kSBuZ+G6q3Ugbmhpw6puIEEgbsOgbyDEkcOzIHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuIGhheSBraMO0bmcgZ2lhbiBoYXkgbeG7mXQgYuG7kWkgY+G6o25oIG5o4bqldCDEkeG7i25oLCBoYXkgbsOzaSBjw6FjaCBraMOhYyBsw6AgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7MgcGjDom4gcGjhu5FpIFBvaXNzb24uIE5o4buvbmcgZOG7ryBsaeG7h3UgdGh1IMSRxrDhu6NjIGtoaSBxdWFuIHPDoXQgY8OhYyBiaeG6v24gZOG6oW5nIG7DoHkgdGjGsOG7nW5nIMSRxrDhu6NjIGfhu41pIGzDoCBk4buvIGxp4buHdSDEkeG6v20uIFbDrSBk4bulLCBz4buRIHbhu6UgdGFpIG7huqFuIGdpYW8gdGjDtG5nIHjhuqN5IHJhIHRyw6puIG3hu5l0IGN1bmcgxJHGsOG7nW5nIHRyb25nIG3hu5l0IG5nw6B5LCBz4buRIHbhu6UgdHLhu5ltIHhlIMO0IHTDtCB0cm9uZyBuxINtIDIwMTcsIGhheSBz4buRIGtow6FjaCBow6BuZyDEkeG6v24gbeG7mXQgaOG7hyB0aOG7kW5nIGThu4tjaCB24bulIHRyb25nIG3hu5l0IHR14bqnbiBsw6BtIHZp4buHYywuLi4uIFBo4bqnbiBuw6B5IGdp4bubaSB0aGnhu4d1IEdMTSBjaG8gZOG7ryBsaeG7h3UgxJHhur9tLiBDw6FjIEdMTSBnaeG6oyBz4butIG3hu5l0IHBow6JuIHBo4buRaSBQb2lzc29uIGNobyB0aMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4uIEPFqW5nIGdp4buRbmcgbmjGsCBjw6FjIHPhu5EgxJHhur9tLCBiaeG6v24gbmfhuqt1IG5oacOqbiBQb2lzc29uIGPDsyB0aOG7gyBs4bqleSBi4bqldCBr4buzIGdpw6EgdHLhu4sgc+G7kSBuZ3V5w6puIGtow7RuZyDDom0uDQo=