Kiểm định đồng tích hợp

Hai chuỗi thời gian được gọi là đồng tích hợp có nghĩa là tồn tại một số nguyên nhân gốc làm cho hai chuỗi thời gian có xu hướng biến động tương đồng nhau về dài hạn ngay cả khi nếu nhìn riêng lẻ thì chúng là bước đi ngẫu nhiên (random walks)

Kiểm định Dickey Fuller Test

Kiểm định này dùng để kiểm định bước ngẫu nhiên (nghiệm đơn vị) để kiểm tra 1 chuỗi thời gian có là chuỗi dừng không

## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2099 -0.7456 -0.0267  0.7259  3.1153 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)
## z.lag.1     0.0005076  0.0012061   0.421    0.674
## z.diff.lag -0.0207229  0.0317421  -0.653    0.514
## 
## Residual standard error: 1.072 on 996 degrees of freedom
## Multiple R-squared:  0.0005804,  Adjusted R-squared:  -0.001426 
## F-statistic: 0.2892 on 2 and 996 DF,  p-value: 0.7489
## 
## 
## Value of test-statistic is: 0.4209 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.9905 -1.0595  0.0282  0.9996  4.0732 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## z.lag.1    -0.0005597  0.0024185  -0.231    0.817    
## z.diff.lag -0.4030040  0.0290357 -13.880   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.508 on 996 degrees of freedom
## Multiple R-squared:  0.1628, Adjusted R-squared:  0.1611 
## F-statistic: 96.81 on 2 and 996 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -0.2314 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

Các kiểm định thu được lần lượt là 0.4209 và - 0.2314 đều lớn hơn cac Critical values tại tất cả các ngưỡng 1%, 5%, 10% nên chúng ta có thể nói rằng có bằng chứng thống kê cho thấy các chuỗi là không dừng. Kế tiếp chúng ta xét chuỗi thời gian Z như sau: Zt = Yt - y*Xt Rồi kiểm định tính dừng cho chuỗi này bằng ADF test.

## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2414 -0.7083 -0.0490  0.7102  3.0251 
## 
## Coefficients:
##            Estimate Std. Error t value Pr(>|t|)    
## z.lag.1    -0.94392    0.04419 -21.358   <2e-16 ***
## z.diff.lag -0.02848    0.03170  -0.898    0.369    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.037 on 996 degrees of freedom
## Multiple R-squared:  0.4859, Adjusted R-squared:  0.4849 
## F-statistic: 470.7 on 2 and 996 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -21.3583 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

Giá trị của kiểm định thu được là - 21.3583 nhỏ hơn Critical values tại tất cả các ngưỡng do đó chúng ta có thể kết luận rằng chuỗi Z là dừng

Hình ảnh chuỗi Z

Chuỗi Z là dừng do đó chúng ta có thể thấy phân phối của chuỗi này có hình chuông đối xứng:

Kiểm định nhân quả Engle - Granger

Trong thực tế chúng ta không biết trước yama chúng ta buộc phải ước lượng giá trị này bằng cách thực hiện hồi quy OLS không có hệ số chặn Y theo X rồi áp dụng kiểm định ADF cho phần dư. Các thức này được mô tả trong giáo trình kinh tế lượng. Chúng ta thực hiện kiểm định nhân quả như sau:

## 
## Call:
## lm(formula = Y ~ X - 1, data = .)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2121 -0.7075 -0.0430  0.7237  3.0939 
## 
## Coefficients:
##   Estimate Std. Error t value Pr(>|t|)    
## X 0.700745   0.001163   602.7   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.036 on 999 degrees of freedom
## Multiple R-squared:  0.9973, Adjusted R-squared:  0.9973 
## F-statistic: 3.633e+05 on 1 and 999 DF,  p-value: < 2.2e-16
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2444 -0.6954 -0.0301  0.7329  3.0494 
## 
## Coefficients:
##            Estimate Std. Error t value Pr(>|t|)    
## z.lag.1    -0.94471    0.04421 -21.370   <2e-16 ***
## z.diff.lag -0.02807    0.03170  -0.886    0.376    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.036 on 996 degrees of freedom
## Multiple R-squared:  0.4861, Adjusted R-squared:  0.485 
## F-statistic:   471 on 2 and 996 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -21.3698 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

Giá trị của test này là (-21.3698) không khác biệt nhiều lắm so với giá trị trước đó (-21.3583)

Các chuỗi đồng tích hợp ngụ ý tăng một cổ phiếu công ty trong 1 ngành (thép) có thể có biến động tương tự nhau về dài hạn hoặc ngắn hạn . Và giá mong đơi của chúng có thể biến thiên tương tự nhau.

LS0tDQp0aXRsZTogJ0tp4buDbSDEkeG7i25oIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBjaHXhu5dpIHRo4budaSBnaWFuJw0KYXV0aG9yOiAnTWVzYTU3Jw0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgIyBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRoZW1lOiAiZmxhdGx5Ig0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDYpDQpgYGANCg0KIyMgS2nhu4NtIMSR4buLbmggxJHhu5NuZyB0w61jaCBo4bujcA0KDQpIYWkgY2h14buXaSB0aOG7nWkgZ2lhbiDEkcaw4bujYyBn4buNaSBsw6AgxJHhu5NuZyB0w61jaCBo4bujcCBjw7MgbmdoxKlhIGzDoCB04buTbiB04bqhaSBt4buZdCBz4buRIG5ndXnDqm4gbmjDom4gZ+G7kWMgbMOgbSBjaG8gaGFpIGNodeG7l2kgdGjhu51pIGdpYW4gY8OzIHh1IGjGsOG7m25nIGJp4bq/biDEkeG7mW5nIHTGsMahbmcgxJHhu5NuZyBuaGF1IHbhu4EgZMOgaSBo4bqhbiBuZ2F5IGPhuqMga2hpIG7hur91IG5ow6xuIHJpw6puZyBs4bq7IHRow6wgY2jDum5nIGzDoCBixrDhu5tjIMSRaSBuZ+G6q3Ugbmhpw6puIChyYW5kb20gd2Fsa3MpDQoNCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCiMgQSBmdW5jdGlvbiBmb3IgYmxhY2sgdGhlbWU6IA0KbXlfdGhlbWUgPC0gZnVuY3Rpb24oLi4uKSB7DQogIHRoZW1lKA0KICAgIGF4aXMubGluZSA9IGVsZW1lbnRfYmxhbmsoKSwgIA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiwgbGluZWhlaWdodCA9IDAuOSksICANCiAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIGxpbmVoZWlnaHQgPSAwLjkpLCAgDQogICAgYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvciA9ICJ3aGl0ZSIsIHNpemUgID0gIDAuMiksICANCiAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiLCBtYXJnaW4gPSBtYXJnaW4oMCwgMTAsIDAsIDApKSwgIA0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIGFuZ2xlID0gOTAsIG1hcmdpbiA9IG1hcmdpbigwLCAxMCwgMCwgMCkpLCAgDQogICAgYXhpcy50aWNrcy5sZW5ndGggPSB1bml0KDAuMywgImxpbmVzIiksICAgDQogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoY29sb3IgPSBOQSwgZmlsbCA9ICJncmF5MTAiKSwgIA0KICAgIGxlZ2VuZC5rZXkgPSBlbGVtZW50X3JlY3QoY29sb3IgPSAid2hpdGUiLCAgZmlsbCA9ICJncmF5MTAiKSwgIA0KICAgIGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMS4yLCAibGluZXMiKSwgIA0KICAgIGxlZ2VuZC5rZXkuaGVpZ2h0ID0gTlVMTCwgIA0KICAgIGxlZ2VuZC5rZXkud2lkdGggPSBOVUxMLCAgICAgIA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksICANCiAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiwgaGp1c3QgPSAwLCBjb2xvciA9ICJ3aGl0ZSIpLCAgDQogICAgbGVnZW5kLnRleHQuYWxpZ24gPSBOVUxMLCAgDQogICAgbGVnZW5kLnRpdGxlLmFsaWduID0gTlVMTCwgIA0KICAgIGxlZ2VuZC5kaXJlY3Rpb24gPSAidmVydGljYWwiLCAgDQogICAgbGVnZW5kLmJveCA9IE5VTEwsIA0KICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJncmF5MTAiLCBjb2xvciAgPSAgTkEpLCAgDQogICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9ibGFuaygpLA0KICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2xpbmUoY29sb3IgPSAiZ3JleTM1IiksICANCiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9saW5lKGNvbG9yID0gImdyZXkyMCIpLCAgDQogICAgcGFuZWwuc3BhY2luZyA9IHVuaXQoMC41LCAibGluZXMiKSwgICANCiAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiZ3JleTMwIiwgY29sb3IgPSAiZ3JleTEwIiksICANCiAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwgIA0KICAgIHN0cmlwLnRleHQueSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIGFuZ2xlID0gLTkwKSwgIA0KICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChjb2xvciA9ICJncmF5MTAiLCBmaWxsID0gImdyYXkxMCIpLCAgDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIGhqdXN0ID0gMCwgbGluZWhlaWdodCA9IDEuMjUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4gPSBtYXJnaW4oMiwgMiwgMiwgMikpLCAgDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIGhqdXN0ID0gMCwgbWFyZ2luID0gbWFyZ2luKDIsIDIsIDIsIDIpKSwgIA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIGhqdXN0ID0gMCksICANCiAgICBwbG90Lm1hcmdpbiA9IHVuaXQocmVwKDEsIDQpLCAibGluZXMiKSkNCiAgDQp9DQoNCiMgTG9hZCBzb21lIHBhY2thZ2VzOiANCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShtYWdyaXR0cikNCg0KIyBTaW11bGF0ZSB0d28gQ29pbnRlZ3JhdGVkIFRpbWUgU2VyaWVzIGFzIHByb3Bvc2VkIGJ5IEhhbWlsdG9uICgxOTk0KTogDQpnYW1tYSA8LSAwLjcNCg0Kc2V0LnNlZWQoMjkpDQp4IDwtIHJub3JtKDEwMDApICU+JSBjdW1zdW0oKQ0KeSA8LSBnYW1tYSp4ICsgcm5vcm0oMTAwMCkNCg0KZGYgPC0gZGF0YV9mcmFtZShyZXR1cm4gPSBjKHgsIHkpLCANCiAgICAgICAgICAgICAgICAgc2VyaWVzID0gYyhyZXAoIlgiLCAxMDAwKSwgcmVwKCJZIiwgMTAwMCkpLCANCiAgICAgICAgICAgICAgICAgdGltZSA9IHJlcCgxOjEwMDAsIGxlbmd0aC5vdXQgPSAyMDAwKSkNCg0KIyBWaXN1YWxpemUgdGltZSBzZXJpZXM6IA0KZGYgJT4lIA0KICBnZ3Bsb3QoYWVzKHRpbWUsIHJldHVybiwgY29sb3IgPSBzZXJpZXMpKSArIA0KICBnZW9tX2xpbmUoKSArIA0KICBteV90aGVtZSgpICsgDQogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJjeWFuIiwgInB1cnBsZSIpKSArIA0KICBsYWJzKHggPSBOVUxMLCB5ID0gTlVMTCwgDQogICAgICAgdGl0bGUgPSAiRmlndXJlIDE6IEFuIEV4YW1wbGUgb2YgTm9uc3RhdGlvbmFyeS9Db2ludGVncmF0ZWQgVGltZSBTZXJpZXNcbmFzIHByb3Bvc2VkIGJ5IEhhbWlsdG9uICgxOTk0KSIpIA0KDQoNCmBgYA0KDQojIyBLaeG7g20gxJHhu4tuaCBEaWNrZXkgRnVsbGVyIFRlc3QNCg0KS2nhu4NtIMSR4buLbmggbsOgeSBkw7luZyDEkeG7gyBraeG7g20gxJHhu4tuaCBixrDhu5tjIG5n4bqrdSBuaGnDqm4gKG5naGnhu4dtIMSRxqFuIHbhu4spIMSR4buDIGtp4buDbSB0cmEgMSBjaHXhu5dpIHRo4budaSBnaWFuIGPDsyBsw6AgY2h14buXaSBk4burbmcga2jDtG5nIA0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KbGlicmFyeSh1cmNhKQ0KIyMga2nhu4NtIMSR4buLbmggQURGDQoNCmRmICU+JSBmaWx0ZXIoc2VyaWVzID09ICJYIikgJT4lDQogIHB1bGwocmV0dXJuKSAlPiUNCiAgdXIuZGYodHlwZSA9ICJub25lIikgJT4lDQogIHN1bW1hcnkoKQ0KDQoNCmRmICU+JSBmaWx0ZXIoc2VyaWVzID09ICJZIikgJT4lDQogIHB1bGwocmV0dXJuKSAlPiUNCiAgdXIuZGYodHlwZSA9ICJub25lIikgJT4lDQogIHN1bW1hcnkoKQ0KDQpgYGANCg0KQ8OhYyBraeG7g20gxJHhu4tuaCB0aHUgxJHGsOG7o2MgbOG6p24gbMaw4bujdCBsw6AgMC40MjA5IHbDoCAgLSAwLjIzMTQgxJHhu4F1IGzhu5tuIGjGoW4gY2FjIENyaXRpY2FsIHZhbHVlcyB04bqhaSB04bqldCBj4bqjIGPDoWMgbmfGsOG7oW5nIDElLCA1JSwgMTAlIG7Dqm4gY2jDum5nIHRhIGPDsyB0aOG7gyBuw7NpIHLhurFuZyBjw7MgYuG6sW5nIGNo4bupbmcgdGjhu5FuZyBrw6ogY2hvIHRo4bqleSBjw6FjIGNodeG7l2kgbMOgIGtow7RuZyBk4burbmcuDQpL4bq/IHRp4bq/cCBjaMO6bmcgdGEgeMOpdCBjaHXhu5dpIHRo4budaSBnaWFuIFogbmjGsCBzYXU6DQpadCA9IFl0IC0geSpYdA0KUuG7k2kga2nhu4NtIMSR4buLbmggdMOtbmggZOG7q25nIGNobyBjaHXhu5dpIG7DoHkgYuG6sW5nIEFERiB0ZXN0Lg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KZGYgJT4lIA0KICBzcHJlYWQoa2V5ID0gInNlcmllcyIsIHZhbHVlID0gInJldHVybiIpICU+JSANCiAgbXV0YXRlKHogPSBZIC0gMC43KlgpICU+JSANCiAgcHVsbCh6KSAlPiUgDQogIHVyLmRmKHR5cGUgPSAibm9uZSIpICU+JSANCiAgc3VtbWFyeSgpDQpgYGANCg0KDQpHacOhIHRy4buLIGPhu6dhIGtp4buDbSDEkeG7i25oIHRodSDEkcaw4bujYyBsw6AgIC0gMjEuMzU4MyBuaOG7jyBoxqFuIENyaXRpY2FsIHZhbHVlcyB04bqhaSB04bqldCBj4bqjIGPDoWMgbmfGsOG7oW5nIGRvIMSRw7MgY2jDum5nIHRhIGPDsyB0aOG7gyBr4bq/dCBsdeG6rW4gcuG6sW5nIGNodeG7l2kgWiBsw6AgZOG7q25nDQoNCkjDrG5oIOG6o25oIGNodeG7l2kgWg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KZGYgJT4lIA0KICBzcHJlYWQoa2V5ID0gInNlcmllcyIsIHZhbHVlID0gInJldHVybiIpICU+JSANCiAgbXV0YXRlKHogPSBZIC0gZ2FtbWEqWCkgJT4lIA0KICBnZ3Bsb3QoYWVzKHRpbWUsIHopKSArIA0KICBteV90aGVtZSgpICsgDQogIGdlb21fbGluZShjb2xvciA9ICJjeWFuIikgKyANCiAgbGFicyh0aXRsZSA9ICJGaWd1cmUgMjogQW4gRXhhbXBsZSBvZiBTdGF0aW9uYXJ5IFRpbWUgU2VyaWVzIiwgDQogICAgICAgeCA9IE5VTEwsIHkgPSBOVUxMKQ0KYGBgDQoNCkNodeG7l2kgWiBsw6AgZOG7q25nIGRvIMSRw7MgY2jDum5nIHRhIGPDsyB0aOG7gyB0aOG6pXkgcGjDom4gcGjhu5FpIGPhu6dhIGNodeG7l2kgbsOgeSBjw7MgaMOsbmggY2h1w7RuZyDEkeG7kWkgeOG7qW5nOg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KZGYgJT4lIA0KICBzcHJlYWQoa2V5ID0gInNlcmllcyIsIHZhbHVlID0gInJldHVybiIpICU+JSANCiAgbXV0YXRlKHogPSBZIC0gZ2FtbWEqWCkgJT4lIA0KICBnZ3Bsb3QoYWVzKHopKSArIA0KICBnZW9tX2RlbnNpdHkoZmlsbCA9ICJjeWFuIiwgY29sb3IgPSAiY3lhbiIsIGFscGhhID0gMC4zKSArIA0KICBnZW9tX2hpc3RvZ3JhbShhZXMoeSA9IC4uZGVuc2l0eS4uKSwgY29sb3IgPSAicHVycGxlIiwgZmlsbCA9ICJwdXJwbGUiLCBhbHBoYSA9IDAuMykgKyANCiAgbGFicyh4ID0gTlVMTCwgeSA9IE5VTEwsIA0KICAgICAgIHRpdGxlID0gIkZpZ3VyZSAzOiBEaXN0cmlidXRpb24gb2YgU3RhdGlvbmFyeSBUaW1lIFNlcmllcyIpICsgDQogIG15X3RoZW1lKCkNCmBgYA0KDQojIyBLaeG7g20gxJHhu4tuaCBuaMOibiBxdeG6oyBFbmdsZSAtIEdyYW5nZXINClRyb25nIHRo4buxYyB04bq/IGNow7puZyB0YSBraMO0bmcgYmnhur90IHRyxrDhu5tjIHlhbWEgY2jDum5nIHRhIGJ14buZYyBwaOG6o2kgxrDhu5tjIGzGsOG7o25nIGdpw6EgdHLhu4sgbsOgeSBi4bqxbmcgY8OhY2ggdGjhu7FjIGhp4buHbiBo4buTaSBxdXkgT0xTIGtow7RuZyBjw7MgaOG7hyBz4buRIGNo4bq3biBZIHRoZW8gWCBy4buTaSDDoXAgZOG7pW5nIGtp4buDbSDEkeG7i25oIEFERiBjaG8gcGjhuqduIGTGsC4gQ8OhYyB0aOG7qWMgbsOgeSDEkcaw4bujYyBtw7QgdOG6oyB0cm9uZyBnacOhbyB0csOsbmgga2luaCB04bq/IGzGsOG7o25nLg0KQ2jDum5nIHRhIHRo4buxYyBoaeG7h24ga2nhu4NtIMSR4buLbmggbmjDom4gcXXhuqMgbmjGsCBzYXU6DQoNCmBgYHtyLCBlY2hvID0gRkFMU0V9DQpkZiAlPiUgDQogIHNwcmVhZChrZXkgPSAic2VyaWVzIiwgdmFsdWUgPSAicmV0dXJuIikgJT4lIA0KICBsbShZIH4gWCAtIDEsIGRhdGEgPSAuKSAtPiBteV9vbHMNCg0KbXlfb2xzICU+JSBzdW1tYXJ5KCkNCg0KbXlfb2xzJHJlc2lkdWFscyAlPiUgDQogIHVyLmRmKHR5cGUgPSAibm9uZSIpICU+JSANCiAgc3VtbWFyeSgpDQpgYGANCg0KDQpHacOhIHRy4buLIGPhu6dhIHRlc3QgbsOgeSBsw6AgKC0yMS4zNjk4KSBraMO0bmcga2jDoWMgYmnhu4d0IG5oaeG7gXUgbOG6r20gc28gduG7m2kgZ2nDoSB0cuG7iyB0csaw4bubYyDEkcOzICgtMjEuMzU4MykNCg0KQ8OhYyBjaHXhu5dpIMSR4buTbmcgdMOtY2ggaOG7o3Agbmfhu6Ugw70gdMSDbmcgbeG7mXQgY+G7lSBwaGnhur91IGPDtG5nIHR5IHRyb25nIDEgbmfDoG5oICh0aMOpcCkgY8OzIHRo4buDIGPDsyBiaeG6v24gxJHhu5luZyB0xrDGoW5nIHThu7EgbmhhdSB24buBIGTDoGkgaOG6oW4gaG/hurdjIG5n4bqvbiBo4bqhbiAuIFbDoCBnacOhIG1vbmcgxJHGoWkgY+G7p2EgY2jDum5nIGPDsyB0aOG7gyBiaeG6v24gdGhpw6puIHTGsMahbmcgdOG7sSBuaGF1Lg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K