library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
library(epitools)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(mdscore)
## Warning: package 'mdscore' was built under R version 4.2.3
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.2.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric

1 LỜI MỞ ĐẦU

Đầu tiên, tôi xin gửi lời cảm ơn chân thành đến Trường Đại học Tài Chính - Marketing đã đưa môn học Phân tích dữ liệu định tính vào chương trình giảng dạy. Đặc biệt, tôi muốn gửi lời cảm ơn sâu sắc đến giảng viên bộ môn – Th.S Trần Mạnh Tường đã chỉ dạy, truyền đạt những kiến thức quý báu trong suốt thời gian học tập vừa qua và tôi cũng cảm ơn trường vì đã tạo cơ hội giúp phát triển tương lai sau này. Nhờ có thời gian tham gia lớp học Phân tích dữ liệu định tính, tôi đã có thêm cho bản thân nhiều kiến thức mới, tinh thần học tập hiệu quả, nghiêm túc. Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để tôi có thể vững bước sau này.

Bộ môn Phân tích dữ liệu định tính là môn học thú vị, vô cùng bổ ích và có tính thực tế cao. Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của sinh viên, còn giúp cho tương lai sau. Tuy nhiên, do vốn kiến thức của tôi còn nhiều hạn chế và khả năng tiếp thu thực tế còn nhiều bỡ ngỡ. Tôi đã cố gắng hết sức nhưng bài tiểu luận cũng không thể tránh khỏi những thiếu sót và nhiều chỗ còn chưa chính xác, kính mong thầy xem xét và góp ý để bài tiểu luận của tôi được hoàn thiện hơn.

Tôi xin cảm ơn!

2 CHƯƠNG 1: GIỚI THIỆU BỘ DỮ LIỆU

Bộ dữ liệu được tạo từ một tổ chức giáo dục đại học liên quan đến sinh viên theo học đại học ở các ngành khác nhau như điều dưỡng, báo chí, công nghệ thông tin, tài chính… nhằm sử dụng để xây dựng dự đoán tình trạng sinh viên bỏ học. Tác giả sử dụng bộ dữ liệu được lấy tại trang zenodo do Valentim Realinho; Jorge Machado; Luís Baptista và Mónica V. Martins chia sẻ (2021). Dữ liệu được thu nhập từ khảo sát 1000 sinh viên tại Ấn Độ trong năm 2021.

library(xlsx)
## Warning: package 'xlsx' was built under R version 4.2.3
setwd("C:/Users/HP/Documents/PTDLĐT/")
data <- read.xlsx("DL.xlsx", sheetIndex = 1, header = T)
gender = data$gender
job = data$job
finance = data$finance
familysupport = data$familysupport
time = data$time
studyprogram = data$studyprogram
dropout = data$dropout
data
str(data)
## 'data.frame':    1000 obs. of  7 variables:
##  $ gender       : chr  "F" "F" "F" "F" ...
##  $ job          : num  1 0 1 0 1 1 1 0 1 0 ...
##  $ finance      : num  1 0 0 0 0 0 0 0 0 1 ...
##  $ familysupport: num  0 0 0 1 1 0 0 1 1 0 ...
##  $ time         : num  1 0 0 1 1 1 1 0 1 0 ...
##  $ studyprogram : num  1 1 1 0 0 0 1 1 1 1 ...
##  $ dropout      : num  1 1 1 0 0 0 0 0 0 0 ...

Bộ dữ liệu gồm 1000 quan sát và 7 biến định tính với link file dữ liệu: https://bit.ly/43Lr3Df cung cấp những thông tin sau:

- gender là giới tính của sinh viên, M = Nam, F = Nữ

- job là thực trạng làm thêm của sinh viên, 0 = Có làm thêm; 1 = Không làm thêm.

- finance là tài chính của sinh viên, 0 = Có khó khăn về tài chính; 1 = Không gặp khó khăn tài chính.

- time là thời gian sinh viên dành cho việc học, 0 = Không có thời gian học tập; 1 = Có thời gian cho học tập.

- familysupport là sự ủng hộ của gia đình cho đi học, 0 = Không được sự ủng hộ của gia đình, 1 = Có sự ủng hộ của gia đình.

- studyprogram là mức độ chương trình học, 0 = Chương trình nặng, 1 = Chương trình học phù hợp.

- dropout là ý định bỏ học của sinh viên, 0 = Có ý định bỏ học; 1 = Không có ý định không bỏ học.

3 CHƯƠNG 2: XÁC ĐỊNH BIẾN PHỤ THUỘC

Bộ dữ liệu bao gồm các thông tin về giới tính (gender), thời gian học (time), tình trạng tài chính (finance), sự ủng hộ của gia đình cho đi học (familysupport), thực trạng làm thêm (job), lý do chương trình học (studyprogram) và ý định bỏ học (dropout) của sinh viên tại Ấn Độ. Tác giả có thể sử dụng bộ dữ liệu này để phân tích tình trạng sinh viên có ý định bỏ học.

Bỏ học được hiểu một cách đơn giản là dừng việc học tập, một sinh viên gọi là bỏ học khi họ dừng lại không đến các lớp học trước khi họ hoàn thành khóa học của họ. Theo Bean (1980), sinh viên bỏ học (drop-out) là sinh viên rời trường trước khi đạt được mục đích, ở đây có thể hiểu là trước khi tốt nghiệp đại học. Có nhiều nguyên nhân khiến cho sinh viên có ý định bỏ học, bao gồm:

(1) Khó khăn về tài chính: Sinh viên phải vật lộn với chi phí sinh hoạt cao, không đủ tiền trợ cấp, các khoản nợ sinh viên vì vậy sinh viên sẽ không thể đóng tiền học phí để tiếp tục việc học.

(2) Thiếu thời gian học tập: Sinh viên không tập trung cho việc học dẫn đến kết quả học tập của sinh viên ngày càng sa sút khiến cho sinh viên ngày càng có ý định muốn bỏ học.

(3) Có công việc làm thêm ổn định: Sinh viên chỉ tập trung vào làm việc mà bỏ bê việc học trên trường. Dẫn đến sinh viên có thể sẽ đưa ra quyết định bỏ học thay vì tiếp tục học.

(4) Không có sự ủng hộ của gia đình: Sinh viên không có động lực đi học từ đó dẫn đến bỏ học.

(5) Chương trình học nặng: Sinh viên muốn bỏ học thường do chương trình quá khó để theo học, thiếu sự giao tiếp với giáo viên và bạn bè cùng lớp hay do chương trình học không như kỳ vọng. Hoặc có thể vì chương trình học nặng nên khiến cho sự hứng thú khi tiếp thu được những điều mới mẻ trong môn học không còn nữa dẫn đến sinh viên muốn bỏ học.

Ngoài ra, do tình trạng sinh viên tự ý bỏ học hiện nay đang là vấn đề đáng lo ngại ở nhiều quốc gia như Tây Ban Nha, Mỹ, Đức… trong đó có Ấn Độ. Theo trang India Today Education Desk, Bộ Giáo dục Ấn Độ cho biết có 19.256 sinh viên đã bỏ học tại các trường Cental Universities (CU), Indian Institutes of Technology (IIT) và Indian Institutes of Management (IIM) trong giai đoạn từ năm học 2018 – 2023. Nhằm hiểu rõ được tình trạng này từ đó đưa ra những giải pháp và kiến nghị giúp giảm thiểu tình trạng sinh viên bỏ học thì việc thực hiện nghiên cứu yếu tố tác động đến ý định bỏ học của sinh viên là hết sức cần thiết, Do đó, tác giả chọn biến phụ thuộc là Ý định sinh viên bỏ học (dropout) với đề tài là “Phân tích các yếu tố ảnh hưởng đến ý định sinh viên bỏ học”

4 CHƯƠNG 3: PHƯƠNG PHÁP NGHIÊN CỨU

Bộ dữ liệu mà tác giả sử dụng là dữ liệu nhị phân nên tác giả sẽ sử dụng phương pháp dữ liệu định tính để tổng hợp và phân tích bằng mô hình hồi quy logistic với các hàm liên kết: logit, probit và cloglog.

4.1 Giới thiệu mô hình

- Mô hình tuyến tính tổng quát

Bài nghiên cứu sử dụng phương pháp hồi quy tuyến tính tổng quát (GLM) giải thích sự tương tác của các yếu tố lên biến phụ thuộc trong hồi quy (bao gồm cả sự kết hợp của các yếu tố tác động lên biến phụ thuộc). Mô hình này cho phép trung bình phụ thuộc vào biến giải thích thông qua một hàm liên kết (link function) và giá trị trả về là bất kì một phần tử nào của một tập hợp các phân phối được gọi là họ các lũy kế (chẳng hạn Normal, Poisson, Binormial).

- Mô hình hồi quy

Mô hình hồi quy được chia làm 2 nhóm:

  • Mô hình hồi quy cổ điển \[μ_i ≡ E[y_i]= β_0+β_{1i}+⋯+β_kx_{ki}\] Để mô hình hồi quy cổ điển phải thỏa mãn 3 điều kiện sau:
  1. Linearity of the association between predictors and outcome variable.

  2. Gaussian distribution of responses.

  3. constant variance of response distribution.

  • Mô hình hồi quy tổng quát:

\[μ_i=g^{−1}(β_0+β_{1i}+⋯+β_kx_{ki})\] Hoặc

\[g(μ_i)=β_0+β_{1i}+⋯+β_kx_{ki}\]

Trong mô hình này hàm g(.) được gọi là hàm liên kết (link function) và g(.) phải là hàm đơn điệu. Trong một mô hình hồi quy tuyến tính tổng quát sẽ có 3 thành phần:

  • Thành phần hệ thống (systematic component): Là thành tổ hợp tuyến tính của các biến độc lập.

  • Thành phần ngẫu nhiên (random component): Là phân phối xác suất của biến phụ thuộc (dependent/response variable).

  • Hàm liên kết (link function).

4.2 Ước lượng hàm hồi quy cho dữ liệu nhị phân

Dữ liệu nhị phân là dữ liệu định tính chỉ nhận 2 giá trị: Đúng/Sai; Đồng ý/Không đồng ý; Có/Không; Thành công/Thất bại,…

Mô hình logit

Xét biến đáp ứng là biến nhị phân với hai thuộc tính: một gọi là “Thành công” và một gọi là “Thất bại”, chịu sự tác động của một tập hợp m biến \(X=(X_1,X_2,...,X_m)\) mà ta gọi là các biến giải thích. Biến đáp ứng được đại diện, hay lượng hóa bởi biến ngẫu nhiên có phân phối 0 – 1:

Y = 1 nếu đáp ứng là “Thành công” và 0 nếu đáp ứng là “Thất bại”

Mô hình logistic mô tả sự phụ thuộc của biến đáp ứng thông qua xác suất “Thành công” \(π(x)=P(Y=1|X=x)\) ứng với mức \(x = (x_1,x_2,...,x_m)\) của các biến giải thích phụ thuộc vào x=(x_1,x_2,…,x_m) dưới dạng:

\[logit(π)=log(π/(1−π))=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

Trong đó các hằng số \(β_0,β_1,β_2,...,β_m\) được gọi là các hệ số hồi quy. Hệ số \(β_j\) của biến \(x_j\) là lượng thay đổi của \(log(\frac{π(x)}{1−π(x)})\), hay của \(log[Odds(x)]\) khi biến \(x_j\) thay đổi 1 đơn vị, trong điều kiện các biến khác không thay đổi, \(j=1,2,…,m\).

  • Nếu \(β_j>0,π(x)\)đồng biến theo \(x_j\), khi các biến khác không thay đổi.

  • Nếu \(β_j<0,π(x)\) nghịch biến theo \(x_j\), khi các biến khác không thay đổi.

  • Nếu \(β_j=0,π(x)\) không phụ thuộc \(x_j\).

Khi \(x_j\) tăng thêm 1 đơn vị, còn các biến khác không thay đổi thì tỷ lệ cược \(Odds(x)\) được nhân lên với \(e^{β_j}\)

Mô ước lượng cho mô hình hồi quy Logistic là :

\[log(\frac{\hat{\pi}(x)}{1−\hat{\pi}(x)})=\hat{β_0}+\hat{β_1}.x_1+\hat{β_2}.x_2+...+\hat{β_m}.x_m\]

Trong đó các hệ số \(\hat{β_j}\) ước lượng cho hồi quy \(β_j\) được tìm theo phương pháp hợp lý cực đại.

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)\) 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 X có phân phối chuẩn, tức là xác suất “Thành công” có dạng:

\[\pi(x) = \Phi(\alpha + \beta x)\]

trog đó \(\Phi(x) = \frac{1}{\sqrt{2\pi}}∫_{-∞}^{x}e^{-\frac{1}{2}t^2}dt\) là hàm phân phối chuẩn chính tắc.

Ký hiệu: *\(probit(π(x)) = \Phi^{−1}(π(x))\) và mô hình Probit được viết dưới dạng:

\[probit(π(x)) = \Phi^{−1}(π) = \alpha + \beta x\]

Với \(\pi\) là xác suất để biến phụ thuộc nhận giá trị “thành công”.

Mô hình cloglog

Ta nhận được mô hình Logistic có các biến dự báo ở dạng log, gọi là mô hình logistic log-log

\[cloglog(π)=log(−log(1−π))\]

Với \(\pi\) là xác suất để biến phụ thuộc nhận giá trị “thành công”.

4.3 Trình tự thực hiện phân tích dữ liệu

Bước 1: Thống kê mô tả và vẽ đồ thị cho bộ dữ liệu

Bước 2: Thực hiện các phép toán tính rủi ro tương đối (Risk ratio) và tỷ lệ chênh (Odd ratio) cho các biến định tính

Bước 3: Thống kê suy diễn cho dữ liệu định tính: kiểm định tính độc lập và tính khoảng ước lượng tỷ lệ \(\to\) Đề xuất mô hình hồi quy logistic.

Bước 4: Chạy ước lượng mô hình hồi quy logistic với các hàm liên kết logit, probit và cloglog và kiểm định mức độ phù hợp mô hình với dữ liệu điều tra thông qua kiểm định LR.

Bước 5: Đánh giá mức phù hợp của các mô hình thông qua chỉ số sau:

  • Chỉ số AIC - Akaike Information Criterion: dùng để đánh giá mô hình hồi quy được ước lượng bởi phương pháp Maximum Likekihood (ML) thông qua chỉ số AIC càng nhỏ thì mô hình càng tốt.

  • Chỉ số Brier Score: dùng để lựa chọn mô hình với chỉ số B càng bé thì mô hình ước lượng càng chính xác và càng phù hợp với dữ liệu quan sát.

  • Chỉ số Deviance: Là một tiêu chí rất phổ biến được sử dụng để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Hợp lý cực đại (ML). Cũng giống như chỉ tiêu AIC, giá trị của Deviance càng nhỏ thì mô hình càng tốt.

Bước 6: Chạy mô hình phù hợp nhất sau khi đã lựa chọn mô hình.

5 CHƯƠNG 4: PHÂN TÍCH DỮ LIỆU VÀ KẾT QUẢ NGHIÊN CỨU

5.1 Thống kê mô tả 1 biến

5.1.1 Biến dropout

- Bảng tần số và tần suất

table(dropout)
## dropout
##   0   1 
## 467 533
table(dropout)/sum(table(dropout))
## dropout
##     0     1 
## 0.467 0.533

Biến dropout đại diện cho sinh viên có ý định bỏ học và không có ý định bỏ học hay không. Trong 1000 sinh viên tham gia cuộc khảo sát, có 467 sinh viên có dự định bỏ học chiếm tỷ trọng 46,7% trong khi 533 sinh viên không có ý định bỏ học chiếm 53,3% tổng sinh viên. Từ kết quả này, ta thấy có gần 50% sinh viên có ý định bỏ học cho thấy tỷ lệ sinh viên muốn bỏ học tại Ấn Độ khá cao.

- Đồ thị

library(ggplot2)
data |> ggplot(aes(x = dropout, y = after_stat(count))) +
geom_bar(fill = 'grey') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Ý định bỏ học của sinh viên', y = 'Số người')

(Chú thích: 0 = Có ý định bỏ học, 1 = Không có ý định bỏ học)

Dựa vào đồ thị thể hiện số lượng sinh viên có ý định bỏ học. Ta thấy không có sự chênh lệch đáng kể giữa sinh viên có ý định bỏ học và không có ý định bỏ học, nghĩa là tỷ lệ sinh viên có ý định bỏ học và sinh viên không có ý định bỏ học là xấp xỉ ( sinh viên không có ý định bỏ học cao gấp 1,141 lần so với sinh viên có ý định bỏ học).

5.1.2 Biến gender

- Bảng tần số và tần suất

table(gender)
## gender
##   F   M 
## 639 361
table(gender)/sum(table(gender))
## gender
##     F     M 
## 0.639 0.361

Biến gender đại diện cho giới tính của sinh viên. Trong 1000 sinh viên thì tỷ lệ sinh viên khảo sát là nữ chiếm 63,9%, trong khi sinh viên nam chiếm tỷ trọng 36,1%. Từ kết quả này cho thấy tập dữ liệu khảo sát chủ yếu là từ sinh viên nữ.

- Đồ thị

data |> ggplot(aes(x = gender, y = after_stat(count))) +
geom_bar(fill = 'grey') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Giới tính', y = 'Số người')

Dựa vào đồ thị, ta cho thấy số lượng sinh viên theo giới tính là nam hoặc nữ. Có sự chênh lệch giữa giới tính của các sinh viên, trong tỷ lệ sinh viên là nữ chiếm cao hơn, gấp 1,77 lần so với tỷ lệ sinh viên nam.

5.1.3 Biến job

- Bảng tần số và tần suất

table(job)
## job
##   0   1 
## 476 524
table(job)/sum(table(job))
## job
##     0     1 
## 0.476 0.524

Biến job đại diện cho thực trạng làm thêm của sinh viên. Trong số 1000 sinh viên được khảo sát, ta thấy có 476 sinh viên có công việc làm thêm, chiếm 47,6% và 524 sinh viên không có làm thêm, tương đương 52,4%. Kết quả này cho thấy gần \(\frac{1}{2}\) sinh viên đã có việc làm thêm.

- Đồ thị

data |> ggplot(aes(x = job, y = after_stat(count))) +
geom_bar(fill = 'grey') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Thực trạng làm thêm của sinh viên', y = 'Số người')

(Chú thích: 0 = Có công việc làm thêm, 1 = Không có công việc làm thêm)

Thông qua đồ thị, ta cho thấy không có sự chênh lệch giữa sinh viên có làm thêm và sinh viên không có công việc làm thêm. Cho thấy, số sinh viên không có việc làm xấp xỉ so với sinh viên có công việc (gấp 1,1 lần).

5.1.4 Biến finance

- Bảng tần số và tần suất

table(finance)
## finance
##   0   1 
## 268 732
table(finance)/sum(table(finance))
## finance
##     0     1 
## 0.268 0.732

Biến finance đại diện tài chính của sinh viên. Trong 1000 sinh viên tham gia khảo sát, ta thấy chỉ có 26,8% sinh viên gặp khó khăn về tài chính, trong khi sinh viên không gặp khó khăn về tài chính chiếm 73,2%. Từ kết quả này, cho thấy chỉ có 30% sinh viên cho thấy sinh viên đang có khó khăn.

- Đồ thị

data |> ggplot(aes(x = finance, y = after_stat(count))) +
geom_bar(fill = 'grey') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Tài chính của sinh viên', y = 'Số người')

(Chú thích: 0 = Có khó khăn tài chính, 1 = Không có khó khăn tài chính)

Dựa vào đồ thị, ta thấy có sự chênh lệch khá lớn giữa sinh viên gặp khó khăn về tài chính và sinh viên không có khó khăn về tài chính. Sinh viên có đủ tài chính dành cho việc học cao gấp khoảng 2,7 lần sinh viên gặp khó khăn về tài chính.

5.1.5 Biến familysupport

- Bảng tần số và tần suất

table(familysupport)
## familysupport
##   0   1 
## 302 698
table(familysupport)/sum(table(familysupport))
## familysupport
##     0     1 
## 0.302 0.698

Biến familysupport đại diện cho sự ủng hộ của gia đình cho đi học đối với sinh viên. Trong số 1000 sinh viên, ta thấy có 302 sinh viên không được gia đình ủng hộ đi học chiếm tỷ trọng 30,2% trong khi có 698 sinh viên được gia đình ủng hộ đi học (tương đương 69,8%). Từ kết quả thống kê cho thấy phần lớn sinh viên đều được sự ủng hộ của gia đình cho đi học.

- Đồ thị

data |> ggplot(aes(x = familysupport, y = after_stat(count))) +
geom_bar(fill = 'grey') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color ='black', vjust = - .5) +labs(x = 'Sự ủng hộ của gia đình đi học', y = 'Số người')

(Chú thích: 0 = Không có sự ủng hộ của gia đình, 1 = Có sự ủng hộ của gia đình)

Dựa vào đồ thị, ta cho thấy sự chênh lệch khá lớn giữa sinh viên có sự ủng hộ của giả đình và sinh viên không có sự ủng hộ của gia đình. Số sinh viên được sự ủng hộ của gia đình cho đi học chiếm phần lớn, gấp 2,3 lần sinh viên không có sự ủng hộ của gia đình cho đi học.

5.1.6 Biến time

- Bảng tần số và tần suất

table(time)
## time
##   0   1 
## 277 723
table(time)/sum(table(time))
## time
##     0     1 
## 0.277 0.723

Biến time đại diện cho thời gian sinh việc dành cho việc học. Trong số 1000 sinh viên, có 723 sinh viên có thời gian học tập đạt tỷ lệ 72,3%, trong khi đó, chỉ có 277 sinh viên thiếu thời gian dành cho việc học chiếm tỷ trọng 27,7%. Từ kết quả này có thể thấy tình trạng sinh viên thiếu thời gian học khá ít, hầu hết sinh viên đều có đủ thời gian dành cho việc học.

- Đồ thị

data |> ggplot(aes(x = time, y = after_stat(count))) +
geom_bar(fill = 'grey') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Thời gian sinh viên dành cho việc học', y = 'Số người')

(Chú thích: 0 = Thiếu thời gian học, 1 = Có thời gian học)

Dựa vào đồ thị thể hiện số lượng sinh viên có thời gian học hay không. Ta thấy sự chênh lệch rõ rệt giữa sinh viên có thời gian học và sinh viên thiếu thời gian dành cho việc học, cho thấy tỷ lệ sinh viên có thời gian học chiếm cao gấp 2,57 lần so với sinh viên không có thời gian dành cho việc học.

5.1.7 Biến studyprogram

- Bảng tần số và tần suất

table(studyprogram)
## studyprogram
##   0   1 
## 363 637
table(studyprogram)/sum(table(studyprogram))
## studyprogram
##     0     1 
## 0.363 0.637

Biến studyprogram đại diện cho mức độ chương trình học của sinh viên. Trong số 1000 sinh viên khảo sát, ta thấy có 363 sinh viên thấy chương trình học nặng đạt tỷ lệ 36,3% và có 637 sinh viên cảm thấy chương trình học phù hợp với mình, tương đương 63,7%. Từ kết quả này, có thể thấy chỉ có khoảng 40% sinh viên thấy chương trình học nặng so với học lực sinh viên.

- Đồ thị

data |> ggplot(aes(x = studyprogram, y = after_stat(count))) +
geom_bar(fill = 'grey') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Mức độ chương trình học', y = 'Số người')

(Chú thích: 0 = Chương trình nặng, 1 = Chương trình phù hợp với sinh viên)

Thông qua đồ thị, ta cho thấy sự chênh lệch đáng kể giữa mức độ chương trình học của sinh viên. Tỷ lệ sinh viên cảm thấy chương trình học phù hợp với bản thân cao gấp 1,77 lần so với sinh viên thấy chương trình học nặng.

5.2 Thống kê mô tả 2 biến

5.2.1 Biến dropout và gender

- Bảng tần số và tần suất

pt1 <- table(gender,dropout)
addmargins(pt1)
##       dropout
## gender    0    1  Sum
##    F    306  333  639
##    M    161  200  361
##    Sum  467  533 1000
ppt1 <- prop.table(pt1)
addmargins(ppt1)
##       dropout
## gender     0     1   Sum
##    F   0.306 0.333 0.639
##    M   0.161 0.200 0.361
##    Sum 0.467 0.533 1.000

Từ bảng tần số và tần suất thể hiện số sinh viên có ý định bỏ học theo giới tính.

  • Trong 467 sinh viên có ý định bỏ học trong đó có 306 sinh viên nữ ,chiếm 30,6% tổng sinh viênn và có 161 sinh viên nam, tương đương 16,1%.

  • Bên cạnh đó, có 533 sinh viên không ý định bỏ học trong đó có 333 sinh viên nữ không có ý định bỏ học và chiếm 33,3% trên 1000 sinh viên và có 200 sinh viên nam, tương đương 20% tổng sinh viên.

- Đồ thị

data |> ggplot(aes(x = gender, y = after_stat(count))) + geom_bar(fill = 'brown') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +facet_grid(. ~ data$dropout) +
 # theme_classic() +
  labs(x = 'Giới tính', y = 'Số người')

Dựa vào đồ thị phân loại sinh viên có ý định bỏ học theo giới tính, có thể nhận thấy có sự khác biệt giữa nam và nữ có dự định bỏ học và không có ý định bỏ học.

  • Số sinh viên có ý định bỏ học là nữ cao gấp 1,9 lần sinh viên nam.

  • Sinh viên nữ không có ý định bỏ học cũng cao gấp 1,665 lần so với sinh viên nam.

Qua biểu đồ, sinh viên nữ có dự định bỏ học và không có ý định bỏ học và sinh viên nam có ý định bỏ học và không có ý định bỏ học đều xấp xỉ nhau. Cho thấy rằng sinh viên có ý định bỏ học không phải do giới tính.

- Rủi ro tương đối

epitab(pt1, method = 'riskratio', rev = "b")
## $tab
##       dropout
## gender   1        p0   0        p1 riskratio     lower    upper   p.value
##      M 200 0.5540166 161 0.4459834  1.000000        NA       NA        NA
##      F 333 0.5211268 306 0.4788732  1.073747 0.9329353 1.235812 0.3230267
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả cho thấy tỷ lệ rủi ro tương đối (risk ratio) là 1,0737, tức là sinh viên nữ có tỷ lệ muốn bỏ học cao hơn 7,37% so với sinh viên nam. Với độ tin cậy 95%, ta có thể tin rằng sau 1 năm, số sinh viên nữ có nguy cơ bỏ học cao gấp từ 0,9329 đến 1,2358 lần so với sinh viên nam.

- Tỷ lệ chênh lệch

epitab(pt1, method = 'oddsratio')
## $tab
##       dropout
## gender   0        p0   1        p1 oddsratio     lower    upper   p.value
##      F 306 0.6552463 333 0.6247655  1.000000        NA       NA        NA
##      M 161 0.3447537 200 0.3752345  1.141514 0.8809177 1.479201 0.3230267
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả tỷ lệ chênh (odd ratio) là 1,1415, cho thấy sinh viên nữ có khả năng bỏ học cao hơn so với sinh viên nam khoảng 14,15%. Và tỷ lệ sinh viên giữa nam và nữ có ý định bỏ học cao gấp 1,1415 lần với tỷ lệ sinh viên giữa nam và nữ không có ý định bỏ học.

5.2.2 Biến dropout và job

- Bảng tần số và tần suất

pt2 <- table(job,dropout)
addmargins(pt2)
##      dropout
## job      0    1  Sum
##   0    379   97  476
##   1     88  436  524
##   Sum  467  533 1000
ppt2 <- prop.table(pt2)
addmargins(ppt2)
##      dropout
## job       0     1   Sum
##   0   0.379 0.097 0.476
##   1   0.088 0.436 0.524
##   Sum 0.467 0.533 1.000

Từ bảng tần số và tần suất thể hiện sinh viên có ý định bỏ học theo thực trạng làm thêm của sinh viên.

  • Trong 467 sinh viên có ý định bỏ học thì có 379 sinh viên có việc làm, chiếm 37,9% tổng sinh viên và có 88 sinh viên không có việc làm, tương ứng 8,8%.

  • Trong 533 sinh viên không có ý định bỏ học thì có 436 sinh viên không có công việc làm thêm, tương ứng 43,6% và có 97 sinh viên có việc làm.

data |> ggplot(aes(x = job, y = after_stat(count))) +
  geom_bar(fill = 'brown') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  facet_grid(. ~ data$dropout) +
 # theme_classic() +
  labs(x = 'Thực trạng làm thêm của sinh viên', y = 'Số người')

(Chú thích: 0 = Có việc làm thêm, 1 = Không có việc làm thêm)

Dựa vào đồ thị phân loại sinh viên có ý định bỏ học theo thực trạng làm thêm của sinh viên, ta thấy có sự chênh lệch đáng kể giữa sinh viên có việc làm và không có công việc làm thêm khi có dự định bỏ học và không có dự định bỏ học.

  • Sinh viên có ý định bỏ học vì có việc làm gấp khoảng 4,31 lần so với sinh viên không có việc làm.

  • Sinh viên không có ý định bỏ học mà không có công việc làm thêm cao gấp 4,495 lần so với sinh viên có việc làm thêm.

Qua biểu đồ có thể thấy đối với sinh viên có việc làm thì tỷ lệ sinh viên muốn bỏ học cao hơn tỷ lệ sinh viên không có ý định bỏ học nhưng đối với sinh viên không có việc làm thì tỷ lệ sinh việc không có ý định bỏ học lại nhiều hơn tỷ lệ sinh viên có dự định bỏ học. Cho thấy sinh viên có việc làm thường có ý định muốn bỏ học nhiều.

- Rủi ro tương đối

Kết quả cho thấy sinh viên có ý định bỏ học vì có việc làm cao gấp 4,7411 lần so với sinh viên không có công việc làm thêm.

epitab(pt2, method = 'riskratio', rev = "b")
## $tab
##    dropout
## job   1        p0   0        p1 riskratio    lower    upper      p.value
##   1 436 0.8320611  88 0.1679389  1.000000       NA       NA           NA
##   0  97 0.2037815 379 0.7962185  4.741119 3.897542 5.767278 3.637376e-94
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ rủi ro tương đối (risk ratio) là 4,7411, tức là sinh viên có việc làm thường có ý định bỏ học nhiều gấp 4,7411 lần so với sinh viên không có việc làm. Với độ tin cậy 95%, ta có thể tin rằng sau 1 năm, số sinh viên có việc làm có nguy cơ bỏ học cao gấp từ 3,8975 đến 5,7673 lần so với sinh viên không có việc làm.

- Tỷ lệ chênh lệch

epitab(pt2, method = 'oddsratio')
## $tab
##    dropout
## job   0        p0   1        p1 oddsratio    lower    upper      p.value
##   0 379 0.8115632  97 0.1819887   1.00000       NA       NA           NA
##   1  88 0.1884368 436 0.8180113  19.35848 14.06149 26.65086 3.637376e-94
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ chênh (odd ratio) là 19,3585, cho thấy sinh viên có việc làm có khả năng bỏ học cao gấp 19,3585 lần so với sinh viên không có làm thêm. Ngoài ra, còn cho thấy rằng tỷ lệ giữa sinh viên có việc làm và không có việc làm thường có khả năng muốn bỏ học cao gấp 19,3585 lần so với tỷ lệ giữa sinh viên có việc làm và không có việc làm thường không có ý định bỏ học.

5.2.3 Biến dropout và finance

- Bảng tần số và tần suất

pt3 <- table(finance,dropout)
addmargins(pt3)
##        dropout
## finance    0    1  Sum
##     0    140  128  268
##     1    327  405  732
##     Sum  467  533 1000
ppt3 <- prop.table(pt3)
addmargins(ppt3)
##        dropout
## finance     0     1   Sum
##     0   0.140 0.128 0.268
##     1   0.327 0.405 0.732
##     Sum 0.467 0.533 1.000

Từ bảng tần suất thể hiện số sinh viên có ý định bỏ học theo tình trạng tài chính của sinh viên.

  • Trong 467 sinh viên có ý định bỏ học, có 140 sinh viên khó khăn tài chính, chiếm 14% tổng sinh viên và 327 sinh viên không khó khăn tài chính, chiếm 32,7% tổng sinh viên.

  • Trong 533 sinh viên không có ý định bỏ học, có 405 sinh viên không khó khăn về tài chính và chiếm 40,5% trên 1000 sinh viên và có 128 sinh viên có khó khăn tài chính, tương đương 12,8%.

data |> ggplot(aes(x = finance, y = after_stat(count))) +
  geom_bar(fill = 'brown') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  facet_grid(. ~ data$dropout) +
 # theme_classic() +
  labs(x = 'Tài chính của sinh viên', y = 'Số người')

(Chú thích: 0 = Có khó khăn tài chính; 1 = Không có khó khăn tài chính)

Dựa vào đồ thị thể hiện sinh viên có ý định bỏ học theo tài chính của sinh viên, ta thấy có sự khác biệt đáng kể giữa sinh viên có khó khăn tài chính và sinh viên không gặp khó khăn tài chính khi có ý định bỏ học và không có ý định bỏ học.

  • Sinh viên có ý định bỏ học có đủ tài chính cao hơn sinh viên gặp khó khăn tài chính gấp 2,336 lần.

  • Sinh viên đủ tài chính không có ý định bỏ học cũng cao gấp khoảng 3,164 lần so với số sinh viên gặp khó khăn về tài chính.

Qua biểu đồ có thể thấy đối với sinh viên có khó khăn tài chính thì tỷ lệ sinh viên bỏ học cao hơn so với tỷ lệ sinh viên không có ý định bỏ học còn đối với sinh viên không gặp khó khăn thì tỷ lệ sinh viên không có ý định bỏ học cao hơn tỷ lệ sinh viên có dự định bỏ học. Cho thấy sinh viên có khó khăn tài chính thường có ý định bỏ học hơn.

- Rủi ro tương đối

epitab(pt3, method = 'riskratio',rev = "b")
## $tab
##        dropout
## finance   1        p0   0        p1 riskratio    lower    upper    p.value
##       1 405 0.5532787 327 0.4467213  1.000000       NA       NA         NA
##       0 128 0.4776119 140 0.5223881  1.169382 1.016595 1.345133 0.03792387
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ rủi ro tương đối (risk ratio) là 1,1693, tức là sinh viên gặp khó khăn tài chính thường có ý định bỏ học cao hơn sinh viên không gặp khó khăn tài chính khoảng 16,93%. Với độ tin cậy 95%, ta có thể tin rằng sau 1 năm, số sinh viên có khó khăn tài chính có nguy cơ bỏ học cao gấp từ 1,0166 đến 1,3451 lần so với sinh viên không gặp khó khăn về tài chính.

- Tỷ lệ chênh lệch

epitab(pt3, method = 'oddsratio')
## $tab
##        dropout
## finance   0        p0   1        p1 oddsratio    lower    upper    p.value
##       0 140 0.2997859 128 0.2401501  1.000000       NA       NA         NA
##       1 327 0.7002141 405 0.7598499  1.354644 1.023301 1.793276 0.03792387
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ chênh (odd ratio) là 1,3546, tức là sinh viên gặp khó khăn tài chính có khả năng bỏ học cao gấp 35,46% sinh viên không có khó khăn tài chính. Ngoài ra, tỷ lệ giữa sinh viên có khó khăn tài chính và không có khó khăn thường có khả năng muốn bỏ học cao hơn so với tỷ lệ giữa sinh viên có khó khăn tài chính và không có khó khăn thường không có ý định bỏ học khoảng 35,46%.

5.2.4 Biến dropout và familysupport

- Bảng tần số và tần suất

pt4 <- table(familysupport,dropout)
addmargins(pt4)
##              dropout
## familysupport    0    1  Sum
##           0    134  168  302
##           1    333  365  698
##           Sum  467  533 1000
ppt4 <- prop.table(pt4)
addmargins(ppt4)
##              dropout
## familysupport     0     1   Sum
##           0   0.134 0.168 0.302
##           1   0.333 0.365 0.698
##           Sum 0.467 0.533 1.000

Từ bảng tần số và tần suất thể hiện số sinh viên có ý định bỏ học theo sự ủng hộ của gia đình đi học.

  • Trong 467 sinh viên có ý định bỏ học, có 333 sinh viên có sự ủng hộ của gia đình đi học, chiếm 33,3% và 134 sinh viên không có sự ủng hộ của gia đình đi họcc, chiếm 13,4%.

  • Trong 533 sinh viên không có ý định bỏ học, có 365 sinh viên có sự ủng hộ của gia đình đi học và chiếm 36,5% và 168 sinh viên không có sự ủng hộ của gia đình, tương đương 16,8%.

data |> ggplot(aes(x = familysupport, y = after_stat(count))) +
  geom_bar(fill = 'brown') +
  geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +
  facet_grid(. ~ data$dropout) +
 # theme_classic() +
  labs(x = 'Sự ủng hộ của gia đình cho đi học ', y = 'Số người')

(Chú thích: 0 = Không có sự ủng hộ gia đình đi học, 1 = Có sự ủng hộ gia đình đi học)

Dựa vào đồ thị phân loại sinh viên có ý định bỏ học theo sự ủng hộ của gia đình đi học, ta thấy có sự chêch lệch đáng kể giữa sinh viên có sự ủng hộ của gia đình đi học và không có sự ủng hộ gia đình khi có ý định bỏ học và không có ý định bỏ học.

  • Sinh viên có sự ủng hộ của gia đình đi học có tỷ lệ muốn bỏ học cao hơn sinh viên không có sự ủng hộ của gia đình gấp khoảng 2,485 lần.

  • Sinh viên có sự ủng hộ của gia đình đi học có tỷ lệ không có ý định bỏ học cũng cao gấp 32,173 lần so với sinh viên không có sự ủng hộ của gia đình.

Qua biểu đồ có thể thấy đối với sinh viên không có sự ủng hộ của gia đình và sinh viên có sự ủng hộ của gia đình thì tỷ lệ sinh viên không có ý định bỏ học đều cao hơn tỷ lệ sinh viên muốn bỏ học, Cho thấy sinh viên có ý định bỏ học không phải vì mức ủng hộ của gia đình.

- Rủi ro tương đối

epitab(pt4, method = 'riskratio', rev ="b")
## $tab
##              dropout
## familysupport   1        p0   0        p1 riskratio     lower    upper
##             1 365 0.5229226 333 0.4770774 1.0000000        NA       NA
##             0 168 0.5562914 134 0.4437086 0.9300559 0.8019036 1.078688
##              dropout
## familysupport   p.value
##             1        NA
##             0 0.3349004
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ rủi ro tương đối (risk ratio) là 0,93006, tức là sinh viên không có sự ủng hộ của gia đình đi học thường có ý định bỏ học thấp hơn sinh viên có sự ủng hộ của gia đình đi học khoảng 6,994%. Với độ tin cậy 95%, ta có thể tin rằng sau 1 năm, số sinh viên không có sự ủng hộ gia đình có nguy cơ bỏ học thấp gấp từ 0,8019 đến 1,0787 lần so với sinh viên được sự ủng hộ của gia đình.

- Tỷ lệ chênh lệch

epitab(pt4, method = 'oddsratio')
## $tab
##              dropout
## familysupport   0        p0   1       p1 oddsratio     lower    upper   p.value
##             0 134 0.2869379 168 0.315197 1.0000000        NA       NA        NA
##             1 333 0.7130621 365 0.684803 0.8742671 0.6665426 1.146728 0.3349004
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ chênh (odd ratio) là 0,87427, tức là sinh viên không được sự ủng hộ của gia đình đi học có khả năng muốn bỏ học thấp hơn sinh viên có sự ủng hộ của gia đình khoảng 12,573%. Ngoài ra, tỷ lệ giữa sinh viên không có sự ủng hộ và được sự ủng hộ của gia đình thường có khả năng muốn bỏ học bằng 0,8743 tỷ lệ giữa sinh viên không có sự ủng hộ và được sự ủng hộ của gia đình đi học thường không có ý định bỏ học.

5.2.5 Biến dropout và time

- Bảng tần số và tần suất

pt5 <- table(time,dropout)
addmargins(pt5)
##      dropout
## time     0    1  Sum
##   0    257   20  277
##   1    210  513  723
##   Sum  467  533 1000
ppt5 <- prop.table(pt5)
addmargins(ppt5)
##      dropout
## time      0     1   Sum
##   0   0.257 0.020 0.277
##   1   0.210 0.513 0.723
##   Sum 0.467 0.533 1.000

Từ bảng tần số và tần suất thể hiện sinh viên có ý định bỏ học theo thời gian sinh viên dành cho việc học.

  • Trong 467 sinh viên có ý định bỏ học,có 257 sinh viên có thời gian học, chiếm 25,7% và có 210 sinh viên đủ thời gian, tương đương 21%.

  • Trong 533 sinh viên không có ý định bỏ học, có 513 sinh viên không có thời gian học, tương ứng 51,3% và có 20 sinh viên có thời gian học, chiếm 2%.

- Đồ thị

data |> ggplot(aes(x = time, y = after_stat(count))) + geom_bar(fill = 'brown') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +facet_grid(. ~ data$dropout) +
 # theme_classic() +
  labs(x = 'Thời gian sinh viên dành cho việc học', y = 'Số người')

(Chú thích: 0 = Thiếu thời gian học, 1 = Có thời gian học)

Dựa vào đồ thị phân loại sinh viên có ý định bỏ học theo tình hình thời gian sinh viên dành cho việc học, ta thấy có sự khác biệt giữa sinh viên có thời gian học và sinh viên có thiếu thời gian dành để học khi có ý định bỏ học và không có ý định bỏ học.

  • Sinh viên có ý định bỏ học và có thời gian học xấp xỉ với tỷ lệ sinh viên không có thời gian học (gấp 1,22 lần).

  • Sinh viên không có ý định bỏ học không có thời gian dành cho việc học cao gấp 25,65 lần so với sinh viên có thời gian học.

Qua biểu đồ cho thể thấy đối với sinh viên thiếu thời gian học thì tỷ lệ sinh viên muốn bỏ học nhiều hơn so với tỷ lệ sinh viên không có ý định bỏ học còn đối với sinh viên có thời thời gian thì tỷ lệ sinh viên không có ý định bỏ học lại nhiều hơn tỷ lệ sinh viên muốn bỏ học. Cho thấy sinh viên có dự định bỏ học do thiếu thời gian.

- Rủi ro tương đối

epitab(pt5, method = 'riskratio', rev ="b")
## $tab
##     dropout
## time   1         p0   0        p1 riskratio    lower    upper      p.value
##    1 513 0.70954357 210 0.2904564  1.000000       NA       NA           NA
##    0  20 0.07220217 257 0.9277978  3.194275 2.837124 3.596386 4.142711e-81
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ rủi ro tương đối (risk ratio) là 3,1943, tức là sinh viên không đủ thời gian học thường có ý định bỏ học cao gấp 3,1943 lần so với sinh viên có thời gian dành cho việc học. Với độ tin cậy 95%, ta có thể tin rằng sau 1 năm, số sinh viên thiếu thời gian học có nguy cơ bỏ học cao gấp từ 2,8371 đến 3,5964 lần so với sinh viên có thời gian học.

- Tỷ lệ chênh lệch

epitab(pt5, method = 'oddsratio')
## $tab
##     dropout
## time   0        p0   1         p1 oddsratio    lower    upper      p.value
##    0 257 0.5503212  20 0.03752345   1.00000       NA       NA           NA
##    1 210 0.4496788 513 0.96247655  31.39071 19.37566 50.85644 4.142711e-81
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ chênh lệch (odd ratio) là 31,3907 , tức là sinh viên thiếu thời gian có khả năng bỏ học cao gấp 31,3907 lần sinh viên có thời gian học. Cho thấy tỷ lệ giữa sinh viên không đủ thời gian và có thời gian học thường có ý định bỏ học cao hơn 31,3907 lần so với tỷ lệ giữa sinh viên thiếu thời gian và có thời gian học thường không có ý định bỏ học.

5.2.6 Biến dropout và studyprogram

- Bảng tần số và tần suất

pt6 <- table(studyprogram,dropout)
addmargins(pt6)
##             dropout
## studyprogram    0    1  Sum
##          0    183  180  363
##          1    284  353  637
##          Sum  467  533 1000
ppt6 <- prop.table(pt6)
addmargins(ppt6)
##             dropout
## studyprogram     0     1   Sum
##          0   0.183 0.180 0.363
##          1   0.284 0.353 0.637
##          Sum 0.467 0.533 1.000

Từ bảng tần số và tần suất thể hiện số sinh viên có ý định bỏ học theo chương trình học.

  • Trong 467 sinh viên có ý định bỏ học, có 284 sinh viên thấy chương trình học phù hợp với mình, tương ứng 28,4% và có 183 sinh viên cảm thấy chương trình khó, chiếm 18,3%.

  • Trong 533 sinh viên không có ý định bỏ học, có 353 sinh viên thấy chương trình học phù hợp với mình, chiếm 40,1% và có 180 sinh viên cảm thấy chương trình học nặng, tương đương 18%.

- Đồ thị

data |> ggplot(aes(x = studyprogram, y = after_stat(count))) + geom_bar(fill = 'brown') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'black', vjust = - .5) +facet_grid(. ~ data$dropout) +
 # theme_classic() +
  labs(x = 'Mức độ chương trình học', y = 'Số người')

(Chú thích: 0 = Chương trình nặng, 1 = Chương trình phù hợp với sinh viên)

Dựa vào đồ thị thể hiện sinh viên có ý định bỏ học theo mức độ chương trình học, ta thấy có sự khác biệt đáng kể giữa sinh viên cảm thấy chương trình học khó và sinh viên cảm thấy chương trình học phù hợp với mình khi có ý định bỏ học và không có ý định bỏ học.

  • Sinh viên có ý định bỏ học cảm thấy chương trình học phù hợp với mình cao hơn sinh viên cảm thấy chương trình nặng gấp 1,55 lần.

  • Sinh viên không có ý định bỏ học do cảm thấy chương trình học phù hợp cũng cao gấp khoảng 1,96 lần so với số sinh viên cảm thấy chương trình học nặng.

Qua biểu đồ có thể thấy đối với sinh viên thấy chương trình học nặng thì tỷ lệ sinh viên có ý định bỏ học cao hơn tỷ lệ sinh viên không có ý định bỏ học còn đối với sinh viên thấy chương trình học phù hợp với mình thì có tỷ lệ sinh viên không có ý định bỏ học lại nhiều hơn tỷ lệ sinh viên muốn bỏ học. Cho thấy sinh viên có dự định bỏ học vì thấy chương trình học nặng.

- Rủi ro tương đối

epitab(pt6, method = 'riskratio', rev = "b")
## $tab
##             dropout
## studyprogram   1        p0   0        p1 riskratio     lower    upper
##            1 353 0.5541601 284 0.4458399  1.000000        NA       NA
##            0 180 0.4958678 183 0.5041322  1.130747 0.9891296 1.292641
##             dropout
## studyprogram    p.value
##            1         NA
##            0 0.08654323
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỷ lệ rủi ro tương đối (risk ratio) là 1,1307, tức là sinh viên thấy chương trình nặng thường có ý định bỏ học cao hơn so với sinh viên cảm thấy chương trình học phù hợp khoảng 13,07%. Với độ tin cậy 95%, ta có thể tin rằng sau 1 năm, số sinh viên thấy chương trình khó có nguy cơ bỏ học cao gấp từ 0,9891 đến 1,2926 lần so với sinh viên thấy chương trình học phù hợp với bản thân.

- Tỷ lệ chênh lệch

epitab(pt6, method = 'oddsratio')
## $tab
##             dropout
## studyprogram   0       p0   1        p1 oddsratio     lower    upper    p.value
##            0 183 0.391863 180 0.3377111  1.000000        NA       NA         NA
##            1 284 0.608137 353 0.6622889  1.263674 0.9759725 1.636185 0.08654323
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Từ kết quả trên, ta có thể thấy tỷ lệ chênh lệch (odd ratio) là 1,2637, tức là sinh viên cảm thấy chương trình nặng có khả năng muốn bỏ học cao hơn so với sinh viên cảm thấy chương trình phù hợp khoảng 26,37%. Ngoài ra, tỷ lệ giữa sinh viên thấy chương trình khó và chương trình phù hợp có khả năng bỏ học cao hơn gấp 1,2637 lần tỷ lệ sinh viên thấy chương trình khó và chương trình phù hợp với bản thân.

5.3 Thống kê suy diễn cho dữ liệu định tính

5.3.1 Kiểm định tính độc lập cho 2 biến định tính

- Biến dropout và gender

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến dropout và gender độc lập

\(H_0\): Biến dropout và gender có liên quan với nhau

chisq.test(pt1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt1
## X-squared = 0.87473, df = 1, p-value = 0.3496

Kết quả kiểm định cho thấy P_value > 0.05 nên cho thấy chưa đủ thông tin để kết luận rằng số lượng sinh viên có ý định bỏ học có liên quan đến giới tính của sinh viên.

- Biến dropout và job

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến dropout và job độc lập

\(H_0\): Biến dropout và job có liên quan với nhau

chisq.test(pt2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt2
## X-squared = 393.03, df = 1, p-value < 2.2e-16

Kết quả kiểm định cho thấy P_value < 0.05 nên ta có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy kết luận rằng sinh viên có ý định bỏ học có liên quan đến thực trạng làm thêm của sinh viên với mức ý nghĩa 5%.

- Biến dropout và finance

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến dropout và finance độc lập

\(H_0\): Biến dropout và finance có liên quan với nhau

chisq.test(pt3)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt3
## X-squared = 4.2136, df = 1, p-value = 0.0401

Kết quả kiểm định cho thấy P_value < 0.05 nên ta đủ cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy kết luận rằng số sinh viên có ý định bỏ học có liên quan đến tình hình tài chính của sinh viên với mức ý nghĩa 5%.

- Biến dropout và familysupport

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến dropout và familysupport độc lập

\(H_0\): Biến dropout và familysupport có liên quan với nhau

chisq.test(pt4)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt4
## X-squared = 0.81368, df = 1, p-value = 0.367

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ thông tin để kết luận rằng số sinh viên có ý định bỏ học có liên quan đến mức độ ủng hộ của gia đình đi học.

- Biến dropout và time

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến dropout và time độc lập

\(H_0\): Biến dropout và time có liên quan với nhau

chisq.test(pt5)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt5
## X-squared = 324.27, df = 1, p-value < 2.2e-16

Kết quả kiểm định cho thấy P_value < 0.05 nên ta có đủ cơ sở để bác bỏ giả thuyết \(H_0\), cho kết luận rằng số sinh viên có ý định bỏ học có liên quan đến thời gian sinh viên dành cho việc học với mức ý nghĩa 5%.

- Biến dropout và studyprogram

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến dropout và studyprogram độc lập

\(H_0\): Biến dropout và studyprogram có liên quan với nhau

chisq.test(pt6)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt6
## X-squared = 2.9268, df = 1, p-value = 0.08712

Kết quả kiểm định cho thấy P_value > 0.05 mà P_value < 0.1 nên ta bác bỏ giả thuyết \(H_0\), cho kết luận rằng số sinh viên có ý định bỏ học có liên quan đến chương trình học của sinh viên với mức ý nghĩa 10%.

5.3.2 Khoảng ước lượng tỷ lệ

Sau khi kiểm định tính độc lập giữa biến độc lập và biến phụ thuộc, ta thấy yếu tố giới tính và yếu tố mức ủng hộ của gia đình không phụ thuộc vào ý định bỏ học của sinh viên nên ta không ước lượng tỷ lệ giữa hai yếu tố theo với ý định bỏ học của sinh viên.

- Ước lượng tỷ lệ sinh viên có ý định bỏ học có phải là 46,7% hay không?

Đặt giả thuyết: \(H_0\): p = 0,467

ydbh <- data[which(data$dropout == 0),]
kydbh <- data[which(data$dropout == 1),]
prop.test(length(ydbh$dropout),length(data$dropout), p = 0.467)
## 
##  1-sample proportions test without continuity correction
## 
## data:  length(ydbh$dropout) out of length(data$dropout), null probability 0.467
## X-squared = 2.4249e-29, df = 1, p-value = 1
## alternative hypothesis: true p is not equal to 0.467
## 95 percent confidence interval:
##  0.4362631 0.4979895
## sample estimates:
##     p 
## 0.467

Kết quả kiểm định với P_value > 5%, cho thấy chưa đủ cơ sở để bác bỏ giả thuyết \(H_0\). Do đó, tỷ lệ sinh viên có ý định bỏ học là 46,7% với mức ý nghĩa 5%.

Khoảng ước lượng tỷ lệ sinh viên có ý định bỏ học với độ tin cậy 95% là (0.4362631; 0.4979895)

- Ước lượng sự chênh lệch tỷ sinh viên có ý định bỏ học giữa sinh viên có việc làm thêm và không có việc làm thêm

Đặt giả thuyết: \(H_0\): Tỷ lệ sinh viên có việc làm thường có ý định bỏ học thấp hơn hoặc bằng tỷ lệ sinh viên không việc làm.

bhcv <- length(which(data$dropout == 0 & data$job == 0))
bhkcv <- length(which(data$dropout == 0 & data$job == 1))
cv1 <- length(which(data$job == 0))
kcv <- length(which(data$job == 1))
prop.test(c(bhcv,bhkcv),c(cv1,kcv),alternative =  "greater")
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(bhcv, bhkcv) out of c(cv1, kcv)
## X-squared = 393.03, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.585732 1.000000
## sample estimates:
##    prop 1    prop 2 
## 0.7962185 0.1679389

Kết quả kiểm định với P_value < 5%, cho thấy có đủ cơ sở để bác bỏ giả thuyết \(H_0\) với uớc lượng tỷ lệ sinh viên có việc làm muốn bỏ học là 0,796, trong khi đó tỷ lệ ước tính sinh viên không có việc làm có ý định bỏ học là 0,1679. Kết luận rằng tỷ lệ sinh viên có việc làm thường có ý định bỏ học cao hơn so với tỷ lệ sinh viên không có việc làm với mức ý nghĩa 5%.

Khoảng tin cậy 95% cho thấy sự khác biệt giữa tỷ lệ sinh viên có việc làm và không có việc làm có ý định bỏ học là (0,5857; 1,000)

- Ước lượng sự chênh lệch tỷ sinh viên có ý định bỏ học giữa sinh viên có khó khăn tài chính và sinh viên không gặp khó khăn về tài chính

Đặt giả thuyết: \(H_0\): Tỷ lệ sinh viên khó khăn tài chính thường có ý định bỏ học thấp hơn hoặc bằng tỷ lệ sinh viên không gặp khó khăn về tài chính.

bhtc <- length(which(data$dropout == 0 & data$finance == 0))
bhktc <- length(which(data$dropout == 0 & data$finance == 1))
tc1 <- length(which(data$finance == 0))
ktc <- length(which(data$finance == 1))
prop.test(c(bhtc,bhktc),c(tc1,ktc),alternative =  "greater")
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(bhtc, bhktc) out of c(tc1, ktc)
## X-squared = 4.2136, df = 1, p-value = 0.02005
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.01453218 1.00000000
## sample estimates:
##    prop 1    prop 2 
## 0.5223881 0.4467213

Kết quả kiểm định với P_value < 5%, cho thấy có đủ cơ sở để bác bỏ giả thuyết \(H_0\) với uớc lượng tỷ lệ sinh viên khó khăn tài chính muốn bỏ học là 0,5223, trong khi đó tỷ lệ ước tính sinh viên không có khó khăn về tài chính có ý định bỏ học là 0,4467. Kết luận rằng tỷ lệ sinh viên gặp khó khăn tài chính thường có ý định bỏ học cao hơn so với tỷ lệ sinh viên không có khó khăn tài chính với mức ý nghĩa 5%.

Khoảng tin cậy 95% cho thấy sự khác biệt giữa tỷ lệ sinh viên có khó khăn tài chính và không có khó khăn tài chính có ý định bỏ học là (0,0145; 1,0000)

- Ước lượng sự chênh lệch tỷ sinh viên có ý định bỏ học giữa sinh viên thiếu thời gian học và có thời gian học

Đặt giả thuyết: \(H_0\): Tỷ lệ sinh viên thiếu thời gian học thường có ý định bỏ học thấp hơn hoặc bằng tỷ lệ sinh viên có thời gian học.

bhttg <- length(which(data$dropout == 0 & data$time == 0))
bhtg <- length(which(data$dropout == 0 & data$time == 1))
ttg <- length(which(data$time == 0))
tg1 <- length(which(data$time == 1))
prop.test(c(bhttg,bhtg),c(ttg,tg1),alternative =  "greater")
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(bhttg, bhtg) out of c(ttg, tg1)
## X-squared = 324.27, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.5970887 1.0000000
## sample estimates:
##    prop 1    prop 2 
## 0.9277978 0.2904564

Kết quả kiểm định với P_value < 5%, cho thấy có đủ cơ sở để bác bỏ giả thuyết \(H_0\) với uớc lượng tỷ lệ sinh viên thiếu thời gian học muốn bỏ học là 0,9278, trong khi đó tỷ lệ ước tính sinh viên có thời gian học có ý định bỏ học là 0,2905. Kết luận rằng tỷ lệ sinh viên thiếu thời gian học thường có ý định bỏ học cao hơn so với tỷ lệ sinh viên có thời gian học với mức ý nghĩa 5%.

Khoảng tin cậy 95% cho thấy sự khác biệt giữa tỷ lệ sinh viên thiếu thời gian học và có thời gian học có ý định bỏ học là (0,5971; 1,000)

- Ước lượng sự chênh lệch tỷ sinh viên có ý định bỏ học giữa sinh viên thấy chương trình học nặng và sinh viên thấy chương trình học phù hợp với bản thân

Đặt giả thuyết: \(H_0\): Tỷ lệ sinh viên cảm thấy chương trình học nặng thường có ý định bỏ học thấp hơn hoặc bằng tỷ lệ sinh viên cảm thấy chương trình hợp phù hợp với bản thân.

bh1 <- length(which(data$dropout == 0 & data$studyprogram == 0))
bh2 <- length(which(data$dropout == 0 & data$studyprogram == 1))
a1 <- length(which(data$studyprogram == 0))
b1 <- length(which(data$studyprogram == 1))
prop.test(c(bh1,bh2),c(a1,b1),alternative =  "greater")
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(bh1, bh2) out of c(a1, b1)
## X-squared = 2.9268, df = 1, p-value = 0.04356
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.002161821 1.000000000
## sample estimates:
##    prop 1    prop 2 
## 0.5041322 0.4458399

Kết quả kiểm định với P_value < 5%, cho thấy có đủ cơ sở để bác bỏ giả thuyết \(H_0\) với uớc lượng tỷ lệ sinh viên thấy chương trình học nặng muốn bỏ học là 0,5041, trong khi đó tỷ lệ ước tính sinh viên thấy chương trình học phù hợp với bản thân có ý định bỏ học là 0,4458. Kết luận rằng tỷ lệ sinh viên thấy chương trình học nặng thường có ý định bỏ học cao hơn so với tỷ lệ sinh viên cảm thấy chương trình học phù hợp với bản thân với mức ý nghĩa 5%.

Khoảng tin cậy 95% cho thấy sự khác biệt giữa tỷ lệ sinh viên thấy chương trình học nặng và chương trình phù hợp với bản thân có ý định bỏ học là (0,0022; 1,000)

5.4 Mô hình đề xuất

Sau khi thống kê mô tả và thống kê suy diễn cho các biến định tính cho bộ dữ liệu thì kết quả cho thấy yếu tố giới tính và mức ủng hộ của gia đình đi học không có ảnh hưởng đáng kể đến ý định bỏ học sinh viên nên tác giả loại bỏ 2 yếu tố. Do đó, tác giả xin tổng kết nhóm yếu tố có tác động đến ý định bỏ học của sinh viên bao gồm: thời gian sinh viên dành cho việc học, tình trạng tài chính của sinh viên, thực trạng làm thêm của sinh viên, chương trình học của sinh viên. Từ đây, tác giả đề xuất mô hình các yếu tố tác động đến ý định bỏ học của sinh viên như sau:

\[dropout = β_0+β_1job+β_2finance+\beta_3time+\beta_4studyprogram\]

Trong đó:

- dropout là ý định bỏ học của sinh viên, 0 = Có ý định bỏ học; 1 = Không có ý định không bỏ học. Trong đó, dropout đóng vai trò là biến phụ thuộc.

  • Biến độc lập là những yếu tố ảnh hưởng đến quyết định bỏ học của sinh viên:

- job là thực trạng làm thêm của sinh viên, 0 = Có làm thêm; 1 = Không làm thêm.

- finance là tình trạng tài chính của sinh viên dành cho việc học, 0 = Có khó khăn về tài chính; 1 = Không gặp khó khăn tài chính.

- time là thời gian sinh viên làm việc, 0 = Không có thời gian học tập; 1 = Có thời gian cho học tập.

- studyprogram là mức độ chương trình học của sinh viên, 0 = Chương trình nặng, 1 = Chương trình học phù hợp.

- \(\beta_0\) là hệ số chặn của mô hình.

- \(\beta_1, \beta_2,\dots \beta_4\) là những hệ số của các biến độc lập.

5.5 Kết quả mô hình hồi quy logistic

5.5.1 Mô hình logistic với hàm liên kết logit

Mô hình hồi quy logistic với link function = “logit” có dạng tổng quát như sau:

\[logit(π)=log(\frac{π}{1−π})=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

mh1 <- glm(data = data, formula = dropout ~ job + finance + time + studyprogram, family = binomial(link = "logit"))
summary(mh1)
## 
## Call:
## glm(formula = dropout ~ job + finance + time + studyprogram, 
##     family = binomial(link = "logit"), data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.1560  -0.3693   0.4539   0.5946   2.6023  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -3.9296     0.3210 -12.241  < 2e-16 ***
## job            2.0969     0.1826  11.484  < 2e-16 ***
## finance        0.7002     0.1902   3.681 0.000233 ***
## time           2.7757     0.2745  10.112  < 2e-16 ***
## studyprogram   0.5781     0.1833   3.154 0.001610 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1381.94  on 999  degrees of freedom
## Residual deviance:  815.56  on 995  degrees of freedom
## AIC: 825.56
## 
## Number of Fisher Scoring iterations: 5

Kết quả hồi quy cho thấy mô hình 1 như sau:

MH1: \[logit(π) = -3.9296 + 2.0969job + 0.7002finance + 2.7757time + 0.5781studyprogram\]

với π = P(bh = “0” hoặc “1”)

- Kiểm định sự phù hợp của mô hình 1

Cặp giả thuyết - đối thuyết:

\(H_0\): Mô hình không phù hợp với dữ liệu điều tra

\(H_1\): Mô hình phù hợp với dữ liệu điều tra

# Kiểm định sự phù hợp của mô hình 
lr_test1 <- anova(mh1, test = "Chisq")
p_value1 <- lr_test1$Pr[2] 
p_value1
## [1] 1.050674e-94

Kết quả kiểm định cho thấy P_value < 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy mô hình 1 là mô hình logistic với hàm liên kết logit phù hợp với dữ liệu điều tra với mức ý nghĩa 5%.

5.5.2 Mô hình logistic với hàm liên kết probit

Mô hình hồi quy probit với link function = “probit” có dạng tổng quát như sau:

\[probit(π)=\Phi (1-π))=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

mh2 <- glm(data = data, formula = dropout ~ job + finance + time + studyprogram, family = binomial(link = "probit"))
summary(mh2)
## 
## Call:
## glm(formula = dropout ~ job + finance + time + studyprogram, 
##     family = binomial(link = "probit"), data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.1684  -0.3461   0.4475   0.5956   2.7277  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -2.2981     0.1721 -13.349  < 2e-16 ***
## job            1.2621     0.1068  11.820  < 2e-16 ***
## finance        0.4025     0.1102   3.653 0.000259 ***
## time           1.6176     0.1485  10.891  < 2e-16 ***
## studyprogram   0.3248     0.1044   3.112 0.001860 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1381.94  on 999  degrees of freedom
## Residual deviance:  810.47  on 995  degrees of freedom
## AIC: 820.47
## 
## Number of Fisher Scoring iterations: 6

Vậy nên mô hình probit được xác định như sau:

\[probit(π)=\Phi (1-π))= - 2.2981 + 1.2621job + 0.4025finance + 1.6176time + 0.3248studyprogram\]

với π = P(bh = “0” hoặc “1”)

- Kiểm định sự phù hợp của mô hình 2

Cặp giả thuyết - đối thuyết:

\(H_0\): Mô hình không phù hợp với dữ liệu điều tra

\(H_1\): Mô hình phù hợp với dữ liệu điều tra

# Kiểm định sự phù hợp của mô hình 
lr_test2 <- anova(mh2, test = "Chisq")
p_value2 <- lr_test2$Pr[2] 
p_value2
## [1] 1.050674e-94

Kết quả kiểm định cho thấy P_value < 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy mô hình 2 là mô hình logistic với hàm liên kết prohit phù hợp với dữ liệu điều tra với mức ý nghĩa 5%.

5.5.3 Mô hình logistic với hàm liên kết clogclog

Mô hình hồi quy cloglog với link function = “cloglog” có dạng tổng quát như sau:

\[cloglog(π)=log(-log(1-π))=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

mh3 <- glm(data = data, formula = dropout ~ job + finance + time + studyprogram, family = binomial(link = "cloglog"))
summary(mh3)
## 
## Call:
## glm(formula = dropout ~ job + finance + time + studyprogram, 
##     family = binomial(link = "cloglog"), data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.2543  -0.3925   0.4052   0.6080   2.4880  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -3.4284     0.2514 -13.638  < 2e-16 ***
## job            1.2796     0.1241  10.311  < 2e-16 ***
## finance        0.5082     0.1142   4.449 8.62e-06 ***
## time           2.2168     0.2399   9.242  < 2e-16 ***
## studyprogram   0.3563     0.1046   3.405  0.00066 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1381.94  on 999  degrees of freedom
## Residual deviance:  818.84  on 995  degrees of freedom
## AIC: 828.84
## 
## Number of Fisher Scoring iterations: 6

Vậy nên mô hình cloglog được xác định như sau:

\[cloglog(π)=log(-log(1-π))= - 3.4284 + 1.2796job + 0.5082finance + 2.2168time + 0.3563studyprogram\]

với π = P(bh = “0” hoặc “1”)

- Kiểm định sự phù hợp của mô hình 3

Cặp giả thuyết - đối thuyết:

\(H_0\): Mô hình không phù hợp với dữ liệu điều tra

\(H_1\): Mô hình phù hợp với dữ liệu điều tra

# Kiểm định sự phù hợp của mô hình 
lr_test3 <- anova(mh3, test = "Chisq")
p_value3 <- lr_test3$Pr[2] 
p_value3
## [1] 1.050674e-94

Kết quả kiểm định cho thấy P_value < 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy mô hình 3 là mô hình logistic với hàm liên kết cloglog phù hợp với dữ liệu điều tra với mức ý nghĩa 5%

5.6 Kiểm định tính phù hợp của các mô hình nghiên cứu

Sau kiểm định mô hình phù hợp với dữ liệu điều tra thì tác giả thấy cả 3 mô hình logit, probit và cloglog đều phù hợp nên tiếp theo tác giả sử dụng các tiêu chí để đánh giá tính phù hợp của MH1, MH2, MH3:

# Tiêu chí AIC - Akaike Information Criterion
aiclo <- AIC(mh1)
aicpro <- AIC(mh2)
aicclo <- AIC(mh3)
AIC <- cbind(aiclo,aicpro,aicclo)
AIC
##         aiclo   aicpro   aicclo
## [1,] 825.5558 820.4661 828.8352
# Tiêu chí Deviance
delo <- deviance(mh1)
depro <- deviance(mh2)
declo <- deviance(mh3)
deviance <- cbind(delo,depro,declo)
deviance
##          delo    depro    declo
## [1,] 815.5558 810.4661 818.8352
# Tiêu chí Brier Score
bslo <- BrierScore(mh1)
bspro <- BrierScore(mh2)
bsclo <- BrierScore(mh3)
BrierScore <- cbind(bslo,bspro,bsclo)
BrierScore
##           bslo     bspro     bsclo
## [1,] 0.1313027 0.1306275 0.1317949

Thông qua kết quả các tiêu chí AIC, deviance và Brier Score cho thấy giá trị của AIC, deviance và Brier Score của mô hình 2 là nhỏ nhất, nghĩa là mô hình logistic với hàm liên kết prohit là mô hình tốt nhất trong 3 mô hình logistic với hàm liên kết: logit, probit, clogclog.

5.7 Mô hình hồi quy sau khi lựa chọn

summary(mh2)
## 
## Call:
## glm(formula = dropout ~ job + finance + time + studyprogram, 
##     family = binomial(link = "probit"), data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.1684  -0.3461   0.4475   0.5956   2.7277  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   -2.2981     0.1721 -13.349  < 2e-16 ***
## job            1.2621     0.1068  11.820  < 2e-16 ***
## finance        0.4025     0.1102   3.653 0.000259 ***
## time           1.6176     0.1485  10.891  < 2e-16 ***
## studyprogram   0.3248     0.1044   3.112 0.001860 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1381.94  on 999  degrees of freedom
## Residual deviance:  810.47  on 995  degrees of freedom
## AIC: 820.47
## 
## Number of Fisher Scoring iterations: 6

Kết quả hồi quy cho thấy 4 biến có ý nghĩa thống kê ở mức ý nghĩa 5% với phương trình hồi quy như sau:

\[dropout=\Phi (1-π))= - 2.2981 + 1.2621job + 0.4025finance + 1.6176time + 0.3248studyprogram\]

với π = P(bh = “0” hoặc “1”)

Kết quả mô hình hồi quy logistic với hàm liên kết prohit cho thấy mô hình có 4 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% là thực trạng làm thêm của sinh viên (job), thời gian sinh viên dành cho việc học (time), tình hình tài chính của sinh viên (finance), chương trình học của sinh viên (studyprogram) cho thấy độ lớn của hệ số beta lần lượt theo thứ tự như sau:

  • Thời gian sinh viên dành cho việc học có ảnh hưởng đến ý định sinh viên muốn bỏ học với hệ số \(\beta\) = 1,6176, cho thấy \(\beta > 0\) nghĩa là nguy cơ sinh viên có ý định bỏ học sẽ giảm khi sinh viên có thời gian học. Có thể đây là dấu hiệu nhận thấy khi sinh viên ít vắng mặt trong lớp là điều kiện đảm bảo sinh viên không bỏ học.

  • Thực trạng làm thêm của sinh viên có ảnh hưởng đến ý định sinh viên muốn bỏ học với hệ số \(\beta\) = 1,2621. Khi \(\beta > 0\) cho thấy nguy cơ sinh viên có ý định bỏ học sẽ giảm khi sinh viên không có việc làm thêm. Có thể đây là dấu hiệu nhận thấy việc không đi làm thêm giúp sinh viên tập trung vào việc học hơn và tránh bỏ học.

  • Tình hình tài chính của sinh viên có ảnh hưởng đến ý định sinh viên muốn bỏ học với hệ số \(\beta\) = 0,4025. Khi \(\beta > 0\) cho thấy nguy cơ sinh viên có ý định bỏ học sẽ giảm khi sinh viên không có tài chính khó khăn. Cho thấy việc sinh viên có khó khăn về tài chính là dấu hiệu sinh viên có khả năng bỏ học.

  • Chương trình học của sinh viên có ảnh hưởng đến ý định sinh viên muốn bỏ học với hệ số \(\beta\) = 0,3248, cho thấy \(\beta > 0\) nghĩa là nguy cơ sinh viên có ý định bỏ học sẽ giảm khi sinh viên cảm thấy chương trình học phù hợp so với bản thân. Có thể thấy rằng sinh viên có khả năng bỏ học nếu thấy chương trình học quá nặng với bản thân do sinh viên sẽ không thể đạt được kết quả học tập cao.

5.8 Dự báo mô hình

# Dự đoán ý định bỏ học của sinh viên
dudoan <- predict(mh2, newdata = data, type = "response")
dudoan <- ifelse(dudoan >= 0.5, 1,0) #Chuyển thành giá trị nhị phân
d <- table(data$dropout, dudoan)
# Tính độ chính xác của dự đoán
accuracy <- sum(diag(d)) / sum(d)
d
##    dudoan
##       0   1
##   0 356 111
##   1  87 446
print(paste("Accuracy:", accuracy))
## [1] "Accuracy: 0.802"

Bộ dữ liệu cho thấy có 467 trường hợp sinh viên có ý định bỏ học thì dự báo đúng có 356 trường hợp (dự báo đúng 76,23%) và dự đoán sai 111 trường hợp. Ngoài ra, trong 533 sinh viên không có ý định bỏ học thì có 446 trường hợp dự đoán đúng (dự báo đúng 83,68%) và 87 trường hợp dự đoán sai. Kết quả cho thấy tỷ lệ dự đoán đúng của toàn mô hình là 80,2%.

6 CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ

6.1 Kết luận

Nghiên cứu này được thực hiện bằng phương pháp phân tích định tính nhằm phân tích, đánh giá và ước lượng sự tác động của các yếu tố đến ý định bỏ học của sinh viên bằng mô hình hồi quy logistic thông qua phần mềm R. Tác giả đã đưa ra kết luận như sau:

Bài nghiên cứu của tác giả chủ yếu phân tích, đánh giá và ước lượng sự tác động của 4 yếu tố thực trạng làm thêm của sinh viên (job), tình hình tài chính của sinh viên (finance), thời gian sinh viên dành cho việc học (time), chương trình học của sinh viên (studyprogram). Trong đó, có các yếu tố thời gian sinh viên dành cho việc học, thực trạng làm thêm của sinh viên, tình hình tài chính của sinh viên, chương trình học của sinh viên có tác động đến việc sinh viên có ý định bỏ học.

6.2 Kiến nghị

Kết quả nghiên cứu mô hình hồi quy logistic cho thấy để hạn chế tình trạng bỏ học của sinh viên, tác giả đề xuất những kiến nghị dựa trên sự tác động của 4 yếu tố ở mức độ khác nhau sau:

Thời gian: Đây là yếu tố tác động mạnh nhất, có thể nói thời gian là yếu tố tiên quyết cho sinh viên có tiếp tục học hay không. Vì nếu học quá nhiều sẽ khiến sinh viên cảm thấy stress dẫn đến không muốn học nữa còn nếu học quá ít thì sinh viên khó tiếp thu được kiến thức mà nhà trường giảng dạy. Để cho sinh viên thuận lợi cho việc học tập nhà trường cần thiết kế thời khóa biểu thật linh động cũng như cố định 1 môn tối đa 2 buổi/1 tuần như các lớp học vào ngày thứ 7, chủ nhật hoặc các buổi tối trong tuần như tối 2,4,6 hoặc tối 3,5,7. Với thời khóa biểu nhiều lựa chọn sinh viên có thể lựa chọn thời gian học tập phù hợp nhất để sinh viên có thể tập trung học.

Thực trạng làm thêm của sinh viên: Đây là yếu tố tác động mạnh thứ 2, là yếu tố thuộc về cá nhân mỗi sinh viên, cơ sở đào tạo rất khó tác động vào. Điều quan trọng là cơ sở đào tạo xây dựng quy chế sao cho thuận lợi nhất cho sinh viên sắp xếp thuận lợi lịch làm việc và lịch học.

Tình hình tài chính của sinh viên: Đây là yếu tố tác động thứ 3 trong phân tích mô hình hồi quy. Vì vậy, Nhà trường cần tập trung đưa ra chính sách tốt nhất để hạn chế tình hình bỏ học của sinh viên bằng cách hỗ trợ việc làm để giảm áp lực cuộc sống của sinh viên, đưa chính sách hỗ trợ tài chính cho sinh viên có hoàn cảnh khó khăn, từ đó giúp sinh viên có thể cải thiện được cuộc sống.

Chương trình học của sinh viên: Đây là yếu tố yếu nhất nhưng cũng ảnh hưởng đến ý định bỏ học của sinh viên. Chương trình đào tạo nên được xây dựng theo hướng tinh gọn và thực tiễn hơn. Không nên chương trình quá dài, tăng cường hướng dẫn tự học, tự nghiên cứu, điều này giúp cho sinh viên tận dụng được kinh nghiệm làm việc và linh động trong việc đáp ứng yêu cầu kiểm tra đánh giá của nhà trường, thay vì phải làm bài kiểm tra tập trung thì sinh viên có thể làm bài tiểu luận,dự án hoặc bài tập lớn để nâng cao kĩ năng giúp sinh viên được thực hành nhiều hơn.

6.3 Hạn chế

Nghiên cứu này cung cấp cái nhìn tương đối khách quan về mức độ ảnh hưởng của các yếu tố đến ý định bỏ học của sinh viên Ấn Độ. Trên thực tế, ý định bỏ học của sinh viên không chỉ chịu tác động bởi 4 yếu tố mà tác giả đã đề cập trong bài mà còn chịu tác động bởi nhiều yếu tố khác như: kết quả học tập, động lực học tập, nợ môn học, số môn đã học…Tuy nhiên, nghiên cứu này chỉ đưa ra 4 yêu tố có tác động đến ý định bỏ học của sinh viên nên có thể khác kết quả so với các nghiên cứu khác.

7 TÀI LIỆU THAM KHẢO

[1] T.K.Thanh & T.M.Tường & V.A.L.Duy (2022). Giáo trình Phân tích dữ liệu định tính. Trường Đại học Tài chính - Marketing.

[2] Bean,J.P. (1980). Dropouts and turnover: The synthesis and test of a causal model of student attrition.Research in the higher education,12(2), 155-187.

LS0tDQp0aXRsZTogIlBIw4JOIFTDjUNIIEPDgUMgWeG6vlUgVOG7kCDhuqJOSCBIxq/hu55ORyDEkOG6vk4gw50gxJDhu4pOSCBC4buOIEjhu4xDIEPhu6ZBIFNJTkggVknDik4iDQphdXRob3I6ICJWxakgVHLDom0gQW5oIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IGZhbHNlDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQpkYXRlOiAiMjAyMy0wOC0wMiINCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KbGlicmFyeShlcGl0b29scykNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShtZHNjb3JlKQ0KbGlicmFyeShsbXRlc3QpDQpgYGAgDQoNCiMgTOG7nEkgTeG7niDEkOG6plUNCg0KxJDhuqd1IHRpw6puLCB0w7RpIHhpbiBn4butaSBs4budaSBj4bqjbSDGoW4gY2jDom4gdGjDoG5oIMSR4bq/biBUcsaw4budbmcgxJDhuqFpIGjhu41jIFTDoGkgQ2jDrW5oIC0gTWFya2V0aW5nIMSRw6MgxJHGsGEgbcO0biBo4buNYyBQaMOibiB0w61jaCBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oIHbDoG8gY2jGsMahbmcgdHLDrG5oIGdp4bqjbmcgZOG6oXkuIMSQ4bq3YyBiaeG7h3QsIHTDtGkgbXXhu5FuIGfhu61pIGzhu51pIGPhuqNtIMahbiBzw6J1IHPhuq9jIMSR4bq/biBnaeG6o25nIHZpw6puIGLhu5kgbcO0biDigJMgVGguUyBUcuG6p24gTeG6oW5oIFTGsOG7nW5nIMSRw6MgY2jhu4kgZOG6oXksIHRydXnhu4FuIMSR4bqhdCBuaOG7r25nIGtp4bq/biB0aOG7qWMgcXXDvSBiw6F1IHRyb25nIHN14buRdCB0aOG7nWkgZ2lhbiBo4buNYyB04bqtcCB24burYSBxdWEgdsOgIHTDtGkgY8WpbmcgY+G6o20gxqFuIHRyxrDhu51uZyB2w6wgxJHDoyB04bqhbyBjxqEgaOG7mWkgZ2nDunAgcGjDoXQgdHJp4buDbiB0xrDGoW5nIGxhaSBzYXUgbsOgeS4gTmjhu50gY8OzIHRo4budaSBnaWFuIHRoYW0gZ2lhIGzhu5twIGjhu41jIFBow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmgsIHTDtGkgxJHDoyBjw7MgdGjDqm0gY2hvIGLhuqNuIHRow6JuIG5oaeG7gXUga2nhur9uIHRo4bupYyBt4bubaSwgdGluaCB0aOG6p24gaOG7jWMgdOG6rXAgaGnhu4d1IHF14bqjLCBuZ2hpw6ptIHTDumMuIMSQw6J5IGNo4bqvYyBjaOG6r24gc+G6vSBsw6Agbmjhu69uZyBraeG6v24gdGjhu6ljIHF1w70gYsOhdSwgbMOgIGjDoG5oIHRyYW5nIMSR4buDIHTDtGkgY8OzIHRo4buDIHbhu69uZyBixrDhu5tjIHNhdSBuw6B5Lg0KDQpC4buZIG3DtG4gUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgxJHhu4tuaCB0w61uaCBsw6AgbcO0biBo4buNYyB0aMO6IHbhu4ssIHbDtCBjw7luZyBi4buVIMOtY2ggdsOgIGPDsyB0w61uaCB0aOG7sWMgdOG6vyBjYW8uIMSQ4bqjbSBi4bqjbyBjdW5nIGPhuqVwIMSR4bunIGtp4bq/biB0aOG7qWMsIGfhuq9uIGxp4buBbiB24bubaSBuaHUgY+G6p3UgdGjhu7FjIHRp4buFbiBj4bunYSBzaW5oIHZpw6puLCBjw7JuIGdpw7pwIGNobyB0xrDGoW5nIGxhaSBzYXUuIFR1eSBuaGnDqm4sIGRvIHbhu5FuIGtp4bq/biB0aOG7qWMgY+G7p2EgdMO0aSBjw7JuIG5oaeG7gXUgaOG6oW4gY2jhur8gdsOgIGto4bqjIG7Eg25nIHRp4bq/cCB0aHUgdGjhu7FjIHThur8gY8OybiBuaGnhu4F1IGLhu6Egbmfhu6EuIFTDtGkgxJHDoyBj4buRIGfhuq9uZyBo4bq/dCBz4bupYyBuaMawbmcgYsOgaSB0aeG7g3UgbHXhuq1uIGPFqW5nIGtow7RuZyB0aOG7gyB0csOhbmgga2jhu49pIG5o4buvbmcgdGhp4bq/dSBzw7N0IHbDoCBuaGnhu4F1IGNo4buXIGPDsm4gY2jGsGEgY2jDrW5oIHjDoWMsIGvDrW5oIG1vbmcgdGjhuqd5IHhlbSB4w6l0IHbDoCBnw7NwIMO9IMSR4buDIGLDoGkgdGnhu4N1IGx14bqtbiBj4bunYSB0w7RpIMSRxrDhu6NjIGhvw6BuIHRoaeG7h24gaMahbi4gDQoNClTDtGkgeGluIGPhuqNtIMahbiENCg0KIyBDSMavxqBORyAxOiBHSeG7mkkgVEhJ4buGVSBC4buYIEThu64gTEnhu4ZVDQoNCiAgQuG7mSBk4buvIGxp4buHdSDEkcaw4bujYyB04bqhbyB04burIG3hu5l0IHThu5UgY2jhu6ljIGdpw6FvIGThu6VjIMSR4bqhaSBo4buNYyBsacOqbiBxdWFuIMSR4bq/biBzaW5oIHZpw6puIHRoZW8gaOG7jWMgxJHhuqFpIGjhu41jIOG7nyBjw6FjIG5nw6BuaCBraMOhYyBuaGF1IG5oxrAgxJFp4buBdSBkxrDhu6FuZywgYsOhbyBjaMOtLCBjw7RuZyBuZ2jhu4cgdGjDtG5nIHRpbiwgdMOgaSBjaMOtbmguLi4gbmjhurFtIHPhu60gZOG7pW5nIMSR4buDIHjDonkgZOG7sW5nIGThu7EgxJFvw6FuIHTDrG5oIHRy4bqhbmcgc2luaCB2acOqbiBi4buPIGjhu41jLiBUw6FjIGdp4bqjIHPhu60gZOG7pW5nIGLhu5kgZOG7ryBsaeG7h3UgxJHGsOG7o2MgbOG6pXkgdOG6oWkgdHJhbmcgemVub2RvIGRvIFZhbGVudGltIFJlYWxpbmhvOyBKb3JnZSBNYWNoYWRvOyBMdcOtcyBCYXB0aXN0YSB2w6AgTcOzbmljYSBWLiBNYXJ0aW5zIGNoaWEgc+G6uyAoMjAyMSkuIEThu68gbGnhu4d1IMSRxrDhu6NjIHRodSBuaOG6rXAgdOG7qyBraOG6o28gc8OhdCAxMDAwIHNpbmggdmnDqm4gdOG6oWkg4bqkbiDEkOG7mSB0cm9uZyBuxINtIDIwMjEuDQoNCmBgYHtyfQ0KbGlicmFyeSh4bHN4KQ0Kc2V0d2QoIkM6L1VzZXJzL0hQL0RvY3VtZW50cy9QVERMxJBULyIpDQpkYXRhIDwtIHJlYWQueGxzeCgiREwueGxzeCIsIHNoZWV0SW5kZXggPSAxLCBoZWFkZXIgPSBUKQ0KZ2VuZGVyID0gZGF0YSRnZW5kZXINCmpvYiA9IGRhdGEkam9iDQpmaW5hbmNlID0gZGF0YSRmaW5hbmNlDQpmYW1pbHlzdXBwb3J0ID0gZGF0YSRmYW1pbHlzdXBwb3J0DQp0aW1lID0gZGF0YSR0aW1lDQpzdHVkeXByb2dyYW0gPSBkYXRhJHN0dWR5cHJvZ3JhbQ0KZHJvcG91dCA9IGRhdGEkZHJvcG91dA0KZGF0YQ0KYGBgDQoNCmBgYHtyfQ0Kc3RyKGRhdGEpDQpgYGANCg0KQuG7mSBk4buvIGxp4buHdSBn4buTbSAxMDAwIHF1YW4gc8OhdCB2w6AgNyBiaeG6v24gxJHhu4tuaCB0w61uaCB24bubaSBsaW5rIGZpbGUgZOG7ryBsaeG7h3U6IGh0dHBzOi8vYml0Lmx5LzQzTHIzRGYgY3VuZyBj4bqlcCBuaOG7r25nIHRow7RuZyB0aW4gc2F1Og0KDQoqKi0gZ2VuZGVyKiogbMOgIGdp4bubaSB0w61uaCBj4bunYSBzaW5oIHZpw6puLCBNID0gTmFtLCBGID0gTuG7rw0KDQoqKi0gam9iKiogbMOgIHRo4buxYyB0cuG6oW5nIGzDoG0gdGjDqm0gY+G7p2Egc2luaCB2acOqbiwgMCA9IEPDsyBsw6BtIHRow6ptOyAxID0gS2jDtG5nIGzDoG0gdGjDqm0uDQoNCioqLSBmaW5hbmNlKiogbMOgIHTDoGkgY2jDrW5oIGPhu6dhIHNpbmggdmnDqm4sIDAgPSBDw7Mga2jDsyBraMSDbiB24buBIHTDoGkgY2jDrW5oOyAxID0gS2jDtG5nIGfhurdwIGtow7Mga2jEg24gdMOgaSBjaMOtbmguDQoNCioqLSB0aW1lKiogbMOgIHRo4budaSBnaWFuIHNpbmggdmnDqm4gZMOgbmggY2hvIHZp4buHYyBo4buNYywgMCA9IEtow7RuZyBjw7MgdGjhu51pIGdpYW4gaOG7jWMgdOG6rXA7IDEgPSBDw7MgdGjhu51pIGdpYW4gY2hvIGjhu41jIHThuq1wLg0KDQoqKi0gZmFtaWx5c3VwcG9ydCoqIGzDoCBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCBjaG8gxJFpIGjhu41jLCAwID0gS2jDtG5nIMSRxrDhu6NjIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oLCAxID0gQ8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oLg0KDQoqKi0gc3R1ZHlwcm9ncmFtKiogbMOgIG3hu6ljIMSR4buZIGNoxrDGoW5nIHRyw6xuaCBo4buNYywgMCA9IENoxrDGoW5nIHRyw6xuaCBu4bq3bmcsIDEgPSBDaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcC4NCg0KKiotIGRyb3BvdXQqKiBsw6Agw70gxJHhu4tuaCBi4buPIGjhu41jIGPhu6dhIHNpbmggdmnDqm4sIDAgPSBDw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jOyAxID0gS2jDtG5nIGPDsyDDvSDEkeG7i25oIGtow7RuZyBi4buPIGjhu41jLg0KDQojIENIxq/GoE5HIDI6IFjDgUMgxJDhu4pOSCBCSeG6vk4gUEjhu6QgVEhV4buYQw0KDQpC4buZIGThu68gbGnhu4d1IGJhbyBn4buTbSBjw6FjIHRow7RuZyB0aW4gduG7gSBnaeG7m2kgdMOtbmggKGdlbmRlciksIHRo4budaSBnaWFuIGjhu41jICh0aW1lKSwgdMOsbmggdHLhuqFuZyB0w6BpIGNow61uaCAoZmluYW5jZSksIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIGNobyDEkWkgaOG7jWMgKGZhbWlseXN1cHBvcnQpLCB0aOG7sWMgdHLhuqFuZyBsw6BtIHRow6ptIChqb2IpLCBsw70gZG8gY2jGsMahbmcgdHLDrG5oIGjhu41jIChzdHVkeXByb2dyYW0pIHbDoCDDvSDEkeG7i25oIGLhu48gaOG7jWMgKGRyb3BvdXQpIGPhu6dhIHNpbmggdmnDqm4gdOG6oWkg4bqkbiDEkOG7mS4gVMOhYyBnaeG6oyBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgYuG7mSBk4buvIGxp4buHdSBuw6B5IMSR4buDIHBow6JuIHTDrWNoIHTDrG5oIHRy4bqhbmcgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLiANCg0KQuG7jyBo4buNYyDEkcaw4bujYyBoaeG7g3UgbeG7mXQgY8OhY2ggxJHGoW4gZ2nhuqNuIGzDoCBk4burbmcgdmnhu4djIGjhu41jIHThuq1wLCBt4buZdCBzaW5oIHZpw6puIGfhu41pIGzDoCBi4buPIGjhu41jIGtoaSBo4buNIGThu6tuZyBs4bqhaSBraMO0bmcgxJHhur9uIGPDoWMgbOG7m3AgaOG7jWMgdHLGsOG7m2Mga2hpIGjhu40gaG/DoG4gdGjDoG5oIGtow7NhIGjhu41jIGPhu6dhIGjhu40uIFRoZW8gKioqQmVhbiAoMTk4MCkqKiosIHNpbmggdmnDqm4gYuG7jyBo4buNYyAoZHJvcC1vdXQpIGzDoCBzaW5oIHZpw6puIHLhu51pIHRyxrDhu51uZyB0csaw4bubYyBraGkgxJHhuqF0IMSRxrDhu6NjIG3hu6VjIMSRw61jaCwg4bufIMSRw6J5IGPDsyB0aOG7gyBoaeG7g3UgbMOgIHRyxrDhu5tjIGtoaSB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMuIEPDsyBuaGnhu4F1IG5ndXnDqm4gbmjDom4ga2hp4bq/biBjaG8gc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLCBiYW8gZ+G7k206DQoNCioqKDEpIEtow7Mga2jEg24gduG7gSB0w6BpIGNow61uaDoqKiBTaW5oIHZpw6puIHBo4bqjaSB24bqtdCBs4buZbiB24bubaSBjaGkgcGjDrSBzaW5oIGhv4bqhdCBjYW8sIGtow7RuZyDEkeG7pyB0aeG7gW4gdHLhu6MgY+G6pXAsIGPDoWMga2hv4bqjbiBu4bujIHNpbmggdmnDqm4gdsOsIHbhuq15IHNpbmggdmnDqm4gc+G6vSBraMO0bmcgdGjhu4MgxJHDs25nIHRp4buBbiBo4buNYyBwaMOtIMSR4buDIHRp4bq/cCB04bulYyB2aeG7h2MgaOG7jWMuDQoNCioqKDIpIFRoaeG6v3UgdGjhu51pIGdpYW4gaOG7jWMgdOG6rXA6KiogU2luaCB2acOqbiBraMO0bmcgdOG6rXAgdHJ1bmcgY2hvIHZp4buHYyBo4buNYyBk4bqrbiDEkeG6v24ga+G6v3QgcXXhuqMgaOG7jWMgdOG6rXAgY+G7p2Egc2luaCB2acOqbiBuZ8OgeSBjw6BuZyBzYSBzw7p0IGtoaeG6v24gY2hvIHNpbmggdmnDqm4gbmfDoHkgY8OgbmcgY8OzIMO9IMSR4buLbmggbXXhu5FuIGLhu48gaOG7jWMuDQoNCioqKDMpIEPDsyBjw7RuZyB2aeG7h2MgbMOgbSB0aMOqbSDhu5VuIMSR4buLbmg6KiogU2luaCB2acOqbiBjaOG7iSB04bqtcCB0cnVuZyB2w6BvIGzDoG0gdmnhu4djIG3DoCBi4buPIGLDqiB2aeG7h2MgaOG7jWMgdHLDqm4gdHLGsOG7nW5nLiBE4bqrbiDEkeG6v24gc2luaCB2acOqbiBjw7MgdGjhu4Mgc+G6vSDEkcawYSByYSBxdXnhur90IMSR4buLbmggYuG7jyBo4buNYyB0aGF5IHbDrCB0aeG6v3AgdOG7pWMgaOG7jWMuDQoNCioqKDQpIEtow7RuZyBjw7Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmgqKjogU2luaCB2acOqbiBraMO0bmcgY8OzIMSR4buZbmcgbOG7sWMgxJFpIGjhu41jIHThu6sgxJHDsyBk4bqrbiDEkeG6v24gYuG7jyBo4buNYy4NCg0KKiooNSkgQ2jGsMahbmcgdHLDrG5oIGjhu41jIG7hurduZzoqKiBTaW5oIHZpw6puIG114buRbiBi4buPIGjhu41jIHRoxrDhu51uZyBkbyBjaMawxqFuZyB0csOsbmggcXXDoSBraMOzIMSR4buDIHRoZW8gaOG7jWMsIHRoaeG6v3Ugc+G7sSBnaWFvIHRp4bq/cCB24bubaSBnacOhbyB2acOqbiB2w6AgYuG6oW4gYsOoIGPDuW5nIGzhu5twIGhheSBkbyBjaMawxqFuZyB0csOsbmggaOG7jWMga2jDtG5nIG5oxrAga+G7syB24buNbmcuIEhv4bq3YyBjw7MgdGjhu4MgdsOsIGNoxrDGoW5nIHRyw6xuaCBo4buNYyBu4bq3bmcgbsOqbiBraGnhur9uIGNobyBz4buxIGjhu6luZyB0aMO6IGtoaSB0aeG6v3AgdGh1IMSRxrDhu6NjIG5o4buvbmcgxJFp4buBdSBt4bubaSBt4bq7IHRyb25nIG3DtG4gaOG7jWMga2jDtG5nIGPDsm4gbuG7r2EgZOG6q24gxJHhur9uIHNpbmggdmnDqm4gbXXhu5FuIGLhu48gaOG7jWMuDQoNCk5nb8OgaSByYSwgZG8gdMOsbmggdHLhuqFuZyBzaW5oIHZpw6puIHThu7Egw70gYuG7jyBo4buNYyBoaeG7h24gbmF5IMSRYW5nIGzDoCB24bqlbiDEkeG7gSDEkcOhbmcgbG8gbmfhuqFpIOG7nyBuaGnhu4F1IHF14buRYyBnaWEgbmjGsCBUw6J5IEJhbiBOaGEsIE3hu7ksIMSQ4bupYy4uLiB0cm9uZyDEkcOzIGPDsyDhuqRuIMSQ4buZLiBUaGVvIHRyYW5nIEluZGlhIFRvZGF5IEVkdWNhdGlvbiBEZXNrLCBC4buZIEdpw6FvIGThu6VjIOG6pG4gxJDhu5kgY2hvIGJp4bq/dCBjw7MgMTkuMjU2IHNpbmggdmnDqm4gxJHDoyBi4buPIGjhu41jIHThuqFpIGPDoWMgdHLGsOG7nW5nIENlbnRhbCBVbml2ZXJzaXRpZXMgKENVKSwgSW5kaWFuIEluc3RpdHV0ZXMgb2YgVGVjaG5vbG9neSAoSUlUKSB2w6AgSW5kaWFuIEluc3RpdHV0ZXMgb2YgTWFuYWdlbWVudCAoSUlNKSB0cm9uZyBnaWFpIMSRb+G6oW4gdOG7qyBuxINtIGjhu41jIDIwMTgg4oCTIDIwMjMuIE5o4bqxbSBoaeG7g3UgcsO1IMSRxrDhu6NjIHTDrG5oIHRy4bqhbmcgbsOgeSB04burIMSRw7MgxJHGsGEgcmEgbmjhu69uZyBnaeG6o2kgcGjDoXAgdsOgIGtp4bq/biBuZ2jhu4sgZ2nDunAgZ2nhuqNtIHRoaeG7g3UgdMOsbmggdHLhuqFuZyBzaW5oIHZpw6puIGLhu48gaOG7jWMgdGjDrCB2aeG7h2MgdGjhu7FjIGhp4buHbiBuZ2hpw6puIGPhu6l1IHnhur91IHThu5EgdMOhYyDEkeG7mW5nIMSR4bq/biDDvSDEkeG7i25oIGLhu48gaOG7jWMgY+G7p2Egc2luaCB2acOqbiBsw6AgaOG6v3Qgc+G7qWMgY+G6p24gdGhp4bq/dCwgRG8gxJHDsywgdMOhYyBnaeG6oyBjaOG7jW4gYmnhur9uIHBo4bulIHRodeG7mWMgbMOgICoqw50gxJHhu4tuaCBzaW5oIHZpw6puIGLhu48gaOG7jWMgKGRyb3BvdXQpKiogduG7m2kgxJHhu4EgdMOgaSBsw6AgKioiUGjDom4gdMOtY2ggY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biDDvSDEkeG7i25oIHNpbmggdmnDqm4gYuG7jyBo4buNYyIqKg0KDQojIENIxq/GoE5HIDM6IFBIxq/GoE5HIFBIw4FQIE5HSEnDik4gQ+G7qFUNCg0KQuG7mSBk4buvIGxp4buHdSBtw6AgdMOhYyBnaeG6oyBz4butIGThu6VuZyBsw6AgZOG7ryBsaeG7h3Ugbmjhu4sgcGjDom4gbsOqbiB0w6FjIGdp4bqjIHPhur0gc+G7rSBk4bulbmcgcGjGsMahbmcgcGjDoXAgZOG7ryBsaeG7h3UgxJHhu4tuaCB0w61uaCDEkeG7gyB04buVbmcgaOG7o3AgdsOgIHBow6JuIHTDrWNoIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHbhu5tpIGPDoWMgaMOgbSBsacOqbiBr4bq/dDogbG9naXQsIHByb2JpdCB2w6AgY2xvZ2xvZy4NCg0KIyMgR2nhu5tpIHRoaeG7h3UgbcO0IGjDrG5oDQoNCioqLSBNw7QgaMOsbmggdHV54bq/biB0w61uaCB04buVbmcgcXXDoXQqKg0KDQpCw6BpIG5naGnDqm4gY+G7qXUgc+G7rSBk4bulbmcgcGjGsMahbmcgcGjDoXAgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggdOG7lW5nIHF1w6F0IChHTE0pIGdp4bqjaSB0aMOtY2ggc+G7sSB0xrDGoW5nIHTDoWMgY+G7p2EgY8OhYyB54bq/dSB04buRIGzDqm4gYmnhur9uIHBo4bulIHRodeG7mWMgdHJvbmcgaOG7k2kgcXV5IChiYW8gZ+G7k20gY+G6oyBz4buxIGvhur90IGjhu6NwIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSB0w6FjIMSR4buZbmcgbMOqbiBiaeG6v24gcGjhu6UgdGh14buZYykuIE3DtCBow6xuaCBuw6B5IGNobyBwaMOpcCB0cnVuZyBiw6xuaCBwaOG7pSB0aHXhu5ljIHbDoG8gYmnhur9uIGdp4bqjaSB0aMOtY2ggdGjDtG5nIHF1YSBt4buZdCBow6BtIGxpw6puIGvhur90IChsaW5rIGZ1bmN0aW9uKSB2w6AgZ2nDoSB0cuG7iyB0cuG6oyB24buBIGzDoCBi4bqldCBrw6wgbeG7mXQgcGjhuqduIHThu60gbsOgbyBj4bunYSBt4buZdCB04bqtcCBo4bujcCBjw6FjIHBow6JuIHBo4buRaSDEkcaw4bujYyBn4buNaSBsw6AgaOG7jSBjw6FjIGzFqXkga+G6vyAoY2jhurNuZyBo4bqhbiBOb3JtYWwsIFBvaXNzb24sIEJpbm9ybWlhbCkuDQoNCioqLSBNw7QgaMOsbmggaOG7k2kgcXV5KioNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyBjaGlhIGzDoG0gMiBuaMOzbToNCg0KLSBNw7QgaMOsbmggaOG7k2kgcXV5IGPhu5UgxJFp4buDbg0KJCTOvF9pIOKJoSBFW3lfaV09IM6yXzArzrJfezFpfSvii68rzrJfa3hfe2tpfSQkDQrEkOG7gyBtw7QgaMOsbmggaOG7k2kgcXV5IGPhu5UgxJFp4buDbiBwaOG6o2kgdGjhu49hIG3Do24gMyDEkWnhu4F1IGtp4buHbiBzYXU6DQoNCjEuIExpbmVhcml0eSBvZiB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiBwcmVkaWN0b3JzIGFuZCBvdXRjb21lIHZhcmlhYmxlLg0KDQoyLiBHYXVzc2lhbiBkaXN0cmlidXRpb24gb2YgcmVzcG9uc2VzLg0KDQozLiBjb25zdGFudCB2YXJpYW5jZSBvZiByZXNwb25zZSBkaXN0cmlidXRpb24uDQoNCi0gTcO0IGjDrG5oIGjhu5NpIHF1eSB04buVbmcgcXXDoXQ6DQoNCiQkzrxfaT1nXnviiJIxfSjOsl8wK86yX3sxaX0r4ouvK86yX2t4X3traX0pJCQNCkhv4bq3Yw0KDQokJGcozrxfaSk9zrJfMCvOsl97MWl9K+KLryvOsl9reF97a2l9JCQNCg0KVHJvbmcgbcO0IGjDrG5oIG7DoHkgaMOgbSBnKC4pIMSRxrDhu6NjIGfhu41pIGzDoCBow6BtIGxpw6puIGvhur90IChsaW5rIGZ1bmN0aW9uKSB2w6AgZyguKSBwaOG6o2kgbMOgIGjDoG0gxJHGoW4gxJFp4buHdS4gVHJvbmcgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHThu5VuZyBxdcOhdCBz4bq9IGPDsyAzIHRow6BuaCBwaOG6p246DQoNCi0gVGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgKHN5c3RlbWF0aWMgY29tcG9uZW50KTogTMOgIHRow6BuaCB04buVIGjhu6NwIHR1eeG6v24gdMOtbmggY+G7p2EgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wLg0KDQotIFRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiAocmFuZG9tIGNvbXBvbmVudCk6IEzDoCBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudC9yZXNwb25zZSB2YXJpYWJsZSkuDQoNCi0gSMOgbSBsacOqbiBr4bq/dCAobGluayBmdW5jdGlvbikuDQoNCiMjIMav4bubYyBsxrDhu6NuZyBow6BtIGjhu5NpIHF1eSBjaG8gZOG7ryBsaeG7h3Ugbmjhu4sgcGjDom4gDQoNCkThu68gbGnhu4d1IG5o4buLIHBow6JuIGzDoCBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oIGNo4buJIG5o4bqtbiAyIGdpw6EgdHLhu4s6IMSQw7puZy9TYWk7IMSQ4buTbmcgw70vS2jDtG5nIMSR4buTbmcgw707IEPDsy9LaMO0bmc7IFRow6BuaCBjw7RuZy9UaOG6pXQgYuG6oWksLi4uDQoNCioqTcO0IGjDrG5oIGxvZ2l0KioNCg0KWMOpdCBiaeG6v24gxJHDoXAg4bupbmcgbMOgIGJp4bq/biBuaOG7iyBwaMOibiB24bubaSBoYWkgdGh14buZYyB0w61uaDogbeG7mXQgZ+G7jWkgbMOgIOKAnFRow6BuaCBjw7RuZ+KAnSB2w6AgbeG7mXQgZ+G7jWkgbMOgIOKAnFRo4bqldCBi4bqhaeKAnSwgY2jhu4t1IHPhu7EgdMOhYyDEkeG7mW5nIGPhu6dhIG3hu5l0IHThuq1wIGjhu6NwIG0gYmnhur9uICRYPShYXzEsWF8yLC4uLixYX20pJCBtw6AgdGEgZ+G7jWkgbMOgIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2guIEJp4bq/biDEkcOhcCDhu6luZyDEkcaw4bujYyDEkeG6oWkgZGnhu4duLCBoYXkgbMaw4bujbmcgaMOzYSBi4bufaSBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7MgcGjDom4gcGjhu5FpIDAg4oCTIDE6DQoNClkgPSAxIG7hur91IMSRw6FwIOG7qW5nIGzDoCDigJxUaMOgbmggY8O0bmfigJ0gdsOgIDAgbuG6v3UgxJHDoXAg4bupbmcgbMOgIOKAnFRo4bqldCBi4bqhaeKAnQ0KDQpNw7QgaMOsbmggbG9naXN0aWMgbcO0IHThuqMgc+G7sSBwaOG7pSB0aHXhu5ljIGPhu6dhIGJp4bq/biDEkcOhcCDhu6luZyB0aMO0bmcgcXVhIHjDoWMgc3XhuqV0IOKAnFRow6BuaCBjw7RuZ+KAnSAkz4AoeCk9UChZPTF8WD14KSQg4bupbmcgduG7m2kgbeG7qWMgJHggPSAoeF8xLHhfMiwuLi4seF9tKSQgY+G7p2EgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCBwaOG7pSB0aHXhu5ljIHbDoG8geD0oeF8xLHhfMiwuLi4seF9tKSBkxrDhu5tpIGThuqFuZzoNCg0KJCRsb2dpdCjPgCk9bG9nKM+ALygx4oiSz4ApKT3Osl8wK86yXzFYXzErzrJfMlhfMivii68rzrJfa1hfayQkDQoNClRyb25nIMSRw7MgY8OhYyBo4bqxbmcgc+G7kSAkzrJfMCzOsl8xLM6yXzIsLi4uLM6yX20kIMSRxrDhu6NjIGfhu41pIGzDoCBjw6FjIGjhu4cgc+G7kSBo4buTaSBxdXkuIEjhu4cgc+G7kSAkzrJfaiQgY+G7p2EgYmnhur9uICR4X2okIGzDoCBsxrDhu6NuZyB0aGF5IMSR4buVaSBj4bunYSAkbG9nKFxmcmFje8+AKHgpfXsx4oiSz4AoeCl9KSQsIGhheSBj4bunYSAkbG9nW09kZHMoeCldJCBraGkgYmnhur9uICR4X2okIHRoYXkgxJHhu5VpIDEgxJHGoW4gduG7iywgdHJvbmcgxJFp4buBdSBraeG7h24gY8OhYyBiaeG6v24ga2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCAkaj0xLDIs4oCmLG0kLg0KDQotIE7hur91ICTOsl9qPjAsz4AoeCkkxJHhu5NuZyBiaeG6v24gdGhlbyAkeF9qJCwga2hpIGPDoWMgYmnhur9uIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaS4NCg0KLSBO4bq/dSAkzrJfajwwLM+AKHgpJCBuZ2jhu4tjaCBiaeG6v24gdGhlbyAkeF9qJCwga2hpIGPDoWMgYmnhur9uIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaS4NCg0KLSBO4bq/dSAkzrJfaj0wLM+AKHgpJCBraMO0bmcgcGjhu6UgdGh14buZYyAkeF9qJC4NCg0KS2hpICR4X2okIHTEg25nIHRow6ptIDEgxJHGoW4gduG7iywgY8OybiBjw6FjIGJp4bq/biBraMOhYyBraMO0bmcgdGhheSDEkeG7lWkgdGjDrCB04bu3IGzhu4cgY8aw4bujYyAkT2Rkcyh4KSQgxJHGsOG7o2MgbmjDom4gbMOqbiB24bubaSAkZV57zrJfan0kDQoNCk3DtCDGsOG7m2MgbMaw4bujbmcgY2hvIG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXN0aWMgbMOgIDoNCg0KJCRsb2coXGZyYWN7XGhhdHtccGl9KHgpfXsx4oiSXGhhdHtccGl9KHgpfSk9XGhhdHvOsl8wfStcaGF0e86yXzF9LnhfMStcaGF0e86yXzJ9LnhfMisuLi4rXGhhdHvOsl9tfS54X20kJA0KDQpUcm9uZyDEkcOzIGPDoWMgaOG7hyBz4buRICRcaGF0e86yX2p9JCDGsOG7m2MgbMaw4bujbmcgY2hvIGjhu5NpIHF1eSAkzrJfaiQgxJHGsOG7o2MgdMOsbSB0aGVvIHBoxrDGoW5nIHBow6FwIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkuDQoNCioqTcO0IGjDrG5oIHByb2JpdCoqDQoNCkjhu5NpIHF1eSBQcm9iaXQsIMSRw7RpIGtoaSBjw7JuIMSRxrDhu6NjIGfhu41pIGzDoCBtw7QgaMOsbmggUHJvYml0LCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDGsOG7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGPDsyBiaeG6v24gcGjhu6UgdGh14buZYyBk4bqhbmcgbmjhu4sgcGjDom4uIFRyb25nIGjhu5NpIHF1eSBQcm9iaXQsIHhlbSBow6BtIHjDoWMgc3XhuqV0ICRccGkoeCkkIGhv4bq3YyAxIOKIkiAkXHBpKHgpJCBsw6AgaMOgbSBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY+G7p2EgbeG7mXQgYmnhur9uIG5n4bqrdSBuaGnDqm4gKlgqIGPDsyBwaMOibiBwaOG7kWkgY2h14bqpbiwgdOG7qWMgbMOgIHjDoWMgc3XhuqV0IOKAnFRow6BuaCBjw7RuZ+KAnSBjw7MgZOG6oW5nOg0KDQokJFxwaSh4KSA9IFxQaGkoXGFscGhhICsgXGJldGEgeCkkJA0KDQp0cm9nIMSRw7MgJFxQaGkoeCkgPSBcZnJhY3sxfXtcc3FydHsyXHBpfX3iiKtfey3iiJ59Xnt4fWVeey1cZnJhY3sxfXsyfXReMn1kdCQgbMOgIGjDoG0gcGjDom4gcGjhu5FpIGNodeG6qW4gY2jDrW5oIHThuq9jLg0KDQpLw70gaGnhu4d1OiAqJHByb2JpdCjPgCh4KSkgPSBcUGhpXnviiJIxfSjPgCh4KSkkIHbDoCBtw7QgaMOsbmggUHJvYml0IMSRxrDhu6NjIHZp4bq/dCBkxrDhu5tpIGThuqFuZzoNCg0KJCRwcm9iaXQoz4AoeCkpID0gXFBoaV574oiSMX0oz4ApID0gXGFscGhhICsgXGJldGEgeCQkDQoNClbhu5tpICRccGkkIGzDoCB4w6FjIHN14bqldCDEkeG7gyBiaeG6v24gcGjhu6UgdGh14buZYyBuaOG6rW4gZ2nDoSB0cuG7iyAiKip0aMOgbmggY8O0bmcqKiIuDQoNCioqTcO0IGjDrG5oIGNsb2dsb2cqKg0KDQpUYSBuaOG6rW4gxJHGsOG7o2MgbcO0IGjDrG5oIExvZ2lzdGljIGPDsyBjw6FjIGJp4bq/biBk4buxIGLDoW8g4bufIGThuqFuZyBsb2csIGfhu41pIGzDoCBtw7QgaMOsbmggbG9naXN0aWMgbG9nLWxvZw0KDQokJGNsb2dsb2coz4ApPWxvZyjiiJJsb2coMeKIks+AKSkkJA0KDQpW4bubaSAkXHBpJCBsw6AgeMOhYyBzdeG6pXQgxJHhu4MgYmnhur9uIHBo4bulIHRodeG7mWMgbmjhuq1uIGdpw6EgdHLhu4sgIioqdGjDoG5oIGPDtG5nKioiLg0KDQojIyBUcsOsbmggdOG7sSB0aOG7sWMgaGnhu4duIHBow6JuIHTDrWNoIGThu68gbGnhu4d1DQoNCioqQsaw4bubYyAxOioqIFRo4buRbmcga8OqIG3DtCB04bqjIHbDoCB24bq9IMSR4buTIHRo4buLIGNobyBi4buZIGThu68gbGnhu4d1DQoNCioqQsaw4bubYyAyOioqIFRo4buxYyBoaeG7h24gY8OhYyBwaMOpcCB0b8OhbiB0w61uaCBy4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmlzayByYXRpbykgdsOgIHThu7cgbOG7hyBjaMOqbmggKE9kZCByYXRpbykgY2hvIGPDoWMgYmnhur9uIMSR4buLbmggdMOtbmgNCg0KKipCxrDhu5tjIDM6KiogVGjhu5FuZyBrw6ogc3V5IGRp4buFbiBjaG8gZOG7ryBsaeG7h3UgxJHhu4tuaCB0w61uaDoga2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIHbDoCB0w61uaCBraG/huqNuZyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHICRcdG8kIMSQ4buBIHh14bqldCBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljLg0KDQoqKkLGsOG7m2MgNDoqKiBDaOG6oXkgxrDhu5tjIGzGsOG7o25nIG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgduG7m2kgY8OhYyBow6BtIGxpw6puIGvhur90IGxvZ2l0LCBwcm9iaXQgdsOgIGNsb2dsb2cgdsOgIGtp4buDbSDEkeG7i25oIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgbcO0IGjDrG5oIHbhu5tpIGThu68gbGnhu4d1IMSRaeG7gXUgdHJhIHRow7RuZyBxdWEga2nhu4NtIMSR4buLbmggTFIuDQoNCioqQsaw4bubYyA1OioqIMSQw6FuaCBnacOhIG3hu6ljIHBow7kgaOG7o3AgY+G7p2EgY8OhYyBtw7QgaMOsbmggdGjDtG5nIHF1YSBjaOG7iSBz4buRIHNhdToNCg0KKiBDaOG7iSBz4buRIEFJQyAtIEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb246IGTDuW5nIMSR4buDIMSRw6FuaCBnacOhIG3DtCBow6xuaCAgaOG7k2kgcXV5IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bufaSBwaMawxqFuZyBwaMOhcCBNYXhpbXVtIExpa2VraWhvb2QgKE1MKSB0aMO0bmcgcXVhIGNo4buJIHPhu5EgQUlDIGPDoG5nIG5o4buPIHRow6wgbcO0IGjDrG5oIGPDoG5nIHThu5F0LiANCg0KKiBDaOG7iSBz4buRIEJyaWVyIFNjb3JlOiBkw7luZyDEkeG7gyBs4buxYSBjaOG7jW4gbcO0IGjDrG5oIHbhu5tpIGNo4buJIHPhu5EgQiBjw6BuZyBiw6kgdGjDrCBtw7QgaMOsbmggxrDhu5tjIGzGsOG7o25nIGPDoG5nIGNow61uaCB4w6FjIHbDoCBjw6BuZyBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IHF1YW4gc8OhdC4NCg0KKiBDaOG7iSBz4buRIERldmlhbmNlOiBMw6AgbeG7mXQgdGnDqnUgY2jDrSBy4bqldCBwaOG7lSBiaeG6v24gxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgxJHDoW5oIGdpw6EgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG7n2kgcGjGsMahbmcgcGjDoXAgSOG7o3AgbMO9IGPhu7FjIMSR4bqhaSAoTUwpLiBDxaluZyBnaeG7kW5nIG5oxrAgY2jhu4kgdGnDqnUgQUlDLCBnacOhIHRy4buLIGPhu6dhIERldmlhbmNlIGPDoG5nIG5o4buPIHRow6wgbcO0IGjDrG5oIGPDoG5nIHThu5F0Lg0KDQoqKkLGsOG7m2MgNjoqKiBDaOG6oXkgbcO0IGjDrG5oIHBow7kgaOG7o3AgbmjhuqV0IHNhdSBraGkgxJHDoyBs4buxYSBjaOG7jW4gbcO0IGjDrG5oLiANCg0KIyBDSMavxqBORyA0OiBQSMOCTiBUw41DSCBE4buuIExJ4buGVSBWw4AgS+G6vlQgUVXhuqIgTkdIScOKTiBD4buoVQ0KDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyAxIGJp4bq/bg0KDQojIyMgQmnhur9uIGRyb3BvdXQNCg0KKiotIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQqKg0KDQpgYGB7cn0NCnRhYmxlKGRyb3BvdXQpDQp0YWJsZShkcm9wb3V0KS9zdW0odGFibGUoZHJvcG91dCkpDQpgYGANCg0KQmnhur9uIGRyb3BvdXQgxJHhuqFpIGRp4buHbiBjaG8gc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHbDoCBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBoYXkga2jDtG5nLiBUcm9uZyAxMDAwIHNpbmggdmnDqm4gdGhhbSBnaWEgY3Xhu5ljIGto4bqjbyBzw6F0LCBjw7MgNDY3IHNpbmggdmnDqm4gY8OzIGThu7EgxJHhu4tuaCBi4buPIGjhu41jIGNoaeG6v20gdOG7tyB0cuG7jW5nIDQ2LDclIHRyb25nIGtoaSA1MzMgc2luaCB2acOqbiBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjaGnhur9tIDUzLDMlIHThu5VuZyBzaW5oIHZpw6puLiBU4burIGvhur90IHF14bqjIG7DoHksIHRhIHRo4bqleSBjw7MgZ+G6p24gNTAlIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjaG8gdGjhuqV5IHThu7cgbOG7hyBzaW5oIHZpw6puIG114buRbiBi4buPIGjhu41jIHThuqFpIOG6pG4gxJDhu5kga2jDoSBjYW8uDQoNCioqLSDEkOG7kyB0aOG7iyoqDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZGF0YSB8PiBnZ3Bsb3QoYWVzKHggPSBkcm9wb3V0LCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ2dyZXknKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ8OdIMSR4buLbmggYuG7jyBo4buNYyBj4bunYSBzaW5oIHZpw6puJywgeSA9ICdT4buRIG5nxrDhu51pJykNCmBgYA0KYGBgDQooQ2jDuiB0aMOtY2g6IDAgPSBDw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLCAxID0gS2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMpDQpgYGANCg0KROG7sWEgdsOgbyDEkeG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMuIFRhIHRo4bqleSBraMO0bmcgY8OzIHPhu7EgY2jDqm5oIGzhu4djaCDEkcOhbmcga+G7gyBnaeG7r2Egc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHbDoCBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYywgbmdoxKlhIGzDoCB04bu3IGzhu4cgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHbDoCBzaW5oIHZpw6puIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGzDoCB44bqlcCB44buJICggc2luaCB2acOqbiBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjYW8gZ+G6pXAgMSwxNDEgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jKS4NCg0KIyMjIEJp4bq/biBnZW5kZXINCg0KKiotIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQqKg0KDQpgYGB7cn0NCnRhYmxlKGdlbmRlcikNCnRhYmxlKGdlbmRlcikvc3VtKHRhYmxlKGdlbmRlcikpDQpgYGANCg0KQmnhur9uIGdlbmRlciDEkeG6oWkgZGnhu4duIGNobyBnaeG7m2kgdMOtbmggY+G7p2Egc2luaCB2acOqbi4gVHJvbmcgMTAwMCBzaW5oIHZpw6puIHRow6wgdOG7tyBs4buHIHNpbmggdmnDqm4ga2jhuqNvIHPDoXQgbMOgIG7hu68gY2hp4bq/bSA2Myw5JSwgdHJvbmcga2hpIHNpbmggdmnDqm4gbmFtIGNoaeG6v20gdOG7tyB0cuG7jW5nIDM2LDElLiBU4burIGvhur90IHF14bqjIG7DoHkgY2hvIHRo4bqleSB04bqtcCBk4buvIGxp4buHdSBraOG6o28gc8OhdCBjaOG7pyB54bq/dSBsw6AgdOG7qyBzaW5oIHZpw6puIG7hu68uDQoNCioqLSDEkOG7kyB0aOG7iyoqDQpgYGB7cn0NCmRhdGEgfD4gZ2dwbG90KGFlcyh4ID0gZ2VuZGVyLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ2dyZXknKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ0dp4bubaSB0w61uaCcsIHkgPSAnU+G7kSBuZ8aw4budaScpDQpgYGANCg0KROG7sWEgdsOgbyDEkeG7kyB0aOG7iywgdGEgY2hvIHRo4bqleSBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGhlbyBnaeG7m2kgdMOtbmggbMOgIG5hbSBob+G6t2MgbuG7ry4gQ8OzIHPhu7EgY2jDqm5oIGzhu4djaCBnaeG7r2EgZ2nhu5tpIHTDrW5oIGPhu6dhIGPDoWMgc2luaCB2acOqbiwgdHJvbmcgdOG7tyBs4buHIHNpbmggdmnDqm4gbMOgIG7hu68gY2hp4bq/bSBjYW8gaMahbiwgZ+G6pXAgMSw3NyBs4bqnbiBzbyB24bubaSB04bu3IGzhu4cgc2luaCB2acOqbiBuYW0uDQoNCiMjIyBCaeG6v24gam9iDQoNCioqLSBC4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0KioNCg0KYGBge3J9DQp0YWJsZShqb2IpDQp0YWJsZShqb2IpL3N1bSh0YWJsZShqb2IpKQ0KYGBgDQoNCkJp4bq/biBqb2IgxJHhuqFpIGRp4buHbiBjaG8gdGjhu7FjIHRy4bqhbmcgbMOgbSB0aMOqbSBj4bunYSBzaW5oIHZpw6puLiBUcm9uZyBz4buRIDEwMDAgc2luaCB2acOqbiDEkcaw4bujYyBraOG6o28gc8OhdCwgdGEgdGjhuqV5IGPDsyA0NzYgc2luaCB2acOqbiBjw7MgY8O0bmcgdmnhu4djIGzDoG0gdGjDqm0sIGNoaeG6v20gNDcsNiUgdsOgIDUyNCBzaW5oIHZpw6puIGtow7RuZyBjw7MgbMOgbSB0aMOqbSwgdMawxqFuZyDEkcawxqFuZyA1Miw0JS4gS+G6v3QgcXXhuqMgbsOgeSBjaG8gdGjhuqV5IGfhuqduICRcZnJhY3sxfXsyfSQgc2luaCB2acOqbiDEkcOjIGPDsyB2aeG7h2MgbMOgbSB0aMOqbS4NCg0KKiotIMSQ4buTIHRo4buLKioNCmBgYHtyfQ0KZGF0YSB8PiBnZ3Bsb3QoYWVzKHggPSBqb2IsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnZ3JleScpICtnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9J2NvdW50JywgY29sb3IgPSAnYmxhY2snLCB2anVzdCA9IC0gLjUpICtsYWJzKHggPSAnVGjhu7FjIHRy4bqhbmcgbMOgbSB0aMOqbSBj4bunYSBzaW5oIHZpw6puJywgeSA9ICdT4buRIG5nxrDhu51pJykNCmBgYA0KDQooQ2jDuiB0aMOtY2g6IDAgPSBDw7MgY8O0bmcgdmnhu4djIGzDoG0gdGjDqm0sIDEgPSBLaMO0bmcgY8OzIGPDtG5nIHZp4buHYyBsw6BtIHRow6ptKQ0KDQpUaMO0bmcgcXVhIMSR4buTIHRo4buLLCB0YSBjaG8gdGjhuqV5IGtow7RuZyBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIGdp4buvYSBzaW5oIHZpw6puIGPDsyBsw6BtIHRow6ptIHbDoCBzaW5oIHZpw6puIGtow7RuZyBjw7MgY8O0bmcgdmnhu4djIGzDoG0gdGjDqm0uIENobyB0aOG6pXksIHPhu5Egc2luaCB2acOqbiBraMO0bmcgY8OzIHZp4buHYyBsw6BtIHjhuqVwIHjhu4kgc28gduG7m2kgc2luaCB2acOqbiBjw7MgY8O0bmcgdmnhu4djIChn4bqlcCAxLDEgbOG6p24pLg0KDQojIyMgQmnhur9uIGZpbmFuY2UNCg0KKiotIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQqKg0KDQpgYGB7cn0NCnRhYmxlKGZpbmFuY2UpDQp0YWJsZShmaW5hbmNlKS9zdW0odGFibGUoZmluYW5jZSkpDQpgYGANCg0KQmnhur9uIGZpbmFuY2UgxJHhuqFpIGRp4buHbiB0w6BpIGNow61uaCBj4bunYSBzaW5oIHZpw6puLiBUcm9uZyAxMDAwIHNpbmggdmnDqm4gdGhhbSBnaWEga2jhuqNvIHPDoXQsIHRhIHRo4bqleSBjaOG7iSBjw7MgMjYsOCUgc2luaCB2acOqbiBn4bq3cCBraMOzIGtoxINuIHbhu4EgdMOgaSBjaMOtbmgsIHRyb25nIGtoaSBzaW5oIHZpw6puIGtow7RuZyBn4bq3cCBraMOzIGtoxINuIHbhu4EgdMOgaSBjaMOtbmggY2hp4bq/bSA3MywyJS4gVOG7qyBr4bq/dCBxdeG6oyBuw6B5LCBjaG8gdGjhuqV5IGNo4buJIGPDsyAzMCUgc2luaCB2acOqbiBjaG8gdGjhuqV5IHNpbmggdmnDqm4gxJFhbmcgY8OzIGtow7Mga2jEg24uDQoNCioqLSDEkOG7kyB0aOG7iyoqDQpgYGB7cn0NCmRhdGEgfD4gZ2dwbG90KGFlcyh4ID0gZmluYW5jZSwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICdncmV5JykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdUw6BpIGNow61uaCBj4bunYSBzaW5oIHZpw6puJywgeSA9ICdT4buRIG5nxrDhu51pJykNCmBgYA0KYGBgDQooQ2jDuiB0aMOtY2g6IDAgPSBDw7Mga2jDsyBraMSDbiB0w6BpIGNow61uaCwgMSA9IEtow7RuZyBjw7Mga2jDsyBraMSDbiB0w6BpIGNow61uaCkNCmBgYA0KDQpE4buxYSB2w6BvIMSR4buTIHRo4buLLCB0YSB0aOG6pXkgY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBraMOhIGzhu5tuIGdp4buvYSBzaW5oIHZpw6puIGfhurdwIGtow7Mga2jEg24gduG7gSB0w6BpIGNow61uaCB2w6Agc2luaCB2acOqbiBraMO0bmcgY8OzIGtow7Mga2jEg24gduG7gSB0w6BpIGNow61uaC4gU2luaCB2acOqbiBjw7MgxJHhu6cgdMOgaSBjaMOtbmggZMOgbmggY2hvIHZp4buHYyBo4buNYyBjYW8gZ+G6pXAga2hv4bqjbmcgMiw3IGzhuqduIHNpbmggdmnDqm4gZ+G6t3Aga2jDsyBraMSDbiB24buBIHTDoGkgY2jDrW5oLg0KDQojIyMgQmnhur9uIGZhbWlseXN1cHBvcnQNCg0KKiotIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQqKg0KDQpgYGB7cn0NCnRhYmxlKGZhbWlseXN1cHBvcnQpDQp0YWJsZShmYW1pbHlzdXBwb3J0KS9zdW0odGFibGUoZmFtaWx5c3VwcG9ydCkpDQpgYGANCg0KQmnhur9uIGZhbWlseXN1cHBvcnQgxJHhuqFpIGRp4buHbiBjaG8gc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmggY2hvIMSRaSBo4buNYyDEkeG7kWkgduG7m2kgc2luaCB2acOqbi4gVHJvbmcgc+G7kSAxMDAwIHNpbmggdmnDqm4sIHRhIHRo4bqleSBjw7MgMzAyIHNpbmggdmnDqm4ga2jDtG5nIMSRxrDhu6NjIGdpYSDEkcOsbmgg4bunbmcgaOG7mSDEkWkgaOG7jWMgY2hp4bq/bSB04bu3IHRy4buNbmcgMzAsMiUgdHJvbmcga2hpIGPDsyA2OTggc2luaCB2acOqbiDEkcaw4bujYyBnaWEgxJHDrG5oIOG7p25nIGjhu5kgxJFpIGjhu41jICh0xrDGoW5nIMSRxrDGoW5nIDY5LDglKS4gVOG7qyBr4bq/dCBxdeG6oyB0aOG7kW5nIGvDqiBjaG8gdGjhuqV5IHBo4bqnbiBs4bubbiBzaW5oIHZpw6puIMSR4buBdSDEkcaw4bujYyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCBjaG8gxJFpIGjhu41jLg0KDQoqKi0gxJDhu5MgdGjhu4sqKg0KYGBge3J9DQpkYXRhIHw+IGdncGxvdChhZXMoeCA9IGZhbWlseXN1cHBvcnQsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnZ3JleScpICtnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9J2NvdW50JywgY29sb3IgPSdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdT4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCDEkWkgaOG7jWMnLCB5ID0gJ1Phu5EgbmfGsOG7nWknKQ0KYGBgDQpgYGANCihDaMO6IHRow61jaDogMCA9IEtow7RuZyBjw7Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmgsIDEgPSBDw7Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmgpDQpgYGANCg0KROG7sWEgdsOgbyDEkeG7kyB0aOG7iywgdGEgY2hvIHRo4bqleSBz4buxIGNow6puaCBs4buHY2gga2jDoSBs4bubbiBnaeG7r2Egc2luaCB2acOqbiBjw7Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdp4bqjIMSRw6xuaCB2w6Agc2luaCB2acOqbiBraMO0bmcgY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oLiBT4buRIHNpbmggdmnDqm4gxJHGsOG7o2Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmggY2hvIMSRaSBo4buNYyBjaGnhur9tIHBo4bqnbiBs4bubbiwgZ+G6pXAgMiwzIGzhuqduIHNpbmggdmnDqm4ga2jDtG5nIGPDsyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCBjaG8gxJFpIGjhu41jLg0KDQojIyMgQmnhur9uIHRpbWUNCg0KKiotIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQqKg0KDQpgYGB7cn0NCnRhYmxlKHRpbWUpDQp0YWJsZSh0aW1lKS9zdW0odGFibGUodGltZSkpDQpgYGANCg0KQmnhur9uIHRpbWUgxJHhuqFpIGRp4buHbiBjaG8gdGjhu51pIGdpYW4gc2luaCB2aeG7h2MgZMOgbmggY2hvIHZp4buHYyBo4buNYy4gVHJvbmcgc+G7kSAxMDAwIHNpbmggdmnDqm4sIGPDsyA3MjMgc2luaCB2acOqbiBjw7MgdGjhu51pIGdpYW4gaOG7jWMgdOG6rXAgxJHhuqF0IHThu7cgbOG7hyA3MiwzJSwgdHJvbmcga2hpIMSRw7MsIGNo4buJIGPDsyAyNzcgc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMgY2hp4bq/bSB04bu3IHRy4buNbmcgMjcsNyUuIFThu6sga+G6v3QgcXXhuqMgbsOgeSBjw7MgdGjhu4MgdGjhuqV5IHTDrG5oIHRy4bqhbmcgc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIGjhu41jIGtow6Egw610LCBo4bqndSBo4bq/dCBzaW5oIHZpw6puIMSR4buBdSBjw7MgxJHhu6cgdGjhu51pIGdpYW4gZMOgbmggY2hvIHZp4buHYyBo4buNYy4NCg0KKiotIMSQ4buTIHRo4buLKioNCmBgYHtyfQ0KZGF0YSB8PiBnZ3Bsb3QoYWVzKHggPSB0aW1lLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ2dyZXknKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ1Ro4budaSBnaWFuIHNpbmggdmnDqm4gZMOgbmggY2hvIHZp4buHYyBo4buNYycsIHkgPSAnU+G7kSBuZ8aw4budaScpDQpgYGANCmBgYA0KKENow7ogdGjDrWNoOiAwID0gVGhp4bq/dSB0aOG7nWkgZ2lhbiBo4buNYywgMSA9IEPDsyB0aOG7nWkgZ2lhbiBo4buNYykNCmBgYA0KDQpE4buxYSB2w6BvIMSR4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY8OzIHRo4budaSBnaWFuIGjhu41jIGhheSBraMO0bmcuIFRhIHRo4bqleSBz4buxIGNow6puaCBs4buHY2ggcsO1IHLhu4d0IGdp4buvYSBzaW5oIHZpw6puIGPDsyB0aOG7nWkgZ2lhbiBo4buNYyB2w6Agc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMsIGNobyB0aOG6pXkgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIHRo4budaSBnaWFuIGjhu41jIGNoaeG6v20gY2FvIGfhuqVwIDIsNTcgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBraMO0bmcgY8OzIHRo4budaSBnaWFuIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMuDQoNCiMjIyBCaeG6v24gc3R1ZHlwcm9ncmFtDQoNCioqLSBC4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0KioNCg0KYGBge3J9DQp0YWJsZShzdHVkeXByb2dyYW0pDQp0YWJsZShzdHVkeXByb2dyYW0pL3N1bSh0YWJsZShzdHVkeXByb2dyYW0pKQ0KYGBgDQoNCkJp4bq/biBzdHVkeXByb2dyYW0gxJHhuqFpIGRp4buHbiBjaG8gbeG7qWMgxJHhu5kgY2jGsMahbmcgdHLDrG5oIGjhu41jIGPhu6dhIHNpbmggdmnDqm4uIFRyb25nIHPhu5EgMTAwMCBzaW5oIHZpw6puIGto4bqjbyBzw6F0LCB0YSB0aOG6pXkgY8OzIDM2MyBzaW5oIHZpw6puIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgbuG6t25nIMSR4bqhdCB04bu3IGzhu4cgMzYsMyUgdsOgIGPDsyA2Mzcgc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIHBow7kgaOG7o3AgduG7m2kgbcOsbmgsIHTGsMahbmcgxJHGsMahbmcgNjMsNyUuIFThu6sga+G6v3QgcXXhuqMgbsOgeSwgY8OzIHRo4buDIHRo4bqleSBjaOG7iSBjw7Mga2hv4bqjbmcgNDAlIHNpbmggdmnDqm4gdGjhuqV5IGNoxrDGoW5nIHRyw6xuaCBo4buNYyBu4bq3bmcgc28gduG7m2kgaOG7jWMgbOG7sWMgc2luaCB2acOqbi4NCg0KKiotIMSQ4buTIHRo4buLKioNCg0KYGBge3J9DQpkYXRhIHw+IGdncGxvdChhZXMoeCA9IHN0dWR5cHJvZ3JhbSwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICdncmV5JykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdN4bupYyDEkeG7mSBjaMawxqFuZyB0csOsbmggaOG7jWMnLCB5ID0gJ1Phu5EgbmfGsOG7nWknKQ0KYGBgDQpgYGANCihDaMO6IHRow61jaDogMCA9IENoxrDGoW5nIHRyw6xuaCBu4bq3bmcsIDEgPSBDaMawxqFuZyB0csOsbmggcGjDuSBo4bujcCB24bubaSBzaW5oIHZpw6puKQ0KYGBgDQoNClRow7RuZyBxdWEgxJHhu5MgdGjhu4ssIHRhIGNobyB0aOG6pXkgc+G7sSBjaMOqbmggbOG7h2NoIMSRw6FuZyBr4buDIGdp4buvYSBt4bupYyDEkeG7mSBjaMawxqFuZyB0csOsbmggaOG7jWMgY+G7p2Egc2luaCB2acOqbi4gVOG7tyBs4buHIHNpbmggdmnDqm4gY+G6o20gdGjhuqV5IGNoxrDGoW5nIHRyw6xuaCBo4buNYyBwaMO5IGjhu6NwIHbhu5tpIGLhuqNuIHRow6JuIGNhbyBn4bqlcCAxLDc3IGzhuqduIHNvIHbhu5tpIHNpbmggdmnDqm4gdGjhuqV5IGNoxrDGoW5nIHRyw6xuaCBo4buNYyBu4bq3bmcuDQoNCiMjIFRo4buRbmcga8OqIG3DtCB04bqjIDIgYmnhur9uDQoNCiMjIyBCaeG6v24gZHJvcG91dCB2w6AgZ2VuZGVyDQoNCioqLSBC4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0KioNCg0KYGBge3J9DQpwdDEgPC0gdGFibGUoZ2VuZGVyLGRyb3BvdXQpDQphZGRtYXJnaW5zKHB0MSkNCnBwdDEgPC0gcHJvcC50YWJsZShwdDEpDQphZGRtYXJnaW5zKHBwdDEpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0IHRo4buDIGhp4buHbiBz4buRIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aGVvIGdp4bubaSB0w61uaC4NCg0KKiBUcm9uZyA0Njcgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHRyb25nIMSRw7MgY8OzIDMwNiBzaW5oIHZpw6puIG7hu68gLGNoaeG6v20gMzAsNiUgdOG7lW5nIHNpbmggdmnDqm5uIHbDoCBjw7MgMTYxIHNpbmggdmnDqm4gbmFtLCB0xrDGoW5nIMSRxrDGoW5nIDE2LDElLiANCg0KKiBCw6puIGPhuqFuaCDEkcOzLCBjw7MgNTMzIHNpbmggdmnDqm4ga2jDtG5nIMO9IMSR4buLbmggYuG7jyBo4buNYyB0cm9uZyDEkcOzIGPDsyAzMzMgc2luaCB2acOqbiBu4buvIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHbDoCBjaGnhur9tIDMzLDMlIHRyw6puIDEwMDAgc2luaCB2acOqbiB2w6AgY8OzIDIwMCBzaW5oIHZpw6puIG5hbSwgdMawxqFuZyDEkcawxqFuZyAyMCUgdOG7lW5nIHNpbmggdmnDqm4uDQoNCioqLSDEkOG7kyB0aOG7iyoqDQoNCmBgYHtyfQ0KZGF0YSB8PiBnZ3Bsb3QoYWVzKHggPSBnZW5kZXIsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbCA9ICdicm93bicpICsgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSAnY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2ZhY2V0X2dyaWQoLiB+IGRhdGEkZHJvcG91dCkgKw0KICMgdGhlbWVfY2xhc3NpYygpICsNCiAgbGFicyh4ID0gJ0dp4bubaSB0w61uaCcsIHkgPSAnU+G7kSBuZ8aw4budaScpDQpgYGANCg0KROG7sWEgdsOgbyDEkeG7kyB0aOG7iyBwaMOibiBsb+G6oWkgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHRoZW8gZ2nhu5tpIHTDrW5oLCBjw7MgdGjhu4Mgbmjhuq1uIHRo4bqleSBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIG5hbSB2w6AgbuG7ryBjw7MgZOG7sSDEkeG7i25oIGLhu48gaOG7jWMgdsOgIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLg0KDQoqIFPhu5Egc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGzDoCBu4buvIGNhbyBn4bqlcCAxLDkgbOG6p24gc2luaCB2acOqbiBuYW0uIA0KDQoqIFNpbmggdmnDqm4gbuG7ryBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjxaluZyBjYW8gZ+G6pXAgMSw2NjUgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBuYW0uIA0KDQpRdWEgYmnhu4N1IMSR4buTLCBzaW5oIHZpw6puIG7hu68gY8OzIGThu7EgxJHhu4tuaCBi4buPIGjhu41jIHbDoCBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB2w6Agc2luaCB2acOqbiBuYW0gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB2w6Aga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgxJHhu4F1IHjhuqVwIHjhu4kgbmhhdS4gQ2hvIHRo4bqleSBy4bqxbmcgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGtow7RuZyBwaOG6o2kgZG8gZ2nhu5tpIHTDrW5oLg0KDQoqKi0gUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpgYGB7cn0NCmVwaXRhYihwdDEsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAiYiIpDQpgYGANCg0KS+G6v3QgcXXhuqMgY2hvIHRo4bqleSB04bu3IGzhu4cgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKHJpc2sgcmF0aW8pIGzDoCAxLDA3MzcsIHThu6ljIGzDoCBzaW5oIHZpw6puIG7hu68gY8OzIHThu7cgbOG7hyBtdeG7kW4gYuG7jyBo4buNYyBjYW8gaMahbiA3LDM3JSBzbyB24bubaSBzaW5oIHZpw6puIG5hbS4gVuG7m2kgxJHhu5kgdGluIGPhuq15IDk1JSwgdGEgY8OzIHRo4buDIHRpbiBy4bqxbmcgc2F1IDEgbsSDbSwgc+G7kSBzaW5oIHZpw6puIG7hu68gY8OzIG5ndXkgY8ahIGLhu48gaOG7jWMgY2FvIGfhuqVwIHThu6sgMCw5MzI5IMSR4bq/biAxLDIzNTggbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBuYW0uDQoNCioqLSBU4bu3IGzhu4cgY2jDqm5oIGzhu4djaCoqDQoNCmBgYHtyfQ0KZXBpdGFiKHB0MSwgbWV0aG9kID0gJ29kZHNyYXRpbycpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB04bu3IGzhu4cgY2jDqm5oIChvZGQgcmF0aW8pIGzDoCAxLDE0MTUsIGNobyB0aOG6pXkgc2luaCB2acOqbiBu4buvIGPDsyBraOG6oyBuxINuZyBi4buPIGjhu41jIGNhbyBoxqFuIHNvIHbhu5tpIHNpbmggdmnDqm4gbmFtIGtob+G6o25nIDE0LDE1JS4gVsOgIHThu7cgbOG7hyBzaW5oIHZpw6puIGdp4buvYSBuYW0gdsOgIG7hu68gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjYW8gZ+G6pXAgMSwxNDE1IGzhuqduIHbhu5tpIHThu7cgbOG7hyBzaW5oIHZpw6puIGdp4buvYSBuYW0gdsOgIG7hu68ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMuDQoNCiMjIyBCaeG6v24gZHJvcG91dCB2w6Agam9iDQoNCioqLSBC4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0KioNCg0KYGBge3J9DQpwdDIgPC0gdGFibGUoam9iLGRyb3BvdXQpDQphZGRtYXJnaW5zKHB0MikNCnBwdDIgPC0gcHJvcC50YWJsZShwdDIpDQphZGRtYXJnaW5zKHBwdDIpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0IHRo4buDIGhp4buHbiBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdGhlbyB0aOG7sWMgdHLhuqFuZyBsw6BtIHRow6ptIGPhu6dhIHNpbmggdmnDqm4uIA0KDQoqIFRyb25nIDQ2NyBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdGjDrCBjw7MgMzc5IHNpbmggdmnDqm4gY8OzIHZp4buHYyBsw6BtLCBjaGnhur9tIDM3LDklIHThu5VuZyBzaW5oIHZpw6puIHbDoCBjw7MgODggc2luaCB2acOqbiBraMO0bmcgY8OzIHZp4buHYyBsw6BtLCB0xrDGoW5nIOG7qW5nIDgsOCUuIA0KDQoqIFRyb25nIDUzMyBzaW5oIHZpw6puIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHRow6wgY8OzIDQzNiBzaW5oIHZpw6puIGtow7RuZyBjw7MgY8O0bmcgdmnhu4djIGzDoG0gdGjDqm0sIHTGsMahbmcg4bupbmcgNDMsNiUgdsOgIGPDsyA5NyBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbS4NCg0KYGBge3J9DQpkYXRhIHw+IGdncGxvdChhZXMoeCA9IGpvYiwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KICBnZW9tX2JhcihmaWxsID0gJ2Jyb3duJykgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9ICdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArDQogIGZhY2V0X2dyaWQoLiB+IGRhdGEkZHJvcG91dCkgKw0KICMgdGhlbWVfY2xhc3NpYygpICsNCiAgbGFicyh4ID0gJ1Ro4buxYyB0cuG6oW5nIGzDoG0gdGjDqm0gY+G7p2Egc2luaCB2acOqbicsIHkgPSAnU+G7kSBuZ8aw4budaScpDQpgYGANCmBgYA0KKENow7ogdGjDrWNoOiAwID0gQ8OzIHZp4buHYyBsw6BtIHRow6ptLCAxID0gS2jDtG5nIGPDsyB2aeG7h2MgbMOgbSB0aMOqbSkNCmBgYA0KDQpE4buxYSB2w6BvIMSR4buTIHRo4buLIHBow6JuIGxv4bqhaSBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdGhlbyB0aOG7sWMgdHLhuqFuZyBsw6BtIHRow6ptIGPhu6dhIHNpbmggdmnDqm4sIHRhIHRo4bqleSBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIMSRw6FuZyBr4buDIGdp4buvYSBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbSB2w6Aga2jDtG5nIGPDsyBjw7RuZyB2aeG7h2MgbMOgbSB0aMOqbSBraGkgY8OzIGThu7EgxJHhu4tuaCBi4buPIGjhu41jIHbDoCBraMO0bmcgY8OzIGThu7EgxJHhu4tuaCBi4buPIGjhu41jLg0KDQoqIFNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB2w6wgY8OzIHZp4buHYyBsw6BtIGfhuqVwIGtob+G6o25nIDQsMzEgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBraMO0bmcgY8OzIHZp4buHYyBsw6BtLiANCg0KKiBTaW5oIHZpw6puIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIG3DoCBraMO0bmcgY8OzIGPDtG5nIHZp4buHYyBsw6BtIHRow6ptIGNhbyBn4bqlcCA0LDQ5NSBs4bqnbiBzbyB24bubaSBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbSB0aMOqbS4gDQoNClF1YSBiaeG7g3UgxJHhu5MgY8OzIHRo4buDIHRo4bqleSDEkeG7kWkgduG7m2kgc2luaCB2acOqbiBjw7Mgdmnhu4djIGzDoG0gdGjDrCB04bu3IGzhu4cgc2luaCB2acOqbiBtdeG7kW4gYuG7jyBo4buNYyBjYW8gaMahbiB04bu3IGzhu4cgc2luaCB2acOqbiBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBuaMawbmcgxJHhu5FpIHbhu5tpIHNpbmggdmnDqm4ga2jDtG5nIGPDsyB2aeG7h2MgbMOgbSB0aMOsIHThu7cgbOG7hyBzaW5oIHZp4buHYyBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBs4bqhaSBuaGnhu4F1IGjGoW4gdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIGThu7EgxJHhu4tuaCBi4buPIGjhu41jLiBDaG8gdGjhuqV5IHNpbmggdmnDqm4gY8OzIHZp4buHYyBsw6BtIHRoxrDhu51uZyBjw7Mgw70gxJHhu4tuaCBtdeG7kW4gYuG7jyBo4buNYyBuaGnhu4F1Lg0KDQoqKi0gUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpL4bq/dCBxdeG6oyBjaG8gdGjhuqV5IHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB2w6wgY8OzIHZp4buHYyBsw6BtIGNhbyBn4bqlcCA0LDc0MTEgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBraMO0bmcgY8OzIGPDtG5nIHZp4buHYyBsw6BtIHRow6ptLg0KDQpgYGB7cn0NCmVwaXRhYihwdDIsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAiYiIpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiB0YSB0aOG6pXkgdOG7tyBs4buHIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChyaXNrIHJhdGlvKSBsw6AgNCw3NDExLCB04bupYyBsw6Agc2luaCB2acOqbiBjw7Mgdmnhu4djIGzDoG0gdGjGsOG7nW5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgbmhp4buBdSBn4bqlcCA0LDc0MTEgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBraMO0bmcgY8OzIHZp4buHYyBsw6BtLiBW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCB0YSBjw7MgdGjhu4MgdGluIHLhurFuZyBzYXUgMSBuxINtLCBz4buRIHNpbmggdmnDqm4gY8OzIHZp4buHYyBsw6BtIGPDsyBuZ3V5IGPGoSBi4buPIGjhu41jIGNhbyBn4bqlcCB04burIDMsODk3NSDEkeG6v24gNSw3NjczIGzhuqduIHNvIHbhu5tpIHNpbmggdmnDqm4ga2jDtG5nIGPDsyB2aeG7h2MgbMOgbS4NCg0KKiotIFThu7cgbOG7hyBjaMOqbmggbOG7h2NoKioNCg0KYGBge3J9DQplcGl0YWIocHQyLCBtZXRob2QgPSAnb2Rkc3JhdGlvJykNCmBgYA0KDQpUaGVvIGvhur90IHF14bqjIHRyw6puIHRhIHRo4bqleSB04bu3IGzhu4cgY2jDqm5oIChvZGQgcmF0aW8pIGzDoCAxOSwzNTg1LCBjaG8gdGjhuqV5IHNpbmggdmnDqm4gY8OzIHZp4buHYyBsw6BtIGPDsyBraOG6oyBuxINuZyBi4buPIGjhu41jIGNhbyBn4bqlcCAxOSwzNTg1IGzhuqduIHNvIHbhu5tpIHNpbmggdmnDqm4ga2jDtG5nIGPDsyBsw6BtIHRow6ptLiBOZ2/DoGkgcmEsIGPDsm4gY2hvIHRo4bqleSBy4bqxbmcgdOG7tyBs4buHIGdp4buvYSBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbSB2w6Aga2jDtG5nIGPDsyB2aeG7h2MgbMOgbSB0aMaw4budbmcgY8OzIGto4bqjIG7Eg25nIG114buRbiBi4buPIGjhu41jIGNhbyBn4bqlcCAxOSwzNTg1IGzhuqduIHNvIHbhu5tpIHThu7cgbOG7hyBnaeG7r2Egc2luaCB2acOqbiBjw7Mgdmnhu4djIGzDoG0gdsOgIGtow7RuZyBjw7Mgdmnhu4djIGzDoG0gdGjGsOG7nW5nIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLg0KDQojIyMgQmnhur9uIGRyb3BvdXQgdsOgIGZpbmFuY2UNCg0KKiotIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQqKg0KDQpgYGB7cn0NCnB0MyA8LSB0YWJsZShmaW5hbmNlLGRyb3BvdXQpDQphZGRtYXJnaW5zKHB0MykNCnBwdDMgPC0gcHJvcC50YWJsZShwdDMpDQphZGRtYXJnaW5zKHBwdDMpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc3XhuqV0IHRo4buDIGhp4buHbiBz4buRIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aGVvIHTDrG5oIHRy4bqhbmcgdMOgaSBjaMOtbmggY+G7p2Egc2luaCB2acOqbi4gDQoNCiogVHJvbmcgNDY3IHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYywgY8OzIDE0MCBzaW5oIHZpw6puIGtow7Mga2jEg24gdMOgaSBjaMOtbmgsIGNoaeG6v20gMTQlIHThu5VuZyBzaW5oIHZpw6puIHbDoCAzMjcgc2luaCB2acOqbiBraMO0bmcga2jDsyBraMSDbiB0w6BpIGNow61uaCwgY2hp4bq/bSAzMiw3JSB04buVbmcgc2luaCB2acOqbi4gDQoNCiogVHJvbmcgNTMzIHNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMsIGPDsyA0MDUgc2luaCB2acOqbiBraMO0bmcga2jDsyBraMSDbiB24buBIHTDoGkgY2jDrW5oIHbDoCBjaGnhur9tIDQwLDUlIHRyw6puIDEwMDAgc2luaCB2acOqbiB2w6AgY8OzIDEyOCBzaW5oIHZpw6puIGPDsyBraMOzIGtoxINuIHTDoGkgY2jDrW5oLCB0xrDGoW5nIMSRxrDGoW5nIDEyLDglLg0KDQpgYGB7cn0NCmRhdGEgfD4gZ2dwbG90KGFlcyh4ID0gZmluYW5jZSwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KICBnZW9tX2JhcihmaWxsID0gJ2Jyb3duJykgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9ICdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArDQogIGZhY2V0X2dyaWQoLiB+IGRhdGEkZHJvcG91dCkgKw0KICMgdGhlbWVfY2xhc3NpYygpICsNCiAgbGFicyh4ID0gJ1TDoGkgY2jDrW5oIGPhu6dhIHNpbmggdmnDqm4nLCB5ID0gJ1Phu5EgbmfGsOG7nWknKQ0KYGBgDQpgYGANCihDaMO6IHRow61jaDogMCA9IEPDsyBraMOzIGtoxINuIHTDoGkgY2jDrW5oOyAxID0gS2jDtG5nIGPDsyBraMOzIGtoxINuIHTDoGkgY2jDrW5oKQ0KYGBgDQoNCkThu7FhIHbDoG8gxJHhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aGVvIHTDoGkgY2jDrW5oIGPhu6dhIHNpbmggdmnDqm4sIHRhIHRo4bqleSBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MgZ2nhu69hIHNpbmggdmnDqm4gY8OzIGtow7Mga2jEg24gdMOgaSBjaMOtbmggdsOgIHNpbmggdmnDqm4ga2jDtG5nIGfhurdwIGtow7Mga2jEg24gdMOgaSBjaMOtbmgga2hpIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdsOgIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLiANCg0KKiBTaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY8OzIMSR4bunIHTDoGkgY2jDrW5oIGNhbyBoxqFuIHNpbmggdmnDqm4gZ+G6t3Aga2jDsyBraMSDbiB0w6BpIGNow61uaCBn4bqlcCAyLDMzNiBs4bqnbi4gDQoNCiogU2luaCB2acOqbiDEkeG7pyB0w6BpIGNow61uaCBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjxaluZyBjYW8gZ+G6pXAga2hv4bqjbmcgMywxNjQgbOG6p24gc28gduG7m2kgc+G7kSBzaW5oIHZpw6puIGfhurdwIGtow7Mga2jEg24gduG7gSB0w6BpIGNow61uaC4NCg0KUXVhIGJp4buDdSDEkeG7kyBjw7MgdGjhu4MgdGjhuqV5IMSR4buRaSB24bubaSBzaW5oIHZpw6puIGPDsyBraMOzIGtoxINuIHTDoGkgY2jDrW5oIHRow6wgdOG7tyBs4buHIHNpbmggdmnDqm4gYuG7jyBo4buNYyBjYW8gaMahbiBzbyB24bubaSB04bu3IGzhu4cgc2luaCB2acOqbiBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjw7JuIMSR4buRaSB24bubaSBzaW5oIHZpw6puIGtow7RuZyBn4bq3cCBraMOzIGtoxINuIHRow6wgdOG7tyBs4buHIHNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY2FvIGjGoW4gdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIGThu7EgxJHhu4tuaCBi4buPIGjhu41jLiBDaG8gdGjhuqV5IHNpbmggdmnDqm4gY8OzIGtow7Mga2jEg24gdMOgaSBjaMOtbmggdGjGsOG7nW5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgaMahbi4NCg0KKiotIFLhu6dpIHJvIHTGsMahbmcgxJHhu5FpKioNCg0KYGBge3J9DQplcGl0YWIocHQzLCBtZXRob2QgPSAncmlza3JhdGlvJyxyZXYgPSAiYiIpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiB0YSB0aOG6pXkgdOG7tyBs4buHIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChyaXNrIHJhdGlvKSBsw6AgMSwxNjkzLCB04bupYyBsw6Agc2luaCB2acOqbiBn4bq3cCBraMOzIGtoxINuIHTDoGkgY2jDrW5oIHRoxrDhu51uZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGNhbyBoxqFuIHNpbmggdmnDqm4ga2jDtG5nIGfhurdwIGtow7Mga2jEg24gdMOgaSBjaMOtbmgga2hv4bqjbmcgMTYsOTMlLiBW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCB0YSBjw7MgdGjhu4MgdGluIHLhurFuZyBzYXUgMSBuxINtLCBz4buRIHNpbmggdmnDqm4gY8OzIGtow7Mga2jEg24gdMOgaSBjaMOtbmggY8OzIG5ndXkgY8ahIGLhu48gaOG7jWMgY2FvIGfhuqVwIHThu6sgMSwwMTY2IMSR4bq/biAxLDM0NTEgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBraMO0bmcgZ+G6t3Aga2jDsyBraMSDbiB24buBIHTDoGkgY2jDrW5oLg0KDQoqKi0gVOG7tyBs4buHIGNow6puaCBs4buHY2gqKg0KDQpgYGB7cn0NCmVwaXRhYihwdDMsIG1ldGhvZCA9ICdvZGRzcmF0aW8nKQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu7cgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDEsMzU0NiwgdOG7qWMgbMOgIHNpbmggdmnDqm4gZ+G6t3Aga2jDsyBraMSDbiB0w6BpIGNow61uaCBjw7Mga2jhuqMgbsSDbmcgYuG7jyBo4buNYyBjYW8gZ+G6pXAgMzUsNDYlIHNpbmggdmnDqm4ga2jDtG5nIGPDsyBraMOzIGtoxINuIHTDoGkgY2jDrW5oLiBOZ2/DoGkgcmEsIHThu7cgbOG7hyBnaeG7r2Egc2luaCB2acOqbiBjw7Mga2jDsyBraMSDbiB0w6BpIGNow61uaCB2w6Aga2jDtG5nIGPDsyBraMOzIGtoxINuIHRoxrDhu51uZyBjw7Mga2jhuqMgbsSDbmcgbXXhu5FuIGLhu48gaOG7jWMgY2FvIGjGoW4gc28gduG7m2kgdOG7tyBs4buHIGdp4buvYSBzaW5oIHZpw6puIGPDsyBraMOzIGtoxINuIHTDoGkgY2jDrW5oIHbDoCBraMO0bmcgY8OzIGtow7Mga2jEg24gdGjGsOG7nW5nIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGtob+G6o25nIDM1LDQ2JS4NCg0KIyMjIEJp4bq/biBkcm9wb3V0IHbDoCBmYW1pbHlzdXBwb3J0DQoNCioqLSBC4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0KioNCg0KYGBge3J9DQpwdDQgPC0gdGFibGUoZmFtaWx5c3VwcG9ydCxkcm9wb3V0KQ0KYWRkbWFyZ2lucyhwdDQpDQpwcHQ0IDwtIHByb3AudGFibGUocHQ0KQ0KYWRkbWFyZ2lucyhwcHQ0KQ0KYGBgDQoNClThu6sgYuG6o25nIHThuqduIHPhu5EgdsOgIHThuqduIHN14bqldCB0aOG7gyBoaeG7h24gc+G7kSBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdGhlbyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCDEkWkgaOG7jWMuIA0KDQoqIFRyb25nIDQ2NyBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMsIGPDsyAzMzMgc2luaCB2acOqbiBjw7Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmggxJFpIGjhu41jLCBjaGnhur9tIDMzLDMlIHbDoCAxMzQgc2luaCB2acOqbiBraMO0bmcgY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIMSRaSBo4buNY2MsIGNoaeG6v20gMTMsNCUuIA0KDQoqIFRyb25nIDUzMyBzaW5oIHZpw6puIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLCBjw7MgMzY1IHNpbmggdmnDqm4gY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIMSRaSBo4buNYyB2w6AgY2hp4bq/bSAzNiw1JSB2w6AgMTY4IHNpbmggdmnDqm4ga2jDtG5nIGPDsyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCwgdMawxqFuZyDEkcawxqFuZyAxNiw4JS4NCg0KYGBge3J9DQpkYXRhIHw+IGdncGxvdChhZXMoeCA9IGZhbWlseXN1cHBvcnQsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCiAgZ2VvbV9iYXIoZmlsbCA9ICdicm93bicpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSAnY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgKw0KICBmYWNldF9ncmlkKC4gfiBkYXRhJGRyb3BvdXQpICsNCiAjIHRoZW1lX2NsYXNzaWMoKSArDQogIGxhYnMoeCA9ICdT4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCBjaG8gxJFpIGjhu41jICcsIHkgPSAnU+G7kSBuZ8aw4budaScpDQpgYGANCmBgYA0KKENow7ogdGjDrWNoOiAwID0gS2jDtG5nIGPDsyBz4buxIOG7p25nIGjhu5kgZ2lhIMSRw6xuaCDEkWkgaOG7jWMsIDEgPSBDw7Mgc+G7sSDhu6duZyBo4buZIGdpYSDEkcOsbmggxJFpIGjhu41jKQ0KYGBgDQoNCkThu7FhIHbDoG8gxJHhu5MgdGjhu4sgcGjDom4gbG/huqFpIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aGVvIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIMSRaSBo4buNYywgdGEgdGjhuqV5IGPDsyBz4buxIGNow6pjaCBs4buHY2ggxJHDoW5nIGvhu4MgZ2nhu69hIHNpbmggdmnDqm4gY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIMSRaSBo4buNYyB2w6Aga2jDtG5nIGPDsyBz4buxIOG7p25nIGjhu5kgZ2lhIMSRw6xuaCBraGkgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB2w6Aga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMuIA0KDQoqIFNpbmggdmnDqm4gY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIMSRaSBo4buNYyBjw7MgdOG7tyBs4buHIG114buRbiBi4buPIGjhu41jIGNhbyBoxqFuIHNpbmggdmnDqm4ga2jDtG5nIGPDsyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCBn4bqlcCBraG/huqNuZyAyLDQ4NSBs4bqnbi4gDQoNCiogU2luaCB2acOqbiBjw7Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmggxJFpIGjhu41jIGPDsyB04bu3IGzhu4cga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY8WpbmcgY2FvIGfhuqVwIDMyLDE3MyBs4bqnbiBzbyB24bubaSBzaW5oIHZpw6puIGtow7RuZyBjw7Mgc+G7sSDhu6duZyBo4buZIGPhu6dhIGdpYSDEkcOsbmguDQoNClF1YSBiaeG7g3UgxJHhu5MgY8OzIHRo4buDIHRo4bqleSDEkeG7kWkgduG7m2kgc2luaCB2acOqbiBraMO0bmcgY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIHbDoCBzaW5oIHZpw6puIGPDsyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCB0aMOsIHThu7cgbOG7hyBzaW5oIHZpw6puIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIMSR4buBdSBjYW8gaMahbiB04bu3IGzhu4cgc2luaCB2acOqbiBtdeG7kW4gYuG7jyBo4buNYywgQ2hvIHRo4bqleSBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMga2jDtG5nIHBo4bqjaSB2w6wgbeG7qWMg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oLg0KDQoqKi0gUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpgYGB7cn0NCmVwaXRhYihwdDQsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSJiIikNCmBgYA0KDQpUaGVvIGvhur90IHF14bqjIHRyw6puIHRhIHRo4bqleSB04bu3IGzhu4cgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKHJpc2sgcmF0aW8pIGzDoCAwLDkzMDA2LCB04bupYyBsw6Agc2luaCB2acOqbiBraMO0bmcgY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIMSRaSBo4buNYyB0aMaw4budbmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aOG6pXAgaMahbiBzaW5oIHZpw6puIGPDsyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCDEkWkgaOG7jWMga2hv4bqjbmcgNiw5OTQlLiBW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCB0YSBjw7MgdGjhu4MgdGluIHLhurFuZyBzYXUgMSBuxINtLCBz4buRIHNpbmggdmnDqm4ga2jDtG5nIGPDsyBz4buxIOG7p25nIGjhu5kgZ2lhIMSRw6xuaCBjw7Mgbmd1eSBjxqEgYuG7jyBo4buNYyB0aOG6pXAgZ+G6pXAgdOG7qyAwLDgwMTkgxJHhur9uIDEsMDc4NyBs4bqnbiBzbyB24bubaSBzaW5oIHZpw6puIMSRxrDhu6NjIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oLg0KDQoqKi0gVOG7tyBs4buHIGNow6puaCBs4buHY2gqKg0KDQpgYGB7cn0NCmVwaXRhYihwdDQsIG1ldGhvZCA9ICdvZGRzcmF0aW8nKQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu7cgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDAsODc0MjcsIHThu6ljIGzDoCBzaW5oIHZpw6puIGtow7RuZyDEkcaw4bujYyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCDEkWkgaOG7jWMgY8OzIGto4bqjIG7Eg25nIG114buRbiBi4buPIGjhu41jIHRo4bqlcCBoxqFuIHNpbmggdmnDqm4gY8OzIHPhu7Eg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIGtob+G6o25nIDEyLDU3MyUuIE5nb8OgaSByYSwgdOG7tyBs4buHIGdp4buvYSBzaW5oIHZpw6puIGtow7RuZyBjw7Mgc+G7sSDhu6duZyBo4buZIHbDoCDEkcaw4bujYyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCB0aMaw4budbmcgY8OzIGto4bqjIG7Eg25nIG114buRbiBi4buPIGjhu41jIGLhurFuZyAwLDg3NDMgdOG7tyBs4buHIGdp4buvYSBzaW5oIHZpw6puIGtow7RuZyBjw7Mgc+G7sSDhu6duZyBo4buZIHbDoCDEkcaw4bujYyBz4buxIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCDEkWkgaOG7jWMgdGjGsOG7nW5nIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLg0KDQojIyMgQmnhur9uIGRyb3BvdXQgdsOgIHRpbWUNCg0KKiotIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQqKg0KDQpgYGB7cn0NCnB0NSA8LSB0YWJsZSh0aW1lLGRyb3BvdXQpDQphZGRtYXJnaW5zKHB0NSkNCnBwdDUgPC0gcHJvcC50YWJsZShwdDUpDQphZGRtYXJnaW5zKHBwdDUpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0IHRo4buDIGhp4buHbiBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdGhlbyB0aOG7nWkgZ2lhbiBzaW5oIHZpw6puIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMuIA0KDQoqIFRyb25nIDQ2NyBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMsY8OzIDI1NyBzaW5oIHZpw6puIGPDsyB0aOG7nWkgZ2lhbiBo4buNYywgY2hp4bq/bSAyNSw3JSB2w6AgY8OzIDIxMCBzaW5oIHZpw6puIMSR4bunIHRo4budaSBnaWFuLCB0xrDGoW5nIMSRxrDGoW5nIDIxJS4gDQoNCiogVHJvbmcgNTMzIHNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMsIGPDsyA1MTMgc2luaCB2acOqbiBraMO0bmcgY8OzIHRo4budaSBnaWFuIGjhu41jLCB0xrDGoW5nIOG7qW5nIDUxLDMlIHbDoCBjw7MgMjAgc2luaCB2acOqbiBjw7MgdGjhu51pIGdpYW4gaOG7jWMsIGNoaeG6v20gMiUuDQoNCioqLSDEkOG7kyB0aOG7iyoqDQoNCmBgYHtyfQ0KZGF0YSB8PiBnZ3Bsb3QoYWVzKHggPSB0aW1lLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArIGdlb21fYmFyKGZpbGwgPSAnYnJvd24nKSArIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0gJ2NvdW50JywgY29sb3IgPSAnYmxhY2snLCB2anVzdCA9IC0gLjUpICtmYWNldF9ncmlkKC4gfiBkYXRhJGRyb3BvdXQpICsNCiAjIHRoZW1lX2NsYXNzaWMoKSArDQogIGxhYnMoeCA9ICdUaOG7nWkgZ2lhbiBzaW5oIHZpw6puIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMnLCB5ID0gJ1Phu5EgbmfGsOG7nWknKQ0KYGBgDQpgYGANCihDaMO6IHRow61jaDogMCA9IFRoaeG6v3UgdGjhu51pIGdpYW4gaOG7jWMsIDEgPSBDw7MgdGjhu51pIGdpYW4gaOG7jWMpDQpgYGANCg0KROG7sWEgdsOgbyDEkeG7kyB0aOG7iyBwaMOibiBsb+G6oWkgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHRoZW8gdMOsbmggaMOsbmggdGjhu51pIGdpYW4gc2luaCB2acOqbiBkw6BuaCBjaG8gdmnhu4djIGjhu41jLCB0YSB0aOG6pXkgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBzaW5oIHZpw6puIGPDsyB0aOG7nWkgZ2lhbiBo4buNYyB2w6Agc2luaCB2acOqbiBjw7MgdGhp4bq/dSB0aOG7nWkgZ2lhbiBkw6BuaCDEkeG7gyBo4buNYyBraGkgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB2w6Aga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMuIA0KDQoqIFNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB2w6AgY8OzIHRo4budaSBnaWFuIGjhu41jIHjhuqVwIHjhu4kgduG7m2kgdOG7tyBs4buHIHNpbmggdmnDqm4ga2jDtG5nIGPDsyB0aOG7nWkgZ2lhbiBo4buNYyAoZ+G6pXAgMSwyMiBs4bqnbikuIA0KDQoqIFNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMga2jDtG5nIGPDsyB0aOG7nWkgZ2lhbiBkw6BuaCBjaG8gdmnhu4djIGjhu41jIGNhbyBn4bqlcCAyNSw2NSBs4bqnbiBzbyB24bubaSBzaW5oIHZpw6puIGPDsyB0aOG7nWkgZ2lhbiBo4buNYy4NCg0KUXVhIGJp4buDdSDEkeG7kyBjaG8gdGjhu4MgdGjhuqV5IMSR4buRaSB24bubaSBzaW5oIHZpw6puIHRoaeG6v3UgdGjhu51pIGdpYW4gaOG7jWMgdGjDrCB04bu3IGzhu4cgc2luaCB2acOqbiBtdeG7kW4gYuG7jyBo4buNYyBuaGnhu4F1IGjGoW4gc28gduG7m2kgdOG7tyBs4buHIHNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY8OybiDEkeG7kWkgduG7m2kgc2luaCB2acOqbiBjw7MgdGjhu51pIHRo4budaSBnaWFuIHRow6wgdOG7tyBs4buHIHNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgbOG6oWkgbmhp4buBdSBoxqFuIHThu7cgbOG7hyBzaW5oIHZpw6puIG114buRbiBi4buPIGjhu41jLiBDaG8gdGjhuqV5IHNpbmggdmnDqm4gY8OzIGThu7EgxJHhu4tuaCBi4buPIGjhu41jIGRvIHRoaeG6v3UgdGjhu51pIGdpYW4uDQoNCioqLSBS4bunaSBybyB0xrDGoW5nIMSR4buRaSoqDQoNCmBgYHtyfQ0KZXBpdGFiKHB0NSwgbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ImIiKQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu7cgbOG7hyBy4bunaSBybyB0xrDGoW5nIMSR4buRaSAocmlzayByYXRpbykgbMOgIDMsMTk0MywgdOG7qWMgbMOgIHNpbmggdmnDqm4ga2jDtG5nIMSR4bunIHRo4budaSBnaWFuIGjhu41jIHRoxrDhu51uZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGNhbyBn4bqlcCAzLDE5NDMgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBjw7MgdGjhu51pIGdpYW4gZMOgbmggY2hvIHZp4buHYyBo4buNYy4gVuG7m2kgxJHhu5kgdGluIGPhuq15IDk1JSwgdGEgY8OzIHRo4buDIHRpbiBy4bqxbmcgc2F1IDEgbsSDbSwgc+G7kSBzaW5oIHZpw6puIHRoaeG6v3UgdGjhu51pIGdpYW4gaOG7jWMgY8OzIG5ndXkgY8ahIGLhu48gaOG7jWMgY2FvIGfhuqVwIHThu6sgMiw4MzcxIMSR4bq/biAzLDU5NjQgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiBjw7MgdGjhu51pIGdpYW4gaOG7jWMuDQoNCioqLSBU4bu3IGzhu4cgY2jDqm5oIGzhu4djaCoqDQoNCmBgYHtyfQ0KZXBpdGFiKHB0NSwgbWV0aG9kID0gJ29kZHNyYXRpbycpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiB0YSB0aOG6pXkgdOG7tyBs4buHIGNow6puaCBs4buHY2ggKG9kZCByYXRpbykgbMOgIDMxLDM5MDcgLCB04bupYyBsw6Agc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIGPDsyBraOG6oyBuxINuZyBi4buPIGjhu41jIGNhbyBn4bqlcCAzMSwzOTA3IGzhuqduIHNpbmggdmnDqm4gY8OzIHRo4budaSBnaWFuIGjhu41jLiBDaG8gdGjhuqV5IHThu7cgbOG7hyBnaeG7r2Egc2luaCB2acOqbiBraMO0bmcgxJHhu6cgdGjhu51pIGdpYW4gdsOgIGPDsyB0aOG7nWkgZ2lhbiBo4buNYyB0aMaw4budbmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjYW8gaMahbiAzMSwzOTA3IGzhuqduIHNvIHbhu5tpIHThu7cgbOG7hyBnaeG7r2Egc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIHbDoCBjw7MgdGjhu51pIGdpYW4gaOG7jWMgdGjGsOG7nW5nIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jLg0KDQojIyMgQmnhur9uIGRyb3BvdXQgdsOgIHN0dWR5cHJvZ3JhbQ0KDQoqKi0gQuG6o25nIHThuqduIHPhu5EgdsOgIHThuqduIHN14bqldCoqDQoNCmBgYHtyfQ0KcHQ2IDwtIHRhYmxlKHN0dWR5cHJvZ3JhbSxkcm9wb3V0KQ0KYWRkbWFyZ2lucyhwdDYpDQpwcHQ2IDwtIHByb3AudGFibGUocHQ2KQ0KYWRkbWFyZ2lucyhwcHQ2KQ0KYGBgDQoNClThu6sgYuG6o25nIHThuqduIHPhu5EgdsOgIHThuqduIHN14bqldCB0aOG7gyBoaeG7h24gc+G7kSBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdGhlbyBjaMawxqFuZyB0csOsbmggaOG7jWMuDQoNCiogVHJvbmcgNDY3IHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYywgY8OzIDI4NCBzaW5oIHZpw6puIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcCB24bubaSBtw6xuaCwgdMawxqFuZyDhu6luZyAyOCw0JSB2w6AgY8OzIDE4MyBzaW5oIHZpw6puIGPhuqNtIHRo4bqleSBjaMawxqFuZyB0csOsbmgga2jDsywgY2hp4bq/bSAxOCwzJS4gDQoNCiogVHJvbmcgNTMzIHNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMsIGPDsyAzNTMgc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIHBow7kgaOG7o3AgduG7m2kgbcOsbmgsIGNoaeG6v20gNDAsMSUgdsOgIGPDsyAxODAgc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIG7hurduZywgdMawxqFuZyDEkcawxqFuZyAxOCUuIA0KDQoqKi0gxJDhu5MgdGjhu4sqKg0KDQpgYGB7cn0NCmRhdGEgfD4gZ2dwbG90KGFlcyh4ID0gc3R1ZHlwcm9ncmFtLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArIGdlb21fYmFyKGZpbGwgPSAnYnJvd24nKSArIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0gJ2NvdW50JywgY29sb3IgPSAnYmxhY2snLCB2anVzdCA9IC0gLjUpICtmYWNldF9ncmlkKC4gfiBkYXRhJGRyb3BvdXQpICsNCiAjIHRoZW1lX2NsYXNzaWMoKSArDQogIGxhYnMoeCA9ICdN4bupYyDEkeG7mSBjaMawxqFuZyB0csOsbmggaOG7jWMnLCB5ID0gJ1Phu5EgbmfGsOG7nWknKQ0KYGBgDQpgYGANCihDaMO6IHRow61jaDogMCA9IENoxrDGoW5nIHRyw6xuaCBu4bq3bmcsIDEgPSBDaMawxqFuZyB0csOsbmggcGjDuSBo4bujcCB24bubaSBzaW5oIHZpw6puKQ0KYGBgDQoNCkThu7FhIHbDoG8gxJHhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aGVvIG3hu6ljIMSR4buZIGNoxrDGoW5nIHRyw6xuaCBo4buNYywgdGEgdGjhuqV5IGPDsyBz4buxIGtow6FjIGJp4buHdCDEkcOhbmcga+G7gyBnaeG7r2Egc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIGtow7MgdsOgIHNpbmggdmnDqm4gY+G6o20gdGjhuqV5IGNoxrDGoW5nIHRyw6xuaCBo4buNYyBwaMO5IGjhu6NwIHbhu5tpIG3DrG5oIGtoaSBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHbDoCBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYy4gDQoNCiogU2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGPhuqNtIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcCB24bubaSBtw6xuaCBjYW8gaMahbiBzaW5oIHZpw6puIGPhuqNtIHRo4bqleSBjaMawxqFuZyB0csOsbmggbuG6t25nIGfhuqVwIDEsNTUgbOG6p24uIA0KDQoqIFNpbmggdmnDqm4ga2jDtG5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgZG8gY+G6o20gdGjhuqV5IGNoxrDGoW5nIHRyw6xuaCBo4buNYyBwaMO5IGjhu6NwIGPFqW5nIGNhbyBn4bqlcCBraG/huqNuZyAxLDk2IGzhuqduIHNvIHbhu5tpIHPhu5Egc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIG7hurduZy4NCg0KUXVhIGJp4buDdSDEkeG7kyBjw7MgdGjhu4MgdGjhuqV5IMSR4buRaSB24bubaSBzaW5oIHZpw6puIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgbuG6t25nIHRow6wgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjYW8gaMahbiB04bu3IGzhu4cgc2luaCB2acOqbiBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjw7JuIMSR4buRaSB24bubaSBzaW5oIHZpw6puIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcCB24bubaSBtw6xuaCB0aMOsIGPDsyB04bu3IGzhu4cgc2luaCB2acOqbiBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBs4bqhaSBuaGnhu4F1IGjGoW4gdOG7tyBs4buHIHNpbmggdmnDqm4gbXXhu5FuIGLhu48gaOG7jWMuIENobyB0aOG6pXkgc2luaCB2acOqbiBjw7MgZOG7sSDEkeG7i25oIGLhu48gaOG7jWMgdsOsIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgbuG6t25nLg0KDQoqKi0gUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKg0KDQpgYGB7cn0NCmVwaXRhYihwdDYsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAiYiIpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiB0YSB0aOG6pXkgdOG7tyBs4buHIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChyaXNrIHJhdGlvKSBsw6AgMSwxMzA3LCB04bupYyBsw6Agc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIG7hurduZyB0aMaw4budbmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjYW8gaMahbiBzbyB24bubaSBzaW5oIHZpw6puIGPhuqNtIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcCBraG/huqNuZyAxMywwNyUuIFbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUsIHRhIGPDsyB0aOG7gyB0aW4gcuG6sW5nIHNhdSAxIG7Eg20sIHPhu5Egc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGtow7MgY8OzIG5ndXkgY8ahIGLhu48gaOG7jWMgY2FvIGfhuqVwIHThu6sgMCw5ODkxIMSR4bq/biAxLDI5MjYgbOG6p24gc28gduG7m2kgc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIHBow7kgaOG7o3AgduG7m2kgYuG6o24gdGjDom4uDQoNCioqLSBU4bu3IGzhu4cgY2jDqm5oIGzhu4djaCoqDQoNCmBgYHtyfQ0KZXBpdGFiKHB0NiwgbWV0aG9kID0gJ29kZHNyYXRpbycpDQpgYGANCg0KVOG7qyBr4bq/dCBxdeG6oyB0csOqbiwgdGEgY8OzIHRo4buDIHRo4bqleSB04bu3IGzhu4cgY2jDqm5oIGzhu4djaCAob2RkIHJhdGlvKSBsw6AgMSwyNjM3LCB04bupYyBsw6Agc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIG7hurduZyBjw7Mga2jhuqMgbsSDbmcgbXXhu5FuIGLhu48gaOG7jWMgY2FvIGjGoW4gc28gduG7m2kgc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIHBow7kgaOG7o3Aga2hv4bqjbmcgMjYsMzclLiBOZ2/DoGkgcmEsIHThu7cgbOG7hyBnaeG7r2Egc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGtow7MgdsOgIGNoxrDGoW5nIHRyw6xuaCBwaMO5IGjhu6NwIGPDsyBraOG6oyBuxINuZyBi4buPIGjhu41jIGNhbyBoxqFuIGfhuqVwIDEsMjYzNyBs4bqnbiB04bu3IGzhu4cgc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGtow7MgdsOgIGNoxrDGoW5nIHRyw6xuaCBwaMO5IGjhu6NwIHbhu5tpIGLhuqNuIHRow6JuLg0KDQojIyBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuIGNobyBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oDQoNCiMjIyBLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAgY2hvIDIgYmnhur9uIMSR4buLbmggdMOtbmgNCg0KKiotIEJp4bq/biBkcm9wb3V0IHbDoCBnZW5kZXIqKg0KDQpW4bubaSBj4bq3cCBnaeG6oyB0aHV54bq/dCAtIMSR4buRaSB0aHV54bq/dDoNCg0KJEhfMCQ6IEJp4bq/biBkcm9wb3V0IHbDoCBnZW5kZXIgxJHhu5ljIGzhuq1wDQoNCiRIXzAkOiBCaeG6v24gZHJvcG91dCB2w6AgZ2VuZGVyIGPDsyBsacOqbiBxdWFuIHbhu5tpIG5oYXUNCg0KYGBge3J9DQpjaGlzcS50ZXN0KHB0MSkNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IFBfdmFsdWUgPiAwLjA1IG7Dqm4gY2hvIHRo4bqleSBjaMawYSDEkeG7pyB0aMO0bmcgdGluIMSR4buDIGvhur90IGx14bqtbiBy4bqxbmcgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY8OzIGxpw6puIHF1YW4gxJHhur9uIGdp4bubaSB0w61uaCBj4bunYSBzaW5oIHZpw6puLg0KDQoqKi0gQmnhur9uIGRyb3BvdXQgdsOgIGpvYioqDQoNClbhu5tpIGPhurdwIGdp4bqjIHRodXnhur90IC0gxJHhu5FpIHRodXnhur90Og0KDQokSF8wJDogQmnhur9uIGRyb3BvdXQgdsOgIGpvYiDEkeG7mWMgbOG6rXANCg0KJEhfMCQ6IEJp4bq/biBkcm9wb3V0IHbDoCBqb2IgY8OzIGxpw6puIHF1YW4gduG7m2kgbmhhdQ0KDQpgYGB7cn0NCmNoaXNxLnRlc3QocHQyKQ0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgUF92YWx1ZSA8IDAuMDUgbsOqbiB0YSBjw7MgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLCBjaG8gdGjhuqV5IGvhur90IGx14bqtbiBy4bqxbmcgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGPDsyBsacOqbiBxdWFuIMSR4bq/biB0aOG7sWMgdHLhuqFuZyBsw6BtIHRow6ptIGPhu6dhIHNpbmggdmnDqm4gduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLg0KDQoqKi0gQmnhur9uIGRyb3BvdXQgdsOgIGZpbmFuY2UqKg0KDQpW4bubaSBj4bq3cCBnaeG6oyB0aHV54bq/dCAtIMSR4buRaSB0aHV54bq/dDoNCg0KJEhfMCQ6IEJp4bq/biBkcm9wb3V0IHbDoCBmaW5hbmNlIMSR4buZYyBs4bqtcA0KDQokSF8wJDogQmnhur9uIGRyb3BvdXQgdsOgIGZpbmFuY2UgY8OzIGxpw6puIHF1YW4gduG7m2kgbmhhdQ0KDQpgYGB7cn0NCmNoaXNxLnRlc3QocHQzKQ0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgUF92YWx1ZSA8IDAuMDUgbsOqbiB0YSDEkeG7pyBjxqEgc+G7nyDEkeG7gyBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQsIGNobyB0aOG6pXkga+G6v3QgbHXhuq1uIHLhurFuZyBz4buRIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjw7MgbGnDqm4gcXVhbiDEkeG6v24gdMOsbmggaMOsbmggdMOgaSBjaMOtbmggY+G7p2Egc2luaCB2acOqbiB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUuDQoNCioqLSBCaeG6v24gZHJvcG91dCB2w6AgZmFtaWx5c3VwcG9ydCoqDQoNClbhu5tpIGPhurdwIGdp4bqjIHRodXnhur90IC0gxJHhu5FpIHRodXnhur90Og0KDQokSF8wJDogQmnhur9uIGRyb3BvdXQgdsOgIGZhbWlseXN1cHBvcnQgxJHhu5ljIGzhuq1wDQoNCiRIXzAkOiBCaeG6v24gZHJvcG91dCB2w6AgZmFtaWx5c3VwcG9ydCBjw7MgbGnDqm4gcXVhbiB24bubaSBuaGF1DQoNCmBgYHtyfQ0KY2hpc3EudGVzdChwdDQpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBQX3ZhbHVlID4gMC4wNSBuw6puIHRhIGtow7RuZyBjw7MgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLCBjaG8gdGjhuqV5IGNoxrBhIMSR4bunIHRow7RuZyB0aW4gxJHhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyBz4buRIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjw7MgbGnDqm4gcXVhbiDEkeG6v24gbeG7qWMgxJHhu5kg4bunbmcgaOG7mSBj4bunYSBnaWEgxJHDrG5oIMSRaSBo4buNYy4NCg0KKiotIEJp4bq/biBkcm9wb3V0IHbDoCB0aW1lKioNCg0KVuG7m2kgY+G6t3AgZ2nhuqMgdGh1eeG6v3QgLSDEkeG7kWkgdGh1eeG6v3Q6DQoNCiRIXzAkOiBCaeG6v24gZHJvcG91dCB2w6AgdGltZSDEkeG7mWMgbOG6rXANCg0KJEhfMCQ6IEJp4bq/biBkcm9wb3V0IHbDoCB0aW1lIGPDsyBsacOqbiBxdWFuIHbhu5tpIG5oYXUNCg0KYGBge3J9DQpjaGlzcS50ZXN0KHB0NSkNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IFBfdmFsdWUgPCAwLjA1IG7Dqm4gdGEgY8OzIMSR4bunIGPGoSBz4bufIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJCwgY2hvIGvhur90IGx14bqtbiBy4bqxbmcgc+G7kSBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY8OzIGxpw6puIHF1YW4gxJHhur9uIHRo4budaSBnaWFuIHNpbmggdmnDqm4gZMOgbmggY2hvIHZp4buHYyBo4buNYyB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUuDQoNCioqLSBCaeG6v24gZHJvcG91dCB2w6Agc3R1ZHlwcm9ncmFtKioNCg0KVuG7m2kgY+G6t3AgZ2nhuqMgdGh1eeG6v3QgLSDEkeG7kWkgdGh1eeG6v3Q6DQoNCiRIXzAkOiBCaeG6v24gZHJvcG91dCB2w6Agc3R1ZHlwcm9ncmFtIMSR4buZYyBs4bqtcA0KDQokSF8wJDogQmnhur9uIGRyb3BvdXQgdsOgIHN0dWR5cHJvZ3JhbSBjw7MgbGnDqm4gcXVhbiB24bubaSBuaGF1DQoNCmBgYHtyfQ0KY2hpc3EudGVzdChwdDYpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBQX3ZhbHVlID4gMC4wNSBtw6AgUF92YWx1ZSA8IDAuMSBuw6puIHRhIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJCwgY2hvIGvhur90IGx14bqtbiBy4bqxbmcgc+G7kSBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY8OzIGxpw6puIHF1YW4gxJHhur9uIGNoxrDGoW5nIHRyw6xuaCBo4buNYyBj4bunYSBzaW5oIHZpw6puIHbhu5tpIG3hu6ljIMO9IG5naMSpYSAxMCUuDQoNCiMjIyBLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHDQoNClNhdSBraGkga2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSBiaeG6v24gxJHhu5ljIGzhuq1wIHbDoCBiaeG6v24gcGjhu6UgdGh14buZYywgdGEgdGjhuqV5IHnhur91IHThu5EgZ2nhu5tpIHTDrW5oIHbDoCB54bq/dSB04buRIG3hu6ljIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCBraMO0bmcgcGjhu6UgdGh14buZYyB2w6BvIMO9IMSR4buLbmggYuG7jyBo4buNYyBj4bunYSBzaW5oIHZpw6puIG7Dqm4gdGEga2jDtG5nIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgZ2nhu69hIGhhaSB54bq/dSB04buRIHRoZW8gduG7m2kgw70gxJHhu4tuaCBi4buPIGjhu41jIGPhu6dhIHNpbmggdmnDqm4uDQoNCioqLSDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjw7MgcGjhuqNpIGzDoCA0Niw3JSBoYXkga2jDtG5nPyoqDQoNCsSQ4bq3dCBnaeG6oyB0aHV54bq/dDogJEhfMCQ6IHAgPSAwLDQ2Nw0KDQpgYGB7cn0NCnlkYmggPC0gZGF0YVt3aGljaChkYXRhJGRyb3BvdXQgPT0gMCksXQ0Ka3lkYmggPC0gZGF0YVt3aGljaChkYXRhJGRyb3BvdXQgPT0gMSksXQ0KcHJvcC50ZXN0KGxlbmd0aCh5ZGJoJGRyb3BvdXQpLGxlbmd0aChkYXRhJGRyb3BvdXQpLCBwID0gMC40NjcpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggduG7m2kgUF92YWx1ZSA+IDUlLCBjaG8gdGjhuqV5IGNoxrBhIMSR4bunIGPGoSBz4bufIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gRG8gxJHDsywgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBsw6AgNDYsNyUgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLg0KDQpLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB24bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlIGzDoCAoMC40MzYyNjMxOyAwLjQ5Nzk4OTUpDQoNCioqLSDGr+G7m2MgbMaw4bujbmcgc+G7sSBjaMOqbmggbOG7h2NoIHThu7cgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGdp4buvYSBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbSB0aMOqbSB2w6Aga2jDtG5nIGPDsyB2aeG7h2MgbMOgbSB0aMOqbSoqDQoNCsSQ4bq3dCBnaeG6oyB0aHV54bq/dDogJEhfMCQ6IFThu7cgbOG7hyBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbSB0aMaw4budbmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aOG6pXAgaMahbiBob+G6t2MgYuG6sW5nIHThu7cgbOG7hyBzaW5oIHZpw6puIGtow7RuZyB2aeG7h2MgbMOgbS4NCg0KYGBge3J9DQpiaGN2IDwtIGxlbmd0aCh3aGljaChkYXRhJGRyb3BvdXQgPT0gMCAmIGRhdGEkam9iID09IDApKQ0KYmhrY3YgPC0gbGVuZ3RoKHdoaWNoKGRhdGEkZHJvcG91dCA9PSAwICYgZGF0YSRqb2IgPT0gMSkpDQpjdjEgPC0gbGVuZ3RoKHdoaWNoKGRhdGEkam9iID09IDApKQ0Ka2N2IDwtIGxlbmd0aCh3aGljaChkYXRhJGpvYiA9PSAxKSkNCnByb3AudGVzdChjKGJoY3YsYmhrY3YpLGMoY3YxLGtjdiksYWx0ZXJuYXRpdmUgPSAgImdyZWF0ZXIiKQ0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIHbhu5tpIFBfdmFsdWUgPCA1JSwgY2hvIHRo4bqleSBjw7MgxJHhu6cgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkIHbhu5tpIHXhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbSBtdeG7kW4gYuG7jyBo4buNYyBsw6AgMCw3OTYsIHRyb25nIGtoaSDEkcOzIHThu7cgbOG7hyDGsOG7m2MgdMOtbmggc2luaCB2acOqbiBraMO0bmcgY8OzIHZp4buHYyBsw6BtIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgbMOgIDAsMTY3OS4gS+G6v3QgbHXhuq1uIHLhurFuZyB04bu3IGzhu4cgc2luaCB2acOqbiBjw7Mgdmnhu4djIGzDoG0gdGjGsOG7nW5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgY2FvIGjGoW4gc28gduG7m2kgdOG7tyBs4buHIHNpbmggdmnDqm4ga2jDtG5nIGPDsyB2aeG7h2MgbMOgbSB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUuIA0KDQpLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyB0aOG6pXkgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIHThu7cgbOG7hyBzaW5oIHZpw6puIGPDsyB2aeG7h2MgbMOgbSB2w6Aga2jDtG5nIGPDsyB2aeG7h2MgbMOgbSBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGzDoCAoMCw1ODU3OyAxLDAwMCkNCg0KKiotIMav4bubYyBsxrDhu6NuZyBz4buxIGNow6puaCBs4buHY2ggdOG7tyBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgZ2nhu69hIHNpbmggdmnDqm4gY8OzIGtow7Mga2jEg24gdMOgaSBjaMOtbmggdsOgIHNpbmggdmnDqm4ga2jDtG5nIGfhurdwIGtow7Mga2jEg24gduG7gSB0w6BpIGNow61uaCoqDQoNCsSQ4bq3dCBnaeG6oyB0aHV54bq/dDogJEhfMCQ6IFThu7cgbOG7hyBzaW5oIHZpw6puIGtow7Mga2jEg24gdMOgaSBjaMOtbmggdGjGsOG7nW5nIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgdGjhuqVwIGjGoW4gaG/hurdjIGLhurFuZyB04bu3IGzhu4cgc2luaCB2acOqbiBraMO0bmcgZ+G6t3Aga2jDsyBraMSDbiB24buBIHTDoGkgY2jDrW5oLg0KDQpgYGB7cn0NCmJodGMgPC0gbGVuZ3RoKHdoaWNoKGRhdGEkZHJvcG91dCA9PSAwICYgZGF0YSRmaW5hbmNlID09IDApKQ0KYmhrdGMgPC0gbGVuZ3RoKHdoaWNoKGRhdGEkZHJvcG91dCA9PSAwICYgZGF0YSRmaW5hbmNlID09IDEpKQ0KdGMxIDwtIGxlbmd0aCh3aGljaChkYXRhJGZpbmFuY2UgPT0gMCkpDQprdGMgPC0gbGVuZ3RoKHdoaWNoKGRhdGEkZmluYW5jZSA9PSAxKSkNCnByb3AudGVzdChjKGJodGMsYmhrdGMpLGModGMxLGt0YyksYWx0ZXJuYXRpdmUgPSAgImdyZWF0ZXIiKQ0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIHbhu5tpIFBfdmFsdWUgPCA1JSwgY2hvIHRo4bqleSBjw7MgxJHhu6cgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkIHbhu5tpIHXhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBzaW5oIHZpw6puIGtow7Mga2jEg24gdMOgaSBjaMOtbmggbXXhu5FuIGLhu48gaOG7jWMgbMOgIDAsNTIyMywgdHJvbmcga2hpIMSRw7MgdOG7tyBs4buHIMaw4bubYyB0w61uaCBzaW5oIHZpw6puIGtow7RuZyBjw7Mga2jDsyBraMSDbiB24buBIHTDoGkgY2jDrW5oIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgbMOgIDAsNDQ2Ny4gS+G6v3QgbHXhuq1uIHLhurFuZyB04bu3IGzhu4cgc2luaCB2acOqbiBn4bq3cCBraMOzIGtoxINuIHTDoGkgY2jDrW5oIHRoxrDhu51uZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGNhbyBoxqFuIHNvIHbhu5tpIHThu7cgbOG7hyBzaW5oIHZpw6puIGtow7RuZyBjw7Mga2jDsyBraMSDbiB0w6BpIGNow61uaCB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUuIA0KDQpLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyB0aOG6pXkgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIHThu7cgbOG7hyBzaW5oIHZpw6puIGPDsyBraMOzIGtoxINuIHTDoGkgY2jDrW5oIHbDoCBraMO0bmcgY8OzIGtow7Mga2jEg24gdMOgaSBjaMOtbmggY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBsw6AgKDAsMDE0NTsgMSwwMDAwKQ0KDQoqKi0gxq/hu5tjIGzGsOG7o25nIHPhu7EgY2jDqm5oIGzhu4djaCB04bu3IHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBnaeG7r2Egc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIGjhu41jIHbDoCBjw7MgdGjhu51pIGdpYW4gaOG7jWMqKg0KDQrEkOG6t3QgZ2nhuqMgdGh1eeG6v3Q6ICRIXzAkOiBU4bu3IGzhu4cgc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIGjhu41jIHRoxrDhu51uZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHRo4bqlcCBoxqFuIGhv4bq3YyBi4bqxbmcgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIHRo4budaSBnaWFuIGjhu41jLg0KDQpgYGB7cn0NCmJodHRnIDwtIGxlbmd0aCh3aGljaChkYXRhJGRyb3BvdXQgPT0gMCAmIGRhdGEkdGltZSA9PSAwKSkNCmJodGcgPC0gbGVuZ3RoKHdoaWNoKGRhdGEkZHJvcG91dCA9PSAwICYgZGF0YSR0aW1lID09IDEpKQ0KdHRnIDwtIGxlbmd0aCh3aGljaChkYXRhJHRpbWUgPT0gMCkpDQp0ZzEgPC0gbGVuZ3RoKHdoaWNoKGRhdGEkdGltZSA9PSAxKSkNCnByb3AudGVzdChjKGJodHRnLGJodGcpLGModHRnLHRnMSksYWx0ZXJuYXRpdmUgPSAgImdyZWF0ZXIiKQ0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIHbhu5tpIFBfdmFsdWUgPCA1JSwgY2hvIHRo4bqleSBjw7MgxJHhu6cgY8ahIHPhu58gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkIHbhu5tpIHXhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBzaW5oIHZpw6puIHRoaeG6v3UgdGjhu51pIGdpYW4gaOG7jWMgbXXhu5FuIGLhu48gaOG7jWMgbMOgIDAsOTI3OCwgdHJvbmcga2hpIMSRw7MgdOG7tyBs4buHIMaw4bubYyB0w61uaCBzaW5oIHZpw6puIGPDsyB0aOG7nWkgZ2lhbiBo4buNYyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGzDoCAwLDI5MDUuIEvhur90IGx14bqtbiBy4bqxbmcgdOG7tyBs4buHIHNpbmggdmnDqm4gdGhp4bq/dSB0aOG7nWkgZ2lhbiBo4buNYyB0aMaw4budbmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjYW8gaMahbiBzbyB24bubaSB04bu3IGzhu4cgc2luaCB2acOqbiBjw7MgdGjhu51pIGdpYW4gaOG7jWMgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLiANCg0KS2hv4bqjbmcgdGluIGPhuq15IDk1JSBjaG8gdGjhuqV5IHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSB04bu3IGzhu4cgc2luaCB2acOqbiB0aGnhur91IHRo4budaSBnaWFuIGjhu41jIHbDoCBjw7MgdGjhu51pIGdpYW4gaOG7jWMgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBsw6AgKDAsNTk3MTsgMSwwMDApDQoNCioqLSDGr+G7m2MgbMaw4bujbmcgc+G7sSBjaMOqbmggbOG7h2NoIHThu7cgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIGdp4buvYSBzaW5oIHZpw6puIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgbuG6t25nIHbDoCBzaW5oIHZpw6puIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcCB24bubaSBi4bqjbiB0aMOibioqDQoNCsSQ4bq3dCBnaeG6oyB0aHV54bq/dDogJEhfMCQ6IFThu7cgbOG7hyBzaW5oIHZpw6puIGPhuqNtIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgbuG6t25nIHRoxrDhu51uZyBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHRo4bqlcCBoxqFuIGhv4bq3YyBi4bqxbmcgdOG7tyBs4buHIHNpbmggdmnDqm4gY+G6o20gdGjhuqV5IGNoxrDGoW5nIHRyw6xuaCBo4bujcCBwaMO5IGjhu6NwIHbhu5tpIGLhuqNuIHRow6JuLg0KDQpgYGB7cn0NCmJoMSA8LSBsZW5ndGgod2hpY2goZGF0YSRkcm9wb3V0ID09IDAgJiBkYXRhJHN0dWR5cHJvZ3JhbSA9PSAwKSkNCmJoMiA8LSBsZW5ndGgod2hpY2goZGF0YSRkcm9wb3V0ID09IDAgJiBkYXRhJHN0dWR5cHJvZ3JhbSA9PSAxKSkNCmExIDwtIGxlbmd0aCh3aGljaChkYXRhJHN0dWR5cHJvZ3JhbSA9PSAwKSkNCmIxIDwtIGxlbmd0aCh3aGljaChkYXRhJHN0dWR5cHJvZ3JhbSA9PSAxKSkNCnByb3AudGVzdChjKGJoMSxiaDIpLGMoYTEsYjEpLGFsdGVybmF0aXZlID0gICJncmVhdGVyIikNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCB24bubaSBQX3ZhbHVlIDwgNSUsIGNobyB0aOG6pXkgY8OzIMSR4bunIGPGoSBz4bufIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJCB24bubaSB14bubYyBsxrDhu6NuZyB04bu3IGzhu4cgc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIG7hurduZyBtdeG7kW4gYuG7jyBo4buNYyBsw6AgMCw1MDQxLCB0cm9uZyBraGkgxJHDsyB04bu3IGzhu4cgxrDhu5tjIHTDrW5oIHNpbmggdmnDqm4gdGjhuqV5IGNoxrDGoW5nIHRyw6xuaCBo4buNYyBwaMO5IGjhu6NwIHbhu5tpIGLhuqNuIHRow6JuIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgbMOgIDAsNDQ1OC4gS+G6v3QgbHXhuq1uIHLhurFuZyB04bu3IGzhu4cgc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIG7hurduZyB0aMaw4budbmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBjYW8gaMahbiBzbyB24bubaSB04bu3IGzhu4cgc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIHBow7kgaOG7o3AgduG7m2kgYuG6o24gdGjDom4gduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLiANCg0KS2hv4bqjbmcgdGluIGPhuq15IDk1JSBjaG8gdGjhuqV5IHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSB04bu3IGzhu4cgc2luaCB2acOqbiB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIG7hurduZyB2w6AgY2jGsMahbmcgdHLDrG5oIHBow7kgaOG7o3AgduG7m2kgYuG6o24gdGjDom4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBsw6AgKDAsMDAyMjsgMSwwMDApDQoNCiMjIE3DtCBow6xuaCDEkeG7gSB4deG6pXQNCg0KU2F1IGtoaSB0aOG7kW5nIGvDqiBtw7QgdOG6oyB2w6AgdGjhu5FuZyBrw6ogc3V5IGRp4buFbiBjaG8gY8OhYyBiaeG6v24gxJHhu4tuaCB0w61uaCBjaG8gYuG7mSBk4buvIGxp4buHdSB0aMOsIGvhur90IHF14bqjIGNobyB0aOG6pXkgeeG6v3UgdOG7kSBnaeG7m2kgdMOtbmggdsOgIG3hu6ljIOG7p25nIGjhu5kgY+G7p2EgZ2lhIMSRw6xuaCDEkWkgaOG7jWMga2jDtG5nIGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24gw70gxJHhu4tuaCBi4buPIGjhu41jIHNpbmggdmnDqm4gbsOqbiB0w6FjIGdp4bqjIGxv4bqhaSBi4buPIDIgeeG6v3UgdOG7kS4gRG8gxJHDsywgdMOhYyBnaeG6oyB4aW4gdOG7lW5nIGvhur90IG5ow7NtIHnhur91IHThu5EgY8OzIHTDoWMgxJHhu5luZyDEkeG6v24gw70gxJHhu4tuaCBi4buPIGjhu41jIGPhu6dhIHNpbmggdmnDqm4gYmFvIGfhu5NtOiB0aOG7nWkgZ2lhbiBzaW5oIHZpw6puIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMsIHTDrG5oIHRy4bqhbmcgdMOgaSBjaMOtbmggY+G7p2Egc2luaCB2acOqbiwgdGjhu7FjIHRy4bqhbmcgbMOgbSB0aMOqbSBj4bunYSBzaW5oIHZpw6puLCBjaMawxqFuZyB0csOsbmggaOG7jWMgY+G7p2Egc2luaCB2acOqbi4gVOG7qyDEkcOieSwgdMOhYyBnaeG6oyDEkeG7gSB4deG6pXQgbcO0IGjDrG5oIGPDoWMgeeG6v3UgdOG7kSB0w6FjIMSR4buZbmcgxJHhur9uIMO9IMSR4buLbmggYuG7jyBo4buNYyBj4bunYSBzaW5oIHZpw6puIG5oxrAgc2F1OiANCg0KJCRkcm9wb3V0ID0gzrJfMCvOsl8xam9iK86yXzJmaW5hbmNlK1xiZXRhXzN0aW1lK1xiZXRhXzRzdHVkeXByb2dyYW0kJA0KDQpUcm9uZyDEkcOzOg0KDQoqKi0gZHJvcG91dCoqIGzDoCDDvSDEkeG7i25oIGLhu48gaOG7jWMgY+G7p2Egc2luaCB2acOqbiwgMCA9IEPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWM7IDEgPSBLaMO0bmcgY8OzIMO9IMSR4buLbmgga2jDtG5nIGLhu48gaOG7jWMuIFRyb25nIMSRw7MsIGRyb3BvdXQgxJHDs25nIHZhaSB0csOyIGzDoCBiaeG6v24gcGjhu6UgdGh14buZYy4NCg0KLSBCaeG6v24gxJHhu5ljIGzhuq1wIGzDoCBuaOG7r25nIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBi4buPIGjhu41jIGPhu6dhIHNpbmggdmnDqm46DQoNCioqLSBqb2IqKiBsw6AgdGjhu7FjIHRy4bqhbmcgbMOgbSB0aMOqbSBj4bunYSBzaW5oIHZpw6puLCAwID0gQ8OzIGzDoG0gdGjDqm07IDEgPSBLaMO0bmcgbMOgbSB0aMOqbS4NCg0KKiotIGZpbmFuY2UqKiBsw6AgdMOsbmggdHLhuqFuZyB0w6BpIGNow61uaCBj4bunYSBzaW5oIHZpw6puIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMsIDAgPSBDw7Mga2jDsyBraMSDbiB24buBIHTDoGkgY2jDrW5oOyAxID0gS2jDtG5nIGfhurdwIGtow7Mga2jEg24gdMOgaSBjaMOtbmguDQoNCioqLSB0aW1lKiogbMOgIHRo4budaSBnaWFuIHNpbmggdmnDqm4gbMOgbSB2aeG7h2MsIDAgPSBLaMO0bmcgY8OzIHRo4budaSBnaWFuIGjhu41jIHThuq1wOyAxID0gQ8OzIHRo4budaSBnaWFuIGNobyBo4buNYyB04bqtcC4NCg0KKiotIHN0dWR5cHJvZ3JhbSoqIGzDoCBt4bupYyDEkeG7mSBjaMawxqFuZyB0csOsbmggaOG7jWMgY+G7p2Egc2luaCB2acOqbiwgMCA9IENoxrDGoW5nIHRyw6xuaCBu4bq3bmcsIDEgPSBDaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcC4NCg0KKiotICRcYmV0YV8wJCoqIGzDoCBo4buHIHPhu5EgY2jhurduIGPhu6dhIG3DtCBow6xuaC4NCg0KKiotICRcYmV0YV8xLCBcYmV0YV8yLFxkb3RzIFxiZXRhXzQkKiogbMOgIG5o4buvbmcgaOG7hyBz4buRIGPhu6dhIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KIyMgS+G6v3QgcXXhuqMgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYw0KDQojIyMgTcO0IGjDrG5oIGxvZ2lzdGljIHbhu5tpIGjDoG0gbGnDqm4ga+G6v3QgbG9naXQNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyB24bubaSBsaW5rIGZ1bmN0aW9uID0g4oCcbG9naXTigJ0gY8OzIGThuqFuZyB04buVbmcgcXXDoXQgbmjGsCBzYXU6DQoNCiQkbG9naXQoz4ApPWxvZyhcZnJhY3vPgH17MeKIks+AfSk9zrJfMCvOsl8xWF8xK86yXzJYXzIr4ouvK86yX2tYX2skJA0KDQpgYGB7cn0NCm1oMSA8LSBnbG0oZGF0YSA9IGRhdGEsIGZvcm11bGEgPSBkcm9wb3V0IH4gam9iICsgZmluYW5jZSArIHRpbWUgKyBzdHVkeXByb2dyYW0sIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkobWgxKQ0KYGBgDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBjaG8gdGjhuqV5IG3DtCBow6xuaCAxIG5oxrAgc2F1Og0KDQpNSDE6IA0KJCRsb2dpdCjPgCkgPSAtMy45Mjk2ICsgMi4wOTY5am9iICsgMC43MDAyZmluYW5jZSArIDIuNzc1N3RpbWUgKyAwLjU3ODFzdHVkeXByb2dyYW0kJA0KDQp24bubaSDPgCA9IFAoYmggPSDigJww4oCdIGhv4bq3YyDigJwx4oCdKQ0KDQoqKi0gS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCAxKioNCg0KQ+G6t3AgZ2nhuqMgdGh1eeG6v3QgLSDEkeG7kWkgdGh1eeG6v3Q6DQoNCiRIXzAkOiBNw7QgaMOsbmgga2jDtG5nIHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UgxJFp4buBdSB0cmENCg0KJEhfMSQ6IE3DtCBow6xuaCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IMSRaeG7gXUgdHJhDQoNCmBgYHtyfQ0KIyBLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIA0KbHJfdGVzdDEgPC0gYW5vdmEobWgxLCB0ZXN0ID0gIkNoaXNxIikNCnBfdmFsdWUxIDwtIGxyX3Rlc3QxJFByWzJdIA0KcF92YWx1ZTENCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IFBfdmFsdWUgPCAwLjA1IG7Dqm4gdGEgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLCBjaG8gdGjhuqV5IG3DtCBow6xuaCAxIGzDoCBtw7QgaMOsbmggbG9naXN0aWMgduG7m2kgaMOgbSBsacOqbiBr4bq/dCBsb2dpdCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IMSRaeG7gXUgdHJhIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JS4NCg0KIyMjIE3DtCBow6xuaCBsb2dpc3RpYyB24bubaSBow6BtIGxpw6puIGvhur90IHByb2JpdA0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCB24bubaSBsaW5rIGZ1bmN0aW9uID0g4oCccHJvYml04oCdIGPDsyBk4bqhbmcgdOG7lW5nIHF1w6F0IG5oxrAgc2F1Og0KDQokJHByb2JpdCjPgCk9XFBoaSAoMS3PgCkpPc6yXzArzrJfMVhfMSvOsl8yWF8yK+KLryvOsl9rWF9rJCQNCg0KYGBge3J9DQptaDIgPC0gZ2xtKGRhdGEgPSBkYXRhLCBmb3JtdWxhID0gZHJvcG91dCB+IGpvYiArIGZpbmFuY2UgKyB0aW1lICsgc3R1ZHlwcm9ncmFtLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gInByb2JpdCIpKQ0Kc3VtbWFyeShtaDIpDQpgYGANCg0KVuG6rXkgbsOqbiBtw7QgaMOsbmggcHJvYml0IMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBuaMawIHNhdToNCg0KJCRwcm9iaXQoz4ApPVxQaGkgKDEtz4ApKT0gLSAyLjI5ODEgKyAxLjI2MjFqb2IgKyAwLjQwMjVmaW5hbmNlICsgMS42MTc2dGltZSArIDAuMzI0OHN0dWR5cHJvZ3JhbSQkDQoNCnbhu5tpIM+AID0gUChiaCA9IOKAnDDigJ0gaG/hurdjIOKAnDHigJ0pDQoNCioqLSBLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIDIqKg0KDQpD4bq3cCBnaeG6oyB0aHV54bq/dCAtIMSR4buRaSB0aHV54bq/dDoNCg0KJEhfMCQ6IE3DtCBow6xuaCBraMO0bmcgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdSDEkWnhu4F1IHRyYQ0KDQokSF8xJDogTcO0IGjDrG5oIHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UgxJFp4buBdSB0cmENCg0KYGBge3J9DQojIEtp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmggDQpscl90ZXN0MiA8LSBhbm92YShtaDIsIHRlc3QgPSAiQ2hpc3EiKQ0KcF92YWx1ZTIgPC0gbHJfdGVzdDIkUHJbMl0gDQpwX3ZhbHVlMg0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgUF92YWx1ZSA8IDAuMDUgbsOqbiB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQsIGNobyB0aOG6pXkgbcO0IGjDrG5oIDIgbMOgIG3DtCBow6xuaCBsb2dpc3RpYyB24bubaSBow6BtIGxpw6puIGvhur90IHByb2hpdCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IMSRaeG7gXUgdHJhIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JS4NCg0KIyMjIE3DtCBow6xuaCBsb2dpc3RpYyB24bubaSBow6BtIGxpw6puIGvhur90IGNsb2djbG9nDQoNCk3DtCBow6xuaCBo4buTaSBxdXkgY2xvZ2xvZyB24bubaSBsaW5rIGZ1bmN0aW9uID0g4oCcY2xvZ2xvZ+KAnSBjw7MgZOG6oW5nIHThu5VuZyBxdcOhdCBuaMawIHNhdToNCg0KJCRjbG9nbG9nKM+AKT1sb2coLWxvZygxLc+AKSk9zrJfMCvOsl8xWF8xK86yXzJYXzIr4ouvK86yX2tYX2skJA0KDQpgYGB7cn0NCm1oMyA8LSBnbG0oZGF0YSA9IGRhdGEsIGZvcm11bGEgPSBkcm9wb3V0IH4gam9iICsgZmluYW5jZSArIHRpbWUgKyBzdHVkeXByb2dyYW0sIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpKQ0Kc3VtbWFyeShtaDMpDQpgYGANCg0KVuG6rXkgbsOqbiBtw7QgaMOsbmggY2xvZ2xvZyDEkcaw4bujYyB4w6FjIMSR4buLbmggbmjGsCBzYXU6DQoNCiQkY2xvZ2xvZyjPgCk9bG9nKC1sb2coMS3PgCkpPSAtIDMuNDI4NCArIDEuMjc5NmpvYiArIDAuNTA4MmZpbmFuY2UgKyAyLjIxNjh0aW1lICsgMC4zNTYzc3R1ZHlwcm9ncmFtJCQNCg0KduG7m2kgz4AgPSBQKGJoID0g4oCcMOKAnSBob+G6t2Mg4oCcMeKAnSkNCg0KKiotIEtp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmggMyoqDQoNCkPhurdwIGdp4bqjIHRodXnhur90IC0gxJHhu5FpIHRodXnhur90Og0KDQokSF8wJDogTcO0IGjDrG5oIGtow7RuZyBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IMSRaeG7gXUgdHJhDQoNCiRIXzEkOiBNw7QgaMOsbmggcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdSDEkWnhu4F1IHRyYQ0KDQpgYGB7cn0NCiMgS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCANCmxyX3Rlc3QzIDwtIGFub3ZhKG1oMywgdGVzdCA9ICJDaGlzcSIpDQpwX3ZhbHVlMyA8LSBscl90ZXN0MyRQclsyXSANCnBfdmFsdWUzDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBQX3ZhbHVlIDwgMC4wNSBuw6puIHRhIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJCwgY2hvIHRo4bqleSBtw7QgaMOsbmggMyBsw6AgbcO0IGjDrG5oIGxvZ2lzdGljIHbhu5tpIGjDoG0gbGnDqm4ga+G6v3QgY2xvZ2xvZyBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IMSRaeG7gXUgdHJhIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JQ0KDQojIyBLaeG7g20gxJHhu4tuaCB0w61uaCBwaMO5IGjhu6NwIGPhu6dhIGPDoWMgbcO0IGjDrG5oIG5naGnDqm4gY+G7qXUNCg0KU2F1IGtp4buDbSDEkeG7i25oIG3DtCBow6xuaCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IMSRaeG7gXUgdHJhIHRow6wgdMOhYyBnaeG6oyB0aOG6pXkgY+G6oyAzIG3DtCBow6xuaCBsb2dpdCwgcHJvYml0IHbDoCBjbG9nbG9nIMSR4buBdSBwaMO5IGjhu6NwIG7Dqm4gdGnhur9wIHRoZW8gdMOhYyBnaeG6oyBz4butIGThu6VuZyBjw6FjIHRpw6p1IGNow60gxJHhu4MgxJHDoW5oIGdpw6EgdMOtbmggcGjDuSBo4bujcCBj4bunYSBNSDEsIE1IMiwgTUgzOg0KDQpgYGB7cn0NCiMgVGnDqnUgY2jDrSBBSUMgLSBBa2Fpa2UgSW5mb3JtYXRpb24gQ3JpdGVyaW9uDQphaWNsbyA8LSBBSUMobWgxKQ0KYWljcHJvIDwtIEFJQyhtaDIpDQphaWNjbG8gPC0gQUlDKG1oMykNCkFJQyA8LSBjYmluZChhaWNsbyxhaWNwcm8sYWljY2xvKQ0KQUlDDQojIFRpw6p1IGNow60gRGV2aWFuY2UNCmRlbG8gPC0gZGV2aWFuY2UobWgxKQ0KZGVwcm8gPC0gZGV2aWFuY2UobWgyKQ0KZGVjbG8gPC0gZGV2aWFuY2UobWgzKQ0KZGV2aWFuY2UgPC0gY2JpbmQoZGVsbyxkZXBybyxkZWNsbykNCmRldmlhbmNlDQojIFRpw6p1IGNow60gQnJpZXIgU2NvcmUNCmJzbG8gPC0gQnJpZXJTY29yZShtaDEpDQpic3BybyA8LSBCcmllclNjb3JlKG1oMikNCmJzY2xvIDwtIEJyaWVyU2NvcmUobWgzKQ0KQnJpZXJTY29yZSA8LSBjYmluZChic2xvLGJzcHJvLGJzY2xvKQ0KQnJpZXJTY29yZQ0KYGBgDQoNClRow7RuZyBxdWEga+G6v3QgcXXhuqMgY8OhYyB0acOqdSBjaMOtIEFJQywgZGV2aWFuY2UgdsOgIEJyaWVyIFNjb3JlIGNobyB0aOG6pXkgZ2nDoSB0cuG7iyBj4bunYSBBSUMsIGRldmlhbmNlIHbDoCBCcmllciBTY29yZSBj4bunYSBtw7QgaMOsbmggMiBsw6Agbmjhu48gbmjhuqV0LCBuZ2jEqWEgbMOgIG3DtCBow6xuaCBsb2dpc3RpYyB24bubaSBow6BtIGxpw6puIGvhur90IHByb2hpdCBsw6AgbcO0IGjDrG5oIHThu5F0IG5o4bqldCB0cm9uZyAzIG3DtCBow6xuaCBsb2dpc3RpYyB24bubaSBow6BtIGxpw6puIGvhur90OiBsb2dpdCwgcHJvYml0LCBjbG9nY2xvZy4NCg0KIyMgTcO0IGjDrG5oIGjhu5NpIHF1eSBzYXUga2hpIGzhu7FhIGNo4buNbg0KDQpgYGB7cn0NCnN1bW1hcnkobWgyKQ0KYGBgDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBjaG8gdGjhuqV5IDQgYmnhur9uIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6og4bufIG3hu6ljIMO9IG5naMSpYSA1JSB24bubaSBwaMawxqFuZyB0csOsbmggaOG7k2kgcXV5IG5oxrAgc2F1Og0KDQokJGRyb3BvdXQ9XFBoaSAoMS3PgCkpPSAtIDIuMjk4MSArIDEuMjYyMWpvYiArIDAuNDAyNWZpbmFuY2UgKyAxLjYxNzZ0aW1lICsgMC4zMjQ4c3R1ZHlwcm9ncmFtJCQNCg0KduG7m2kgz4AgPSBQKGJoID0g4oCcMOKAnSBob+G6t2Mg4oCcMeKAnSkNCg0KS+G6v3QgcXXhuqMgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyB24bubaSBow6BtIGxpw6puIGvhur90IHByb2hpdCBjaG8gdGjhuqV5IG3DtCBow6xuaCBjw7MgNCB54bq/dSB04buRIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6og4bufIG3hu6ljIMO9IG5naMSpYSA1JSBsw6AgdGjhu7FjIHRy4bqhbmcgbMOgbSB0aMOqbSBj4bunYSBzaW5oIHZpw6puIChqb2IpLCB0aOG7nWkgZ2lhbiBzaW5oIHZpw6puIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMgKHRpbWUpLCB0w6xuaCBow6xuaCB0w6BpIGNow61uaCBj4bunYSBzaW5oIHZpw6puIChmaW5hbmNlKSwgY2jGsMahbmcgdHLDrG5oIGjhu41jIGPhu6dhIHNpbmggdmnDqm4gKHN0dWR5cHJvZ3JhbSkgY2hvIHRo4bqleSDEkeG7mSBs4bubbiBj4bunYSBo4buHIHPhu5EgYmV0YSBs4bqnbiBsxrDhu6N0IHRoZW8gdGjhu6kgdOG7sSBuaMawIHNhdTogDQoNCi0gVGjhu51pIGdpYW4gc2luaCB2acOqbiBkw6BuaCBjaG8gdmnhu4djIGjhu41jIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gw70gxJHhu4tuaCBzaW5oIHZpw6puIG114buRbiBi4buPIGjhu41jIHbhu5tpIGjhu4cgc+G7kSAkXGJldGEkID0gMSw2MTc2LCBjaG8gdGjhuqV5ICRcYmV0YSA+IDAkIG5naMSpYSBsw6Agbmd1eSBjxqEgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHPhur0gZ2nhuqNtIGtoaSBzaW5oIHZpw6puIGPDsyB0aOG7nWkgZ2lhbiBo4buNYy4gQ8OzIHRo4buDIMSRw6J5IGzDoCBk4bqldSBoaeG7h3Ugbmjhuq1uIHRo4bqleSBraGkgc2luaCB2acOqbiDDrXQgduG6r25nIG3hurd0IHRyb25nIGzhu5twIGzDoCDEkWnhu4F1IGtp4buHbiDEkeG6o20gYuG6o28gc2luaCB2acOqbiBraMO0bmcgYuG7jyBo4buNYy4NCg0KLSBUaOG7sWMgdHLhuqFuZyBsw6BtIHRow6ptIGPhu6dhIHNpbmggdmnDqm4gY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biDDvSDEkeG7i25oIHNpbmggdmnDqm4gbXXhu5FuIGLhu48gaOG7jWMgduG7m2kgaOG7hyBz4buRICRcYmV0YSQgPSAxLDI2MjEuIEtoaSAkXGJldGEgPiAwJCBjaG8gdGjhuqV5IG5ndXkgY8ahIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyBz4bq9IGdp4bqjbSBraGkgc2luaCB2acOqbiBraMO0bmcgY8OzIHZp4buHYyBsw6BtIHRow6ptLiBDw7MgdGjhu4MgxJHDonkgbMOgIGThuqV1IGhp4buHdSBuaOG6rW4gdGjhuqV5IHZp4buHYyBraMO0bmcgxJFpIGzDoG0gdGjDqm0gZ2nDunAgc2luaCB2acOqbiB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyBo4buNYyBoxqFuIHbDoCB0csOhbmggYuG7jyBo4buNYy4NCg0KLSBUw6xuaCBow6xuaCB0w6BpIGNow61uaCBj4bunYSBzaW5oIHZpw6puIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gw70gxJHhu4tuaCBzaW5oIHZpw6puIG114buRbiBi4buPIGjhu41jIHbhu5tpIGjhu4cgc+G7kSAkXGJldGEkID0gMCw0MDI1LiBLaGkgJFxiZXRhID4gMCQgY2hvIHRo4bqleSBuZ3V5IGPGoSBzaW5oIHZpw6puIGPDsyDDvSDEkeG7i25oIGLhu48gaOG7jWMgc+G6vSBnaeG6o20ga2hpIHNpbmggdmnDqm4ga2jDtG5nIGPDsyB0w6BpIGNow61uaCBraMOzIGtoxINuLiBDaG8gdGjhuqV5IHZp4buHYyBzaW5oIHZpw6puIGPDsyBraMOzIGtoxINuIHbhu4EgdMOgaSBjaMOtbmggbMOgIGThuqV1IGhp4buHdSBzaW5oIHZpw6puIGPDsyBraOG6oyBuxINuZyBi4buPIGjhu41jLg0KDQotIENoxrDGoW5nIHRyw6xuaCBo4buNYyBj4bunYSBzaW5oIHZpw6puIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gw70gxJHhu4tuaCBzaW5oIHZpw6puIG114buRbiBi4buPIGjhu41jIHbhu5tpIGjhu4cgc+G7kSAkXGJldGEkID0gMCwzMjQ4LCBjaG8gdGjhuqV5ICRcYmV0YSA+IDAkIG5naMSpYSBsw6Agbmd1eSBjxqEgc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHPhur0gZ2nhuqNtIGtoaSBzaW5oIHZpw6puIGPhuqNtIHRo4bqleSBjaMawxqFuZyB0csOsbmggaOG7jWMgcGjDuSBo4bujcCBzbyB24bubaSBi4bqjbiB0aMOibi4gQ8OzIHRo4buDIHRo4bqleSBy4bqxbmcgc2luaCB2acOqbiBjw7Mga2jhuqMgbsSDbmcgYuG7jyBo4buNYyBu4bq/dSB0aOG6pXkgY2jGsMahbmcgdHLDrG5oIGjhu41jIHF1w6EgbuG6t25nIHbhu5tpIGLhuqNuIHRow6JuIGRvIHNpbmggdmnDqm4gc+G6vSBraMO0bmcgdGjhu4MgxJHhuqF0IMSRxrDhu6NjIGvhur90IHF14bqjIGjhu41jIHThuq1wIGNhby4NCg0KIyMgROG7sSBiw6FvIG3DtCBow6xuaA0KDQpgYGB7cn0NCiMgROG7sSDEkW/DoW4gw70gxJHhu4tuaCBi4buPIGjhu41jIGPhu6dhIHNpbmggdmnDqm4NCmR1ZG9hbiA8LSBwcmVkaWN0KG1oMiwgbmV3ZGF0YSA9IGRhdGEsIHR5cGUgPSAicmVzcG9uc2UiKQ0KZHVkb2FuIDwtIGlmZWxzZShkdWRvYW4gPj0gMC41LCAxLDApICNDaHV54buDbiB0aMOgbmggZ2nDoSB0cuG7iyBuaOG7iyBwaMOibg0KZCA8LSB0YWJsZShkYXRhJGRyb3BvdXQsIGR1ZG9hbikNCiMgVMOtbmggxJHhu5kgY2jDrW5oIHjDoWMgY+G7p2EgZOG7sSDEkW/DoW4NCmFjY3VyYWN5IDwtIHN1bShkaWFnKGQpKSAvIHN1bShkKQ0KZA0KcHJpbnQocGFzdGUoIkFjY3VyYWN5OiIsIGFjY3VyYWN5KSkNCmBgYA0KDQpC4buZIGThu68gbGnhu4d1IGNobyB0aOG6pXkgY8OzIDQ2NyB0csaw4budbmcgaOG7o3Agc2luaCB2acOqbiBjw7Mgw70gxJHhu4tuaCBi4buPIGjhu41jIHRow6wgZOG7sSBiw6FvIMSRw7puZyBjw7MgMzU2IHRyxrDhu51uZyBo4bujcCAoZOG7sSBiw6FvIMSRw7puZyA3NiwyMyUpIHbDoCBk4buxIMSRb8OhbiBzYWkgMTExIHRyxrDhu51uZyBo4bujcC4gTmdvw6BpIHJhLCB0cm9uZyA1MzMgc2luaCB2acOqbiBraMO0bmcgY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYyB0aMOsIGPDsyA0NDYgdHLGsOG7nW5nIGjhu6NwIGThu7EgxJFvw6FuIMSRw7puZyAoZOG7sSBiw6FvIMSRw7puZyA4Myw2OCUpIHbDoCA4NyB0csaw4budbmcgaOG7o3AgZOG7sSDEkW/DoW4gc2FpLiBL4bq/dCBxdeG6oyBjaG8gdGjhuqV5IHThu7cgbOG7hyBk4buxIMSRb8OhbiDEkcO6bmcgY+G7p2EgdG/DoG4gbcO0IGjDrG5oIGzDoCA4MCwyJS4NCg0KIyBDSMavxqBORyA1OiBL4bq+VCBMVeG6rE4gVsOAIEtJ4bq+TiBOR0jhu4oNCg0KIyMgS+G6v3QgbHXhuq1uDQoNCk5naGnDqm4gY+G7qXUgbsOgeSDEkcaw4bujYyB0aOG7sWMgaGnhu4duIGLhurFuZyBwaMawxqFuZyBwaMOhcCBwaMOibiB0w61jaCDEkeG7i25oIHTDrW5oIG5o4bqxbSBwaMOibiB0w61jaCwgxJHDoW5oIGdpw6EgdsOgIMaw4bubYyBsxrDhu6NuZyBz4buxIHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIHnhur91IHThu5EgxJHhur9uIMO9IMSR4buLbmggYuG7jyBo4buNYyBj4bunYSBzaW5oIHZpw6puIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHRow7RuZyBxdWEgcGjhuqduIG3hu4FtIFIuIFTDoWMgZ2nhuqMgxJHDoyDEkcawYSByYSBr4bq/dCBsdeG6rW4gbmjGsCBzYXU6DQoNCkLDoGkgbmdoacOqbiBj4bupdSBj4bunYSB0w6FjIGdp4bqjIGNo4bunIHnhur91IHBow6JuIHTDrWNoLCDEkcOhbmggZ2nDoSB2w6AgxrDhu5tjIGzGsOG7o25nIHPhu7EgdMOhYyDEkeG7mW5nIGPhu6dhIDQgeeG6v3UgdOG7kSB0aOG7sWMgdHLhuqFuZyBsw6BtIHRow6ptIGPhu6dhIHNpbmggdmnDqm4gKGpvYiksIHTDrG5oIGjDrG5oIHTDoGkgY2jDrW5oIGPhu6dhIHNpbmggdmnDqm4gKGZpbmFuY2UpLCB0aOG7nWkgZ2lhbiBzaW5oIHZpw6puIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMgKHRpbWUpLCBjaMawxqFuZyB0csOsbmggaOG7jWMgY+G7p2Egc2luaCB2acOqbiAoc3R1ZHlwcm9ncmFtKS4gVHJvbmcgxJHDsywgY8OzIGPDoWMgeeG6v3UgdOG7kSB0aOG7nWkgZ2lhbiBzaW5oIHZpw6puIGTDoG5oIGNobyB2aeG7h2MgaOG7jWMsIHRo4buxYyB0cuG6oW5nIGzDoG0gdGjDqm0gY+G7p2Egc2luaCB2acOqbiwgdMOsbmggaMOsbmggdMOgaSBjaMOtbmggY+G7p2Egc2luaCB2acOqbiwgY2jGsMahbmcgdHLDrG5oIGjhu41jIGPhu6dhIHNpbmggdmnDqm4gY8OzIHTDoWMgxJHhu5luZyDEkeG6v24gdmnhu4djIHNpbmggdmnDqm4gY8OzIMO9IMSR4buLbmggYuG7jyBo4buNYy4NCg0KIyMgS2nhur9uIG5naOG7iw0KDQpL4bq/dCBxdeG6oyBuZ2hpw6puIGPhu6l1IG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgY2hvIHRo4bqleSDEkeG7gyBo4bqhbiBjaOG6vyB0w6xuaCB0cuG6oW5nIGLhu48gaOG7jWMgY+G7p2Egc2luaCB2acOqbiwgdMOhYyBnaeG6oyDEkeG7gSB4deG6pXQgbmjhu69uZyBraeG6v24gbmdo4buLIGThu7FhIHRyw6puIHPhu7EgdMOhYyDEkeG7mW5nIGPhu6dhIDQgeeG6v3UgdOG7kSDhu58gbeG7qWMgxJHhu5kga2jDoWMgbmhhdSBzYXU6DQoNCioqVGjhu51pIGdpYW46KiogxJDDonkgbMOgIHnhur91IHThu5EgdMOhYyDEkeG7mW5nIG3huqFuaCBuaOG6pXQsIGPDsyB0aOG7gyBuw7NpIHRo4budaSBnaWFuIGzDoCB54bq/dSB04buRIHRpw6puIHF1eeG6v3QgIGNobyBzaW5oIHZpw6puIGPDsyB0aeG6v3AgdOG7pWMgaOG7jWMgaGF5IGtow7RuZy4gVsOsIG7hur91IGjhu41jIHF1w6Egbmhp4buBdSBz4bq9IGtoaeG6v24gc2luaCB2acOqbiBj4bqjbSB0aOG6pXkgc3RyZXNzIGThuqtuIMSR4bq/biBraMO0bmcgbXXhu5FuIGjhu41jIG7hu69hIGPDsm4gbuG6v3UgaOG7jWMgcXXDoSDDrXQgdGjDrCBzaW5oIHZpw6puIGtow7MgdGnhur9wIHRodSDEkcaw4bujYyBraeG6v24gdGjhu6ljIG3DoCBuaMOgIHRyxrDhu51uZyBnaeG6o25nIGThuqF5LiDEkOG7gyBjaG8gc2luaCB2acOqbiB0aHXhuq1uIGzhu6NpIGNobyB2aeG7h2MgaOG7jWMgdOG6rXAgbmjDoCB0csaw4budbmcgY+G6p24gdGhp4bq/dCBr4bq/IHRo4budaSBraMOzYSBiaeG7g3UgdGjhuq10IGxpbmggxJHhu5luZyBjxaluZyBuaMawIGPhu5EgxJHhu4tuaCAxIG3DtG4gdOG7kWkgxJFhIDIgYnXhu5VpLzEgdHXhuqduIG5oxrAgY8OhYyBs4bubcCBo4buNYyB2w6BvIG5nw6B5IHRo4bupIDcsIGNo4bunIG5o4bqtdCBob+G6t2MgY8OhYyBideG7lWkgdOG7kWkgdHJvbmcgdHXhuqduIG5oxrAgdOG7kWkgMiw0LDYgaG/hurdjIHThu5FpIDMsNSw3LiBW4bubaSB0aOG7nWkga2jDs2EgYmnhu4N1IG5oaeG7gXUgbOG7sWEgY2jhu41uIHNpbmggdmnDqm4gY8OzIHRo4buDIGzhu7FhIGNo4buNbiB0aOG7nWkgZ2lhbiBo4buNYyB04bqtcCBwaMO5IGjhu6NwIG5o4bqldCDEkeG7gyBzaW5oIHZpw6puIGPDsyB0aOG7gyB04bqtcCB0cnVuZyBo4buNYy4gDQoNCioqVGjhu7FjIHRy4bqhbmcgbMOgbSB0aMOqbSBj4bunYSBzaW5oIHZpw6puOioqIMSQw6J5IGzDoCB54bq/dSB04buRIHTDoWMgxJHhu5luZyBt4bqhbmggdGjhu6kgMiwgIGzDoCB54bq/dSB04buRIHRodeG7mWMgduG7gSBjw6EgbmjDom4gbeG7l2kgc2luaCB2acOqbiwgY8ahIHPhu58gxJHDoG8gdOG6oW8gcuG6pXQga2jDsyB0w6FjIMSR4buZbmcgdsOgby4gxJBp4buBdSBxdWFuIHRy4buNbmcgbMOgIGPGoSBz4bufIMSRw6BvIHThuqFvIHjDonkgIGThu7FuZyBxdXkgY2jhur8gc2FvIGNobyB0aHXhuq1uIGzhu6NpIG5o4bqldCBjaG8gc2luaCB2acOqbiBz4bqvcCB44bq/cCB0aHXhuq1uIGzhu6NpIGzhu4tjaCBsw6BtIHZp4buHYyB2w6AgbOG7i2NoIGjhu41jLg0KDQoqKlTDrG5oIGjDrG5oIHTDoGkgY2jDrW5oIGPhu6dhIHNpbmggdmnDqm46KiogxJDDonkgbMOgIHnhur91IHThu5EgdMOhYyDEkeG7mW5nIHRo4bupIDMgdHJvbmcgcGjDom4gdMOtY2ggbcO0IGjDrG5oIGjhu5NpIHF1eS4gVsOsIHbhuq15LCBOaMOgIHRyxrDhu51uZyBj4bqnbiB04bqtcCB0cnVuZyDEkcawYSByYSBjaMOtbmggc8OhY2ggdOG7kXQgbmjhuqV0IMSR4buDIGjhuqFuIGNo4bq/IHTDrG5oIGjDrG5oIGLhu48gaOG7jWMgY+G7p2Egc2luaCB2acOqbiBi4bqxbmcgY8OhY2ggaOG7lyB0cuG7oyB2aeG7h2MgbMOgbSDEkeG7gyBnaeG6o20gw6FwIGzhu7FjIGN14buZYyBz4buRbmcgY+G7p2Egc2luaCB2acOqbiwgxJHGsGEgY2jDrW5oIHPDoWNoIGjhu5cgdHLhu6MgdMOgaSBjaMOtbmggY2hvIHNpbmggdmnDqm4gY8OzIGhvw6BuIGPhuqNuaCBraMOzIGtoxINuLCB04burIMSRw7MgZ2nDunAgc2luaCB2acOqbiBjw7MgdGjhu4MgY+G6o2kgdGhp4buHbiDEkcaw4bujYyBjdeG7mWMgc+G7kW5nLiANCg0KKipDaMawxqFuZyB0csOsbmggaOG7jWMgY+G7p2Egc2luaCB2acOqbjoqKiDEkMOieSBsw6AgeeG6v3UgdOG7kSB54bq/dSBuaOG6pXQgbmjGsG5nIGPFqW5nIOG6o25oIGjGsOG7n25nIMSR4bq/biDDvSDEkeG7i25oIGLhu48gaOG7jWMgY+G7p2Egc2luaCB2acOqbi4gQ2jGsMahbmcgdHLDrG5oIMSRw6BvIHThuqFvIG7Dqm4gxJHGsOG7o2MgeMOieSBk4buxbmcgdGhlbyBoxrDhu5tuZyB0aW5oIGfhu41uIHbDoCB0aOG7sWMgdGnhu4VuIGjGoW4uIEtow7RuZyBuw6puIGNoxrDGoW5nIHRyw6xuaCBxdcOhIGTDoGksIHTEg25nIGPGsOG7nW5nIGjGsOG7m25nIGThuqtuIHThu7EgaOG7jWMsIHThu7EgbmdoacOqbiBj4bupdSwgxJFp4buBdSBuw6B5IGdpw7pwIGNobyBzaW5oIHZpw6puIHThuq1uIGThu6VuZyDEkcaw4bujYyBraW5oIG5naGnhu4dtIGzDoG0gdmnhu4djIHbDoCBsaW5oIMSR4buZbmcgdHJvbmcgdmnhu4djIMSRw6FwIOG7qW5nIHnDqnUgY+G6p3Uga2nhu4NtIHRyYSDEkcOhbmggZ2nDoSBj4bunYSBuaMOgIHRyxrDhu51uZywgdGhheSB2w6wgcGjhuqNpIGzDoG0gYsOgaSBraeG7g20gdHJhIHThuq1wIHRydW5nIHRow6wgc2luaCB2acOqbiBjw7MgdGjhu4MgbMOgbSBiw6BpIHRp4buDdSBsdeG6rW4sZOG7sSDDoW4gaG/hurdjIGLDoGkgdOG6rXAgbOG7m24gxJHhu4MgbsOibmcgY2FvIGvEqSBuxINuZyBnacO6cCBzaW5oIHZpw6puIMSRxrDhu6NjIHRo4buxYyBow6BuaCBuaGnhu4F1IGjGoW4uDQoNCiMjIEjhuqFuIGNo4bq/DQoNCk5naGnDqm4gY+G7qXUgbsOgeSBjdW5nIGPhuqVwIGPDoWkgbmjDrG4gdMawxqFuZyDEkeG7kWkga2jDoWNoIHF1YW4gduG7gSBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5EgxJHhur9uIMO9IMSR4buLbmggYuG7jyBo4buNYyBj4bunYSBzaW5oIHZpw6puIOG6pG4gxJDhu5kuIFRyw6puIHRo4buxYyB04bq/LCDDvSDEkeG7i25oIGLhu48gaOG7jWMgY+G7p2Egc2luaCB2acOqbiBraMO0bmcgY2jhu4kgY2jhu4t1IHTDoWMgxJHhu5luZyBi4bufaSA0IHnhur91IHThu5EgbcOgIHTDoWMgZ2nhuqMgxJHDoyDEkeG7gSBj4bqtcCB0cm9uZyBiw6BpIG3DoCBjw7JuIGNo4buLdSB0w6FjIMSR4buZbmcgYuG7n2kgbmhp4buBdSB54bq/dSB04buRIGtow6FjIG5oxrA6IGvhur90IHF14bqjIGjhu41jIHThuq1wLCDEkeG7mW5nIGzhu7FjIGjhu41jIHThuq1wLCBu4bujIG3DtG4gaOG7jWMsIHPhu5EgbcO0biDEkcOjIGjhu41jLi4uVHV5IG5oacOqbiwgbmdoacOqbiBj4bupdSBuw6B5IGNo4buJIMSRxrBhIHJhIDQgecOqdSB04buRIGPDsyB0w6FjIMSR4buZbmcgxJHhur9uIMO9IMSR4buLbmggYuG7jyBo4buNYyBj4bunYSBzaW5oIHZpw6puIG7Dqm4gY8OzIHRo4buDIGtow6FjIGvhur90IHF14bqjIHNvIHbhu5tpIGPDoWMgbmdoacOqbiBj4bupdSBraMOhYy4NCg0KIyBUw4BJIExJ4buGVSBUSEFNIEtI4bqiTw0KDQpbMV0gVC5LLlRoYW5oICYgVC5NLlTGsOG7nW5nICYgVi5BLkwuRHV5ICgyMDIyKS4gKkdpw6FvIHRyw6xuaCBQaMOibiB0w61jaCBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oKi4gVHLGsOG7nW5nIMSQ4bqhaSBo4buNYyBUw6BpIGNow61uaCAtIE1hcmtldGluZy4NCg0KWzJdIEJlYW4sSi5QLiAoMTk4MCkuIERyb3BvdXRzIGFuZCB0dXJub3ZlcjogVGhlIHN5bnRoZXNpcyBhbmQgdGVzdCBvZiBhIGNhdXNhbCBtb2RlbCBvZiBzdHVkZW50IGF0dHJpdGlvbi4qUmVzZWFyY2ggaW4gdGhlIGhpZ2hlciBlZHVjYXRpb24qLDEyKDIpLCAxNTUtMTg3Lg0K