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.
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 |
| Có |
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=