Introduction
This is a protype forecast report. The goal is to assist users in assessing how an earth observation product can be used for making agricultural outlooks.
The report includes the following key components:
- Mean Area, Production, and Yield over the years 1994 to 2014 -This provides context for interpreting the grain data
- Cropped Area Masks-shows three maps that illustrate how a crop mask in this analysis. The first map shows the crop mask: A 0.05 degree grid showing the percent of each pixel that is considered cropped. The second map shows the percent of the area of each disrict that includes pixels with at least some cropped area. Finally, we also show what districts are included in the analysis if we limit to the models to districts where at least 15% or more of the disrict area is cropped.
- Mean, Current Value, and Current Anomalie for the current month of whichever EO variable is being used for prediction (in this case CHIRPS) -
- Historical Out of Sample Forecast Error for the same product and statistical model in a similar set of months. In this case we look at what the past accuracy of a yield forecast (using CHIRPS) was in March, April, and May. Note, this is averaged over the 2000-2014 period. I would also like to compare this with analog years.
- Yield Forecast, (based on May 2020 CHIRPS ) expressed as percent of mean yield for a specific district over the period 1994 - 2014.
Yield Forecast based on May 2020 CHIRPS
Forecast values expressed as percent of Mean Yields over the Years 1994 - 2014. Model forecasts are a generalized additive model (GAM). The figure shows predicted percent of mean (center) as well as lower (left) and higher (right) predicted percent of mean intervals. NOTE Percent of mean is based on district specific (not national) mean yields.

Table of Forecast Values
This table shows the forecast percentage of mean values in the above table along with the mean yield values from the first figure. ***
Table of Mean Yields and Predicted Percent of Mean Values
| District |
Mean Yield |
% of mean (low) |
% of mean |
% of mean (high) |
| Baringo |
1.8247619 |
1.07 |
1.14 |
1.21 |
| Bugoma |
2.7185714 |
1.05 |
1.09 |
1.14 |
| Busia |
1.3114286 |
1.10 |
1.20 |
1.30 |
| Elgeyo-Marakwet |
2.4880952 |
1.05 |
1.11 |
1.16 |
| Embu |
0.9961905 |
1.22 |
1.36 |
1.50 |
| Kajiado |
1.2823810 |
1.08 |
1.18 |
1.27 |
| Kakamega |
2.1857143 |
1.08 |
1.14 |
1.20 |
| Kericho |
2.6295238 |
1.06 |
1.11 |
1.16 |
| Kiambu |
1.0404762 |
1.19 |
1.32 |
1.45 |
| Kilifi |
0.8119048 |
1.12 |
1.27 |
1.43 |
| Kirinyaga |
1.1633333 |
1.26 |
1.39 |
1.51 |
| Kisii |
2.5090476 |
1.05 |
1.10 |
1.15 |
| Kisumu |
1.7838095 |
1.07 |
1.14 |
1.21 |
| Kitui |
0.4938095 |
1.18 |
1.44 |
1.69 |
| Kwale |
0.9357143 |
1.22 |
1.37 |
1.51 |
| Laikipia |
1.6352381 |
1.09 |
1.17 |
1.25 |
| Lamu |
1.0966667 |
1.03 |
1.15 |
1.26 |
| Machakos |
0.4890476 |
1.22 |
1.48 |
1.73 |
| Meru |
1.0830000 |
1.22 |
1.35 |
1.48 |
| Mombasa |
0.8385714 |
1.47 |
1.66 |
1.85 |
| Muranga |
0.9247619 |
1.35 |
1.52 |
1.68 |
| Nakuru |
2.0585714 |
1.08 |
1.14 |
1.20 |
| Nandi |
2.7947619 |
1.05 |
1.09 |
1.14 |
| Narok |
2.1376190 |
1.07 |
1.13 |
1.19 |
| Nyandaura |
1.6776190 |
1.12 |
1.20 |
1.28 |
| Nyeri |
1.0257143 |
1.30 |
1.44 |
1.59 |
| Samburu |
1.4385714 |
1.09 |
1.18 |
1.27 |
| Siaya |
1.3728571 |
1.06 |
1.15 |
1.24 |
| South Nyanza |
1.5338095 |
1.05 |
1.13 |
1.21 |
| Taita Taveta |
0.8733333 |
1.09 |
1.23 |
1.37 |
| Trans-Nzoia |
3.5104762 |
1.04 |
1.07 |
1.11 |
| Uasin-Gishu |
3.3176190 |
1.03 |
1.07 |
1.11 |
| West-Pokot |
1.9666667 |
1.05 |
1.12 |
1.18 |
LS0tCnRpdGxlOiAiRm9yZWNhc3QgUmVwb3J0IFRlbXBsYXRlIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDQKZmlnX3dpZHRoOiA3CmZpZ19oZWlnaHQ6IDYKZmlnX2NhcHRpb246IHRydWUKLS0tCgpgYGB7cixldmFsPVRSVUUsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9CiMtLS1TZXQgUHJvamVjdCBEaXJlY3RvcmllcwpkaXJCYXNlPC0nL1ZvbHVtZXMvR29vZ2xlRHJpdmUvTXkgRHJpdmUvJwoKIy1Qcm9qZWN0IERpcmVjdG9yaWVzCmRpclByb2o8LXBhc3RlMChkaXJCYXNlLCdtYWl6ZV9mb3JlY2FzdC8nKSAjcHJvamVjdCBkaXJlY3RvcnkKZGlyUHJvajI8LXBhc3RlMChkaXJCYXNlLCdtYWl6ZV9mb3JlY2FzdF9yZXBvcnRpbmcvJykKZGlyUmRhdDwtcGFzdGUwKGRpclByb2osJ21haXplX2ZvcmVjYXN0X3JkYXRhLycpCmRpclJkYXQyPC1wYXN0ZTAoZGlyUHJvajIsJ2ZvcmVjYXN0X3JlcG9ydGluZ19yZGF0YS8nKQpkaXJEYXRfcmF3PC1wYXN0ZTAoZGlyUHJvaiwnbWFpemVfZm9yZWNhc3RfcmF3ZGF0YS8nKQpkaXJTaGFwZUZpbGVzPC1wYXN0ZTAoZGlyUHJvaiwnbWFpemVfZm9yZWNhc3Rfc2hhcGVmaWxlcy8nKQpkaXJTcGRhdDwtcGFzdGUwKGRpckJhc2UsJ1NwYXRpYWwvJykKZGlyTWFzazwtcGFzdGUwKGRpclByb2osJ21haXplX2ZvcmVjYXN0X2Nyb3BtYXNrLycpCgoKbGlicmFyeShyZXNoYXBlMikKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkocmFzdGVyKQpsaWJyYXJ5KHJnZGFsKQpsaWJyYXJ5KHNmKQpsaWJyYXJ5KGNhcikKbGlicmFyeShzY2FsZXMpCmxpYnJhcnkoa2FibGVFeHRyYSkKCmxpYnJhcnkoY293cGxvdCkgI21hc2tzIGdnc2F2ZQpsaWJyYXJ5KHZpcmlkaXMpCgoKIy0tTG9hZCBFeGlzdGluZyBQbG90cwpzZXR3ZChkaXJSZGF0MikKbG9hZCgnMjBfbWFpemVfZm9yZWNhc3RfcmVwb3J0aW5nX21haW5fcGxvdHMuUmRhdGEnKQpgYGAKIyBJbnRyb2R1Y3Rpb24KVGhpcyBpcyBhIHByb3R5cGUgZm9yZWNhc3QgcmVwb3J0LiAqKlRoZSBnb2FsIGlzIHRvIGFzc2lzdCB1c2VycyBpbiBhc3Nlc3NpbmcgaG93IGFuIGVhcnRoIG9ic2VydmF0aW9uIHByb2R1Y3QgY2FuIGJlIHVzZWQgZm9yIG1ha2luZyBhZ3JpY3VsdHVyYWwgb3V0bG9va3MuKioKClRoZSByZXBvcnQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBrZXkgY29tcG9uZW50czoKCjEuICoqKk1lYW4gQXJlYSwgUHJvZHVjdGlvbiwgYW5kIFlpZWxkIG92ZXIgdGhlIHllYXJzIGByIGxpc192YXJzX3JlcG9ydCRtaW5fYWdgIHRvIGByIGxpc192YXJzX3JlcG9ydCRtYXhfYWdgKioqIC1UaGlzIHByb3ZpZGVzIGNvbnRleHQgZm9yIGludGVycHJldGluZyB0aGUgZ3JhaW4gZGF0YQoyLiAqKipDcm9wcGVkIEFyZWEgTWFza3MqKiotc2hvd3MgdGhyZWUgbWFwcyB0aGF0IGlsbHVzdHJhdGUgaG93IGEgY3JvcCBtYXNrIGluIHRoaXMgYW5hbHlzaXMuIFRoZSBmaXJzdCBtYXAgc2hvd3MgdGhlIGNyb3AgbWFzazogQSAwLjA1IGRlZ3JlZSBncmlkIHNob3dpbmcgdGhlIHBlcmNlbnQgb2YgZWFjaCBwaXhlbCB0aGF0IGlzIGNvbnNpZGVyZWQgY3JvcHBlZC4gVGhlIHNlY29uZCBtYXAgc2hvd3MgdGhlIHBlcmNlbnQgb2YgdGhlIGFyZWEgb2YgZWFjaCBkaXNyaWN0IHRoYXQgaW5jbHVkZXMgcGl4ZWxzIHdpdGggYXQgbGVhc3Qgc29tZSBjcm9wcGVkIGFyZWEuIEZpbmFsbHksIHdlIGFsc28gc2hvdyB3aGF0IGRpc3RyaWN0cyBhcmUgaW5jbHVkZWQgaW4gdGhlIGFuYWx5c2lzIGlmIHdlIGxpbWl0IHRvIHRoZSBtb2RlbHMgdG8gZGlzdHJpY3RzIHdoZXJlIGF0IGxlYXN0IGByIHBhc3RlMChsaXNfdmFyc19yZXBvcnQkY3JvcF9hcmVhKjEwMCwnJScpYCBvciBtb3JlIG9mIHRoZSBkaXNyaWN0IGFyZWEgaXMgY3JvcHBlZC4gCjMuICoqKk1lYW4sIEN1cnJlbnQgVmFsdWUsIGFuZCBDdXJyZW50IEFub21hbGllKioqIGZvciB0aGUgY3VycmVudCBtb250aCBvZiB3aGljaGV2ZXIgRU8gdmFyaWFibGUgaXMgYmVpbmcgdXNlZCBmb3IgcHJlZGljdGlvbiAoaW4gdGhpcyBjYXNlIGByIGxpc192YXJzX3JlcG9ydCR2YXJfbmFtZWApIC0gCjQuICoqKkhpc3RvcmljYWwgT3V0IG9mIFNhbXBsZSBGb3JlY2FzdCBFcnJvcioqKiBmb3IgdGhlIHNhbWUgcHJvZHVjdCBhbmQgc3RhdGlzdGljYWwgbW9kZWwgaW4gYSBzaW1pbGFyIHNldCBvZiBtb250aHMuIEluIHRoaXMgY2FzZSB3ZSBsb29rIGF0IHdoYXQgdGhlIHBhc3QgYWNjdXJhY3kgb2YgYSB5aWVsZCBmb3JlY2FzdCAodXNpbmcgYHIgbGlzX3ZhcnNfcmVwb3J0JHZhcl9uYW1lYCkgd2FzIGluIE1hcmNoLCBBcHJpbCwgYW5kIE1heS4gIE5vdGUsIHRoaXMgaXMgYXZlcmFnZWQgb3ZlciB0aGUgMjAwMC0yMDE0IHBlcmlvZC4gSSB3b3VsZCBhbHNvIGxpa2UgdG8gY29tcGFyZSB0aGlzIHdpdGggYW5hbG9nIHllYXJzLiAKNS4gKioqWWllbGQgRm9yZWNhc3QqKiosIChiYXNlZCBvbiAqKipgciBsaXNfdmFyc19yZXBvcnQkbW9udGhfbmFtZWAgYHIgbGlzX3ZhcnNfcmVwb3J0JG1heF9ldmFyX3llYXJgIGByIGxpc192YXJzX3JlcG9ydCR2YXJfbmFtZWAqKiogKSBleHByZXNzZWQgYXMgKipwZXJjZW50IG9mIG1lYW4geWllbGQgZm9yIGEgc3BlY2lmaWMgZGlzdHJpY3QqKiBvdmVyIHRoZSBwZXJpb2QgYHIgbGlzX3ZhcnNfcmVwb3J0JG1pbl9hZ2AgLSBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2FnYC4KPCEtLSA1LiAqKipCZXN0IFByb2R1Y3QgZm9yIGEgR2l2ZW4gTW9udGgqKiouVGhpcyBzaG93cyBoaXN0b3JpY2FsbHkgd2hhdCB0aGUgJ2Jlc3QnIHByb2R1Y3QgaXMgZm9yIGEgZ2l2ZW4gbW9udGggb3IgeWVhci4gLS0+CgojIFN1bW1hcnkgRmlndXJlcwoKIyMjIyBNZWFuIEFyZWEsIFByb2R1Y3Rpb24sIGFuZCBZaWVsZHMgZm9yIHRoZSB5ZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCB0byBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2FnYC4KCioqKgpgYGB7cixlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KcDFhbGwKYGBgCioqKgoKIyMjIyBDcm9wcGVkIEFyZWFzCiogICoqKlBlcmNlbnQgb2YgUGl4ZWwgQXJlYSB0aGF0IGlzIENyb3BwZWQqKiogIGlzIGFuIDAuMDUgZGVncmVlIGdyaWQgc2hvd2luZyB0aGUgcGVyY2VudCBvZiBlYWNoIHBpeGVsIHRoYXQgaXMgY29uc2lkZXJlZCBjcm9wcGVkIGFuZCBpcyBiYXNlZCAocmVzYW1wbGVkIGZyb20pIG9uIHRoZSBJSUFTQS1JRlBSSSBjcm9wbGFuZCBwZXJjZW50YWdlIG1hcCBbKEZyaXR6IGV0IGFsLiwgMjAxNSldKGh0dHBzOi8vb25saW5lbGlicmFyeS53aWxleS5jb20vZG9pL2Ficy8xMC4xMTExL2djYi4xMjgzOCkgCgoqICoqKlBlcmNlbnQgb2YgRGlzdHJpY3QgQXJlYSBDb250YWluaW5nIFBpeGVscyB0aGF0IEFyZSBDcm9wcGVkKioqIGlzIHRoZSBwZXJjZW50IG9mIGVhY2ggZGlzdHJpY3QgdGhhdCBjb250YWluIHBpeGVscyB3aGVyZSA+MCUgb2YgdGhlIHBpeGVsIGFyZWEgaXMgY3JvcHBlZCAoYW55dGhpbmcgZ3JlYXRlciB0aGFuIDAgaW4gdGhlIHByZXZpb3VzIG1hcCkuCgoqICoqKkRpc3RyaWN0cyB3aGVyZSBgciBwYXN0ZTAobGlzX3ZhcnNfcmVwb3J0JGNyb3BfYXJlYSoxMDAsJyUnKWAgb3IgbW9yZSBvZiB0aGUgQXJlYSBjb250YWluIENyb3BwZWQgUGl4ZWxzKioqIHNob3dzIGRpc3RyaWN0cyBmcm9tIHRoZSBwcmV2aW91cyBmaWd1cmUgd2hlcmUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGByIHBhc3RlMChsaXNfdmFyc19yZXBvcnQkY3JvcF9hcmVhKjEwMCwnJScpYC4gIERpc3RyaWN0cyB0aGF0IG1lZXQgdGhpcyBjcml0ZXJpYSBhcmUgdXNlZCBmb3IgdGhlIGZvcmVjYXN0IGFuYWx5c2lzLiAKCioqKgpgYGB7cixlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KcDBjYWxsCmBgYAoqKioKYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9CnAwYzIKYGBgCioqKgoKIyMjIyBNZWFuLCBDdXJyZW50LCBhbmQgQW5vbWFsaWUgZm9yIGByIGxpc192YXJzX3JlcG9ydCRtb250aF9uYW1lYCBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2V2YXJfeWVhcmAgYHIgbGlzX3ZhcnNfcmVwb3J0JHZhcl9uYW1lYCAKCk1lYW4gYW5kIEFub21hbGllIGFyZSBiYXNlZCBvbiB0aGUgeWVhcnMgYHIgbGlzX3ZhcnNfcmVwb3J0JG1pbl9hZ2AgdG8gYHIgbGlzX3ZhcnNfcmVwb3J0JG1heF9ldmFyX3llYXJgLgoKKioqCmBgYHtyLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQpwMmFsbApgYGAKKioqCgojIyMjIE91dCBvZiBTYW1wbGUgRm9yZWNhc3QgRXJyb3IgZm9yIENISVJQUyBNYXJjaCwgQXByaWwsIGFuZCBNYXkgUmFpbmZhbGwKTWVhbiBBYnNvbHV0ZSBQZXJjZW50IEVycm9yIChNQVBFKSBjYWxjdWxhdGVkIGJhc2VkIG9uIG91dCBvZiBzYW1wbGUgc2Vhc29uZmFsIGZvcmVjYXN0cyBjb25kdWN0ZWQgb3ZlciAyMDAxLTIwMTQuICoqTG93ZXIgc2NvcmVzIGluZGljYXRlIGdyZWF0ZXIgYWNjdXJhY3kqKi4gRm9yZWNhc3RzIGFyZSBiYXNlZCBvbiBhZ2VuZXJhbGl6ZWQgYWRkaXRpdmUgbW9kZWwgKEdBTSkgbW9kZWwgdHlwZS4gCgoqKioKYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9CiNNT0RTUEVDXltNb2RlbCB0eXBlKHMpIHRvIGJlIGZpbGxlZCBpbiBkeW5hbWljYWxseS0gVXNlIHRoaXMgcGFyYW1ldGVyIHRvIGZpbGwgaW4gbW9kZWwgdHlwZQpwNApgYGAKKioqCgoKIyBZaWVsZCBGb3JlY2FzdCBiYXNlZCBvbiBgciBsaXNfdmFyc19yZXBvcnQkbW9udGhfbmFtZWAgYHIgbGlzX3ZhcnNfcmVwb3J0JG1heF9ldmFyX3llYXJgIGByIGxpc192YXJzX3JlcG9ydCR2YXJfbmFtZWAgCkZvcmVjYXN0IHZhbHVlcyBleHByZXNzZWQgYXMgcGVyY2VudCBvZiBNZWFuIFlpZWxkcyBvdmVyIHRoZSBZZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCAtIGByIGxpc192YXJzX3JlcG9ydCRtYXhfYWdgLiAKTW9kZWwgZm9yZWNhc3RzIGFyZSBhIGdlbmVyYWxpemVkIGFkZGl0aXZlIG1vZGVsIChHQU0pXltGdXR1cmUgdmVyc2lvbiB3aWxsIHNob3cgbWVhbi9tZWRpYW4gcmVzdWx0cyBmcm9tIGFuIGVuc2VtYmxlIG9mIG1vZGVsc10uIFRoZSBmaWd1cmUgc2hvd3MgKioqcHJlZGljdGVkIHBlcmNlbnQgb2YgbWVhbioqKiAoY2VudGVyKSBhcyB3ZWxsIGFzIGxvd2VyIChsZWZ0KSBhbmQgaGlnaGVyIChyaWdodCkgKioqcHJlZGljdGVkIHBlcmNlbnQgb2YgbWVhbioqKiBpbnRlcnZhbHMuICoqKk5PVEUqKiogUGVyY2VudCBvZiBtZWFuIGlzIGJhc2VkIG9uICoqKmRpc3RyaWN0IHNwZWNpZmljIChub3QgbmF0aW9uYWwpKioqIG1lYW4geWllbGRzLgoKKioqCmBgYHtyLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQpwMwpgYGAKKioqCiMjIyMgVGFibGUgb2YgRm9yZWNhc3QgVmFsdWVzClRoaXMgdGFibGUgc2hvd3MgdGhlIGZvcmVjYXN0IHBlcmNlbnRhZ2Ugb2YgbWVhbiB2YWx1ZXMgaW4gdGhlIGFib3ZlIHRhYmxlIGFsb25nIHdpdGggdGhlIG1lYW4geWllbGQgdmFsdWVzIGZyb20gdGhlIGZpcnN0IGZpZ3VyZV5bVG8ga2VlcCB0aGVzZSByZXBvcnRzIHNpbXBsZSwgcHJpbnRhYmxlLCBhbmQgcG9ydGFibGUgSSBtYXkgZXhjbHVkZSB0aGUgdGFibGVzIGFuZCBtYXliZSBqdXN0IGhhdmUgYSBsaW5rIHRvIGEgemlwIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc2hhcGUgZmlsZSBhbmQvb3IgY3N2IHZhbHVlcy5dLiAKKioqCmBgYHtyLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQp0MTwta25pdHI6OmthYmxlKGR0YWIsIGNhcHRpb24gPSAnVGFibGUgb2YgTWVhbiBZaWVsZHMgYW5kIFByZWRpY3RlZCBQZXJjZW50IG9mIE1lYW4gVmFsdWVzJykKdDE8LWthYmxlX3N0eWxpbmcodDEsYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwiY29uZGVuc2VkIikpCnNjcm9sbF9ib3godDEsIGhlaWdodCA9ICczMDBweCcsIHdpZHRoID0gJzEwMCUnLAogIGJveF9jc3MgPSAiYm9yZGVyOiAxcHggc29saWQgI2RkZDsgcGFkZGluZzogMXB4OyAiLCBleHRyYV9jc3MgPSBOVUxMLAogIGZpeGVkX3RoZWFkID0gVFJVRSkKCgpgYGAKKioqCgo8IS0tICMgQmVzdCBQcm9kdWN0IGZvciBFYWNoIE1vbnRoClRoaXMgbWFwIHNob3dzIHRoZSB3aGljaCBwcm9kdWN0IGNhbiBwcm92aWRlIHRoZSBtb3N0IGFjY3VyYXRlIGZvcmVjYXN0IChhbW9uZyBhIHJhbmdlIG9mIHN0YXRpc3RpY2FsIG1vZGVscykgZm9yIGEgZ2l2ZW4gbW9udGggYW5kIHJlZ2lvbi4gQXJlYXMgbWFya2VkIGFzICdub25lJyBpbmRpY2F0IHRoYXQgZWl0aGVyIHRoZSBwcmVkaWN0aW9uIGVycm9yIHdhcyBncmVhdGVyIHRoYW4gNTAlIG9yIGNvdWxkIG5vdCBvdXRwZXJmb3JtIGEgYmFzZWxpbmUgbW92aW5nIGF2ZXJhZ2UgbW9kZWxeW1RoaXMgbWF5IG5vdCBiZSBpbiB1cGNvbWluZyByZXBvcnRzIGFzIEkgbWF5IHVwZGF0ZSBpdF0uIC0tPgoKKioqCmBgYHtyLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQojcDUKYGBgCioqKg==