LỜI CẢM ƠN
Lời đầ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 Phân tích dữ liệu định tính vào chương
trình học. Trong thời gian tham gia lớp học môn Mô phỏng ngẫu nhiên vừa
qua, tôi đã được tiếp cận nhiều kiến thức chuyên ngành và kinh nghiệm
thực tiễn bổ ích qua sự hướng dẫn của giảng viên hướng dẫn- ThS. Trần
Mạnh Tường. Mặc dù còn gặp khó khăn trong quá trình tiếp thu kiến thức,
nhưng với sự hướng dẫn tận tình và góp ý một cách chi tiết của giảng
viên hướng dẫn, tôi đã có thể tiếp thu kiến thức và thực hiện bài tiểu
luận này một cách tốt hơn. Đâ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.
Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng tiếp thu
thực tế còn nhiều bỡ ngỡ. Mặc dù đã cố gắng hết sức nhưng bài tiểu luận
khó có thể tránh khỏi những thiếu sót, kính mong thầy xem xét và góp ý
để những bài tiểu luận trong tương lai của tôi được hoàn thiện hơn.
Tôi xin chân thành cảm ơn!
TP. Hồ Chí Minh, ngày 09 tháng 08 năm 2023.
Chương 1. MỞ ĐẦU
1.1 Vấn đề cần nghiên cứu
Giống như bất kỳ hành vi nào của người khác, hành vi mua hàng của
người tiêu dùng có thể được xác định bởi nhiều yếu tố. Các công ty này
không tìm cách bán hàng mà hướng tới sự hài lòng lâu dài của người tiêu
dùng bằng cách cung cấp các sản phẩm có chất lượng cao với mục tiêu tồn
tại lâu dài và liên tục của chính họ (Haghshenas et al. 2013).
Hiểu hành vi mua của người tiêu dùng là một yếu tố quan trọng của bất
kỳ hoạt động kinh doanh nào. Trong một nền kinh tế định hướng tiếp thị,
hành vi mua của người tiêu dùng là một yếu tố rất quan trọng trong sự
thành công của doanh nghiệp. Vì vậy, đã có rất nhiều nghiên cứu, công
trình nghiên cứu tập trung vào hiện tượng này. Nhiều yếu tố và đặc điểm
khác nhau có tác động tích cực hoặc tiêu cực đến hành vi mua hàng của
người tiêu dùng.
Nghiên cứu và hiểu các yếu tố này góp phần hiểu rõ hơn về hành vi của
người tiêu dùng. Các đặc điểm cá nhân và nhân khẩu xã hội như tuổi tác,
lối sống, nghề nghiệp và nhiều yếu tố khác ảnh hưởng đáng kể đến hành vi
mua hàng của người tiêu dùng. Vì vậy bài viết này đặc biệt tập trung tìm
hiểu các yếu tố như tình trạng hôn nhân, trình độ học vấn, thu nhập và
số con trong hộ gia đình để xem chúng có ảnh hưởng như thế nào đến hành
vi mua hàng của người tiêu dùng, mặt hàng được quan tâm trong bài là mặt
hàng rượu.
1.2 Mục tiêu nghiên cứu
Tập trung tìm hiểu các yếu tố như tình trạng hôn nhân, trình độ học
vấn, thu nhập và số con trong hộ gia đình để xem chúng có ảnh hưởng như
thế nào đến hành vi mua hàng của người tiêu dùng, mặt hàng được quan tâm
trong bài là mặt hàng rượu.
1.3 Đối tượng nghiên cứu
Đối tượng nghiên cứu là thông tin của 2217 khách hàng được ghi nhận
lại sau 2 năm mua hàng tại một cửa hàng bán lẻ.
1.4 Kết cấu nghiên cứu
Chương 1. Mở đầu
Chương 2. Tổng quan nghiên cứu
Chương 3. Thiết kế nghiên cứu
Chương 4. Kết quả nghiên cứu
Chương 5. Kết luận và khuyến nghị
Chương 2. TỔNG QUAN NGHIÊN CỨU
2.1 Hành vi tiêu dùng
Hành vi tiêu dùng được hiểu là những hành vi được mỗi cá nhân thể
hiện trong quá trình ra quyết định mua sản phẩm, dịch vụ nào đó. Nắm rõ
hành vi của người tiêu dùng sẽ hỗ trợ doanh nghiệp đề ra chiến lược sản
phẩm, các kế hoạch tiếp thị và phân phối sản phẩm sao cho hợp lý.
Hành vi người tiêu dùng sẽ ảnh hưởng trực tiếp đến việc mua sắm hay
từ chối sản phẩm của họ. Điều này có vai trò quyết định, trong quá trình
lập và thực hiện các chiến lược như chiến lược marketing. Hành vi của
người mua chịu ảnh hưởng của bốn yếu tố chủ yếu: văn hoá, xã hội, xã
hội, và tâm lý. Tất cả các yếu tố trên đều cho ta các cơ sở để tìm cách
tác động nhằm đáp ứng người mua một cách tốt hơn.
Hiểu bản chất của hành vi mua hàng của người tiêu dùng là một thành
phần quan trọng của nghiên cứu tiếp thị trong một thời gian đáng kể. Nếu
các tổ chức có thể dự đoán các phản ứng có thể xảy ra của khách hàng đối
với các chiến lược tiếp thị của họ và tác động đến họ khi thích hợp, thì
điều quan trọng là họ phải hiểu nhu cầu và động cơ của khách hàng và
khách hàng tiềm năng của mình.
Vì thế, nghiên cứu hành vi tiêu dùng cùng với các yếu tố ảnh hưởng
đến hành vi tiêu dùng giúp doanh nghiệp nhận diện và dự đoán hành vi
tiêu dùng của những đối tượng quý khách cụ thể.Từ đó đưa ra các chiến
lược phù hợp và hiệu quả. Doanh nghiệp cần phải nghiên cứu các nhu cầu,
nhận thức, thị hiếu và những thói quen chọn lựa và mua sắm của nhóm
khách hàng mục tiêu. Việc nghiên cứu thị trường sẽ cho ta các ý tưởng về
phát triển sản phẩm mới, chức năng của sản phẩm, quyết định giá, chọn
hình thức, nội dung quảng cáo cùng các vấn đề liên quan đến công tác
marketing của doanh nghiệp. Lắng nghe thị trường để nắm bắt chính xác
các suy nghĩ và cảm nhận của khách hàng mục tiêu - đặc biệt khi khách
hàng có quan tâm về sản phẩm hoặc dịch vụ của doanh nghiệp - và sẵn sàng
nói chuyện trực tiếp với khách hàng. Tìm hiểu thị trường để nhận thấy
những xu thế mới và các thời cơ mang về lợi nhuận cho doanh nghiệp.
Theo Hiệp hội marketing Hoa Kỳ, hành vi người tiêu dùng là các ý
nghĩ, quan điểm và các hành vi được khách hàng thực hiện trong quá trình
mua sắm. Việc mua sắm của người tiêu dùng chịu tác động mạnh mẽ của yếu
tố tự nhiên, xã hội, con người và tâm lí. Đối với nhà quản trị thì các
yếu tố trên không kiểm soát được, tuy nhiên chúng phải được xem xét kỹ
lưỡng và đánh giá các tác động của chúng lên hành vi người mua hàng.
Theo Kotler & Levy, hành vi người tiêu dùng là các hành vi cụ thể
của một cá nhân khi thực hiện những hành vi mua sắm, tiêu dùng và vứt bỏ
hàng hoá hay dịch vụ.
Xác định hành vi người tiêu dùng:
Thứ nhất: Là suy nghĩ và cảm xúc của con người đối với quá trình mua
sắm và tiêu dùng.
Thứ hai: Hành vi người tiêu dùng là vận động và tương tác vì nó bị
tác động bởi các yếu tố từ môi trường bên ngoài và có sự tác động trở
lại với môi trường xã hội.
Thứ ba: Hành vi người tiêu dùng bao gồm các hành vi: mua sắm, tiêu
dùng và xử lý sản phẩm dịch vụ.
2.2 Lý thuyết về quyết định mua hàng
Người tiêu dùng tìm kiếm các mặt hàng để thỏa mãn những nhu cầu và
mong muốn cơ bản của họ. Nghiên cứu hành vi tiêu dùng, nhưng không phải
nghiên cứu xem người tiêu dùng lựa chọn mặt hàng nào mà chúng ta cố gắng
hiểu cách diễn ra quá trình ra quyết định và nhân tố ảnh hưởng đến hành
vi mua sắm (Solomon,2005, tr.6-8). Quyết định mua liên quan đếnmột chuỗi
các lựa chọn được hình thành bởi người tiêu dùng trước khi mua hàng,
người tiêu dùng đưa ra quyết định liên quan đến địa điểm mua, nhãn hiệu
mong muốn, mẫu mã, số lượng mua, thời gian mua, chi phí và phương thức
thanh toán (Hanaysha, 2018).
Kotler và Levy (1969) chỉ ra cho thấy người tiêu dùng quyết định mua
dựa trên nền tảng cơ bản:
Xã hội – Đối tượng khách hàng sống trong xã hội, cho nên hành vi
của họ chi phối bởi nhiều yếu tố trong xã hội. Từ lựa chọn ăn mặc cho
đến thói quen ăn uống đều chịu sự chi phối mạnh mẽ của văn hóa. Mỗi tầng
lớp giai cấp trong xã hội đều có tư duy lựa chọn khác nhau, do đó, hiểu
rõ xã hội là thực hiện phương châm bán những thứ mà khách hàng
cần.
Yếu tố cá nhân- Cá tính là một con người có tính cách khác biệt
dẫn đến các hành vi ứng xử đối với môi trường xung quanh. Tuổi tác, tình
trạng kinh tế, lối sống có tác động đến nhu cầu về các loại hàng hoá,
dịch vụ. Người cẩn thận tỉ mỉ, người lớn tuổi có thể quan tâm đến chất
lượng sản phẩm hơn, hay người có điều kiện kinh tế sẽ quan tâm đến sản
phẩm chất lượng hơn sản phẩm giá rẻ.
Các yếu tố mang tính chất tâm lý: Động cơ, Tri giác, Lĩnh hội,
Niềm tin và Thái độ. Nhu cầu sẽ thúc đẩy con người hành động (đi mua
sắm) để đáp ứng nhu cầu. Tri giác là một quá trình thông qua đó con
người tuyển chọn, tổ chức các thông tin nhận được, sự thiết kế nổi bật
của cửa hàng hay sự quảng cáo truyền thông tác động đến tri thức của
khách hàng. Càng trực nghiệm nhiều kiến thức được lĩnh hội càng
2.3 Các 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[y_i]= (β_0+ β_{1x1i}+...+
β_kx_{ki})\)
Để mô hình hồi quy cổ điển phải thỏa mãn 3 điều kiện sau:
Tính tuyến tính của mối quan hệ giữa biến phụ thuộc và các biến
độc lập.
Phương sai sai số không đổi.
Phân phối chuẩn của phần dư
Mô hình hồi quy tổng quát:
\(μ_i = g^{-1}(β_0+ β_{1x1i}+...+
β_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).
Chương 3. THIẾT KẾ NGHIÊN CỨU
3.1 Mô hình nghiên cứu
3.1.1 Mô hình logit
\(logit(π) = log (π/1-π) = β_0+ β_1X_1+
β_2X_2+...+ B_kX_k\)
Với π là xác suất để biến phụ thuộc nhận giá trị “thành công”. Đối
với hàm glm phạm trù thứ hai của biến nhị phân thể hiện cho “thành công”
(chúng ta sử dụng hàm levels() để kiểm tra thứ tự của các phạm trù của
một biến định tính.
3.1.2 Các tiêu chí đánh giá mô hình
Để đánh giá các mô hình hồi cổ điển chúng ta thường dựa vào hệ số xác
định mô hình \((R^2)\), nhưng đối với
mô các mô hình hồi quy tuyến tính tổng quát chúng ta sử dụng các tiêu
chí sau:
AIC - Akaike Information Criterion
AIC được đề xuất bởi Akaike Hirotugu, một nhà thống kê học người
Nhật. AIC là một tiêu chí được sử dụng một cách phổ biến để đánh giá một
mô hình hồi quy được ước lượng bởi phương pháp Maximum Likekihood (ML).
Một cách chung chung giá trị của AIC càng nhỏ thì mô hình càng tốt. AIC
được tính bằng công thức sau: \(AIC=
-2ln(L)+2k\) Với L là giá trị cực đại của hàm hợp lý (likelihood
function) và k là số tham số của mô hình.
Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì chỉ số
AIC đã được tính toán và thể hiện trên bảng kết quả ( bằng lệnh
summary)
Deviance
Deviance cũng 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).
Một cách tổng quá, 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.
lưu ý: Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì
chỉ số AIC và Deviance đã được tính toán và thể hiện trên bảng kết quả (
bằng lệnh summary).
Brier Score Là chỉ tiêu dùng để đánh giá mô hình hồi
quy logistic, Brier Score được tính như sau: \(B= 1/n \sum_{i=1}^{n}(p_i-o_i)\)
Trong đó: pi,oi lần lượt là giá trị xác suất quan sát được, và giá
trị xác suất tính ra từ mô hình.
3.2 Dữ liệu ngiên cứu
Bộ dữ liệu được thu thập từ bài nghiên cứu “Consumer Buying Behavior
Analysis” có địa chỉ: https://www.kaggle.com/code/aradhanapratap/consumer-buying-behavior-analysis/notebook
từ trang Kaggle.com.
Đây là bộ dữ liệu thu thập thông tin về người tiêu dùng như: Độ tuổi,
giới tính, tình trạng hôn nhân, thu nhập… và thói quen mua hàng của họ
dựa trên số tiền chi cho các sản phẩm về rượu, thịt, cá, đồ ngọt… Qua đó
giúp doanh nghiệp hiểu rõ hơn về khách hàng của mình và dễ dàng điều
chỉnh sản phẩm tùy theo nhu cầu, hành vi và mối quan tâm cụ thể của các
nhóm đối tượng khách hàng khác nhau.
Xét theo đặc điểm, các biến được chia thành 2 nhóm, gồm: nhóm thông
tin về khách hang và nhóm thông tin về sản phẩm được chọn mua. Các biến
được đặt tên như sau:
Nhóm Khách hàng
• ID: Định danh duy nhất của khách hàng • Year_Birth: Năm sinh của
khách hàng • Education: Trình độ học vấn của khách hàng •
Marital_Status: Tình trạng hôn nhân của khách hàng • Income: Thu nhập hộ
gia đình hàng năm của khách hàng • Kidhome: Số con trong hộ gia đình
khách hàng • Teenhome: Số lượng thanh thiếu niên trong hộ gia đình khách
hàng • Recency: Số ngày kể từ lần mua cuối cùng của khách hàng.
Nhóm Các sản phẩm (Đơn vị: Đô la Mỹ)
• MntWines: Số tiền chi cho rượu trong 2 năm qua • MntFruits: Số tiền
chi cho trái cây trong 2 năm qua • MntMeatProducts: Số tiền chi cho thịt
trong 2 năm qua • MntFishProducts: Số tiền chi cho cá trong 2 năm qua •
MntSweetProducts: Số tiền chi cho đồ ngọt trong 2 năm qua •
MntGoldProds: Số tiền mua vàng trong 2 năm qua.
df <- read.csv("C:/Users/MSII/Downloads/vlvy_marketing_dataset (1).csv ")
3.3 Thống kê mô tả cho dữ liệu định lượng
3.3.1 Thống kê mô tả biến Income
Income: Thu nhập hộ gia đình hàng năm của khách hàng (Đơn vị: Đô la
Mỹ)
summary(df$Income)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1730 35303 51382 52247 68522 666666 1
Thống kê mô tả cho thấy thu nhập trung bình theo hộ gia đình của
những khách hàng đến mua tại cửa hàng là $5224, người có thu nhập thấp
nhất có mức $1730 , người có thu nhập cao nhất có mức thu nhập $666666.
Có 25% hộ gia đình có thu nhập nhỏ hơn hoặc bằng mức $35303, 50% hộ có
mức thu nhập nhỏ hơn hoặc bằng $51382 và 75% hộ có thu nhập nhỏ hơn hoặc
bằng $68522.
summary(df$Income)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1730 35303 51382 52247 68522 666666 1
# Turn of scientific values
options(scipen = 999)
# Histogram
hist(df$Income, breaks = "FD", col = "navy", main = "Histogram of Income", xlab = "Income", ylab = "Frequency", xlim = c(1, 100000), ylim = c(1, 200))

3.3.2 Thống kê mô tả biến Kidhome
Kidhome: Số con trong hộ gia đình khách hàng.
table(df$Kidhome)
##
## 0 1 2
## 1284 887 46
table(df$Kidhome)/sum(table(df$Kidhome))
##
## 0 1 2
## 0.57916103 0.40009021 0.02074876
Thống kê cho thấy số hộ gia đình không có con lên đến 1284 hộ chiếm
tỷ lệ 57,92%, số hộ gia đình có 1 con là 887 hộ chiếm tỷ lệ 40,01%, số
hộ gia đình có 2 con là 46 hộ chiếm tỷ lệ 2,07%.
kidhome_counts <- table(df$Kidhome)
library(ggplot2)
ggplot(df,aes(df$Kidhome))+
geom_bar(fill = "navy")+
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', vjust = - .5, col = "red") +
theme_minimal () +
labs(title = "Barplot of Kidhome", x = "Kidhome")
## Warning: Use of `df$Kidhome` is discouraged.
## ℹ Use `Kidhome` instead.
## Use of `df$Kidhome` is discouraged.
## ℹ Use `Kidhome` instead.

3.2.1 Thống kê mô tả nhóm các sản phẩm
(Đơn vị: Đô la Mỹ)
MntWines: Số tiền chi cho rượu trong 2 năm qua
MntMeatProducts: Số tiền chi cho thịt trong 2 năm qua
MntFishProducts: Số tiền chi cho cá trong 2 năm qua
MntSweetProducts: Số tiền chi cho đồ ngọt trong 2 năm
qua
Thống kê mô tả của các biến như sau:
products <- data.frame(df$MntWines, df$MntMeatProducts, df$MntFishProducts, df$MntSweetProducts)
pr <- summary(products)
pr
## df.MntWines df.MntMeatProducts df.MntFishProducts df.MntSweetProducts
## Min. : 0 Min. : 0.0 Min. : 0.00 Min. : 0.00
## 1st Qu.: 24 1st Qu.: 16.0 1st Qu.: 3.00 1st Qu.: 1.00
## Median : 174 Median : 68.0 Median : 12.00 Median : 8.00
## Mean : 305 Mean : 167.6 Mean : 37.63 Mean : 27.02
## 3rd Qu.: 505 3rd Qu.: 233.0 3rd Qu.: 50.00 3rd Qu.: 33.00
## Max. :1493 Max. :1725.0 Max. :259.00 Max. :262.00
Qua thống kê ta thấy:
Số tiền chi cho rượu của các hộ gia đình trong 2 năm qua trung
bình là $305. Trong đó có những hộ gia đình không chi tiền cho rượu. Số
tiền hộ gia đình chi cho rượu nhiều nhất trong mẫu là $1493. 25% hộ có
mức chi tiền cho rượu nhỏ hơn hoặc bằng $24, 50% hộ có mức chi nhỏ hơn
hoặc bằng $174 và 75% có mức chi nhỏ hơn hoặc bằng $505.
Số tiền chi cho các sản phẩm thịt của các hộ gia đình trong 2 năm
qua trung bình là $167.6. Trong đó có những hộ gia đình không chi tiền
cho thịt. Số tiền hộ gia đình chi cho thịt nhiều nhất trong mẫu là
$1725.0. 25% hộ có mức chi tiền cho thịt nhỏ hơn hoặc bằng $16.0, 50% hộ
có mức chi nhỏ hơn hoặc bằng $68.0 và 75% có mức chi nhỏ hơn hoặc bằng
$233.0.
Số tiền chi cho các sản phẩm cá của các hộ gia đình trong 2 năm
qua trung bình là $37.63. Trong đó có những hộ gia đình không chi tiền
cho cá. Số tiền hộ gia đình chi cho cá nhiều nhất trong mẫu là $259.00.
25% hộ có mức chi tiền cho cá nhỏ hơn hoặc bằng $3.00, 50% hộ có mức chi
nhỏ hơn hoặc bằng $12.00 và 75% có mức chi nhỏ hơn hoặc bằng
$50.00.
Số tiền chi cho các sản phẩm đồ ngọt của các hộ gia đình trong 2
năm qua trung bình là $27.02. Trong đó có những hộ gia đình không chi
tiền cho đồ ngọt. Số tiền hộ gia đình chi cho đồ ngọt nhiều nhất trong
mẫu là $262.00. 25% hộ có mức chi tiền cho đồ ngọt nhỏ hơn hoặc bằng
$1.00, 50% hộ có mức chi nhỏ hơn hoặc bằng $8.00 và 75% có mức chi nhỏ
hơn hoặc bằng $33.00.
column_names <- names(df[9:13])
product_counts <- colSums(df[9:13])
proportions <- product_counts/sum(product_counts)
pie(proportions, labels = column_names, main = "Pie Chart of 5 Products", col = rainbow(length(product_counts)))

3.4 Thống kê mô tả cho dữ liệu định tính
3.4.1 Thống kê mô tả biến Marital_Status
Biến Marital_Status thể hiện Tình trạng hôn nhân của các khách hàng
được khảo sát.
table(df$Marital_Status)
##
## Divorced Married Single Together Widow
## 232 858 476 575 76
Tình trạng hôn nhân của 2217 khách hàng được khảo sát như sau:
- Đã ly hôn: 232 chiếm 10,46%
- Đã kết hôn: 858 chiếm 38,66%
- Độc thân: 476 chiếm 21,47%
- Chung sống: 575 chiếm 25,89%
- Góa phụ: 76 chiếm 3,43%
Tỷ lệ của các tình trạng trên được thể hiện như sau:
table(df$Marital_Status)
##
## Divorced Married Single Together Widow
## 232 858 476 575 76
library(ggplot2)
ggplot(df,aes(df$Marital_Status))+
geom_bar(fill = "navy")+
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', vjust = - .5, col = "red") +
theme_minimal () +
labs(title = "Customer's marital status", x = "Marital Status")
## Warning: Use of `df$Marital_Status` is discouraged.
## ℹ Use `Marital_Status` instead.
## Use of `df$Marital_Status` is discouraged.
## ℹ Use `Marital_Status` instead.

Ta có thể thấy người đã kết hôn chiếm tỷ lệ cao nhất về tình trạng
hôn nhân của khách hàng đến với cửa hàng này, tiếp theo sau đó lần lượt
là chung sống, độc thân, đã ly thân và góa phụ.
3.2.2 Thống kê mô tả biến Education
table(df$Education)
##
## 2n Cycle Basic Graduation Master PhD
## 201 54 1116 365 481
table(df$Education)
##
## 2n Cycle Basic Graduation Master PhD
## 201 54 1116 365 481
library(ggplot2)
ggplot(df,aes(df$Education))+
geom_bar(fill = "navy")+
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', vjust = - .5, col = "red") +
theme_minimal () +
labs(title = "Customer's Education", x = "Education")
## Warning: Use of `df$Education` is discouraged.
## ℹ Use `Education` instead.
## Use of `df$Education` is discouraged.
## ℹ Use `Education` instead.

Qua biểu đồ ta có thể thấy số lượng khách hàng có tình trạng học vấn
đã tốt nghiệp chiếm tỷ lệ cao nhất trong nhóm khảo sát chiếm 50,3%
3.5 Chuyển đổi dữ liệu định tính
Nhóm “Married”, “Together” sẽ được xem là “Relationship”. Trong khi
“Divorced”, “Widow”, “Single” trở thành “Single”
# Chuyển đổi biến Marital_Status
df$Marital_Status <- gsub("Married|Together", "Relationship", df$Marital_Status)
df$Marital_Status <- gsub("Divorced|Widow|Single", "Single", df$Marital_Status)
Marital_Status <- df$Marital_Status
Nhóm “PhD”, “Graduation” và “Master” trở thành “PG”. Nhóm “Basic” và
“2n Cycle” trở thành “UG
# Chuyển đổi biến Education
df$Education <- gsub("PhD|Graduation|Master", "PG", df$Education)
df$Education <- gsub("Basic|2n Cycle", "UG", df$Education)
Education <- df$Education
Số con trong hộ gia đình bằng trẻ em trong hô gia đình cộng với số
trẻ vị thành niên trong hộ gia đình
# Create Kids
Kids <- df$Kidhome + df$Teenhome
product_data <- list()
for (i in 1:length(df)) {
productdata <- c(df$MntWines[i], df$MntMeatProducts[i], df$MntFishProducts[i],
df$MntSweetProducts[i], df$MntGoldProds[i])
product_data <- c(product_data, list(productdata))
}
Products_DF <- data.frame(matrix(unlist(product_data), nrow=length(product_data), byrow=TRUE))
colnames(Products_DF) <- c('Wines', 'Meat', 'Fish', 'Sweets', 'Gold')
head(Products_DF)
## Wines Meat Fish Sweets Gold
## 1 635 546 172 88 88
## 2 11 6 2 1 6
## 3 426 127 111 21 42
## 4 11 20 10 3 5
## 5 173 118 46 27 15
## 6 520 98 0 42 14
Tính số tuổi từ năm sinh khách hàng, độ tuổi từ 0- 30 được gán thành
“Young” chỉ khách hàng giới trẻ, độ tuổi từ 30- 45 gán thành “Adutl”
được gọi là người lớn, độ tuổi từ 45- 65 gán thành “Mature” chỉ người
trưởng thành, độ tuổi từ 65- 120 gán thành “Senior” là nhóm người cao
tuổi.
Khách hàng chi từ 0- 100$ cho rượu trong vòng 2 năm được gọi là khách
hàng chi tiêu thấp cho rượu, gán thành “Least Active Customer”. Trong
khi đó, khách hàng chi từ 100- 1500$ cho rượu trong vòng 2 năm qua được
gọi là khách hàng chi tiêu cao cho rượu, gán thành “Highly Active
Customer”
library(dplyr)
#Create Age segment
Age <- 2023 - df$Year_Birth
cut_labels_Age <- c("Young", "Adult", "Mature", "Senior")
cut_bins <- c(0, 30, 45, 65, 120)
Age_segment <- cut(Age, breaks=cut_bins, labels=cut_labels_Age)
#Create Wines segment
cut_labels <- c('Least Active Customer', 'Highly Active Customer')
cut_bins <- c(0, 100, 1500)
Wines_segment <- cut(df$MntWines, breaks=cut_bins, labels=cut_labels)
3.6 Thống kê mô tả cho 2 biến định tính
3.6.1 Phân tích mối quan hệ giữa Marital_Status và
Wines_segment
Bảng tần suất của hai biến Marital_Status và Wines_segment
mw <-table(Marital_Status, Wines_segment)
mw
## Wines_segment
## Marital_Status Least Active Customer Highly Active Customer
## Relationship 600 826
## Single 327 451
mw2 <- data.frame(Marital_Status, Wines_segment)
library(ggplot2)
ggplot(mw2, aes(Marital_Status, fill = Wines_segment)) + geom_bar(position = 'dodge') +
labs(title = "Analysis of the Correlation between Marital Status and Wines_segment")

Qua biểu đồ ta có thể thấy, dù ở tình trạng độc thân hay trong mối
quan hệ thì số tiền bỏ ra cho rượu ở các hộ gia đình trong nhóm quan sát
là khá cao. Trong đó, nhóm khách hàng trong mối quan hệ là chi nhiều
tiền cho rượu trong vòng 2 năm qua nhất. Khoảng 600 khách hàng ở nhóm
trong mối quan hệ có thói quen chi ít tiền cho rượu và đến hơn 800 người
trong nhóm này chi nhiều tiền cho rượu trong vòng 2 năm qua. Trong khi
đó, nhóm khách hàng độc thân có khoảng hơn 200 người chi ít tiền cho
rượu và khoảng 450 người chi nhiều tiền cho rượu trong 2 năm qua.
3.6.2 Phân tích mối quan hệ giữa Age_segment và Wines_segment
Bảng tần suất của hai biến Marital_Status và Wines_segment
aw <-table(Age_segment, Wines_segment)
aw
## Wines_segment
## Age_segment Least Active Customer Highly Active Customer
## Young 3 11
## Adult 303 226
## Mature 496 706
## Senior 123 333
aw2 <- data.frame(Age_segment, Wines_segment)
library(ggplot2)
ggplot(mw2, aes(Age_segment, fill = Wines_segment)) + geom_bar(position = 'dodge') +
labs(title = "Analysis of the Correlation between Age_segment and Expenses")

Qua biểu đồ ta có thể thấy, nhóm khách hàng từ 30 tuổi trở lên chi
nhiều tiền cho rượu hơn nhóm khách hàng U30 tuổi. Trong đó, nhóm khách
hàng trưởng thành từ 45- 65 là nhóm chi nhiều tiền cho rượu nhất trong
vòng 2 năm qua khi đến hơn 800 người thuộc nhóm khách hàng có hoạt động
chi tiêu cao.
3.6.3 Phân tích mối quan hệ giữa Education và Wines_segment
ew <-table(Education, Wines_segment)
ew
## Wines_segment
## Education Least Active Customer Highly Active Customer
## PG 770 1189
## UG 157 88
ew2 <- data.frame(Education, Wines_segment)
library(ggplot2)
ggplot(ew2, aes(Education, fill = Wines_segment)) + geom_bar(position = 'dodge') +
labs(title = "Analysis of the Correlation between Education and Wines_segment")
Qua biểu đồ ta có thể thấy, khách hàng ở nhóm có trình độ học vấn là PG
có thói quen chi nhiều tiền hơn cho rượu khi có đến khoảng 1200 khách
hàng thuộc nhóm chi tiêu cao cho rượu trong vòng 2 năm qua.
3.7 Rủi ro tương đối
Ký hiệu \(π_i\) là tỷ lệ “thành
công” của biến phụ thuộc (response variable) tương ứng với từng biểu
hiện của biến độc lập.
Từ bảng tần suất, chúng ta tính \(π_1/π_2\), phân số này gọi là Rủi ro tương
đối (Relative risk) giữa 2 biểu hiện khác nhau của biến phụ thuộc.
3.7.1 Rủi ro tương đối giữa Marital_Status và Wines_segment
addmargins(mw)
## Wines_segment
## Marital_Status Least Active Customer Highly Active Customer Sum
## Relationship 600 826 1426
## Single 327 451 778
## Sum 927 1277 2204
Từ bảng tần suất chúng ta thấy
Khách hàng có tình trạng hôn nhân là trong mối quan hệ có 600
khách hàng thuộc nhóm chi tiêu thấp cho rượu trong vòng 2 năm qua và 826
khách hàng thuộc nhóm chi tiêu cao cho rượu trong vòng 2 năm
qua.
Khách hàng có tình trạng hôn nhân là độc thân có 327 khách hàng
thuộc nhóm chi tiêu thấp cho rượu trong vòng 2 năm qua và 451 khách hàng
trong thuộc nhóm chi tiêu cao cho rượu trong vòng 2 năm qua.
Chúng ta tính rủi ro tương đối (relative risk).
## Lệnh này tính relativerisk cho vị trí 12 và 22
library("DescTools")
RelRisk(mw)
## [1] 1.001068
Theo kết quả trên cho thấy tỷ lệ rủi ro tương đối của khách hàng chi
tiêu cao cho rượu là tính là 1,001068, có nghĩa là tỷ lệ những khách
hàng khách hàng chi tiêu cao cho rượu có tình trạng hôn nhân là trong
mối quan hệ gấp 1,001068 lần tỷ lệ những khách hàng khách hàng chi tiêu
cao cho rượu có tình trạng hôn nhân là độc thân.
3.7.2 Bảng tần suất giữa Age_segment và Wines_segment
addmargins(aw)
## Wines_segment
## Age_segment Least Active Customer Highly Active Customer Sum
## Young 3 11 14
## Adult 303 226 529
## Mature 496 706 1202
## Senior 123 333 456
## Sum 925 1276 2201
Từ bảng tần suất chúng ta thấy
Khách hàng có độ tuổi là người trẻ có 3 khách hàng thuộc nhóm chi
tiêu thấp cho rượu trong vòng 2 năm qua và 11 khách hàng thuộc nhóm chi
tiêu cao cho rượu trong vòng 2 năm qua.
Khách hàng có độ tuổi là người là người lớn có 303 khách hàng
thuộc nhóm chi tiêu thấp cho rượu trong vòng 2 năm qua và 226 khách hàng
trong thuộc nhóm chi tiêu cao cho rượu trong vòng 2 năm qua.
Khách hàng có độ tuổi là người là người trưởng thành có 496 khách
hàng thuộc nhóm chi tiêu thấp cho rượu trong vòng 2 năm qua và 706 khách
hàng trong thuộc nhóm chi tiêu cao cho rượu trong vòng 2 năm
qua.
Khách hàng có độ tuổi là người là người lớn tuổi có 123 khách
hàng thuộc nhóm chi tiêu thấp cho rượu trong vòng 2 năm qua và 333 khách
hàng trong thuộc nhóm chi tiêu cao cho rượu trong vòng 2 năm
qua.
3.7.3 Rủi ro tương đối giữa Education và Wines_segment
addmargins(ew)
## Wines_segment
## Education Least Active Customer Highly Active Customer Sum
## PG 770 1189 1959
## UG 157 88 245
## Sum 927 1277 2204
Từ bảng tần suất chúng ta thấy
Khách hàng có trình độ học vấn là PG có 770 khách hàng thuộc nhóm
chi tiêu thấp cho rượu trong vòng 2 năm qua và 1189 khách hàng thuộc
nhóm chi tiêu cao cho rượu trong vòng 2 năm qua.
Khách hàng có trình độc học vấn là UG có 157 khách hàng thuộc
nhóm chi tiêu thấp cho rượu trong vòng 2 năm qua và 88 khách hàng trong
thuộc nhóm chi tiêu cao cho rượu trong vòng 2 năm qua.
Chúng ta tính rủi ro tương đối (relative risk).
## Lệnh này tính relativerisk cho vị trí 12 và 22
library("DescTools")
RelRisk(ew)
## [1] 0.6133703
Theo kết quả trên cho thấy tỷ lệ rủi ro tương đối của khách hàng chi
tiêu cao cho rượu là tính là 0,6133703, có nghĩa là tỷ lệ những khách
hàng khách hàng chi tiêu cao cho rượu có trình độ học vấn là PG gấp
0,6133703 lần tỷ lệ những khách hàng khách hàng chi tiêu cao cho rượu có
trình độ học vấn là UG.
3.8 Tỷ lệ chênh
3.8.1 Tỷ lệ chênh giữa Marital_Status và Wines_segment
## Câu lệnh này sẽ tính oddratio cho vị trí 11 và 21
OddsRatio(mw)
## [1] 1.001844
Theo kết quả trên cho thấy, tỷ lệ khách hàng có tình trạng hôn nhân
là trong mối quan hệ và thuộc nhóm chi tiêu thấp cho rượu bằng 100,184%
tỷ lệ khách hàng có tình trạng hôn nhân là độc thân và thuộc nhóm chi
tiêu thấp cho rượu. Điều này có nghĩa là xác suất xảy ra sự kiện khách
hàng trong mối quan hệ và thuộc nhóm chi tiêu thấp cho rượu nhiều hơn
nhóm khách hàng độc thân và thuộc nhóm chi tiêu thấp cho rượu
3.8.2 Tỷ lệ chênh giữa Education và Wines_segment
## Câu lệnh này sẽ tính oddratio cho vị trí 11 và 21
OddsRatio(ew)
## [1] 0.3629877
Theo kết quả trên cho thấy, tỷ lệ khách hàng có trình độ học vấn là
PG và thuộc nhóm chi tiêu thấp cho rượu bằng 38,95% tỷ lệ khách hàng có
trình độ học vấn UG và thuộc nhóm chi tiêu thấp cho rượu. Điều này có
nghĩa xác suất xảy ra trường hợp khách hàng có trình độ học vấn PG và
thuộc nhóm chi tiêu thấp thấp hơn trường hợp khách hàng có trình độ học
vấn UG và thuộc nhóm chi tiêu thấp.
3.9 Thống kê suy diễn cho dữ liệu
Để xác định xem hai biến có độc lập hay không, kiểm định chi bình
phương (chi-square test) sẽ được sử dụng để kiểm tra mối quan hệ giữa
hai biến phân loại (categorical variables) trong một bảng tần số
(frequency table).
Khi p-value nhỏ hơn mức ý nghĩa (0.05) trong kiểm định chi bình
phương, ta kết luận rằng hai biến là phụ thuộc lẫn nhau, tức là không
độc lập. Ngược lại, khi p-value lớn hơn mức ý nghĩa, ta không có đủ bằng
chứng để bác bỏ giả thuyết không độc lập giữa hai biến.
3.9.1 Kiểm định tính độc lập cho Marital và Wines_segment
Ta kiểm tra xem tình trạng hôn nhân có ảnh hưởng đến mức chi tiêu
rượu của khách hàng trong vòng 2 năm qua hay không.
chisq.test(mw)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mw
## X-squared = 0, df = 1, p-value = 1
Kết quả kiểm định p- value= 1 > 0,05. Như vậy, với mức ý nghĩa 5%
ta không có đủ bằng chứng để bác bỏ giả thuyết không độc lập giữa tình
trạng hôn nhân và mức chi tiêu cho rượu chủa khách hàng.
3.9.2 Kiểm định tính độc lập cho Education và Wines_segment
Ta kiểm tra xem trình độ học vấn có ảnh hưởng đến mức chi tiêu rượu
của khách hàng trong vòng 2 năm qua hay không.
chisq.test(ew)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: ew
## X-squared = 53.841, df = 1, p-value = 0.0000000000002174
Kết quả kiểm định p- value= 0,000001468 < 0,05. Như vậy, với mức ý
nghĩa 5% ta kết luận trình độ học vấn và mức chi tiêu rượu của khách
hàng là phụ thuộc lẫn nhau.
3.9.3 Kiểm định tính độc lập cho Age_segment và Wines_segment
Ta kiểm tra xem độ tuổi có ảnh hưởng đến mức chi tiêu rượu của khách
hàng trong vòng 2 năm qua hay không.
chisq.test(aw)
##
## Pearson's Chi-squared test
##
## data: aw
## X-squared = 95.636, df = 3, p-value < 0.00000000000000022
Kết quả kiểm định p- value= 0,00000000000000022 < 0,05. Như vậy,
với mức ý nghĩa 5% ta kết luận độ tuổi và mức chi tiêu rượu của khách
hàng là phụ thuộc lẫn nhau.
3.10 Khoảng ước lượng cho tỷ lệ
- Ước lượng tỷ lệ khách hàng trong mối quan hệ thuộc nhóm chi tiêu cao
cho rượu đồng thời kiểm định xem tỷ lệ khách hàng trong mối quan hệ
thuộc nhóm chi tiêu cao có bằng 37,47% hay không.
ul.mw <- mw2[Marital_Status == "Relationship",]
prop.test(length(ul.mw$Marital_Status), length(Marital_Status), p = 0.3747)
##
## 1-sample proportions test with continuity correction
##
## data: length(ul.mw$Marital_Status) out of length(Marital_Status), null probability 0.3747
## X-squared = 697.19, df = 1, p-value < 0.00000000000000022
## alternative hypothesis: true p is not equal to 0.3747
## 95 percent confidence interval:
## 0.6260021 0.6662237
## sample estimates:
## p
## 0.646369
Với khoảng tin cậy 95% uớc lượng tỷ lệ khách hàng trong mối quan hệ
thuộc nhóm chi tiêu cao cho rượu nằm trong khoảng từ 0,6260021
0,6662237
p-value > 0, chưa đủ cơ sở bác bỏ giả thuyết H0. Do đó tỷ lệ khách
hàng trong mối quan hệ thuộc nhóm chi tiêu cao cho rượu bằng 37,47% với
mức ý nghĩa 5%.
- Ước lượng tỷ lệ khách hàng độc thân thuộc nhóm chi tiêu cao cho rượu
đồng thời kiểm định xem tỷ lệ khách hàng độc thân thuộc nhóm chi tiêu
cao có bằng 20,46% hay không.
ul.mw2 <- mw2[Marital_Status == "Single",]
prop.test(length(ul.mw2$Marital_Status), length(Marital_Status), p = 0.2046)
##
## 1-sample proportions test with continuity correction
##
## data: length(ul.mw2$Marital_Status) out of length(Marital_Status), null probability 0.2046
## X-squared = 301.66, df = 1, p-value < 0.00000000000000022
## alternative hypothesis: true p is not equal to 0.2046
## 95 percent confidence interval:
## 0.3337763 0.3739979
## sample estimates:
## p
## 0.353631
Với khoảng tin cậy 95% uớc lượng tỷ lệ khách hàng độc thân thuộc nhóm
chi tiêu cao cho rượu nằm trong khoảng từ 0,3337763 đến 0,3739979
p-value > 0, chưa đủ cơ sở bác bỏ giả thuyết H0. Do đó tỷ lệ tỷ lệ
khách hàng trong mối quan hệ thuộc nhóm chi tiêu cao cho rượu bằng
20,46% với mức ý nghĩa 5%.
- Ước lượng sự chênh lệch về tỷ lệ thuộc nhóm chi tiêu cao cho rượu
giữa khách hàng trong mối quan hệ và khách hàng độc thân. Đồng thời thực
hiện bài toán kiển định sự chênh lệch này.
ul.m <- mw2[Marital_Status == "Relationship",]
ul.w<- mw2[Wines_segment == "Highly Active Customer",]
ul.m2 <- mw2[Marital_Status == "Single",]
a <- c(nrow(ul.m), nrow(ul.w))
b <- c(nrow(ul.m2), nrow(ul.w))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 764.56, df = 1, p-value < 0.00000000000000022
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.4794052 -0.4263869
## sample estimates:
## prop 1 prop 2
## 0.547104 1.000000
P_value < 0, bác bỏ giả thuyết H0. Như vậy, có sự chênh lệnh giữa
tỷ lệ khách hàng trong mối quan hệ và độc thân thuộc nhóm chi tiêu cao
cho rượu.
Khoảng tin cậy 95% cho chênh lệch tỷ lệ nằm trong khoảng từ
-0,4794052 đến -0,4263869.
TÀI LIỆU THAM KHẢO
[1] Erdem, T. & Swait, J., 2004. Brand Credibility, Brand
Consideration, and Choice. Journal of Consumer Research, 31(1),
pp.191-198.
[2] Chen, C.-H., Nguyen, B., Klaus, P. “Phil,” & Wu, M.-S., 2015.
Exploring Electronic Wordof-Mouth (eWOM) in The Consumer Purchase
Decision-Making Process: The Case of Online Holidays – Evidence from
United Kingdom (UK) Consumers. Journal of Travel & Tourism
Marketing, 32(8), pp.953–970.
[3] Hair, J. F., Anderson, R. E., Tatham, R. L., & Grablowsky, B.
J., 1979.Multivariate data analysis.Tulsa, OK: Pipe Booksair, J. F.,
Anderson, R. E., Tatham, R. L., & Grablowsky, B. J.
(1979).Multivariate data analysis.Tulsa, OK: Pipe Books.
[4] Hoàng Trọng, Chu Nguyễn Mộng Ngọc (2005), Phân tích dữ liệu
nghiên cứu với SPSS, NXB Thống kê.Kotler, P. & Levy, S.J. 1969,
Broadening the concept of marketing, Journal of Marketing,33(1),
pp.10-15.
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.
LS0tDQp0aXRsZTogIlRp4buDdSBsdeG6rW4ga+G6v3QgdGjDumMgbcO0biINCmF1dGhvcjogIlbDtSBMYW0gVnkiDQpkYXRlOiAiMjAyMy0wNy0xNyINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgdG9jX2NvbGxhcHNlZDogbm8NCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQpgYGB7ciByZHBseXJ9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh3ZWJzaG90MikNCmBgYA0KDQrEkOG7gSB0w6BpOiBQaMOibiB0w61jaCBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgaMOgbmcgY+G7p2Ega2jDoWNoIGjDoG5nDQoNCkxpbmsgYuG7mSBk4buvIGxp4buHdTogaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2RyaXZlL3UvMC9teS1kcml2ZQ0KDQpMaW5rIGLDoGkgdGnhu4N1IGx14bqtbjogaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2RyaXZlL3UvMC9teS1kcml2ZQ0KDQojIEzhu5xJIEPhuqJNIMagTg0KDQpM4budaSDEkeG6p3UgdGnDqm4sIHTDtGkgeGluIGfhu61pIGzhu51pIGPhuqNtIMahbiBjaMOibiB0aMOgbmggxJHhur9uIFRyxrDhu51uZyDEkOG6oWkgaOG7jWMgVMOgaSBDaMOtbmgg4oCTIE1hcmtldGluZyDEkcOjIMSRxrBhIG3DtG4gUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgxJHhu4tuaCB0w61uaCB2w6BvIGNoxrDGoW5nIHRyw6xuaCBo4buNYy4gVHJvbmcgdGjhu51pIGdpYW4gdGhhbSBnaWEgbOG7m3AgaOG7jWMgbcO0biBNw7QgcGjhu49uZyBuZ+G6q3Ugbmhpw6puIHbhu6thIHF1YSwgdMO0aSDEkcOjIMSRxrDhu6NjIHRp4bq/cCBj4bqtbiBuaGnhu4F1IGtp4bq/biB0aOG7qWMgY2h1ecOqbiBuZ8OgbmggdsOgIGtpbmggbmdoaeG7h20gdGjhu7FjIHRp4buFbiBi4buVIMOtY2ggcXVhIHPhu7EgaMaw4bubbmcgZOG6q24gY+G7p2EgZ2nhuqNuZyB2acOqbiBoxrDhu5tuZyBk4bqrbi0gVGhTLiBUcuG6p24gTeG6oW5oIFTGsOG7nW5nLiBN4bq3YyBkw7kgY8OybiBn4bq3cCBraMOzIGtoxINuIHRyb25nIHF1w6EgdHLDrG5oIHRp4bq/cCB0aHUga2nhur9uIHRo4bupYywgbmjGsG5nIHbhu5tpIHPhu7EgaMaw4bubbmcgZOG6q24gdOG6rW4gdMOsbmggdsOgIGfDs3Agw70gbeG7mXQgY8OhY2ggY2hpIHRp4bq/dCBj4bunYSBnaeG6o25nIHZpw6puIGjGsOG7m25nIGThuqtuLCB0w7RpIMSRw6MgY8OzIHRo4buDIHRp4bq/cCB0aHUga2nhur9uIHRo4bupYyB2w6AgdGjhu7FjIGhp4buHbiBiw6BpIHRp4buDdSBsdeG6rW4gbsOgeSBt4buZdCBjw6FjaCB04buRdCBoxqFuLiDEkMOieSBjaOG6r2MgY2jhuq9uIHPhur0gbMOgIG5o4buvbmcga2nhur9uIHRo4bupYyBxdcO9IGLDoXUsIGzDoCBow6BuaCB0cmFuZyDEkeG7gyB0w7RpIGPDsyB0aOG7gyB24buvbmcgYsaw4bubYyBzYXUgbsOgeS4NCg0KVHV5IG5oacOqbiwgZG8gduG7kW4ga2nhur9uIHRo4bupYyBjw7JuIG5oaeG7gXUgaOG6oW4gY2jhur8gdsOgIGto4bqjIG7Eg25nIHRp4bq/cCB0aHUgdGjhu7FjIHThur8gY8OybiBuaGnhu4F1IGLhu6Egbmfhu6EuIE3hurdjIGTDuSDEkcOjIGPhu5EgZ+G6r25nIGjhur90IHPhu6ljIG5oxrBuZyBiw6BpIHRp4buDdSBsdeG6rW4ga2jDsyBjw7MgdGjhu4MgdHLDoW5oIGto4buPaSBuaOG7r25nIHRoaeG6v3Ugc8OzdCwga8OtbmggbW9uZyB0aOG6p3kgeGVtIHjDqXQgdsOgIGfDs3Agw70gxJHhu4Mgbmjhu69uZyBiw6BpIHRp4buDdSBsdeG6rW4gdHJvbmcgdMawxqFuZyBsYWkgY+G7p2EgdMO0aSDEkcaw4bujYyBob8OgbiB0aGnhu4duIGjGoW4uDQoNCgkgVMO0aSB4aW4gY2jDom4gdGjDoG5oIGPhuqNtIMahbiENCgkgDQpUUC4gSOG7kyBDaMOtIE1pbmgsIG5nw6B5IDA5IHRow6FuZyAwOCBuxINtIDIwMjMuDQoNCiMgQ2jGsMahbmcgMS4gTeG7niDEkOG6plUNCg0KIyMgMS4xIFbhuqVuIMSR4buBIGPhuqduIG5naGnDqm4gY+G7qXUNCg0KR2nhu5FuZyBuaMawIGLhuqV0IGvhu7MgaMOgbmggdmkgbsOgbyBj4bunYSBuZ8aw4budaSBraMOhYywgaMOgbmggdmkgbXVhIGjDoG5nIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nIGPDsyB0aOG7gyDEkcaw4bujYyB4w6FjIMSR4buLbmggYuG7n2kgbmhp4buBdSB54bq/dSB04buRLiBDw6FjIGPDtG5nIHR5IG7DoHkga2jDtG5nIHTDrG0gY8OhY2ggYsOhbiBow6BuZyBtw6AgaMaw4bubbmcgdOG7m2kgc+G7sSBow6BpIGzDsm5nIGzDonUgZMOgaSBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZyBi4bqxbmcgY8OhY2ggY3VuZyBj4bqlcCBjw6FjIHPhuqNuIHBo4bqpbSBjw7MgY2jhuqV0IGzGsOG7o25nIGNhbyB24bubaSBt4bulYyB0acOqdSB04buTbiB04bqhaSBsw6J1IGTDoGkgdsOgIGxpw6puIHThu6VjIGPhu6dhIGNow61uaCBo4buNIChIYWdoc2hlbmFzIGV0IGFsLiAyMDEzKS4NCg0KSGnhu4N1IGjDoG5oIHZpIG11YSBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZyBsw6AgbeG7mXQgeeG6v3UgdOG7kSBxdWFuIHRy4buNbmcgY+G7p2EgYuG6pXQga+G7syBob+G6oXQgxJHhu5luZyBraW5oIGRvYW5oIG7DoG8uIFRyb25nIG3hu5l0IG7hu4FuIGtpbmggdOG6vyDEkeG7i25oIGjGsOG7m25nIHRp4bq/cCB0aOG7iywgaMOgbmggdmkgbXVhIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nIGzDoCBt4buZdCB54bq/dSB04buRIHLhuqV0IHF1YW4gdHLhu41uZyB0cm9uZyBz4buxIHRow6BuaCBjw7RuZyBj4bunYSBkb2FuaCBuZ2hp4buHcC4gVsOsIHbhuq15LCDEkcOjIGPDsyBy4bqldCBuaGnhu4F1IG5naGnDqm4gY+G7qXUsIGPDtG5nIHRyw6xuaCBuZ2hpw6puIGPhu6l1IHThuq1wIHRydW5nIHbDoG8gaGnhu4duIHTGsOG7o25nIG7DoHkuIE5oaeG7gXUgeeG6v3UgdOG7kSB2w6AgxJHhurdjIMSRaeG7g20ga2jDoWMgbmhhdSBjw7MgdMOhYyDEkeG7mW5nIHTDrWNoIGPhu7FjIGhv4bq3YyB0acOqdSBj4buxYyDEkeG6v24gaMOgbmggdmkgbXVhIGjDoG5nIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nLg0KDQpOZ2hpw6puIGPhu6l1IHbDoCBoaeG7g3UgY8OhYyB54bq/dSB04buRIG7DoHkgZ8OzcCBwaOG6p24gaGnhu4N1IHLDtSBoxqFuIHbhu4EgaMOgbmggdmkgY+G7p2EgbmfGsOG7nWkgdGnDqnUgZMO5bmcuIEPDoWMgxJHhurdjIMSRaeG7g20gY8OhIG5ow6JuIHbDoCBuaMOibiBraOG6qXUgeMOjIGjhu5lpIG5oxrAgdHXhu5VpIHTDoWMsIGzhu5FpIHPhu5FuZywgbmdo4buBIG5naGnhu4dwIHbDoCBuaGnhu4F1IHnhur91IHThu5Ega2jDoWMg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIGjDoG5oIHZpIG11YSBow6BuZyBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZy4gVsOsIHbhuq15IGLDoGkgdmnhur90IG7DoHkgxJHhurdjIGJp4buHdCB04bqtcCB0cnVuZyB0w6xtIGhp4buDdSBjw6FjIHnhur91IHThu5EgbmjGsCB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4sIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiwgdGh1IG5o4bqtcCB2w6Agc+G7kSBjb24gdHJvbmcgaOG7mSBnaWEgxJHDrG5oIMSR4buDIHhlbSBjaMO6bmcgY8OzIOG6o25oIGjGsOG7n25nIG5oxrAgdGjhur8gbsOgbyDEkeG6v24gaMOgbmggdmkgbXVhIGjDoG5nIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nLCBt4bq3dCBow6BuZyDEkcaw4bujYyBxdWFuIHTDom0gdHJvbmcgYsOgaSBsw6AgbeG6t3QgaMOgbmcgcsaw4bujdS4NCg0KIyMgMS4yIE3hu6VjIHRpw6p1IG5naGnDqm4gY+G7qXUNCg0KVOG6rXAgdHJ1bmcgdMOsbSBoaeG7g3UgY8OhYyB54bq/dSB04buRIG5oxrAgdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuLCB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4sIHRodSBuaOG6rXAgdsOgIHPhu5EgY29uIHRyb25nIGjhu5kgZ2lhIMSRw6xuaCDEkeG7gyB4ZW0gY2jDum5nIGPDsyDhuqNuaCBoxrDhu59uZyBuaMawIHRo4bq/IG7DoG8gxJHhur9uIGjDoG5oIHZpIG11YSBow6BuZyBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZywgbeG6t3QgaMOgbmcgxJHGsOG7o2MgcXVhbiB0w6JtIHRyb25nIGLDoGkgbMOgIG3hurd0IGjDoG5nIHLGsOG7o3UuDQoNCiMjIDEuMyDEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdQ0KDQrEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdSBsw6AgdGjDtG5nIHRpbiBj4bunYSAyMjE3IGtow6FjaCBow6BuZyDEkcaw4bujYyBnaGkgbmjhuq1uIGzhuqFpIHNhdSAyIG7Eg20gbXVhIGjDoG5nIHThuqFpIG3hu5l0IGPhu61hIGjDoG5nIGLDoW4gbOG6uy4gDQoNCiMjIDEuNCBL4bq/dCBj4bqldSBuZ2hpw6puIGPhu6l1DQoNCkNoxrDGoW5nIDEuIE3hu58gxJHhuqd1DQoNCkNoxrDGoW5nIDIuIFThu5VuZyBxdWFuIG5naGnDqm4gY+G7qXUNCg0KQ2jGsMahbmcgMy4gVGhp4bq/dCBr4bq/IG5naGnDqm4gY+G7qXUNCg0KQ2jGsMahbmcgNC4gS+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdQ0KDQpDaMawxqFuZyA1LiBL4bq/dCBsdeG6rW4gdsOgIGtodXnhur9uIG5naOG7iw0KDQojIENoxrDGoW5nIDIuIFThu5RORyBRVUFOIE5HSEnDik4gQ+G7qFUNCg0KIyMgMi4xIEjDoG5oIHZpIHRpw6p1IGTDuW5nDQoNCkjDoG5oIHZpIHRpw6p1IGTDuW5nIMSRxrDhu6NjIGhp4buDdSBsw6Agbmjhu69uZyBow6BuaCB2aSDEkcaw4bujYyBt4buXaSBjw6EgbmjDom4gdGjhu4MgaGnhu4duIHRyb25nIHF1w6EgdHLDrG5oIHJhIHF1eeG6v3QgxJHhu4tuaCBtdWEgc+G6o24gcGjhuqltLCBk4buLY2ggduG7pSBuw6BvIMSRw7MuIE7huq9tIHLDtSBow6BuaCB2aSBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZyBz4bq9IGjhu5cgdHLhu6MgZG9hbmggbmdoaeG7h3AgxJHhu4EgcmEgY2hp4bq/biBsxrDhu6NjIHPhuqNuIHBo4bqpbSwgY8OhYyBr4bq/IGhv4bqhY2ggdGnhur9wIHRo4buLIHbDoCBwaMOibiBwaOG7kWkgc+G6o24gcGjhuqltIHNhbyBjaG8gaOG7o3AgbMO9LiANCg0KIEjDoG5oIHZpIG5nxrDhu51pIHRpw6p1IGTDuW5nIHPhur0g4bqjbmggaMaw4bufbmcgdHLhu7FjIHRp4bq/cCDEkeG6v24gdmnhu4djIG11YSBz4bqvbSBoYXkgdOG7qyBjaOG7kWkgc+G6o24gcGjhuqltIGPhu6dhIGjhu40uIMSQaeG7gXUgbsOgeSBjw7MgdmFpIHRyw7IgcXV54bq/dCDEkeG7i25oLCB0cm9uZyBxdcOhIHRyw6xuaCBs4bqtcCB2w6AgdGjhu7FjIGhp4buHbiBjw6FjIGNoaeG6v24gbMaw4bujYyBuaMawIGNoaeG6v24gbMaw4bujYyBtYXJrZXRpbmcuIEjDoG5oIHZpIGPhu6dhIG5nxrDhu51pIG11YSBjaOG7i3Ug4bqjbmggaMaw4bufbmcgY+G7p2EgYuG7kW4geeG6v3UgdOG7kSBjaOG7pyB54bq/dTogdsSDbiBob8OhLCB4w6MgaOG7mWksIHjDoyBo4buZaSwgdsOgIHTDom0gbMO9LiBU4bqldCBj4bqjIGPDoWMgeeG6v3UgdOG7kSB0csOqbiDEkeG7gXUgY2hvIHRhIGPDoWMgY8ahIHPhu58gxJHhu4MgdMOsbSBjw6FjaCB0w6FjIMSR4buZbmcgbmjhurFtIMSRw6FwIOG7qW5nIG5nxrDhu51pIG11YSBt4buZdCBjw6FjaCB04buRdCBoxqFuLiANCiANCiBIaeG7g3UgYuG6o24gY2jhuqV0IGPhu6dhIGjDoG5oIHZpIG11YSBow6BuZyBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZyBsw6AgbeG7mXQgdGjDoG5oIHBo4bqnbiBxdWFuIHRy4buNbmcgY+G7p2EgbmdoacOqbiBj4bupdSB0aeG6v3AgdGjhu4sgdHJvbmcgbeG7mXQgdGjhu51pIGdpYW4gxJHDoW5nIGvhu4MuIE7hur91IGPDoWMgdOG7lSBjaOG7qWMgY8OzIHRo4buDIGThu7EgxJFvw6FuIGPDoWMgcGjhuqNuIOG7qW5nIGPDsyB0aOG7gyB44bqjeSByYSBj4bunYSBraMOhY2ggaMOgbmcgxJHhu5FpIHbhu5tpIGPDoWMgY2hp4bq/biBsxrDhu6NjIHRp4bq/cCB0aOG7iyBj4bunYSBo4buNIHbDoCB0w6FjIMSR4buZbmcgxJHhur9uIGjhu40ga2hpIHRow61jaCBo4bujcCwgdGjDrCDEkWnhu4F1IHF1YW4gdHLhu41uZyBsw6AgaOG7jSBwaOG6o2kgaGnhu4N1IG5odSBj4bqndSB2w6AgxJHhu5luZyBjxqEgY+G7p2Ega2jDoWNoIGjDoG5nIHbDoCBraMOhY2ggaMOgbmcgdGnhu4FtIG7Eg25nIGPhu6dhIG3DrG5oLg0KIA0KIFbDrCB0aOG6vywgbmdoacOqbiBj4bupdSBow6BuaCB2aSB0acOqdSBkw7luZyBjw7luZyB24bubaSBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIGjDoG5oIHZpIHRpw6p1IGTDuW5nIGdpw7pwIGRvYW5oIG5naGnhu4dwIG5o4bqtbiBkaeG7h24gdsOgIGThu7EgxJFvw6FuIGjDoG5oIHZpIHRpw6p1IGTDuW5nIGPhu6dhIG5o4buvbmcgxJHhu5FpIHTGsOG7o25nIHF1w70ga2jDoWNoIGPhu6UgdGjhu4MuVOG7qyDEkcOzIMSRxrBhIHJhIGPDoWMgY2hp4bq/biBsxrDhu6NjIHBow7kgaOG7o3AgdsOgIGhp4buHdSBxdeG6oy4gRG9hbmggbmdoaeG7h3AgY+G6p24gcGjhuqNpIG5naGnDqm4gY+G7qXUgY8OhYyBuaHUgY+G6p3UsIG5o4bqtbiB0aOG7qWMsIHRo4buLIGhp4bq/dSB2w6Agbmjhu69uZyB0aMOzaSBxdWVuIGNo4buNbiBs4buxYSB2w6AgbXVhIHPhuq9tIGPhu6dhIG5ow7NtIGtow6FjaCBow6BuZyBt4bulYyB0acOqdS4gVmnhu4djIG5naGnDqm4gY+G7qXUgdGjhu4sgdHLGsOG7nW5nIHPhur0gY2hvIHRhIGPDoWMgw70gdMaw4bufbmcgduG7gSBwaMOhdCB0cmnhu4NuIHPhuqNuIHBo4bqpbSBt4bubaSwgY2jhu6ljIG7Eg25nIGPhu6dhIHPhuqNuIHBo4bqpbSwgcXV54bq/dCDEkeG7i25oIGdpw6EsIGNo4buNbiBow6xuaCB0aOG7qWMsIG7hu5lpIGR1bmcgcXXhuqNuZyBjw6FvIGPDuW5nIGPDoWMgduG6pW4gxJHhu4EgbGnDqm4gcXVhbiDEkeG6v24gY8O0bmcgdMOhYyBtYXJrZXRpbmcgY+G7p2EgZG9hbmggbmdoaeG7h3AuIEzhuq9uZyBuZ2hlIHRo4buLIHRyxrDhu51uZyDEkeG7gyBu4bqvbSBi4bqvdCBjaMOtbmggeMOhYyBjw6FjIHN1eSBuZ2jEqSB2w6AgY+G6o20gbmjhuq1uIGPhu6dhIGtow6FjaCBow6BuZyBt4bulYyB0acOqdSAtIMSR4bq3YyBiaeG7h3Qga2hpIGtow6FjaCBow6BuZyBjw7MgcXVhbiB0w6JtIHbhu4Egc+G6o24gcGjhuqltIGhv4bq3YyBk4buLY2ggduG7pSBj4bunYSBkb2FuaCBuZ2hp4buHcCAtIHbDoCBz4bq1biBzw6BuZyBuw7NpIGNodXnhu4duIHRy4buxYyB0aeG6v3AgduG7m2kga2jDoWNoIGjDoG5nLiBUw6xtIGhp4buDdSB0aOG7iyB0csaw4budbmcgxJHhu4Mgbmjhuq1uIHRo4bqleSBuaOG7r25nIHh1IHRo4bq/IG3hu5tpIHbDoCBjw6FjIHRo4budaSBjxqEgbWFuZyB24buBIGzhu6NpIG5odeG6rW4gY2hvIGRvYW5oIG5naGnhu4dwLiANCiANCiBUaGVvIEhp4buHcCBo4buZaSBtYXJrZXRpbmcgSG9hIEvhu7MsIGjDoG5oIHZpIG5nxrDhu51pIHRpw6p1IGTDuW5nIGzDoCBjw6FjIMO9IG5naMSpLCBxdWFuIMSRaeG7g20gdsOgIGPDoWMgaMOgbmggdmkgxJHGsOG7o2Mga2jDoWNoIGjDoG5nIHRo4buxYyBoaeG7h24gdHJvbmcgcXXDoSB0csOsbmggbXVhIHPhuq9tLiAgVmnhu4djIG11YSBz4bqvbSBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZyBjaOG7i3UgdMOhYyDEkeG7mW5nIG3huqFuaCBt4bq9IGPhu6dhIHnhur91IHThu5EgdOG7sSBuaGnDqm4sIHjDoyBo4buZaSwgY29uIG5nxrDhu51pIHbDoCB0w6JtIGzDrS4gxJDhu5FpIHbhu5tpIG5ow6AgcXXhuqNuIHRy4buLIHRow6wgY8OhYyB54bq/dSB04buRIHRyw6puIGtow7RuZyBraeG7g20gc2/DoXQgxJHGsOG7o2MsIHR1eSBuaGnDqm4gY2jDum5nIHBo4bqjaSDEkcaw4bujYyB4ZW0geMOpdCBr4bu5IGzGsOG7oW5nIHbDoCDEkcOhbmggZ2nDoSBjw6FjIHTDoWMgxJHhu5luZyBj4bunYSBjaMO6bmcgbMOqbiBow6BuaCB2aSBuZ8aw4budaSBtdWEgaMOgbmcuIA0KIA0KIFRoZW8gS290bGVyICYgTGV2eSwgaMOgbmggdmkgbmfGsOG7nWkgdGnDqnUgZMO5bmcgbMOgIGPDoWMgaMOgbmggdmkgY+G7pSB0aOG7gyBj4bunYSBt4buZdCBjw6EgbmjDom4ga2hpIHRo4buxYyBoaeG7h24gbmjhu69uZyBow6BuaCB2aSBtdWEgc+G6r20sIHRpw6p1IGTDuW5nIHbDoCB24bupdCBi4buPIGjDoG5nIGhvw6EgaGF5IGThu4tjaCB24bulLiANCiANCiBYw6FjIMSR4buLbmggaMOgbmggdmkgbmfGsOG7nWkgdGnDqnUgZMO5bmc6IA0KIA0KVGjhu6kgbmjhuqV0OiBMw6Agc3V5IG5naMSpIHbDoCBj4bqjbSB4w7pjIGPhu6dhIGNvbiBuZ8aw4budaSDEkeG7kWkgduG7m2kgcXXDoSB0csOsbmggbXVhIHPhuq9tIHbDoCB0acOqdSBkw7luZy4gDQogDQpUaOG7qSBoYWk6IEjDoG5oIHZpIG5nxrDhu51pIHRpw6p1IGTDuW5nIGzDoCB24bqtbiDEkeG7mW5nIHbDoCB0xrDGoW5nIHTDoWMgdsOsIG7DsyBi4buLIHTDoWMgxJHhu5luZyBi4bufaSBjw6FjIHnhur91IHThu5EgdOG7qyBtw7RpIHRyxrDhu51uZyBiw6puIG5nb8OgaSB2w6AgY8OzIHPhu7EgdMOhYyDEkeG7mW5nIHRy4bufIGzhuqFpIHbhu5tpIG3DtGkgdHLGsOG7nW5nIHjDoyBo4buZaS4gDQogDQpUaOG7qSBiYTogSMOgbmggdmkgbmfGsOG7nWkgdGnDqnUgZMO5bmcgYmFvIGfhu5NtIGPDoWMgaMOgbmggdmk6IG11YSBz4bqvbSwgdGnDqnUgZMO5bmcgdsOgIHjhu60gbMO9IHPhuqNuIHBo4bqpbSBk4buLY2ggduG7pS4gDQoNCiMjIDIuMiBMw70gdGh1eeG6v3QgduG7gSBxdXnhur90IMSR4buLbmggbXVhIGjDoG5nDQoNCk5nxrDhu51pIHRpw6p1IGTDuW5nIHTDrG0ga2nhur9tIGPDoWMgbeG6t3QgaMOgbmcgxJHhu4MgdGjhu49hIG3Do24gbmjhu69uZyBuaHUgY+G6p3UgdsOgIG1vbmcgbXXhu5FuIGPGoSBi4bqjbiBj4bunYSBo4buNLiBOZ2hpw6puIGPhu6l1IGjDoG5oIHZpIHRpw6p1IGTDuW5nLCBuaMawbmcga2jDtG5nIHBo4bqjaSBuZ2hpw6puIGPhu6l1IHhlbSBuZ8aw4budaSB0acOqdSBkw7luZyBs4buxYSBjaOG7jW4gbeG6t3QgaMOgbmcgbsOgbyBtw6AgY2jDum5nIHRhIGPhu5EgZ+G6r25nIGhp4buDdSBjw6FjaCBkaeG7hW4gcmEgcXXDoSB0csOsbmggcmEgcXV54bq/dCDEkeG7i25oIHbDoCBuaMOibiB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBow6BuaCB2aSBtdWEgc+G6r20gKFNvbG9tb24sMjAwNSwgdHIuNi04KS4gUXV54bq/dCDEkeG7i25oIG11YSBsacOqbiBxdWFuIMSR4bq/bm3hu5l0IGNodeG7l2kgY8OhYyBs4buxYSBjaOG7jW4gxJHGsOG7o2MgaMOsbmggdGjDoG5oIGLhu59pIG5nxrDhu51pIHRpw6p1IGTDuW5nIHRyxrDhu5tjIGtoaSBtdWEgaMOgbmcsIG5nxrDhu51pIHRpw6p1IGTDuW5nIMSRxrBhIHJhIHF1eeG6v3QgxJHhu4tuaCBsacOqbiBxdWFuIMSR4bq/biDEkeG7i2EgxJFp4buDbSBtdWEsIG5ow6NuIGhp4buHdSBtb25nIG114buRbiwgbeG6q3UgbcOjLCBz4buRIGzGsOG7o25nIG11YSwgdGjhu51pIGdpYW4gbXVhLCBjaGkgcGjDrSB2w6AgcGjGsMahbmcgdGjhu6ljIHRoYW5oIHRvw6FuIChIYW5heXNoYSwgMjAxOCkuDQoNCktvdGxlciB2w6AgTGV2eSAoMTk2OSkgY2jhu4kgcmEgY2hvIHRo4bqleSBuZ8aw4budaSB0acOqdSBkw7luZyBxdXnhur90IMSR4buLbmggbXVhIGThu7FhIHRyw6puIG7hu4FuIHThuqNuZyBjxqEgYuG6o246DQoNCi0gWMOjIGjhu5lpIOKAkyDEkOG7kWkgdMaw4bujbmcga2jDoWNoIGjDoG5nIHPhu5FuZyB0cm9uZyB4w6MgaOG7mWksIGNobyBuw6puIGjDoG5oIHZpIGPhu6dhIGjhu40gY2hpIHBo4buRaSBi4bufaSBuaGnhu4F1IHnhur91IHThu5EgdHJvbmcgeMOjIGjhu5lpLiBU4burIGzhu7FhIGNo4buNbiDEg24gbeG6t2MgY2hvIMSR4bq/biB0aMOzaSBxdWVuIMSDbiB14buRbmcgxJHhu4F1IGNo4buLdSBz4buxIGNoaSBwaOG7kWkgbeG6oW5oIG3hur0gY+G7p2EgdsSDbiBow7NhLiBN4buXaSB04bqnbmcgbOG7m3AgZ2lhaSBj4bqlcCB0cm9uZyB4w6MgaOG7mWkgxJHhu4F1IGPDsyB0xrAgZHV5IGzhu7FhIGNo4buNbiBraMOhYyBuaGF1LCBkbyDEkcOzLCBoaeG7g3UgcsO1IHjDoyBo4buZaSBsw6AgdGjhu7FjIGhp4buHbiBwaMawxqFuZyBjaMOibSBiw6FuIG5o4buvbmcgdGjhu6kgbcOgIGtow6FjaCBow6BuZyBj4bqnbi4gDQoNCi0gWeG6v3UgdOG7kSBjw6EgbmjDom4tIEPDoSB0w61uaCBsw6AgbeG7mXQgY29uIG5nxrDhu51pIGPDsyB0w61uaCBjw6FjaCBraMOhYyBiaeG7h3QgZOG6q24gxJHhur9uIGPDoWMgaMOgbmggdmkg4bupbmcgeOG7rSDEkeG7kWkgduG7m2kgbcO0aSB0csaw4budbmcgeHVuZyBxdWFuaC4gVHXhu5VpIHTDoWMsIHTDrG5oIHRy4bqhbmcga2luaCB04bq/LCBs4buRaSBz4buRbmcgY8OzIHTDoWMgxJHhu5luZyDEkeG6v24gbmh1IGPhuqd1IHbhu4EgY8OhYyBsb+G6oWkgaMOgbmcgaG/DoSwgZOG7i2NoIHbhu6UuIE5nxrDhu51pIGPhuqluIHRo4bqtbiB04buJIG3hu4ksIG5nxrDhu51pIGzhu5tuIHR14buVaSBjw7MgdGjhu4MgcXVhbiB0w6JtIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgc+G6o24gcGjhuqltIGjGoW4sIGhheSBuZ8aw4budaSBjw7MgxJFp4buBdSBraeG7h24ga2luaCB04bq/IHPhur0gcXVhbiB0w6JtIMSR4bq/biBz4bqjbiBwaOG6qW0gY2jhuqV0IGzGsOG7o25nIGjGoW4gc+G6o24gcGjhuqltIGdpw6EgcuG6uy4NCg0KLSBDw6FjIHnhur91IHThu5EgbWFuZyB0w61uaCBjaOG6pXQgdMOibSBsw706IMSQ4buZbmcgY8ahLCBUcmkgZ2nDoWMsIEzEqW5oIGjhu5lpLCBOaeG7gW0gdGluIHbDoCBUaMOhaSDEkeG7mS4gTmh1IGPhuqd1IHPhur0gdGjDumMgxJHhuql5IGNvbiBuZ8aw4budaSBow6BuaCDEkeG7mW5nICjEkWkgbXVhIHPhuq9tKSDEkeG7gyDEkcOhcCDhu6luZyBuaHUgY+G6p3UuIFRyaSBnacOhYyBsw6AgbeG7mXQgcXXDoSB0csOsbmggdGjDtG5nIHF1YSDEkcOzIGNvbiBuZ8aw4budaSB0dXnhu4NuIGNo4buNbiwgdOG7lSBjaOG7qWMgY8OhYyB0aMO0bmcgdGluIG5o4bqtbiDEkcaw4bujYywgc+G7sSB0aGnhur90IGvhur8gbuG7lWkgYuG6rXQgY+G7p2EgY+G7rWEgaMOgbmcgaGF5IHPhu7EgcXXhuqNuZyBjw6FvIHRydXnhu4FuIHRow7RuZyB0w6FjIMSR4buZbmcgxJHhur9uIHRyaSB0aOG7qWMgY+G7p2Ega2jDoWNoIGjDoG5nLiBDw6BuZyB0cuG7sWMgbmdoaeG7h20gbmhp4buBdSBraeG6v24gdGjhu6ljIMSRxrDhu6NjIGzEqW5oIGjhu5lpIGPDoG5nDQoNCiMjIDIuMyBDw6FjIG3DtCBow6xuaCBo4buTaSBxdXkgDQoNCk3DtCBow6xuaCBo4buTaSBxdXkgxJHGsOG7o2MgY2hpYSBsw6BtIDIgbmjDs206DQoNCk3DtCBow6xuaCBo4buTaSBxdXkgY+G7lSDEkWnhu4NuDQoNCiAkzrxfaVt5X2ldPSAozrJfMCsgzrJfezF4MWl9Ky4uLisgzrJfa3hfe2tpfSkkDQoNCsSQ4buDIG3DtCBow6xuaCBo4buTaSBxdXkgY+G7lSDEkWnhu4NuIHBo4bqjaSB0aOG7j2EgbcOjbiAzIMSRaeG7gXUga2nhu4duIHNhdToNCg0KLSBUw61uaCB0dXnhur9uIHTDrW5oIGPhu6dhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgYmnhur9uIHBo4bulIHRodeG7mWMgdsOgIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSBQaMawxqFuZyBzYWkgc2FpIHPhu5Ega2jDtG5nIMSR4buVaS4NCg0KLSBQaMOibiBwaOG7kWkgY2h14bqpbiBj4bunYSBwaOG6p24gZMawDQoNCk3DtCBow6xuaCBo4buTaSBxdXkgdOG7lW5nIHF1w6F0Og0KDQokzrxfaSA9IGdeey0xfSjOsl8wKyDOsl97MXgxaX0rLi4uKyDOsl9reF97a2l9KSQNCg0KVHJvbmcgbcO0IGjDrG5oIG7DoHkgaMOgbSBnKC4pIMSRxrDhu6NjIGfhu41pIGzDoCBow6BtIGxpw6puIGvhur90IChsaW5rIGZ1bmN0aW9uKSB2w6AgZyguKSBwaOG6o2kgbMOgIGjDoG0gxJHGoW4gxJFp4buHdS4NCg0KVHJvbmcgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHThu5VuZyBxdcOhdCBz4bq9IGPDsyAzIHRow6BuaCBwaOG6p246DQoNClRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nIChzeXN0ZW1hdGljIGNvbXBvbmVudCk6IEzDoCB0aMOgbmggdOG7lSBo4bujcCB0dXnhur9uIHTDrW5oIGPhu6dhIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KVGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIChyYW5kb20gY29tcG9uZW50KTogTMOgIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBj4bunYSBiaeG6v24gcGjhu6UgdGh14buZYyAoZGVwZW5kZW50L3Jlc3BvbnNlIHZhcmlhYmxlKS4NCg0KSMOgbSBsacOqbiBr4bq/dCAobGluayBmdW5jdGlvbikuDQoNCiMgQ2jGsMahbmcgMy4gVEhJ4bq+VCBL4bq+IE5HSEnDik4gQ+G7qFUNCg0KIyMgMy4xIE3DtCBow6xuaCBuZ2hpw6puIGPhu6l1DQoNCiMjIyAzLjEuMSBNw7QgaMOsbmggbG9naXQNCg0KJGxvZ2l0KM+AKSA9IGxvZyAoz4AvMS3PgCkgPSDOsl8wKyDOsl8xWF8xKyDOsl8yWF8yKy4uLisgQl9rWF9rJA0KDQpW4bubaSDPgCBsw6AgeMOhYyBzdeG6pXQgxJHhu4MgYmnhur9uIHBo4bulIHRodeG7mWMgbmjhuq1uIGdpw6EgdHLhu4sg4oCcdGjDoG5oIGPDtG5n4oCdLiDEkOG7kWkgduG7m2kgaMOgbSBnbG0gcGjhuqFtIHRyw7kgdGjhu6kgaGFpIGPhu6dhIGJp4bq/biBuaOG7iyBwaMOibiB0aOG7gyBoaeG7h24gY2hvIOKAnHRow6BuaCBjw7RuZ+KAnSAoY2jDum5nIHRhIHPhu60gZOG7pW5nIGjDoG0gbGV2ZWxzKCkgxJHhu4Mga2nhu4NtIHRyYSB0aOG7qSB04buxIGPhu6dhIGPDoWMgcGjhuqFtIHRyw7kgY+G7p2EgbeG7mXQgYmnhur9uIMSR4buLbmggdMOtbmguDQoNCiMjIyAzLjEuMiBDw6FjIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgbcO0IGjDrG5oDQoNCsSQ4buDIMSRw6FuaCBnacOhIGPDoWMgbcO0IGjDrG5oIGjhu5NpIGPhu5UgxJFp4buDbiBjaMO6bmcgdGEgdGjGsOG7nW5nIGThu7FhIHbDoG8gaOG7hyBz4buRIHjDoWMgxJHhu4tuaCBtw7QgaMOsbmggJChSXjIpJCwgbmjGsG5nIMSR4buRaSB24bubaSBtw7QgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggdOG7lW5nIHF1w6F0IGNow7puZyB0YSBz4butIGThu6VuZyBjw6FjIHRpw6p1IGNow60gc2F1Og0KDQoqKkFJQyAtIEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24qKg0KDQpBSUMgxJHGsOG7o2MgxJHhu4EgeHXhuqV0IGLhu59pIEFrYWlrZSBIaXJvdHVndSwgbeG7mXQgbmjDoCB0aOG7kW5nIGvDqiBo4buNYyBuZ8aw4budaSBOaOG6rXQuIEFJQyBsw6AgbeG7mXQgdGnDqnUgY2jDrSDEkcaw4bujYyBz4butIGThu6VuZyBt4buZdCBjw6FjaCBwaOG7lSBiaeG6v24gxJHhu4MgxJHDoW5oIGdpw6EgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG7n2kgcGjGsMahbmcgcGjDoXAgTWF4aW11bSBMaWtla2lob29kIChNTCkuIE3hu5l0IGPDoWNoIGNodW5nIGNodW5nIGdpw6EgdHLhu4sgY+G7p2EgQUlDIGPDoG5nIG5o4buPIHRow6wgbcO0IGjDrG5oIGPDoG5nIHThu5F0LiBBSUMgxJHGsOG7o2MgdMOtbmggYuG6sW5nIGPDtG5nIHRo4bupYyBzYXU6DQokQUlDPSAtMmxuKEwpKzJrJA0KVuG7m2kgTCBsw6AgZ2nDoSB0cuG7iyBj4buxYyDEkeG6oWkgY+G7p2EgaMOgbSBo4bujcCBsw70gKGxpa2VsaWhvb2QgZnVuY3Rpb24pIHbDoCBrIGzDoCBz4buRIHRoYW0gc+G7kSBj4bunYSBtw7QgaMOsbmguDQoNCktoaSB0aOG7sWMgaGnhu4duIHZp4buHYyDGsOG7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBi4bqxbmcgbOG7h25oIGdsbSB0aMOsIGNo4buJIHPhu5EgQUlDIMSRw6MgxJHGsOG7o2MgdMOtbmggdG/DoW4gdsOgIHRo4buDIGhp4buHbiB0csOqbiBi4bqjbmcga+G6v3QgcXXhuqMgKCBi4bqxbmcgbOG7h25oIHN1bW1hcnkpDQoNCioqRGV2aWFuY2UqKg0KDQpEZXZpYW5jZSBjxaluZyBsw6AgbeG7mXQgdGnDqnUgY2jDrSBy4bqldCBwaOG7lSBiaeG6v24gxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgxJHDoW5oIGdpw6EgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG7n2kgcGjGsMahbmcgcGjDoXAgSOG7o3AgbMO9IGPhu7FjIMSR4bqhaSAoTUwpLiBN4buZdCBjw6FjaCB04buVbmcgcXXDoSwgY8WpbmcgZ2nhu5FuZyBuaMawIGNo4buJIHRpw6p1IEFJQywgZ2nDoSB0cuG7iyBj4bunYSBEZXZpYW5jZSBjw6BuZyBuaOG7jyB0aMOsIG3DtCBow6xuaCBjw6BuZyB04buRdC4NCg0KbMawdSDDvTogS2hpIHRo4buxYyBoaeG7h24gdmnhu4djIMaw4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggaOG7k2kgcXV5IGLhurFuZyBs4buHbmggZ2xtIHRow6wgY2jhu4kgc+G7kSBBSUMgdsOgIERldmlhbmNlIMSRw6MgxJHGsOG7o2MgdMOtbmggdG/DoW4gdsOgIHRo4buDIGhp4buHbiB0csOqbiBi4bqjbmcga+G6v3QgcXXhuqMgKCBi4bqxbmcgbOG7h25oIHN1bW1hcnkpLg0KDQoqKkJyaWVyIFNjb3JlKioNCkzDoCBjaOG7iSB0acOqdSBkw7luZyDEkeG7gyDEkcOhbmggZ2nDoSBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljLCBCcmllciBTY29yZSDEkcaw4bujYyB0w61uaCBuaMawIHNhdToNCiRCPSAxL24gXHN1bV97aT0xfV57bn0ocF9pLW9faSkkDQoNClRyb25nIMSRw7M6IHBpLG9pIGzhuqduIGzGsOG7o3QgbMOgIGdpw6EgdHLhu4sgeMOhYyBzdeG6pXQgcXVhbiBzw6F0IMSRxrDhu6NjLCB2w6AgZ2nDoSB0cuG7iyB4w6FjIHN14bqldCB0w61uaCByYSB04burIG3DtCBow6xuaC4NCg0KIyMgMy4yIEThu68gbGnhu4d1IG5nacOqbiBj4bupdQ0KDQpC4buZIGThu68gbGnhu4d1IMSRxrDhu6NjIHRodSB0aOG6rXAgdOG7qyBiw6BpIG5naGnDqm4gY+G7qXUg4oCcQ29uc3VtZXIgQnV5aW5nIEJlaGF2aW9yIEFuYWx5c2lz4oCdIGPDsyDEkeG7i2EgY2jhu4k6IGh0dHBzOi8vd3d3LmthZ2dsZS5jb20vY29kZS9hcmFkaGFuYXByYXRhcC9jb25zdW1lci1idXlpbmctYmVoYXZpb3ItYW5hbHlzaXMvbm90ZWJvb2sgdOG7qyB0cmFuZyBLYWdnbGUuY29tLiANCg0KxJDDonkgbMOgIGLhu5kgZOG7ryBsaeG7h3UgdGh1IHRo4bqtcCB0aMO0bmcgdGluIHbhu4EgbmfGsOG7nWkgdGnDqnUgZMO5bmcgbmjGsDogxJDhu5kgdHXhu5VpLCBnaeG7m2kgdMOtbmgsIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiwgdGh1IG5o4bqtcOKApiB2w6AgdGjDs2kgcXVlbiBtdWEgaMOgbmcgY+G7p2EgaOG7jSBk4buxYSB0csOqbiBz4buRIHRp4buBbiBjaGkgY2hvIGPDoWMgc+G6o24gcGjhuqltIHbhu4Egcsaw4bujdSwgdGjhu4t0LCBjw6EsIMSR4buTIG5n4buNdOKApiBRdWEgxJHDsyBnacO6cCBkb2FuaCBuZ2hp4buHcCBoaeG7g3UgcsO1IGjGoW4gduG7gSBraMOhY2ggaMOgbmcgY+G7p2EgbcOsbmggdsOgIGThu4UgZMOgbmcgxJFp4buBdSBjaOG7iW5oIHPhuqNuIHBo4bqpbSB0w7l5IHRoZW8gbmh1IGPhuqd1LCBow6BuaCB2aSB2w6AgbeG7kWkgcXVhbiB0w6JtIGPhu6UgdGjhu4MgY+G7p2EgY8OhYyBuaMOzbSDEkeG7kWkgdMaw4bujbmcga2jDoWNoIGjDoG5nIGtow6FjIG5oYXUuDQoNCljDqXQgdGhlbyDEkeG6t2MgxJFp4buDbSwgY8OhYyBiaeG6v24gxJHGsOG7o2MgY2hpYSB0aMOgbmggMiBuaMOzbSwgZ+G7k206IG5ow7NtIHRow7RuZyB0aW4gduG7gSBraMOhY2ggaGFuZyB2w6AgbmjDs20gdGjDtG5nIHRpbiB24buBIHPhuqNuIHBo4bqpbSDEkcaw4bujYyBjaOG7jW4gbXVhLiBDw6FjIGJp4bq/biDEkcaw4bujYyDEkeG6t3QgdMOqbiBuaMawIHNhdToNCg0KKipOaMOzbSBLaMOhY2ggaMOgbmcqKg0KDQrigKIJSUQ6IMSQ4buLbmggZGFuaCBkdXkgbmjhuqV0IGPhu6dhIGtow6FjaCBow6BuZw0K4oCiCVllYXJfQmlydGg6IE7Eg20gc2luaCBj4bunYSBraMOhY2ggaMOgbmcNCuKAoglFZHVjYXRpb246IFRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiBj4bunYSBraMOhY2ggaMOgbmcNCuKAoglNYXJpdGFsX1N0YXR1czogVMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIGPhu6dhIGtow6FjaCBow6BuZw0K4oCiCUluY29tZTogVGh1IG5o4bqtcCBo4buZIGdpYSDEkcOsbmggaMOgbmcgbsSDbSBj4bunYSBraMOhY2ggaMOgbmcNCuKAoglLaWRob21lOiBT4buRIGNvbiB0cm9uZyBo4buZIGdpYSDEkcOsbmgga2jDoWNoIGjDoG5nDQrigKIJVGVlbmhvbWU6IFPhu5EgbMaw4bujbmcgdGhhbmggdGhp4bq/dSBuacOqbiB0cm9uZyBo4buZIGdpYSDEkcOsbmgga2jDoWNoIGjDoG5nDQrigKIJUmVjZW5jeTogU+G7kSBuZ8OgeSBr4buDIHThu6sgbOG6p24gbXVhIGN14buRaSBjw7luZyBj4bunYSBraMOhY2ggaMOgbmcuDQoNCioqTmjDs20gQ8OhYyBz4bqjbiBwaOG6qW0gKMSQxqFuIHbhu4s6IMSQw7QgbGEgTeG7uSkqKiANCg0K4oCiCU1udFdpbmVzOiBT4buRIHRp4buBbiBjaGkgY2hvIHLGsOG7o3UgdHJvbmcgMiBuxINtIHF1YQ0K4oCiCU1udEZydWl0czogU+G7kSB0aeG7gW4gY2hpIGNobyB0csOhaSBjw6J5IHRyb25nIDIgbsSDbSBxdWENCuKAoglNbnRNZWF0UHJvZHVjdHM6IFPhu5EgdGnhu4FuIGNoaSBjaG8gdGjhu4t0IHRyb25nIDIgbsSDbSBxdWENCuKAoglNbnRGaXNoUHJvZHVjdHM6IFPhu5EgdGnhu4FuIGNoaSBjaG8gY8OhIHRyb25nIDIgbsSDbSBxdWENCuKAoglNbnRTd2VldFByb2R1Y3RzOiBT4buRIHRp4buBbiBjaGkgY2hvIMSR4buTIG5n4buNdCB0cm9uZyAyIG7Eg20gcXVhDQrigKIJTW50R29sZFByb2RzOiBT4buRIHRp4buBbiBtdWEgdsOgbmcgdHJvbmcgMiBuxINtIHF1YS4NCg0KYGBge3IgYzIyfQ0KZGYgPC0gcmVhZC5jc3YoIkM6L1VzZXJzL01TSUkvRG93bmxvYWRzL3ZsdnlfbWFya2V0aW5nX2RhdGFzZXQgKDEpLmNzdiAiKQ0KYGBgDQoNCiMjIDMuMyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBjaG8gZOG7ryBsaeG7h3UgxJHhu4tuaCBsxrDhu6NuZw0KDQojIyMgMy4zLjEgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIEluY29tZQ0KDQpJbmNvbWU6IFRodSBuaOG6rXAgaOG7mSBnaWEgxJHDrG5oIGjDoG5nIG7Eg20gY+G7p2Ega2jDoWNoIGjDoG5nICjEkMahbiB24buLOiDEkMO0IGxhIE3hu7kpDQoNCmBgYHtyIHN1bWluY29tZX0NCnN1bW1hcnkoZGYkSW5jb21lKQ0KYGBgDQoNClRo4buRbmcga8OqIG3DtCB04bqjIGNobyB0aOG6pXkgdGh1IG5o4bqtcCB0cnVuZyBiw6xuaCB0aGVvIGjhu5kgZ2lhIMSRw6xuaCBj4bunYSBuaOG7r25nIGtow6FjaCBow6BuZyDEkeG6v24gbXVhIHThuqFpIGPhu61hIGjDoG5nIGzDoCAkNTIyNCwgbmfGsOG7nWkgY8OzIHRodSBuaOG6rXAgdGjhuqVwIG5o4bqldCBjw7MgbeG7qWMgJDE3MzAgLCBuZ8aw4budaSBjw7MgdGh1IG5o4bqtcCBjYW8gbmjhuqV0IGPDsyBt4bupYyB0aHUgbmjhuq1wICQ2NjY2NjYuIEPDsyAyNSUgaOG7mSBnaWEgxJHDrG5oIGPDsyB0aHUgbmjhuq1wIG5o4buPIGjGoW4gaG/hurdjIGLhurFuZyBt4bupYyAkMzUzMDMsIDUwJSBo4buZIGPDsyBt4bupYyB0aHUgbmjhuq1wIG5o4buPIGjGoW4gaG/hurdjIGLhurFuZyAkNTEzODIgdsOgIDc1JSBo4buZIGPDsyB0aHUgbmjhuq1wIG5o4buPIGjGoW4gaG/hurdjIGLhurFuZyAkNjg1MjIuDQoNCmBgYHtyIHBwaW5jb21lfQ0Kc3VtbWFyeShkZiRJbmNvbWUpDQojIFR1cm4gb2Ygc2NpZW50aWZpYyB2YWx1ZXMNCm9wdGlvbnMoc2NpcGVuID0gOTk5KQ0KIyBIaXN0b2dyYW0NCmhpc3QoZGYkSW5jb21lLCBicmVha3MgPSAiRkQiLCBjb2wgPSAibmF2eSIsIG1haW4gPSAiSGlzdG9ncmFtIG9mIEluY29tZSIsIHhsYWIgPSAiSW5jb21lIiwgeWxhYiA9ICJGcmVxdWVuY3kiLCB4bGltID0gYygxLCAxMDAwMDApLCB5bGltID0gYygxLCAyMDApKQ0KYGBgDQoNCiMjIyAzLjMuMiBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gS2lkaG9tZQ0KDQpLaWRob21lOiBT4buRIGNvbiB0cm9uZyBo4buZIGdpYSDEkcOsbmgga2jDoWNoIGjDoG5nLg0KDQpgYGB7ciB0YmtpZH0NCnRhYmxlKGRmJEtpZGhvbWUpDQpgYGANCg0KYGBge3IgdGJraWRzfQ0KdGFibGUoZGYkS2lkaG9tZSkvc3VtKHRhYmxlKGRmJEtpZGhvbWUpKQ0KYGBgDQoNClRo4buRbmcga8OqIGNobyB0aOG6pXkgc+G7kSBo4buZIGdpYSDEkcOsbmgga2jDtG5nIGPDsyBjb24gbMOqbiDEkeG6v24gMTI4NCBo4buZIGNoaeG6v20gdOG7tyBs4buHIDU3LDkyJSwgc+G7kSBo4buZIGdpYSDEkcOsbmggY8OzIDEgY29uIGzDoCA4ODcgaOG7mSBjaGnhur9tIHThu7cgbOG7hyA0MCwwMSUsIHPhu5EgaOG7mSBnaWEgxJHDrG5oIGPDsyAyIGNvbiBsw6AgNDYgaOG7mSBjaGnhur9tIHThu7cgbOG7hyAyLDA3JS4NCg0KYGBge3IgYmRraWR9DQpraWRob21lX2NvdW50cyA8LSB0YWJsZShkZiRLaWRob21lKQ0KDQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoZGYsYWVzKGRmJEtpZGhvbWUpKSsNCiAgZ2VvbV9iYXIoZmlsbCA9ICJuYXZ5IikrDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0gJ2NvdW50Jywgdmp1c3QgPSAtIC41LCBjb2wgPSAicmVkIikgKw0KICB0aGVtZV9taW5pbWFsICgpICsNCiAgbGFicyh0aXRsZSA9ICJCYXJwbG90IG9mIEtpZGhvbWUiLCB4ID0gIktpZGhvbWUiKQ0KYGBgDQoNCg0KIyMjIDMuMi4xIFRo4buRbmcga8OqIG3DtCB04bqjIG5ow7NtIGPDoWMgc+G6o24gcGjhuqltDQoNCijEkMahbiB24buLOiDEkMO0IGxhIE3hu7kpDQoNCi0gTW50V2luZXM6IFPhu5EgdGnhu4FuIGNoaSBjaG8gcsaw4bujdSB0cm9uZyAyIG7Eg20gcXVhDQoNCi0gTW50TWVhdFByb2R1Y3RzOiBT4buRIHRp4buBbiBjaGkgY2hvIHRo4buLdCB0cm9uZyAyIG7Eg20gcXVhDQoNCi0gTW50RmlzaFByb2R1Y3RzOiBT4buRIHRp4buBbiBjaGkgY2hvIGPDoSB0cm9uZyAyIG7Eg20gcXVhDQoNCi0gTW50U3dlZXRQcm9kdWN0czogU+G7kSB0aeG7gW4gY2hpIGNobyDEkeG7kyBuZ+G7jXQgdHJvbmcgMiBuxINtIHF1YQ0KDQpUaOG7kW5nIGvDqiBtw7QgdOG6oyBj4bunYSBjw6FjIGJp4bq/biBuaMawIHNhdToNCg0KYGBge3IgZ2dwcmR9DQpwcm9kdWN0cyA8LSBkYXRhLmZyYW1lKGRmJE1udFdpbmVzLCBkZiRNbnRNZWF0UHJvZHVjdHMsIGRmJE1udEZpc2hQcm9kdWN0cywgZGYkTW50U3dlZXRQcm9kdWN0cykNCnByIDwtIHN1bW1hcnkocHJvZHVjdHMpDQpwcg0KYGBgDQoNClF1YSB0aOG7kW5nIGvDqiB0YSB0aOG6pXk6DQoNCi0gU+G7kSB0aeG7gW4gY2hpIGNobyByxrDhu6N1IGPhu6dhIGPDoWMgaOG7mSBnaWEgxJHDrG5oIHRyb25nIDIgbsSDbSBxdWEgdHJ1bmcgYsOsbmggbMOgICQzMDUuIFRyb25nIMSRw7MgY8OzIG5o4buvbmcgaOG7mSBnaWEgxJHDrG5oIGtow7RuZyBjaGkgdGnhu4FuIGNobyByxrDhu6N1LiBT4buRIHRp4buBbiBo4buZIGdpYSDEkcOsbmggY2hpIGNobyByxrDhu6N1IG5oaeG7gXUgbmjhuqV0IHRyb25nIG3huqt1IGzDoCAkMTQ5My4gMjUlIGjhu5kgY8OzIG3hu6ljIGNoaSB0aeG7gW4gY2hvIHLGsOG7o3Ugbmjhu48gaMahbiBob+G6t2MgYuG6sW5nICQyNCwgNTAlIGjhu5kgY8OzIG3hu6ljIGNoaSBuaOG7jyBoxqFuIGhv4bq3YyBi4bqxbmcgJDE3NCB2w6AgNzUlIGPDsyBt4bupYyBjaGkgbmjhu48gaMahbiBob+G6t2MgYuG6sW5nICQ1MDUuDQoNCi0gU+G7kSB0aeG7gW4gY2hpIGNobyBjw6FjIHPhuqNuIHBo4bqpbSB0aOG7i3QgY+G7p2EgY8OhYyBo4buZIGdpYSDEkcOsbmggdHJvbmcgMiBuxINtIHF1YSB0cnVuZyBiw6xuaCBsw6AgJDE2Ny42LiBUcm9uZyDEkcOzIGPDsyBuaOG7r25nIGjhu5kgZ2lhIMSRw6xuaCBraMO0bmcgY2hpIHRp4buBbiBjaG8gdGjhu4t0LiBT4buRIHRp4buBbiBo4buZIGdpYSDEkcOsbmggY2hpIGNobyB0aOG7i3Qgbmhp4buBdSBuaOG6pXQgdHJvbmcgbeG6q3UgbMOgICQxNzI1LjAuIDI1JSBo4buZIGPDsyBt4bupYyBjaGkgdGnhu4FuIGNobyB0aOG7i3Qgbmjhu48gaMahbiBob+G6t2MgYuG6sW5nICQxNi4wLCA1MCUgaOG7mSBjw7MgbeG7qWMgY2hpIG5o4buPIGjGoW4gaG/hurdjIGLhurFuZyAkNjguMCB2w6AgNzUlIGPDsyBt4bupYyBjaGkgbmjhu48gaMahbiBob+G6t2MgYuG6sW5nICQyMzMuMC4NCg0KLSBT4buRIHRp4buBbiBjaGkgY2hvIGPDoWMgc+G6o24gcGjhuqltIGPDoSBj4bunYSBjw6FjIGjhu5kgZ2lhIMSRw6xuaCB0cm9uZyAyIG7Eg20gcXVhIHRydW5nIGLDrG5oIGzDoCAkMzcuNjMuIFRyb25nIMSRw7MgY8OzIG5o4buvbmcgaOG7mSBnaWEgxJHDrG5oIGtow7RuZyBjaGkgdGnhu4FuIGNobyBjw6EuIFPhu5EgdGnhu4FuIGjhu5kgZ2lhIMSRw6xuaCBjaGkgY2hvIGPDoSBuaGnhu4F1IG5o4bqldCB0cm9uZyBt4bqrdSBsw6AgJDI1OS4wMC4gMjUlIGjhu5kgY8OzIG3hu6ljIGNoaSB0aeG7gW4gY2hvIGPDoSBuaOG7jyBoxqFuIGhv4bq3YyBi4bqxbmcgJDMuMDAsIDUwJSBo4buZIGPDsyBt4bupYyBjaGkgbmjhu48gaMahbiBob+G6t2MgYuG6sW5nICQxMi4wMCB2w6AgNzUlIGPDsyBt4bupYyBjaGkgbmjhu48gaMahbiBob+G6t2MgYuG6sW5nICQ1MC4wMC4NCg0KLSBT4buRIHRp4buBbiBjaGkgY2hvIGPDoWMgc+G6o24gcGjhuqltIMSR4buTIG5n4buNdCBj4bunYSBjw6FjIGjhu5kgZ2lhIMSRw6xuaCB0cm9uZyAyIG7Eg20gcXVhIHRydW5nIGLDrG5oIGzDoCAkMjcuMDIuIFRyb25nIMSRw7MgY8OzIG5o4buvbmcgaOG7mSBnaWEgxJHDrG5oIGtow7RuZyBjaGkgdGnhu4FuIGNobyDEkeG7kyBuZ+G7jXQuIFPhu5EgdGnhu4FuIGjhu5kgZ2lhIMSRw6xuaCBjaGkgY2hvIMSR4buTIG5n4buNdCBuaGnhu4F1IG5o4bqldCB0cm9uZyBt4bqrdSBsw6AgJDI2Mi4wMC4gMjUlIGjhu5kgY8OzIG3hu6ljIGNoaSB0aeG7gW4gY2hvIMSR4buTIG5n4buNdCBuaOG7jyBoxqFuIGhv4bq3YyBi4bqxbmcgJDEuMDAsIDUwJSBo4buZIGPDsyBt4bupYyBjaGkgbmjhu48gaMahbiBob+G6t2MgYuG6sW5nICQ4LjAwIHbDoCA3NSUgY8OzIG3hu6ljIGNoaSBuaOG7jyBoxqFuIGhv4bq3YyBi4bqxbmcgJDMzLjAwLg0KDQpgYGB7ciBnZ3ByZGR9DQoNCmNvbHVtbl9uYW1lcyA8LSBuYW1lcyhkZls5OjEzXSkNCnByb2R1Y3RfY291bnRzIDwtIGNvbFN1bXMoZGZbOToxM10pDQpwcm9wb3J0aW9ucyA8LSBwcm9kdWN0X2NvdW50cy9zdW0ocHJvZHVjdF9jb3VudHMpDQpwaWUocHJvcG9ydGlvbnMsIGxhYmVscyA9IGNvbHVtbl9uYW1lcywgbWFpbiA9ICJQaWUgQ2hhcnQgb2YgNSBQcm9kdWN0cyIsIGNvbCA9IHJhaW5ib3cobGVuZ3RoKHByb2R1Y3RfY291bnRzKSkpDQpgYGANCg0KIyMgMy40IFRo4buRbmcga8OqIG3DtCB04bqjIGNobyBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oIA0KDQojIyMgMy40LjEgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIE1hcml0YWxfU3RhdHVzDQoNCkJp4bq/biBNYXJpdGFsX1N0YXR1cyB0aOG7gyBoaeG7h24gVMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIGPhu6dhIGPDoWMga2jDoWNoIGjDoG5nIMSRxrDhu6NjIGto4bqjbyBzw6F0LiANCg0KYGBge3IgdGJzdHQxfQ0KDQp0YWJsZShkZiRNYXJpdGFsX1N0YXR1cykNCmBgYA0KDQpUw6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gY+G7p2EgMjIxNyBraMOhY2ggaMOgbmcgxJHGsOG7o2Mga2jhuqNvIHPDoXQgbmjGsCBzYXU6DQoNCi0gxJDDoyBseSBow7RuOiAyMzIgY2hp4bq/bSAxMCw0NiUNCi0gxJDDoyBr4bq/dCBow7RuOiA4NTggY2hp4bq/bSAzOCw2NiUNCi0gxJDhu5ljIHRow6JuOiA0NzYgY2hp4bq/bSAyMSw0NyUNCi0gQ2h1bmcgc+G7kW5nOiA1NzUgY2hp4bq/bSAyNSw4OSUNCi0gR8OzYSBwaOG7pTogNzYgY2hp4bq/bSAzLDQzJQ0KDQpU4bu3IGzhu4cgY+G7p2EgY8OhYyB0w6xuaCB0cuG6oW5nIHRyw6puIMSRxrDhu6NjIHRo4buDIGhp4buHbiBuaMawIHNhdToNCg0KYGBge3Igc3Vtc3R0MX0NCnRhYmxlKGRmJE1hcml0YWxfU3RhdHVzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KGRmLGFlcyhkZiRNYXJpdGFsX1N0YXR1cykpKw0KICBnZW9tX2JhcihmaWxsID0gIm5hdnkiKSsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSAnY291bnQnLCB2anVzdCA9IC0gLjUsIGNvbCA9ICJyZWQiKSArDQogIHRoZW1lX21pbmltYWwgKCkgKw0KICBsYWJzKHRpdGxlID0gIkN1c3RvbWVyJ3MgbWFyaXRhbCBzdGF0dXMiLCB4ID0gIk1hcml0YWwgU3RhdHVzIikNCg0KYGBgDQoNClRhIGPDsyB0aOG7gyB0aOG6pXkgbmfGsOG7nWkgxJHDoyBr4bq/dCBow7RuIGNoaeG6v20gdOG7tyBs4buHIGNhbyBuaOG6pXQgduG7gSB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gY+G7p2Ega2jDoWNoIGjDoG5nIMSR4bq/biB24bubaSBj4butYSBow6BuZyBuw6B5LCB0aeG6v3AgdGhlbyBzYXUgxJHDsyBs4bqnbiBsxrDhu6N0IGzDoCBjaHVuZyBz4buRbmcsIMSR4buZYyB0aMOibiwgxJHDoyBseSB0aMOibiB2w6AgZ8OzYSBwaOG7pS4gDQoNCg0KIyMjIDMuMi4yIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biBFZHVjYXRpb24NCg0KYGBge3IgdGJzdHR9DQp0YWJsZShkZiRFZHVjYXRpb24pDQpgYGANCg0KYGBge3Igc3Vtc3R0fQ0KDQp0YWJsZShkZiRFZHVjYXRpb24pDQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoZGYsYWVzKGRmJEVkdWNhdGlvbikpKw0KICBnZW9tX2JhcihmaWxsID0gIm5hdnkiKSsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSAnY291bnQnLCB2anVzdCA9IC0gLjUsIGNvbCA9ICJyZWQiKSArDQogIHRoZW1lX21pbmltYWwgKCkgKw0KICBsYWJzKHRpdGxlID0gIkN1c3RvbWVyJ3MgRWR1Y2F0aW9uIiwgeCA9ICJFZHVjYXRpb24iKQ0KYGBgDQoNClF1YSBiaeG7g3UgxJHhu5MgdGEgY8OzIHRo4buDIHRo4bqleSBz4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyBjw7MgdMOsbmggdHLhuqFuZyBo4buNYyB24bqlbiDEkcOjIHThu5F0IG5naGnhu4dwIGNoaeG6v20gdOG7tyBs4buHIGNhbyBuaOG6pXQgdHJvbmcgbmjDs20ga2jhuqNvIHPDoXQgY2hp4bq/bSA1MCwzJSANCg0KIyMgMy41IENodXnhu4NuIMSR4buVaSBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oDQoNCk5ow7NtICJNYXJyaWVkIiwgIlRvZ2V0aGVyIiBz4bq9IMSRxrDhu6NjIHhlbSBsw6AgIlJlbGF0aW9uc2hpcCIuIFRyb25nIGtoaSAiRGl2b3JjZWQiLCAiV2lkb3ciLCAiU2luZ2xlIiB0cuG7nyB0aMOgbmggIlNpbmdsZSINCg0KYGBge3IgcmMzMjF9DQojIENodXnhu4NuIMSR4buVaSBiaeG6v24gTWFyaXRhbF9TdGF0dXMNCmRmJE1hcml0YWxfU3RhdHVzIDwtIGdzdWIoIk1hcnJpZWR8VG9nZXRoZXIiLCAiUmVsYXRpb25zaGlwIiwgZGYkTWFyaXRhbF9TdGF0dXMpDQpkZiRNYXJpdGFsX1N0YXR1cyA8LSBnc3ViKCJEaXZvcmNlZHxXaWRvd3xTaW5nbGUiLCAiU2luZ2xlIiwgZGYkTWFyaXRhbF9TdGF0dXMpDQpNYXJpdGFsX1N0YXR1cyA8LSBkZiRNYXJpdGFsX1N0YXR1cw0KYGBgDQoNCk5ow7NtICJQaEQiLCAiR3JhZHVhdGlvbiIgdsOgICJNYXN0ZXIiIHRy4bufIHRow6BuaCAiUEciLiBOaMOzbSAiQmFzaWMiIHbDoCAiMm4gQ3ljbGUiIHRy4bufIHRow6BuaCAiVUcNCmBgYHtyIHJjMzIyfQ0KIyBDaHV54buDbiDEkeG7lWkgYmnhur9uIEVkdWNhdGlvbg0KZGYkRWR1Y2F0aW9uIDwtIGdzdWIoIlBoRHxHcmFkdWF0aW9ufE1hc3RlciIsICJQRyIsIGRmJEVkdWNhdGlvbikNCmRmJEVkdWNhdGlvbiA8LSBnc3ViKCJCYXNpY3wybiBDeWNsZSIsICJVRyIsIGRmJEVkdWNhdGlvbikNCkVkdWNhdGlvbiA8LSBkZiRFZHVjYXRpb24NCmBgYA0KDQpT4buRIGNvbiB0cm9uZyBo4buZIGdpYSDEkcOsbmggYuG6sW5nIHRy4bq7IGVtIHRyb25nIGjDtCBnaWEgxJHDrG5oIGPhu5luZyB24bubaSBz4buRIHRy4bq7IHbhu4sgdGjDoG5oIG5pw6puIHRyb25nIGjhu5kgZ2lhIMSRw6xuaA0KYGBge3IgcmMzMzN9DQojIENyZWF0ZSBLaWRzDQpLaWRzIDwtIGRmJEtpZGhvbWUgKyBkZiRUZWVuaG9tZQ0KYGBgDQoNCmBgYHtyIHBkYXRhfQ0KcHJvZHVjdF9kYXRhIDwtIGxpc3QoKQ0KZm9yIChpIGluIDE6bGVuZ3RoKGRmKSkgew0KICBwcm9kdWN0ZGF0YSA8LSBjKGRmJE1udFdpbmVzW2ldLCBkZiRNbnRNZWF0UHJvZHVjdHNbaV0sIGRmJE1udEZpc2hQcm9kdWN0c1tpXSwgDQogICAgICAgICAgICAgICAgICAgZGYkTW50U3dlZXRQcm9kdWN0c1tpXSwgZGYkTW50R29sZFByb2RzW2ldKQ0KICBwcm9kdWN0X2RhdGEgPC0gYyhwcm9kdWN0X2RhdGEsIGxpc3QocHJvZHVjdGRhdGEpKQ0KfQ0KUHJvZHVjdHNfREYgPC0gZGF0YS5mcmFtZShtYXRyaXgodW5saXN0KHByb2R1Y3RfZGF0YSksIG5yb3c9bGVuZ3RoKHByb2R1Y3RfZGF0YSksIGJ5cm93PVRSVUUpKQ0KY29sbmFtZXMoUHJvZHVjdHNfREYpIDwtIGMoJ1dpbmVzJywgJ01lYXQnLCAnRmlzaCcsICdTd2VldHMnLCAnR29sZCcpDQpoZWFkKFByb2R1Y3RzX0RGKQ0KYGBgDQpUw61uaCBz4buRIHR14buVaSB04burIG7Eg20gc2luaCBraMOhY2ggaMOgbmcsIMSR4buZIHR14buVaSB04burIDAtIDMwIMSRxrDhu6NjIGfDoW4gdGjDoG5oICJZb3VuZyIgY2jhu4kga2jDoWNoIGjDoG5nIGdp4bubaSB0cuG6uywgxJHhu5kgdHXhu5VpIHThu6sgMzAtIDQ1IGfDoW4gdGjDoG5oICJBZHV0bCIgxJHGsOG7o2MgZ+G7jWkgbMOgIG5nxrDhu51pIGzhu5tuLCAgxJHhu5kgdHXhu5VpIHThu6sgNDUtIDY1IGfDoW4gdGjDoG5oICJNYXR1cmUiIGNo4buJIG5nxrDhu51pIHRyxrDhu59uZyB0aMOgbmgsIMSR4buZIHR14buVaSB04burIDY1LSAxMjAgZ8OhbiB0aMOgbmggIlNlbmlvciIgIGzDoCBuaMOzbSBuZ8aw4budaSBjYW8gdHXhu5VpLg0KDQpLaMOhY2ggaMOgbmcgY2hpIHThu6sgMC0gMTAwJCBjaG8gcsaw4bujdSB0cm9uZyB2w7JuZyAyIG7Eg20gxJHGsOG7o2MgZ+G7jWkgbMOgIGtow6FjaCBow6BuZyBjaGkgdGnDqnUgdGjhuqVwIGNobyByxrDhu6N1LCBnw6FuIHRow6BuaCAiTGVhc3QgQWN0aXZlIEN1c3RvbWVyIi4gVHJvbmcga2hpIMSRw7MsIGtow6FjaCBow6BuZyBjaGkgdOG7qyAxMDAtIDE1MDAkIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgxJHGsOG7o2MgZ+G7jWkgbMOgIGtow6FjaCBow6BuZyBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1LCBnw6FuIHRow6BuaCAiSGlnaGx5IEFjdGl2ZSBDdXN0b21lciINCg0KYGBge3IgNn0NCmxpYnJhcnkoZHBseXIpDQoNCiNDcmVhdGUgQWdlIHNlZ21lbnQNCkFnZSA8LSAyMDIzIC0gZGYkWWVhcl9CaXJ0aA0KY3V0X2xhYmVsc19BZ2UgPC0gYygiWW91bmciLCAiQWR1bHQiLCAiTWF0dXJlIiwgIlNlbmlvciIpDQpjdXRfYmlucyA8LSBjKDAsIDMwLCA0NSwgNjUsIDEyMCkNCkFnZV9zZWdtZW50IDwtIGN1dChBZ2UsIGJyZWFrcz1jdXRfYmlucywgbGFiZWxzPWN1dF9sYWJlbHNfQWdlKQ0KDQojQ3JlYXRlIFdpbmVzIHNlZ21lbnQNCmN1dF9sYWJlbHMgPC0gYygnTGVhc3QgQWN0aXZlIEN1c3RvbWVyJywgJ0hpZ2hseSBBY3RpdmUgQ3VzdG9tZXInKQ0KY3V0X2JpbnMgPC0gYygwLCAxMDAsIDE1MDApDQpXaW5lc19zZWdtZW50IDwtIGN1dChkZiRNbnRXaW5lcywgYnJlYWtzPWN1dF9iaW5zLCBsYWJlbHM9Y3V0X2xhYmVscykNCmBgYA0KDQojIyAzLjYgVGjhu5FuZyBrw6ogbcO0IHThuqMgY2hvIDIgYmnhur9uIMSR4buLbmggdMOtbmgNCg0KIyMjIDMuNi4xIFBow6JuIHTDrWNoIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgTWFyaXRhbF9TdGF0dXMgdsOgIFdpbmVzX3NlZ21lbnQNCg0KQuG6o25nIHThuqduIHN14bqldCBj4bunYSBoYWkgYmnhur9uIE1hcml0YWxfU3RhdHVzIHbDoCBXaW5lc19zZWdtZW50DQoNCmBgYHtyIHRzbXd9DQptdyA8LXRhYmxlKE1hcml0YWxfU3RhdHVzLCBXaW5lc19zZWdtZW50KQ0KbXcNCmBgYA0KDQpgYGB7ciAyYjFtd30NCm13MiA8LSBkYXRhLmZyYW1lKE1hcml0YWxfU3RhdHVzLCBXaW5lc19zZWdtZW50KQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KG13MiwgYWVzKE1hcml0YWxfU3RhdHVzLCBmaWxsID0gV2luZXNfc2VnbWVudCkpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZG9kZ2UnKSArDQogIGxhYnModGl0bGUgPSAiQW5hbHlzaXMgb2YgdGhlIENvcnJlbGF0aW9uIGJldHdlZW4gTWFyaXRhbCBTdGF0dXMgYW5kIFdpbmVzX3NlZ21lbnQiKQ0KYGBgDQoNClF1YSBiaeG7g3UgxJHhu5MgdGEgY8OzIHRo4buDIHRo4bqleSwgZMO5IOG7nyB0w6xuaCB0cuG6oW5nIMSR4buZYyB0aMOibiBoYXkgdHJvbmcgbeG7kWkgcXVhbiBo4buHIHRow6wgc+G7kSB0aeG7gW4gYuG7jyByYSBjaG8gcsaw4bujdSDhu58gY8OhYyBo4buZIGdpYSDEkcOsbmggdHJvbmcgbmjDs20gcXVhbiBzw6F0IGzDoCBraMOhIGNhby4gVHJvbmcgxJHDsywgbmjDs20ga2jDoWNoIGjDoG5nIHRyb25nIG3hu5FpIHF1YW4gaOG7hyBsw6AgY2hpIG5oaeG7gXUgdGnhu4FuIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgbmjhuqV0LiBLaG/huqNuZyA2MDAga2jDoWNoIGjDoG5nIOG7nyBuaMOzbSB0cm9uZyBt4buRaSBxdWFuIGjhu4cgY8OzIHRow7NpIHF1ZW4gY2hpIMOtdCB0aeG7gW4gY2hvIHLGsOG7o3UgdsOgIMSR4bq/biBoxqFuIDgwMCBuZ8aw4budaSB0cm9uZyBuaMOzbSBuw6B5IGNoaSBuaGnhu4F1IHRp4buBbiBjaG8gcsaw4bujdSB0cm9uZyB2w7JuZyAyIG7Eg20gcXVhLiBUcm9uZyBraGkgxJHDsywgbmjDs20ga2jDoWNoIGjDoG5nIMSR4buZYyB0aMOibiBjw7Mga2hv4bqjbmcgaMahbiAyMDAgbmfGsOG7nWkgY2hpIMOtdCB0aeG7gW4gY2hvIHLGsOG7o3UgdsOgIGtob+G6o25nIDQ1MCBuZ8aw4budaSBjaGkgbmhp4buBdSB0aeG7gW4gY2hvIHLGsOG7o3UgdHJvbmcgMiBuxINtIHF1YS4NCg0KIyMjIDMuNi4yIFBow6JuIHTDrWNoIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgQWdlX3NlZ21lbnQgdsOgIFdpbmVzX3NlZ21lbnQNCg0KQuG6o25nIHThuqduIHN14bqldCBj4bunYSBoYWkgYmnhur9uIE1hcml0YWxfU3RhdHVzIHbDoCBXaW5lc19zZWdtZW50DQoNCmBgYHtyIHRzd2F9DQphdyA8LXRhYmxlKEFnZV9zZWdtZW50LCBXaW5lc19zZWdtZW50KQ0KYXcNCmBgYA0KDQpgYGB7ciAyYjFhd30NCmF3MiA8LSBkYXRhLmZyYW1lKEFnZV9zZWdtZW50LCBXaW5lc19zZWdtZW50KQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KG13MiwgYWVzKEFnZV9zZWdtZW50LCBmaWxsID0gV2luZXNfc2VnbWVudCkpICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZG9kZ2UnKSArDQogIGxhYnModGl0bGUgPSAiQW5hbHlzaXMgb2YgdGhlIENvcnJlbGF0aW9uIGJldHdlZW4gQWdlX3NlZ21lbnQgYW5kIEV4cGVuc2VzIikNCmBgYA0KDQoNClF1YSBiaeG7g3UgxJHhu5MgdGEgY8OzIHRo4buDIHRo4bqleSwgbmjDs20ga2jDoWNoIGjDoG5nIHThu6sgMzAgdHXhu5VpIHRy4bufIGzDqm4gY2hpIG5oaeG7gXUgdGnhu4FuIGNobyByxrDhu6N1IGjGoW4gbmjDs20ga2jDoWNoIGjDoG5nIFUzMCB0deG7lWkuIFRyb25nIMSRw7MsIG5ow7NtIGtow6FjaCBow6BuZyB0csaw4bufbmcgdGjDoG5oIHThu6sgNDUtIDY1IGzDoCBuaMOzbSBjaGkgbmhp4buBdSB0aeG7gW4gY2hvIHLGsOG7o3UgbmjhuqV0IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEga2hpIMSR4bq/biBoxqFuIDgwMCBuZ8aw4budaSB0aHXhu5ljIG5ow7NtIGtow6FjaCBow6BuZyBjw7MgaG/huqF0IMSR4buZbmcgY2hpIHRpw6p1IGNhby4gDQoNCiMjIyAzLjYuMyBQaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIEVkdWNhdGlvbiB2w6AgV2luZXNfc2VnbWVudA0KDQpgYGB7ciB0c2V3fQ0KZXcgPC10YWJsZShFZHVjYXRpb24sIFdpbmVzX3NlZ21lbnQpDQpldw0KYGBgDQoNCmBgYHtyIDJiMW1lfQ0KZXcyIDwtIGRhdGEuZnJhbWUoRWR1Y2F0aW9uLCBXaW5lc19zZWdtZW50KQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KGV3MiwgYWVzKEVkdWNhdGlvbiwgZmlsbCA9IFdpbmVzX3NlZ21lbnQpKSArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2RvZGdlJykgKw0KICBsYWJzKHRpdGxlID0gIkFuYWx5c2lzIG9mIHRoZSBDb3JyZWxhdGlvbiBiZXR3ZWVuIEVkdWNhdGlvbiBhbmQgV2luZXNfc2VnbWVudCIpDQpgYGANClF1YSBiaeG7g3UgxJHhu5MgdGEgY8OzIHRo4buDIHRo4bqleSwga2jDoWNoIGjDoG5nIOG7nyBuaMOzbSBjw7MgdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuIGzDoCBQRyBjw7MgdGjDs2kgcXVlbiBjaGkgbmhp4buBdSB0aeG7gW4gaMahbiBjaG8gcsaw4bujdSBraGkgY8OzIMSR4bq/biBraG/huqNuZyAxMjAwIGtow6FjaCBow6BuZyB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UgdHJvbmcgdsOybmcgMiBuxINtIHF1YS4NCg0KDQojIyAzLjcgUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgDQoNCkvDvSBoaeG7h3UgJM+AX2kkIGzDoCB04bu3IGzhu4cg4oCcdGjDoG5oIGPDtG5n4oCdIGPhu6dhIGJp4bq/biBwaOG7pSB0aHXhu5ljIChyZXNwb25zZSB2YXJpYWJsZSkgdMawxqFuZyDhu6luZyB24bubaSB04burbmcgYmnhu4N1IGhp4buHbiBj4bunYSBiaeG6v24gxJHhu5ljIGzhuq1wLg0KDQpU4burIGLhuqNuZyB04bqnbiBzdeG6pXQsIGNow7puZyB0YSB0w61uaCAkz4BfMS/PgF8yJCwgcGjDom4gc+G7kSBuw6B5IGfhu41pIGzDoCBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmVsYXRpdmUgcmlzaykgZ2nhu69hIDIgYmnhu4N1IGhp4buHbiBraMOhYyBuaGF1IGPhu6dhIGJp4bq/biBwaOG7pSB0aHXhu5ljLg0KDQojIyMgMy43LjEgUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgZ2nhu69hIE1hcml0YWxfU3RhdHVzIHbDoCBXaW5lc19zZWdtZW50DQoNCmBgYHtyIGM4NDF9DQphZGRtYXJnaW5zKG13KQ0KYGBgDQpU4burIGLhuqNuZyB04bqnbiBzdeG6pXQgY2jDum5nIHRhIHRo4bqleQ0KDQotIEtow6FjaCBow6BuZyBjw7MgdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIGzDoCB0cm9uZyBt4buRaSBxdWFuIGjhu4cgY8OzIDYwMCBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgdGjhuqVwIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgdsOgIDgyNiBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEuDQoNCi0gS2jDoWNoIGjDoG5nIGPDsyB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gbMOgIMSR4buZYyB0aMOibiBjw7MgMzI3IGtow6FjaCBow6BuZyB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAgY2hvIHLGsOG7o3UgdHJvbmcgdsOybmcgMiBuxINtIHF1YSB2w6AgNDUxIGtow6FjaCBow6BuZyB0cm9uZyB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UgdHJvbmcgdsOybmcgMiBuxINtIHF1YS4NCg0KQ2jDum5nIHRhIHTDrW5oIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChyZWxhdGl2ZSByaXNrKS4NCg0KYGBge3IgYzgxMX0NCiMjIEzhu4duaCBuw6B5IHTDrW5oIHJlbGF0aXZlcmlzayBjaG8gduG7iyB0csOtIDEyIHbDoCAyMg0KbGlicmFyeSgiRGVzY1Rvb2xzIikgDQpSZWxSaXNrKG13KQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleSB04bu3IGzhu4cgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgY+G7p2Ega2jDoWNoIGjDoG5nIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UgbMOgIHTDrW5oIGzDoCAxLDAwMTA2OCwgY8OzIG5naMSpYSBsw6AgdOG7tyBs4buHIG5o4buvbmcga2jDoWNoIGjDoG5nIGtow6FjaCBow6BuZyBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IGPDsyB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gbMOgIHRyb25nIG3hu5FpIHF1YW4gaOG7hyBn4bqlcCAxLDAwMTA2OCBs4bqnbiB04bu3IGzhu4cgbmjhu69uZyBraMOhY2ggaMOgbmcga2jDoWNoIGjDoG5nIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UgY8OzIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiBsw6AgxJHhu5ljIHRow6JuLg0KDQojIyMgMy43LjIgQuG6o25nIHThuqduIHN14bqldCBnaeG7r2EgQWdlX3NlZ21lbnQgdsOgIFdpbmVzX3NlZ21lbnQNCg0KYGBge3IgYzgyfQ0KYWRkbWFyZ2lucyhhdykNCmBgYA0KVOG7qyBi4bqjbmcgdOG6p24gc3XhuqV0IGNow7puZyB0YSB0aOG6pXkNCg0KLSBLaMOhY2ggaMOgbmcgY8OzIMSR4buZIHR14buVaSBsw6AgbmfGsOG7nWkgdHLhursgY8OzIDMga2jDoWNoIGjDoG5nIHRodeG7mWMgbmjDs20gY2hpIHRpw6p1IHRo4bqlcCBjaG8gcsaw4bujdSB0cm9uZyB2w7JuZyAyIG7Eg20gcXVhIHbDoCAxMSBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEuDQoNCi0gS2jDoWNoIGjDoG5nIGPDsyDEkeG7mSB0deG7lWkgbMOgIG5nxrDhu51pIGzDoCBuZ8aw4budaSBs4bubbiBjw7MgMzAzIGtow6FjaCBow6BuZyB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAgY2hvIHLGsOG7o3UgdHJvbmcgdsOybmcgMiBuxINtIHF1YSB2w6AgMjI2IGtow6FjaCBow6BuZyB0cm9uZyB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UgdHJvbmcgdsOybmcgMiBuxINtIHF1YS4NCg0KLSBLaMOhY2ggaMOgbmcgY8OzIMSR4buZIHR14buVaSBsw6AgbmfGsOG7nWkgbMOgIG5nxrDhu51pIHRyxrDhu59uZyB0aMOgbmggY8OzIDQ5NiBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgdGjhuqVwIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgdsOgIDcwNiBraMOhY2ggaMOgbmcgdHJvbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEuDQoNCi0gS2jDoWNoIGjDoG5nIGPDsyDEkeG7mSB0deG7lWkgbMOgIG5nxrDhu51pIGzDoCBuZ8aw4budaSBs4bubbiB0deG7lWkgY8OzIDEyMyBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgdGjhuqVwIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgdsOgIDMzMyBraMOhY2ggaMOgbmcgdHJvbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEuDQoNCiMjIyAzLjcuMyBS4bunaSBybyB0xrDGoW5nIMSR4buRaSBnaeG7r2EgRWR1Y2F0aW9uIHbDoCBXaW5lc19zZWdtZW50DQoNCmBgYHtyIGM4M30NCmFkZG1hcmdpbnMoZXcpDQpgYGANCg0KVOG7qyBi4bqjbmcgdOG6p24gc3XhuqV0IGNow7puZyB0YSB0aOG6pXkNCg0KLSBLaMOhY2ggaMOgbmcgY8OzIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiBsw6AgUEcgY8OzIDc3MCBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgdGjhuqVwIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgdsOgIDExODkga2jDoWNoIGjDoG5nIHRodeG7mWMgbmjDs20gY2hpIHRpw6p1IGNhbyBjaG8gcsaw4bujdSB0cm9uZyB2w7JuZyAyIG7Eg20gcXVhLg0KDQotIEtow6FjaCBow6BuZyBjw7MgdHLDrG5oIMSR4buZYyBo4buNYyB24bqlbiBsw6AgVUcgY8OzIDE1NyBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgdGjhuqVwIGNobyByxrDhu6N1IHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgdsOgIDg4IGtow6FjaCBow6BuZyB0cm9uZyB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UgdHJvbmcgdsOybmcgMiBuxINtIHF1YS4NCg0KQ2jDum5nIHRhIHTDrW5oIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChyZWxhdGl2ZSByaXNrKS4NCg0KYGBge3IgYzgzM30NCiMjIEzhu4duaCBuw6B5IHTDrW5oIHJlbGF0aXZlcmlzayBjaG8gduG7iyB0csOtIDEyIHbDoCAyMg0KDQpsaWJyYXJ5KCJEZXNjVG9vbHMiKSANClJlbFJpc2soZXcpDQpgYGANClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleSB04bu3IGzhu4cgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgY+G7p2Ega2jDoWNoIGjDoG5nIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UgbMOgIHTDrW5oIGzDoCAwLDYxMzM3MDMsIGPDsyBuZ2jEqWEgbMOgIHThu7cgbOG7hyBuaOG7r25nIGtow6FjaCBow6BuZyBraMOhY2ggaMOgbmcgY2hpIHRpw6p1IGNhbyBjaG8gcsaw4bujdSBjw7MgdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuIGzDoCBQRyBn4bqlcCAwLDYxMzM3MDMgbOG6p24gdOG7tyBs4buHIG5o4buvbmcga2jDoWNoIGjDoG5nIGtow6FjaCBow6BuZyBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IGPDsyB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4gbMOgIFVHLg0KDQojIyAzLjggVOG7tyBs4buHIGNow6puaA0KDQojIyMgMy44LjEgVOG7tyBs4buHIGNow6puaCBnaeG7r2EgTWFyaXRhbF9TdGF0dXMgdsOgIFdpbmVzX3NlZ21lbnQNCg0KYGBge3IgcjM5MX0NCiMjIEPDonUgbOG7h25oIG7DoHkgc+G6vSB0w61uaCBvZGRyYXRpbyBjaG8gduG7iyB0csOtIDExIHbDoCAyMQ0KT2Rkc1JhdGlvKG13KQ0KYGBgDQpUaGVvIGvhur90IHF14bqjIHRyw6puIGNobyB0aOG6pXksIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgY8OzIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiBsw6AgdHJvbmcgbeG7kWkgcXVhbiBo4buHIHbDoCB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAgY2hvIHLGsOG7o3UgYuG6sW5nIDEwMCwxODQlIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgY8OzIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiBsw6AgxJHhu5ljIHRow6JuIHbDoCB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAgY2hvIHLGsOG7o3UuIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCB4w6FjIHN14bqldCB44bqjeSByYSBz4buxIGtp4buHbiBraMOhY2ggaMOgbmcgdHJvbmcgbeG7kWkgcXVhbiBo4buHIHbDoCB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAgY2hvIHLGsOG7o3Ugbmhp4buBdSBoxqFuIG5ow7NtIGtow6FjaCBow6BuZyDEkeG7mWMgdGjDom4gdsOgIHRodeG7mWMgbmjDs20gY2hpIHRpw6p1IHRo4bqlcCBjaG8gcsaw4bujdQ0KDQojIyMgMy44LjIgVOG7tyBs4buHIGNow6puaCBnaeG7r2EgRWR1Y2F0aW9uIHbDoCBXaW5lc19zZWdtZW50DQoNCmBgYHtyIHIzOTExfQ0KIyMgQ8OidSBs4buHbmggbsOgeSBz4bq9IHTDrW5oIG9kZHJhdGlvIGNobyB24buLIHRyw60gMTEgdsOgIDIxDQpPZGRzUmF0aW8oZXcpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5LCB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGPDsyB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4gbMOgIFBHIHbDoCB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAgY2hvIHLGsOG7o3UgYuG6sW5nIDM4LDk1JSB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGPDsyB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4gVUcgdsOgIHRodeG7mWMgbmjDs20gY2hpIHRpw6p1IHRo4bqlcCBjaG8gcsaw4bujdS4gxJBp4buBdSBuw6B5IGPDsyBuZ2jEqWEgeMOhYyBzdeG6pXQgeOG6o3kgcmEgdHLGsOG7nW5nIGjhu6NwIGtow6FjaCBow6BuZyBjw7MgdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuIFBHIHbDoCB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAgdGjhuqVwIGjGoW4gdHLGsOG7nW5nIGjhu6NwIGtow6FjaCBow6BuZyBjw7MgdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuIFVHIHbDoCB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSB0aOG6pXAuDQoNCg0KIyMgMy45IFRo4buRbmcga8OqIHN1eSBkaeG7hW4gY2hvIGThu68gbGnhu4d1IA0KDQrEkOG7gyB4w6FjIMSR4buLbmggeGVtIGhhaSBiaeG6v24gY8OzIMSR4buZYyBs4bqtcCBoYXkga2jDtG5nLCBraeG7g20gxJHhu4tuaCBjaGkgYsOsbmggcGjGsMahbmcgKGNoaS1zcXVhcmUgdGVzdCkgc+G6vSDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBraeG7g20gdHJhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgaGFpIGJp4bq/biBwaMOibiBsb+G6oWkgKGNhdGVnb3JpY2FsIHZhcmlhYmxlcykgdHJvbmcgbeG7mXQgYuG6o25nIHThuqduIHPhu5EgKGZyZXF1ZW5jeSB0YWJsZSkuDQoNCktoaSBwLXZhbHVlIG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhICgwLjA1KSB0cm9uZyBraeG7g20gxJHhu4tuaCBjaGkgYsOsbmggcGjGsMahbmcsIHRhIGvhur90IGx14bqtbiBy4bqxbmcgaGFpIGJp4bq/biBsw6AgcGjhu6UgdGh14buZYyBs4bqrbiBuaGF1LCB04bupYyBsw6Aga2jDtG5nIMSR4buZYyBs4bqtcC4gTmfGsOG7o2MgbOG6oWksIGtoaSBwLXZhbHVlIGzhu5tuIGjGoW4gbeG7qWMgw70gbmdoxKlhLCB0YSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBraMO0bmcgxJHhu5ljIGzhuq1wIGdp4buvYSBoYWkgYmnhur9uLg0KDQojIyMgMy45LjEgS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGNobyBNYXJpdGFsIHbDoCBXaW5lc19zZWdtZW50DQoNClRhIGtp4buDbSB0cmEgeGVtIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIG3hu6ljIGNoaSB0acOqdSByxrDhu6N1IGPhu6dhIGtow6FjaCBow6BuZyB0cm9uZyB2w7JuZyAyIG7Eg20gcXVhIGhheSBraMO0bmcuDQoNCmBgYHtyIG13fQ0KY2hpc3EudGVzdChtdykNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBwLSB2YWx1ZT0gMSA+IDAsMDUuIE5oxrAgduG6rXksIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JSB0YSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBraMO0bmcgxJHhu5ljIGzhuq1wIGdp4buvYSB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gdsOgIG3hu6ljIGNoaSB0acOqdSBjaG8gcsaw4bujdSBjaOG7p2Ega2jDoWNoIGjDoG5nLiANCg0KIyMjIDMuOS4yIEtp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBjaG8gRWR1Y2F0aW9uIHbDoCBXaW5lc19zZWdtZW50DQoNClRhIGtp4buDbSB0cmEgeGVtIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIG3hu6ljIGNoaSB0acOqdSByxrDhu6N1IGPhu6dhIGtow6FjaCBow6BuZyB0cm9uZyB2w7JuZyAyIG7Eg20gcXVhIGhheSBraMO0bmcuDQoNCmBgYHtyIGV3fQ0KY2hpc3EudGVzdChldykNCmBgYA0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggcC0gdmFsdWU9IDAsMDAwMDAxNDY4IDwgMCwwNS4gTmjGsCB24bqteSwgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlIHRhIGvhur90IGx14bqtbiB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4gdsOgIG3hu6ljIGNoaSB0acOqdSByxrDhu6N1IGPhu6dhIGtow6FjaCBow6BuZyBsw6AgcGjhu6UgdGh14buZYyBs4bqrbiBuaGF1LiANCg0KIyMjIDMuOS4zIEtp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBjaG8gQWdlX3NlZ21lbnQgdsOgIFdpbmVzX3NlZ21lbnQNCg0KVGEga2nhu4NtIHRyYSB4ZW0gxJHhu5kgdHXhu5VpIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gbeG7qWMgY2hpIHRpw6p1IHLGsOG7o3UgY+G7p2Ega2jDoWNoIGjDoG5nIHRyb25nIHbDsm5nIDIgbsSDbSBxdWEgaGF5IGtow7RuZy4NCg0KYGBge3IgYXd9DQpjaGlzcS50ZXN0KGF3KQ0KYGBgDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBwLSB2YWx1ZT0gMCwwMDAwMDAwMDAwMDAwMDAyMiA8IDAsMDUuIE5oxrAgduG6rXksIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JSB0YSBr4bq/dCBsdeG6rW4gxJHhu5kgdHXhu5VpIHbDoCBt4bupYyBjaGkgdGnDqnUgcsaw4bujdSBj4bunYSBraMOhY2ggaMOgbmcgbMOgIHBo4bulIHRodeG7mWMgbOG6q24gbmhhdS4gDQoNCiMjIDMuMTAgS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGNobyB04bu3IGzhu4cNCg0KLSDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyB0cm9uZyBt4buRaSBxdWFuIGjhu4cgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IMSR4buTbmcgdGjhu51pIGtp4buDbSDEkeG7i25oIHhlbSB04bu3IGzhu4cga2jDoWNoIGjDoG5nIHRyb25nIG3hu5FpIHF1YW4gaOG7hyB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSBjYW8gY8OzIGLhurFuZyAzNyw0NyUgaGF5IGtow7RuZy4NCmBgYHtyIHVtd30NCnVsLm13IDwtICBtdzJbTWFyaXRhbF9TdGF0dXMgPT0gIlJlbGF0aW9uc2hpcCIsXQ0KcHJvcC50ZXN0KGxlbmd0aCh1bC5tdyRNYXJpdGFsX1N0YXR1cyksIGxlbmd0aChNYXJpdGFsX1N0YXR1cyksIHAgPSAwLjM3NDcpDQpgYGANClbhu5tpIGtob+G6o25nIHRpbiBj4bqteSA5NSUgdeG7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyB0cm9uZyBt4buRaSBxdWFuIGjhu4cgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgMCw2MjYwMDIxIDAsNjY2MjIzNw0KDQpwLXZhbHVlID4gMCwgY2jGsGEgxJHhu6cgY8ahIHPhu58gYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwLiBEbyDEkcOzIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgdHJvbmcgbeG7kWkgcXVhbiBo4buHIHRodeG7mWMgbmjDs20gY2hpIHRpw6p1IGNhbyBjaG8gcsaw4bujdSBi4bqxbmcgMzcsNDclIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JS4NCg0KLSDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyDEkeG7mWMgdGjDom4gdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IMSR4buTbmcgdGjhu51pIGtp4buDbSDEkeG7i25oIHhlbSB04bu3IGzhu4cga2jDoWNoIGjDoG5nIMSR4buZYyB0aMOibiB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSBjYW8gY8OzIGLhurFuZyAyMCw0NiUgaGF5IGtow7RuZy4NCg0KYGBge3IgdW13Mn0NCnVsLm13MiAgPC0gIG13MltNYXJpdGFsX1N0YXR1cyA9PSAiU2luZ2xlIixdDQpwcm9wLnRlc3QobGVuZ3RoKHVsLm13MiRNYXJpdGFsX1N0YXR1cyksIGxlbmd0aChNYXJpdGFsX1N0YXR1cyksIHAgPSAwLjIwNDYpDQpgYGANClbhu5tpIGtob+G6o25nIHRpbiBj4bqteSA5NSUgdeG7m2MgbMaw4bujbmcgdOG7tyBs4buHIGtow6FjaCBow6BuZyDEkeG7mWMgdGjDom4gdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgMCwzMzM3NzYzIMSR4bq/biAwLDM3Mzk5NzkNCg0KcC12YWx1ZSA+IDAsIGNoxrBhIMSR4bunIGPGoSBz4bufIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBIMC4gRG8gxJHDsyB04bu3IGzhu4cgdOG7tyBs4buHIGtow6FjaCBow6BuZyB0cm9uZyBt4buRaSBxdWFuIGjhu4cgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IGLhurFuZyAyMCw0NiUgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLg0KDQotIMav4bubYyBsxrDhu6NuZyBz4buxIGNow6puaCBs4buHY2ggduG7gSB04bu3IGzhu4cgdGh14buZYyBuaMOzbSBjaGkgdGnDqnUgY2FvIGNobyByxrDhu6N1IGdp4buvYSBraMOhY2ggaMOgbmcgdHJvbmcgbeG7kWkgcXVhbiBo4buHIHbDoCBraMOhY2ggaMOgbmcgxJHhu5ljIHRow6JuLiDEkOG7k25nIHRo4budaSB0aOG7sWMgaGnhu4duIGLDoGkgdG/DoW4ga2nhu4NuIMSR4buLbmggc+G7sSBjaMOqbmggbOG7h2NoIG7DoHkuDQoNCmBgYHtyfQ0KdWwubSA8LSAgbXcyW01hcml0YWxfU3RhdHVzID09ICJSZWxhdGlvbnNoaXAiLF0NCnVsLnc8LSAgbXcyW1dpbmVzX3NlZ21lbnQgPT0gIkhpZ2hseSBBY3RpdmUgQ3VzdG9tZXIiLF0NCnVsLm0yICA8LSAgbXcyW01hcml0YWxfU3RhdHVzID09ICJTaW5nbGUiLF0NCmEgPC0gYyhucm93KHVsLm0pLCBucm93KHVsLncpKQ0KYiA8LSBjKG5yb3codWwubTIpLCBucm93KHVsLncpKQ0KcHJvcC50ZXN0KGIsYSkNCmBgYA0KUF92YWx1ZSA8IDAsIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBIMC4gTmjGsCB24bqteSwgY8OzIHPhu7EgY2jDqm5oIGzhu4duaCBnaeG7r2EgdOG7tyBs4buHIGtow6FjaCBow6BuZyB0cm9uZyBt4buRaSBxdWFuIGjhu4cgdsOgIMSR4buZYyB0aMOibiB0aHXhu5ljIG5ow7NtIGNoaSB0acOqdSBjYW8gY2hvIHLGsOG7o3UuDQoNCktob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIGNow6puaCBs4buHY2ggdOG7tyBs4buHIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgIC0wLDQ3OTQwNTIgxJHhur9uIC0wLDQyNjM4NjkuDQoNCg0KIyBDaMawxqFuZyA0LiBL4bq+VCBRVeG6oiBOR0hJw4pOIEPhu6hVDQoNCiMjIDQuMSDGr+G7m2MgbMaw4bujbmcgaMOgbSBo4buTaSBxdXkgY2hvIGThu68gbGnhu4d1IA0KDQpU4burIGtp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCB2w6AgY8OhYyDEkcOhbmggZ2nDoSB0csOqbiwgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDEkeG7gSB4deG6pXQgbmjGsCBzYXU6DQoNCldpbmVzX3NlZ21lbnQ9IE1hcml0YWxfU3RhdHVzICsgSW5jb21lICsgS2lkcyArIEFnZV9zZWdtZW50ICsgRWR1Y2F0aW9uDQoNCiMjIyA0LjEuMSDGr+G7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpdA0KDQpgYGB7ciBtbzF9DQppbmNvbWUgPSBkZiRJbmNvbWUNCmRhdGEgPSBkYXRhLmZyYW1lKE1hcml0YWxfU3RhdHVzLCBFZHVjYXRpb24sIEtpZHMsIEFnZV9zZWdtZW50LCBXaW5lc19zZWdtZW50LCBpbmNvbWUpDQppbmNvbWUgPC0gY3V0KGluY29tZSwyLCBsYWJlbHMgPSBjKCdsb3cnLCdoaWdoJykpDQoNCm1sb2dpdCA8LSBnbG0oZGF0YSA9IGRhdGEsIGZvcm11bGEgPSBmYWN0b3IoV2luZXNfc2VnbWVudCkgfiBNYXJpdGFsX1N0YXR1cyArIGluY29tZSArIEtpZHMgKyBBZ2Vfc2VnbWVudCArIEVkdWNhdGlvbiwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpKQ0KbGV2ZWxzKGZhY3RvcihXaW5lc19zZWdtZW50KSkNCnN1bW1hcnkobWxvZ2l0KQ0KYGBgDQoNCktp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmggYuG6sW5nIGPDoWNoIHTDrW5oIGdpw6EgdHLhu4sgUHJvYihMUiBzdGF0aXN0aWMpDQrEkOG6t3QgZ2nhuqMgdGh1eeG6v3QgSDA6IE3DtCBow6xuaCBraMO0bmcgcGjDuSBo4bujcCANCg0KYGBge3IgY2xvZ2l0fQ0KIyBLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIA0KbHJfdGVzdCA8LSBhbm92YShtbG9naXQsIHRlc3QgPSAiQ2hpc3EiKQ0KcF92YWx1ZSA8LSBscl90ZXN0JFByWzJdIA0KcF92YWx1ZQ0KYGBgDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IHAtIHZhbHVlID0gMCw5MzM3MTEyID4gMCwwNS4gTmjGsCB24bqteSwgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlIGNoxrBhIMSR4bunIGPGoSBz4bufIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBIMCBuw6puIG3DtCBow6xuaCBraMO0bmcgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdS4NCg0KVGEgdGjhuqV5IGJp4bq/biBBZ2Vfc2VnbWVudCB2w6AgTWFyaXRhbF9TdGF0dXMga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdsOsIHbhuq15IGxv4bqhaSBi4buPIGhhaSBiaeG6v24gbsOgeSB2w6AgdGjhu7FjIGhp4buHbiBs4bqhaSBo4buTaSBxdXkgTG9naXQuIE3DtCBow6xuaCB0cuG7nyB0aMOgbmggDQoNCldpbmVzX3NlZ21lbnQ9IEluY29tZSArIEtpZHMgKyBFZHVjYXRpb24NCg0KYGBge3IgbW8xMn0NCmluY29tZSA9IGRmJEluY29tZQ0KZGF0YSA9IGRhdGEuZnJhbWUoRWR1Y2F0aW9uLCBLaWRzLCBXaW5lc19zZWdtZW50LCBpbmNvbWUpDQoNCmluY29tZSA8LSBjdXQoaW5jb21lLDIsIGxhYmVscyA9IGMoJ2xvdycsJ2hpZ2gnKSkNCg0KbWxvZ2l0MjwtIGdsbShkYXRhID0gZGF0YSwgZm9ybXVsYSA9IGZhY3RvcihXaW5lc19zZWdtZW50KSB+ICBpbmNvbWUgKyBLaWRzICsgRWR1Y2F0aW9uLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpDQpsZXZlbHMoZmFjdG9yKFdpbmVzX3NlZ21lbnQpKQ0Kc3VtbWFyeShtbG9naXQyKQ0KYGBgDQoNCmBgYHtyIGNsb2dpdDJ9DQojIEtp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmggDQpscl90ZXN0IDwtIGFub3ZhKG1sb2dpdDIsIHRlc3QgPSAiQ2hpc3EiKQ0KcF92YWx1ZSA8LSBscl90ZXN0JFByWzJdIA0KcF92YWx1ZQ0KYGBgDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IHAtIHZhbHVlPSA4LDQyMzA0OWUtMzE4IDwgMCwwNS4gTmjGsCB24bqteSwgduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlIGNoxrBhIMSR4bunIGPGoSBz4bufIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBIMCBuw6puIG3DtCBow6xuaCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1Lg0KDQojIyMgNC4xLjIgxq/hu5tjIGzGsOG7o25nIG3DtCBow6xuaCBo4buTaSBxdXkgUHJvYml0DQoNCmBgYHtyIG1vMn0NCm1wcm9iaXQgPC0gZ2xtKGRhdGEgPSBkYXRhLCBmb3JtdWxhID0gZmFjdG9yKFdpbmVzX3NlZ21lbnQpIH4gIGluY29tZSArIEtpZHMgKyBFZHVjYXRpb24sIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IikpDQpsZXZlbHMoZmFjdG9yKFdpbmVzX3NlZ21lbnQpKQ0Kc3VtbWFyeShtcHJvYml0KQ0KYGBgDQoNCg0KS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBi4bqxbmcgY8OhY2ggdMOtbmggZ2nDoSB0cuG7iyBQcm9iKExSIHN0YXRpc3RpYykNCsSQ4bq3dCBnaeG6oyB0aHV54bq/dCBIMDogTcO0IGjDrG5oIGtow7RuZyBwaMO5IGjhu6NwIA0KDQpgYGB7ciBjcHJvYml0fQ0KIyBLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIA0KbHJfdGVzdCA8LSBhbm92YShtcHJvYml0LCB0ZXN0ID0gIkNoaXNxIikNCnBfdmFsdWUgPC0gbHJfdGVzdCRQclsyXSANCnBfdmFsdWUNCmBgYA0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBwLSB2YWx1ZT0gMSw2Mzk5NTZlLTI2NSA8IDAsMDUuIE5oxrAgduG6rXksIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSDAgbsOqbiBtw7QgaMOsbmggcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdS4NCg0KIyMjIDQuMS4zIMav4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggaOG7k2kgcXV5IENsb2dsb2cNCg0KYGBge3IgbW8zfQ0KbWNsb2cgPC0gZ2xtKGRhdGEgPSBkYXRhLCBmb3JtdWxhID0gZmFjdG9yKFdpbmVzX3NlZ21lbnQpIH4gaW5jb21lICsgS2lkcyArIEVkdWNhdGlvbiwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJjbG9nbG9nIikpDQpsZXZlbHMoZmFjdG9yKFdpbmVzX3NlZ21lbnQpKQ0Kc3VtbWFyeShtY2xvZykNCmBgYA0KDQpLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIGLhurFuZyBjw6FjaCB0w61uaCBnacOhIHRy4buLIFByb2IoTFIgc3RhdGlzdGljKQ0KxJDhurd0IGdp4bqjIHRodXnhur90IEgwOiBNw7QgaMOsbmgga2jDtG5nIHBow7kgaOG7o3AgDQoNCmBgYHtyIGNtY2xvZ30NCiMgS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaA0KbHJfdGVzdCA8LSBhbm92YShtY2xvZywgdGVzdCA9ICJDaGlzcSIpDQpwX3ZhbHVlIDwtIGxyX3Rlc3QkUHJbMl0gDQpwX3ZhbHVlDQpgYGANCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgcC0gdmFsdWU9IDIuMDMzNDMyZS0yMzIgPCAwLDA1LiBOaMawIHbhuq15LCB24bubaSBt4bupYyDDvSBuZ2jEqWEgNSUgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwIG7Dqm4gbcO0IGjDrG5oIHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UuDQoNCiMjIDQuMiBDw6FjIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgbcO0IGjDrG5oDQoNCiMjIyA0LjIuMSBBSUMgLSBBa2Fpa2UgSW5mb3JtYXRpb24gQ3JpdGVyaW9uDQpgYGB7cn0NCmFpYyA8LSBkYXRhLmZyYW1lKG1sb2dpdDIkYWljLCBtcHJvYml0JGFpYywgbWNsb2ckYWljKQ0KY29sbmFtZXMoYWljKSA8LSBjKCJBSUMoTG9naXQpIiwgIkFJQyhQcm9iaXQpIiwgIkFJQyhDbG9nbG9nKSIpDQphaWMNCmBgYA0KVGEgdGjhuqV5IG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXQgY8OzIGjhu4cgc+G7kSBBSUMgbmjhu48gbmjhuqV0ICgxNDkzLDExMykgbsOqbiB0YSBjaOG7jW4gbcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpdC4NCg0KIyMjIDQuMi4yIERldmlhbmNlDQoNCmBgYHtyfQ0KZGV2IDwtIGRhdGEuZnJhbWUobWxvZ2l0MiRkZXZpYW5jZSwgbXByb2JpdCRkZXZpYW5jZSwgbWNsb2ckZGV2aWFuY2UpDQpjb2xuYW1lcyhkZXYpIDwtIGMoIkRldmlhbmNlKExvZ2l0KSIsICJEZXZpYW5jZShQcm9iaXQpIiwgIkRldmlhbmNlKENsb2dsb2cpIikNCmRldg0KYGBgDQpUYSB0aOG6pXkgbcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpdCBjw7MgaOG7hyBz4buRIERldmlhbmNlIG5o4buPIG5o4bqldCAoMTQ4NSwxMTMJKSBuw6puIHRhIGNo4buNbiBtw7QgaMOsbmggaOG7k2kgcXV5IExvZ2l0Lg0KDQojIyMgNC4yLjMgQnJpZXIgU2NvcmUNCmBgYHtyfQ0KDQphIDwtIEJyaWVyU2NvcmUobWxvZ2l0MikNCmIgPC0gQnJpZXJTY29yZShtcHJvYml0KQ0KYyA8LSBCcmllclNjb3JlKG1jbG9nKQ0KYnJpIDwtIGRhdGEuZnJhbWUoYSwgYiwgYykNCmNvbG5hbWVzKGJyaSkgPC0gYygiTG9naXQiLCAiUHJvYml0IiwgIkNsb2dsb2ciKQ0KYnJpDQpgYGANClRhIHRo4bqleSBtw7QgaMOsbmggaOG7k2kgcXV5IExvZ2l0IGPDsyBo4buHIHPhu5EgQnJpZXIgU2NvcmUgbmjhu48gbmjhuqV0ICgwLDA4NTIyODI0KSBuw6puIHRhIGNo4buNbiBtw7QgaMOsbmggaOG7k2kgcXV5IExvZ2l0Lg0KDQpRdWEgY8OhYyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXQgxJHGsOG7o2MgbOG7sWEgY2jhu41uIG5oaeG7gXUgbmjhuqV0IG7Dqm4gbcO0IGjDrG5oIG7DoHkgc+G6vSDEkcaw4bujYyBkw7luZyDEkeG7gyBwaMOibiB0w61jaCBr4bq/dCBxdeG6oy4NCg0KIyMjIDQuMi40IEdp4bqjaSB0aMOtY2gga+G6v3QgcXXhuqMgDQpgYGB7cn0NCnN1bW1hcnkobWxvZ2l0MikNCmBgYA0KS+G6v3QgcXXhuqMgxrDhu5tjIGzGsOG7o25nIGNobyBtw7QgaMOsbmggaOG7k2kgcXV5IGzDoDoNCg0KV2luZXNfc2VnbWVudD0gLTQsNjQxZSswMCArIDEsMTkxZS0wNEluY29tZSAtNiw2MjJlLTAxS2lkcyAtOCw0MjJlLTAxRWR1Y2F0aW9uDQoNCktob+G6o25nIMaw4bubYyBsxrDhu6NuZyBjaG8gY8OhYyBo4buHIHPhu5EgaOG7k2kgcXV5IA0KDQpgYGB7cn0NCmNvbmZpbnQuZGVmYXVsdChtbG9naXQyKQ0KYGBgDQoNCiMgQ2jGsMahbmcgNS4gS+G6vlQgTFXhuqxOIA0KDQojIyA1LjEgS+G6v3QgbHXhuq1uDQoNClF1YSBr4bq/dCBxdeG6oyBwaMOibiB0w61jaCB0YSBjw7MgdGjhu4MgdGjhuqV5IHF1eeG6v3QgxJHhu4tuaCBjaOG7jW4gbXVhIGjDoG5nIHLGsOG7o3UgdGjDtG5nIHF1YSBz4buRIHRp4buBbiBjaGkgY2hvIHLGsOG7o3UgdHJvbmcgdsOybmcgMiBuxINtIHF1YSBj4bunYSBraMOhY2ggaMOgbmcgdGhhbSBnaWEga2jhuqNvIHPDoXQgdOG6oWkgY+G7rWEgaMOgbmcgY2jhu4t1IHTDoWMgxJHhu5luZyBi4bufaSBjw6FjIHnhur91IHThu5E6IFRodSBuaOG6rXAgaOG7mSBnaWEgZMOsbmg7IFPhu5EgY29uIHRyb25nIG5ow6AgdsOgIFRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiBj4bunYSBraMOhY2ggaMOgbmcuDQoNCiMjIDUuMiBI4bqhbiBjaOG6vyB2w6AgaMaw4bubbmcgbmdoacOqbiBj4bupdSB0aeG6v3AgdGhlbw0KDQpEbyBo4bqhbiBjaOG6vyB24buBIG3hurd0IHRo4budaSBnaWFuIGPFqW5nIG5oxrAga2jhuqMgbsSDbmcgdMOgaSBjaMOtbmggbsOqbiBuZ2hpw6puIGPhu6l1IGNo4buJIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gduG7m2kgc+G7kSBt4bqrdSBo4bqhbiBjaOG6vyB2w6AgxJHhu5FpIHTGsOG7o25nIGto4bqjbyBzw6F0IGNo4buJIG1hbmcgdMOtbmggY2jhuqV0IMSR4bqhaSBkaeG7h24sIGNoxrBhIG1hbmcgdMOtbmggY2jhuqV0IGtow6FpIHF1w6F0LiDEkMOieSBjxaluZyBsw6AgxJHhu4EgeHXhuqV0IGNobyBoxrDhu5tuZyBuZ2hpw6puIGPhu6l1IHRp4bq/cCB0aGVvLg0KDQojIFTDgEkgTEnhu4ZVIFRIQU0gS0jhuqJPDQoNClsxXSBFcmRlbSwgVC4gJiBTd2FpdCwgSi4sIDIwMDQuIEJyYW5kIENyZWRpYmlsaXR5LCBCcmFuZCBDb25zaWRlcmF0aW9uLCBhbmQgQ2hvaWNlLiBKb3VybmFsIG9mIENvbnN1bWVyIFJlc2VhcmNoLCAzMSgxKSwgcHAuMTkxLTE5OC4NCg0KWzJdIENoZW4sIEMuLUguLCBOZ3V5ZW4sIEIuLCBLbGF1cywgUC4g4oCcUGhpbCzigJ0gJiBXdSwgTS4tUy4sIDIwMTUuIEV4cGxvcmluZyBFbGVjdHJvbmljIFdvcmRvZi1Nb3V0aCAoZVdPTSkgaW4gVGhlIENvbnN1bWVyIFB1cmNoYXNlIERlY2lzaW9uLU1ha2luZyBQcm9jZXNzOiBUaGUgQ2FzZSBvZiBPbmxpbmUgSG9saWRheXMg4oCTIEV2aWRlbmNlIGZyb20gVW5pdGVkIEtpbmdkb20gKFVLKSBDb25zdW1lcnMuIEpvdXJuYWwgb2YgVHJhdmVsICYgVG91cmlzbSBNYXJrZXRpbmcsIDMyKDgpLCBwcC45NTPigJM5NzAuDQoNClszXSBIYWlyLCBKLiBGLiwgQW5kZXJzb24sIFIuIEUuLCBUYXRoYW0sIFIuIEwuLCAmIEdyYWJsb3dza3ksIEIuIEouLCAxOTc5Lk11bHRpdmFyaWF0ZSBkYXRhIGFuYWx5c2lzLlR1bHNhLCBPSzogUGlwZSBCb29rc2FpciwgSi4gRi4sIEFuZGVyc29uLCBSLiBFLiwgVGF0aGFtLCBSLiBMLiwgJiBHcmFibG93c2t5LCBCLiBKLiAoMTk3OSkuTXVsdGl2YXJpYXRlIGRhdGEgYW5hbHlzaXMuVHVsc2EsIE9LOiBQaXBlIEJvb2tzLg0KDQpbNF0gSG/DoG5nIFRy4buNbmcsIENodSBOZ3V54buFbiBN4buZbmcgTmfhu41jICgyMDA1KSwgUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgbmdoacOqbiBj4bupdSB24bubaSBTUFNTLCBOWEIgVGjhu5FuZyBrw6ouS290bGVyLCBQLiAmIExldnksIFMuSi4gMTk2OSwgQnJvYWRlbmluZyB0aGUgY29uY2VwdCBvZiBtYXJrZXRpbmcsIEpvdXJuYWwgb2YgTWFya2V0aW5nLDMzKDEpLCBwcC4xMC0xNS4NCg0KTm90ZSB0aGF0IHRoZSBgZWNobyA9IEZBTFNFYCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIHRoZSBjb2RlIGNodW5rIHRvIHByZXZlbnQgcHJpbnRpbmcgb2YgdGhlIFIgY29kZSB0aGF0IGdlbmVyYXRlZCB0aGUgcGxvdC4NCg==