ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlNjQyOTQxLi5mZWI1NjVkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOCBAQAorMjAxMS0wOS0xMSAgSm9uYXRoYW4gQmFsbGV0ICA8bHA6bXVsdGFuaT4KKworCSogZG9jLzogQ29udmVydCB0aGUgTGFUZVggZG9jdW1lbnRhdGlvbiB0byBTcGhpbngtdXNpbmcgUmVTVC4KKwkqIE9wZW5TU0wvOiBDb252ZXJ0IHRoZSBlcHl0ZXh0IEFQSSBkb2N1bWVudGF0aW9uIHRvIFNwaGlueC11c2luZyBSZVNULgorCiAyMDExLTA5LTA4ICBHdWlsbGVybW8gR29uemFsZXogIDxndWlsbGVybW8uZ29uemFsZXpAY2Fub25pY2FsLmNvbT4KIAogCSogT3BlblNTTC9zc2wvY29udGV4dC5jOiBBZGQgQ29udGV4dC5zZXRfbW9kZSBtZXRob2QuCmRpZmYgLS1naXQgYS9NQU5JRkVTVC5pbiBiL01BTklGRVNULmluCmluZGV4IDBjMmJlOTUuLmE4Y2Q5YTkgMTAwNjQ0Ci0tLSBhL01BTklGRVNULmluCisrKyBiL01BTklGRVNULmluCkBAIC0xLDcgKzEsNyBAQAogcmVjdXJzaXZlLWluY2x1ZGUgICAgICAgT3BlblNTTCAgICAgKi5oCiBpbmNsdWRlICAgICBMSUNFTlNFIENoYW5nZUxvZyBJTlNUQUxMIFJFQURNRSBUT0RPIE1BTklGRVNULmluIE9wZW5TU0wvUkFUSU9OQUxFCi1pbmNsdWRlICAgICBkb2MvcHlPcGVuU1NMLnRleCBkb2MvTWFrZWZpbGUKLXJlY3Vyc2l2ZS1pbmNsdWRlICAgZG9jL3Rvb2xzICAgKgorcmVjdXJzaXZlLWluY2x1ZGUgICBkb2MgICAgICAgICAqCiByZWN1cnNpdmUtaW5jbHVkZSAgIGV4YW1wbGVzICAgICoKIHJlY3Vyc2l2ZS1pbmNsdWRlICAgcnBtICAgICAgICAgKgogZ2xvYmFsLWV4Y2x1ZGUgICoucHljCitwcnVuZSAgICAgICAgICAgICAgIGRvYy9fYnVpbGQKZGlmZiAtLWdpdCBhL09wZW5TU0wvY3J5cHRvL2NybC5jIGIvT3BlblNTTC9jcnlwdG8vY3JsLmMKaW5kZXggZWVjNWJjYi4uNmExNGJjZSAxMDA2NDQKLS0tIGEvT3BlblNTTC9jcnlwdG8vY3JsLmMKKysrIGIvT3BlblNTTC9jcnlwdG8vY3JsLmMKQEAgLTM3LDcgKzM3LDcgQEAKIFJldHVybiByZXZva2VkIHBvcnRpb24gb2YgdGhlIENSTCBzdHJ1Y3R1cmUgKGJ5IHZhbHVlXG5cCiBub3QgcmVmZXJlbmNlKS5cblwKIFxuXAotQHJldHVybjogQSB0dXBsZSBvZiBSZXZva2VkIG9iamVjdHMuXG5cCis6cmV0dXJuOiBBIHR1cGxlIG9mIFJldm9rZWQgb2JqZWN0cy5cblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRvX0NSTF9nZXRfcmV2b2tlZChjcnlwdG9fQ1JMT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykgewpAQCAtODQsOSArODQsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX0NSTF9hZGRfcmV2b2tlZF9kb2NbXSA9ICJcblwKIEFkZCBhIHJldm9rZWQgKGJ5IHZhbHVlIG5vdCByZWZlcmVuY2UpIHRvIHRoZSBDUkwgc3RydWN0dXJlXG5cCiBcblwKLUBwYXJhbSBjZXJ0OiBUaGUgbmV3IHJldm9rZWQuXG5cCi1AdHlwZSBjZXJ0OiBMe1g1MDl9XG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gY2VydDogVGhlIG5ldyByZXZva2VkLlxuXAorOnR5cGUgY2VydDogOmNsYXNzOmBYNTA5YFxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBjcnlwdG9fQ1JMX2FkZF9yZXZva2VkKGNyeXB0b19DUkxPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d2RzKSB7CkBAIC0xMTIsMTQgKzExMiwxNCBAQAogc3RhdGljIGNoYXIgY3J5cHRvX0NSTF9leHBvcnRfZG9jW10gPSAiXG5cCiBleHBvcnQoY2VydCwga2V5WywgdHlwZVssIGRheXNdXSkgLT4gZXhwb3J0IGEgQ1JMIGFzIGEgc3RyaW5nXG5cCiBcblwKLUBwYXJhbSBjZXJ0OiBVc2VkIHRvIHNpZ24gQ1JMLlxuXAotQHR5cGUgY2VydDogTHtYNTA5fVxuXAotQHBhcmFtIGtleTogVXNlZCB0byBzaWduIENSTC5cblwKLUB0eXBlIGtleTogTHtQS2V5fVxuXAotQHBhcmFtIHR5cGU6IFRoZSBleHBvcnQgZm9ybWF0LCBlaXRoZXIgTHtGSUxFVFlQRV9QRU19LCBMe0ZJTEVUWVBFX0FTTjF9LCBvciBMe0ZJTEVUWVBFX1RFWFR9LlxuXAotQHBhcmFtIGRheXM6IFRoZSBudW1iZXIgb2YgZGF5cyB1bnRpbCB0aGUgbmV4dCB1cGRhdGUgb2YgdGhpcyBDUkwuXG5cCi1AdHlwZSBkYXlzOiBMe2ludH1cblwKLUByZXR1cm46IEx7c3RyfVxuXAorOnBhcmFtIGNlcnQ6IFVzZWQgdG8gc2lnbiBDUkwuXG5cCis6dHlwZSBjZXJ0OiA6Y2xhc3M6YFg1MDlgXG5cCis6cGFyYW0ga2V5OiBVc2VkIHRvIHNpZ24gQ1JMLlxuXAorOnR5cGUga2V5OiA6Y2xhc3M6YFBLZXlgXG5cCis6cGFyYW0gdHlwZTogVGhlIGV4cG9ydCBmb3JtYXQsIGVpdGhlciA6cHk6ZGF0YTpgRklMRVRZUEVfUEVNYCwgOnB5OmRhdGE6YEZJTEVUWVBFX0FTTjFgLCBvciA6cHk6ZGF0YTpgRklMRVRZUEVfVEVYVGAuXG5cCis6cGFyYW0gZGF5czogVGhlIG51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBuZXh0IHVwZGF0ZSBvZiB0aGlzIENSTC5cblwKKzp0eXBlIGRheXM6IDpweTpkYXRhOmBpbnRgXG5cCis6cmV0dXJuOiA6cHk6ZGF0YTpgc3RyYFxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBjcnlwdG9fQ1JMX2V4cG9ydChjcnlwdG9fQ1JMT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdkcykgewpAQCAtMjIzLDcgKzIyMyw3IEBACiBcblwKIENyZWF0ZSBhIG5ldyBlbXB0eSBDUkwgb2JqZWN0LlxuXAogXG5cCi1AcmV0dXJuczogVGhlIENSTCBvYmplY3RcblwKKzpyZXR1cm5zOiBUaGUgQ1JMIG9iamVjdFxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0KiBjcnlwdG9fQ1JMX25ldyhQeVR5cGVPYmplY3QgKnN1YnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKSB7CmRpZmYgLS1naXQgYS9PcGVuU1NML2NyeXB0by9jcnlwdG8uYyBiL09wZW5TU0wvY3J5cHRvL2NyeXB0by5jCmluZGV4IDM1NzNhMTIuLjE0NDJiNWEgMTAwNjQ0Ci0tLSBhL09wZW5TU0wvY3J5cHRvL2NyeXB0by5jCisrKyBiL09wZW5TU0wvY3J5cHRvL2NyeXB0by5jCkBAIC02NCwxMyArNjQsMTMgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19sb2FkX3ByaXZhdGVrZXlfZG9jW10gPSAiXG5cCiBMb2FkIGEgcHJpdmF0ZSBrZXkgZnJvbSBhIGJ1ZmZlclxuXAogXG5cCi1AcGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKLUBwYXJhbSBidWZmZXI6IFRoZSBidWZmZXIgdGhlIGtleSBpcyBzdG9yZWQgaW5cblwKLUBwYXJhbSBwYXNzcGhyYXNlOiAob3B0aW9uYWwpIGlmIGVuY3J5cHRlZCBQRU0gZm9ybWF0LCB0aGlzIGNhbiBiZVxuXAorOnBhcmFtIHR5cGU6IFRoZSBmaWxlIHR5cGUgKG9uZSBvZiBGSUxFVFlQRV9QRU0sIEZJTEVUWVBFX0FTTjEpXG5cCis6cGFyYW0gYnVmZmVyOiBUaGUgYnVmZmVyIHRoZSBrZXkgaXMgc3RvcmVkIGluXG5cCis6cGFyYW0gcGFzc3BocmFzZTogKG9wdGlvbmFsKSBpZiBlbmNyeXB0ZWQgUEVNIGZvcm1hdCwgdGhpcyBjYW4gYmVcblwKICAgICAgICAgICAgICAgICAgICBlaXRoZXIgdGhlIHBhc3NwaHJhc2UgdG8gdXNlLCBvciBhIGNhbGxiYWNrIGZvclxuXAogICAgICAgICAgICAgICAgICAgIHByb3ZpZGluZyB0aGUgcGFzc3BocmFzZS5cblwKIFxuXAotQHJldHVybjogVGhlIFBLZXkgb2JqZWN0XG5cCis6cmV0dXJuOiBUaGUgUEtleSBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzcsMTUgKzEzNywxNSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX2R1bXBfcHJpdmF0ZWtleV9kb2NbXSA9ICJcblwKIER1bXAgYSBwcml2YXRlIGtleSB0byBhIGJ1ZmZlclxuXAogXG5cCi1AcGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKLUBwYXJhbSBwa2V5OiBUaGUgUEtleSB0byBkdW1wXG5cCi1AcGFyYW0gY2lwaGVyOiAob3B0aW9uYWwpIGlmIGVuY3J5cHRlZCBQRU0gZm9ybWF0LCB0aGUgY2lwaGVyIHRvXG5cCis6cGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKKzpwYXJhbSBwa2V5OiBUaGUgUEtleSB0byBkdW1wXG5cCis6cGFyYW0gY2lwaGVyOiAob3B0aW9uYWwpIGlmIGVuY3J5cHRlZCBQRU0gZm9ybWF0LCB0aGUgY2lwaGVyIHRvXG5cCiAgICAgICAgICAgICAgICB1c2VcblwKLUBwYXJhbSBwYXNzcGhyYXNlIC0gKG9wdGlvbmFsKSBpZiBlbmNyeXB0ZWQgUEVNIGZvcm1hdCwgdGhpcyBjYW4gYmUgZWl0aGVyXG5cCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwYXNzcGhyYXNlIHRvIHVzZSwgb3IgYSBjYWxsYmFjayBmb3IgcHJvdmlkaW5nIHRoZVxuXAotICAgICAgICAgICAgICAgICAgICBwYXNzcGhyYXNlLlxuXAotQHJldHVybjogVGhlIGJ1ZmZlciB3aXRoIHRoZSBkdW1wZWQga2V5IGluXG5cCi1AcnR5cGU6IEN7c3RyfVxuXAorOnBhcmFtIHBhc3NwaHJhc2U6IChvcHRpb25hbCkgaWYgZW5jcnlwdGVkIFBFTSBmb3JtYXQsIHRoaXMgY2FuIGJlIGVpdGhlclxuXAorICAgICAgICAgICAgICAgICAgIHRoZSBwYXNzcGhyYXNlIHRvIHVzZSwgb3IgYSBjYWxsYmFjayBmb3IgcHJvdmlkaW5nIHRoZVxuXAorICAgICAgICAgICAgICAgICAgIHBhc3NwaHJhc2UuXG5cCis6cmV0dXJuOiBUaGUgYnVmZmVyIHdpdGggdGhlIGR1bXBlZCBrZXkgaW5cblwKKzpydHlwZTogOnB5OmRhdGE6YHN0cmBcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDIsOSArMjQyLDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19sb2FkX2NlcnRpZmljYXRlX2RvY1tdID0gIlxuXAogTG9hZCBhIGNlcnRpZmljYXRlIGZyb20gYSBidWZmZXJcblwKIFxuXAotQHBhcmFtIHR5cGU6IFRoZSBmaWxlIHR5cGUgKG9uZSBvZiBGSUxFVFlQRV9QRU0sIEZJTEVUWVBFX0FTTjEpXG5cCis6cGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKICAgICAgICAgICAgICBidWZmZXIgLSBUaGUgYnVmZmVyIHRoZSBjZXJ0aWZpY2F0ZSBpcyBzdG9yZWQgaW5cblwKLUByZXR1cm46IFRoZSBYNTA5IG9iamVjdFxuXAorOnJldHVybjogVGhlIFg1MDkgb2JqZWN0XG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg5LDkgKzI4OSw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fZHVtcF9jZXJ0aWZpY2F0ZV9kb2NbXSA9ICJcblwKIER1bXAgYSBjZXJ0aWZpY2F0ZSB0byBhIGJ1ZmZlclxuXAogXG5cCi1AcGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKLUBwYXJhbSBjZXJ0OiBUaGUgY2VydGlmaWNhdGUgdG8gZHVtcFxuXAotQHJldHVybjogVGhlIGJ1ZmZlciB3aXRoIHRoZSBkdW1wZWQgY2VydGlmaWNhdGUgaW5cblwKKzpwYXJhbSB0eXBlOiBUaGUgZmlsZSB0eXBlIChvbmUgb2YgRklMRVRZUEVfUEVNLCBGSUxFVFlQRV9BU04xKVxuXAorOnBhcmFtIGNlcnQ6IFRoZSBjZXJ0aWZpY2F0ZSB0byBkdW1wXG5cCis6cmV0dXJuOiBUaGUgYnVmZmVyIHdpdGggdGhlIGR1bXBlZCBjZXJ0aWZpY2F0ZSBpblxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM0NSw5ICszNDUsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX2xvYWRfY2VydGlmaWNhdGVfcmVxdWVzdF9kb2NbXSA9ICJcblwKIExvYWQgYSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IGZyb20gYSBidWZmZXJcblwKIFxuXAotQHBhcmFtIHR5cGU6IFRoZSBmaWxlIHR5cGUgKG9uZSBvZiBGSUxFVFlQRV9QRU0sIEZJTEVUWVBFX0FTTjEpXG5cCis6cGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKICAgICAgICAgICAgICBidWZmZXIgLSBUaGUgYnVmZmVyIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IGlzIHN0b3JlZCBpblxuXAotQHJldHVybjogVGhlIFg1MDlSZXEgb2JqZWN0XG5cCis6cmV0dXJuOiBUaGUgWDUwOVJlcSBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zOTIsOSArMzkyLDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19kdW1wX2NlcnRpZmljYXRlX3JlcXVlc3RfZG9jW10gPSAiXG5cCiBEdW1wIGEgY2VydGlmaWNhdGUgcmVxdWVzdCB0byBhIGJ1ZmZlclxuXAogXG5cCi1AcGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKKzpwYXJhbSB0eXBlOiBUaGUgZmlsZSB0eXBlIChvbmUgb2YgRklMRVRZUEVfUEVNLCBGSUxFVFlQRV9BU04xKVxuXAogICAgICAgICAgICAgIHJlcSAgLSBUaGUgY2VydGlmaWNhdGUgcmVxdWVzdCB0byBkdW1wXG5cCi1AcmV0dXJuOiBUaGUgYnVmZmVyIHdpdGggdGhlIGR1bXBlZCBjZXJ0aWZpY2F0ZSByZXF1ZXN0IGluXG5cCis6cmV0dXJuOiBUaGUgYnVmZmVyIHdpdGggdGhlIGR1bXBlZCBjZXJ0aWZpY2F0ZSByZXF1ZXN0IGluXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDQ4LDEwICs0NDgsMTAgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19sb2FkX2NybF9kb2NbXSA9ICJcblwKIExvYWQgYSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3QgZnJvbSBhIGJ1ZmZlclxuXAogXG5cCi1AcGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSlcblwKLUBwYXJhbSBidWZmZXI6IFRoZSBidWZmZXIgdGhlIENSTCBpcyBzdG9yZWQgaW5cblwKKzpwYXJhbSB0eXBlOiBUaGUgZmlsZSB0eXBlIChvbmUgb2YgRklMRVRZUEVfUEVNLCBGSUxFVFlQRV9BU04xKVxuXAorOnBhcmFtIGJ1ZmZlcjogVGhlIGJ1ZmZlciB0aGUgQ1JMIGlzIHN0b3JlZCBpblxuXAogXG5cCi1AcmV0dXJuOiBUaGUgUEtleSBvYmplY3RcblwKKzpyZXR1cm46IFRoZSBQS2V5IG9iamVjdFxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ5Myw5ICs0OTMsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX2xvYWRfcGtjczdfZGF0YV9kb2NbXSA9ICJcblwKIExvYWQgcGtjczcgZGF0YSBmcm9tIGEgYnVmZmVyXG5cCiBcblwKLUBwYXJhbSB0eXBlOiBUaGUgZmlsZSB0eXBlIChvbmUgb2YgRklMRVRZUEVfUEVNIG9yIEZJTEVUWVBFX0FTTjEpXG5cCis6cGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIEZJTEVUWVBFX1BFTSBvciBGSUxFVFlQRV9BU04xKVxuXAogICAgICAgICAgICAgIGJ1ZmZlciAtIFRoZSBidWZmZXIgd2l0aCB0aGUgcGtjczcgZGF0YS5cblwKLUByZXR1cm46IFRoZSBQS0NTNyBvYmplY3RcblwKKzpyZXR1cm46IFRoZSBQS0NTNyBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NDUsOSArNTQ1LDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19sb2FkX3BrY3MxMl9kb2NbXSA9ICJcblwKIExvYWQgYSBQS0NTMTIgb2JqZWN0IGZyb20gYSBidWZmZXJcblwKIFxuXAotQHBhcmFtIGJ1ZmZlcjogVGhlIGJ1ZmZlciB0aGUgY2VydGlmaWNhdGUgaXMgc3RvcmVkIGluXG5cCis6cGFyYW0gYnVmZmVyOiBUaGUgYnVmZmVyIHRoZSBjZXJ0aWZpY2F0ZSBpcyBzdG9yZWQgaW5cblwKICAgICAgICAgICAgICAgIHBhc3NwaHJhc2UgKE9wdGlvbmFsKSAtIFRoZSBwYXNzd29yZCB0byBkZWNyeXB0IHRoZSBQS0NTMTIgbHVtcFxuXAotQHJldHVybnM6IFRoZSBQS0NTMTIgb2JqZWN0XG5cCis6cmV0dXJuczogVGhlIFBLQ1MxMiBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NzcsOCArNTc3LDggQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZ19kb2NbXSA9ICJcblwKIEdldCBYNTA5IHZlcmlmeSBjZXJ0aWZpY2F0ZSBlcnJvciBzdHJpbmcuXG5cCiBcblwKLUBwYXJhbSBlcnJudW06IFRoZSBlcnJvciBudW1iZXIuXG5cCi1AcmV0dXJuOiBFcnJvciBzdHJpbmcgYXMgYSBQeXRob24gc3RyaW5nXG5cCis6cGFyYW0gZXJybnVtOiBUaGUgZXJyb3IgbnVtYmVyLlxuXAorOnJldHVybjogRXJyb3Igc3RyaW5nIGFzIGEgUHl0aG9uIHN0cmluZ1xuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYwNywxMCArNjA3LDEwIEBACiBzdGF0aWMgY2hhciBjcnlwdG9fc2lnbl9kb2NbXSA9ICJcblwKIFNpZ24gZGF0YSB3aXRoIGEgZGlnZXN0XG5cCiBcblwKLUBwYXJhbSBwa2V5OiBQa2V5IHRvIHNpZ24gd2l0aFxuXAotQHBhcmFtIGRhdGE6IGRhdGEgdG8gYmUgc2lnbmVkXG5cCi1AcGFyYW0gZGlnZXN0OiBtZXNzYWdlIGRpZ2VzdCB0byB1c2VcblwKLUByZXR1cm46IHNpZ25hdHVyZVxuXAorOnBhcmFtIHBrZXk6IFBrZXkgdG8gc2lnbiB3aXRoXG5cCis6cGFyYW0gZGF0YTogZGF0YSB0byBiZSBzaWduZWRcblwKKzpwYXJhbSBkaWdlc3Q6IG1lc3NhZ2UgZGlnZXN0IHRvIHVzZVxuXAorOnJldHVybjogc2lnbmF0dXJlXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjU0LDExICs2NTQsMTEgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b192ZXJpZnlfZG9jW10gPSAiXG5cCiBWZXJpZnkgYSBzaWduYXR1cmVcblwKIFxuXAotQHBhcmFtIGNlcnQ6IHNpZ25pbmcgY2VydGlmaWNhdGUgKFg1MDkgb2JqZWN0KVxuXAotQHBhcmFtIHNpZ25hdHVyZTogc2lnbmF0dXJlIHJldHVybmVkIGJ5IHNpZ24gZnVuY3Rpb25cblwKLUBwYXJhbSBkYXRhOiBkYXRhIHRvIGJlIHZlcmlmaWVkXG5cCi1AcGFyYW0gZGlnZXN0OiBtZXNzYWdlIGRpZ2VzdCB0byB1c2VcblwKLUByZXR1cm46IE5vbmUgaWYgdGhlIHNpZ25hdHVyZSBpcyBjb3JyZWN0LCByYWlzZSBleGNlcHRpb24gb3RoZXJ3aXNlXG5cCis6cGFyYW0gY2VydDogc2lnbmluZyBjZXJ0aWZpY2F0ZSAoWDUwOSBvYmplY3QpXG5cCis6cGFyYW0gc2lnbmF0dXJlOiBzaWduYXR1cmUgcmV0dXJuZWQgYnkgc2lnbiBmdW5jdGlvblxuXAorOnBhcmFtIGRhdGE6IGRhdGEgdG8gYmUgdmVyaWZpZWRcblwKKzpwYXJhbSBkaWdlc3Q6IG1lc3NhZ2UgZGlnZXN0IHRvIHVzZVxuXAorOnJldHVybjogTm9uZSBpZiB0aGUgc2lnbmF0dXJlIGlzIGNvcnJlY3QsIHJhaXNlIGV4Y2VwdGlvbiBvdGhlcndpc2VcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCmRpZmYgLS1naXQgYS9PcGVuU1NML2NyeXB0by9uZXRzY2FwZV9zcGtpLmMgYi9PcGVuU1NML2NyeXB0by9uZXRzY2FwZV9zcGtpLmMKaW5kZXggOTM2OWQ1MC4uODExMGEyNCAxMDA2NDQKLS0tIGEvT3BlblNTTC9jcnlwdG8vbmV0c2NhcGVfc3BraS5jCisrKyBiL09wZW5TU0wvY3J5cHRvL25ldHNjYXBlX3Nwa2kuYwpAQCAtMzgsOSArMzgsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX05ldHNjYXBlU1BLSV9kb2NbXSA9ICJcblwKIE5ldHNjYXBlU1BLSShbZW5jXSkgLT4gTmV0c2NhcGVTUEtJIGluc3RhbmNlXG5cCiBcblwKLUBwYXJhbSBlbmM6IEJhc2U2NCBlbmNvZGVkIE5ldHNjYXBlU1BLSSBvYmplY3QuXG5cCi1AdHlwZSBlbmM6IEN7c3RyfVxuXAotQHJldHVybjogVGhlIE5ldHNjYXBlU1BLSSBvYmplY3RcblwKKzpwYXJhbSBlbmM6IEJhc2U2NCBlbmNvZGVkIE5ldHNjYXBlU1BLSSBvYmplY3QuXG5cCis6dHlwZSBlbmM6IDpweTpkYXRhOmBzdHJgXG5cCis6cmV0dXJuOiBUaGUgTmV0c2NhcGVTUEtJIG9iamVjdFxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg0LDkgKzg0LDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19OZXRzY2FwZVNQS0lfc2lnbl9kb2NbXSA9ICJcblwKIFNpZ24gdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QgdXNpbmcgdGhlIHN1cHBsaWVkIGtleSBhbmQgZGlnZXN0XG5cCiBcblwKLUBwYXJhbSBwa2V5OiBUaGUga2V5IHRvIHNpZ24gd2l0aFxuXAotQHBhcmFtIGRpZ2VzdDogVGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHVzZVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHBrZXk6IFRoZSBrZXkgdG8gc2lnbiB3aXRoXG5cCis6cGFyYW0gZGlnZXN0OiBUaGUgbWVzc2FnZSBkaWdlc3QgdG8gdXNlXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI5LDkgKzEyOSw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fTmV0c2NhcGVTUEtJX3ZlcmlmeV9kb2NbXSA9ICJcblwKIFZlcmlmaWVzIGEgY2VydGlmaWNhdGUgcmVxdWVzdCB1c2luZyB0aGUgc3VwcGxpZWQgcHVibGljIGtleVxuXAogXG5cCi1AcGFyYW0ga2V5OiBhIHB1YmxpYyBrZXlcblwKLUByZXR1cm46IFRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyBjb3JyZWN0LlxuXAotQHJhaXNlIE9wZW5TU0wuY3J5cHRvLkVycm9yOiBJZiB0aGUgc2lnbmF0dXJlIGlzIGludmFsaWQgb3IgdGhlcmUgaXMgYVxuXAorOnBhcmFtIGtleTogYSBwdWJsaWMga2V5XG5cCis6cmV0dXJuOiBUcnVlIGlmIHRoZSBzaWduYXR1cmUgaXMgY29ycmVjdC5cblwKKzpyYWlzZSBPcGVuU1NMLmNyeXB0by5FcnJvcjogSWYgdGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkIG9yIHRoZXJlIGlzIGFcblwKICAgICBwcm9ibGVtIHZlcmlmeWluZyB0aGUgc2lnbmF0dXJlLlxuXAogIjsKIApAQCAtMTU2LDcgKzE1Niw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fTmV0c2NhcGVTUEtJX2I2NF9lbmNvZGVfZG9jW10gPSAiXG5cCiBHZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBmcm9tIGFuIFNQS0lcblwKIFxuXAotQHJldHVybjogVGhlIGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuXAorOnJldHVybjogVGhlIGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuXAogIjsKIAogUHlPYmplY3QgKgpAQCAtMTc1LDcgKzE3NSw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fTmV0c2NhcGVTUEtJX2dldF9wdWJrZXlfZG9jW10gPSAiXG5cCiBHZXQgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlXG5cCiBcblwKLUByZXR1cm46IFRoZSBwdWJsaWMga2V5XG5cCis6cmV0dXJuOiBUaGUgcHVibGljIGtleVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwNCw4ICsyMDQsOCBAQAogc3RhdGljIGNoYXIgY3J5cHRvX05ldHNjYXBlU1BLSV9zZXRfcHVia2V5X2RvY1tdID0gIlxuXAogU2V0IHRoZSBwdWJsaWMga2V5IG9mIHRoZSBjZXJ0aWZpY2F0ZVxuXAogXG5cCi1AcGFyYW0gcGtleTogVGhlIHB1YmxpYyBrZXlcblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBwa2V5OiBUaGUgcHVibGljIGtleVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL09wZW5TU0wvY3J5cHRvL3BrY3MxMi5jIGIvT3BlblNTTC9jcnlwdG8vcGtjczEyLmMKaW5kZXggYTFhNWE3OS4uZjhlNjZhOCAxMDA2NDQKLS0tIGEvT3BlblNTTC9jcnlwdG8vcGtjczEyLmMKKysrIGIvT3BlblNTTC9jcnlwdG8vcGtjczEyLmMKQEAgLTI2LDcgKzI2LDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19QS0NTMTJfZ2V0X2NlcnRpZmljYXRlX2RvY1tdID0gIlxuXAogUmV0dXJuIGNlcnRpZmljYXRlIHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmVcblwKIFxuXAotQHJldHVybjogWDUwOSBvYmplY3QgY29udGFpbmluZyB0aGUgY2VydGlmaWNhdGVcblwKKzpyZXR1cm46IFg1MDkgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIGNyeXB0b19QS0NTMTJfZ2V0X2NlcnRpZmljYXRlKGNyeXB0b19QS0NTMTJPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtNDEsOSArNDEsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1BLQ1MxMl9zZXRfY2VydGlmaWNhdGVfZG9jW10gPSAiXG5cCiBSZXBsYWNlIHRoZSBjZXJ0aWZpY2F0ZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlXG5cCiBcblwKLUBwYXJhbSBjZXJ0OiBUaGUgbmV3IGNlcnRpZmljYXRlLlxuXAotQHR5cGUgY2VydDogTHtYNTA5fSBvciBMe05vbmVUeXBlfVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGNlcnQ6IFRoZSBuZXcgY2VydGlmaWNhdGUuXG5cCis6dHlwZSBjZXJ0OiA6cHk6Y2xhc3M6YFg1MDlgIG9yIDpweTpkYXRhOmBOb25lYFxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBjcnlwdG9fUEtDUzEyX3NldF9jZXJ0aWZpY2F0ZShjcnlwdG9fUEtDUzEyT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdkcykgewpAQCAtNzAsNyArNzAsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1BLQ1MxMl9nZXRfcHJpdmF0ZWtleV9kb2NbXSA9ICJcblwKIFJldHVybiBwcml2YXRlIGtleSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlXG5cCiBcblwKLUByZXR1cm5zOiBQS2V5IG9iamVjdCBjb250YWluaW5nIHRoZSBwcml2YXRlIGtleVxuXAorOnJldHVybnM6IFBLZXkgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHByaXZhdGUga2V5XG5cCiAiOwogc3RhdGljIGNyeXB0b19QS2V5T2JqICoKIGNyeXB0b19QS0NTMTJfZ2V0X3ByaXZhdGVrZXkoY3J5cHRvX1BLQ1MxMk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC04NSw5ICs4NSw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUEtDUzEyX3NldF9wcml2YXRla2V5X2RvY1tdID0gIlxuXAogUmVwbGFjZSBvciBzZXQgdGhlIGNlcnRpZmljYXRlIHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmVcblwKIFxuXAotQHBhcmFtIHBrZXk6IFRoZSBuZXcgcHJpdmF0ZSBrZXkuXG5cCi1AdHlwZSBwa2V5OiBMe1BLZXl9XG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gcGtleTogVGhlIG5ldyBwcml2YXRlIGtleS5cblwKKzp0eXBlIHBrZXk6IDpweTpjbGFzczpgUEtleWBcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRvX1BLQ1MxMl9zZXRfcHJpdmF0ZWtleShjcnlwdG9fUEtDUzEyT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdkcykgewpAQCAtMTE0LDcgKzExNCw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUEtDUzEyX2dldF9jYV9jZXJ0aWZpY2F0ZXNfZG9jW10gPSAiXG5cCiBSZXR1cm4gQ0EgY2VydGlmaWNhdGVzIHdpdGhpbiBvZiB0aGUgUEtDUzEyIG9iamVjdFxuXAogXG5cCi1AcmV0dXJuOiBBIG5ld2x5IGNyZWF0ZWQgdHVwbGUgY29udGFpbmluZyB0aGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZSBjaGFpbixcblwKKzpyZXR1cm46IEEgbmV3bHkgY3JlYXRlZCB0dXBsZSBjb250YWluaW5nIHRoZSBDQSBjZXJ0aWZpY2F0ZXMgaW4gdGhlIGNoYWluLFxuXAogICAgICAgICAgaWYgYW55IGFyZSBwcmVzZW50LCBvciBOb25lIGlmIG5vIENBIGNlcnRpZmljYXRlcyBhcmUgcHJlc2VudC5cblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTMwLDkgKzEzMCw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUEtDUzEyX3NldF9jYV9jZXJ0aWZpY2F0ZXNfZG9jW10gPSAiXG5cCiBSZXBsYWNlIG9yIHNldCB0aGUgQ0EgY2VydGlmaWNhdGVzIHdpdGhpbmcgdGhlIFBLQ1MxMiBvYmplY3QuXG5cCiBcblwKLUBwYXJhbSBjYWNlcnRzOiBUaGUgbmV3IENBIGNlcnRpZmljYXRlcy5cblwKLUB0eXBlIGNhY2VydHM6IEl0ZXJhYmxlIG9mIEx7WDUwOX0gb3IgTHtOb25lVHlwZX1cblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBjYWNlcnRzOiBUaGUgbmV3IENBIGNlcnRpZmljYXRlcy5cblwKKzp0eXBlIGNhY2VydHM6IEl0ZXJhYmxlIG9mIDpweTpjbGFzczpgWDUwOWAgb3IgOnB5OmRhdGE6YE5vbmVgXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIGNyeXB0b19QS0NTMTJfc2V0X2NhX2NlcnRpZmljYXRlcyhjcnlwdG9fUEtDUzEyT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdkcykKQEAgLTE3Niw3ICsxNzYsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1BLQ1MxMl9nZXRfZnJpZW5kbHluYW1lX2RvY1tdID0gIlxuXAogUmV0dXJuIGZyaWVuZGx5IG5hbWUgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZVxuXAogXG5cCi1AcmV0dXJuczogU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZyaWVuZGx5bmFtZVxuXAorOnJldHVybnM6IFN0cmluZyBjb250YWluaW5nIHRoZSBmcmllbmRseW5hbWVcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRvX1BLQ1MxMl9nZXRfZnJpZW5kbHluYW1lKGNyeXB0b19QS0NTMTJPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7CkBAIC0xOTAsOSArMTkwLDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19QS0NTMTJfc2V0X2ZyaWVuZGx5bmFtZV9kb2NbXSA9ICJcblwKIFJlcGxhY2Ugb3Igc2V0IHRoZSBjZXJ0aWZpY2F0ZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlXG5cCiBcblwKLUBwYXJhbSBuYW1lOiBUaGUgbmV3IGZyaWVuZGx5IG5hbWUuXG5cCi1AdHlwZSBuYW1lOiBMe3N0cn1cblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBuYW1lOiBUaGUgbmV3IGZyaWVuZGx5IG5hbWUuXG5cCis6dHlwZSBuYW1lOiA6cHk6ZGF0YTpgc3RyYFxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBjcnlwdG9fUEtDUzEyX3NldF9mcmllbmRseW5hbWUoY3J5cHRvX1BLQ1MxMk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3ZHMpIHsKQEAgLTIyMCwxMyArMjIwLDEzIEBACiBleHBvcnQoW3Bhc3NwaHJhc2U9Tm9uZV1bLCBmcmllbmRseV9uYW1lPU5vbmVdWywgaXRlcj0yMDQ4XVssIG1hY2l0ZXI9MV1cblwKIER1bXAgYSBQS0NTMTIgb2JqZWN0IGFzIGEgc3RyaW5nLiAgU2VlIGFsc28gXCJtYW4gUEtDUzEyX2NyZWF0ZVwiLlxuXAogXG5cCi1AcGFyYW0gcGFzc3BocmFzZTogdXNlZCB0byBlbmNyeXB0IHRoZSBQS0NTMTJcblwKLUB0eXBlIHBhc3NwaHJhc2U6IEx7c3RyfVxuXAotQHBhcmFtIGl0ZXI6IEhvdyBtYW55IHRpbWVzIHRvIHJlcGVhdCB0aGUgZW5jcnlwdGlvblxuXAotQHR5cGUgaXRlcjogTHtpbnR9XG5cCi1AcGFyYW0gbWFjaXRlcjogSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSBNQUNcblwKLUB0eXBlIG1hY2l0ZXI6IEx7aW50fVxuXAotQHJldHVybjogVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBQS0NTMTJcblwKKzpwYXJhbSBwYXNzcGhyYXNlOiB1c2VkIHRvIGVuY3J5cHQgdGhlIFBLQ1MxMlxuXAorOnR5cGUgcGFzc3BocmFzZTogOnB5OmRhdGE6YHN0cmBcblwKKzpwYXJhbSBpdGVyOiBIb3cgbWFueSB0aW1lcyB0byByZXBlYXQgdGhlIGVuY3J5cHRpb25cblwKKzp0eXBlIGl0ZXI6IDpweTpkYXRhOmBpbnRgXG5cCis6cGFyYW0gbWFjaXRlcjogSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSBNQUNcblwKKzp0eXBlIG1hY2l0ZXI6IDpweTpkYXRhOmBpbnRgXG5cCis6cmV0dXJuOiBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFBLQ1MxMlxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBjcnlwdG9fUEtDUzEyX2V4cG9ydChjcnlwdG9fUEtDUzEyT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdkcykgewpAQCAtNDM5LDcgKzQzOSw3IEBACiBcblwKIENyZWF0ZSBhIG5ldyBlbXB0eSBQS0NTMTIgb2JqZWN0LlxuXAogXG5cCi1AcmV0dXJuczogVGhlIFBLQ1MxMiBvYmplY3RcblwKKzpyZXR1cm5zOiBUaGUgUEtDUzEyIG9iamVjdFxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBjcnlwdG9fUEtDUzEyX25ldyhQeVR5cGVPYmplY3QgKnN1YnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKSB7CmRpZmYgLS1naXQgYS9PcGVuU1NML2NyeXB0by9wa2NzNy5jIGIvT3BlblNTTC9jcnlwdG8vcGtjczcuYwppbmRleCAxNzcwZjdmLi4yNGFkZGU4IDEwMDY0NAotLS0gYS9PcGVuU1NML2NyeXB0by9wa2NzNy5jCisrKyBiL09wZW5TU0wvY3J5cHRvL3BrY3M3LmMKQEAgLTE1LDcgKzE1LDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19QS0NTN190eXBlX2lzX3NpZ25lZF9kb2NbXSA9ICJcblwKIENoZWNrIGlmIHRoaXMgTklEX3BrY3M3X3NpZ25lZCBvYmplY3RcblwKIFxuXAotQHJldHVybjogVHJ1ZSBpZiB0aGUgUEtDUzcgaXMgb2YgdHlwZSBzaWduZWRcblwKKzpyZXR1cm46IFRydWUgaWYgdGhlIFBLQ1M3IGlzIG9mIHR5cGUgc2lnbmVkXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzMsNyArMzMsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1BLQ1M3X3R5cGVfaXNfZW52ZWxvcGVkX2RvY1tdID0gIlxuXAogQ2hlY2sgaWYgdGhpcyBOSURfcGtjczdfZW52ZWxvcGVkIG9iamVjdFxuXAogXG5cCi1AcmV0dXJuczogVHJ1ZSBpZiB0aGUgUEtDUzcgaXMgb2YgdHlwZSBlbnZlbG9wZWRcblwKKzpyZXR1cm5zOiBUcnVlIGlmIHRoZSBQS0NTNyBpcyBvZiB0eXBlIGVudmVsb3BlZFxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUxLDcgKzUxLDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19QS0NTN190eXBlX2lzX3NpZ25lZEFuZEVudmVsb3BlZF9kb2NbXSA9ICJcblwKIENoZWNrIGlmIHRoaXMgTklEX3BrY3M3X3NpZ25lZEFuZEVudmVsb3BlZCBvYmplY3RcblwKIFxuXAotQHJldHVybnM6IFRydWUgaWYgdGhlIFBLQ1M3IGlzIG9mIHR5cGUgc2lnbmVkQW5kRW52ZWxvcGVkXG5cCis6cmV0dXJuczogVHJ1ZSBpZiB0aGUgUEtDUzcgaXMgb2YgdHlwZSBzaWduZWRBbmRFbnZlbG9wZWRcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC02OSw3ICs2OSw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUEtDUzdfdHlwZV9pc19kYXRhX2RvY1tdID0gIlxuXAogQ2hlY2sgaWYgdGhpcyBOSURfcGtjczdfZGF0YSBvYmplY3RcblwKIFxuXAotQHJldHVybjogVHJ1ZSBpZiB0aGUgUEtDUzcgaXMgb2YgdHlwZSBkYXRhXG5cCis6cmV0dXJuOiBUcnVlIGlmIHRoZSBQS0NTNyBpcyBvZiB0eXBlIGRhdGFcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04Nyw3ICs4Nyw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUEtDUzdfZ2V0X3R5cGVfbmFtZV9kb2NbXSA9ICJcblwKIFJldHVybnMgdGhlIHR5cGUgbmFtZSBvZiB0aGUgUEtDUzcgc3RydWN0dXJlXG5cCiBcblwKLUByZXR1cm46IEEgc3RyaW5nIHdpdGggdGhlIHR5cGVuYW1lXG5cCis6cmV0dXJuOiBBIHN0cmluZyB3aXRoIHRoZSB0eXBlbmFtZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL09wZW5TU0wvY3J5cHRvL3BrZXkuYyBiL09wZW5TU0wvY3J5cHRvL3BrZXkuYwppbmRleCAxZjc4NjgyLi4yN2VhNGQ0IDEwMDY0NAotLS0gYS9PcGVuU1NML2NyeXB0by9wa2V5LmMKKysrIGIvT3BlblNTTC9jcnlwdG8vcGtleS5jCkBAIC0zMCw5ICszMCw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUEtleV9nZW5lcmF0ZV9rZXlfZG9jW10gPSAiXG5cCiBHZW5lcmF0ZSBhIGtleSBvZiBhIGdpdmVuIHR5cGUsIHdpdGggYSBnaXZlbiBudW1iZXIgb2YgYSBiaXRzXG5cCiBcblwKLUBwYXJhbSB0eXBlOiBUaGUga2V5IHR5cGUgKFRZUEVfUlNBIG9yIFRZUEVfRFNBKVxuXAotQHBhcmFtIGJpdHM6IFRoZSBudW1iZXIgb2YgYml0c1xuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHR5cGU6IFRoZSBrZXkgdHlwZSAoVFlQRV9SU0Egb3IgVFlQRV9EU0EpXG5cCis6cGFyYW0gYml0czogVGhlIG51bWJlciBvZiBiaXRzXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtODAsNyArODAsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1BLZXlfYml0c19kb2NbXSA9ICJcblwKIFJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIG9mIHRoZSBrZXlcblwKIFxuXAotQHJldHVybjogVGhlIG51bWJlciBvZiBiaXRzIG9mIHRoZSBrZXkuXG5cCis6cmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJpdHMgb2YgdGhlIGtleS5cblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC05NSw3ICs5NSw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUEtleV90eXBlX2RvY1tdID0gIlxuXAogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUga2V5XG5cCiBcblwKLUByZXR1cm46IFRoZSB0eXBlIG9mIHRoZSBrZXkuXG5cCis6cmV0dXJuOiBUaGUgdHlwZSBvZiB0aGUga2V5LlxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExMCw5ICsxMTAsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1BLZXlfY2hlY2tfZG9jW10gPSAiXG5cCiBDaGVjayB0aGUgY29uc2lzdGVuY3kgb2YgYW4gUlNBIHByaXZhdGUga2V5LlxuXAogXG5cCi1AcmV0dXJuOiBUcnVlIGlmIGtleSBpcyBjb25zaXN0ZW50LlxuXAotQHJhaXNlIEVycm9yOiBpZiB0aGUga2V5IGlzIGluY29uc2lzdGVudC5cblwKLUByYWlzZSBUeXBlRXJyb3I6IGlmIHRoZSBrZXkgaXMgb2YgYSB0eXBlIHdoaWNoIGNhbm5vdCBiZSBjaGVja2VkLlxuXAorOnJldHVybjogVHJ1ZSBpZiBrZXkgaXMgY29uc2lzdGVudC5cblwKKzpyYWlzZSBFcnJvcjogaWYgdGhlIGtleSBpcyBpbmNvbnNpc3RlbnQuXG5cCis6cmFpc2UgVHlwZUVycm9yOiBpZiB0aGUga2V5IGlzIG9mIGEgdHlwZSB3aGljaCBjYW5ub3QgYmUgY2hlY2tlZC5cblwKICAgICBPbmx5IFJTQSBrZXlzIGNhbiBjdXJyZW50bHkgYmUgY2hlY2tlZC5cblwKICI7CiAKQEAgLTE5NCw3ICsxOTQsNyBAQAogXG5cCiBDcmVhdGUgYSBuZXcgUEtleSBvYmplY3QuXG5cCiBcblwKLUByZXR1cm46IFRoZSBQS2V5IG9iamVjdFxuXAorOnJldHVybjogVGhlIFBLZXkgb2JqZWN0XG5cCiAiOwogc3RhdGljIFB5T2JqZWN0KgogY3J5cHRvX1BLZXlfbmV3KFB5VHlwZU9iamVjdCAqc3VidHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpIHsKZGlmZiAtLWdpdCBhL09wZW5TU0wvY3J5cHRvL3Jldm9rZWQuYyBiL09wZW5TU0wvY3J5cHRvL3Jldm9rZWQuYwppbmRleCA5M2Y5OTQ2Li5lZDE4M2I3IDEwMDY0NAotLS0gYS9PcGVuU1NML2NyeXB0by9yZXZva2VkLmMKKysrIGIvT3BlblNTTC9jcnlwdG8vcmV2b2tlZC5jCkBAIC0yNiw3ICsyNiw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fUmV2b2tlZF9hbGxfcmVhc29uc19kb2NbXSA9ICJcblwKIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBzdXBwb3J0ZWQgcmVhc29uIHN0cmluZ3MuXG5cCiBcblwKLUByZXR1cm46IEEgbGlzdCBvZiByZWFzb24gc3RyaW5ncy5cblwKKzpyZXR1cm46IEEgbGlzdCBvZiByZWFzb24gc3RyaW5ncy5cblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRvX1Jldm9rZWRfYWxsX3JlYXNvbnMoY3J5cHRvX1Jldm9rZWRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7CkBAIC0xMjYsOSArMTI2LDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19SZXZva2VkX3NldF9yZWFzb25fZG9jW10gPSAiXG5cCiBTZXQgdGhlIHJlYXNvbiBvZiBhIFJldm9rZWQgb2JqZWN0LlxuXAogXG5cCi1AcGFyYW0gcmVhc29uOiBUaGUgcmVhc29uIHN0cmluZy5cblwKLUB0eXBlIHJlYXNvbjogTHtzdHJ9XG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gcmVhc29uOiBUaGUgcmVhc29uIHN0cmluZy5cblwKKzp0eXBlIHJlYXNvbjogOnB5OmRhdGE6YHN0cmBcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRvX1Jldm9rZWRfc2V0X3JlYXNvbihjcnlwdG9fUmV2b2tlZE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3ZHMpIHsKQEAgLTE3Niw3ICsxNzYsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1Jldm9rZWRfZ2V0X3JlYXNvbl9kb2NbXSA9ICJcblwKIFJldHVybiB0aGUgcmVhc29uIG9mIGEgUmV2b2tlZCBvYmplY3QuXG5cCiBcblwKLUByZXR1cm46IFRoZSByZWFzb24gYXMgYSBzdHJpbmdcblwKKzpyZXR1cm46IFRoZSByZWFzb24gYXMgYSBzdHJpbmdcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRvX1Jldm9rZWRfZ2V0X3JlYXNvbihjcnlwdG9fUmV2b2tlZE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKQEAgLTIwNCw3ICsyMDQsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1Jldm9rZWRfZ2V0X3Jldl9kYXRlX2RvY1tdID0gIlxuXAogUmV0cmlldmUgdGhlIHJldm9jYXRpb24gZGF0ZVxuXAogXG5cCi1AcmV0dXJuOiBBIHN0cmluZyBnaXZpbmcgdGhlIHRpbWVzdGFtcCwgaW4gdGhlIGZvcm1hdDpcblwKKzpyZXR1cm46IEEgc3RyaW5nIGdpdmluZyB0aGUgdGltZXN0YW1wLCBpbiB0aGUgZm9ybWF0OlxuXAogXG5cCiAgICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzWlxuXAogICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcytoaG1tXG5cCkBAIC0yMjEsMTMgKzIyMSwxMyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1Jldm9rZWRfc2V0X3Jldl9kYXRlX2RvY1tdID0gIlxuXAogU2V0IHRoZSByZXZvY2F0aW9uIHRpbWVzdGFtcFxuXAogXG5cCi1AcGFyYW0gd2hlbjogQSBzdHJpbmcgZ2l2aW5nIHRoZSB0aW1lc3RhbXAsIGluIHRoZSBmb3JtYXQ6XG5cCis6cGFyYW0gd2hlbjogQSBzdHJpbmcgZ2l2aW5nIHRoZSB0aW1lc3RhbXAsIGluIHRoZSBmb3JtYXQ6XG5cCiBcblwKICAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaXG5cCiAgICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW1cblwKICAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbVxuXAogXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0yNzgsNyArMjc4LDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19SZXZva2VkX2dldF9zZXJpYWxfZG9jW10gPSAiXG5cCiBSZXR1cm4gdGhlIHNlcmlhbCBudW1iZXIgb2YgYSBSZXZva2VkIHN0cnVjdHVyZVxuXAogXG5cCi1AcmV0dXJuOiBUaGUgc2VyaWFsIG51bWJlciBhcyBhIHN0cmluZ1xuXAorOnJldHVybjogVGhlIHNlcmlhbCBudW1iZXIgYXMgYSBzdHJpbmdcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogY3J5cHRvX1Jldm9rZWRfZ2V0X3NlcmlhbChjcnlwdG9fUmV2b2tlZE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKQEAgLTI5OCw5ICsyOTgsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1Jldm9rZWRfc2V0X3NlcmlhbF9kb2NbXSA9ICJcblwKIFNldCB0aGUgc2VyaWFsIG51bWJlciBvZiBhIHJldm9rZWQgUmV2b2tlZCBzdHJ1Y3R1cmVcblwKIFxuXAotQHBhcmFtIGhleF9zdHI6IFRoZSBuZXcgc2VyaWFsIG51bWJlci5cblwKLUB0eXBlIGhleF9zdHI6IEx7c3RyfVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGhleF9zdHI6IFRoZSBuZXcgc2VyaWFsIG51bWJlci5cblwKKzp0eXBlIGhleF9zdHI6IDpweTpkYXRhOmBzdHJgXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIGNyeXB0b19SZXZva2VkX3NldF9zZXJpYWwoY3J5cHRvX1Jldm9rZWRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d2RzKSB7CkBAIC0zNzcsNyArMzc3LDcgQEAKIFxuXAogQ3JlYXRlIGEgbmV3IGVtcHR5IFJldm9rZWQgb2JqZWN0LlxuXAogXG5cCi1AcmV0dXJuczogVGhlIFJldm9rZWQgb2JqZWN0XG5cCis6cmV0dXJuczogVGhlIFJldm9rZWQgb2JqZWN0XG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QqIGNyeXB0b19SZXZva2VkX25ldyhQeVR5cGVPYmplY3QgKnN1YnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKSB7CmRpZmYgLS1naXQgYS9PcGVuU1NML2NyeXB0by94NTA5LmMgYi9PcGVuU1NML2NyeXB0by94NTA5LmMKaW5kZXggMDc1NGRlYy4uNDMyOWRkYiAxMDA2NDQKLS0tIGEvT3BlblNTTC9jcnlwdG8veDUwOS5jCisrKyBiL09wZW5TU0wvY3J5cHRvL3g1MDkuYwpAQCAtMjMsNyArMjMsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlfZ2V0X3ZlcnNpb25fZG9jW10gPSAiXG5cCiBSZXR1cm4gdmVyc2lvbiBudW1iZXIgb2YgdGhlIGNlcnRpZmljYXRlXG5cCiBcblwKLUByZXR1cm46IFZlcnNpb24gbnVtYmVyIGFzIGEgUHl0aG9uIGludGVnZXJcblwKKzpyZXR1cm46IFZlcnNpb24gbnVtYmVyIGFzIGEgUHl0aG9uIGludGVnZXJcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zOCw4ICszOCw4IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9zZXRfdmVyc2lvbl9kb2NbXSA9ICJcblwKIFNldCB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY2VydGlmaWNhdGVcblwKIFxuXAotQHBhcmFtIHZlcnNpb246IFRoZSB2ZXJzaW9uIG51bWJlclxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHZlcnNpb246IFRoZSB2ZXJzaW9uIG51bWJlclxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTU5LDcgKzU5LDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X2dldF9zZXJpYWxfbnVtYmVyX2RvY1tdID0gIlxuXAogUmV0dXJuIHNlcmlhbCBudW1iZXIgb2YgdGhlIGNlcnRpZmljYXRlXG5cCiBcblwKLUByZXR1cm46IFNlcmlhbCBudW1iZXIgYXMgYSBQeXRob24gaW50ZWdlclxuXAorOnJldHVybjogU2VyaWFsIG51bWJlciBhcyBhIFB5dGhvbiBpbnRlZ2VyXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtODUsOCArODUsOCBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlfc2V0X3NlcmlhbF9udW1iZXJfZG9jW10gPSAiXG5cCiBTZXQgc2VyaWFsIG51bWJlciBvZiB0aGUgY2VydGlmaWNhdGVcblwKIFxuXAotQHBhcmFtIHNlcmlhbDogVGhlIHNlcmlhbCBudW1iZXJcblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBzZXJpYWw6IFRoZSBzZXJpYWwgbnVtYmVyXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTc2LDcgKzE3Niw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9nZXRfaXNzdWVyX2RvY1tdID0gIlxuXAogQ3JlYXRlIGFuIFg1MDlOYW1lIG9iamVjdCBmb3IgdGhlIGlzc3VlciBvZiB0aGUgY2VydGlmaWNhdGVcblwKIFxuXAotQHJldHVybjogQW4gWDUwOU5hbWUgb2JqZWN0XG5cCis6cmV0dXJuOiBBbiBYNTA5TmFtZSBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMDEsOSArMjAxLDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X3NldF9pc3N1ZXJfZG9jW10gPSAiXG5cCiBTZXQgdGhlIGlzc3VlciBvZiB0aGUgY2VydGlmaWNhdGVcblwKIFxuXAotQHBhcmFtIGlzc3VlcjogVGhlIGlzc3VlciBuYW1lXG5cCi1AdHlwZSBpc3N1ZXI6IEx7WDUwOU5hbWV9XG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gaXNzdWVyOiBUaGUgaXNzdWVyIG5hbWVcblwKKzp0eXBlIGlzc3VlcjogOnB5OmNsYXNzOmBYNTA5TmFtZWBcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMjgsNyArMjI4LDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X2dldF9zdWJqZWN0X2RvY1tdID0gIlxuXAogQ3JlYXRlIGFuIFg1MDlOYW1lIG9iamVjdCBmb3IgdGhlIHN1YmplY3Qgb2YgdGhlIGNlcnRpZmljYXRlXG5cCiBcblwKLUByZXR1cm46IEFuIFg1MDlOYW1lIG9iamVjdFxuXAorOnJldHVybjogQW4gWDUwOU5hbWUgb2JqZWN0XG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjUzLDkgKzI1Myw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9zZXRfc3ViamVjdF9kb2NbXSA9ICJcblwKIFNldCB0aGUgc3ViamVjdCBvZiB0aGUgY2VydGlmaWNhdGVcblwKIFxuXAotQHBhcmFtIHN1YmplY3Q6IFRoZSBzdWJqZWN0IG5hbWVcblwKLUB0eXBlIHN1YmplY3Q6IEx7WDUwOU5hbWV9XG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gc3ViamVjdDogVGhlIHN1YmplY3QgbmFtZVxuXAorOnR5cGUgc3ViamVjdDogOnB5OmNsYXNzOmBYNTA5TmFtZWBcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yODAsNyArMjgwLDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X2dldF9wdWJrZXlfZG9jW10gPSAiXG5cCiBHZXQgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlXG5cCiBcblwKLUByZXR1cm46IFRoZSBwdWJsaWMga2V5XG5cCis6cmV0dXJuOiBUaGUgcHVibGljIGtleVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMwOSw4ICszMDksOCBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlfc2V0X3B1YmtleV9kb2NbXSA9ICJcblwKIFNldCB0aGUgcHVibGljIGtleSBvZiB0aGUgY2VydGlmaWNhdGVcblwKIFxuXAotQHBhcmFtIHBrZXk6IFRoZSBwdWJsaWMga2V5XG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gcGtleTogVGhlIHB1YmxpYyBrZXlcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNTgsMTMgKzM1OCwxMyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlfc2V0X25vdEJlZm9yZV9kb2NbXSA9ICJcblwKIFNldCB0aGUgdGltZSBzdGFtcCBmb3Igd2hlbiB0aGUgY2VydGlmaWNhdGUgc3RhcnRzIGJlaW5nIHZhbGlkXG5cCiBcblwKLUBwYXJhbSB3aGVuOiBBIHN0cmluZyBnaXZpbmcgdGhlIHRpbWVzdGFtcCwgaW4gdGhlIGZvcm1hdDpcblwKKzpwYXJhbSB3aGVuOiBBIHN0cmluZyBnaXZpbmcgdGhlIHRpbWVzdGFtcCwgaW4gdGhlIGZvcm1hdDpcblwKIFxuXAogICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zc1pcblwKICAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbVxuXAogICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tXG5cCiBcblwKLUByZXR1cm46IE5vbmVcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTM3OCwxMyArMzc4LDEzIEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9zZXRfbm90QWZ0ZXJfZG9jW10gPSAiXG5cCiBTZXQgdGhlIHRpbWUgc3RhbXAgZm9yIHdoZW4gdGhlIGNlcnRpZmljYXRlIHN0b3BzIGJlaW5nIHZhbGlkXG5cCiBcblwKLUBwYXJhbSB3aGVuOiBBIHN0cmluZyBnaXZpbmcgdGhlIHRpbWVzdGFtcCwgaW4gdGhlIGZvcm1hdDpcblwKKzpwYXJhbSB3aGVuOiBBIHN0cmluZyBnaXZpbmcgdGhlIHRpbWVzdGFtcCwgaW4gdGhlIGZvcm1hdDpcblwKIFxuXAogICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zc1pcblwKICAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbVxuXAogICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tXG5cCiBcblwKLUByZXR1cm46IE5vbmVcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTQzMywxMiArNDMzLDEzIEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9nZXRfbm90QmVmb3JlX2RvY1tdID0gIlxuXAogUmV0cmlldmUgdGhlIHRpbWUgc3RhbXAgZm9yIHdoZW4gdGhlIGNlcnRpZmljYXRlIHN0YXJ0cyBiZWluZyB2YWxpZFxuXAogXG5cCi1AcmV0dXJuOiBBIHN0cmluZyBnaXZpbmcgdGhlIHRpbWVzdGFtcCwgaW4gdGhlIGZvcm1hdDpcblwKKzpyZXR1cm46IEEgc3RyaW5nIGdpdmluZyB0aGUgdGltZXN0YW1wLCBpbiB0aGUgZm9ybWF0OjpcblwKIFxuXAogICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zc1pcblwKICAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbVxuXAogICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tXG5cCi0gICAgICAgICAgIG9yIE5vbmUgaWYgdGhlcmUgaXMgbm8gdmFsdWUgc2V0LlxuXAorXG5cCisgICAgICAgICBvciBOb25lIGlmIHRoZXJlIGlzIG5vIHZhbHVlIHNldC5cblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTQ1NSwxMiArNDU2LDEzIEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9nZXRfbm90QWZ0ZXJfZG9jW10gPSAiXG5cCiBSZXRyaWV2ZSB0aGUgdGltZSBzdGFtcCBmb3Igd2hlbiB0aGUgY2VydGlmaWNhdGUgc3RvcHMgYmVpbmcgdmFsaWRcblwKIFxuXAotQHJldHVybjogQSBzdHJpbmcgZ2l2aW5nIHRoZSB0aW1lc3RhbXAsIGluIHRoZSBmb3JtYXQ6XG5cCis6cmV0dXJuOiBBIHN0cmluZyBnaXZpbmcgdGhlIHRpbWVzdGFtcCwgaW4gdGhlIGZvcm1hdDo6XG5cCiBcblwKICAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaXG5cCiAgICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW1cblwKICAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbVxuXAotICAgICAgICAgICBvciBOb25lIGlmIHRoZXJlIGlzIG5vIHZhbHVlIHNldC5cblwKK1xuXAorICAgICAgICAgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyB2YWx1ZSBzZXQuXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC00NzgsOSArNDgwLDkgQEAKIENoYW5nZSB0aGUgdGltZXN0YW1wIGZvciB3aGVuIHRoZSBjZXJ0aWZpY2F0ZSBzdGFydHMgYmVpbmcgdmFsaWQgdG8gdGhlIGN1cnJlbnRcblwKIHRpbWUgcGx1cyBhbiBvZmZzZXQuXG4gXAogXG5cCi1AcGFyYW0gYW1vdW50OiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYnkgd2hpY2ggdG8gYWRqdXN0IHRoZSBzdGFydGluZyB2YWxpZGl0eVxuXAorOnBhcmFtIGFtb3VudDogVGhlIG51bWJlciBvZiBzZWNvbmRzIGJ5IHdoaWNoIHRvIGFkanVzdCB0aGUgc3RhcnRpbmcgdmFsaWRpdHlcblwKICAgICAgICAgICAgICAgIHRpbWUuXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTAwLDkgKzUwMiw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9nbXRpbWVfYWRqX25vdEFmdGVyX2RvY1tdID0gIlxuXAogQWRqdXN0IHRoZSB0aW1lIHN0YW1wIGZvciB3aGVuIHRoZSBjZXJ0aWZpY2F0ZSBzdG9wcyBiZWluZyB2YWxpZFxuXAogXG5cCi1AcGFyYW0gYW1vdW50OiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYnkgd2hpY2ggdG8gYWRqdXN0IHRoZSBlbmRpbmcgdmFsaWRpdHlcblwKKzpwYXJhbSBhbW91bnQ6IFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBieSB3aGljaCB0byBhZGp1c3QgdGhlIGVuZGluZyB2YWxpZGl0eVxuXAogICAgICAgICAgICAgICAgdGltZS5cblwKLUByZXR1cm46IE5vbmVcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01MjMsOSArNTI1LDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X2dldF9zaWduYXR1cmVfYWxnb3JpdGhtX2RvY1tdID0gIlxuXAogUmV0cmlldmUgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gdXNlZCBpbiB0aGUgY2VydGlmaWNhdGVcblwKIFxuXAotQHJldHVybjogQSBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUgb2YgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gdXNlZCBpblxuXAorOnJldHVybjogQSBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUgb2YgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gdXNlZCBpblxuXAogICAgICAgICAgdGhlIGNlcnRpZmljYXRlLlxuXAotQHJhaXNlIFZhbHVlRXJyb3I6IElmIHRoZSBzaWduYXR1cmUgYWxnb3JpdGhtIGlzIHVuZGVmaW5lZC5cblwKKzpyYWlzZSBWYWx1ZUVycm9yOiBJZiB0aGUgc2lnbmF0dXJlIGFsZ29yaXRobSBpcyB1bmRlZmluZWQuXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTUwLDkgKzU1Miw5IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9zaWduX2RvY1tdID0gIlxuXAogU2lnbiB0aGUgY2VydGlmaWNhdGUgdXNpbmcgdGhlIHN1cHBsaWVkIGtleSBhbmQgZGlnZXN0XG5cCiBcblwKLUBwYXJhbSBwa2V5OiBUaGUga2V5IHRvIHNpZ24gd2l0aFxuXAotQHBhcmFtIGRpZ2VzdDogVGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHVzZVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHBrZXk6IFRoZSBrZXkgdG8gc2lnbiB3aXRoXG5cCis6cGFyYW0gZGlnZXN0OiBUaGUgbWVzc2FnZSBkaWdlc3QgdG8gdXNlXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTk1LDcgKzU5Nyw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9oYXNfZXhwaXJlZF9kb2NbXSA9ICJcblwKIENoZWNrIHdoZXRoZXIgdGhlIGNlcnRpZmljYXRlIGhhcyBleHBpcmVkLlxuXAogXG5cCi1AcmV0dXJuOiBUcnVlIGlmIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZCwgZmFsc2Ugb3RoZXJ3aXNlXG5cCis6cmV0dXJuOiBUcnVlIGlmIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZCwgZmFsc2Ugb3RoZXJ3aXNlXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjE2LDcgKzYxOCw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9zdWJqZWN0X25hbWVfaGFzaF9kb2NbXSA9ICJcblwKIFJldHVybiB0aGUgaGFzaCBvZiB0aGUgWDUwOSBzdWJqZWN0LlxuXAogXG5cCi1AcmV0dXJuOiBUaGUgaGFzaCBvZiB0aGUgc3ViamVjdFxuXAorOnJldHVybjogVGhlIGhhc2ggb2YgdGhlIHN1YmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC02MzEsNyArNjMzLDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X2RpZ2VzdF9kb2NbXSA9ICJcblwKIFJldHVybiB0aGUgZGlnZXN0IG9mIHRoZSBYNTA5IG9iamVjdC5cblwKIFxuXAotQHJldHVybjogVGhlIGRpZ2VzdCBvZiB0aGUgb2JqZWN0XG5cCis6cmV0dXJuOiBUaGUgZGlnZXN0IG9mIHRoZSBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC02NzIsOCArNjc0LDggQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5X2FkZF9leHRlbnNpb25zX2RvY1tdID0gIlxuXAogQWRkIGV4dGVuc2lvbnMgdG8gdGhlIGNlcnRpZmljYXRlLlxuXAogXG5cCi1AcGFyYW0gZXh0ZW5zaW9uczogYSBzZXF1ZW5jZSBvZiBYNTA5RXh0ZW5zaW9uIG9iamVjdHNcblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBleHRlbnNpb25zOiBhIHNlcXVlbmNlIG9mIFg1MDlFeHRlbnNpb24gb2JqZWN0c1xuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTcxNyw3ICs3MTksNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlfZ2V0X2V4dGVuc2lvbl9jb3VudF9kb2NbXSA9ICJcblwKIEdldCB0aGUgbnVtYmVyIG9mIGV4dGVuc2lvbnMgb24gdGhlIGNlcnRpZmljYXRlLlxuXAogXG5cCi1AcmV0dXJuOiBOdW1iZXIgb2YgZXh0ZW5zaW9ucyBhcyBhIFB5dGhvbiBpbnRlZ2VyXG5cCis6cmV0dXJuOiBOdW1iZXIgb2YgZXh0ZW5zaW9ucyBhcyBhIFB5dGhvbiBpbnRlZ2VyXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzMyLDggKzczNCw4IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOV9nZXRfZXh0ZW5zaW9uX2RvY1tdID0gIlxuXAogR2V0IGEgc3BlY2lmaWMgZXh0ZW5zaW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSBieSBpbmRleC5cblwKIFxuXAotQHBhcmFtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGV4dGVuc2lvbiB0byByZXRyaWV2ZS5cblwKLUByZXR1cm46IFRoZSBYNTA5RXh0ZW5zaW9uIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuXAorOnBhcmFtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGV4dGVuc2lvbiB0byByZXRyaWV2ZS5cblwKKzpyZXR1cm46IFRoZSBYNTA5RXh0ZW5zaW9uIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTgyNCwxMSArODI2LDExIEBACiAKIAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlfZG9jW10gPSAiXG5cCi1YNTA5KCkgLT4gWDUwOSBpbnN0YW5jZVxuXAorQSBjbGFzcyByZXByZXNlbnRpbmcgWC41MDkgY2VydGlmaWNhdGVzLlxuXAogXG5cCiBDcmVhdGUgYSBuZXcgWDUwOSBvYmplY3QuXG5cCiBcblwKLUByZXR1cm5zOiBUaGUgWDUwOSBvYmplY3RcblwKKzpyZXR1cm5zOiBUaGUgOmNsYXNzOmBYNTA5YCBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCmRpZmYgLS1naXQgYS9PcGVuU1NML2NyeXB0by94NTA5ZXh0LmMgYi9PcGVuU1NML2NyeXB0by94NTA5ZXh0LmMKaW5kZXggYWRiZTA4NC4uZjY1ZmQwZiAxMDA2NDQKLS0tIGEvT3BlblNTTC9jcnlwdG8veDUwOWV4dC5jCisrKyBiL09wZW5TU0wvY3J5cHRvL3g1MDlleHQuYwpAQCAtMTYsNyArMTYsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlFeHRlbnNpb25fZ2V0X2NyaXRpY2FsX2RvY1tdID0gIlxuXAogUmV0dXJucyB0aGUgY3JpdGljYWwgZmllbGQgb2YgdGhlIFg1MDlFeHRlbnNpb25cblwKIFxuXAotQHJldHVybjogVGhlIGNyaXRpY2FsIGZpZWxkLlxuXAorOnJldHVybjogVGhlIGNyaXRpY2FsIGZpZWxkLlxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMxLDcgKzMxLDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5RXh0ZW5zaW9uX2dldF9zaG9ydF9uYW1lX2RvY1tdID0gIlxuXAogUmV0dXJucyB0aGUgc2hvcnQgdmVyc2lvbiBvZiB0aGUgdHlwZSBuYW1lIG9mIHRoZSBYNTA5RXh0ZW5zaW9uXG5cCiBcblwKLUByZXR1cm46IFRoZSBzaG9ydCB0eXBlIG5hbWUuXG5cCis6cmV0dXJuOiBUaGUgc2hvcnQgdHlwZSBuYW1lLlxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTU0LDcgKzU0LDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5RXh0ZW5zaW9uX2dldF9kYXRhX2RvY1tdID0gIlxuXAogUmV0dXJucyB0aGUgZGF0YSBvZiB0aGUgWDUwOUV4dGVuc2lvblxuXAogXG5cCi1AcmV0dXJuOiBBIEN7c3RyfSBnaXZpbmcgdGhlIFg1MDlFeHRlbnNpb24ncyBBU04uMSBlbmNvZGVkIGRhdGEuXG5cCis6cmV0dXJuOiBBIDpweTpkYXRhOmBzdHJgIGdpdmluZyB0aGUgWDUwOUV4dGVuc2lvbidzIEFTTi4xIGVuY29kZWQgZGF0YS5cblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xODUsMTYgKzE4NSwxNiBAQAogWDUwOUV4dGVuc2lvbih0eXBlbmFtZSwgY3JpdGljYWwsIHZhbHVlWywgc3ViamVjdF1bLCBpc3N1ZXJdKSAtPiBcblwKICAgICAgICAgICAgICAgICBYNTA5RXh0ZW5zaW9uIGluc3RhbmNlXG5cCiBcblwKLUBwYXJhbSB0eXBlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0byBjcmVhdGUuXG5cCi1AdHlwZSB0eXBlbmFtZTogQ3tzdHJ9XG5cCi1AcGFyYW0gY3JpdGljYWw6IEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBpcyBhIGNyaXRpY2FsIGV4dGVuc2lvbi5cblwKLUBwYXJhbSB2YWx1ZTogVGhlIHZhbHVlIG9mIHRoZSBleHRlbnNpb24uXG5cCi1AdHlwZSB2YWx1ZTogQ3tzdHJ9XG5cCi1AcGFyYW0gc3ViamVjdDogT3B0aW9uYWwgWDUwOSBjZXJ0IHRvIHVzZSBhcyBzdWJqZWN0LlxuXAotQHR5cGUgc3ViamVjdDogQ3tYNTA5fVxuXAotQHBhcmFtIGlzc3VlcjogT3B0aW9uYWwgWDUwOSBjZXJ0IHRvIHVzZSBhcyBpc3N1ZXIuXG5cCi1AdHlwZSBpc3N1ZXI6IEN7WDUwOX1cblwKLUByZXR1cm46IFRoZSBYNTA5RXh0ZW5zaW9uIG9iamVjdFxuXAorOnBhcmFtIHR5cGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRvIGNyZWF0ZS5cblwKKzp0eXBlIHR5cGVuYW1lOiA6cHk6ZGF0YTpgc3RyYFxuXAorOnBhcmFtIGNyaXRpY2FsOiBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgaXMgYSBjcml0aWNhbCBleHRlbnNpb24uXG5cCis6cGFyYW0gdmFsdWU6IFRoZSB2YWx1ZSBvZiB0aGUgZXh0ZW5zaW9uLlxuXAorOnR5cGUgdmFsdWU6IDpweTpkYXRhOmBzdHJgXG5cCis6cGFyYW0gc3ViamVjdDogT3B0aW9uYWwgWDUwOSBjZXJ0IHRvIHVzZSBhcyBzdWJqZWN0LlxuXAorOnR5cGUgc3ViamVjdDogOnB5OmNsYXNzOmBYNTA5YFxuXAorOnBhcmFtIGlzc3VlcjogT3B0aW9uYWwgWDUwOSBjZXJ0IHRvIHVzZSBhcyBpc3N1ZXIuXG5cCis6dHlwZSBpc3N1ZXI6IDpweTpjbGFzczpgWDUwOWBcblwKKzpyZXR1cm46IFRoZSBYNTA5RXh0ZW5zaW9uIG9iamVjdFxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL09wZW5TU0wvY3J5cHRvL3g1MDluYW1lLmMgYi9PcGVuU1NML2NyeXB0by94NTA5bmFtZS5jCmluZGV4IGE2MmM5NTcuLjcwNTY4M2UgMTAwNjQ0Ci0tLSBhL09wZW5TU0wvY3J5cHRvL3g1MDluYW1lLmMKKysrIGIvT3BlblNTTC9jcnlwdG8veDUwOW5hbWUuYwpAQCAtNDgsOCArNDgsOCBAQAogXG5cCiBDcmVhdGUgYSBuZXcgWDUwOU5hbWUsIGNvcHlpbmcgdGhlIGdpdmVuIFg1MDlOYW1lIGluc3RhbmNlLlxuXAogXG5cCi1AcGFyYW0gbmFtZTogQW4gWDUwOU5hbWUgb2JqZWN0IHRvIGNvcHlcblwKLUByZXR1cm46IFRoZSBYNTA5TmFtZSBvYmplY3RcblwKKzpwYXJhbSBuYW1lOiBBbiBYNTA5TmFtZSBvYmplY3QgdG8gY29weVxuXAorOnJldHVybjogVGhlIFg1MDlOYW1lIG9iamVjdFxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMyMCw3ICszMjAsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlOYW1lX2hhc2hfZG9jW10gPSAiXG5cCiBSZXR1cm4gdGhlIGhhc2ggdmFsdWUgb2YgdGhpcyBuYW1lXG5cCiBcblwKLUByZXR1cm46IE5vbmVcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIC8qCkBAIC0zNDQsNyArMzQ0LDcgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5TmFtZV9kZXJfZG9jW10gPSAiXG5cCiBSZXR1cm4gdGhlIERFUiBlbmNvZGluZyBvZiB0aGlzIG5hbWVcblwKIFxuXAotQHJldHVybjogTm9uZVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogLyoKQEAgLTM2Nyw3ICszNjcsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlOYW1lX2dldF9jb21wb25lbnRzX2RvY1tdID0gIlxuXAogUmV0dXJucyB0aGUgc3BsaXQtdXAgY29tcG9uZW50cyBvZiB0aGlzIG5hbWUuXG5cCiBcblwKLUByZXR1cm46IExpc3Qgb2YgdHVwbGVzIChuYW1lLCB2YWx1ZSkuXG5cCis6cmV0dXJuOiBMaXN0IG9mIHR1cGxlcyAobmFtZSwgdmFsdWUpLlxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL09wZW5TU0wvY3J5cHRvL3g1MDlyZXEuYyBiL09wZW5TU0wvY3J5cHRvL3g1MDlyZXEuYwppbmRleCBhMmQxZjExLi5hMzMxNzEyIDEwMDY0NAotLS0gYS9PcGVuU1NML2NyeXB0by94NTA5cmVxLmMKKysrIGIvT3BlblNTTC9jcnlwdG8veDUwOXJlcS5jCkBAIC0xNiw3ICsxNiw3IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOVJlcV9nZXRfc3ViamVjdF9kb2NbXSA9ICJcblwKIENyZWF0ZSBhbiBYNTA5TmFtZSBvYmplY3QgZm9yIHRoZSBzdWJqZWN0IG9mIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0XG5cCiBcblwKLUByZXR1cm46IEFuIFg1MDlOYW1lIG9iamVjdFxuXAorOnJldHVybjogQW4gWDUwOU5hbWUgb2JqZWN0XG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDQsNyArNDQsNyBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlSZXFfZ2V0X3B1YmtleV9kb2NbXSA9ICJcblwKIEdldCB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0XG5cCiBcblwKLUByZXR1cm46IFRoZSBwdWJsaWMga2V5XG5cCis6cmV0dXJuOiBUaGUgcHVibGljIGtleVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTczLDggKzczLDggQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5UmVxX3NldF9wdWJrZXlfZG9jW10gPSAiXG5cCiBTZXQgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3RcblwKIFxuXAotQHBhcmFtIHBrZXk6IFRoZSBwdWJsaWMga2V5IHRvIHVzZVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHBrZXk6IFRoZSBwdWJsaWMga2V5IHRvIHVzZVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTk4LDkgKzk4LDkgQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5UmVxX3NpZ25fZG9jW10gPSAiXG5cCiBTaWduIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IHVzaW5nIHRoZSBzdXBwbGllZCBrZXkgYW5kIGRpZ2VzdFxuXAogXG5cCi1AcGFyYW0gcGtleTogVGhlIGtleSB0byBzaWduIHdpdGhcblwKLUBwYXJhbSBkaWdlc3Q6IFRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2VcblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBwa2V5OiBUaGUga2V5IHRvIHNpZ24gd2l0aFxuXAorOnBhcmFtIGRpZ2VzdDogVGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHVzZVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0Myw5ICsxNDMsOSBAQAogc3RhdGljIGNoYXIgY3J5cHRvX1g1MDlSZXFfdmVyaWZ5X2RvY1tdID0gIlxuXAogVmVyaWZpZXMgYSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IHVzaW5nIHRoZSBzdXBwbGllZCBwdWJsaWMga2V5XG5cCiBcblwKLUBwYXJhbSBrZXk6IGEgcHVibGljIGtleVxuXAotQHJldHVybjogVHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIGlzIGNvcnJlY3QuXG5cCi1AcmFpc2UgT3BlblNTTC5jcnlwdG8uRXJyb3I6IElmIHRoZSBzaWduYXR1cmUgaXMgaW52YWxpZCBvciB0aGVyZSBpcyBhXG5cCis6cGFyYW0ga2V5OiBhIHB1YmxpYyBrZXlcblwKKzpyZXR1cm46IFRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyBjb3JyZWN0LlxuXAorOnJhaXNlIE9wZW5TU0wuY3J5cHRvLkVycm9yOiBJZiB0aGUgc2lnbmF0dXJlIGlzIGludmFsaWQgb3IgdGhlcmUgaXMgYVxuXAogICAgIHByb2JsZW0gdmVyaWZ5aW5nIHRoZSBzaWduYXR1cmUuXG5cCiAiOwogCkBAIC0xNzMsOCArMTczLDggQEAKIHN0YXRpYyBjaGFyIGNyeXB0b19YNTA5UmVxX2FkZF9leHRlbnNpb25zX2RvY1tdID0gIlxuXAogQWRkIGV4dGVuc2lvbnMgdG8gdGhlIHJlcXVlc3QuXG5cCiBcblwKLUBwYXJhbSBleHRlbnNpb25zOiBhIHNlcXVlbmNlIG9mIFg1MDlFeHRlbnNpb24gb2JqZWN0c1xuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGV4dGVuc2lvbnM6IGEgc2VxdWVuY2Ugb2YgWDUwOUV4dGVuc2lvbiBvYmplY3RzXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjM0LDggKzIzNCw4IEBACiBTZXQgdGhlIHZlcnNpb24gc3ViZmllbGQgKFJGQyAyNDU5LCBzZWN0aW9uIDQuMS4yLjEpIG9mIHRoZSBjZXJ0aWZpY2F0ZVxuXAogcmVxdWVzdC5cblwKIFxuXAotQHBhcmFtIHZlcnNpb246IFRoZSB2ZXJzaW9uIG51bWJlclxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHZlcnNpb246IFRoZSB2ZXJzaW9uIG51bWJlclxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI1OSw3ICsyNTksNyBAQAogR2V0IHRoZSB2ZXJzaW9uIHN1YmZpZWxkIChSRkMgMjQ1OSwgc2VjdGlvbiA0LjEuMi4xKSBvZiB0aGUgY2VydGlmaWNhdGVcblwKIHJlcXVlc3QuXG5cCiBcblwKLUByZXR1cm46IGFuIGludGVnZXIgZ2l2aW5nIHRoZSB2YWx1ZSBvZiB0aGUgdmVyc2lvbiBzdWJmaWVsZFxuXAorOnJldHVybjogYW4gaW50ZWdlciBnaXZpbmcgdGhlIHZhbHVlIG9mIHRoZSB2ZXJzaW9uIHN1YmZpZWxkXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzI4LDcgKzMyOCw3IEBACiBcblwKIENyZWF0ZSBhIG5ldyBYNTA5UmVxIG9iamVjdC5cblwKIFxuXAotQHJldHVybjogVGhlIFg1MDlSZXEgb2JqZWN0XG5cCis6cmV0dXJuOiBUaGUgWDUwOVJlcSBvYmplY3RcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCmRpZmYgLS1naXQgYS9PcGVuU1NML2NyeXB0by94NTA5c3RvcmUuYyBiL09wZW5TU0wvY3J5cHRvL3g1MDlzdG9yZS5jCmluZGV4IGJmMjI3NTYuLmE5NzUwZWQgMTAwNjQ0Ci0tLSBhL09wZW5TU0wvY3J5cHRvL3g1MDlzdG9yZS5jCisrKyBiL09wZW5TU0wvY3J5cHRvL3g1MDlzdG9yZS5jCkBAIC0xNCw4ICsxNCw4IEBACiBzdGF0aWMgY2hhciBjcnlwdG9fWDUwOVN0b3JlX2FkZF9jZXJ0X2RvY1tdID0gIlxuXAogQWRkIGEgY2VydGlmaWNhdGVcblwKIFxuXAotQHBhcmFtIGNlcnQ6IFRoZSBjZXJ0aWZpY2F0ZSB0byBhZGRcblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBjZXJ0OiBUaGUgY2VydGlmaWNhdGUgdG8gYWRkXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvT3BlblNTTC9yYW5kL3JhbmQuYyBiL09wZW5TU0wvcmFuZC9yYW5kLmMKaW5kZXggODMwN2FjNi4uNzEyYWQ1NiAxMDA2NDQKLS0tIGEvT3BlblNTTC9yYW5kL3JhbmQuYworKysgYi9PcGVuU1NML3JhbmQvcmFuZC5jCkBAIC0zMyw5ICszMyw5IEBACiBzdGF0aWMgY2hhciByYW5kX2FkZF9kb2NbXSA9ICJcblwKIEFkZCBkYXRhIHdpdGggYSBnaXZlbiBlbnRyb3B5IHRvIHRoZSBQUk5HXG5cCiBcblwKLUBwYXJhbSBidWZmZXI6IEJ1ZmZlciB3aXRoIHJhbmRvbSBkYXRhXG5cCi1AcGFyYW0gZW50cm9weTogVGhlIGVudHJvcHkgKGluIGJ5dGVzKSBtZWFzdXJlbWVudCBvZiB0aGUgYnVmZmVyXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gYnVmZmVyOiBCdWZmZXIgd2l0aCByYW5kb20gZGF0YVxuXAorOnBhcmFtIGVudHJvcHk6IFRoZSBlbnRyb3B5IChpbiBieXRlcykgbWVhc3VyZW1lbnQgb2YgdGhlIGJ1ZmZlclxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTU3LDggKzU3LDggQEAKIHN0YXRpYyBjaGFyIHJhbmRfc2VlZF9kb2NbXSA9ICJcblwKIEFsaWFzIGZvciByYW5kX2FkZCwgd2l0aCBlbnRyb3B5IGVxdWFsIHRvIGxlbmd0aFxuXAogXG5cCi1AcGFyYW0gYnVmZmVyOiBCdWZmZXIgd2l0aCByYW5kb20gZGF0YVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGJ1ZmZlcjogQnVmZmVyIHdpdGggcmFuZG9tIGRhdGFcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03OSw3ICs3OSw3IEBACiBzdGF0aWMgY2hhciByYW5kX3N0YXR1c19kb2NbXSA9ICJcblwKIFJldHJpZXZlIHRoZSBzdGF0dXMgb2YgdGhlIFBSTkdcblwKIFxuXAotQHJldHVybjogVHJ1ZSBpZiB0aGUgUFJORyBpcyBzZWVkZWQgZW5vdWdoLCBmYWxzZSBvdGhlcndpc2VcblwKKzpyZXR1cm46IFRydWUgaWYgdGhlIFBSTkcgaXMgc2VlZGVkIGVub3VnaCwgZmFsc2Ugb3RoZXJ3aXNlXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTYsNyArOTYsNyBAQAogQWRkIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZSBzY3JlZW4gdG8gdGhlIFBSTkcgc3RhdGUuIEF2YWlsYWJpbGl0eTpcblwKIFdpbmRvd3MuXG5cCiBcblwKLUByZXR1cm46IE5vbmVcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTYsOSArMTE2LDkgQEAKIFBSTkcuIEkgaGF2ZW4ndCBmb3VuZCBhbnkgcHJvYmxlbXMgd2hlbiB0aGUgc29ja2V0IGlzIG1pc3NpbmcsIHRoZSBmdW5jdGlvblxuXAoganVzdCByZXR1cm5zIDAuXG5cCiBcblwKLUBwYXJhbSBwYXRoOiBUaGUgcGF0aCB0byB0aGUgRUdEIHNvY2tldFxuXAotQHBhcmFtIGJ5dGVzOiAob3B0aW9uYWwpIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCwgZGVmYXVsdCBpcyAyNTVcblwKLUByZXR1cm5zOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKE5COiBhIHZhbHVlIG9mIDAgaXNuJ3QgbmVjZXNzYXJpbHkgYW5cblwKKzpwYXJhbSBwYXRoOiBUaGUgcGF0aCB0byB0aGUgRUdEIHNvY2tldFxuXAorOnBhcmFtIGJ5dGVzOiAob3B0aW9uYWwpIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCwgZGVmYXVsdCBpcyAyNTVcblwKKzpyZXR1cm5zOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKE5COiBhIHZhbHVlIG9mIDAgaXNuJ3QgbmVjZXNzYXJpbHkgYW5cblwKICAgICAgICAgICBlcnJvciwgY2hlY2sgcmFuZC5zdGF0dXMoKSlcblwKICI7CiAKQEAgLTEzNyw3ICsxMzcsNyBAQAogc3RhdGljIGNoYXIgcmFuZF9jbGVhbnVwX2RvY1tdID0gIlxuXAogRXJhc2UgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBQUk5HLlxuXAogXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTU1LDEwICsxNTUsMTAgQEAKIHN0YXRpYyBjaGFyIHJhbmRfbG9hZF9maWxlX2RvY1tdID0gIlxuXAogU2VlZCB0aGUgUFJORyB3aXRoIGRhdGEgZnJvbSBhIGZpbGVcblwKIFxuXAotQHBhcmFtIGZpbGVuYW1lOiBUaGUgZmlsZSB0byByZWFkIGRhdGEgZnJvbVxuXAotQHBhcmFtIG1heGJ5dGVzOiAob3B0aW9uYWwpIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCwgZGVmYXVsdCBpc1xuXAorOnBhcmFtIGZpbGVuYW1lOiBUaGUgZmlsZSB0byByZWFkIGRhdGEgZnJvbVxuXAorOnBhcmFtIG1heGJ5dGVzOiAob3B0aW9uYWwpIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCwgZGVmYXVsdCBpc1xuXAogICAgICAgICAgICAgICAgICB0byByZWFkIHRoZSBlbnRpcmUgZmlsZVxuXAotQHJldHVybjogVGhlIG51bWJlciBvZiBieXRlcyByZWFkXG5cCis6cmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWRcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNzYsOCArMTc2LDggQEAKIHN0YXRpYyBjaGFyIHJhbmRfd3JpdGVfZmlsZV9kb2NbXSA9ICJcblwKIFNhdmUgUFJORyBzdGF0ZSB0byBhIGZpbGVcblwKIFxuXAotQHBhcmFtIGZpbGVuYW1lOiBUaGUgZmlsZSB0byB3cml0ZSBkYXRhIHRvXG5cCi1AcmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cblwKKzpwYXJhbSBmaWxlbmFtZTogVGhlIGZpbGUgdG8gd3JpdGUgZGF0YSB0b1xuXAorOnJldHVybjogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk0LDggKzE5NCw4IEBACiBzdGF0aWMgY2hhciByYW5kX2J5dGVzX2RvY1tdID0gIlxuXAogR2V0IHNvbWUgcmFuZG9tbSBieXRlcyBhcyBhIHN0cmluZy5cblwKIFxuXAotQHBhcmFtIG51bV9ieXRlczogVGhlIG51bWJlciBvZiBieXRlcyB0byBmZXRjaFxuXAotQHJldHVybjogQSBzdHJpbmcgb2YgcmFuZG9tIGJ5dGVzXG5cCis6cGFyYW0gbnVtX2J5dGVzOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGZldGNoXG5cCis6cmV0dXJuOiBBIHN0cmluZyBvZiByYW5kb20gYnl0ZXNcblwKICI7CiAKICNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDAKZGlmZiAtLWdpdCBhL09wZW5TU0wvc3NsL2Nvbm5lY3Rpb24uYyBiL09wZW5TU0wvc3NsL2Nvbm5lY3Rpb24uYwppbmRleCA5ZTk3OTRiLi4wMzdmMmEwIDEwMDc1NQotLS0gYS9PcGVuU1NML3NzbC9jb25uZWN0aW9uLmMKKysrIGIvT3BlblNTTC9zc2wvY29ubmVjdGlvbi5jCkBAIC0yNTEsNyArMjUxLDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX2dldF9jb250ZXh0X2RvY1tdID0gIlxuXAogR2V0IHNlc3Npb24gY29udGV4dFxuXAogXG5cCi1AcmV0dXJuOiBBIENvbnRleHQgb2JqZWN0XG5cCis6cmV0dXJuOiBBIENvbnRleHQgb2JqZWN0XG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX2dldF9jb250ZXh0KHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykgewpAQCAtMjY2LDcgKzI2Niw3IEBACiBzdGF0aWMgY2hhciBzc2xfQ29ubmVjdGlvbl9zZXRfY29udGV4dF9kb2NbXSA9ICJcblwKIFN3aXRjaCB0aGlzIGNvbm5lY3Rpb24gdG8gYSBuZXcgc2Vzc2lvbiBjb250ZXh0XG5cCiBcblwKLUBwYXJhbSBjb250ZXh0OiBBIEx7Q29udGV4dH0gaW5zdGFuY2UgZ2l2aW5nIHRoZSBuZXcgc2Vzc2lvbiBjb250ZXh0IHRvIHVzZS5cblwKKzpwYXJhbSBjb250ZXh0OiBBIDpweTpjbGFzczpgQ29udGV4dGAgaW5zdGFuY2UgZ2l2aW5nIHRoZSBuZXcgc2Vzc2lvbiBjb250ZXh0IHRvIHVzZS5cblwKIFxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMDUsNyArMzA1LDcgQEAKIFJldHJpZXZlIHRoZSBzZXJ2ZXJuYW1lIGV4dGVuc2lvbiB2YWx1ZSBpZiBwcm92aWRlZCBpbiB0aGUgY2xpZW50IGhlbGxvXG5cCiBtZXNzYWdlLCBvciBOb25lIGlmIHRoZXJlIHdhc24ndCBvbmUuXG5cCiBcblwKLUByZXR1cm46IEEgYnl0ZSBzdHJpbmcgZ2l2aW5nIHRoZSBzZXJ2ZXIgbmFtZSBvciBDe05vbmV9LlxuXAorOnJldHVybjogQSBieXRlIHN0cmluZyBnaXZpbmcgdGhlIHNlcnZlciBuYW1lIG9yIDpweTpkYXRhOmBOb25lYC5cblwKIFxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMzEsNyArMzMxLDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX3NldF90bHNleHRfaG9zdF9uYW1lX2RvY1tdID0gIlxuXAogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VydmVybmFtZSBleHRlbnNpb24gdG8gc2VuZCBpbiB0aGUgY2xpZW50IGhlbGxvLlxuXAogXG5cCi1AcGFyYW0gbmFtZTogQSBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUuXG5cCis6cGFyYW0gbmFtZTogQSBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUuXG5cCiBcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzU0LDcgKzM1NCw3IEBACiBzdGF0aWMgY2hhciBzc2xfQ29ubmVjdGlvbl9wZW5kaW5nX2RvY1tdID0gIlxuXAogR2V0IHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgc2FmZWx5IHJlYWQgZnJvbSB0aGUgY29ubmVjdGlvblxuXAogXG5cCi1AcmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgcmVjZWl2ZSBidWZmZXIuXG5cCis6cmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgcmVjZWl2ZSBidWZmZXIuXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX3BlbmRpbmcoc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7CkBAIC0zNzIsOCArMzcyLDggQEAKIFdoZW4gdXNpbmcgbm9uLXNvY2tldCBjb25uZWN0aW9ucyB0aGlzIGZ1bmN0aW9uIHNlbmRzXG5cCiBcImRpcnR5XCIgZGF0YSB0aGF0IHdvdWxkIGhhdmUgdHJhdmVsZWQgaW4gb24gdGhlIG5ldHdvcmsuXG5cCiBcblwKLUBwYXJhbSBidWY6IFRoZSBzdHJpbmcgdG8gcHV0IGludG8gdGhlIG1lbW9yeSBCSU8uXG5cCi1AcmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cblwKKzpwYXJhbSBidWY6IFRoZSBzdHJpbmcgdG8gcHV0IGludG8gdGhlIG1lbW9yeSBCSU8uXG5cCis6cmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fYmlvX3dyaXRlKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTQxNCwxMCArNDE0LDEwIEBACiBXYW50V3JpdGUgb3IgV2FudFg1MDlMb29rdXAgZXhjZXB0aW9ucyBvbiB0aGlzLCB5b3UgaGF2ZSB0byBjYWxsIHRoZVxuXAogbWV0aG9kIGFnYWluIHdpdGggdGhlIFNBTUUgYnVmZmVyLlxuXAogXG5cCi1AcGFyYW0gYnVmOiBUaGUgc3RyaW5nIHRvIHNlbmRcblwKLUBwYXJhbSBmbGFnczogKG9wdGlvbmFsKSBJbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzb2NrZXRcblwKKzpwYXJhbSBidWY6IFRoZSBzdHJpbmcgdG8gc2VuZFxuXAorOnBhcmFtIGZsYWdzOiAob3B0aW9uYWwpIEluY2x1ZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHNvY2tldFxuXAogICAgICAgICAgICAgICBBUEksIHRoZSB2YWx1ZSBpcyBpZ25vcmVkXG5cCi1AcmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cblwKKzpyZXR1cm46IFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlblxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9zZW5kKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykgewpAQCAtNDY5LDEwICs0NjksMTAgQEAKIGFsbCBkYXRhIGlzIHNlbnQuIElmIGFuIGVycm9yIG9jY3VycywgaXQncyBpbXBvc3NpYmxlIHRvIHRlbGwgaG93IG11Y2ggZGF0YVxuXAogaGFzIGJlZW4gc2VudC5cblwKIFxuXAotQHBhcmFtIGJ1ZjogVGhlIHN0cmluZyB0byBzZW5kXG5cCi1AcGFyYW0gZmxhZ3M6IChvcHRpb25hbCkgSW5jbHVkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc29ja2V0XG5cCis6cGFyYW0gYnVmOiBUaGUgc3RyaW5nIHRvIHNlbmRcblwKKzpwYXJhbSBmbGFnczogKG9wdGlvbmFsKSBJbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzb2NrZXRcblwKICAgICAgICAgICAgICAgQVBJLCB0aGUgdmFsdWUgaXMgaWdub3JlZFxuXAotQHJldHVybjogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuXG5cCis6cmV0dXJuOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fc2VuZGFsbChzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC01MzIsMTAgKzUzMiwxMCBAQAogV2FudFdyaXRlIG9yIFdhbnRYNTA5TG9va3VwIGV4Y2VwdGlvbnMgb24gdGhpcywgeW91IGhhdmUgdG8gY2FsbCB0aGVcblwKIG1ldGhvZCBhZ2FpbiB3aXRoIHRoZSBTQU1FIGJ1ZmZlci5cblwKIFxuXAotQHBhcmFtIGJ1ZnNpejogVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWRcblwKLUBwYXJhbSBmbGFnczogKG9wdGlvbmFsKSBJbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzb2NrZXRcblwKKzpwYXJhbSBidWZzaXo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byByZWFkXG5cCis6cGFyYW0gZmxhZ3M6IChvcHRpb25hbCkgSW5jbHVkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc29ja2V0XG5cCiAgICAgICAgICAgICAgIEFQSSwgdGhlIHZhbHVlIGlzIGlnbm9yZWRcblwKLUByZXR1cm46IFRoZSBzdHJpbmcgcmVhZCBmcm9tIHRoZSBDb25uZWN0aW9uXG5cCis6cmV0dXJuOiBUaGUgc3RyaW5nIHJlYWQgZnJvbSB0aGUgQ29ubmVjdGlvblxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9yZWN2KHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTU4MCw4ICs1ODAsOCBAQAogV2hlbiB1c2luZyBub24tc29ja2V0IGNvbm5lY3Rpb25zIHRoaXMgZnVuY3Rpb24gcmVhZHNcblwKIHRoZSBcImRpcnR5XCIgZGF0YSB0aGF0IHdvdWxkIGhhdmUgdHJhdmVsZWQgYXdheSBvbiB0aGUgbmV0d29yay5cblwKIFxuXAotQHBhcmFtIGJ1ZnNpejogVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWRcblwKLUByZXR1cm46IFRoZSBzdHJpbmcgcmVhZC5cblwKKzpwYXJhbSBidWZzaXo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byByZWFkXG5cCis6cmV0dXJuOiBUaGUgc3RyaW5nIHJlYWQuXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX2Jpb19yZWFkKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTYzNCw3ICs2MzQsNyBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fcmVuZWdvdGlhdGVfZG9jW10gPSAiXG5cCiBSZW5lZ290aWF0ZSB0aGUgc2Vzc2lvblxuXAogXG5cCi1AcmV0dXJuOiBUcnVlIGlmIHRoZSByZW5lZ290aWF0aW9uIGNhbiBiZSBzdGFydGVkLCBmYWxzZSBvdGhlcndpc2VcblwKKzpyZXR1cm46IFRydWUgaWYgdGhlIHJlbmVnb3RpYXRpb24gY2FuIGJlIHN0YXJ0ZWQsIGZhbHNlIG90aGVyd2lzZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9yZW5lZ290aWF0ZShzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKQEAgLTY2MCw3ICs2NjAsNyBAQAogUGVyZm9ybSBhbiBTU0wgaGFuZHNoYWtlICh1c3VhbGx5IGNhbGxlZCBhZnRlciByZW5lZ290aWF0ZSgpIG9yIG9uZSBvZlxuXAogc2V0Xypfc3RhdGUoKSkuIFRoaXMgY2FuIHJhaXNlIHRoZSBzYW1lIGV4Y2VwdGlvbnMgYXMgc2VuZCBhbmQgcmVjdi5cblwKIFxuXAotQHJldHVybjogTm9uZS5cblwKKzpyZXR1cm46IE5vbmUuXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX2RvX2hhbmRzaGFrZShzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC02OTgsNyArNjk4LDcgQEAKIENoZWNrIGlmIHRoZXJlJ3MgYSByZW5lZ290aWF0aW9uIGluIHByb2dyZXNzLCBpdCB3aWxsIHJldHVybiBmYWxzZSBvbmNlXG5cCiBhIHJlbmVnb3RpYXRpb24gaXMgZmluaXNoZWQuXG5cCiBcblwKLUByZXR1cm46IFdoZXRoZXIgdGhlcmUncyBhIHJlbmVnb3RpYXRpb24gaW4gcHJvZ3Jlc3NcblwKKzpyZXR1cm46IFdoZXRoZXIgdGhlcmUncyBhIHJlbmVnb3RpYXRpb24gaW4gcHJvZ3Jlc3NcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fcmVuZWdvdGlhdGVfcGVuZGluZyhzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC03MTMsNyArNzEzLDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX3RvdGFsX3JlbmVnb3RpYXRpb25zX2RvY1tdID0gIlxuXAogRmluZCBvdXQgdGhlIHRvdGFsIG51bWJlciBvZiByZW5lZ290aWF0aW9ucy5cblwKIFxuXAotQHJldHVybjogVGhlIG51bWJlciBvZiByZW5lZ290aWF0aW9ucy5cblwKKzpyZXR1cm46IFRoZSBudW1iZXIgb2YgcmVuZWdvdGlhdGlvbnMuXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX3RvdGFsX3JlbmVnb3RpYXRpb25zKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTcyOCw3ICs3MjgsNyBAQAogU2V0IHRoZSBjb25uZWN0aW9uIHRvIHdvcmsgaW4gc2VydmVyIG1vZGUuIFRoZSBoYW5kc2hha2Ugd2lsbCBiZSBoYW5kbGVkXG5cCiBhdXRvbWF0aWNhbGx5IGJ5IHJlYWQvd3JpdGUuXG5cCiBcblwKLUByZXR1cm46IE5vbmVcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fc2V0X2FjY2VwdF9zdGF0ZShzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC03NDYsNyArNzQ2LDcgQEAKIFNldCB0aGUgY29ubmVjdGlvbiB0byB3b3JrIGluIGNsaWVudCBtb2RlLiBUaGUgaGFuZHNoYWtlIHdpbGwgYmUgaGFuZGxlZFxuXAogYXV0b21hdGljYWxseSBieSByZWFkL3dyaXRlLlxuXAogXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX3NldF9jb25uZWN0X3N0YXRlKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTc2Myw4ICs3NjMsOCBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fY29ubmVjdF9kb2NbXSA9ICJcblwKIENvbm5lY3QgdG8gcmVtb3RlIGhvc3QgYW5kIHNldCB1cCBjbGllbnQtc2lkZSBTU0xcblwKIFxuXAotQHBhcmFtIGFkZHI6IEEgcmVtb3RlIGFkZHJlc3NcblwKLUByZXR1cm46IFdoYXQgdGhlIHNvY2tldCdzIGNvbm5lY3QgbWV0aG9kIHJldHVybnNcblwKKzpwYXJhbSBhZGRyOiBBIHJlbW90ZSBhZGRyZXNzXG5cCis6cmV0dXJuOiBXaGF0IHRoZSBzb2NrZXQncyBjb25uZWN0IG1ldGhvZCByZXR1cm5zXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX2Nvbm5lY3Qoc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtNzg4LDggKzc4OCw4IEBACiBDb25uZWN0IHRvIHJlbW90ZSBob3N0IGFuZCBzZXQgdXAgY2xpZW50LXNpZGUgU1NMLiBOb3RlIHRoYXQgaWYgdGhlIHNvY2tldCdzXG5cCiBjb25uZWN0X2V4IG1ldGhvZCBkb2Vzbid0IHJldHVybiAwLCBTU0wgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuXG5cCiBcblwKLUBwYXJhbSBhZGRyOiBBIHJlbW92ZSBhZGRyZXNzXG5cCi1AcmV0dXJuOiBXaGF0IHRoZSBzb2NrZXQncyBjb25uZWN0X2V4IG1ldGhvZCByZXR1cm5zXG5cCis6cGFyYW0gYWRkcjogQSByZW1vdmUgYWRkcmVzc1xuXAorOnJldHVybjogV2hhdCB0aGUgc29ja2V0J3MgY29ubmVjdF9leCBtZXRob2QgcmV0dXJuc1xuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9jb25uZWN0X2V4KHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTgwOSw3ICs4MDksNyBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fYWNjZXB0X2RvY1tdID0gIlxuXAogQWNjZXB0IGluY29taW5nIGNvbm5lY3Rpb24gYW5kIHNldCB1cCBTU0wgb24gaXRcblwKIFxuXAotQHJldHVybjogQSAoY29ubixhZGRyKSBwYWlyIHdoZXJlIGNvbm4gaXMgYSBDb25uZWN0aW9uIGFuZCBhZGRyIGlzIGFuXG5cCis6cmV0dXJuOiBBIChjb25uLGFkZHIpIHBhaXIgd2hlcmUgY29ubiBpcyBhIENvbm5lY3Rpb24gYW5kIGFkZHIgaXMgYW5cblwKICAgICAgICAgIGFkZHJlc3NcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtODUzLDcgKzg1Myw3IEBACiBXaGVuIHVzaW5nIG5vbi1zb2NrZXQgY29ubmVjdGlvbnMgdGhpcyBmdW5jdGlvbiBzaWduYWxzIGVuZCBvZlxuXAogZGF0YSBvbiB0aGUgaW5wdXQgZm9yIHRoaXMgY29ubmVjdGlvbi5cblwKIFxuXAotQHJldHVybjogTm9uZVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg3NSw3ICs4NzUsNyBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fc2h1dGRvd25fZG9jW10gPSAiXG5cCiBTZW5kIGNsb3N1cmUgYWxlcnRcblwKIFxuXAotQHJldHVybjogVHJ1ZSBpZiB0aGUgc2h1dGRvd24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseSAoaS5lLiBib3RoIHNpZGVzXG5cCis6cmV0dXJuOiBUcnVlIGlmIHRoZSBzaHV0ZG93biBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IChpLmUuIGJvdGggc2lkZXNcblwKICAgICAgICAgIGhhdmUgc2VudCBjbG9zdXJlIGFsZXJ0cyksIGZhbHNlIG90aGVyd2lzZSAoaS5lLiB5b3UgaGF2ZSB0b1xuXAogICAgICAgICAgd2FpdCBmb3IgYSBaZXJvUmV0dXJuRXJyb3Igb24gYSByZWN2KCkgbWV0aG9kIGNhbGxcblwKICI7CkBAIC05MTcsNyArOTE3LDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX2dldF9jaXBoZXJfbGlzdF9kb2NbXSA9ICJcblwKIEdldCB0aGUgc2Vzc2lvbiBjaXBoZXIgbGlzdFxuXAogXG5cCi1AcmV0dXJuOiBBIGxpc3Qgb2YgY2lwaGVyIHN0cmluZ3NcblwKKzpyZXR1cm46IEEgbGlzdCBvZiBjaXBoZXIgc3RyaW5nc1xuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9nZXRfY2lwaGVyX2xpc3Qoc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtOTQzLDkgKzk0Myw5IEBACiBzdGF0aWMgY2hhciBzc2xfQ29ubmVjdGlvbl9nZXRfY2xpZW50X2NhX2xpc3RfZG9jW10gPSAiXG5cCiBHZXQgQ0FzIHdob3NlIGNlcnRpZmljYXRlcyBhcmUgc3VnZ2VzdGVkIGZvciBjbGllbnQgYXV0aGVudGljYXRpb24uXG5cCiBcblwKLUByZXR1cm46IElmIHRoaXMgaXMgYSBzZXJ2ZXIgY29ubmVjdGlvbiwgYSBsaXN0IG9mIFg1MDlOYW1lcyByZXByZXNlbnRpbmdcblwKLSAgICB0aGUgYWNjZXB0YWJsZSBDQXMgYXMgc2V0IGJ5IEx7T3BlblNTTC5TU0wuQ29udGV4dC5zZXRfY2xpZW50X2NhX2xpc3R9IG9yXG5cCi0gICAgTHtPcGVuU1NMLlNTTC5Db250ZXh0LmFkZF9jbGllbnRfY2F9LiAgSWYgdGhpcyBpcyBhIGNsaWVudCBjb25uZWN0aW9uLFxuXAorOnJldHVybjogSWYgdGhpcyBpcyBhIHNlcnZlciBjb25uZWN0aW9uLCBhIGxpc3Qgb2YgWDUwOU5hbWVzIHJlcHJlc2VudGluZ1xuXAorICAgIHRoZSBhY2NlcHRhYmxlIENBcyBhcyBzZXQgYnkgOnB5Om1ldGg6YE9wZW5TU0wuU1NMLkNvbnRleHQuc2V0X2NsaWVudF9jYV9saXN0YCBvclxuXAorICAgIDpweTptZXRoOmBPcGVuU1NMLlNTTC5Db250ZXh0LmFkZF9jbGllbnRfY2FgLiAgSWYgdGhpcyBpcyBhIGNsaWVudCBjb25uZWN0aW9uLFxuXAogICAgIHRoZSBsaXN0IG9mIHN1Y2ggWDUwOU5hbWVzIHNlbnQgYnkgdGhlIHNlcnZlciwgb3IgYW4gZW1wdHkgbGlzdCBpZiB0aGF0XG5cCiAgICAgaGFzIG5vdCB5ZXQgaGFwcGVuZWQuXG5cCiAiOwpAQCAtOTk3LDcgKzk5Nyw3IEBACiBUaGUgbWFrZWZpbGUoKSBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkLCBzaW5jZSB0aGVyZSBpcyBubyBkdXAgc2VtYW50aWNzXG5cCiBmb3IgU1NMIGNvbm5lY3Rpb25zXG5cCiBcblwKLUByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yXG5cCis6cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvclxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9tYWtlZmlsZShzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMDA5LDcgKzEwMDksNyBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fZ2V0X2FwcF9kYXRhX2RvY1tdID0gIlxuXAogR2V0IGFwcGxpY2F0aW9uIGRhdGFcblwKIFxuXAotQHJldHVybjogVGhlIGFwcGxpY2F0aW9uIGRhdGFcblwKKzpyZXR1cm46IFRoZSBhcHBsaWNhdGlvbiBkYXRhXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db25uZWN0aW9uX2dldF9hcHBfZGF0YShzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMDI0LDggKzEwMjQsOCBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fc2V0X2FwcF9kYXRhX2RvY1tdID0gIlxuXAogU2V0IGFwcGxpY2F0aW9uIGRhdGFcblwKIFxuXAotQHBhcmFtIGRhdGEgLSBUaGUgYXBwbGljYXRpb24gZGF0YVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGRhdGEgLSBUaGUgYXBwbGljYXRpb24gZGF0YVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9zZXRfYXBwX2RhdGEoc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX2dldF9zaHV0ZG93bl9kb2NbXSA9ICJcblwKIEdldCBzaHV0ZG93biBzdGF0ZVxuXAogXG5cCi1AcmV0dXJuOiBUaGUgc2h1dGRvd24gc3RhdGUsIGEgYml0dmVjdG9yIG9mIFNFTlRfU0hVVERPV04sIFJFQ0VJVkVEX1NIVVRET1dOLlxuXAorOnJldHVybjogVGhlIHNodXRkb3duIHN0YXRlLCBhIGJpdHZlY3RvciBvZiBTRU5UX1NIVVRET1dOLCBSRUNFSVZFRF9TSFVURE9XTi5cblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fZ2V0X3NodXRkb3duKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTEwNjAsOCArMTA2MCw4IEBACiBzdGF0aWMgY2hhciBzc2xfQ29ubmVjdGlvbl9zZXRfc2h1dGRvd25fZG9jW10gPSAiXG5cCiBTZXQgc2h1dGRvd24gc3RhdGVcblwKIFxuXAotQHBhcmFtIHN0YXRlIC0gYml0dmVjdG9yIG9mIFNFTlRfU0hVVERPV04sIFJFQ0VJVkVEX1NIVVRET1dOLlxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHN0YXRlIC0gYml0dmVjdG9yIG9mIFNFTlRfU0hVVERPV04sIFJFQ0VJVkVEX1NIVVRET1dOLlxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9zZXRfc2h1dGRvd24oc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX3N0YXRlX3N0cmluZ19kb2NbXSA9ICJcblwKIEdldCBhIHZlcmJvc2Ugc3RhdGUgZGVzY3JpcHRpb25cblwKIFxuXAotQHJldHVybjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZVxuXAorOnJldHVybjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9zdGF0ZV9zdHJpbmcoc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTA5Myw3ICsxMDkzLDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX2NsaWVudF9yYW5kb21fZG9jW10gPSAiXG5cCiBHZXQgYSBjb3B5IG9mIHRoZSBjbGllbnQgaGVsbG8gbm9uY2UuXG5cCiBcblwKLUByZXR1cm46IEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc3RhdGVcblwKKzpyZXR1cm46IEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc3RhdGVcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fY2xpZW50X3JhbmRvbShzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMTExLDcgKzExMTEsNyBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fc2VydmVyX3JhbmRvbV9kb2NbXSA9ICJcblwKIEdldCBhIGNvcHkgb2YgdGhlIHNlcnZlciBoZWxsbyBub25jZS5cblwKIFxuXAotQHJldHVybjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZVxuXAorOnJldHVybjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9zZXJ2ZXJfcmFuZG9tKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTExMjksNyArMTEyOSw3IEBACiBzdGF0aWMgY2hhciBzc2xfQ29ubmVjdGlvbl9tYXN0ZXJfa2V5X2RvY1tdID0gIlxuXAogR2V0IGEgY29weSBvZiB0aGUgbWFzdGVyIGtleS5cblwKIFxuXAotQHJldHVybjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZVxuXAorOnJldHVybjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl9tYXN0ZXJfa2V5KHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTExNDcsNyArMTE0Nyw3IEBACiBzdGF0aWMgY2hhciBzc2xfQ29ubmVjdGlvbl9zb2NrX3NodXRkb3duX2RvY1tdID0gIlxuXAogU2VlIHNodXRkb3duKDIpXG5cCiBcblwKLUByZXR1cm46IFdoYXQgdGhlIHNvY2tldCdzIHNodXRkb3duKCkgbWV0aG9kIHJldHVybnNcblwKKzpyZXR1cm46IFdoYXQgdGhlIHNvY2tldCdzIHNodXRkb3duKCkgbWV0aG9kIHJldHVybnNcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fc29ja19zaHV0ZG93bihzc2xfQ29ubmVjdGlvbk9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMTY0LDcgKzExNjQsNyBAQAogc3RhdGljIGNoYXIgc3NsX0Nvbm5lY3Rpb25fZ2V0X3BlZXJfY2VydGlmaWNhdGVfZG9jW10gPSAiXG5cCiBSZXRyaWV2ZSB0aGUgb3RoZXIgc2lkZSdzIGNlcnRpZmljYXRlIChpZiBhbnkpXG5cCiBcblwKLUByZXR1cm46IFRoZSBwZWVyJ3MgY2VydGlmaWNhdGVcblwKKzpyZXR1cm46IFRoZSBwZWVyJ3MgY2VydGlmaWNhdGVcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0Nvbm5lY3Rpb25fZ2V0X3BlZXJfY2VydGlmaWNhdGUoc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTE4OSw3ICsxMTg5LDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db25uZWN0aW9uX2dldF9wZWVyX2NlcnRfY2hhaW5fZG9jW10gPSAiXG5cCiBSZXRyaWV2ZSB0aGUgb3RoZXIgc2lkZSdzIGNlcnRpZmljYXRlIChpZiBhbnkpXG5cCiBcblwKLUByZXR1cm46IEEgbGlzdCBvZiBYNTA5IGluc3RhbmNlcyBnaXZpbmcgdGhlIHBlZXIncyBjZXJ0aWZpY2F0ZSBjaGFpbixcblwKKzpyZXR1cm46IEEgbGlzdCBvZiBYNTA5IGluc3RhbmNlcyBnaXZpbmcgdGhlIHBlZXIncyBjZXJ0aWZpY2F0ZSBjaGFpbixcblwKICAgICAgICAgIG9yIE5vbmUgaWYgaXQgZG9lcyBub3QgaGF2ZSBvbmUuXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyMjgsNyArMTIyOCw3IEBACiBDaGVja3MgaWYgbW9yZSBkYXRhIGhhcyB0byBiZSByZWFkIGZyb20gdGhlIHRyYW5zcG9ydCBsYXllciB0byBjb21wbGV0ZSBhblxuXAogb3BlcmF0aW9uLlxuXAogXG5cCi1AcmV0dXJuOiBUcnVlIGlmZiBtb3JlIGRhdGEgaGFzIHRvIGJlIHJlYWRcblwKKzpyZXR1cm46IFRydWUgaWZmIG1vcmUgZGF0YSBoYXMgdG8gYmUgcmVhZFxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl93YW50X3JlYWQoc3NsX0Nvbm5lY3Rpb25PYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAKIENoZWNrcyBpZiB0aGVyZSBpcyBkYXRhIHRvIHdyaXRlIHRvIHRoZSB0cmFuc3BvcnQgbGF5ZXIgdG8gY29tcGxldGUgYW5cblwKIG9wZXJhdGlvbi5cblwKIFxuXAotQHJldHVybjogVHJ1ZSBpZmYgdGhlcmUgaXMgZGF0YSB0byB3cml0ZVxuXAorOnJldHVybjogVHJ1ZSBpZmYgdGhlcmUgaXMgZGF0YSB0byB3cml0ZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29ubmVjdGlvbl93YW50X3dyaXRlKHNzbF9Db25uZWN0aW9uT2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTEzMjAsOCArMTMyMCw4IEBACiBDcmVhdGUgYSBuZXcgQ29ubmVjdGlvbiBvYmplY3QsIHVzaW5nIHRoZSBnaXZlbiBPcGVuU1NMLlNTTC5Db250ZXh0IGluc3RhbmNlXG5cCiBhbmQgc29ja2V0LlxuXAogXG5cCi1AcGFyYW0gY29udGV4dDogQW4gU1NMIENvbnRleHQgdG8gdXNlIGZvciB0aGlzIGNvbm5lY3Rpb25cblwKLUBwYXJhbSBzb2NrZXQ6IFRoZSBzb2NrZXQgdG8gdXNlIGZvciB0cmFuc3BvcnQgbGF5ZXJcblwKKzpwYXJhbSBjb250ZXh0OiBBbiBTU0wgQ29udGV4dCB0byB1c2UgZm9yIHRoaXMgY29ubmVjdGlvblxuXAorOnBhcmFtIHNvY2tldDogVGhlIHNvY2tldCB0byB1c2UgZm9yIHRyYW5zcG9ydCBsYXllclxuXAogIjsKIAogLyoKZGlmZiAtLWdpdCBhL09wZW5TU0wvc3NsL2NvbnRleHQuYyBiL09wZW5TU0wvc3NsL2NvbnRleHQuYwppbmRleCBjMmJjMjJmLi5hYTQ5NzZkIDEwMDY0NAotLS0gYS9PcGVuU1NML3NzbC9jb250ZXh0LmMKKysrIGIvT3BlblNTTC9zc2wvY29udGV4dC5jCkBAIC0yOTIsNyArMjkyLDcgQEAKIE9wZW5TU0wuU1NMLkNvbnRleHQgaW5zdGFuY2VzIGRlZmluZSB0aGUgcGFyYW1ldGVycyBmb3Igc2V0dGluZyB1cCBuZXcgU1NMXG5cCiBjb25uZWN0aW9ucy5cblwKIFxuXAotQHBhcmFtIG1ldGhvZDogT25lIG9mICIgU1NMdjJfTUVUSE9EX1RFWFQgIlNTTHYzX01FVEhPRCwgU1NMdjIzX01FVEhPRCwgb3JcblwKKzpwYXJhbSBtZXRob2Q6IE9uZSBvZiAiIFNTTHYyX01FVEhPRF9URVhUICJTU0x2M19NRVRIT0QsIFNTTHYyM19NRVRIT0QsIG9yXG5cCiAgICAgICAgICAgICAgICBUTFN2MV9NRVRIT0QuXG5cCiAiOwogCkBAIC0zMDIsOSArMzAyLDkgQEAKIExldCBTU0wga25vdyB3aGVyZSB3ZSBjYW4gZmluZCB0cnVzdGVkIGNlcnRpZmljYXRlcyBmb3IgdGhlIGNlcnRpZmljYXRlXG5cCiBjaGFpblxuXAogXG5cCi1AcGFyYW0gY2FmaWxlOiBJbiB3aGljaCBmaWxlIHdlIGNhbiBmaW5kIHRoZSBjZXJ0aWZpY2F0ZXNcblwKLUBwYXJhbSBjYXBhdGg6IEluIHdoaWNoIGRpcmVjdG9yeSB3ZSBjYW4gZmluZCB0aGUgY2VydGlmaWNhdGVzXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gY2FmaWxlOiBJbiB3aGljaCBmaWxlIHdlIGNhbiBmaW5kIHRoZSBjZXJ0aWZpY2F0ZXNcblwKKzpwYXJhbSBjYXBhdGg6IEluIHdoaWNoIGRpcmVjdG9yeSB3ZSBjYW4gZmluZCB0aGUgY2VydGlmaWNhdGVzXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKQEAgLTMzMCw3ICszMzAsNyBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2RvY1tdID0gIlxuXAogVXNlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBDQSBjZXJ0aWZpY2F0ZSBsb2NhdGlvbnNcblwKIFxuXAotQHJldHVybjogTm9uZVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7CkBAIC0zNTQsMTAgKzM1NCwxMCBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfc2V0X3Bhc3N3ZF9jYl9kb2NbXSA9ICJcblwKIFNldCB0aGUgcGFzc3BocmFzZSBjYWxsYmFja1xuXAogXG5cCi1AcGFyYW0gY2FsbGJhY2s6IFRoZSBQeXRob24gY2FsbGJhY2sgdG8gdXNlXG5cCi1AcGFyYW0gdXNlcmRhdGE6IChvcHRpb25hbCkgQSBQeXRob24gb2JqZWN0IHdoaWNoIHdpbGwgYmUgZ2l2ZW4gYXNcblwKKzpwYXJhbSBjYWxsYmFjazogVGhlIFB5dGhvbiBjYWxsYmFjayB0byB1c2VcblwKKzpwYXJhbSB1c2VyZGF0YTogKG9wdGlvbmFsKSBBIFB5dGhvbiBvYmplY3Qgd2hpY2ggd2lsbCBiZSBnaXZlbiBhc1xuXAogICAgICAgICAgICAgICAgICBhcmd1bWVudCB0byB0aGUgY2FsbGJhY2tcblwKLUByZXR1cm46IE5vbmVcblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0NvbnRleHRfc2V0X3Bhc3N3ZF9jYihzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC00NTksOCArNDU5LDggQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X2FkZF9leHRyYV9jaGFpbl9jZXJ0X2RvY1tdID0gIlxuXAogQWRkIGNlcnRpZmljYXRlIHRvIGNoYWluXG5cCiBcblwKLUBwYXJhbSBjZXJ0b2JqOiBUaGUgWDUwOSBjZXJ0aWZpY2F0ZSBvYmplY3QgdG8gYWRkIHRvIHRoZSBjaGFpblxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGNlcnRvYmo6IFRoZSBYNTA5IGNlcnRpZmljYXRlIG9iamVjdCB0byBhZGQgdG8gdGhlIGNoYWluXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDk2LDggKzQ5Niw4IEBACiBzdGF0aWMgY2hhciBzc2xfQ29udGV4dF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZV9kb2NbXSA9ICJcblwKIExvYWQgYSBjZXJ0aWZpY2F0ZSBjaGFpbiBmcm9tIGEgZmlsZVxuXAogXG5cCi1AcGFyYW0gY2VydGZpbGU6IFRoZSBuYW1lIG9mIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gY2VydGZpbGU6IFRoZSBuYW1lIG9mIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlKHNzbF9Db250ZXh0T2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTUyMyw5ICs1MjMsOSBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfdXNlX2NlcnRpZmljYXRlX2ZpbGVfZG9jW10gPSAiXG5cCiBMb2FkIGEgY2VydGlmaWNhdGUgZnJvbSBhIGZpbGVcblwKIFxuXAotQHBhcmFtIGNlcnRmaWxlOiBUaGUgbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUgZmlsZVxuXAotQHBhcmFtIGZpbGV0eXBlOiAob3B0aW9uYWwpIFRoZSBlbmNvZGluZyBvZiB0aGUgZmlsZSwgZGVmYXVsdCBpcyBQRU1cblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBjZXJ0ZmlsZTogVGhlIG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlIGZpbGVcblwKKzpwYXJhbSBmaWxldHlwZTogKG9wdGlvbmFsKSBUaGUgZW5jb2Rpbmcgb2YgdGhlIGZpbGUsIGRlZmF1bHQgaXMgUEVNXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X3VzZV9jZXJ0aWZpY2F0ZV9maWxlKHNzbF9Db250ZXh0T2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTU1MSw4ICs1NTEsOCBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfdXNlX2NlcnRpZmljYXRlX2RvY1tdID0gIlxuXAogTG9hZCBhIGNlcnRpZmljYXRlIGZyb20gYSBYNTA5IG9iamVjdFxuXAogXG5cCi1AcGFyYW0gY2VydDogVGhlIFg1MDkgb2JqZWN0XG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gY2VydDogVGhlIFg1MDkgb2JqZWN0XG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X3VzZV9jZXJ0aWZpY2F0ZShzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC01NzgsOSArNTc4LDkgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X3VzZV9wcml2YXRla2V5X2ZpbGVfZG9jW10gPSAiXG5cCiBMb2FkIGEgcHJpdmF0ZSBrZXkgZnJvbSBhIGZpbGVcblwKIFxuXAotQHBhcmFtIGtleWZpbGU6IFRoZSBuYW1lIG9mIHRoZSBrZXkgZmlsZVxuXAotQHBhcmFtIGZpbGV0eXBlOiAob3B0aW9uYWwpIFRoZSBlbmNvZGluZyBvZiB0aGUgZmlsZSwgZGVmYXVsdCBpcyBQRU1cblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBrZXlmaWxlOiBUaGUgbmFtZSBvZiB0aGUga2V5IGZpbGVcblwKKzpwYXJhbSBmaWxldHlwZTogKG9wdGlvbmFsKSBUaGUgZW5jb2Rpbmcgb2YgdGhlIGZpbGUsIGRlZmF1bHQgaXMgUEVNXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X3VzZV9wcml2YXRla2V5X2ZpbGUoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtNjE2LDggKzYxNiw4IEBACiBzdGF0aWMgY2hhciBzc2xfQ29udGV4dF91c2VfcHJpdmF0ZWtleV9kb2NbXSA9ICJcblwKIExvYWQgYSBwcml2YXRlIGtleSBmcm9tIGEgUEtleSBvYmplY3RcblwKIFxuXAotQHBhcmFtIHBrZXk6IFRoZSBQS2V5IG9iamVjdFxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIHBrZXk6IFRoZSBQS2V5IG9iamVjdFxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF91c2VfcHJpdmF0ZWtleShzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKQEAgLTY0Niw3ICs2NDYsNyBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfY2hlY2tfcHJpdmF0ZWtleV9kb2NbXSA9ICJcblwKIENoZWNrIHRoYXQgdGhlIHByaXZhdGUga2V5IGFuZCBjZXJ0aWZpY2F0ZSBtYXRjaCB1cFxuXAogXG5cCi1AcmV0dXJuOiBOb25lIChyYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHNvbWV0aGluZydzIHdyb25nKVxuXAorOnJldHVybjogTm9uZSAocmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBzb21ldGhpbmcncyB3cm9uZylcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0NvbnRleHRfY2hlY2tfcHJpdmF0ZWtleShzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC02NjcsMTMgKzY2NywxMyBAQAogfQogCiBzdGF0aWMgY2hhciBzc2xfQ29udGV4dF9sb2FkX2NsaWVudF9jYV9kb2NbXSA9ICJcblwKLUxvYWQgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGVzIHRoYXQgd2lsbCBiZSBzZW50IHRvIHRoZSBjbGllbnQgKGJhc2ljYWxseVxuIFwKK0xvYWQgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGVzIHRoYXQgd2lsbCBiZSBzZW50IHRvIHRoZSBjbGllbnQgKGJhc2ljYWxseVxuXAogdGVsbGluZyB0aGUgY2xpZW50IFwiVGhlc2UgYXJlIHRoZSBndXlzIEkgdHJ1c3RcIikuICBEb2VzIG5vdCBhY3R1YWxseVxuXAogaW1wbHkgYW55IG9mIHRoZSBjZXJ0aWZpY2F0ZXMgYXJlIHRydXN0ZWQ7IHRoYXQgbXVzdCBiZSBjb25maWd1cmVkXG5cCiBzZXBhcmF0ZWx5LlxuXAogXG5cCi1AcGFyYW0gY2FmaWxlOiBUaGUgbmFtZSBvZiB0aGUgY2VydGlmaWNhdGVzIGZpbGVcblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBjYWZpbGU6IFRoZSBuYW1lIG9mIHRoZSBjZXJ0aWZpY2F0ZXMgZmlsZVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9sb2FkX2NsaWVudF9jYShzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC02OTMsOCArNjkzLDggQEAKIFNldCB0aGUgc2Vzc2lvbiBpZGVudGlmaWVyLCB0aGlzIGlzIG5lZWRlZCBpZiB5b3Ugd2FudCB0byBkbyBzZXNzaW9uXG5cCiByZXN1bXB0aW9uICh3aGljaCwgaXJvbmljYWxseSwgaXNuJ3QgaW1wbGVtZW50ZWQgeWV0KVxuXAogXG5cCi1AcGFyYW0gYnVmOiBBIFB5dGhvbiBvYmplY3QgdGhhdCBjYW4gYmUgc2FmZWx5IGNvbnZlcnRlZCB0byBhIHN0cmluZ1xuXAotQHJldHVybnM6IE5vbmVcblwKKzpwYXJhbSBidWY6IEEgUHl0aG9uIG9iamVjdCB0aGF0IGNhbiBiZSBzYWZlbHkgY29udmVydGVkIHRvIGEgc3RyaW5nXG5cCis6cmV0dXJuczogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9zZXRfc2Vzc2lvbl9pZChzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC03MjAsMTAgKzcyMCwxMCBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfc2V0X3ZlcmlmeV9kb2NbXSA9ICJcblwKIFNldCB0aGUgdmVyaWZ5IG1vZGUgYW5kIHZlcmlmeSBjYWxsYmFja1xuXAogXG5cCi1AcGFyYW0gbW9kZTogVGhlIHZlcmlmeSBtb2RlLCB0aGlzIGlzIGVpdGhlciBWRVJJRllfTk9ORSBvclxuXAorOnBhcmFtIG1vZGU6IFRoZSB2ZXJpZnkgbW9kZSwgdGhpcyBpcyBlaXRoZXIgVkVSSUZZX05PTkUgb3JcblwKICAgICAgICAgICAgICBWRVJJRllfUEVFUiBjb21iaW5lZCB3aXRoIHBvc3NpYmxlIG90aGVyIGZsYWdzXG5cCi1AcGFyYW0gY2FsbGJhY2s6IFRoZSBQeXRob24gY2FsbGJhY2sgdG8gdXNlXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gY2FsbGJhY2s6IFRoZSBQeXRob24gY2FsbGJhY2sgdG8gdXNlXG5cCis6cmV0dXJuOiBOb25lXG5cCiBcblwKIFNlZSBTU0xfQ1RYX3NldF92ZXJpZnkoM1NTTCkgZm9yIGZ1cnRoZXIgZGV0YWlscy5cblwKICI7CkBAIC03NTQsOCArNzU0LDggQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X3NldF92ZXJpZnlfZGVwdGhfZG9jW10gPSAiXG5cCiBTZXQgdGhlIHZlcmlmeSBkZXB0aFxuXAogXG5cCi1AcGFyYW0gZGVwdGg6IEFuIGludGVnZXIgc3BlY2lmeWluZyB0aGUgdmVyaWZ5IGRlcHRoXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gZGVwdGg6IEFuIGludGVnZXIgc3BlY2lmeWluZyB0aGUgdmVyaWZ5IGRlcHRoXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X3NldF92ZXJpZnlfZGVwdGgoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtNzczLDcgKzc3Myw3IEBACiBzdGF0aWMgY2hhciBzc2xfQ29udGV4dF9nZXRfdmVyaWZ5X21vZGVfZG9jW10gPSAiXG5cCiBHZXQgdGhlIHZlcmlmeSBtb2RlXG5cCiBcblwKLUByZXR1cm46IFRoZSB2ZXJpZnkgbW9kZVxuXAorOnJldHVybjogVGhlIHZlcmlmeSBtb2RlXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X2dldF92ZXJpZnlfbW9kZShzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC03OTAsNyArNzkwLDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X2dldF92ZXJpZnlfZGVwdGhfZG9jW10gPSAiXG5cCiBHZXQgdGhlIHZlcmlmeSBkZXB0aFxuXAogXG5cCi1AcmV0dXJuOiBUaGUgdmVyaWZ5IGRlcHRoXG5cCis6cmV0dXJuOiBUaGUgdmVyaWZ5IGRlcHRoXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X2dldF92ZXJpZnlfZGVwdGgoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtODA3LDggKzgwNyw4IEBACiBzdGF0aWMgY2hhciBzc2xfQ29udGV4dF9sb2FkX3RtcF9kaF9kb2NbXSA9ICJcblwKIExvYWQgcGFyYW1ldGVycyBmb3IgRXBoZW1lcmFsIERpZmZpZS1IZWxsbWFuXG5cCiBcblwKLUBwYXJhbSBkaGZpbGU6IFRoZSBmaWxlIHRvIGxvYWQgRURIIHBhcmFtZXRlcnMgZnJvbVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGRoZmlsZTogVGhlIGZpbGUgdG8gbG9hZCBFREggcGFyYW1ldGVycyBmcm9tXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X2xvYWRfdG1wX2RoKHNzbF9Db250ZXh0T2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTgzOCw4ICs4MzgsOCBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfc2V0X2NpcGhlcl9saXN0X2RvY1tdID0gIlxuXAogQ2hhbmdlIHRoZSBjaXBoZXIgbGlzdFxuXAogXG5cCi1AcGFyYW0gY2lwaGVyX2xpc3Q6IEEgY2lwaGVyIGxpc3QsIHNlZSBjaXBoZXJzKDEpXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gY2lwaGVyX2xpc3Q6IEEgY2lwaGVyIGxpc3QsIHNlZSBjaXBoZXJzKDEpXG5cCis6cmV0dXJuOiBOb25lXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X3NldF9jaXBoZXJfbGlzdChzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC04NjcsOCArODY3LDggQEAKIFRoaXMgbGlzdCBvZiBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcyB3aWxsIGJlIHNlbnQgdG8gdGhlIGNsaWVudCB3aGVuIHRoZVxuXAogc2VydmVyIHJlcXVlc3RzIGEgY2xpZW50IGNlcnRpZmljYXRlLlxuXAogXG5cCi1AcGFyYW0gY2VydGlmaWNhdGVfYXV0aG9yaXRpZXM6IGEgc2VxdWVuY2Ugb2YgWDUwOU5hbWVzLlxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGNlcnRpZmljYXRlX2F1dGhvcml0aWVzOiBhIHNlcXVlbmNlIG9mIFg1MDlOYW1lcy5cblwKKzpyZXR1cm46IE5vbmVcblwKICI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC05NDUsOCArOTQ1LDggQEAKIFRoZSBsaXN0IG9mIGNlcnRpZmljYXRlIGF1dGhvcml0aWVzIHdpbGwgYmUgc2VudCB0byB0aGUgY2xpZW50IHdoZW4gdGhlXG5cCiBzZXJ2ZXIgcmVxdWVzdHMgYSBjbGllbnQgY2VydGlmaWNhdGUuXG5cCiBcblwKLUBwYXJhbSBjZXJ0aWZpY2F0ZV9hdXRob3JpdHk6IGNlcnRpZmljYXRlIGF1dGhvcml0eSdzIFg1MDkgY2VydGlmaWNhdGUuXG5cCi1AcmV0dXJuOiBOb25lXG5cCis6cGFyYW0gY2VydGlmaWNhdGVfYXV0aG9yaXR5OiBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkncyBYNTA5IGNlcnRpZmljYXRlLlxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTk2OSw4ICs5NjksOCBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfc2V0X3RpbWVvdXRfZG9jW10gPSAiXG5cCiBTZXQgc2Vzc2lvbiB0aW1lb3V0XG5cCiBcblwKLUBwYXJhbSB0aW1lb3V0OiBUaGUgdGltZW91dCBpbiBzZWNvbmRzXG5cCi1AcmV0dXJuOiBUaGUgcHJldmlvdXMgc2Vzc2lvbiB0aW1lb3V0XG5cCis6cGFyYW0gdGltZW91dDogVGhlIHRpbWVvdXQgaW4gc2Vjb25kc1xuXAorOnJldHVybjogVGhlIHByZXZpb3VzIHNlc3Npb24gdGltZW91dFxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9zZXRfdGltZW91dChzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC05ODcsNyArOTg3LDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X2dldF90aW1lb3V0X2RvY1tdID0gIlxuXAogR2V0IHRoZSBzZXNzaW9uIHRpbWVvdXRcblwKIFxuXAotQHJldHVybjogVGhlIHNlc3Npb24gdGltZW91dFxuXAorOnJldHVybjogVGhlIHNlc3Npb24gdGltZW91dFxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9nZXRfdGltZW91dChzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMDA0LDggKzEwMDQsOCBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfc2V0X2luZm9fY2FsbGJhY2tfZG9jW10gPSAiXG5cCiBTZXQgdGhlIGluZm8gY2FsbGJhY2tcblwKIFxuXAotQHBhcmFtIGNhbGxiYWNrOiBUaGUgUHl0aG9uIGNhbGxiYWNrIHRvIHVzZVxuXAotQHJldHVybjogTm9uZVxuXAorOnBhcmFtIGNhbGxiYWNrOiBUaGUgUHl0aG9uIGNhbGxiYWNrIHRvIHVzZVxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9zZXRfaW5mb19jYWxsYmFjayhzc2xfQ29udGV4dE9iaiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMDMzLDcgKzEwMzMsNyBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfZ2V0X2FwcF9kYXRhX2RvY1tdID0gIlxuXAogR2V0IHRoZSBhcHBsaWNhdGlvbiBkYXRhIChzdXBwbGllZCB2aWEgc2V0X2FwcF9kYXRhKCkpXG5cCiBcblwKLUByZXR1cm46IFRoZSBhcHBsaWNhdGlvbiBkYXRhXG5cCis6cmV0dXJuOiBUaGUgYXBwbGljYXRpb24gZGF0YVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9nZXRfYXBwX2RhdGEoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTA0OCw4ICsxMDQ4LDggQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X3NldF9hcHBfZGF0YV9kb2NbXSA9ICJcblwKIFNldCB0aGUgYXBwbGljYXRpb24gZGF0YSAod2lsbCBiZSByZXR1cm5lZCBmcm9tIGdldF9hcHBfZGF0YSgpKVxuXAogXG5cCi1AcGFyYW0gZGF0YTogQW55IFB5dGhvbiBvYmplY3RcblwKLUByZXR1cm46IE5vbmVcblwKKzpwYXJhbSBkYXRhOiBBbnkgUHl0aG9uIG9iamVjdFxuXAorOnJldHVybjogTm9uZVxuXAogIjsKIHN0YXRpYyBQeU9iamVjdCAqCiBzc2xfQ29udGV4dF9zZXRfYXBwX2RhdGEoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTA3MCw3ICsxMDcwLDcgQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X2dldF9jZXJ0X3N0b3JlX2RvY1tdID0gIlxuXAogR2V0IHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdGhlIGNvbnRleHRcblwKIFxuXAotQHJldHVybjogQSBYNTA5U3RvcmUgb2JqZWN0XG5cCis6cmV0dXJuOiBBIFg1MDlTdG9yZSBvYmplY3RcblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0NvbnRleHRfZ2V0X2NlcnRfc3RvcmUoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTA5NCw4ICsxMDk0LDggQEAKIHN0YXRpYyBjaGFyIHNzbF9Db250ZXh0X3NldF9vcHRpb25zX2RvY1tdID0gIlxuXAogQWRkIG9wdGlvbnMuIE9wdGlvbnMgc2V0IGJlZm9yZSBhcmUgbm90IGNsZWFyZWQhXG5cCiBcblwKLUBwYXJhbSBvcHRpb25zOiBUaGUgb3B0aW9ucyB0byBhZGQuXG5cCi1AcmV0dXJuOiBUaGUgbmV3IG9wdGlvbiBiaXRtYXNrLlxuXAorOnBhcmFtIG9wdGlvbnM6IFRoZSBvcHRpb25zIHRvIGFkZC5cblwKKzpyZXR1cm46IFRoZSBuZXcgb3B0aW9uIGJpdG1hc2suXG5cCiAiOwogc3RhdGljIFB5T2JqZWN0ICoKIHNzbF9Db250ZXh0X3NldF9vcHRpb25zKHNzbF9Db250ZXh0T2JqICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTExMTEsOCArMTExMSw4IEBACiBzdGF0aWMgY2hhciBzc2xfQ29udGV4dF9zZXRfbW9kZV9kb2NbXSA9ICJcblwKIEFkZCBtb2RlcyB2aWEgYml0bWFzay4gTW9kZXMgc2V0IGJlZm9yZSBhcmUgbm90IGNsZWFyZWQhXG5cCiBcblwKLUBwYXJhbSBtb2RlOiBUaGUgbW9kZSB0byBhZGQuXG5cCi1AcmV0dXJuOiBUaGUgbmV3IG1vZGUgYml0bWFzay5cblwKKzpwYXJhbSBtb2RlOiBUaGUgbW9kZSB0byBhZGQuXG5cCis6cmV0dXJuOiBUaGUgbmV3IG1vZGUgYml0bWFzay5cblwKICI7CiBzdGF0aWMgUHlPYmplY3QgKgogc3NsX0NvbnRleHRfc2V0X21vZGUoc3NsX0NvbnRleHRPYmogKnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7CkBAIC0xMTI4LDcgKzExMjgsNyBAQAogc3RhdGljIGNoYXIgc3NsX0NvbnRleHRfc2V0X3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNrX2RvY1tdID0gIlxuXAogU3BlY2lmeSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGNsaWVudHMgc3BlY2lmeSBhIHNlcnZlciBuYW1lLlxuXAogXG5cCi1AcGFyYW0gY2FsbGJhY2s6IFRoZSBjYWxsYmFjayBmdW5jdGlvbi4gIEl0IHdpbGwgYmUgaW52b2tlZCB3aXRoIG9uZVxuXAorOnBhcmFtIGNhbGxiYWNrOiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uICBJdCB3aWxsIGJlIGludm9rZWQgd2l0aCBvbmVcblwKICAgICBhcmd1bWVudCwgdGhlIENvbm5lY3Rpb24gaW5zdGFuY2UuXG5cCiBcblwKICI7CmRpZmYgLS1naXQgYS9PcGVuU1NML3NzbC9zc2wuYyBiL09wZW5TU0wvc3NsL3NzbC5jCmluZGV4IGNlODQwNDEuLmNlZTM2NjEgMTAwNjQ0Ci0tLSBhL09wZW5TU0wvc3NsL3NzbC5jCisrKyBiL09wZW5TU0wvc3NsL3NzbC5jCkBAIC01Myw3ICs1Myw3IEBACiBzdGF0aWMgY2hhciBzc2xfU1NMZWF5X3ZlcnNpb25fZG9jW10gPSAiXG5cCiBSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgdmVyc2lvbiBvZiBPcGVuU1NMIGluIHVzZS5cblwKIFxuXAotQHBhcmFtIHR5cGU6IE9uZSBvZiB0aGUgU1NMRUFZXyBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZS5cblwKKzpwYXJhbSB0eXBlOiBPbmUgb2YgdGhlIFNTTEVBWV8gY29uc3RhbnRzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuXG5cCiAiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvT3BlblNTTC90ZXN0L19faW5pdF9fLnB5IGIvT3BlblNTTC90ZXN0L19faW5pdF9fLnB5CmluZGV4IGNjYjRlOWEuLjliMDgwNjAgMTAwNjQ0Ci0tLSBhL09wZW5TU0wvdGVzdC9fX2luaXRfXy5weQorKysgYi9PcGVuU1NML3Rlc3QvX19pbml0X18ucHkKQEAgLTIsNSArMiw1IEBACiAjIFNlZSBMSUNFTlNFIGZvciBkZXRhaWxzLgogCiAiIiIKLVBhY2thZ2UgY29udGFpbmluZyB1bml0IHRlc3RzIGZvciBMe09wZW5TU0x9LgorUGFja2FnZSBjb250YWluaW5nIHVuaXQgdGVzdHMgZm9yIDpweTptb2Q6YE9wZW5TU0xgLgogIiIiCmRpZmYgLS1naXQgYS9PcGVuU1NML3Rlc3QvdGVzdF9jcnlwdG8ucHkgYi9PcGVuU1NML3Rlc3QvdGVzdF9jcnlwdG8ucHkKaW5kZXggNWNkY2VmYi4uYjhjN2FiMSAxMDA2NDQKLS0tIGEvT3BlblNTTC90ZXN0L3Rlc3RfY3J5cHRvLnB5CisrKyBiL09wZW5TU0wvdGVzdC90ZXN0X2NyeXB0by5weQpAQCAtMiw3ICsyLDcgQEAKICMgU2VlIExJQ0VOU0UgZmlsZSBmb3IgZGV0YWlscy4KIAogIiIiCi1Vbml0IHRlc3RzIGZvciBMe09wZW5TU0wuY3J5cHRvfS4KK1VuaXQgdGVzdHMgZm9yIDpweTptb2Q6YE9wZW5TU0wuY3J5cHRvYC4KICIiIgogCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtYWluCkBAIC0yNjgsNyArMjY4LDcgQEAKIAogY2xhc3MgWDUwOUV4dFRlc3RzKFRlc3RDYXNlKToKICAgICAiIiIKLSAgICBUZXN0cyBmb3IgTHtPcGVuU1NMLmNyeXB0by5YNTA5RXh0ZW5zaW9ufS4KKyAgICBUZXN0cyBmb3IgOnB5OmNsYXNzOmBPcGVuU1NMLmNyeXB0by5YNTA5RXh0ZW5zaW9uYC4KICAgICAiIiIKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTI5Niw4ICsyOTYsOCBAQAogCiAgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBMe1g1MDlFeHRlbnNpb259IGluc3RhbmNlcyBhcyByZXR1cm5lZCBieQotICAgICAgICBDe3N0cn0gaW5jbHVkZXMgc3R1ZmYuCisgICAgICAgIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgOnB5OmNsYXNzOmBYNTA5RXh0ZW5zaW9uYCBpbnN0YW5jZXMgYXMgcmV0dXJuZWQgYnkKKyAgICAgICAgOnB5OmRhdGE6YHN0cmAgaW5jbHVkZXMgc3R1ZmYuCiAgICAgICAgICIiIgogICAgICAgICAjIFRoaXMgaXNuJ3QgbmVjZXNzYXJpbHkgdGhlIGJlc3Qgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAgUGVyaGFwcyBpdAogICAgICAgICAjIHdpbGwgYmUgY2hhbmdlZC9pbXByb3ZlZCBpbiB0aGUgZnV0dXJlLgpAQCAtMzA4LDcgKzMwOCw3IEBACiAKICAgICBkZWYgdGVzdF90eXBlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5RXh0ZW5zaW9ufSBhbmQgTHtYNTA5RXh0ZW5zaW9uVHlwZX0gcmVmZXIgdG8gdGhlIHNhbWUgdHlwZSBvYmplY3QKKyAgICAgICAgOnB5OmNsYXNzOmBYNTA5RXh0ZW5zaW9uYCBhbmQgOnB5OmNsYXNzOmBYNTA5RXh0ZW5zaW9uVHlwZWAgcmVmZXIgdG8gdGhlIHNhbWUgdHlwZSBvYmplY3QKICAgICAgICAgYW5kIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZXMgb2YgdGhhdCB0eXBlLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRJZGVudGljYWwoWDUwOUV4dGVuc2lvbiwgWDUwOUV4dGVuc2lvblR5cGUpCkBAIC0zMTksOCArMzE5LDggQEAKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdGlvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOUV4dGVuc2lvbn0gYWNjZXB0cyBhbiBleHRlbnNpb24gdHlwZSBuYW1lLCBhIGNyaXRpY2FsIGZsYWcsCi0gICAgICAgIGFuZCBhbiBleHRlbnNpb24gdmFsdWUgYW5kIHJldHVybnMgYW4gTHtYNTA5RXh0ZW5zaW9uVHlwZX0gaW5zdGFuY2UuCisgICAgICAgIDpweTpjbGFzczpgWDUwOUV4dGVuc2lvbmAgYWNjZXB0cyBhbiBleHRlbnNpb24gdHlwZSBuYW1lLCBhIGNyaXRpY2FsIGZsYWcsCisgICAgICAgIGFuZCBhbiBleHRlbnNpb24gdmFsdWUgYW5kIHJldHVybnMgYW4gOnB5OmNsYXNzOmBYNTA5RXh0ZW5zaW9uVHlwZWAgaW5zdGFuY2UuCiAgICAgICAgICIiIgogICAgICAgICBiYXNpYyA9IFg1MDlFeHRlbnNpb24oYignYmFzaWNDb25zdHJhaW50cycpLCBUcnVlLCBiKCdDQTp0cnVlJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKQEAgLTMzOCw3ICszMzgsNyBAQAogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9leHRlbnNpb24oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlFeHRlbnNpb259IHJhaXNlcyBzb21ldGhpbmcgaWYgaXQgaXMgcGFzc2VkIGEgYmFkIGV4dGVuc2lvbgorICAgICAgICA6cHk6Y2xhc3M6YFg1MDlFeHRlbnNpb25gIHJhaXNlcyBzb21ldGhpbmcgaWYgaXQgaXMgcGFzc2VkIGEgYmFkIGV4dGVuc2lvbgogICAgICAgICBuYW1lIG9yIHZhbHVlLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCkBAIC0zNTcsNyArMzU3LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9jcml0aWNhbChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOUV4dGVuc2lvblR5cGUuZ2V0X2NyaXRpY2FsfSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgOnB5Om1ldGg6YFg1MDlFeHRlbnNpb25UeXBlLmdldF9jcml0aWNhbGAgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICAgIGV4dGVuc2lvbidzIGNyaXRpY2FsIGZsYWcuCiAgICAgICAgICIiIgogICAgICAgICBleHQgPSBYNTA5RXh0ZW5zaW9uKGIoJ2Jhc2ljQ29uc3RyYWludHMnKSwgVHJ1ZSwgYignQ0E6dHJ1ZScpKQpAQCAtMzY4LDcgKzM2OCw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfc2hvcnRfbmFtZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOUV4dGVuc2lvblR5cGUuZ2V0X3Nob3J0X25hbWV9IHJldHVybnMgYSBzdHJpbmcgZ2l2aW5nIHRoZSBzaG9ydAorICAgICAgICA6cHk6bWV0aDpgWDUwOUV4dGVuc2lvblR5cGUuZ2V0X3Nob3J0X25hbWVgIHJldHVybnMgYSBzdHJpbmcgZ2l2aW5nIHRoZSBzaG9ydAogICAgICAgICB0eXBlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbi4KICAgICAgICAgIiIiCiAgICAgICAgIGV4dCA9IFg1MDlFeHRlbnNpb24oYignYmFzaWNDb25zdHJhaW50cycpLCBUcnVlLCBiKCdDQTp0cnVlJykpCkBAIC0zNzksNyArMzc5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9kYXRhKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5RXh0ZW5zaW9uLmdldF9kYXRhfSByZXR1cm5zIGEgc3RyaW5nIGdpdmluZyB0aGUgZGF0YSBvZiB0aGUKKyAgICAgICAgOnB5Om1ldGg6YFg1MDlFeHRlbnNpb24uZ2V0X2RhdGFgIHJldHVybnMgYSBzdHJpbmcgZ2l2aW5nIHRoZSBkYXRhIG9mIHRoZQogICAgICAgICBleHRlbnNpb24uCiAgICAgICAgICIiIgogICAgICAgICBleHQgPSBYNTA5RXh0ZW5zaW9uKGIoJ2Jhc2ljQ29uc3RyYWludHMnKSwgVHJ1ZSwgYignQ0E6dHJ1ZScpKQpAQCAtMzg5LDcgKzM4OSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfZGF0YV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5RXh0ZW5zaW9uLmdldF9kYXRhfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIHBhc3NlZCBhbnkgYXJndW1lbnRzLgorICAgICAgICA6cHk6bWV0aDpgWDUwOUV4dGVuc2lvbi5nZXRfZGF0YWAgcmFpc2VzIDpweTpleGM6YFR5cGVFcnJvcmAgaWYgcGFzc2VkIGFueSBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBleHQgPSBYNTA5RXh0ZW5zaW9uKGIoJ2Jhc2ljQ29uc3RyYWludHMnKSwgVHJ1ZSwgYignQ0E6dHJ1ZScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV4dC5nZXRfZGF0YSwgTm9uZSkKQEAgLTM5OSw3ICszOTksNyBAQAogCiAgICAgZGVmIHRlc3RfdW51c2VkX3N1YmplY3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBUaGUgQ3tzdWJqZWN0fSBwYXJhbWV0ZXIgdG8gTHtYNTA5RXh0ZW5zaW9ufSBtYXkgYmUgcHJvdmlkZWQgZm9yIGFuCisgICAgICAgIFRoZSA6cHk6ZGF0YTpgc3ViamVjdGAgcGFyYW1ldGVyIHRvIDpweTpjbGFzczpgWDUwOUV4dGVuc2lvbmAgbWF5IGJlIHByb3ZpZGVkIGZvciBhbgogICAgICAgICBleHRlbnNpb24gd2hpY2ggZG9lcyBub3QgdXNlIGl0IGFuZCBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZS4KICAgICAgICAgIiIiCiAgICAgICAgIGV4dDEgPSBYNTA5RXh0ZW5zaW9uKApAQCAtNDE0LDggKzQxNCw4IEBACiAKICAgICBkZWYgdGVzdF9zdWJqZWN0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgSWYgYW4gZXh0ZW5zaW9uIHJlcXVpcmVzIGEgc3ViamVjdCwgdGhlIEN7c3ViamVjdH0gcGFyYW1ldGVyIHRvCi0gICAgICAgIEx7WDUwOUV4dGVuc2lvbn0gcHJvdmlkZXMgaXRzIHZhbHVlLgorICAgICAgICBJZiBhbiBleHRlbnNpb24gcmVxdWlyZXMgYSBzdWJqZWN0LCB0aGUgOnB5OmRhdGE6YHN1YmplY3RgIHBhcmFtZXRlciB0bworICAgICAgICA6cHk6Y2xhc3M6YFg1MDlFeHRlbnNpb25gIHByb3ZpZGVzIGl0cyB2YWx1ZS4KICAgICAgICAgIiIiCiAgICAgICAgIGV4dDMgPSBYNTA5RXh0ZW5zaW9uKAogICAgICAgICAgICAgYignc3ViamVjdEtleUlkZW50aWZpZXInKSwgRmFsc2UsIGIoJ2hhc2gnKSwgc3ViamVjdD1zZWxmLng1MDkpCkBAIC00MjcsNyArNDI3LDcgQEAKIAogICAgIGRlZiB0ZXN0X21pc3Npbmdfc3ViamVjdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIGFuIGV4dGVuc2lvbiByZXF1aXJlcyBhIHN1YmplY3QgYW5kIHRoZSBDe3N1YmplY3R9IHBhcmFtZXRlciBpcworICAgICAgICBJZiBhbiBleHRlbnNpb24gcmVxdWlyZXMgYSBzdWJqZWN0IGFuZCB0aGUgOnB5OmRhdGE6YHN1YmplY3RgIHBhcmFtZXRlciBpcwogICAgICAgICBnaXZlbiBubyB2YWx1ZSwgc29tZXRoaW5nIGhhcHBlbnMuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKQEAgLTQzNiw4ICs0MzYsOCBAQAogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9zdWJqZWN0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgSWYgdGhlIEN7c3ViamVjdH0gcGFyYW1ldGVyIGlzIGdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgbm90IGFuIEx7WDUwOX0KLSAgICAgICAgaW5zdGFuY2UsIEx7VHlwZUVycm9yfSBpcyByYWlzZWQuCisgICAgICAgIElmIHRoZSA6cHk6ZGF0YTpgc3ViamVjdGAgcGFyYW1ldGVyIGlzIGdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgbm90IGFuCisgICAgICAgIDpweTpjbGFzczpgWDUwOWAgaW5zdGFuY2UsIDpweTpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAgZm9yIGJhZE9iaiBpbiBbVHJ1ZSwgb2JqZWN0KCksICJoZWxsbyIsIFtdLCBzZWxmXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKApAQCAtNDQ4LDcgKzQ0OCw3IEBACiAKICAgICBkZWYgdGVzdF91bnVzZWRfaXNzdWVyKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgVGhlIEN7aXNzdWVyfSBwYXJhbWV0ZXIgdG8gTHtYNTA5RXh0ZW5zaW9ufSBtYXkgYmUgcHJvdmlkZWQgZm9yIGFuCisgICAgICAgIFRoZSA6cHk6ZGF0YTpgaXNzdWVyYCBwYXJhbWV0ZXIgdG8gOnB5OmNsYXNzOmBYNTA5RXh0ZW5zaW9uYCBtYXkgYmUgcHJvdmlkZWQgZm9yIGFuCiAgICAgICAgIGV4dGVuc2lvbiB3aGljaCBkb2VzIG5vdCB1c2UgaXQgYW5kIGlzIGlnbm9yZWQgaW4gdGhpcyBjYXNlLgogICAgICAgICAiIiIKICAgICAgICAgZXh0MSA9IFg1MDlFeHRlbnNpb24oCkBAIC00NjIsOCArNDYyLDggQEAKIAogICAgIGRlZiB0ZXN0X2lzc3VlcihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIGFuIGV4dGVuc2lvbiByZXF1aXJlcyBhIGlzc3VlciwgdGhlIEN7aXNzdWVyfSBwYXJhbWV0ZXIgdG8KLSAgICAgICAgTHtYNTA5RXh0ZW5zaW9ufSBwcm92aWRlcyBpdHMgdmFsdWUuCisgICAgICAgIElmIGFuIGV4dGVuc2lvbiByZXF1aXJlcyBhIGlzc3VlciwgdGhlIDpweTpkYXRhOmBpc3N1ZXJgIHBhcmFtZXRlciB0bworICAgICAgICA6cHk6Y2xhc3M6YFg1MDlFeHRlbnNpb25gIHByb3ZpZGVzIGl0cyB2YWx1ZS4KICAgICAgICAgIiIiCiAgICAgICAgIGV4dDIgPSBYNTA5RXh0ZW5zaW9uKAogICAgICAgICAgICAgYignYXV0aG9yaXR5S2V5SWRlbnRpZmllcicpLCBGYWxzZSwgYignaXNzdWVyOmFsd2F5cycpLApAQCAtNDc3LDcgKzQ3Nyw3IEBACiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2lzc3VlcihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIGFuIGV4dGVuc2lvbiByZXF1aXJlcyBhbiBpc3N1ZSBhbmQgdGhlIEN7aXNzdWVyfSBwYXJhbWV0ZXIgaXMgZ2l2ZW4KKyAgICAgICAgSWYgYW4gZXh0ZW5zaW9uIHJlcXVpcmVzIGFuIGlzc3VlIGFuZCB0aGUgOnB5OmRhdGE6YGlzc3VlcmAgcGFyYW1ldGVyIGlzIGdpdmVuCiAgICAgICAgIG5vIHZhbHVlLCBzb21ldGhpbmcgaGFwcGVucy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKApAQCAtNDg5LDggKzQ4OSw4IEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2lzc3VlcihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIHRoZSBDe2lzc3Vlcn0gcGFyYW1ldGVyIGlzIGdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgbm90IGFuIEx7WDUwOX0KLSAgICAgICAgaW5zdGFuY2UsIEx7VHlwZUVycm9yfSBpcyByYWlzZWQuCisgICAgICAgIElmIHRoZSA6cHk6ZGF0YTpgaXNzdWVyYCBwYXJhbWV0ZXIgaXMgZ2l2ZW4gYSB2YWx1ZSB3aGljaCBpcyBub3QgYW4KKyAgICAgICAgOnB5OmNsYXNzOmBYNTA5YCBpbnN0YW5jZSwgOnB5OmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCiAgICAgICAgICIiIgogICAgICAgICBmb3IgYmFkT2JqIGluIFtUcnVlLCBvYmplY3QoKSwgImhlbGxvIiwgW10sIHNlbGZdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCkBAIC01MDMsMTIgKzUwMywxMiBAQAogCiBjbGFzcyBQS2V5VGVzdHMoVGVzdENhc2UpOgogICAgICIiIgotICAgIFVuaXQgdGVzdHMgZm9yIEx7T3BlblNTTC5jcnlwdG8uUEtleX0uCisgICAgVW5pdCB0ZXN0cyBmb3IgOnB5OmNsYXNzOmBPcGVuU1NMLmNyeXB0by5QS2V5YC4KICAgICAiIiIKICAgICBkZWYgdGVzdF90eXBlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtQS2V5fSBhbmQgTHtQS2V5VHlwZX0gcmVmZXIgdG8gdGhlIHNhbWUgdHlwZSBvYmplY3QgYW5kIGNhbiBiZSB1c2VkCi0gICAgICAgIHRvIGNyZWF0ZSBpbnN0YW5jZXMgb2YgdGhhdCB0eXBlLgorICAgICAgICA6cHk6Y2xhc3M6YFBLZXlgIGFuZCA6cHk6Y2xhc3M6YFBLZXlUeXBlYCByZWZlciB0byB0aGUgc2FtZSB0eXBlIG9iamVjdAorICAgICAgICBhbmQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlcyBvZiB0aGF0IHR5cGUuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydElkZW50aWNhbChQS2V5LCBQS2V5VHlwZSkKICAgICAgICAgc2VsZi5hc3NlcnRDb25zaXN0ZW50VHlwZShQS2V5LCAnUEtleScpCkBAIC01MTYsNyArNTE2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdGlvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtleX0gdGFrZXMgbm8gYXJndW1lbnRzIGFuZCByZXR1cm5zIGEgbmV3IEx7UEtleX0gaW5zdGFuY2UuCisgICAgICAgIDpweTpjbGFzczpgUEtleWAgdGFrZXMgbm8gYXJndW1lbnRzIGFuZCByZXR1cm5zIGEgbmV3IDpweTpjbGFzczpgUEtleWAgaW5zdGFuY2UuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFBLZXksIE5vbmUpCiAgICAgICAgIGtleSA9IFBLZXkoKQpAQCAtNTI3LDggKzUyNyw4IEBACiAKICAgICBkZWYgdGVzdF9wcmVnZW5lcmF0aW9uKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtQS2V5VHlwZS5iaXRzfSBhbmQgTHtQS2V5VHlwZS50eXBlfSByZXR1cm4gQ3swfSBiZWZvcmUgdGhlIGtleSBpcwotICAgICAgICBnZW5lcmF0ZWQuICBMe1BLZXlUeXBlLmNoZWNrfSByYWlzZXMgTHtUeXBlRXJyb3J9IGJlZm9yZSB0aGUga2V5IGlzCisgICAgICAgIDpweTphdHRyOmBQS2V5VHlwZS5iaXRzYCBhbmQgOnB5OmF0dHI6YFBLZXlUeXBlLnR5cGVgIHJldHVybiA6cHk6ZGF0YTpgMGAgYmVmb3JlIHRoZSBrZXkgaXMKKyAgICAgICAgZ2VuZXJhdGVkLiAgOnB5OmF0dHI6YFBLZXlUeXBlLmNoZWNrYCByYWlzZXMgOnB5OmV4YzpgVHlwZUVycm9yYCBiZWZvcmUgdGhlIGtleSBpcwogICAgICAgICBnZW5lcmF0ZWQuCiAgICAgICAgICIiIgogICAgICAgICBrZXkgPSBQS2V5KCkKQEAgLTUzOSwxMSArNTM5LDExIEBACiAKICAgICBkZWYgdGVzdF9mYWlsZWRHZW5lcmF0aW9uKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtQS2V5VHlwZS5nZW5lcmF0ZV9rZXl9IHRha2VzIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBnaXZpbmcgdGhlIGtleQotICAgICAgICB0eXBlIGFzIG9uZSBvZiBMe1RZUEVfUlNBfSBvciBMe1RZUEVfRFNBfSBhbmQgdGhlIHNlY29uZCBnaXZpbmcgdGhlCisgICAgICAgIDpweTptZXRoOmBQS2V5VHlwZS5nZW5lcmF0ZV9rZXlgIHRha2VzIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBnaXZpbmcgdGhlIGtleQorICAgICAgICB0eXBlIGFzIG9uZSBvZiA6cHk6ZGF0YTpgVFlQRV9SU0FgIG9yIDpweTpkYXRhOmBUWVBFX0RTQWAgYW5kIHRoZSBzZWNvbmQgZ2l2aW5nIHRoZQogICAgICAgICBudW1iZXIgb2YgYml0cyB0byBnZW5lcmF0ZS4gIElmIGFuIGludmFsaWQgdHlwZSBpcyBzcGVjaWZpZWQgb3IKLSAgICAgICAgZ2VuZXJhdGlvbiBmYWlscywgTHtFcnJvcn0gaXMgcmFpc2VkLiAgSWYgYW4gaW52YWxpZCBudW1iZXIgb2YgYml0cyBpcwotICAgICAgICBzcGVjaWZpZWQsIEx7VmFsdWVFcnJvcn0gb3IgTHtFcnJvcn0gaXMgcmFpc2VkLgorICAgICAgICBnZW5lcmF0aW9uIGZhaWxzLCA6cHk6ZXhjOmBFcnJvcmAgaXMgcmFpc2VkLiAgSWYgYW4gaW52YWxpZCBudW1iZXIgb2YgYml0cyBpcworICAgICAgICBzcGVjaWZpZWQsIDpweTpleGM6YFZhbHVlRXJyb3JgIG9yIDpweTpleGM6YEVycm9yYCBpcyByYWlzZWQuCiAgICAgICAgICIiIgogICAgICAgICBrZXkgPSBQS2V5KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBrZXkuZ2VuZXJhdGVfa2V5KQpAQCAtNTc0LDggKzU3NCw4IEBACiAKICAgICBkZWYgdGVzdF9yc2FHZW5lcmF0aW9uKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtQS2V5VHlwZS5nZW5lcmF0ZV9rZXl9IGdlbmVyYXRlcyBhbiBSU0Ega2V5IHdoZW4gcGFzc2VkCi0gICAgICAgIEx7VFlQRV9SU0F9IGFzIGEgdHlwZSBhbmQgYSByZWFzb25hYmxlIG51bWJlciBvZiBiaXRzLgorICAgICAgICA6cHk6bWV0aDpgUEtleVR5cGUuZ2VuZXJhdGVfa2V5YCBnZW5lcmF0ZXMgYW4gUlNBIGtleSB3aGVuIHBhc3NlZAorICAgICAgICA6cHk6ZGF0YTpgVFlQRV9SU0FgIGFzIGEgdHlwZSBhbmQgYSByZWFzb25hYmxlIG51bWJlciBvZiBiaXRzLgogICAgICAgICAiIiIKICAgICAgICAgYml0cyA9IDEyOAogICAgICAgICBrZXkgPSBQS2V5KCkKQEAgLTU4Nyw4ICs1ODcsOCBAQAogCiAgICAgZGVmIHRlc3RfZHNhR2VuZXJhdGlvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtleVR5cGUuZ2VuZXJhdGVfa2V5fSBnZW5lcmF0ZXMgYSBEU0Ega2V5IHdoZW4gcGFzc2VkCi0gICAgICAgIEx7VFlQRV9EU0F9IGFzIGEgdHlwZSBhbmQgYSByZWFzb25hYmxlIG51bWJlciBvZiBiaXRzLgorICAgICAgICA6cHk6bWV0aDpgUEtleVR5cGUuZ2VuZXJhdGVfa2V5YCBnZW5lcmF0ZXMgYSBEU0Ega2V5IHdoZW4gcGFzc2VkCisgICAgICAgIDpweTpkYXRhOmBUWVBFX0RTQWAgYXMgYSB0eXBlIGFuZCBhIHJlYXNvbmFibGUgbnVtYmVyIG9mIGJpdHMuCiAgICAgICAgICIiIgogICAgICAgICAjIDUxMiBpcyBhIG1hZ2ljIG51bWJlci4gIFRoZSBEU1MgKERpZ2l0YWwgU2lnbmF0dXJlIFN0YW5kYXJkKQogICAgICAgICAjIGFsbG93cyBhIG1pbmltdW0gb2YgNTEyIGJpdHMgZm9yIERTQS4gIERTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzCkBAIC02MDMsNyArNjAzLDcgQEAKIAogICAgIGRlZiB0ZXN0X3JlZ2VuZXJhdGlvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtleVR5cGUuZ2VuZXJhdGVfa2V5fSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lCisgICAgICAgIDpweTptZXRoOmBQS2V5VHlwZS5nZW5lcmF0ZV9rZXlgIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUKICAgICAgICAga2V5IHRvIGdlbmVyYXRlIG5ldyBrZXlzLgogICAgICAgICAiIiIKICAgICAgICAga2V5ID0gUEtleSgpCkBAIC02MTUsNyArNjE1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2luY29uc2lzdGVudEtleShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtleVR5cGUuY2hlY2t9IHJldHVybnMgQ3tGYWxzZX0gaWYgdGhlIGtleSBpcyBub3QgY29uc2lzdGVudC4KKyAgICAgICAgOnB5OmBQS2V5VHlwZS5jaGVja2AgcmV0dXJucyA6cHk6ZXhjOmBFcnJvcmAgaWYgdGhlIGtleSBpcyBub3QgY29uc2lzdGVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGtleSA9IGxvYWRfcHJpdmF0ZWtleShGSUxFVFlQRV9QRU0sIGluY29uc2lzdGVudFByaXZhdGVLZXlQRU0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVycm9yLCBrZXkuY2hlY2spCkBAIC02MjMsNyArNjIzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NoZWNrX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1BLZXlUeXBlLmNoZWNrfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCisgICAgICAgIDpweTptZXRoOmBQS2V5VHlwZS5jaGVja2AgcmFpc2VzIDpweTpleGM6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgUEtleSgpLmNoZWNrLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFBLZXkoKS5jaGVjaywgb2JqZWN0KCkpCkBAIC02MzMsNyArNjMzLDcgQEAKIAogY2xhc3MgWDUwOU5hbWVUZXN0cyhUZXN0Q2FzZSk6CiAgICAgIiIiCi0gICAgVW5pdCB0ZXN0cyBmb3IgTHtPcGVuU1NMLmNyeXB0by5YNTA5TmFtZX0uCisgICAgVW5pdCB0ZXN0cyBmb3IgOnB5OmNsYXNzOmBPcGVuU1NMLmNyeXB0by5YNTA5TmFtZWAuCiAgICAgIiIiCiAgICAgZGVmIF94NTA5bmFtZShzZWxmLCAqKmF0dHJzKToKICAgICAgICAgIyBYWFggVGhlcmUncyBubyBvdGhlciB3YXkgdG8gZ2V0IGEgbmV3IFg1MDlOYW1lIHlldC4KQEAgLTY1MCw3ICs2NTAsNyBAQAogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRoZSB0eXBlIG9mIFg1MDlOYW1lIG9iamVjdHMgaXMgTHtYNTA5TmFtZVR5cGV9LgorICAgICAgICBUaGUgdHlwZSBvZiBYNTA5TmFtZSBvYmplY3RzIGlzIDpweTpjbGFzczpgWDUwOU5hbWVUeXBlYC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0SWRlbnRpY2FsKFg1MDlOYW1lLCBYNTA5TmFtZVR5cGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWDUwOU5hbWVUeXBlLl9fbmFtZV9fLCAnWDUwOU5hbWUnKQpAQCAtNjY1LDggKzY2NSw4IEBACiAKICAgICBkZWYgdGVzdF9vbmx5U3RyaW5nQXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEF0dGVtcHRpbmcgdG8gc2V0IGEgbm9uLUx7c3RyfSBhdHRyaWJ1dGUgbmFtZSBvbiBhbiBMe1g1MDlOYW1lVHlwZX0KLSAgICAgICAgaW5zdGFuY2UgY2F1c2VzIEx7VHlwZUVycm9yfSB0byBiZSByYWlzZWQuCisgICAgICAgIEF0dGVtcHRpbmcgdG8gc2V0IGEgbm9uLTpweTpkYXRhOmBzdHJgIGF0dHJpYnV0ZSBuYW1lIG9uIGFuIDpweTpjbGFzczpgWDUwOU5hbWVUeXBlYAorICAgICAgICBpbnN0YW5jZSBjYXVzZXMgOnB5OmV4YzpgVHlwZUVycm9yYCB0byBiZSByYWlzZWQuCiAgICAgICAgICIiIgogICAgICAgICBuYW1lID0gc2VsZi5feDUwOW5hbWUoKQogICAgICAgICAjIEJleW9uZCB0aGVzZSBjYXNlcywgeW91IG1heSBhbHNvIHRoaW5rIHRoYXQgdW5pY29kZSBzaG91bGQgYmUKQEAgLTY4Miw4ICs2ODIsOCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0SW52YWxpZEF0dHJpYnV0ZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEF0dGVtcHRpbmcgdG8gc2V0IGFueSBhdHRyaWJ1dGUgbmFtZSBvbiBhbiBMe1g1MDlOYW1lVHlwZX0gaW5zdGFuY2UgZm9yCi0gICAgICAgIHdoaWNoIG5vIGNvcnJlc3BvbmRpbmcgTklEIGlzIGRlZmluZWQgY2F1c2VzIEx7QXR0cmlidXRlRXJyb3J9IHRvIGJlCisgICAgICAgIEF0dGVtcHRpbmcgdG8gc2V0IGFueSBhdHRyaWJ1dGUgbmFtZSBvbiBhbiA6cHk6Y2xhc3M6YFg1MDlOYW1lVHlwZWAgaW5zdGFuY2UgZm9yCisgICAgICAgIHdoaWNoIG5vIGNvcnJlc3BvbmRpbmcgTklEIGlzIGRlZmluZWQgY2F1c2VzIDpweTpleGM6YEF0dHJpYnV0ZUVycm9yYCB0byBiZQogICAgICAgICByYWlzZWQuCiAgICAgICAgICIiIgogICAgICAgICBuYW1lID0gc2VsZi5feDUwOW5hbWUoKQpAQCAtNjkyLDcgKzY5Miw3IEBACiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5TmFtZVR5cGV9IGluc3RhbmNlcyBoYXZlIGF0dHJpYnV0ZXMgZm9yIGVhY2ggc3RhbmRhcmQgKD8pCisgICAgICAgIDpweTpjbGFzczpgWDUwOU5hbWVUeXBlYCBpbnN0YW5jZXMgaGF2ZSBhdHRyaWJ1dGVzIGZvciBlYWNoIHN0YW5kYXJkICg/KQogICAgICAgICBYNTA5TmFtZSBmaWVsZC4KICAgICAgICAgIiIiCiAgICAgICAgIG5hbWUgPSBzZWxmLl94NTA5bmFtZSgpCkBAIC03MTIsOCArNzEyLDggQEAKIAogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlOYW1lfSBjcmVhdGVzIGEgbmV3IEx7WDUwOU5hbWVUeXBlfSBpbnN0YW5jZSB3aXRoIGFsbCB0aGUgc2FtZQotICAgICAgICBhdHRyaWJ1dGVzIGFzIGFuIGV4aXN0aW5nIEx7WDUwOU5hbWVUeXBlfSBpbnN0YW5jZSB3aGVuIGNhbGxlZCB3aXRoCisgICAgICAgIDpweTpjbGFzczpgWDUwOU5hbWVgIGNyZWF0ZXMgYSBuZXcgOnB5OmNsYXNzOmBYNTA5TmFtZVR5cGVgIGluc3RhbmNlIHdpdGggYWxsIHRoZSBzYW1lCisgICAgICAgIGF0dHJpYnV0ZXMgYXMgYW4gZXhpc3RpbmcgOnB5OmNsYXNzOmBYNTA5TmFtZVR5cGVgIGluc3RhbmNlIHdoZW4gY2FsbGVkIHdpdGgKICAgICAgICAgb25lLgogICAgICAgICAiIiIKICAgICAgICAgbmFtZSA9IHNlbGYuX3g1MDluYW1lKGNvbW1vbk5hbWU9ImZvbyIsIGVtYWlsQWRkcmVzcz0iYmFyQGV4YW1wbGUuY29tIikKQEAgLTczMyw3ICs3MzMsNyBAQAogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7cmVwcn0gcGFzc2VkIGFuIEx7WDUwOU5hbWVUeXBlfSBpbnN0YW5jZSBzaG91bGQgcmV0dXJuIGEgc3RyaW5nCisgICAgICAgIDpweTpmdW5jOmByZXByYCBwYXNzZWQgYW4gOnB5OmNsYXNzOmBYNTA5TmFtZVR5cGVgIGluc3RhbmNlIHNob3VsZCByZXR1cm4gYSBzdHJpbmcKICAgICAgICAgY29udGFpbmluZyBhIGRlc2NyaXB0aW9uIG9mIHRoZSB0eXBlIGFuZCB0aGUgTklEcyB3aGljaCBoYXZlIGJlZW4gc2V0CiAgICAgICAgIG9uIGl0LgogICAgICAgICAiIiIKQEAgLTc0NSw3ICs3NDUsNyBAQAogCiAgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOU5hbWVUeXBlfSBpbnN0YW5jZXMgc2hvdWxkIGNvbXBhcmUgYmFzZWQgb24gdGhlaXIgTklEcy4KKyAgICAgICAgOnB5OmNsYXNzOmBYNTA5TmFtZVR5cGVgIGluc3RhbmNlcyBzaG91bGQgY29tcGFyZSBiYXNlZCBvbiB0aGVpciBOSURzLgogICAgICAgICAiIiIKICAgICAgICAgZGVmIF9lcXVhbGl0eShhLCBiLCBhc3NlcnRUcnVlLCBhc3NlcnRGYWxzZSk6CiAgICAgICAgICAgICBhc3NlcnRUcnVlKGEgPT0gYiwgIiglciA9PSAlcikgLS0+IEZhbHNlIiAlIChhLCBiKSkKQEAgLTgyMCw3ICs4MjAsNyBAQAogCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOU5hbWUuaGFzaH0gcmV0dXJucyBhbiBpbnRlZ2VyIGhhc2ggYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZQorICAgICAgICA6cHk6bWV0aDpgWDUwOU5hbWUuaGFzaGAgcmV0dXJucyBhbiBpbnRlZ2VyIGhhc2ggYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZQogICAgICAgICBuYW1lLgogICAgICAgICAiIiIKICAgICAgICAgYSA9IHNlbGYuX3g1MDluYW1lKENOPSJmb28iKQpAQCAtODMyLDcgKzgzMiw3IEBACiAKICAgICBkZWYgdGVzdF9kZXIoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlOYW1lLmRlcn0gcmV0dXJucyB0aGUgREVSIGVuY29kZWQgZm9ybSBvZiB0aGUgbmFtZS4KKyAgICAgICAgOnB5Om1ldGg6YFg1MDlOYW1lLmRlcmAgcmV0dXJucyB0aGUgREVSIGVuY29kZWQgZm9ybSBvZiB0aGUgbmFtZS4KICAgICAgICAgIiIiCiAgICAgICAgIGEgPSBzZWxmLl94NTA5bmFtZShDTj0iZm9vIiwgQz0iVVMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtODQzLDcgKzg0Myw4IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29tcG9uZW50cyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOU5hbWUuZ2V0X2NvbXBvbmVudHN9IHJldHVybnMgYSBDe2xpc3R9IG9mIHR3by10dXBsZXMgb2YgQ3tzdHJ9CisgICAgICAgIDpweTptZXRoOmBYNTA5TmFtZS5nZXRfY29tcG9uZW50c2AgcmV0dXJucyBhIDpweTpkYXRhOmBsaXN0YCBvZgorICAgICAgICB0d28tdHVwbGVzIG9mIDpweTpkYXRhOmBzdHJgCiAgICAgICAgIGdpdmluZyB0aGUgTklEcyBhbmQgYXNzb2NpYXRlZCB2YWx1ZXMgd2hpY2ggbWFrZSB1cCB0aGUgbmFtZS4KICAgICAgICAgIiIiCiAgICAgICAgIGEgPSBzZWxmLl94NTA5bmFtZSgpCkBAIC04NjIsMTQgKzg2MywxNiBAQAogICAgICIiIgogICAgIGRlZiBzaWduYWJsZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBzb21ldGhpbmcgd2l0aCBhIEN7c2V0X3B1YmtleX0sIEN7c2V0X3B1YmtleX0sIGFuZCBDe3NpZ259IG1ldGhvZC4KKyAgICAgICAgUmV0dXJuIHNvbWV0aGluZyB3aXRoIGEgOnB5Om1ldGg6YHNldF9wdWJrZXlgLCA6cHk6bWV0aDpgc2V0X3B1YmtleWAsCisgICAgICAgIGFuZCA6cHk6bWV0aDpgc2lnbmAgbWV0aG9kLgogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKIAogICAgIGRlZiB0ZXN0X3NpZ25XaXRoVW5nZW5lcmF0ZWQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlSZXEuc2lnbn0gcmFpc2VzIEx7VmFsdWVFcnJvcn0gd2hlbiBwYXNzIGEgTHtQS2V5fSB3aXRoIG5vIHBhcnRzLgorICAgICAgICA6cHk6bWV0aDpgWDUwOVJlcS5zaWduYCByYWlzZXMgOnB5OmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBwYXNzIGEKKyAgICAgICAgOnB5OmNsYXNzOmBQS2V5YCB3aXRoIG5vIHBhcnRzLgogICAgICAgICAiIiIKICAgICAgICAgcmVxdWVzdCA9IHNlbGYuc2lnbmFibGUoKQogICAgICAgICBrZXkgPSBQS2V5KCkKQEAgLTg3OCw4ICs4ODEsOCBAQAogCiAgICAgZGVmIHRlc3Rfc2lnbldpdGhQdWJsaWNLZXkoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlSZXEuc2lnbn0gcmFpc2VzIEx7VmFsdWVFcnJvcn0gd2hlbiBwYXNzIGEgTHtQS2V5fSB3aXRoIG5vCi0gICAgICAgIHByaXZhdGUgcGFydCBhcyB0aGUgc2lnbmluZyBrZXkuCisgICAgICAgIDpweTptZXRoOmBYNTA5UmVxLnNpZ25gIHJhaXNlcyA6cHk6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIHBhc3MgYQorICAgICAgICA6cHk6Y2xhc3M6YFBLZXlgIHdpdGggbm8gcHJpdmF0ZSBwYXJ0IGFzIHRoZSBzaWduaW5nIGtleS4KICAgICAgICAgIiIiCiAgICAgICAgIHJlcXVlc3QgPSBzZWxmLnNpZ25hYmxlKCkKICAgICAgICAga2V5ID0gUEtleSgpCkBAIC04OTEsNyArODk0LDcgQEAKIAogICAgIGRlZiB0ZXN0X3NpZ25XaXRoVW5rbm93bkRpZ2VzdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVJlcS5zaWdufSByYWlzZXMgTHtWYWx1ZUVycm9yfSB3aGVuIHBhc3NlZCBhIGRpZ2VzdCBuYW1lIHdoaWNoIGlzCisgICAgICAgIDpweTptZXRoOmBYNTA5UmVxLnNpZ25gIHJhaXNlcyA6cHk6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIHBhc3NlZCBhIGRpZ2VzdCBuYW1lIHdoaWNoIGlzCiAgICAgICAgIG5vdCBrbm93bi4KICAgICAgICAgIiIiCiAgICAgICAgIHJlcXVlc3QgPSBzZWxmLnNpZ25hYmxlKCkKQEAgLTkwMiw4ICs5MDUsOCBAQAogCiAgICAgZGVmIHRlc3Rfc2lnbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVJlcS5zaWdufSBzdWNjZWVkcyB3aGVuIHBhc3NlZCBhIHByaXZhdGUga2V5IG9iamVjdCBhbmQgYSB2YWxpZAotICAgICAgICBkaWdlc3QgZnVuY3Rpb24uICBDe1g1MDlSZXEudmVyaWZ5fSBjYW4gYmUgdXNlZCB0byBjaGVjayB0aGUgc2lnbmF0dXJlLgorICAgICAgICA6cHk6bWV0aDpgWDUwOVJlcS5zaWduYCBzdWNjZWVkcyB3aGVuIHBhc3NlZCBhIHByaXZhdGUga2V5IG9iamVjdCBhbmQgYSB2YWxpZAorICAgICAgICBkaWdlc3QgZnVuY3Rpb24uICA6cHk6bWV0aDpgWDUwOVJlcS52ZXJpZnlgIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHRoZSBzaWduYXR1cmUuCiAgICAgICAgICIiIgogICAgICAgICByZXF1ZXN0ID0gc2VsZi5zaWduYWJsZSgpCiAgICAgICAgIGtleSA9IFBLZXkoKQpAQCAtOTI0LDE4ICs5MjcsMTggQEAKIAogY2xhc3MgWDUwOVJlcVRlc3RzKFRlc3RDYXNlLCBfUEtleUludGVyYWN0aW9uVGVzdHNNaXhpbik6CiAgICAgIiIiCi0gICAgVGVzdHMgZm9yIEx7T3BlblNTTC5jcnlwdG8uWDUwOVJlcX0uCisgICAgVGVzdHMgZm9yIDpweTpjbGFzczpgT3BlblNTTC5jcnlwdG8uWDUwOVJlcWAuCiAgICAgIiIiCiAgICAgZGVmIHNpZ25hYmxlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgTHtYNTA5UmVxfS4KKyAgICAgICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgOnB5OmNsYXNzOmBYNTA5UmVxYC4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBYNTA5UmVxKCkKIAogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVJlcX0gYW5kIEx7WDUwOVJlcVR5cGV9IHJlZmVyIHRvIHRoZSBzYW1lIHR5cGUgb2JqZWN0IGFuZCBjYW4gYmUKKyAgICAgICAgOnB5Om9iajpgWDUwOVJlcWAgYW5kIDpweTpvYmo6YFg1MDlSZXFUeXBlYCByZWZlciB0byB0aGUgc2FtZSB0eXBlIG9iamVjdCBhbmQgY2FuIGJlCiAgICAgICAgIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlcyBvZiB0aGF0IHR5cGUuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydElkZW50aWNhbChYNTA5UmVxLCBYNTA5UmVxVHlwZSkKQEAgLTk0NCw3ICs5NDcsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0aW9uKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5UmVxfSB0YWtlcyBubyBhcmd1bWVudHMgYW5kIHJldHVybnMgYW4gTHtYNTA5UmVxVHlwZX0gaW5zdGFuY2UuCisgICAgICAgIDpweTpvYmo6YFg1MDlSZXFgIHRha2VzIG5vIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBhbiA6cHk6b2JqOmBYNTA5UmVxVHlwZWAgaW5zdGFuY2UuCiAgICAgICAgICIiIgogICAgICAgICByZXF1ZXN0ID0gWDUwOVJlcSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKQEAgLTk1NCw4ICs5NTcsOCBAQAogCiAgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVJlcVR5cGUuc2V0X3ZlcnNpb259IHNldHMgdGhlIFguNTA5IHZlcnNpb24gb2YgdGhlIGNlcnRpZmljYXRlCi0gICAgICAgIHJlcXVlc3QuICBMe1g1MDlSZXFUeXBlLmdldF92ZXJzaW9ufSByZXR1cm5zIHRoZSBYLjUwOSB2ZXJzaW9uIG9mCisgICAgICAgIDpweTpvYmo6YFg1MDlSZXFUeXBlLnNldF92ZXJzaW9uYCBzZXRzIHRoZSBYLjUwOSB2ZXJzaW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZQorICAgICAgICByZXF1ZXN0LiAgOnB5Om9iajpgWDUwOVJlcVR5cGUuZ2V0X3ZlcnNpb25gIHJldHVybnMgdGhlIFguNTA5IHZlcnNpb24gb2YKICAgICAgICAgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QuICBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgdmVyc2lvbiBpcyAwLgogICAgICAgICAiIiIKICAgICAgICAgcmVxdWVzdCA9IFg1MDlSZXEoKQpAQCAtOTY4LDkgKzk3MSw5IEBACiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlSZXFUeXBlLnNldF92ZXJzaW9ufSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIHRoZSB3cm9uZwotICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIHdpdGggYSBub24tQ3tpbnR9IGFyZ3VtZW50LgotICAgICAgICBMe1g1MDlSZXFUeXBlLmdldF92ZXJzaW9ufSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBYNTA5UmVxVHlwZS5zZXRfdmVyc2lvbmAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCisgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3Igd2l0aCBhIG5vbi06cHk6b2JqOmBpbnRgIGFyZ3VtZW50LgorICAgICAgICA6cHk6b2JqOmBYNTA5UmVxVHlwZS5nZXRfdmVyc2lvbmAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYW55CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIHJlcXVlc3QgPSBYNTA5UmVxKCkKQEAgLTk4Miw3ICs5ODUsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X3N1YmplY3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlSZXFUeXBlLmdldF9zdWJqZWN0fSByZXR1cm5zIGFuIEx7WDUwOU5hbWV9IGZvciB0aGUgc3ViamVjdCBvZgorICAgICAgICA6cHk6b2JqOmBYNTA5UmVxVHlwZS5nZXRfc3ViamVjdGAgcmV0dXJucyBhbiA6cHk6b2JqOmBYNTA5TmFtZWAgZm9yIHRoZSBzdWJqZWN0IG9mCiAgICAgICAgIHRoZSByZXF1ZXN0IGFuZCB3aGljaCBpcyB2YWxpZCBldmVuIGFmdGVyIHRoZSByZXF1ZXN0IG9iamVjdCBpcwogICAgICAgICBvdGhlcndpc2UgZGVhZC4KICAgICAgICAgIiIiCkBAIC0xMDAwLDcgKzEwMDMsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X3N1YmplY3Rfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVJlcVR5cGUuZ2V0X3N1YmplY3R9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYW55CisgICAgICAgIDpweTpvYmo6YFg1MDlSZXFUeXBlLmdldF9zdWJqZWN0YCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhbnkKICAgICAgICAgYXJndW1lbnRzLgogICAgICAgICAiIiIKICAgICAgICAgcmVxdWVzdCA9IFg1MDlSZXEoKQpAQCAtMTAwOSw3ICsxMDEyLDcgQEAKIAogICAgIGRlZiB0ZXN0X2FkZF9leHRlbnNpb25zKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5UmVxLmFkZF9leHRlbnNpb25zfSBhY2NlcHRzIGEgQ3tsaXN0fSBvZiBMe1g1MDlFeHRlbnNpb259CisgICAgICAgIDpweTpvYmo6YFg1MDlSZXEuYWRkX2V4dGVuc2lvbnNgIGFjY2VwdHMgYSA6cHk6b2JqOmBsaXN0YCBvZiA6cHk6b2JqOmBYNTA5RXh0ZW5zaW9uYAogICAgICAgICBpbnN0YW5jZXMgYW5kIGFkZHMgdGhlbSB0byB0aGUgWDUwOSByZXF1ZXN0LgogICAgICAgICAiIiIKICAgICAgICAgcmVxdWVzdCA9IFg1MDlSZXEoKQpAQCAtMTAyMCw5ICsxMDIzLDkgQEAKIAogICAgIGRlZiB0ZXN0X2FkZF9leHRlbnNpb25zX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlSZXEuYWRkX2V4dGVuc2lvbnN9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCi0gICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3Igd2l0aCBhIG5vbi1De2xpc3R9LiAgT3IgaXQgcmFpc2VzIEx7VmFsdWVFcnJvcn0KLSAgICAgICAgaWYgY2FsbGVkIHdpdGggYSBDe2xpc3R9IGNvbnRhaW5pbmcgb2JqZWN0cyBvdGhlciB0aGFuIEx7WDUwOUV4dGVuc2lvbn0KKyAgICAgICAgOnB5Om9iajpgWDUwOVJlcS5hZGRfZXh0ZW5zaW9uc2AgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCisgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3Igd2l0aCBhIG5vbi06cHk6b2JqOmBsaXN0YC4gIE9yIGl0IHJhaXNlcyA6cHk6b2JqOmBWYWx1ZUVycm9yYAorICAgICAgICBpZiBjYWxsZWQgd2l0aCBhIDpweTpvYmo6YGxpc3RgIGNvbnRhaW5pbmcgb2JqZWN0cyBvdGhlciB0aGFuIDpweTpvYmo6YFg1MDlFeHRlbnNpb25gCiAgICAgICAgIGluc3RhbmNlcy4KICAgICAgICAgIiIiCiAgICAgICAgIHJlcXVlc3QgPSBYNTA5UmVxKCkKQEAgLTEwMzUsNyArMTAzOCw3IEBACiAKIGNsYXNzIFg1MDlUZXN0cyhUZXN0Q2FzZSwgX1BLZXlJbnRlcmFjdGlvblRlc3RzTWl4aW4pOgogICAgICIiIgotICAgIFRlc3RzIGZvciBMe09wZW5TU0wuY3J5cHRvLlg1MDl9LgorICAgIFRlc3RzIGZvciA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5YNTA5YC4KICAgICAiIiIKICAgICBwZW1EYXRhID0gY2xlYXJ0ZXh0Q2VydGlmaWNhdGVQRU0gKyBjbGVhcnRleHRQcml2YXRlS2V5UEVNCiAKQEAgLTEwNjEsMTQgKzEwNjQsMTQgQEAKICAgICAiIiIKICAgICBkZWYgc2lnbmFibGUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBMe1g1MDl9LgorICAgICAgICBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyA6cHk6b2JqOmBYNTA5YC4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBYNTA5KCkKIAogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOX0gYW5kIEx7WDUwOVR5cGV9IHJlZmVyIHRvIHRoZSBzYW1lIHR5cGUgb2JqZWN0IGFuZCBjYW4gYmUgdXNlZAorICAgICAgICA6cHk6b2JqOmBYNTA5YCBhbmQgOnB5Om9iajpgWDUwOVR5cGVgIHJlZmVyIHRvIHRoZSBzYW1lIHR5cGUgb2JqZWN0IGFuZCBjYW4gYmUgdXNlZAogICAgICAgICB0byBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoYXQgdHlwZS4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0SWRlbnRpY2FsKFg1MDksIFg1MDlUeXBlKQpAQCAtMTA3Nyw3ICsxMDgwLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdGlvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOX0gdGFrZXMgbm8gYXJndW1lbnRzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIEx7WDUwOVR5cGV9LgorICAgICAgICA6cHk6b2JqOmBYNTA5YCB0YWtlcyBubyBhcmd1bWVudHMgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgOnB5Om9iajpgWDUwOVR5cGVgLgogICAgICAgICAiIiIKICAgICAgICAgY2VydGlmaWNhdGUgPSBYNTA5KCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKApAQCAtMTA5Myw3ICsxMDk2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF92ZXJzaW9uX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuZ2V0X3ZlcnNpb259IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgaW52b2tlZCB3aXRoIGFueSBhcmd1bWVudHMuCisgICAgICAgIDpweTpvYmo6YFg1MDkuZ2V0X3ZlcnNpb25gIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGludm9rZWQgd2l0aCBhbnkgYXJndW1lbnRzLgogICAgICAgICAiIiIKICAgICAgICAgY2VydCA9IFg1MDkoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNlcnQuZ2V0X3ZlcnNpb24sIE5vbmUpCkBAIC0xMTAxLDggKzExMDQsOCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X3ZlcnNpb25fd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOS5zZXRfdmVyc2lvbn0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBpbnZva2VkIHdpdGggdGhlIHdyb25nIG51bWJlcgotICAgICAgICBvZiBhcmd1bWVudHMgb3IgYW4gYXJndW1lbnQgbm90IG9mIHR5cGUgQ3tpbnR9LgorICAgICAgICA6cHk6b2JqOmBYNTA5LnNldF92ZXJzaW9uYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBpbnZva2VkIHdpdGggdGhlIHdyb25nIG51bWJlcgorICAgICAgICBvZiBhcmd1bWVudHMgb3IgYW4gYXJndW1lbnQgbm90IG9mIHR5cGUgOnB5Om9iajpgaW50YC4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjZXJ0LnNldF92ZXJzaW9uKQpAQCAtMTExMiw4ICsxMTE1LDggQEAKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuc2V0X3ZlcnNpb259IHNldHMgdGhlIGNlcnRpZmljYXRlIHZlcnNpb24gbnVtYmVyLgotICAgICAgICBMe1g1MDkuZ2V0X3ZlcnNpb259IHJldHJpZXZlcyBpdC4KKyAgICAgICAgOnB5Om9iajpgWDUwOS5zZXRfdmVyc2lvbmAgc2V0cyB0aGUgY2VydGlmaWNhdGUgdmVyc2lvbiBudW1iZXIuCisgICAgICAgIDpweTpvYmo6YFg1MDkuZ2V0X3ZlcnNpb25gIHJldHJpZXZlcyBpdC4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKICAgICAgICAgY2VydC5zZXRfdmVyc2lvbigxMjM0KQpAQCAtMTEyMiw3ICsxMTI1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9zZXJpYWxfbnVtYmVyX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuZ2V0X3NlcmlhbF9udW1iZXJ9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgaW52b2tlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBYNTA5LmdldF9zZXJpYWxfbnVtYmVyYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBpbnZva2VkIHdpdGggYW55CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKQEAgLTExMzEsOCArMTEzNCw4IEBACiAKICAgICBkZWYgdGVzdF9zZXJpYWxfbnVtYmVyKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNlcmlhbCBudW1iZXIgb2YgYW4gTHtYNTA5VHlwZX0gY2FuIGJlIHJldHJpZXZlZCBhbmQgbW9kaWZpZWQgd2l0aAotICAgICAgICBMe1g1MDlUeXBlLmdldF9zZXJpYWxfbnVtYmVyfSBhbmQgTHtYNTA5VHlwZS5zZXRfc2VyaWFsX251bWJlcn0uCisgICAgICAgIFRoZSBzZXJpYWwgbnVtYmVyIG9mIGFuIDpweTpvYmo6YFg1MDlUeXBlYCBjYW4gYmUgcmV0cmlldmVkIGFuZCBtb2RpZmllZCB3aXRoCisgICAgICAgIDpweTpvYmo6YFg1MDlUeXBlLmdldF9zZXJpYWxfbnVtYmVyYCBhbmQgOnB5Om9iajpgWDUwOVR5cGUuc2V0X3NlcmlhbF9udW1iZXJgLgogICAgICAgICAiIiIKICAgICAgICAgY2VydGlmaWNhdGUgPSBYNTA5KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjZXJ0aWZpY2F0ZS5zZXRfc2VyaWFsX251bWJlcikKQEAgLTExNTIsNyArMTE1NSw3IEBACiAKICAgICBkZWYgX3NldEJvdW5kVGVzdChzZWxmLCB3aGljaCk6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlUeXBlLnNldF9ub3RCZWZvcmV9IHRha2VzIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgYW4gQVNOMQorICAgICAgICA6cHk6b2JqOmBYNTA5VHlwZS5zZXRfbm90QmVmb3JlYCB0YWtlcyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0IG9mIGFuIEFTTjEKICAgICAgICAgR0VORVJBTElaRURUSU1FIGFuZCBzZXRzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNlcnRpZmljYXRlJ3MgdmFsaWRpdHkKICAgICAgICAgcGVyaW9kIHRvIGl0LgogICAgICAgICAiIiIKQEAgLTExOTEsNyArMTE5NCw3IEBACiAKICAgICBkZWYgdGVzdF9zZXRfbm90QmVmb3JlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5VHlwZS5zZXRfbm90QmVmb3JlfSB0YWtlcyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0IG9mIGFuIEFTTjEKKyAgICAgICAgOnB5Om9iajpgWDUwOVR5cGUuc2V0X25vdEJlZm9yZWAgdGFrZXMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiBhbiBBU04xCiAgICAgICAgIEdFTkVSQUxJWkVEVElNRSBhbmQgc2V0cyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjZXJ0aWZpY2F0ZSdzIHZhbGlkaXR5CiAgICAgICAgIHBlcmlvZCB0byBpdC4KICAgICAgICAgIiIiCkBAIC0xMjAwLDcgKzEyMDMsNyBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X25vdEFmdGVyKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5VHlwZS5zZXRfbm90QWZ0ZXJ9IHRha2VzIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgYW4gQVNOMQorICAgICAgICA6cHk6b2JqOmBYNTA5VHlwZS5zZXRfbm90QWZ0ZXJgIHRha2VzIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgYW4gQVNOMQogICAgICAgICBHRU5FUkFMSVpFRFRJTUUgYW5kIHNldHMgdGhlIGVuZCBvZiB0aGUgY2VydGlmaWNhdGUncyB2YWxpZGl0eSBwZXJpb2QKICAgICAgICAgdG8gaXQuCiAgICAgICAgICIiIgpAQCAtMTIwOSw3ICsxMjEyLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9ub3RCZWZvcmUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlUeXBlLmdldF9ub3RCZWZvcmV9IHJldHVybnMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiBhbiBBU04xCisgICAgICAgIDpweTpvYmo6YFg1MDlUeXBlLmdldF9ub3RCZWZvcmVgIHJldHVybnMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiBhbiBBU04xCiAgICAgICAgIEdFTkVSQUxJWkVEVElNRSBldmVuIGZvciBjZXJ0aWZpY2F0ZXMgd2hpY2ggc3RvcmUgaXQgYXMgVVRDVElNRQogICAgICAgICBpbnRlcm5hbGx5LgogICAgICAgICAiIiIKQEAgLTEyMTksNyArMTIyMiw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfbm90QWZ0ZXIoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlUeXBlLmdldF9ub3RBZnRlcn0gcmV0dXJucyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0IG9mIGFuIEFTTjEKKyAgICAgICAgOnB5Om9iajpgWDUwOVR5cGUuZ2V0X25vdEFmdGVyYCByZXR1cm5zIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgYW4gQVNOMQogICAgICAgICBHRU5FUkFMSVpFRFRJTUUgZXZlbiBmb3IgY2VydGlmaWNhdGVzIHdoaWNoIHN0b3JlIGl0IGFzIFVUQ1RJTUUKICAgICAgICAgaW50ZXJuYWxseS4KICAgICAgICAgIiIiCkBAIC0xMjI5LDggKzEyMzIsOCBAQAogCiAgICAgZGVmIHRlc3RfZ210aW1lX2Fkal9ub3RCZWZvcmVfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVR5cGUuZ210aW1lX2Fkal9ub3RCZWZvcmV9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggdGhlCi0gICAgICAgIHdyb25nIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYSBub24tQ3tpbnR9IGFyZ3VtZW50LgorICAgICAgICA6cHk6b2JqOmBYNTA5VHlwZS5nbXRpbWVfYWRqX25vdEJlZm9yZWAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlCisgICAgICAgIHdyb25nIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYSBub24tOnB5Om9iajpgaW50YCBhcmd1bWVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjZXJ0LmdtdGltZV9hZGpfbm90QmVmb3JlKQpAQCAtMTI0MCw3ICsxMjQzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dtdGltZV9hZGpfbm90QmVmb3JlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5VHlwZS5nbXRpbWVfYWRqX25vdEJlZm9yZX0gY2hhbmdlcyB0aGUgbm90LWJlZm9yZSB0aW1lc3RhbXAgdG8gYmUKKyAgICAgICAgOnB5Om9iajpgWDUwOVR5cGUuZ210aW1lX2Fkal9ub3RCZWZvcmVgIGNoYW5nZXMgdGhlIG5vdC1iZWZvcmUgdGltZXN0YW1wIHRvIGJlCiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUgcGx1cyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgcGFzc2VkIGluLgogICAgICAgICAiIiIKICAgICAgICAgY2VydCA9IGxvYWRfY2VydGlmaWNhdGUoRklMRVRZUEVfUEVNLCBzZWxmLnBlbURhdGEpCkBAIC0xMjUxLDggKzEyNTQsOCBAQAogCiAgICAgZGVmIHRlc3RfZ210aW1lX2Fkal9ub3RBZnRlcl93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5VHlwZS5nbXRpbWVfYWRqX25vdEFmdGVyfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIHRoZQotICAgICAgICB3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIG9yIGEgbm9uLUN7aW50fSBhcmd1bWVudC4KKyAgICAgICAgOnB5Om9iajpgWDUwOVR5cGUuZ210aW1lX2Fkal9ub3RBZnRlcmAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlCisgICAgICAgIHdyb25nIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYSBub24tOnB5Om9iajpgaW50YCBhcmd1bWVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjZXJ0LmdtdGltZV9hZGpfbm90QWZ0ZXIpCkBAIC0xMjYyLDcgKzEyNjUsNyBAQAogCiAgICAgZGVmIHRlc3RfZ210aW1lX2Fkal9ub3RBZnRlcihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVR5cGUuZ210aW1lX2Fkal9ub3RBZnRlcn0gY2hhbmdlcyB0aGUgbm90LWFmdGVyIHRpbWVzdGFtcCB0byBiZQorICAgICAgICA6cHk6b2JqOmBYNTA5VHlwZS5nbXRpbWVfYWRqX25vdEFmdGVyYCBjaGFuZ2VzIHRoZSBub3QtYWZ0ZXIgdGltZXN0YW1wIHRvIGJlCiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUgcGx1cyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgcGFzc2VkIGluLgogICAgICAgICAiIiIKICAgICAgICAgY2VydCA9IGxvYWRfY2VydGlmaWNhdGUoRklMRVRZUEVfUEVNLCBzZWxmLnBlbURhdGEpCkBAIC0xMjczLDcgKzEyNzYsNyBAQAogCiAgICAgZGVmIHRlc3RfaGFzX2V4cGlyZWRfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVR5cGUuaGFzX2V4cGlyZWR9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYW55CisgICAgICAgIDpweTpvYmo6YFg1MDlUeXBlLmhhc19leHBpcmVkYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhbnkKICAgICAgICAgYXJndW1lbnRzLgogICAgICAgICAiIiIKICAgICAgICAgY2VydCA9IFg1MDkoKQpAQCAtMTI4Miw3ICsxMjg1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2hhc19leHBpcmVkKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5VHlwZS5oYXNfZXhwaXJlZH0gcmV0dXJucyBDe1RydWV9IGlmIHRoZSBjZXJ0aWZpY2F0ZSdzIG5vdC1hZnRlcgorICAgICAgICA6cHk6b2JqOmBYNTA5VHlwZS5oYXNfZXhwaXJlZGAgcmV0dXJucyA6cHk6b2JqOmBUcnVlYCBpZiB0aGUgY2VydGlmaWNhdGUncyBub3QtYWZ0ZXIKICAgICAgICAgdGltZSBpcyBpbiB0aGUgcGFzdC4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKQEAgLTEyOTIsNyArMTI5NSw3IEBACiAKICAgICBkZWYgdGVzdF9oYXNfbm90X2V4cGlyZWQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlUeXBlLmhhc19leHBpcmVkfSByZXR1cm5zIEN7RmFsc2V9IGlmIHRoZSBjZXJ0aWZpY2F0ZSdzIG5vdC1hZnRlcgorICAgICAgICA6cHk6b2JqOmBYNTA5VHlwZS5oYXNfZXhwaXJlZGAgcmV0dXJucyA6cHk6b2JqOmBGYWxzZWAgaWYgdGhlIGNlcnRpZmljYXRlJ3Mgbm90LWFmdGVyCiAgICAgICAgIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKQEAgLTEzMDIsNyArMTMwNSw3IEBACiAKICAgICBkZWYgdGVzdF9kaWdlc3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuZGlnZXN0fSByZXR1cm5zIGEgc3RyaW5nIGdpdmluZyAiOiItc2VwYXJhdGVkIGhleC1lbmNvZGVkIHdvcmRzCisgICAgICAgIDpweTpvYmo6YFg1MDkuZGlnZXN0YCByZXR1cm5zIGEgc3RyaW5nIGdpdmluZyAiOiItc2VwYXJhdGVkIGhleC1lbmNvZGVkIHdvcmRzCiAgICAgICAgIG9mIHRoZSBkaWdlc3Qgb2YgdGhlIGNlcnRpZmljYXRlLgogICAgICAgICAiIiIKICAgICAgICAgY2VydCA9IFg1MDkoKQpAQCAtMTMyNyw3ICsxMzMwLDcgQEAKIAogICAgIGRlZiB0ZXN0X2V4dGVuc2lvbl9jb3VudChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOS5nZXRfZXh0ZW5zaW9uX2NvdW50fSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZXh0ZW5zaW9ucyB0aGF0IGFyZQorICAgICAgICA6cHk6b2JqOmBYNTA5LmdldF9leHRlbnNpb25fY291bnRgIHJldHVybnMgdGhlIG51bWJlciBvZiBleHRlbnNpb25zIHRoYXQgYXJlCiAgICAgICAgIHByZXNlbnQgaW4gdGhlIGNlcnRpZmljYXRlLgogICAgICAgICAiIiIKICAgICAgICAgcGtleSA9IGxvYWRfcHJpdmF0ZWtleShGSUxFVFlQRV9QRU0sIGNsaWVudF9rZXlfcGVtKQpAQCAtMTM1MSw3ICsxMzU0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9leHRlbnNpb24oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuZ2V0X2V4dGVuc2lvbn0gdGFrZXMgYW4gaW50ZWdlciBhbmQgcmV0dXJucyBhbiBMe1g1MDlFeHRlbnNpb259CisgICAgICAgIDpweTpvYmo6YFg1MDkuZ2V0X2V4dGVuc2lvbmAgdGFrZXMgYW4gaW50ZWdlciBhbmQgcmV0dXJucyBhbiA6cHk6b2JqOmBYNTA5RXh0ZW5zaW9uYAogICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBleHRlbnNpb24gYXQgdGhhdCBpbmRleC4KICAgICAgICAgIiIiCiAgICAgICAgIHBrZXkgPSBsb2FkX3ByaXZhdGVrZXkoRklMRVRZUEVfUEVNLCBjbGllbnRfa2V5X3BlbSkKQEAgLTEzODQsNyArMTM4Nyw3IEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2RpZ2VzdF9hbGdvcml0aG0oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuZGlnZXN0fSByYWlzZXMgTHtWYWx1ZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbiB1bnJlY29nbml6ZWQgaGFzaAorICAgICAgICA6cHk6b2JqOmBYNTA5LmRpZ2VzdGAgcmFpc2VzIDpweTpvYmo6YFZhbHVlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFuIHVucmVjb2duaXplZCBoYXNoCiAgICAgICAgIGFsZ29yaXRobS4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKQEAgLTEzOTMsNyArMTM5Niw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfc3ViamVjdF93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5LmdldF9zdWJqZWN0fSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCisgICAgICAgIDpweTpvYmo6YFg1MDkuZ2V0X3N1YmplY3RgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjZXJ0ID0gWDUwOSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2VydC5nZXRfc3ViamVjdCwgTm9uZSkKQEAgLTE0MDEsNyArMTQwNCw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfc3ViamVjdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOS5nZXRfc3ViamVjdH0gcmV0dXJucyBhbiBMe1g1MDlOYW1lfSBpbnN0YW5jZS4KKyAgICAgICAgOnB5Om9iajpgWDUwOS5nZXRfc3ViamVjdGAgcmV0dXJucyBhbiA6cHk6b2JqOmBYNTA5TmFtZWAgaW5zdGFuY2UuCiAgICAgICAgICIiIgogICAgICAgICBjZXJ0ID0gbG9hZF9jZXJ0aWZpY2F0ZShGSUxFVFlQRV9QRU0sIHNlbGYucGVtRGF0YSkKICAgICAgICAgc3ViaiA9IGNlcnQuZ2V0X3N1YmplY3QoKQpAQCAtMTQxNCw4ICsxNDE3LDggQEAKIAogICAgIGRlZiB0ZXN0X3NldF9zdWJqZWN0X3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuc2V0X3N1YmplY3R9IHJhaXNlcyBhIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKLSAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciBhbiBhcmd1bWVudCBub3Qgb2YgdHlwZSBMe1g1MDlOYW1lfS4KKyAgICAgICAgOnB5Om9iajpgWDUwOS5zZXRfc3ViamVjdGAgcmFpc2VzIGEgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKKyAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciBhbiBhcmd1bWVudCBub3Qgb2YgdHlwZSA6cHk6b2JqOmBYNTA5TmFtZWAuCiAgICAgICAgICIiIgogICAgICAgICBjZXJ0ID0gWDUwOSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2VydC5zZXRfc3ViamVjdCkKQEAgLTE0MjUsNyArMTQyOCw3IEBACiAKICAgICBkZWYgdGVzdF9zZXRfc3ViamVjdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOS5zZXRfc3ViamVjdH0gY2hhbmdlcyB0aGUgc3ViamVjdCBvZiB0aGUgY2VydGlmaWNhdGUgdG8gdGhlIG9uZQorICAgICAgICA6cHk6b2JqOmBYNTA5LnNldF9zdWJqZWN0YCBjaGFuZ2VzIHRoZSBzdWJqZWN0IG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byB0aGUgb25lCiAgICAgICAgIHBhc3NlZCBpbi4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKQEAgLTE0NDAsNyArMTQ0Myw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfaXNzdWVyX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuZ2V0X2lzc3Vlcn0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzLgorICAgICAgICA6cHk6b2JqOmBYNTA5LmdldF9pc3N1ZXJgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjZXJ0ID0gWDUwOSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2VydC5nZXRfaXNzdWVyLCBOb25lKQpAQCAtMTQ0OCw3ICsxNDUxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9pc3N1ZXIoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuZ2V0X2lzc3Vlcn0gcmV0dXJucyBhbiBMe1g1MDlOYW1lfSBpbnN0YW5jZS4KKyAgICAgICAgOnB5Om9iajpgWDUwOS5nZXRfaXNzdWVyYCByZXR1cm5zIGFuIDpweTpvYmo6YFg1MDlOYW1lYCBpbnN0YW5jZS4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBsb2FkX2NlcnRpZmljYXRlKEZJTEVUWVBFX1BFTSwgc2VsZi5wZW1EYXRhKQogICAgICAgICBzdWJqID0gY2VydC5nZXRfaXNzdWVyKCkKQEAgLTE0NjIsOCArMTQ2NSw4IEBACiAKICAgICBkZWYgdGVzdF9zZXRfaXNzdWVyX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDkuc2V0X2lzc3Vlcn0gcmFpc2VzIGEgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIHRoZSB3cm9uZwotICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIGFuIGFyZ3VtZW50IG5vdCBvZiB0eXBlIEx7WDUwOU5hbWV9LgorICAgICAgICA6cHk6b2JqOmBYNTA5LnNldF9pc3N1ZXJgIHJhaXNlcyBhIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCisgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYW4gYXJndW1lbnQgbm90IG9mIHR5cGUgOnB5Om9iajpgWDUwOU5hbWVgLgogICAgICAgICAiIiIKICAgICAgICAgY2VydCA9IFg1MDkoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNlcnQuc2V0X2lzc3VlcikKQEAgLTE0NzMsNyArMTQ3Niw3IEBACiAKICAgICBkZWYgdGVzdF9zZXRfaXNzdWVyKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtYNTA5LnNldF9pc3N1ZXJ9IGNoYW5nZXMgdGhlIGlzc3VlciBvZiB0aGUgY2VydGlmaWNhdGUgdG8gdGhlIG9uZQorICAgICAgICA6cHk6b2JqOmBYNTA5LnNldF9pc3N1ZXJgIGNoYW5nZXMgdGhlIGlzc3VlciBvZiB0aGUgY2VydGlmaWNhdGUgdG8gdGhlIG9uZQogICAgICAgICBwYXNzZWQgaW4uCiAgICAgICAgICIiIgogICAgICAgICBjZXJ0ID0gWDUwOSgpCkBAIC0xNDg4LDggKzE0OTEsOCBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X3B1YmtleV91bmluaXRpYWxpemVkKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgV2hlbiBjYWxsZWQgb24gYSBjZXJ0aWZpY2F0ZSB3aXRoIG5vIHB1YmxpYyBrZXksIEx7WDUwOS5nZXRfcHVia2V5fQotICAgICAgICByYWlzZXMgTHtPcGVuU1NMLmNyeXB0by5FcnJvcn0uCisgICAgICAgIFdoZW4gY2FsbGVkIG9uIGEgY2VydGlmaWNhdGUgd2l0aCBubyBwdWJsaWMga2V5LCA6cHk6b2JqOmBYNTA5LmdldF9wdWJrZXlgCisgICAgICAgIHJhaXNlcyA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5FcnJvcmAuCiAgICAgICAgICIiIgogICAgICAgICBjZXJ0ID0gWDUwOSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVycm9yLCBjZXJ0LmdldF9wdWJrZXkpCkBAIC0xNDk3LDcgKzE1MDAsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3ViamVjdF9uYW1lX2hhc2hfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOS5zdWJqZWN0X25hbWVfaGFzaH0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbnkKKyAgICAgICAgOnB5Om9iajpgWDUwOS5zdWJqZWN0X25hbWVfaGFzaGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYW55CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBYNTA5KCkKQEAgLTE1MDYsNyArMTUwOSw3IEBACiAKICAgICBkZWYgdGVzdF9zdWJqZWN0X25hbWVfaGFzaChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOS5zdWJqZWN0X25hbWVfaGFzaH0gcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgY2VydGlmaWNhdGUncyBzdWJqZWN0CisgICAgICAgIDpweTpvYmo6YFg1MDkuc3ViamVjdF9uYW1lX2hhc2hgIHJldHVybnMgdGhlIGhhc2ggb2YgdGhlIGNlcnRpZmljYXRlJ3Mgc3ViamVjdAogICAgICAgICBuYW1lLgogICAgICAgICAiIiIKICAgICAgICAgY2VydCA9IGxvYWRfY2VydGlmaWNhdGUoRklMRVRZUEVfUEVNLCBzZWxmLnBlbURhdGEpCkBAIC0xNTE5LDcgKzE1MjIsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X3NpZ25hdHVyZV9hbGdvcml0aG0oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1g1MDlUeXBlLmdldF9zaWduYXR1cmVfYWxnb3JpdGhtfSByZXR1cm5zIGEgc3RyaW5nIHdoaWNoIG1lYW5zCisgICAgICAgIDpweTpvYmo6YFg1MDlUeXBlLmdldF9zaWduYXR1cmVfYWxnb3JpdGhtYCByZXR1cm5zIGEgc3RyaW5nIHdoaWNoIG1lYW5zCiAgICAgICAgIHRoZSBhbGdvcml0aG0gdXNlZCB0byBzaWduIHRoZSBjZXJ0aWZpY2F0ZS4KICAgICAgICAgIiIiCiAgICAgICAgIGNlcnQgPSBsb2FkX2NlcnRpZmljYXRlKEZJTEVUWVBFX1BFTSwgc2VsZi5wZW1EYXRhKQpAQCAtMTUyOSw3ICsxNTMyLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF91bmRlZmluZWRfc2lnbmF0dXJlX2FsZ29yaXRobShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7WDUwOVR5cGUuZ2V0X3NpZ25hdHVyZV9hbGdvcml0aG19IHJhaXNlcyBMe1ZhbHVlRXJyb3J9IGlmIHRoZQorICAgICAgICA6cHk6b2JqOmBYNTA5VHlwZS5nZXRfc2lnbmF0dXJlX2FsZ29yaXRobWAgcmFpc2VzIDpweTpvYmo6YFZhbHVlRXJyb3JgIGlmIHRoZQogICAgICAgICBzaWduYXR1cmUgYWxnb3JpdGhtIGlzIHVuZGVmaW5lZCBvciB1bmtub3duLgogICAgICAgICAiIiIKICAgICAgICAgIyBUaGlzIGNlcnRpZmljYXRlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGluZGljYXRlIGEgYm9ndXMgT0lEIGluIHRoZQpAQCAtMTU2MiwxMyArMTU2NSwxMyBAQAogCiBjbGFzcyBQS0NTMTJUZXN0cyhUZXN0Q2FzZSk6CiAgICAgIiIiCi0gICAgVGVzdCBmb3IgTHtPcGVuU1NMLmNyeXB0by5QS0NTMTJ9IGFuZCBMe09wZW5TU0wuY3J5cHRvLmxvYWRfcGtjczEyfS4KKyAgICBUZXN0IGZvciA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5QS0NTMTJgIGFuZCA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5sb2FkX3BrY3MxMmAuCiAgICAgIiIiCiAgICAgcGVtRGF0YSA9IGNsZWFydGV4dENlcnRpZmljYXRlUEVNICsgY2xlYXJ0ZXh0UHJpdmF0ZUtleVBFTQogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzEyVHlwZX0gaXMgYSB0eXBlIG9iamVjdC4KKyAgICAgICAgOnB5Om9iajpgUEtDUzEyVHlwZWAgaXMgYSB0eXBlIG9iamVjdC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0SWRlbnRpY2FsKFBLQ1MxMiwgUEtDUzEyVHlwZSkKICAgICAgICAgc2VsZi5hc3NlcnRDb25zaXN0ZW50VHlwZShQS0NTMTIsICdQS0NTMTInKQpAQCAtMTU3Niw3ICsxNTc5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2NvbnN0cnVjdGlvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzEyfSByZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEx7UEtDUzEyfSB3aXRoIG5vIGNlcnRpZmljYXRlLAorICAgICAgICA6cHk6b2JqOmBQS0NTMTJgIHJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgOnB5Om9iajpgUEtDUzEyYCB3aXRoIG5vIGNlcnRpZmljYXRlLAogICAgICAgICBwcml2YXRlIGtleSwgQ0EgY2VydGlmaWNhdGVzLCBvciBmcmllbmRseSBuYW1lLgogICAgICAgICAiIiIKICAgICAgICAgcDEyID0gUEtDUzEyKCkKQEAgLTE1ODgsOCArMTU5MSw4IEBACiAKICAgICBkZWYgdGVzdF90eXBlX2Vycm9ycyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRoZSBMe1BLQ1MxMn0gc2V0dGVyIGZ1bmN0aW9ucyAoQ3tzZXRfY2VydGlmaWNhdGV9LCBDe3NldF9wcml2YXRla2V5fSwKLSAgICAgICAgQ3tzZXRfY2FfY2VydGlmaWNhdGVzfSwgYW5kIEN7c2V0X2ZyaWVuZGx5bmFtZX0pIHJhaXNlIEx7VHlwZUVycm9yfQorICAgICAgICBUaGUgOnB5Om9iajpgUEtDUzEyYCBzZXR0ZXIgZnVuY3Rpb25zICg6cHk6b2JqOmBzZXRfY2VydGlmaWNhdGVgLCA6cHk6b2JqOmBzZXRfcHJpdmF0ZWtleWAsCisgICAgICAgIDpweTpvYmo6YHNldF9jYV9jZXJ0aWZpY2F0ZXNgLCBhbmQgOnB5Om9iajpgc2V0X2ZyaWVuZGx5bmFtZWApIHJhaXNlIDpweTpvYmo6YFR5cGVFcnJvcmAKICAgICAgICAgd2hlbiBwYXNzZWQgb2JqZWN0cyBvZiB0eXBlcyBvdGhlciB0aGFuIHRob3NlIGV4cGVjdGVkLgogICAgICAgICAiIiIKICAgICAgICAgcDEyID0gUEtDUzEyKCkKQEAgLTE2MDksOCArMTYxMiw4IEBACiAKICAgICBkZWYgdGVzdF9rZXlfb25seShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEEgTHtQS0NTMTJ9IHdpdGggb25seSBhIHByaXZhdGUga2V5IGNhbiBiZSBleHBvcnRlZCB1c2luZwotICAgICAgICBMe1BLQ1MxMi5leHBvcnR9IGFuZCBsb2FkZWQgYWdhaW4gdXNpbmcgTHtsb2FkX3BrY3MxMn0uCisgICAgICAgIEEgOnB5Om9iajpgUEtDUzEyYCB3aXRoIG9ubHkgYSBwcml2YXRlIGtleSBjYW4gYmUgZXhwb3J0ZWQgdXNpbmcKKyAgICAgICAgOnB5Om9iajpgUEtDUzEyLmV4cG9ydGAgYW5kIGxvYWRlZCBhZ2FpbiB1c2luZyA6cHk6b2JqOmBsb2FkX3BrY3MxMmAuCiAgICAgICAgICIiIgogICAgICAgICBwYXNzd2QgPSAnYmxhaCcKICAgICAgICAgcDEyID0gUEtDUzEyKCkKQEAgLTE2MzYsOCArMTYzOSw4IEBACiAKICAgICBkZWYgdGVzdF9jZXJ0X29ubHkoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBBIEx7UEtDUzEyfSB3aXRoIG9ubHkgYSBjZXJ0aWZpY2F0ZSBjYW4gYmUgZXhwb3J0ZWQgdXNpbmcKLSAgICAgICAgTHtQS0NTMTIuZXhwb3J0fSBhbmQgbG9hZGVkIGFnYWluIHVzaW5nIEx7bG9hZF9wa2NzMTJ9LgorICAgICAgICBBIDpweTpvYmo6YFBLQ1MxMmAgd2l0aCBvbmx5IGEgY2VydGlmaWNhdGUgY2FuIGJlIGV4cG9ydGVkIHVzaW5nCisgICAgICAgIDpweTpvYmo6YFBLQ1MxMi5leHBvcnRgIGFuZCBsb2FkZWQgYWdhaW4gdXNpbmcgOnB5Om9iajpgbG9hZF9wa2NzMTJgLgogICAgICAgICAiIiIKICAgICAgICAgcGFzc3dkID0gJ2JsYWgnCiAgICAgICAgIHAxMiA9IFBLQ1MxMigpCkBAIC0xNzE2LDcgKzE3MTksNyBAQAogICAgIGRlZiB0ZXN0X2xvYWRfcGtjczEyKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgQSBQS0NTMTIgc3RyaW5nIGdlbmVyYXRlZCB1c2luZyB0aGUgb3BlbnNzbCBjb21tYW5kIGxpbmUgY2FuIGJlIGxvYWRlZAotICAgICAgICB3aXRoIEx7bG9hZF9wa2NzMTJ9IGFuZCBpdHMgY29tcG9uZW50cyBleHRyYWN0ZWQgYW5kIGV4YW1pbmVkLgorICAgICAgICB3aXRoIDpweTpvYmo6YGxvYWRfcGtjczEyYCBhbmQgaXRzIGNvbXBvbmVudHMgZXh0cmFjdGVkIGFuZCBleGFtaW5lZC4KICAgICAgICAgIiIiCiAgICAgICAgIHBhc3N3ZCA9ICd3aGF0ZXZlcicKICAgICAgICAgcGVtID0gY2xpZW50X2tleV9wZW0gKyBjbGllbnRfY2VydF9wZW0KQEAgLTE3MzQsNyArMTczNyw3IEBACiAKICAgICBkZWYgdGVzdF9sb2FkX3BrY3MxMl9nYXJiYWdlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtsb2FkX3BrY3MxMn0gcmFpc2VzIEx7T3BlblNTTC5jcnlwdG8uRXJyb3J9IHdoZW4gcGFzc2VkIGEgc3RyaW5nCisgICAgICAgIDpweTpvYmo6YGxvYWRfcGtjczEyYCByYWlzZXMgOnB5Om9iajpgT3BlblNTTC5jcnlwdG8uRXJyb3JgIHdoZW4gcGFzc2VkIGEgc3RyaW5nCiAgICAgICAgIHdoaWNoIGlzIG5vdCBhIFBLQ1MxMiBkdW1wLgogICAgICAgICAiIiIKICAgICAgICAgcGFzc3dkID0gJ3doYXRldmVyJwpAQCAtMTc0NSw5ICsxNzQ4LDkgQEAKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1BLQ1MxMi5zZXRfY2VydGlmaWNhdGV9IHJlcGxhY2VzIHRoZSBjZXJ0aWZpY2F0ZSBpbiBhIFBLQ1MxMiBjbHVzdGVyLgotICAgICAgICBMe1BLQ1MxMi5zZXRfcHJpdmF0ZWtleX0gcmVwbGFjZXMgdGhlIHByaXZhdGUga2V5LgotICAgICAgICBMe1BLQ1MxMi5zZXRfY2FfY2VydGlmaWNhdGVzfSByZXBsYWNlcyB0aGUgQ0EgY2VydGlmaWNhdGVzLgorICAgICAgICA6cHk6b2JqOmBQS0NTMTIuc2V0X2NlcnRpZmljYXRlYCByZXBsYWNlcyB0aGUgY2VydGlmaWNhdGUgaW4gYSBQS0NTMTIgY2x1c3Rlci4KKyAgICAgICAgOnB5Om9iajpgUEtDUzEyLnNldF9wcml2YXRla2V5YCByZXBsYWNlcyB0aGUgcHJpdmF0ZSBrZXkuCisgICAgICAgIDpweTpvYmo6YFBLQ1MxMi5zZXRfY2FfY2VydGlmaWNhdGVzYCByZXBsYWNlcyB0aGUgQ0EgY2VydGlmaWNhdGVzLgogICAgICAgICAiIiIKICAgICAgICAgcDEyID0gc2VsZi5nZW5fcGtjczEyKGNsaWVudF9jZXJ0X3BlbSwgY2xpZW50X2tleV9wZW0sIHJvb3RfY2VydF9wZW0pCiAgICAgICAgIHAxMi5zZXRfY2VydGlmaWNhdGUobG9hZF9jZXJ0aWZpY2F0ZShGSUxFVFlQRV9QRU0sIHNlcnZlcl9jZXJ0X3BlbSkpCkBAIC0xNzY1LDkgKzE3NjgsOSBAQAogCiAgICAgZGVmIHRlc3RfZnJpZW5kbHlfbmFtZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRoZSBJe2ZyaWVuZGx5TmFtZX0gb2YgYSBQS0NTMTIgY2FuIGJlIHNldCBhbmQgcmV0cmlldmVkIHZpYQotICAgICAgICBMe1BLQ1MxMi5nZXRfZnJpZW5kbHluYW1lfSBhbmQgTHtQS0NTMTJfc2V0X2ZyaWVuZGx5bmFtZX0sIGFuZCBhCi0gICAgICAgIEx7UEtDUzEyfSB3aXRoIGEgZnJpZW5kbHkgbmFtZSBzZXQgY2FuIGJlIGR1bXBlZCB3aXRoIEx7UEtDUzEyLmV4cG9ydH0uCisgICAgICAgIFRoZSAqZnJpZW5kbHlOYW1lKiBvZiBhIFBLQ1MxMiBjYW4gYmUgc2V0IGFuZCByZXRyaWV2ZWQgdmlhCisgICAgICAgIDpweTpvYmo6YFBLQ1MxMi5nZXRfZnJpZW5kbHluYW1lYCBhbmQgOnB5Om9iajpgUEtDUzEyX3NldF9mcmllbmRseW5hbWVgLCBhbmQgYQorICAgICAgICA6cHk6b2JqOmBQS0NTMTJgIHdpdGggYSBmcmllbmRseSBuYW1lIHNldCBjYW4gYmUgZHVtcGVkIHdpdGggOnB5Om9iajpgUEtDUzEyLmV4cG9ydGAuCiAgICAgICAgICIiIgogICAgICAgICBwYXNzd2QgPSAnRG9nbWVhdFtde30hQCMkJV4mKigpfmA/Ly4sPD4tXys9Ijs6JwogICAgICAgICBwMTIgPSBzZWxmLmdlbl9wa2NzMTIoc2VydmVyX2NlcnRfcGVtLCBzZXJ2ZXJfa2V5X3BlbSwgcm9vdF9jZXJ0X3BlbSkKQEAgLTE4MDUsNyArMTgwOCw3IEBACiAKICAgICBkZWYgdGVzdF9yZW1vdmluZ19jYV9jZXJ0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgUGFzc2luZyBDe05vbmV9IHRvIEx7UEtDUzEyLnNldF9jYV9jZXJ0aWZpY2F0ZXN9IHJlbW92ZXMgYWxsIENBCisgICAgICAgIFBhc3NpbmcgOnB5Om9iajpgTm9uZWAgdG8gOnB5Om9iajpgUEtDUzEyLnNldF9jYV9jZXJ0aWZpY2F0ZXNgIHJlbW92ZXMgYWxsIENBCiAgICAgICAgIGNlcnRpZmljYXRlcy4KICAgICAgICAgIiIiCiAgICAgICAgIHAxMiA9IHNlbGYuZ2VuX3BrY3MxMihzZXJ2ZXJfY2VydF9wZW0sIHNlcnZlcl9rZXlfcGVtLCByb290X2NlcnRfcGVtKQpAQCAtMTgxNSw3ICsxODE4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2V4cG9ydF93aXRob3V0X21hYyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEV4cG9ydGluZyBhIFBLQ1MxMiB3aXRoIGEgQ3ttYWNpdGVyfSBvZiBDey0xfSBleGNsdWRlcyB0aGUgTUFDCisgICAgICAgIEV4cG9ydGluZyBhIFBLQ1MxMiB3aXRoIGEgOnB5Om9iajpgbWFjaXRlcmAgb2YgYGAtMWBgIGV4Y2x1ZGVzIHRoZSBNQUMKICAgICAgICAgZW50aXJlbHkuCiAgICAgICAgICIiIgogICAgICAgICBwYXNzd2QgPSAnTGFrZSBNaWNoaWdhbicKQEAgLTE4NjMsNyArMTg2Niw3IEBACiAKICAgICBkZWYgdGVzdF9leHBvcnRfd2l0aG91dF9hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgQWxsIHRoZSBhcmd1bWVudHMgdG8gTHtQS0NTMTIuZXhwb3J0fSBhcmUgb3B0aW9uYWwuCisgICAgICAgIEFsbCB0aGUgYXJndW1lbnRzIHRvIDpweTpvYmo6YFBLQ1MxMi5leHBvcnRgIGFyZSBvcHRpb25hbC4KICAgICAgICAgIiIiCiAgICAgICAgIHAxMiA9IHNlbGYuZ2VuX3BrY3MxMihzZXJ2ZXJfY2VydF9wZW0sIHNlcnZlcl9rZXlfcGVtLCByb290X2NlcnRfcGVtKQogICAgICAgICBkdW1wZWRfcDEyID0gcDEyLmV4cG9ydCgpICAjIG5vIGFyZ3MKQEAgLTE4NzMsNyArMTg3Niw3IEBACiAKICAgICBkZWYgdGVzdF9rZXlfY2VydF9taXNtYXRjaChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzEyLmV4cG9ydH0gcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGEga2V5IGFuZCBjZXJ0aWZpY2F0ZQorICAgICAgICA6cHk6b2JqOmBQS0NTMTIuZXhwb3J0YCByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gYSBrZXkgYW5kIGNlcnRpZmljYXRlCiAgICAgICAgIG1pc21hdGNoLgogICAgICAgICAiIiIKICAgICAgICAgcDEyID0gc2VsZi5nZW5fcGtjczEyKHNlcnZlcl9jZXJ0X3BlbSwgY2xpZW50X2tleV9wZW0sIHJvb3RfY2VydF9wZW0pCkBAIC0xODg4LDE0ICsxODkxLDE0IEBACiAgICAgIiIiCiAgICAgSW50ZXJuYWwgbWV0aG9kIGZvciBxdW90aW5nIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBhcmd1bWVudC4KIAotICAgIEB0eXBlOiBDe3N0cn0KLSAgICBAcGFyYW0gczogQSBzaW5nbGUgdW5xdW90ZWQgc3RyaW5nIHRvIHF1b3RlIGZvciBzb21ldGhpbmcgdGhhdCBpcyBleHBlY3RpbmcKKyAgICBTZWUgaHR0cDovL3d3dy5wZXJsbW9ua3Mub3JnLz9ub2RlX2lkPTc2NDAwNAorCisgICAgOnR5cGU6IDpweTpvYmo6YHN0cmAKKyAgICA6cGFyYW0gczogQSBzaW5nbGUgdW5xdW90ZWQgc3RyaW5nIHRvIHF1b3RlIGZvciBzb21ldGhpbmcgdGhhdCBpcyBleHBlY3RpbmcKICAgICAgICAgY21kLmV4ZS1zdHlsZSBxdW90aW5nCiAKLSAgICBAcnR5cGU6IEN7c3RyfQotICAgIEByZXR1cm46IEEgY21kLmV4ZS1zdHlsZSBxdW90ZWQgc3RyaW5nCi0KLSAgICBAc2VlOiBVe2h0dHA6Ly93d3cucGVybG1vbmtzLm9yZy8/bm9kZV9pZD03NjQwMDR9CisgICAgOnJ0eXBlOiA6cHk6b2JqOmBzdHJgCisgICAgOnJldHVybjogQSBjbWQuZXhlLXN0eWxlIHF1b3RlZCBzdHJpbmcKICAgICAiIiIKICAgICBzID0gX2NtZExpbmVRdW90ZVJlMi5zdWIociJcMVwxIiwgX2NtZExpbmVRdW90ZVJlLnN1YihyJ1wxXDFcXCInLCBzKSkKICAgICByZXR1cm4gJyIlcyInICUgcwpAQCAtMTkwNSwxNCArMTkwOCwxNCBAQAogZGVmIHF1b3RlQXJndW1lbnRzKGFyZ3VtZW50cyk6CiAgICAgIiIiCiAgICAgUXVvdGUgYW4gaXRlcmFibGUgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBmb3IgcGFzc2luZyB0byBDcmVhdGVQcm9jZXNzIG9yCi0gICAgYSBzaW1pbGFyIEFQSS4gIFRoaXMgYWxsb3dzIHRoZSBsaXN0IHBhc3NlZCB0byBDe3JlYWN0b3Iuc3Bhd25Qcm9jZXNzfSB0bwotICAgIG1hdGNoIHRoZSBjaGlsZCBwcm9jZXNzJ3MgQ3tzeXMuYXJndn0gcHJvcGVybHkuCisgICAgYSBzaW1pbGFyIEFQSS4gIFRoaXMgYWxsb3dzIHRoZSBsaXN0IHBhc3NlZCB0byA6cHk6b2JqOmByZWFjdG9yLnNwYXduUHJvY2Vzc2AgdG8KKyAgICBtYXRjaCB0aGUgY2hpbGQgcHJvY2VzcydzIDpweTpvYmo6YHN5cy5hcmd2YCBwcm9wZXJseS4KIAotICAgIEB0eXBlIGFyZ3VtZW50czogQ3tpdGVyYWJsZX0gb2YgQ3tzdHJ9Ci0gICAgQHBhcmFtIGFyZ3VtZW50czogQW4gaXRlcmFibGUgb2YgdW5xdW90ZWQgYXJndW1lbnRzIHRvIHF1b3RlCisgICAgOnR5cGUgYXJndW1lbnRzOiA6cHk6b2JqOmBpdGVyYWJsZWAgb2YgOnB5Om9iajpgc3RyYAorICAgIDpwYXJhbSBhcmd1bWVudHM6IEFuIGl0ZXJhYmxlIG9mIHVucXVvdGVkIGFyZ3VtZW50cyB0byBxdW90ZQogCi0gICAgQHJ0eXBlOiBDe3N0cn0KLSAgICBAcmV0dXJuOiBBIHNwYWNlLWRlbGltaXRlZCBzdHJpbmcgY29udGFpbmluZyBxdW90ZWQgdmVyc2lvbnMgb2YgTHthcmd1bWVudHN9CisgICAgOnJ0eXBlOiA6cHk6b2JqOmBzdHJgCisgICAgOnJldHVybjogQSBzcGFjZS1kZWxpbWl0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgcXVvdGVkIHZlcnNpb25zIG9mIDpweTpvYmo6YGFyZ3VtZW50c2AKICAgICAiIiIKICAgICByZXR1cm4gJyAnLmpvaW4obWFwKGNtZExpbmVRdW90ZSwgYXJndW1lbnRzKSkKIApAQCAtMTkzNywyMCArMTk0MCwyMCBAQAogCiBjbGFzcyBGdW5jdGlvblRlc3RzKFRlc3RDYXNlKToKICAgICAiIiIKLSAgICBUZXN0cyBmb3IgZnJlZS1mdW5jdGlvbnMgaW4gdGhlIEx7T3BlblNTTC5jcnlwdG99IG1vZHVsZS4KKyAgICBUZXN0cyBmb3IgZnJlZS1mdW5jdGlvbnMgaW4gdGhlIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvYCBtb2R1bGUuCiAgICAgIiIiCiAKICAgICBkZWYgdGVzdF9sb2FkX3ByaXZhdGVrZXlfaW52YWxpZF9mb3JtYXQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe2xvYWRfcHJpdmF0ZWtleX0gcmFpc2VzIEx7VmFsdWVFcnJvcn0gaWYgcGFzc2VkIGFuIHVua25vd24gZmlsZXR5cGUuCisgICAgICAgIDpweTpvYmo6YGxvYWRfcHJpdmF0ZWtleWAgcmFpc2VzIDpweTpvYmo6YFZhbHVlRXJyb3JgIGlmIHBhc3NlZCBhbiB1bmtub3duIGZpbGV0eXBlLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9hZF9wcml2YXRla2V5LCAxMDAsIHJvb3Rfa2V5X3BlbSkKIAogCiAgICAgZGVmIHRlc3RfbG9hZF9wcml2YXRla2V5X2ludmFsaWRfcGFzc3BocmFzZV90eXBlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtsb2FkX3ByaXZhdGVrZXl9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgcGFzc2VkIGEgcGFzc3BocmFzZSB0aGF0IGlzCi0gICAgICAgIG5laXRoZXIgYSBje3N0cn0gbm9yIGEgY2FsbGFibGUuCisgICAgICAgIDpweTpvYmo6YGxvYWRfcHJpdmF0ZWtleWAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgcGFzc2VkIGEgcGFzc3BocmFzZSB0aGF0IGlzCisgICAgICAgIG5laXRoZXIgYSA6cHk6b2JqOmBzdHJgIG5vciBhIGNhbGxhYmxlLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBUeXBlRXJyb3IsCkBAIC0xOTYwLDcgKzE5NjMsNyBAQAogCiAgICAgZGVmIHRlc3RfbG9hZF9wcml2YXRla2V5X3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe2xvYWRfcHJpdmF0ZWtleX0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcgbnVtYmVyCisgICAgICAgIDpweTpvYmo6YGxvYWRfcHJpdmF0ZWtleWAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nIG51bWJlcgogICAgICAgICBvZiBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvYWRfcHJpdmF0ZWtleSkKQEAgLTE5NjgsNyArMTk3MSw3IEBACiAKICAgICBkZWYgdGVzdF9sb2FkX3ByaXZhdGVrZXlfd3JvbmdQYXNzcGhyYXNlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtsb2FkX3ByaXZhdGVrZXl9IHJhaXNlcyBMe09wZW5TU0wuY3J5cHRvLkVycm9yfSB3aGVuIGl0IGlzIHBhc3NlZCBhbgorICAgICAgICA6cHk6b2JqOmBsb2FkX3ByaXZhdGVrZXlgIHJhaXNlcyA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5FcnJvcmAgd2hlbiBpdCBpcyBwYXNzZWQgYW4KICAgICAgICAgZW5jcnlwdGVkIFBFTSBhbmQgYW4gaW5jb3JyZWN0IHBhc3NwaHJhc2UuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKQEAgLTE5NzgsNyArMTk4MSw3IEBACiAKICAgICBkZWYgdGVzdF9sb2FkX3ByaXZhdGVrZXlfcGFzc3BocmFzZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7bG9hZF9wcml2YXRla2V5fSBjYW4gY3JlYXRlIGEgTHtQS2V5fSBvYmplY3QgZnJvbSBhbiBlbmNyeXB0ZWQgUEVNCisgICAgICAgIDpweTpvYmo6YGxvYWRfcHJpdmF0ZWtleWAgY2FuIGNyZWF0ZSBhIDpweTpvYmo6YFBLZXlgIG9iamVjdCBmcm9tIGFuIGVuY3J5cHRlZCBQRU0KICAgICAgICAgc3RyaW5nIGlmIGdpdmVuIHRoZSBwYXNzcGhyYXNlLgogICAgICAgICAiIiIKICAgICAgICAga2V5ID0gbG9hZF9wcml2YXRla2V5KApAQCAtMTk4OSw3ICsxOTkyLDcgQEAKIAogICAgIGRlZiB0ZXN0X2xvYWRfcHJpdmF0ZWtleV93cm9uZ1Bhc3NwaHJhc2VDYWxsYmFjayhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7bG9hZF9wcml2YXRla2V5fSByYWlzZXMgTHtPcGVuU1NMLmNyeXB0by5FcnJvcn0gd2hlbiBpdCBpcyBwYXNzZWQgYW4KKyAgICAgICAgOnB5Om9iajpgbG9hZF9wcml2YXRla2V5YCByYWlzZXMgOnB5Om9iajpgT3BlblNTTC5jcnlwdG8uRXJyb3JgIHdoZW4gaXQgaXMgcGFzc2VkIGFuCiAgICAgICAgIGVuY3J5cHRlZCBQRU0gYW5kIGEgcGFzc3BocmFzZSBjYWxsYmFjayB3aGljaCByZXR1cm5zIGFuIGluY29ycmVjdAogICAgICAgICBwYXNzcGhyYXNlLgogICAgICAgICAiIiIKQEAgLTIwMDUsNyArMjAwOCw3IEBACiAKICAgICBkZWYgdGVzdF9sb2FkX3ByaXZhdGVrZXlfcGFzc3BocmFzZUNhbGxiYWNrKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtsb2FkX3ByaXZhdGVrZXl9IGNhbiBjcmVhdGUgYSBMe1BLZXl9IG9iamVjdCBmcm9tIGFuIGVuY3J5cHRlZCBQRU0KKyAgICAgICAgOnB5Om9iajpgbG9hZF9wcml2YXRla2V5YCBjYW4gY3JlYXRlIGEgOnB5Om9iajpgUEtleWAgb2JqZWN0IGZyb20gYW4gZW5jcnlwdGVkIFBFTQogICAgICAgICBzdHJpbmcgaWYgZ2l2ZW4gYSBwYXNzcGhyYXNlIGNhbGxiYWNrIHdoaWNoIHJldHVybnMgdGhlIGNvcnJlY3QKICAgICAgICAgcGFzc3dvcmQuCiAgICAgICAgICIiIgpAQCAtMjAyMSw3ICsyMDI0LDcgQEAKICAgICBkZWYgdGVzdF9sb2FkX3ByaXZhdGVrZXlfcGFzc3BocmFzZV9leGNlcHRpb24oc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBBbiBleGNlcHRpb24gcmFpc2VkIGJ5IHRoZSBwYXNzcGhyYXNlIGNhbGxiYWNrIHBhc3NlZCB0bwotICAgICAgICBMe2xvYWRfcHJpdmF0ZWtleX0gY2F1c2VzIEx7T3BlblNTTC5jcnlwdG8uRXJyb3J9IHRvIGJlIHJhaXNlZC4KKyAgICAgICAgOnB5Om9iajpgbG9hZF9wcml2YXRla2V5YCBjYXVzZXMgOnB5Om9iajpgT3BlblNTTC5jcnlwdG8uRXJyb3JgIHRvIGJlIHJhaXNlZC4KIAogICAgICAgICBUaGlzIGlzbid0IGFzIG5pY2UgYXMganVzdCBsZXR0aW5nIHRoZSBleGNlcHRpb24gcGFzcyB0aHJvdWdoLiAgVGhlCiAgICAgICAgIGJlaGF2aW9yIG1pZ2h0IGJlIGNoYW5nZWQgdG8gdGhhdCBldmVudHVhbGx5LgpAQCAtMjAzNiw3ICsyMDM5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2R1bXBfcHJpdmF0ZWtleV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtkdW1wX3ByaXZhdGVrZXl9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nIG51bWJlcgorICAgICAgICA6cHk6b2JqOmBkdW1wX3ByaXZhdGVrZXlgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIHRoZSB3cm9uZyBudW1iZXIKICAgICAgICAgb2YgYXJndW1lbnRzLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkdW1wX3ByaXZhdGVrZXkpCkBAIC0yMDQ0LDcgKzIwNDcsNyBAQAogCiAgICAgZGVmIHRlc3RfZHVtcF9wcml2YXRla2V5X3Vua25vd25fY2lwaGVyKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtkdW1wX3ByaXZhdGVrZXl9IHJhaXNlcyBMe1ZhbHVlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFuIHVucmVjb2duaXplZAorICAgICAgICA6cHk6b2JqOmBkdW1wX3ByaXZhdGVrZXlgIHJhaXNlcyA6cHk6b2JqOmBWYWx1ZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhbiB1bnJlY29nbml6ZWQKICAgICAgICAgY2lwaGVyIG5hbWUuCiAgICAgICAgICIiIgogICAgICAgICBrZXkgPSBQS2V5KCkKQEAgLTIwNTYsOCArMjA1OSw4IEBACiAKICAgICBkZWYgdGVzdF9kdW1wX3ByaXZhdGVrZXlfaW52YWxpZF9wYXNzcGhyYXNlX3R5cGUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe2R1bXBfcHJpdmF0ZWtleX0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhIHBhc3NwaHJhc2Ugd2hpY2gKLSAgICAgICAgaXMgbmVpdGhlciBhIEN7c3RyfSBub3IgYSBjYWxsYWJsZS4KKyAgICAgICAgOnB5Om9iajpgZHVtcF9wcml2YXRla2V5YCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhIHBhc3NwaHJhc2Ugd2hpY2gKKyAgICAgICAgaXMgbmVpdGhlciBhIDpweTpvYmo6YHN0cmAgbm9yIGEgY2FsbGFibGUuCiAgICAgICAgICIiIgogICAgICAgICBrZXkgPSBQS2V5KCkKICAgICAgICAga2V5LmdlbmVyYXRlX2tleShUWVBFX1JTQSwgNTEyKQpAQCAtMjA2OCw3ICsyMDcxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2R1bXBfcHJpdmF0ZWtleV9pbnZhbGlkX2ZpbGV0eXBlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtkdW1wX3ByaXZhdGVrZXl9IHJhaXNlcyBMe1ZhbHVlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFuIHVucmVjb2duaXplZAorICAgICAgICA6cHk6b2JqOmBkdW1wX3ByaXZhdGVrZXlgIHJhaXNlcyA6cHk6b2JqOmBWYWx1ZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhbiB1bnJlY29nbml6ZWQKICAgICAgICAgZmlsZXR5cGUuCiAgICAgICAgICIiIgogICAgICAgICBrZXkgPSBQS2V5KCkKQEAgLTIwNzgsNyArMjA4MSw3IEBACiAKICAgICBkZWYgdGVzdF9kdW1wX3ByaXZhdGVrZXlfcGFzc3BocmFzZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7ZHVtcF9wcml2YXRla2V5fSB3cml0ZXMgYW4gZW5jcnlwdGVkIFBFTSB3aGVuIGdpdmVuIGEgcGFzc3BocmFzZS4KKyAgICAgICAgOnB5Om9iajpgZHVtcF9wcml2YXRla2V5YCB3cml0ZXMgYW4gZW5jcnlwdGVkIFBFTSB3aGVuIGdpdmVuIGEgcGFzc3BocmFzZS4KICAgICAgICAgIiIiCiAgICAgICAgIHBhc3NwaHJhc2UgPSBiKCJmb28iKQogICAgICAgICBrZXkgPSBsb2FkX3ByaXZhdGVrZXkoRklMRVRZUEVfUEVNLCBjbGVhcnRleHRQcml2YXRlS2V5UEVNKQpAQCAtMjA5Miw3ICsyMDk1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2R1bXBfY2VydGlmaWNhdGUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe2R1bXBfY2VydGlmaWNhdGV9IHdyaXRlcyBQRU0sIERFUiwgYW5kIHRleHQuCisgICAgICAgIDpweTpvYmo6YGR1bXBfY2VydGlmaWNhdGVgIHdyaXRlcyBQRU0sIERFUiwgYW5kIHRleHQuCiAgICAgICAgICIiIgogICAgICAgICBwZW1EYXRhID0gY2xlYXJ0ZXh0Q2VydGlmaWNhdGVQRU0gKyBjbGVhcnRleHRQcml2YXRlS2V5UEVNCiAgICAgICAgIGNlcnQgPSBsb2FkX2NlcnRpZmljYXRlKEZJTEVUWVBFX1BFTSwgcGVtRGF0YSkKQEAgLTIxMTEsNyArMjExNCw3IEBACiAKICAgICBkZWYgdGVzdF9kdW1wX3ByaXZhdGVrZXkoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe2R1bXBfcHJpdmF0ZWtleX0gd3JpdGVzIGEgUEVNLCBERVIsIGFuZCB0ZXh0LgorICAgICAgICA6cHk6b2JqOmBkdW1wX3ByaXZhdGVrZXlgIHdyaXRlcyBhIFBFTSwgREVSLCBhbmQgdGV4dC4KICAgICAgICAgIiIiCiAgICAgICAgIGtleSA9IGxvYWRfcHJpdmF0ZWtleShGSUxFVFlQRV9QRU0sIGNsZWFydGV4dFByaXZhdGVLZXlQRU0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShrZXkuY2hlY2soKSkKQEAgLTIxMzEsNyArMjEzNCw3IEBACiAKICAgICBkZWYgdGVzdF9kdW1wX2NlcnRpZmljYXRlX3JlcXVlc3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe2R1bXBfY2VydGlmaWNhdGVfcmVxdWVzdH0gd3JpdGVzIGEgUEVNLCBERVIsIGFuZCB0ZXh0LgorICAgICAgICA6cHk6b2JqOmBkdW1wX2NlcnRpZmljYXRlX3JlcXVlc3RgIHdyaXRlcyBhIFBFTSwgREVSLCBhbmQgdGV4dC4KICAgICAgICAgIiIiCiAgICAgICAgIHJlcSA9IGxvYWRfY2VydGlmaWNhdGVfcmVxdWVzdChGSUxFVFlQRV9QRU0sIGNsZWFydGV4dENlcnRpZmljYXRlUmVxdWVzdFBFTSkKICAgICAgICAgZHVtcGVkX3BlbSA9IGR1bXBfY2VydGlmaWNhdGVfcmVxdWVzdChGSUxFVFlQRV9QRU0sIHJlcSkKQEAgLTIxNTAsNyArMjE1Myw3IEBACiAKICAgICBkZWYgdGVzdF9kdW1wX3ByaXZhdGVrZXlfcGFzc3BocmFzZUNhbGxiYWNrKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtkdW1wX3ByaXZhdGVrZXl9IHdyaXRlcyBhbiBlbmNyeXB0ZWQgUEVNIHdoZW4gZ2l2ZW4gYSBjYWxsYmFjayB3aGljaAorICAgICAgICA6cHk6b2JqOmBkdW1wX3ByaXZhdGVrZXlgIHdyaXRlcyBhbiBlbmNyeXB0ZWQgUEVNIHdoZW4gZ2l2ZW4gYSBjYWxsYmFjayB3aGljaAogICAgICAgICByZXR1cm5zIHRoZSBjb3JyZWN0IHBhc3NwaHJhc2UuCiAgICAgICAgICIiIgogICAgICAgICBwYXNzcGhyYXNlID0gYigiZm9vIikKQEAgLTIxNzAsOCArMjE3Myw4IEBACiAKICAgICBkZWYgdGVzdF9sb2FkX3BrY3M3X2RhdGEoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe2xvYWRfcGtjczdfZGF0YX0gYWNjZXB0cyBhIFBLQ1MjNyBzdHJpbmcgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YKLSAgICAgICAgTHtQS0NTN1R5cGV9LgorICAgICAgICA6cHk6b2JqOmBsb2FkX3BrY3M3X2RhdGFgIGFjY2VwdHMgYSBQS0NTIzcgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mCisgICAgICAgIDpweTpvYmo6YFBLQ1M3VHlwZWAuCiAgICAgICAgICIiIgogICAgICAgICBwa2NzNyA9IGxvYWRfcGtjczdfZGF0YShGSUxFVFlQRV9QRU0sIHBrY3M3RGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UocGtjczcsIFBLQ1M3VHlwZSkpCkBAIC0yMTgwLDExICsyMTgzLDExIEBACiAKIGNsYXNzIFBLQ1M3VGVzdHMoVGVzdENhc2UpOgogICAgICIiIgotICAgIFRlc3RzIGZvciBMe1BLQ1M3VHlwZX0uCisgICAgVGVzdHMgZm9yIDpweTpvYmo6YFBLQ1M3VHlwZWAuCiAgICAgIiIiCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzdUeXBlfSBpcyBhIHR5cGUgb2JqZWN0LgorICAgICAgICA6cHk6b2JqOmBQS0NTN1R5cGVgIGlzIGEgdHlwZSBvYmplY3QuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShQS0NTN1R5cGUsIHR5cGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBLQ1M3VHlwZS5fX25hbWVfXywgJ1BLQ1M3JykKQEAgLTIxOTcsNyArMjIwMCw3IEBACiAKICAgICBkZWYgdGVzdF90eXBlX2lzX3NpZ25lZF93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtQS0NTN1R5cGUudHlwZV9pc19zaWduZWR9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYW55CisgICAgICAgIDpweTpvYmo6YFBLQ1M3VHlwZS50eXBlX2lzX3NpZ25lZGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYW55CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIHBrY3M3ID0gbG9hZF9wa2NzN19kYXRhKEZJTEVUWVBFX1BFTSwgcGtjczdEYXRhKQpAQCAtMjIwNiw4ICsyMjA5LDggQEAKIAogICAgIGRlZiB0ZXN0X3R5cGVfaXNfc2lnbmVkKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtQS0NTN1R5cGUudHlwZV9pc19zaWduZWR9IHJldHVybnMgQ3tUcnVlfSBpZiB0aGUgUEtDUzcgb2JqZWN0IGlzIG9mCi0gICAgICAgIHRoZSB0eXBlIEl7c2lnbmVkfS4KKyAgICAgICAgOnB5Om9iajpgUEtDUzdUeXBlLnR5cGVfaXNfc2lnbmVkYCByZXR1cm5zIDpweTpvYmo6YFRydWVgIGlmIHRoZSBQS0NTNyBvYmplY3QgaXMgb2YKKyAgICAgICAgdGhlIHR5cGUgKnNpZ25lZCouCiAgICAgICAgICIiIgogICAgICAgICBwa2NzNyA9IGxvYWRfcGtjczdfZGF0YShGSUxFVFlQRV9QRU0sIHBrY3M3RGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBrY3M3LnR5cGVfaXNfc2lnbmVkKCkpCkBAIC0yMjE1LDcgKzIyMTgsNyBAQAogCiAgICAgZGVmIHRlc3RfdHlwZV9pc19lbnZlbG9wZWRfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzdUeXBlLnR5cGVfaXNfZW52ZWxvcGVkfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBQS0NTN1R5cGUudHlwZV9pc19lbnZlbG9wZWRgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueQogICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBwa2NzNyA9IGxvYWRfcGtjczdfZGF0YShGSUxFVFlQRV9QRU0sIHBrY3M3RGF0YSkKQEAgLTIyMjQsOCArMjIyNyw4IEBACiAKICAgICBkZWYgdGVzdF90eXBlX2lzX2VudmVsb3BlZChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzdUeXBlLnR5cGVfaXNfZW52ZWxvcGVkfSByZXR1cm5zIEN7RmFsc2V9IGlmIHRoZSBQS0NTNyBvYmplY3QgaXMKLSAgICAgICAgbm90IG9mIHRoZSB0eXBlIEl7ZW52ZWxvcGVkfS4KKyAgICAgICAgOnB5Om9iajpgUEtDUzdUeXBlLnR5cGVfaXNfZW52ZWxvcGVkYCByZXR1cm5zIDpweTpvYmo6YEZhbHNlYCBpZiB0aGUgUEtDUzcgb2JqZWN0IGlzCisgICAgICAgIG5vdCBvZiB0aGUgdHlwZSAqZW52ZWxvcGVkKi4KICAgICAgICAgIiIiCiAgICAgICAgIHBrY3M3ID0gbG9hZF9wa2NzN19kYXRhKEZJTEVUWVBFX1BFTSwgcGtjczdEYXRhKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBrY3M3LnR5cGVfaXNfZW52ZWxvcGVkKCkpCkBAIC0yMjMzLDcgKzIyMzYsNyBAQAogCiAgICAgZGVmIHRlc3RfdHlwZV9pc19zaWduZWRBbmRFbnZlbG9wZWRfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzdUeXBlLnR5cGVfaXNfc2lnbmVkQW5kRW52ZWxvcGVkfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZAorICAgICAgICA6cHk6b2JqOmBQS0NTN1R5cGUudHlwZV9pc19zaWduZWRBbmRFbnZlbG9wZWRgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZAogICAgICAgICB3aXRoIGFueSBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBwa2NzNyA9IGxvYWRfcGtjczdfZGF0YShGSUxFVFlQRV9QRU0sIHBrY3M3RGF0YSkKQEAgLTIyNDIsOCArMjI0NSw4IEBACiAKICAgICBkZWYgdGVzdF90eXBlX2lzX3NpZ25lZEFuZEVudmVsb3BlZChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzdUeXBlLnR5cGVfaXNfc2lnbmVkQW5kRW52ZWxvcGVkfSByZXR1cm5zIEN7RmFsc2V9IGlmIHRoZSBQS0NTNwotICAgICAgICBvYmplY3QgaXMgbm90IG9mIHRoZSB0eXBlIEl7c2lnbmVkIGFuZCBlbnZlbG9wZWR9LgorICAgICAgICA6cHk6b2JqOmBQS0NTN1R5cGUudHlwZV9pc19zaWduZWRBbmRFbnZlbG9wZWRgIHJldHVybnMgOnB5Om9iajpgRmFsc2VgIGlmIHRoZSBQS0NTNworICAgICAgICBvYmplY3QgaXMgbm90IG9mIHRoZSB0eXBlICpzaWduZWQgYW5kIGVudmVsb3BlZCouCiAgICAgICAgICIiIgogICAgICAgICBwa2NzNyA9IGxvYWRfcGtjczdfZGF0YShGSUxFVFlQRV9QRU0sIHBrY3M3RGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwa2NzNy50eXBlX2lzX3NpZ25lZEFuZEVudmVsb3BlZCgpKQpAQCAtMjI1MSw3ICsyMjU0LDcgQEAKIAogICAgIGRlZiB0ZXN0X3R5cGVfaXNfZGF0YShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7UEtDUzdUeXBlLnR5cGVfaXNfZGF0YX0gcmV0dXJucyBDe0ZhbHNlfSBpZiB0aGUgUEtDUzcgb2JqZWN0IGlzIG5vdCBvZgorICAgICAgICA6cHk6b2JqOmBQS0NTN1R5cGUudHlwZV9pc19kYXRhYCByZXR1cm5zIDpweTpvYmo6YEZhbHNlYCBpZiB0aGUgUEtDUzcgb2JqZWN0IGlzIG5vdCBvZgogICAgICAgICB0aGUgdHlwZSBkYXRhLgogICAgICAgICAiIiIKICAgICAgICAgcGtjczcgPSBsb2FkX3BrY3M3X2RhdGEoRklMRVRZUEVfUEVNLCBwa2NzN0RhdGEpCkBAIC0yMjYwLDcgKzIyNjMsNyBAQAogCiAgICAgZGVmIHRlc3RfdHlwZV9pc19kYXRhX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1BLQ1M3VHlwZS50eXBlX2lzX2RhdGF9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYW55CisgICAgICAgIDpweTpvYmo6YFBLQ1M3VHlwZS50eXBlX2lzX2RhdGFgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueQogICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBwa2NzNyA9IGxvYWRfcGtjczdfZGF0YShGSUxFVFlQRV9QRU0sIHBrY3M3RGF0YSkKQEAgLTIyNjksNyArMjI3Miw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfdHlwZV9uYW1lX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1BLQ1M3VHlwZS5nZXRfdHlwZV9uYW1lfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBQS0NTN1R5cGUuZ2V0X3R5cGVfbmFtZWAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYW55CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIHBrY3M3ID0gbG9hZF9wa2NzN19kYXRhKEZJTEVUWVBFX1BFTSwgcGtjczdEYXRhKQpAQCAtMjI3OCw3ICsyMjgxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF90eXBlX25hbWUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe1BLQ1M3VHlwZS5nZXRfdHlwZV9uYW1lfSByZXR1cm5zIGEgQ3tzdHJ9IGdpdmluZyB0aGUgdHlwZSBuYW1lLgorICAgICAgICA6cHk6b2JqOmBQS0NTN1R5cGUuZ2V0X3R5cGVfbmFtZWAgcmV0dXJucyBhIDpweTpvYmo6YHN0cmAgZ2l2aW5nIHRoZSB0eXBlIG5hbWUuCiAgICAgICAgICIiIgogICAgICAgICBwa2NzNyA9IGxvYWRfcGtjczdfZGF0YShGSUxFVFlQRV9QRU0sIHBrY3M3RGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocGtjczcuZ2V0X3R5cGVfbmFtZSgpLCBiKCdwa2NzNy1zaWduZWREYXRhJykpCkBAIC0yMjg3LDcgKzIyOTAsNyBAQAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZShzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIElmIGFuIGF0dHJpYnV0ZSBvdGhlciB0aGFuIG9uZSBvZiB0aGUgbWV0aG9kcyB0ZXN0ZWQgaGVyZSBpcyBhY2Nlc3NlZCBvbgotICAgICAgICBhbiBpbnN0YW5jZSBvZiBMe1BLQ1M3VHlwZX0sIEx7QXR0cmlidXRlRXJyb3J9IGlzIHJhaXNlZC4KKyAgICAgICAgYW4gaW5zdGFuY2Ugb2YgOnB5Om9iajpgUEtDUzdUeXBlYCwgOnB5Om9iajpgQXR0cmlidXRlRXJyb3JgIGlzIHJhaXNlZC4KICAgICAgICAgIiIiCiAgICAgICAgIHBrY3M3ID0gbG9hZF9wa2NzN19kYXRhKEZJTEVUWVBFX1BFTSwgcGtjczdEYXRhKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGtjczcsICJmb28iKQpAQCAtMjI5NiwxOCArMjI5OSwxOCBAQAogCiBjbGFzcyBOZXRzY2FwZVNQS0lUZXN0cyhUZXN0Q2FzZSwgX1BLZXlJbnRlcmFjdGlvblRlc3RzTWl4aW4pOgogICAgICIiIgotICAgIFRlc3RzIGZvciBMe09wZW5TU0wuY3J5cHRvLk5ldHNjYXBlU1BLSX0uCisgICAgVGVzdHMgZm9yIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLk5ldHNjYXBlU1BLSWAuCiAgICAgIiIiCiAgICAgZGVmIHNpZ25hYmxlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgbmV3IEx7TmV0c2NhcGVTUEtJfSBmb3IgdXNlIHdpdGggc2lnbmluZyB0ZXN0cy4KKyAgICAgICAgUmV0dXJuIGEgbmV3IDpweTpvYmo6YE5ldHNjYXBlU1BLSWAgZm9yIHVzZSB3aXRoIHNpZ25pbmcgdGVzdHMuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gTmV0c2NhcGVTUEtJKCkKIAogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7TmV0c2NhcGVTUEtJfSBhbmQgTHtOZXRzY2FwZVNQS0lUeXBlfSByZWZlciB0byB0aGUgc2FtZSB0eXBlIG9iamVjdAorICAgICAgICA6cHk6b2JqOmBOZXRzY2FwZVNQS0lgIGFuZCA6cHk6b2JqOmBOZXRzY2FwZVNQS0lUeXBlYCByZWZlciB0byB0aGUgc2FtZSB0eXBlIG9iamVjdAogICAgICAgICBhbmQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlcyBvZiB0aGF0IHR5cGUuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydElkZW50aWNhbChOZXRzY2FwZVNQS0ksIE5ldHNjYXBlU1BLSVR5cGUpCkBAIC0yMzE2LDcgKzIzMTksNyBAQAogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0aW9uKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtOZXRzY2FwZVNQS0l9IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgTHtOZXRzY2FwZVNQS0lUeXBlfS4KKyAgICAgICAgOnB5Om9iajpgTmV0c2NhcGVTUEtJYCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIDpweTpvYmo6YE5ldHNjYXBlU1BLSVR5cGVgLgogICAgICAgICAiIiIKICAgICAgICAgbnNwa2kgPSBOZXRzY2FwZVNQS0koKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShuc3BraSwgTmV0c2NhcGVTUEtJVHlwZSkpCkBAIC0yMzI0LDggKzIzMjcsOCBAQAogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBBY2Nlc3NpbmcgYSBub24tZXhpc3RlbnQgYXR0cmlidXRlIG9mIGEgTHtOZXRzY2FwZVNQS0l9IGluc3RhbmNlIGNhdXNlcwotICAgICAgICBhbiBMe0F0dHJpYnV0ZUVycm9yfSB0byBiZSByYWlzZWQuCisgICAgICAgIEFjY2Vzc2luZyBhIG5vbi1leGlzdGVudCBhdHRyaWJ1dGUgb2YgYSA6cHk6b2JqOmBOZXRzY2FwZVNQS0lgIGluc3RhbmNlIGNhdXNlcworICAgICAgICBhbiA6cHk6b2JqOmBBdHRyaWJ1dGVFcnJvcmAgdG8gYmUgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAgbnNwa2kgPSBOZXRzY2FwZVNQS0koKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBuc3BraS5mb28pCkBAIC0yMzMzLDcgKzIzMzYsNyBAQAogCiAgICAgZGVmIHRlc3RfYjY0X2VuY29kZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7TmV0c2NhcGVTUEtJLmI2NF9lbmNvZGV9IGVuY29kZXMgdGhlIGNlcnRpZmljYXRlIHRvIGEgYmFzZTY0IGJsb2IuCisgICAgICAgIDpweTpvYmo6YE5ldHNjYXBlU1BLSS5iNjRfZW5jb2RlYCBlbmNvZGVzIHRoZSBjZXJ0aWZpY2F0ZSB0byBhIGJhc2U2NCBibG9iLgogICAgICAgICAiIiIKICAgICAgICAgbnNwa2kgPSBOZXRzY2FwZVNQS0koKQogICAgICAgICBibG9iID0gbnNwa2kuYjY0X2VuY29kZSgpCkBAIC0yMzQzLDExICsyMzQ2LDExIEBACiAKIGNsYXNzIFJldm9rZWRUZXN0cyhUZXN0Q2FzZSk6CiAgICAgIiIiCi0gICAgVGVzdHMgZm9yIEx7T3BlblNTTC5jcnlwdG8uUmV2b2tlZH0KKyAgICBUZXN0cyBmb3IgOnB5Om9iajpgT3BlblNTTC5jcnlwdG8uUmV2b2tlZGAKICAgICAiIiIKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rpb24oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBDb25maXJtIHdlIGNhbiBjcmVhdGUgTHtPcGVuU1NMLmNyeXB0by5SZXZva2VkfS4gIENoZWNrCisgICAgICAgIENvbmZpcm0gd2UgY2FuIGNyZWF0ZSA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5SZXZva2VkYC4gIENoZWNrCiAgICAgICAgIHRoYXQgaXQgaXMgZW1wdHkuCiAgICAgICAgICIiIgogICAgICAgICByZXZva2VkID0gUmV2b2tlZCgpCkBAIC0yMzYwLDggKzIzNjMsOCBAQAogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0aW9uX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBDYWxsaW5nIEx7T3BlblNTTC5jcnlwdG8uUmV2b2tlZH0gd2l0aCBhbnkgYXJndW1lbnRzIHJlc3VsdHMKLSAgICAgICAgaW4gYSBMe1R5cGVFcnJvcn0gYmVpbmcgcmFpc2VkLgorICAgICAgICBDYWxsaW5nIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLlJldm9rZWRgIHdpdGggYW55IGFyZ3VtZW50cyByZXN1bHRzCisgICAgICAgIGluIGEgOnB5Om9iajpgVHlwZUVycm9yYCBiZWluZyByYWlzZWQuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFJldm9rZWQsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgUmV2b2tlZCwgMSkKQEAgLTIzNzEsNyArMjM3NCw3IEBACiAgICAgZGVmIHRlc3Rfc2VyaWFsKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgQ29uZmlybSB3ZSBjYW4gc2V0IGFuZCBnZXQgc2VyaWFsIG51bWJlcnMgZnJvbQotICAgICAgICBMe09wZW5TU0wuY3J5cHRvLlJldm9rZWR9LiAgQ29uZmlybSBlcnJvcnMgYXJlIGhhbmRsZWQKKyAgICAgICAgOnB5Om9iajpgT3BlblNTTC5jcnlwdG8uUmV2b2tlZGAuICBDb25maXJtIGVycm9ycyBhcmUgaGFuZGxlZAogICAgICAgICB3aXRoIGdyYWNlLgogICAgICAgICAiIiIKICAgICAgICAgcmV2b2tlZCA9IFJldm9rZWQoKQpAQCAtMjM5NCw3ICsyMzk3LDcgQEAKICAgICBkZWYgdGVzdF9kYXRlKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgQ29uZmlybSB3ZSBjYW4gc2V0IGFuZCBnZXQgcmV2b2NhdGlvbiBkYXRlcyBmcm9tCi0gICAgICAgIEx7T3BlblNTTC5jcnlwdG8uUmV2b2tlZH0uICBDb25maXJtIGVycm9ycyBhcmUgaGFuZGxlZAorICAgICAgICA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5SZXZva2VkYC4gIENvbmZpcm0gZXJyb3JzIGFyZSBoYW5kbGVkCiAgICAgICAgIHdpdGggZ3JhY2UuCiAgICAgICAgICIiIgogICAgICAgICByZXZva2VkID0gUmV2b2tlZCgpCkBAIC0yNDExLDcgKzI0MTQsNyBAQAogICAgIGRlZiB0ZXN0X3JlYXNvbihzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIENvbmZpcm0gd2UgY2FuIHNldCBhbmQgZ2V0IHJldm9jYXRpb24gcmVhc29ucyBmcm9tCi0gICAgICAgIEx7T3BlblNTTC5jcnlwdG8uUmV2b2tlZH0uICBUaGUgImdldCIgbmVlZCB0byB3b3JrCisgICAgICAgIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLlJldm9rZWRgLiAgVGhlICJnZXQiIG5lZWQgdG8gd29yawogICAgICAgICBhcyAic2V0Ii4gIExpa2V3aXNlLCBlYWNoIHJlYXNvbiBvZiBhbGxfcmVhc29ucygpIG11c3Qgd29yay4KICAgICAgICAgIiIiCiAgICAgICAgIHJldm9rZWQgPSBSZXZva2VkKCkKQEAgLTI0MzEsOSArMjQzNCw5IEBACiAKICAgICBkZWYgdGVzdF9zZXRfcmVhc29uX3dyb25nX2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIENhbGxpbmcgTHtPcGVuU1NMLmNyeXB0by5SZXZva2VkLnNldF9yZWFzb259IHdpdGggb3RoZXIgdGhhbgorICAgICAgICBDYWxsaW5nIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLlJldm9rZWQuc2V0X3JlYXNvbmAgd2l0aCBvdGhlciB0aGFuCiAgICAgICAgIG9uZSBhcmd1bWVudCwgb3IgYW4gYXJndW1lbnQgd2hpY2ggaXNuJ3QgYSB2YWxpZCByZWFzb24sCi0gICAgICAgIHJlc3VsdHMgaW4gTHtUeXBlRXJyb3J9IG9yIEx7VmFsdWVFcnJvcn0gYmVpbmcgcmFpc2VkLgorICAgICAgICByZXN1bHRzIGluIDpweTpvYmo6YFR5cGVFcnJvcmAgb3IgOnB5Om9iajpgVmFsdWVFcnJvcmAgYmVpbmcgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAgcmV2b2tlZCA9IFJldm9rZWQoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldm9rZWQuc2V0X3JlYXNvbiwgMTAwKQpAQCAtMjQ0Miw4ICsyNDQ1LDggQEAKIAogICAgIGRlZiB0ZXN0X2dldF9yZWFzb25fd3JvbmdfYXJndW1lbnRzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgQ2FsbGluZyBMe09wZW5TU0wuY3J5cHRvLlJldm9rZWQuZ2V0X3JlYXNvbn0gd2l0aCBhbnkKLSAgICAgICAgYXJndW1lbnRzIHJlc3VsdHMgaW4gTHtUeXBlRXJyb3J9IGJlaW5nIHJhaXNlZC4KKyAgICAgICAgQ2FsbGluZyA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5SZXZva2VkLmdldF9yZWFzb25gIHdpdGggYW55CisgICAgICAgIGFyZ3VtZW50cyByZXN1bHRzIGluIDpweTpvYmo6YFR5cGVFcnJvcmAgYmVpbmcgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAgcmV2b2tlZCA9IFJldm9rZWQoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldm9rZWQuZ2V0X3JlYXNvbiwgTm9uZSkKQEAgLTI0NTQsMTQgKzI0NTcsMTQgQEAKIAogY2xhc3MgQ1JMVGVzdHMoVGVzdENhc2UpOgogICAgICIiIgotICAgIFRlc3RzIGZvciBMe09wZW5TU0wuY3J5cHRvLkNSTH0KKyAgICBUZXN0cyBmb3IgOnB5Om9iajpgT3BlblNTTC5jcnlwdG8uQ1JMYAogICAgICIiIgogICAgIGNlcnQgPSBsb2FkX2NlcnRpZmljYXRlKEZJTEVUWVBFX1BFTSwgY2xlYXJ0ZXh0Q2VydGlmaWNhdGVQRU0pCiAgICAgcGtleSA9IGxvYWRfcHJpdmF0ZWtleShGSUxFVFlQRV9QRU0sIGNsZWFydGV4dFByaXZhdGVLZXlQRU0pCiAKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rpb24oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBDb25maXJtIHdlIGNhbiBjcmVhdGUgTHtPcGVuU1NMLmNyeXB0by5DUkx9LiAgQ2hlY2sKKyAgICAgICAgQ29uZmlybSB3ZSBjYW4gY3JlYXRlIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLkNSTGAuICBDaGVjawogICAgICAgICB0aGF0IGl0IGlzIGVtcHR5CiAgICAgICAgICIiIgogICAgICAgICBjcmwgPSBDUkwoKQpAQCAtMjQ3MSw4ICsyNDc0LDggQEAKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdGlvbl93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgQ2FsbGluZyBMe09wZW5TU0wuY3J5cHRvLkNSTH0gd2l0aCBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgICAgICByZXN1bHRzIGluIGEgTHtUeXBlRXJyb3J9IGJlaW5nIHJhaXNlZC4KKyAgICAgICAgQ2FsbGluZyA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5DUkxgIHdpdGggYW55IG51bWJlciBvZiBhcmd1bWVudHMKKyAgICAgICAgcmVzdWx0cyBpbiBhIDpweTpvYmo6YFR5cGVFcnJvcmAgYmVpbmcgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDUkwsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ1JMLCAiIikKQEAgLTI1MTQsOCArMjUxNyw4IEBACiAKICAgICBkZWYgdGVzdF9hZGRfcmV2b2tlZF9rZXl3b3JkKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtPcGVuU1NMLkNSTC5hZGRfcmV2b2tlZH0gYWNjZXB0cyBpdHMgc2luZ2xlIGFyZ3VtZW50IGFzIHRoZQotICAgICAgICBJe3Jldm9rZWR9IGtleXdvcmQgYXJndW1lbnQuCisgICAgICAgIDpweTpvYmo6YE9wZW5TU0wuQ1JMLmFkZF9yZXZva2VkYCBhY2NlcHRzIGl0cyBzaW5nbGUgYXJndW1lbnQgYXMgdGhlCisgICAgICAgIGBgcmV2b2tlZGBgIGtleXdvcmQgYXJndW1lbnQuCiAgICAgICAgICIiIgogICAgICAgICBjcmwgPSBDUkwoKQogICAgICAgICByZXZva2VkID0gUmV2b2tlZCgpCkBAIC0yNTI1LDEwICsyNTI4LDEwIEBACiAKICAgICBkZWYgdGVzdF9leHBvcnRfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIENhbGxpbmcgTHtPcGVuU1NMLkNSTC5leHBvcnR9IHdpdGggZmV3ZXIgdGhhbiB0d28gb3IgbW9yZSB0aGFuCisgICAgICAgIENhbGxpbmcgOnB5Om9iajpgT3BlblNTTC5DUkwuZXhwb3J0YCB3aXRoIGZld2VyIHRoYW4gdHdvIG9yIG1vcmUgdGhhbgogICAgICAgICBmb3VyIGFyZ3VtZW50cywgb3Igd2l0aCBhcmd1bWVudHMgb3RoZXIgdGhhbiB0aGUgY2VydGlmaWNhdGUsCiAgICAgICAgIHByaXZhdGUga2V5LCBpbnRlZ2VyIGZpbGUgdHlwZSwgYW5kIGludGVnZXIgbnVtYmVyIG9mIGRheXMgaXQKLSAgICAgICAgZXhwZWN0cywgcmVzdWx0cyBpbiBhIEx7VHlwZUVycm9yfSBiZWluZyByYWlzZWQuCisgICAgICAgIGV4cGVjdHMsIHJlc3VsdHMgaW4gYSA6cHk6b2JqOmBUeXBlRXJyb3JgIGJlaW5nIHJhaXNlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGNybCA9IENSTCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3JsLmV4cG9ydCkKQEAgLTI1NDMsOSArMjU0Niw5IEBACiAKICAgICBkZWYgdGVzdF9leHBvcnRfdW5rbm93bl9maWxldHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIENhbGxpbmcgTHtPcGVuU1NMLkNSTC5leHBvcnR9IHdpdGggYSBmaWxlIHR5cGUgb3RoZXIgdGhhbgotICAgICAgICBMe0ZJTEVUWVBFX1BFTX0sIEx7RklMRVRZUEVfQVNOMX0sIG9yIEx7RklMRVRZUEVfVEVYVH0gcmVzdWx0cwotICAgICAgICBpbiBhIEx7VmFsdWVFcnJvcn0gYmVpbmcgcmFpc2VkLgorICAgICAgICBDYWxsaW5nIDpweTpvYmo6YE9wZW5TU0wuQ1JMLmV4cG9ydGAgd2l0aCBhIGZpbGUgdHlwZSBvdGhlciB0aGFuCisgICAgICAgIDpweTpvYmo6YEZJTEVUWVBFX1BFTWAsIDpweTpvYmo6YEZJTEVUWVBFX0FTTjFgLCBvciA6cHk6b2JqOmBGSUxFVFlQRV9URVhUYCByZXN1bHRzCisgICAgICAgIGluIGEgOnB5Om9iajpgVmFsdWVFcnJvcmAgYmVpbmcgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAgY3JsID0gQ1JMKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3JsLmV4cG9ydCwgc2VsZi5jZXJ0LCBzZWxmLnBrZXksIDEwMCwgMTApCkBAIC0yNTU0LDcgKzI1NTcsNyBAQAogICAgIGRlZiB0ZXN0X2dldF9yZXZva2VkKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgVXNlIHB5dGhvbiB0byBjcmVhdGUgYSBzaW1wbGUgQ1JMIHdpdGggdHdvIHJldm9jYXRpb25zLgotICAgICAgICBHZXQgYmFjayB0aGUgTHtSZXZva2VkfSB1c2luZyBMe09wZW5TU0wuQ1JMLmdldF9yZXZva2VkfSBhbmQKKyAgICAgICAgR2V0IGJhY2sgdGhlIDpweTpvYmo6YFJldm9rZWRgIHVzaW5nIDpweTpvYmo6YE9wZW5TU0wuQ1JMLmdldF9yZXZva2VkYCBhbmQKICAgICAgICAgdmVyaWZ5IHRoZW0uCiAgICAgICAgICIiIgogICAgICAgICBjcmwgPSBDUkwoKQpAQCAtMjU4MCw4ICsyNTgzLDggQEAKIAogICAgIGRlZiB0ZXN0X2dldF9yZXZva2VkX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBDYWxsaW5nIEx7T3BlblNTTC5DUkwuZ2V0X3Jldm9rZWR9IHdpdGggYW55IGFyZ3VtZW50cyByZXN1bHRzCi0gICAgICAgIGluIGEgTHtUeXBlRXJyb3J9IGJlaW5nIHJhaXNlZC4KKyAgICAgICAgQ2FsbGluZyA6cHk6b2JqOmBPcGVuU1NMLkNSTC5nZXRfcmV2b2tlZGAgd2l0aCBhbnkgYXJndW1lbnRzIHJlc3VsdHMKKyAgICAgICAgaW4gYSA6cHk6b2JqOmBUeXBlRXJyb3JgIGJlaW5nIHJhaXNlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGNybCA9IENSTCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3JsLmdldF9yZXZva2VkLCBOb25lKQpAQCAtMjU5Miw4ICsyNTk1LDggQEAKIAogICAgIGRlZiB0ZXN0X2FkZF9yZXZva2VkX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBDYWxsaW5nIEx7T3BlblNTTC5DUkwuYWRkX3Jldm9rZWR9IHdpdGggb3RoZXIgdGhhbiBvbmUKLSAgICAgICAgYXJndW1lbnQgcmVzdWx0cyBpbiBhIEx7VHlwZUVycm9yfSBiZWluZyByYWlzZWQuCisgICAgICAgIENhbGxpbmcgOnB5Om9iajpgT3BlblNTTC5DUkwuYWRkX3Jldm9rZWRgIHdpdGggb3RoZXIgdGhhbiBvbmUKKyAgICAgICAgYXJndW1lbnQgcmVzdWx0cyBpbiBhIDpweTpvYmo6YFR5cGVFcnJvcmAgYmVpbmcgcmFpc2VkLgogICAgICAgICAiIiIKICAgICAgICAgY3JsID0gQ1JMKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjcmwuYWRkX3Jldm9rZWQpCkBAIC0yNjI2LDggKzI2MjksOCBAQAogCiAgICAgZGVmIHRlc3RfbG9hZF9jcmxfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIENhbGxpbmcgTHtPcGVuU1NMLmNyeXB0by5sb2FkX2NybH0gd2l0aCBvdGhlciB0aGFuIHR3bwotICAgICAgICBhcmd1bWVudHMgcmVzdWx0cyBpbiBhIEx7VHlwZUVycm9yfSBiZWluZyByYWlzZWQuCisgICAgICAgIENhbGxpbmcgOnB5Om9iajpgT3BlblNTTC5jcnlwdG8ubG9hZF9jcmxgIHdpdGggb3RoZXIgdGhhbiB0d28KKyAgICAgICAgYXJndW1lbnRzIHJlc3VsdHMgaW4gYSA6cHk6b2JqOmBUeXBlRXJyb3JgIGJlaW5nIHJhaXNlZC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9hZF9jcmwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9hZF9jcmwsIEZJTEVUWVBFX1BFTSkKQEAgLTI2MzYsMjcgKzI2MzksMjcgQEAKIAogICAgIGRlZiB0ZXN0X2xvYWRfY3JsX2JhZF9maWxldHlwZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIENhbGxpbmcgTHtPcGVuU1NMLmNyeXB0by5sb2FkX2NybH0gd2l0aCBhbiB1bmtub3duIGZpbGUgdHlwZQotICAgICAgICByYWlzZXMgYSBMe1ZhbHVlRXJyb3J9LgorICAgICAgICBDYWxsaW5nIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLmxvYWRfY3JsYCB3aXRoIGFuIHVua25vd24gZmlsZSB0eXBlCisgICAgICAgIHJhaXNlcyBhIDpweTpvYmo6YFZhbHVlRXJyb3JgLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9hZF9jcmwsIDEwMCwgY3JsRGF0YSkKIAogCiAgICAgZGVmIHRlc3RfbG9hZF9jcmxfYmFkX2RhdGEoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBDYWxsaW5nIEx7T3BlblNTTC5jcnlwdG8ubG9hZF9jcmx9IHdpdGggZmlsZSBkYXRhIHdoaWNoIGNhbid0Ci0gICAgICAgIGJlIGxvYWRlZCByYWlzZXMgYSBMe09wZW5TU0wuY3J5cHRvLkVycm9yfS4KKyAgICAgICAgQ2FsbGluZyA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by5sb2FkX2NybGAgd2l0aCBmaWxlIGRhdGEgd2hpY2ggY2FuJ3QKKyAgICAgICAgYmUgbG9hZGVkIHJhaXNlcyBhIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLkVycm9yYC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVycm9yLCBsb2FkX2NybCwgRklMRVRZUEVfUEVNLCAiaGVsbG8sIHdvcmxkIikKIAogCiBjbGFzcyBTaWduVmVyaWZ5VGVzdHMoVGVzdENhc2UpOgogICAgICIiIgotICAgIFRlc3RzIGZvciBMe09wZW5TU0wuY3J5cHRvLnNpZ259IGFuZCBMe09wZW5TU0wuY3J5cHRvLnZlcmlmeX0uCisgICAgVGVzdHMgZm9yIDpweTpvYmo6YE9wZW5TU0wuY3J5cHRvLnNpZ25gIGFuZCA6cHk6b2JqOmBPcGVuU1NMLmNyeXB0by52ZXJpZnlgLgogICAgICIiIgogICAgIGRlZiB0ZXN0X3NpZ25fdmVyaWZ5KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtzaWdufSBnZW5lcmF0ZXMgYSBjcnlwdG9ncmFwaGljIHNpZ25hdHVyZSB3aGljaCBMe3ZlcmlmeX0gY2FuIGNoZWNrLgorICAgICAgICA6cHk6b2JqOmBzaWduYCBnZW5lcmF0ZXMgYSBjcnlwdG9ncmFwaGljIHNpZ25hdHVyZSB3aGljaCA6cHk6b2JqOmB2ZXJpZnlgIGNhbiBjaGVjay4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRlbnQgPSBiKAogICAgICAgICAgICAgIkl0IHdhcyBhIGJyaWdodCBjb2xkIGRheSBpbiBBcHJpbCwgYW5kIHRoZSBjbG9ja3Mgd2VyZSBzdHJpa2luZyAiCkBAIC0yNjk3LDcgKzI3MDAsNyBAQAogCiAgICAgZGVmIHRlc3Rfc2lnbl9udWxscyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7c2lnbn0gcHJvZHVjZXMgYSBzaWduYXR1cmUgZm9yIGEgc3RyaW5nIHdpdGggZW1iZWRkZWQgbnVsbHMuCisgICAgICAgIDpweTpvYmo6YHNpZ25gIHByb2R1Y2VzIGEgc2lnbmF0dXJlIGZvciBhIHN0cmluZyB3aXRoIGVtYmVkZGVkIG51bGxzLgogICAgICAgICAiIiIKICAgICAgICAgY29udGVudCA9IGIoIldhdGNoIG91dCEgIFwwICBEaWQgeW91IHNlZSBpdD8iKQogICAgICAgICBwcml2X2tleSA9IGxvYWRfcHJpdmF0ZWtleShGSUxFVFlQRV9QRU0sIHJvb3Rfa2V5X3BlbSkKZGlmZiAtLWdpdCBhL09wZW5TU0wvdGVzdC90ZXN0X3JhbmQucHkgYi9PcGVuU1NML3Rlc3QvdGVzdF9yYW5kLnB5CmluZGV4IDAwZmM2ZDEuLjhhM2M1ZmUgMTAwNjQ0Ci0tLSBhL09wZW5TU0wvdGVzdC90ZXN0X3JhbmQucHkKKysrIGIvT3BlblNTTC90ZXN0L3Rlc3RfcmFuZC5weQpAQCAtMiw3ICsyLDcgQEAKICMgU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMuCiAKICIiIgotVW5pdCB0ZXN0cyBmb3IgTHtPcGVuU1NMLnJhbmR9LgorVW5pdCB0ZXN0cyBmb3IgOnB5Om9iajpgT3BlblNTTC5yYW5kYC4KICIiIgogCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtYWluCkBAIC0xNiw4ICsxNiw4IEBACiBjbGFzcyBSYW5kVGVzdHMoVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2J5dGVzX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe09wZW5TU0wucmFuZC5ieXRlc30gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKLSAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciB3aXRoIGEgbm9uLUN7aW50fSBhcmd1bWVudC4KKyAgICAgICAgOnB5Om9iajpgT3BlblNTTC5yYW5kLmJ5dGVzYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKKyAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciB3aXRoIGEgbm9uLTpweTpvYmo6YGludGAgYXJndW1lbnQuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQuYnl0ZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZC5ieXRlcywgTm9uZSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICBkZWYgdGVzdF9hZGRfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFdoZW4gY2FsbGVkIHdpdGggdGhlIHdyb25nIG51bWJlciBvZiBhcmd1bWVudHMsIG9yIHdpdGggYXJndW1lbnRzIG5vdCBvZgotICAgICAgICB0eXBlIEN7c3RyfSBhbmQgQ3tpbnR9LCBMe09wZW5TU0wucmFuZC5hZGR9IHJhaXNlcyBMe1R5cGVFcnJvcn0uCisgICAgICAgIHR5cGUgOnB5Om9iajpgc3RyYCBhbmQgOnB5Om9iajpgaW50YCwgOnB5Om9iajpgT3BlblNTTC5yYW5kLmFkZGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQuYWRkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQuYWRkLCBiKCJmb28iKSwgTm9uZSkKQEAgLTU0LDE1ICs1NCwxNSBAQAogCiAgICAgZGVmIHRlc3RfYWRkKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtPcGVuU1NMLnJhbmQuYWRkfSBhZGRzIGVudHJvcHkgdG8gdGhlIFBSTkcuCisgICAgICAgIDpweTpvYmo6YE9wZW5TU0wucmFuZC5hZGRgIGFkZHMgZW50cm9weSB0byB0aGUgUFJORy4KICAgICAgICAgIiIiCiAgICAgICAgIHJhbmQuYWRkKGIoJ2hhbWJ1cmdlcicpLCAzKQogCiAKICAgICBkZWYgdGVzdF9zZWVkX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBXaGVuIGNhbGxlZCB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLCBvciB3aXRoIGEgbm9uLUN7c3RyfQotICAgICAgICBhcmd1bWVudCwgTHtPcGVuU1NMLnJhbmQuc2VlZH0gcmFpc2VzIEx7VHlwZUVycm9yfS4KKyAgICAgICAgV2hlbiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgb3Igd2l0aCBhIG5vbi06cHk6b2JqOmBzdHJgCisgICAgICAgIGFyZ3VtZW50LCA6cHk6b2JqOmBPcGVuU1NMLnJhbmQuc2VlZGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQuc2VlZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5kLnNlZWQsIE5vbmUpCkBAIC03MSwxNCArNzEsMTQgQEAKIAogICAgIGRlZiB0ZXN0X3NlZWQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe09wZW5TU0wucmFuZC5zZWVkfSBhZGRzIGVudHJvcHkgdG8gdGhlIFBSTkcuCisgICAgICAgIDpweTpvYmo6YE9wZW5TU0wucmFuZC5zZWVkYCBhZGRzIGVudHJvcHkgdG8gdGhlIFBSTkcuCiAgICAgICAgICIiIgogICAgICAgICByYW5kLnNlZWQoYignbWlsayBzaGFrZScpKQogCiAKICAgICBkZWYgdGVzdF9zdGF0dXNfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7T3BlblNTTC5yYW5kLnN0YXR1c30gcmFpc2VzIEx7VHlwZUVycm9yfSB3aGVuIGNhbGxlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBPcGVuU1NMLnJhbmQuc3RhdHVzYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCB3aGVuIGNhbGxlZCB3aXRoIGFueQogICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQuc3RhdHVzLCBOb25lKQpAQCAtODYsOCArODYsOCBAQAogCiAgICAgZGVmIHRlc3Rfc3RhdHVzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtPcGVuU1NMLnJhbmQuc3RhdHVzfSByZXR1cm5zIEN7VHJ1ZX0gaWYgdGhlIFBSTkcgaGFzIHN1ZmZpY2llbnQKLSAgICAgICAgZW50cm9weSwgQ3tGYWxzZX0gb3RoZXJ3aXNlLgorICAgICAgICA6cHk6b2JqOmBPcGVuU1NMLnJhbmQuc3RhdHVzYCByZXR1cm5zIDpweTpvYmo6YFRydWVgIGlmIHRoZSBQUk5HIGhhcyBzdWZmaWNpZW50CisgICAgICAgIGVudHJvcHksIDpweTpvYmo6YEZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICIiIgogICAgICAgICAjIEl0J3MgaGFyZCB0byBrbm93IHdoYXQgaXQgaXMgYWN0dWFsbHkgZ29pbmcgdG8gcmV0dXJuLiAgRGlmZmVyZW50CiAgICAgICAgICMgT3BlblNTTCByYW5kb20gZW5naW5lcyBkZWNpZGUgZGlmZmVyZW50bHkgd2hldGhlciB0aGV5IGhhdmUgZW5vdWdoCkBAIC05Nyw4ICs5Nyw4IEBACiAKICAgICBkZWYgdGVzdF9lZ2Rfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7T3BlblNTTC5yYW5kLmVnZH0gcmFpc2VzIEx7VHlwZUVycm9yfSB3aGVuIGNhbGxlZCB3aXRoIHRoZSB3cm9uZwotICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIHdpdGggYXJndW1lbnRzIG5vdCBvZiB0eXBlIEN7c3RyfSBhbmQgQ3tpbnR9LgorICAgICAgICA6cHk6b2JqOmBPcGVuU1NMLnJhbmQuZWdkYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCB3aGVuIGNhbGxlZCB3aXRoIHRoZSB3cm9uZworICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIHdpdGggYXJndW1lbnRzIG5vdCBvZiB0eXBlIDpweTpvYmo6YHN0cmAgYW5kIDpweTpvYmo6YGludGAuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQuZWdkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQuZWdkLCBOb25lKQpAQCAtMTA5LDggKzEwOSw4IEBACiAKICAgICBkZWYgdGVzdF9lZ2RfbWlzc2luZyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7T3BlblNTTC5yYW5kLmVnZH0gcmV0dXJucyBDezB9IG9yIEN7LTF9IGlmIHRoZSBFR0Qgc29ja2V0IHBhc3NlZAotICAgICAgICB0byBpdCBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgOnB5Om9iajpgT3BlblNTTC5yYW5kLmVnZGAgcmV0dXJucyA6cHk6b2JqOmAwYCBvciA6cHk6b2JqOmAtMWAgaWYgdGhlCisgICAgICAgIEVHRCBzb2NrZXQgcGFzc2VkIHRvIGl0IGRvZXMgbm90IGV4aXN0LgogICAgICAgICAiIiIKICAgICAgICAgcmVzdWx0ID0gcmFuZC5lZ2Qoc2VsZi5ta3RlbXAoKSkKICAgICAgICAgZXhwZWN0ZWQgPSAoLTEsIDApCkBAIC0xMjEsNyArMTIxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NsZWFudXBfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7T3BlblNTTC5yYW5kLmNsZWFudXB9IHJhaXNlcyBMe1R5cGVFcnJvcn0gd2hlbiBjYWxsZWQgd2l0aCBhbnkKKyAgICAgICAgOnB5Om9iajpgT3BlblNTTC5yYW5kLmNsZWFudXBgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIHdoZW4gY2FsbGVkIHdpdGggYW55CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZC5jbGVhbnVwLCBOb25lKQpAQCAtMTI5LDE2ICsxMjksMTYgQEAKIAogICAgIGRlZiB0ZXN0X2NsZWFudXAoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe09wZW5TU0wucmFuZC5jbGVhbnVwfSByZWxlYXNlcyB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlIFBSTkcgYW5kIHJldHVybnMKLSAgICAgICAgQ3tOb25lfS4KKyAgICAgICAgOnB5Om9iajpgT3BlblNTTC5yYW5kLmNsZWFudXBgIHJlbGVhc2VzIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgUFJORyBhbmQgcmV0dXJucworICAgICAgICA6cHk6b2JqOmBOb25lYC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0SWRlbnRpY2FsKHJhbmQuY2xlYW51cCgpLCBOb25lKQogCiAKICAgICBkZWYgdGVzdF9sb2FkX2ZpbGVfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7T3BlblNTTC5yYW5kLmxvYWRfZmlsZX0gcmFpc2VzIEx7VHlwZUVycm9yfSB3aGVuIGNhbGxlZCB0aGUgd3JvbmcKLSAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciBhcmd1bWVudHMgbm90IG9mIHR5cGUgQ3tzdHJ9IGFuZCBDe2ludH0uCisgICAgICAgIDpweTpvYmo6YE9wZW5TU0wucmFuZC5sb2FkX2ZpbGVgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIHdoZW4gY2FsbGVkIHRoZSB3cm9uZworICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIGFyZ3VtZW50cyBub3Qgb2YgdHlwZSA6cHk6b2JqOmBzdHJgIGFuZCA6cHk6b2JqOmBpbnRgLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5kLmxvYWRfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5kLmxvYWRfZmlsZSwgImZvbyIsIE5vbmUpCkBAIC0xNDgsOCArMTQ4LDggQEAKIAogICAgIGRlZiB0ZXN0X3dyaXRlX2ZpbGVfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7T3BlblNTTC5yYW5kLndyaXRlX2ZpbGV9IHJhaXNlcyBMe1R5cGVFcnJvcn0gd2hlbiBjYWxsZWQgd2l0aCB0aGUKLSAgICAgICAgd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciBhIG5vbi1De3N0cn0gYXJndW1lbnQuCisgICAgICAgIDpweTpvYmo6YE9wZW5TU0wucmFuZC53cml0ZV9maWxlYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCB3aGVuIGNhbGxlZCB3aXRoIHRoZQorICAgICAgICB3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIG9yIGEgbm9uLTpweTpvYmo6YHN0cmAgYXJndW1lbnQuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmQud3JpdGVfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5kLndyaXRlX2ZpbGUsIE5vbmUpCmRpZmYgLS1naXQgYS9PcGVuU1NML3Rlc3QvdGVzdF9zc2wucHkgYi9PcGVuU1NML3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggOWU2NGQ2NC4uYzk0MTdiOSAxMDA2NDQKLS0tIGEvT3BlblNTTC90ZXN0L3Rlc3Rfc3NsLnB5CisrKyBiL09wZW5TU0wvdGVzdC90ZXN0X3NzbC5weQpAQCAtMiw3ICsyLDcgQEAKICMgU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMuCiAKICIiIgotVW5pdCB0ZXN0cyBmb3IgTHtPcGVuU1NMLlNTTH0uCitVbml0IHRlc3RzIGZvciA6cHk6b2JqOmBPcGVuU1NMLlNTTGAuCiAiIiIKIAogZnJvbSBnYyBpbXBvcnQgY29sbGVjdApAQCAtMjAzLDEwICsyMDMsMTAgQEAKIAogICAgIGRlZiBfaW50ZXJhY3RJbk1lbW9yeShzZWxmLCBjbGllbnRfY29ubiwgc2VydmVyX2Nvbm4pOgogICAgICAgICAiIiIKLSAgICAgICAgVHJ5IHRvIHJlYWQgYXBwbGljYXRpb24gYnl0ZXMgZnJvbSBlYWNoIG9mIHRoZSB0d28gTHtDb25uZWN0aW9ufQorICAgICAgICBUcnkgdG8gcmVhZCBhcHBsaWNhdGlvbiBieXRlcyBmcm9tIGVhY2ggb2YgdGhlIHR3byA6cHk6b2JqOmBDb25uZWN0aW9uYAogICAgICAgICBvYmplY3RzLiAgQ29weSBieXRlcyBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZWlyIHNlbmQvcmVjZWl2ZSBidWZmZXJzCiAgICAgICAgIGZvciBhcyBsb25nIGFzIHRoZXJlIGlzIGFueXRoaW5nIHRvIGNvcHkuICBXaGVuIHRoZXJlIGlzIG5vdGhpbmcgbW9yZQotICAgICAgICB0byBjb3B5LCByZXR1cm4gQ3tOb25lfS4gIElmIG9uZSBvZiB0aGVtIGFjdHVhbGx5IG1hbmFnZXMgdG8gZGVsaXZlcgorICAgICAgICB0byBjb3B5LCByZXR1cm4gOnB5Om9iajpgTm9uZWAuICBJZiBvbmUgb2YgdGhlbSBhY3R1YWxseSBtYW5hZ2VzIHRvIGRlbGl2ZXIKICAgICAgICAgc29tZSBhcHBsaWNhdGlvbiBieXRlcywgcmV0dXJuIGEgdHdvLXR1cGxlIG9mIHRoZSBjb25uZWN0aW9uIGZyb20gd2hpY2gKICAgICAgICAgdGhlIGJ5dGVzIHdlcmUgcmVhZCBhbmQgdGhlIGJ5dGVzIHRoZW1zZWx2ZXMuCiAgICAgICAgICIiIgpAQCAtMjUyLDEyICsyNTIsMTIgQEAKIGNsYXNzIFZlcnNpb25UZXN0cyhUZXN0Q2FzZSk6CiAgICAgIiIiCiAgICAgVGVzdHMgZm9yIHZlcnNpb24gaW5mb3JtYXRpb24gZXhwb3NlZCBieQotICAgIEx7T3BlblNTTC5TU0wuU1NMZWF5X3ZlcnNpb259IGFuZAotICAgIEx7T3BlblNTTC5TU0wuT1BFTlNTTF9WRVJTSU9OX05VTUJFUn0uCisgICAgOnB5Om9iajpgT3BlblNTTC5TU0wuU1NMZWF5X3ZlcnNpb25gIGFuZAorICAgIDpweTpvYmo6YE9wZW5TU0wuU1NMLk9QRU5TU0xfVkVSU0lPTl9OVU1CRVJgLgogICAgICIiIgogICAgIGRlZiB0ZXN0X09QRU5TU0xfVkVSU0lPTl9OVU1CRVIoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe09QRU5TU0xfVkVSU0lPTl9OVU1CRVJ9IGlzIGFuIGludGVnZXIgd2l0aCBzdGF0dXMgaW4gdGhlIGxvdworICAgICAgICA6cHk6b2JqOmBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSYCBpcyBhbiBpbnRlZ2VyIHdpdGggc3RhdHVzIGluIHRoZSBsb3cKICAgICAgICAgYnl0ZSBhbmQgdGhlIHBhdGNoLCBmaXgsIG1pbm9yLCBhbmQgbWFqb3IgdmVyc2lvbnMgaW4gdGhlCiAgICAgICAgIG5pYmJsZXMgYWJvdmUgdGhhdC4KICAgICAgICAgIiIiCkBAIC0yNjYsNyArMjY2LDcgQEAKIAogICAgIGRlZiB0ZXN0X1NTTGVheV92ZXJzaW9uKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtTU0xlYXlfdmVyc2lvbn0gdGFrZXMgYSB2ZXJzaW9uIHR5cGUgaW5kaWNhdG9yIGFuZCByZXR1cm5zCisgICAgICAgIDpweTpvYmo6YFNTTGVheV92ZXJzaW9uYCB0YWtlcyBhIHZlcnNpb24gdHlwZSBpbmRpY2F0b3IgYW5kIHJldHVybnMKICAgICAgICAgb25lIG9mIGEgbnVtYmVyIG9mIHZlcnNpb24gc3RyaW5ncyBiYXNlZCBvbiB0aGF0IGluZGljYXRvci4KICAgICAgICAgIiIiCiAgICAgICAgIHZlcnNpb25zID0ge30KQEAgLTI4MSwxMiArMjgxLDEyIEBACiAKIGNsYXNzIENvbnRleHRUZXN0cyhUZXN0Q2FzZSwgX0xvb3BiYWNrTWl4aW4pOgogICAgICIiIgotICAgIFVuaXQgdGVzdHMgZm9yIEx7T3BlblNTTC5TU0wuQ29udGV4dH0uCisgICAgVW5pdCB0ZXN0cyBmb3IgOnB5Om9iajpgT3BlblNTTC5TU0wuQ29udGV4dGAuCiAgICAgIiIiCiAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0fSBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGggb25lIG9mIEx7U1NMdjJfTUVUSE9EfSwKLSAgICAgICAgTHtTU0x2M19NRVRIT0R9LCBMe1NTTHYyM19NRVRIT0R9LCBvciBMe1RMU3YxX01FVEhPRH0uCisgICAgICAgIDpweTpvYmo6YENvbnRleHRgIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBvbmUgb2YgOnB5Om9iajpgU1NMdjJfTUVUSE9EYCwKKyAgICAgICAgOnB5Om9iajpgU1NMdjNfTUVUSE9EYCwgOnB5Om9iajpgU1NMdjIzX01FVEhPRGAsIG9yIDpweTpvYmo6YFRMU3YxX01FVEhPRGAuCiAgICAgICAgICIiIgogICAgICAgICBmb3IgbWV0aCBpbiBbU1NMdjNfTUVUSE9ELCBTU0x2MjNfTUVUSE9ELCBUTFN2MV9NRVRIT0RdOgogICAgICAgICAgICAgQ29udGV4dChtZXRoKQpAQCAtMzA0LDcgKzMwNCw3IEBACiAKICAgICBkZWYgdGVzdF90eXBlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0fSBhbmQgTHtDb250ZXh0VHlwZX0gcmVmZXIgdG8gdGhlIHNhbWUgdHlwZSBvYmplY3QgYW5kIGNhbiBiZQorICAgICAgICA6cHk6b2JqOmBDb250ZXh0YCBhbmQgOnB5Om9iajpgQ29udGV4dFR5cGVgIHJlZmVyIHRvIHRoZSBzYW1lIHR5cGUgb2JqZWN0IGFuZCBjYW4gYmUKICAgICAgICAgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoYXQgdHlwZS4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0SWRlbnRpY2FsKENvbnRleHQsIENvbnRleHRUeXBlKQpAQCAtMzEzLDcgKzMxMyw3IEBACiAKICAgICBkZWYgdGVzdF91c2VfcHJpdmF0ZWtleShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC51c2VfcHJpdmF0ZWtleX0gdGFrZXMgYW4gTHtPcGVuU1NMLmNyeXB0by5QS2V5fSBpbnN0YW5jZS4KKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC51c2VfcHJpdmF0ZWtleWAgdGFrZXMgYW4gOnB5Om9iajpgT3BlblNTTC5jcnlwdG8uUEtleWAgaW5zdGFuY2UuCiAgICAgICAgICIiIgogICAgICAgICBrZXkgPSBQS2V5KCkKICAgICAgICAga2V5LmdlbmVyYXRlX2tleShUWVBFX1JTQSwgMTI4KQpAQCAtMzI0LDcgKzMyNCw3IEBACiAKICAgICBkZWYgdGVzdF9zZXRfYXBwX2RhdGFfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC5zZXRfYXBwX2RhdGF9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggb3RoZXIgdGhhbgorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnNldF9hcHBfZGF0YWAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggb3RoZXIgdGhhbgogICAgICAgICBvbmUgYXJndW1lbnQuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC0zMzQsNyArMzM0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9hcHBfZGF0YV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LmdldF9hcHBfZGF0YX0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbnkKKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5nZXRfYXBwX2RhdGFgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueQogICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC0zNDMsOCArMzQzLDggQEAKIAogICAgIGRlZiB0ZXN0X2FwcF9kYXRhKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF9hcHBfZGF0YX0gc3RvcmVzIGFuIG9iamVjdCBmb3IgbGF0ZXIgcmV0cmlldmFsIHVzaW5nCi0gICAgICAgIEx7Q29udGV4dC5nZXRfYXBwX2RhdGF9LgorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnNldF9hcHBfZGF0YWAgc3RvcmVzIGFuIG9iamVjdCBmb3IgbGF0ZXIgcmV0cmlldmFsIHVzaW5nCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuZ2V0X2FwcF9kYXRhYC4KICAgICAgICAgIiIiCiAgICAgICAgIGFwcF9kYXRhID0gb2JqZWN0KCkKICAgICAgICAgY29udGV4dCA9IENvbnRleHQoVExTdjFfTUVUSE9EKQpAQCAtMzU0LDggKzM1NCw4IEBACiAKICAgICBkZWYgdGVzdF9zZXRfb3B0aW9uc193cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF9vcHRpb25zfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIHRoZSB3cm9uZwotICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIGEgbm9uLUN7aW50fSBhcmd1bWVudC4KKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5zZXRfb3B0aW9uc2AgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCisgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYSBub24tOnB5Om9iajpgaW50YCBhcmd1bWVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb250ZXh0LnNldF9vcHRpb25zKQpAQCAtMzY1LDggKzM2NSw4IEBACiAKICAgICBkZWYgdGVzdF9zZXRfbW9kZV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF9tb2RlfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIHRoZSB3cm9uZwotICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIGEgbm9uLUN7aW50fSBhcmd1bWVudC4KKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5zZXRgbW9kZX0gcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCisgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYSBub24tOnB5Om9iajpgaW50YCBhcmd1bWVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb250ZXh0LnNldF9tb2RlKQpAQCAtMzc3LDcgKzM3Nyw3IEBACiAgICAgaWYgTU9ERV9SRUxFQVNFX0JVRkZFUlMgaXMgbm90IE5vbmU6CiAgICAgICAgIGRlZiB0ZXN0X3NldF9tb2RlKHNlbGYpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBMe0NvbnRleHQuc2V0X21vZGV9IGFjY2VwdHMgYSBtb2RlIGJpdHZlY3RvciBhbmQgcmV0dXJucyB0aGUgbmV3bHkKKyAgICAgICAgICAgIDpweTpvYmo6YENvbnRleHQuc2V0X21vZGVgIGFjY2VwdHMgYSBtb2RlIGJpdHZlY3RvciBhbmQgcmV0dXJucyB0aGUgbmV3bHkKICAgICAgICAgICAgIHNldCBtb2RlLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC0zODksOCArMzg5LDggQEAKIAogICAgIGRlZiB0ZXN0X3NldF90aW1lb3V0X3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQuc2V0X3RpbWVvdXR9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCi0gICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYSBub24tQ3tpbnR9IGFyZ3VtZW50LgorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnNldF90aW1lb3V0YCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKKyAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciBhIG5vbi06cHk6b2JqOmBpbnRgIGFyZ3VtZW50LgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IENvbnRleHQoVExTdjFfTUVUSE9EKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbnRleHQuc2V0X3RpbWVvdXQpCkBAIC00MDAsNyArNDAwLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF90aW1lb3V0X3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQuZ2V0X3RpbWVvdXR9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy4KKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5nZXRfdGltZW91dGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb250ZXh0LmdldF90aW1lb3V0LCBOb25lKQpAQCAtNDA4LDggKzQwOCw4IEBACiAKICAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF90aW1lb3V0fSBzZXRzIHRoZSBzZXNzaW9uIHRpbWVvdXQgZm9yIGFsbCBjb25uZWN0aW9ucwotICAgICAgICBjcmVhdGVkIHVzaW5nIHRoZSBjb250ZXh0IG9iamVjdC4gIEx7Q29udGV4dC5nZXRfdGltZW91dH0gcmV0cmlldmVzIHRoaXMKKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5zZXRfdGltZW91dGAgc2V0cyB0aGUgc2Vzc2lvbiB0aW1lb3V0IGZvciBhbGwgY29ubmVjdGlvbnMKKyAgICAgICAgY3JlYXRlZCB1c2luZyB0aGUgY29udGV4dCBvYmplY3QuICA6cHk6b2JqOmBDb250ZXh0LmdldF90aW1lb3V0YCByZXRyaWV2ZXMgdGhpcwogICAgICAgICB2YWx1ZS4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKQEAgLTQxOSw4ICs0MTksOCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X3ZlcmlmeV9kZXB0aF93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF92ZXJpZnlfZGVwdGh9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCi0gICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3IgYSBub24tQ3tpbnR9IGFyZ3VtZW50LgorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnNldF92ZXJpZnlfZGVwdGhgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIHRoZSB3cm9uZworICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIGEgbm9uLTpweTpvYmo6YGludGAgYXJndW1lbnQuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29udGV4dC5zZXRfdmVyaWZ5X2RlcHRoKQpAQCAtNDMwLDcgKzQzMCw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfdmVyaWZ5X2RlcHRoX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQuZ2V0X3ZlcmlmeV9kZXB0aH0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzLgorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LmdldF92ZXJpZnlfZGVwdGhgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29udGV4dC5nZXRfdmVyaWZ5X2RlcHRoLCBOb25lKQpAQCAtNDM4LDkgKzQzOCw5IEBACiAKICAgICBkZWYgdGVzdF92ZXJpZnlfZGVwdGgoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQuc2V0X3ZlcmlmeV9kZXB0aH0gc2V0cyB0aGUgbnVtYmVyIG9mIGNlcnRpZmljYXRlcyBpbiBhIGNoYWluCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuc2V0X3ZlcmlmeV9kZXB0aGAgc2V0cyB0aGUgbnVtYmVyIG9mIGNlcnRpZmljYXRlcyBpbiBhIGNoYWluCiAgICAgICAgIHRvIGZvbGxvdyBiZWZvcmUgZ2l2aW5nIHVwLiAgVGhlIHZhbHVlIGNhbiBiZSByZXRyaWV2ZWQgd2l0aAotICAgICAgICBMe0NvbnRleHQuZ2V0X3ZlcmlmeV9kZXB0aH0uCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuZ2V0X3ZlcmlmeV9kZXB0aGAuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCiAgICAgICAgIGNvbnRleHQuc2V0X3ZlcmlmeV9kZXB0aCgxMSkKQEAgLTQ2NCw3ICs0NjQsNyBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X3Bhc3N3ZF9jYl93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF9wYXNzd2RfY2J9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggdGhlCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuc2V0X3Bhc3N3ZF9jYmAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlCiAgICAgICAgIHdyb25nIGFyZ3VtZW50cyBvciB3aXRoIGEgbm9uLWNhbGxhYmxlIGZpcnN0IGFyZ3VtZW50LgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IENvbnRleHQoVExTdjFfTUVUSE9EKQpAQCAtNDc1LDcgKzQ3NSw3IEBACiAKICAgICBkZWYgdGVzdF9zZXRfcGFzc3dkX2NiKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF9wYXNzd2RfY2J9IGFjY2VwdHMgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGludm9rZWQgd2hlbgorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnNldF9wYXNzd2RfY2JgIGFjY2VwdHMgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGludm9rZWQgd2hlbgogICAgICAgICBhIHByaXZhdGUga2V5IGlzIGxvYWRlZCBmcm9tIGFuIGVuY3J5cHRlZCBQRU0uCiAgICAgICAgICIiIgogICAgICAgICBwYXNzcGhyYXNlID0gYigiZm9vYmFyIikKQEAgLTQ5NSw3ICs0OTUsNyBAQAogCiAgICAgZGVmIHRlc3RfcGFzc3dkX2NhbGxiYWNrX2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC51c2VfcHJpdmF0ZWtleV9maWxlfSBwcm9wYWdhdGVzIGFueSBleGNlcHRpb24gcmFpc2VkIGJ5IHRoZQorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnVzZV9wcml2YXRla2V5X2ZpbGVgIHByb3BhZ2F0ZXMgYW55IGV4Y2VwdGlvbiByYWlzZWQgYnkgdGhlCiAgICAgICAgIHBhc3NwaHJhc2UgY2FsbGJhY2suCiAgICAgICAgICIiIgogICAgICAgICBwZW1GaWxlID0gc2VsZi5fd3JpdGVfZW5jcnlwdGVkX3BlbShiKCJtb25rZXlzIGFyZSBuaWNlIikpCkBAIC01MDksNyArNTA5LDcgQEAKIAogICAgIGRlZiB0ZXN0X3Bhc3N3ZF9jYWxsYmFja19mYWxzZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC51c2VfcHJpdmF0ZWtleV9maWxlfSByYWlzZXMgTHtPcGVuU1NMLlNTTC5FcnJvcn0gaWYgdGhlCisgICAgICAgIDpweTpvYmo6YENvbnRleHQudXNlX3ByaXZhdGVrZXlfZmlsZWAgcmFpc2VzIDpweTpvYmo6YE9wZW5TU0wuU1NMLkVycm9yYCBpZiB0aGUKICAgICAgICAgcGFzc3BocmFzZSBjYWxsYmFjayByZXR1cm5zIGEgZmFsc2UgdmFsdWUuCiAgICAgICAgICIiIgogICAgICAgICBwZW1GaWxlID0gc2VsZi5fd3JpdGVfZW5jcnlwdGVkX3BlbShiKCJtb25rZXlzIGFyZSBuaWNlIikpCkBAIC01MjMsNyArNTIzLDcgQEAKIAogICAgIGRlZiB0ZXN0X3Bhc3N3ZF9jYWxsYmFja19ub25fc3RyaW5nKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnVzZV9wcml2YXRla2V5X2ZpbGV9IHJhaXNlcyBMe09wZW5TU0wuU1NMLkVycm9yfSBpZiB0aGUKKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC51c2VfcHJpdmF0ZWtleV9maWxlYCByYWlzZXMgOnB5Om9iajpgT3BlblNTTC5TU0wuRXJyb3JgIGlmIHRoZQogICAgICAgICBwYXNzcGhyYXNlIGNhbGxiYWNrIHJldHVybnMgYSB0cnVlIG5vbi1zdHJpbmcgdmFsdWUuCiAgICAgICAgICIiIgogICAgICAgICBwZW1GaWxlID0gc2VsZi5fd3JpdGVfZW5jcnlwdGVkX3BlbShiKCJtb25rZXlzIGFyZSBuaWNlIikpCkBAIC01NTYsNyArNTU2LDcgQEAKIAogICAgIGRlZiB0ZXN0X3NldF9pbmZvX2NhbGxiYWNrKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF9pbmZvX2NhbGxiYWNrfSBhY2NlcHRzIGEgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBpbnZva2VkCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuc2V0X2luZm9fY2FsbGJhY2tgIGFjY2VwdHMgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGludm9rZWQKICAgICAgICAgd2hlbiBjZXJ0YWluIGluZm9ybWF0aW9uIGFib3V0IGFuIFNTTCBjb25uZWN0aW9uIGlzIGF2YWlsYWJsZS4KICAgICAgICAgIiIiCiAgICAgICAgIChzZXJ2ZXIsIGNsaWVudCkgPSBzb2NrZXRfcGFpcigpCkBAIC01OTEsOCArNTkxLDggQEAKICAgICBkZWYgX2xvYWRfdmVyaWZ5X2xvY2F0aW9uc190ZXN0KHNlbGYsICphcmdzKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIGNsaWVudCBjb250ZXh0IHdoaWNoIHdpbGwgdmVyaWZ5IHRoZSBwZWVyIGNlcnRpZmljYXRlIGFuZCBjYWxsCi0gICAgICAgIGl0cyBDe2xvYWRfdmVyaWZ5X2xvY2F0aW9uc30gbWV0aG9kIHdpdGggQ3sqYXJnc30uICBUaGVuIGNvbm5lY3QgaXQgdG8gYQotICAgICAgICBzZXJ2ZXIgYW5kIGVuc3VyZSB0aGF0IHRoZSBoYW5kc2hha2Ugc3VjY2VlZHMuCisgICAgICAgIGl0cyA6cHk6b2JqOmBsb2FkX3ZlcmlmeV9sb2NhdGlvbnNgIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuCisgICAgICAgIFRoZW4gY29ubmVjdCBpdCB0byBhIHNlcnZlciBhbmQgZW5zdXJlIHRoYXQgdGhlIGhhbmRzaGFrZSBzdWNjZWVkcy4KICAgICAgICAgIiIiCiAgICAgICAgIChzZXJ2ZXIsIGNsaWVudCkgPSBzb2NrZXRfcGFpcigpCiAKQEAgLTYyOCw3ICs2MjgsNyBAQAogCiAgICAgZGVmIHRlc3RfbG9hZF92ZXJpZnlfZmlsZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnN9IGFjY2VwdHMgYSBmaWxlIG5hbWUgYW5kIHVzZXMgdGhlCisgICAgICAgIDpweTpvYmo6YENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYCBhY2NlcHRzIGEgZmlsZSBuYW1lIGFuZCB1c2VzIHRoZQogICAgICAgICBjZXJ0aWZpY2F0ZXMgd2l0aGluIGZvciB2ZXJpZmljYXRpb24gcHVycG9zZXMuCiAgICAgICAgICIiIgogICAgICAgICBjYWZpbGUgPSBzZWxmLm1rdGVtcCgpCkBAIC02NDEsNyArNjQxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2xvYWRfdmVyaWZ5X2ludmFsaWRfZmlsZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnN9IHJhaXNlcyBMe0Vycm9yfSB3aGVuIHBhc3NlZCBhCisgICAgICAgIDpweTpvYmo6YENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYCByYWlzZXMgOnB5Om9iajpgRXJyb3JgIHdoZW4gcGFzc2VkIGEKICAgICAgICAgbm9uLWV4aXN0ZW50IGNhZmlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIGNsaWVudENvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKQEAgLTY1MSw3ICs2NTEsNyBAQAogCiAgICAgZGVmIHRlc3RfbG9hZF92ZXJpZnlfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9uc30gYWNjZXB0cyBhIGRpcmVjdG9yeSBuYW1lIGFuZCB1c2VzCisgICAgICAgIDpweTpvYmo6YENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYCBhY2NlcHRzIGEgZGlyZWN0b3J5IG5hbWUgYW5kIHVzZXMKICAgICAgICAgdGhlIGNlcnRpZmljYXRlcyB3aXRoaW4gZm9yIHZlcmlmaWNhdGlvbiBwdXJwb3Nlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGNhcGF0aCA9IHNlbGYubWt0ZW1wKCkKQEAgLTY3MCw4ICs2NzAsOCBAQAogCiAgICAgZGVmIHRlc3RfbG9hZF92ZXJpZnlfbG9jYXRpb25zX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoCi0gICAgICAgIHRoZSB3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIG9yIHdpdGggbm9uLUN7c3RyfSBhcmd1bWVudHMuCisgICAgICAgIDpweTpvYmo6YENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aAorICAgICAgICB0aGUgd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciB3aXRoIG5vbi06cHk6b2JqOmBzdHJgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucykKQEAgLTY4Niw3ICs2ODYsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIGRlZiB0ZXN0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhzZWxmKToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgTHtDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc30gY2F1c2VzIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBDQQorICAgICAgICAgICAgOnB5Om9iajpgQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNgIGNhdXNlcyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgQ0EKICAgICAgICAgICAgIGNlcnRpZmljYXRlIGxvY2F0aW9ucyB0byBiZSB1c2VkIGZvciB2ZXJpZmljYXRpb24gcHVycG9zZXMuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICMgVGVzdGluZyB0aGlzIHJlcXVpcmVzIGEgc2VydmVyIHdpdGggYSBjZXJ0aWZpY2F0ZSBzaWduZWQgYnkgb25lIG9mCkBAIC03MTUsOCArNzE1LDggQEAKIAogICAgIGRlZiB0ZXN0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19zaWduYXR1cmUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzfSB0YWtlcyBubyBhcmd1bWVudHMgYW5kIHJhaXNlcwotICAgICAgICBMe1R5cGVFcnJvcn0gaWYgZ2l2ZW4gYW55LgorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc2AgdGFrZXMgbm8gYXJndW1lbnRzIGFuZCByYWlzZXMKKyAgICAgICAgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBnaXZlbiBhbnkuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsIE5vbmUpCkBAIC03MjYsOSArNzI2LDkgQEAKIAogICAgIGRlZiB0ZXN0X2FkZF9leHRyYV9jaGFpbl9jZXJ0X2ludmFsaWRfY2VydChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC5hZGRfZXh0cmFfY2hhaW5fY2VydH0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aAorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LmFkZF9leHRyYV9jaGFpbl9jZXJ0YCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aAogICAgICAgICBvdGhlciB0aGFuIG9uZSBhcmd1bWVudCBvciBpZiBjYWxsZWQgd2l0aCBhbiBvYmplY3Qgd2hpY2ggaXMgbm90IGFuCi0gICAgICAgIGluc3RhbmNlIG9mIEx7WDUwOX0uCisgICAgICAgIGluc3RhbmNlIG9mIDpweTpvYmo6YFg1MDlgLgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IENvbnRleHQoVExTdjFfTUVUSE9EKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbnRleHQuYWRkX2V4dHJhX2NoYWluX2NlcnQpCkBAIC03NjEsMTAgKzc2MSwxMCBAQAogCiAgICAgZGVmIHRlc3RfYWRkX2V4dHJhX2NoYWluX2NlcnQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQuYWRkX2V4dHJhX2NoYWluX2NlcnR9IGFjY2VwdHMgYW4gTHtYNTA5fSBpbnN0YW5jZSB0byBhZGQgdG8KKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5hZGRfZXh0cmFfY2hhaW5fY2VydGAgYWNjZXB0cyBhbiA6cHk6b2JqOmBYNTA5YCBpbnN0YW5jZSB0byBhZGQgdG8KICAgICAgICAgdGhlIGNlcnRpZmljYXRlIGNoYWluLgogCi0gICAgICAgIFNlZSBMe19jcmVhdGVfY2VydGlmaWNhdGVfY2hhaW59IGZvciB0aGUgZGV0YWlscyBvZiB0aGUgY2VydGlmaWNhdGUKKyAgICAgICAgU2VlIDpweTpvYmo6YF9jcmVhdGVfY2VydGlmaWNhdGVfY2hhaW5gIGZvciB0aGUgZGV0YWlscyBvZiB0aGUgY2VydGlmaWNhdGUKICAgICAgICAgY2hhaW4gdGVzdGVkLgogCiAgICAgICAgIFRoZSBjaGFpbiBpcyB0ZXN0ZWQgYnkgc3RhcnRpbmcgYSBzZXJ2ZXIgd2l0aCBzY2VydCBhbmQgY29ubmVjdGluZwpAQCAtODA1LDcgKzgwNSw3IEBACiAKICAgICBkZWYgdGVzdF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC51c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZX0gcmVhZHMgYSBjZXJ0aWZpY2F0ZSBjaGFpbiBmcm9tCisgICAgICAgIDpweTpvYmo6YENvbnRleHQudXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGVgIHJlYWRzIGEgY2VydGlmaWNhdGUgY2hhaW4gZnJvbQogICAgICAgICB0aGUgc3BlY2lmaWVkIGZpbGUuCiAKICAgICAgICAgVGhlIGNoYWluIGlzIHRlc3RlZCBieSBzdGFydGluZyBhIHNlcnZlciB3aXRoIHNjZXJ0IGFuZCBjb25uZWN0aW5nCkBAIC04NDQsNyArODQ0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF92ZXJpZnlfbW9kZV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LmdldF92ZXJpZnlfbW9kZX0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbnkKKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5nZXRfdmVyaWZ5X21vZGVgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueQogICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC04NTMsOCArODUzLDggQEAKIAogICAgIGRlZiB0ZXN0X2dldF92ZXJpZnlfbW9kZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC5nZXRfdmVyaWZ5X21vZGV9IHJldHVybnMgdGhlIHZlcmlmeSBtb2RlIGZsYWdzIHByZXZpb3VzbHkKLSAgICAgICAgcGFzc2VkIHRvIEx7Q29udGV4dC5zZXRfdmVyaWZ5fS4KKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5nZXRfdmVyaWZ5X21vZGVgIHJldHVybnMgdGhlIHZlcmlmeSBtb2RlIGZsYWdzIHByZXZpb3VzbHkKKyAgICAgICAgcGFzc2VkIHRvIDpweTpvYmo6YENvbnRleHQuc2V0X3ZlcmlmeWAuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRleHQuZ2V0X3ZlcmlmeV9tb2RlKCksIDApCkBAIC04NjYsOCArODY2LDggQEAKIAogICAgIGRlZiB0ZXN0X2xvYWRfdG1wX2RoX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQubG9hZF90bXBfZGh9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCi0gICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3Igd2l0aCBhIG5vbi1De3N0cn0gYXJndW1lbnQuCisgICAgICAgIDpweTpvYmo6YENvbnRleHQubG9hZF90bXBfZGhgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIHRoZSB3cm9uZworICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzIG9yIHdpdGggYSBub24tOnB5Om9iajpgc3RyYCBhcmd1bWVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb250ZXh0LmxvYWRfdG1wX2RoKQpAQCAtODc3LDcgKzg3Nyw3IEBACiAKICAgICBkZWYgdGVzdF9sb2FkX3RtcF9kaF9taXNzaW5nX2ZpbGUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0NvbnRleHQubG9hZF90bXBfZGh9IHJhaXNlcyBMe09wZW5TU0wuU1NMLkVycm9yfSBpZiB0aGUgc3BlY2lmaWVkIGZpbGUKKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5sb2FkX3RtcF9kaGAgcmFpc2VzIDpweTpvYmo6YE9wZW5TU0wuU1NMLkVycm9yYCBpZiB0aGUgc3BlY2lmaWVkIGZpbGUKICAgICAgICAgZG9lcyBub3QgZXhpc3QuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC04ODYsNyArODg2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2xvYWRfdG1wX2RoKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LmxvYWRfdG1wX2RofSBsb2FkcyBEaWZmaWUtSGVsbG1hbiBwYXJhbWV0ZXJzIGZyb20gdGhlCisgICAgICAgIDpweTpvYmo6YENvbnRleHQubG9hZF90bXBfZGhgIGxvYWRzIERpZmZpZS1IZWxsbWFuIHBhcmFtZXRlcnMgZnJvbSB0aGUKICAgICAgICAgc3BlY2lmaWVkIGZpbGUuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC05MDAsNyArOTAwLDcgQEAKIAogICAgIGRlZiB0ZXN0X3NldF9jaXBoZXJfbGlzdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC5zZXRfY2lwaGVyX2xpc3R9IGFjY2VwdHMgYSBDe3N0cn0gbmFtaW5nIHRoZSBjaXBoZXJzIHdoaWNoCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuc2V0X2NpcGhlcl9saXN0YCBhY2NlcHRzIGEgOnB5Om9iajpgc3RyYCBuYW1pbmcgdGhlIGNpcGhlcnMgd2hpY2gKICAgICAgICAgY29ubmVjdGlvbnMgY3JlYXRlZCB3aXRoIHRoZSBjb250ZXh0IG9iamVjdCB3aWxsIGJlIGFibGUgdG8gY2hvb3NlIGZyb20uCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC05MTIsMTIgKzkxMiwxMiBAQAogCiBjbGFzcyBTZXJ2ZXJOYW1lQ2FsbGJhY2tUZXN0cyhUZXN0Q2FzZSwgX0xvb3BiYWNrTWl4aW4pOgogICAgICIiIgotICAgIFRlc3RzIGZvciBMe0NvbnRleHQuc2V0X3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNrfSBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGgKLSAgICBMe0Nvbm5lY3Rpb259LgorICAgIFRlc3RzIGZvciA6cHk6b2JqOmBDb250ZXh0LnNldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFja2AgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoCisgICAgOnB5Om9iajpgQ29ubmVjdGlvbmAuCiAgICAgIiIiCiAgICAgZGVmIHRlc3Rfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29udGV4dC5zZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2t9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuc2V0X3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNrYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQKICAgICAgICAgd2l0aCBvdGhlciB0aGFuIG9uZSBhcmd1bWVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKQEAgLTkyNyw3ICs5MjcsNyBAQAogCiAgICAgZGVmIHRlc3Rfb2xkX2NhbGxiYWNrX2ZvcmdvdHRlbihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIEx7Q29udGV4dC5zZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2t9IGlzIHVzZWQgdG8gc3BlY2lmeSBhIG5ldworICAgICAgICBJZiA6cHk6b2JqOmBDb250ZXh0LnNldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFja2AgaXMgdXNlZCB0byBzcGVjaWZ5IGEgbmV3CiAgICAgICAgIGNhbGxiYWNrLCB0aGUgb25lIGl0IHJlcGxhY2VzIGlzIGRlcmVmZXJlbmNlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGRlZiBjYWxsYmFjayhjb25uZWN0aW9uKToKQEAgLTk1MCw4ICs5NTAsOCBAQAogICAgIGRlZiB0ZXN0X25vX3NlcnZlcm5hbWUoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBXaGVuIGEgY2xpZW50IHNwZWNpZmllcyBubyBzZXJ2ZXIgbmFtZSwgdGhlIGNhbGxiYWNrIHBhc3NlZCB0bwotICAgICAgICBMe0NvbnRleHQuc2V0X3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNrfSBpcyBpbnZva2VkIGFuZCB0aGUgcmVzdWx0IG9mCi0gICAgICAgIEx7Q29ubmVjdGlvbi5nZXRfc2VydmVybmFtZX0gaXMgQ3tOb25lfS4KKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5zZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2tgIGlzIGludm9rZWQgYW5kIHRoZSByZXN1bHQgb2YKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5nZXRfc2VydmVybmFtZWAgaXMgOnB5Om9iajpgTm9uZWAuCiAgICAgICAgICIiIgogICAgICAgICBhcmdzID0gW10KICAgICAgICAgZGVmIHNlcnZlcm5hbWUoY29ubik6CkBAIC05ODMsOCArOTgzLDggQEAKICAgICBkZWYgdGVzdF9zZXJ2ZXJuYW1lKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgV2hlbiBhIGNsaWVudCBzcGVjaWZpZXMgYSBzZXJ2ZXIgbmFtZSBpbiBpdHMgaGVsbG8gbWVzc2FnZSwgdGhlIGNhbGxiYWNrCi0gICAgICAgIHBhc3NlZCB0byBMe0NvbnRleHRzLnNldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFja30gaXMgaW52b2tlZCBhbmQgdGhlCi0gICAgICAgIHJlc3VsdCBvZiBMe0Nvbm5lY3Rpb24uZ2V0X3NlcnZlcm5hbWV9IGlzIHRoYXQgc2VydmVyIG5hbWUuCisgICAgICAgIHBhc3NlZCB0byA6cHk6b2JqOmBDb250ZXh0cy5zZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2tgIGlzIGludm9rZWQgYW5kIHRoZQorICAgICAgICByZXN1bHQgb2YgOnB5Om9iajpgQ29ubmVjdGlvbi5nZXRfc2VydmVybmFtZWAgaXMgdGhhdCBzZXJ2ZXIgbmFtZS4KICAgICAgICAgIiIiCiAgICAgICAgIGFyZ3MgPSBbXQogICAgICAgICBkZWYgc2VydmVybmFtZShjb25uKToKQEAgLTEwMTIsNyArMTAxMiw3IEBACiAKIGNsYXNzIENvbm5lY3Rpb25UZXN0cyhUZXN0Q2FzZSwgX0xvb3BiYWNrTWl4aW4pOgogICAgICIiIgotICAgIFVuaXQgdGVzdHMgZm9yIEx7T3BlblNTTC5TU0wuQ29ubmVjdGlvbn0uCisgICAgVW5pdCB0ZXN0cyBmb3IgOnB5Om9iajpgT3BlblNTTC5TU0wuQ29ubmVjdGlvbmAuCiAgICAgIiIiCiAgICAgIyBYWFggd2FudF93cml0ZQogICAgICMgWFhYIHdhbnRfcmVhZApAQCAtMTAzNCw3ICsxMDM0LDcgQEAKIAogICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb259IGFuZCBMe0Nvbm5lY3Rpb25UeXBlfSByZWZlciB0byB0aGUgc2FtZSB0eXBlIG9iamVjdCBhbmQKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbmAgYW5kIDpweTpvYmo6YENvbm5lY3Rpb25UeXBlYCByZWZlciB0byB0aGUgc2FtZSB0eXBlIG9iamVjdCBhbmQKICAgICAgICAgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlcyBvZiB0aGF0IHR5cGUuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydElkZW50aWNhbChDb25uZWN0aW9uLCBDb25uZWN0aW9uVHlwZSkKQEAgLTEwNDQsOCArMTA0NCw4IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29udGV4dChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5nZXRfY29udGV4dH0gcmV0dXJucyB0aGUgTHtDb250ZXh0fSBpbnN0YW5jZSB1c2VkIHRvCi0gICAgICAgIGNvbnN0cnVjdCB0aGUgTHtDb25uZWN0aW9ufSBpbnN0YW5jZS4KKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5nZXRfY29udGV4dGAgcmV0dXJucyB0aGUgOnB5Om9iajpgQ29udGV4dGAgaW5zdGFuY2UgdXNlZCB0bworICAgICAgICBjb25zdHJ1Y3QgdGhlIDpweTpvYmo6YENvbm5lY3Rpb25gIGluc3RhbmNlLgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IENvbnRleHQoVExTdjFfTUVUSE9EKQogICAgICAgICBjb25uZWN0aW9uID0gQ29ubmVjdGlvbihjb250ZXh0LCBOb25lKQpAQCAtMTA1NCw3ICsxMDU0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9jb250ZXh0X3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24uZ2V0X2NvbnRleHR9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYW55CisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uZ2V0X2NvbnRleHRgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueQogICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjb25uZWN0aW9uID0gQ29ubmVjdGlvbihDb250ZXh0KFRMU3YxX01FVEhPRCksIE5vbmUpCkBAIC0xMDYzLDggKzEwNjMsOCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X2NvbnRleHRfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5zZXRfY29udGV4dH0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhCi0gICAgICAgIG5vbi1Me0NvbnRleHR9IGluc3RhbmNlIGFyZ3VtZW50IG9yIHdpdGggYW55IG51bWJlciBvZiBhcmd1bWVudHMgb3RoZXIKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5zZXRfY29udGV4dGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYQorICAgICAgICBub24tOnB5Om9iajpgQ29udGV4dGAgaW5zdGFuY2UgYXJndW1lbnQgb3Igd2l0aCBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyBvdGhlcgogICAgICAgICB0aGFuIDEuCiAgICAgICAgICIiIgogICAgICAgICBjdHggPSBDb250ZXh0KFRMU3YxX01FVEhPRCkKQEAgLTEwODEsNyArMTA4MSw3IEBACiAKICAgICBkZWYgdGVzdF9zZXRfY29udGV4dChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5zZXRfY29udGV4dH0gc3BlY2lmaWVzIGEgbmV3IEx7Q29udGV4dH0gaW5zdGFuY2UgdG8gYmUgdXNlZAorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLnNldF9jb250ZXh0YCBzcGVjaWZpZXMgYSBuZXcgOnB5Om9iajpgQ29udGV4dGAgaW5zdGFuY2UgdG8gYmUgdXNlZAogICAgICAgICBmb3IgdGhlIGNvbm5lY3Rpb24uCiAgICAgICAgICIiIgogICAgICAgICBvcmlnaW5hbCA9IENvbnRleHQoU1NMdjIzX01FVEhPRCkKQEAgLTEwOTcsOSArMTA5Nyw5IEBACiAKICAgICBkZWYgdGVzdF9zZXRfdGxzZXh0X2hvc3RfbmFtZV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgSWYgTHtDb25uZWN0aW9uLnNldF90bHNleHRfaG9zdF9uYW1lfSBpcyBjYWxsZWQgd2l0aCBhIG5vbi1ieXRlIHN0cmluZworICAgICAgICBJZiA6cHk6b2JqOmBDb25uZWN0aW9uLnNldF90bHNleHRfaG9zdF9uYW1lYCBpcyBjYWxsZWQgd2l0aCBhIG5vbi1ieXRlIHN0cmluZwogICAgICAgICBhcmd1bWVudCBvciBhIGJ5dGUgc3RyaW5nIHdpdGggYW4gZW1iZWRkZWQgTlVMIG9yIG90aGVyIHRoYW4gb25lCi0gICAgICAgIGFyZ3VtZW50LCBMe1R5cGVFcnJvcn0gaXMgcmFpc2VkLgorICAgICAgICBhcmd1bWVudCwgOnB5Om9iajpgVHlwZUVycm9yYCBpcyByYWlzZWQuCiAgICAgICAgICIiIgogICAgICAgICBjb25uID0gQ29ubmVjdGlvbihDb250ZXh0KFRMU3YxX01FVEhPRCksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29ubi5zZXRfdGxzZXh0X2hvc3RfbmFtZSkKQEAgLTExMTcsNyArMTExNyw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfc2VydmVybmFtZV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb25uZWN0aW9uLmdldF9zZXJ2ZXJuYW1lfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLmdldF9zZXJ2ZXJuYW1lYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhbnkKICAgICAgICAgYXJndW1lbnRzLgogICAgICAgICAiIiIKICAgICAgICAgY29ubmVjdGlvbiA9IENvbm5lY3Rpb24oQ29udGV4dChUTFN2MV9NRVRIT0QpLCBOb25lKQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAKIAogICAgIGRlZiB0ZXN0X3BlbmRpbmcoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24ucGVuZGluZ30gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBmb3IKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5wZW5kaW5nYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGZvcgogICAgICAgICBpbW1lZGlhdGUgcmVhZC4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm5lY3Rpb24gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgTm9uZSkKQEAgLTExMzcsNyArMTEzNyw3IEBACiAKICAgICBkZWYgdGVzdF9wZW5kaW5nX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24ucGVuZGluZ30gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzLgorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLnBlbmRpbmdgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjb25uZWN0aW9uID0gQ29ubmVjdGlvbihDb250ZXh0KFRMU3YxX01FVEhPRCksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29ubmVjdGlvbi5wZW5kaW5nLCBOb25lKQpAQCAtMTE0NSw3ICsxMTQ1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5jb25uZWN0fSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGEgbm9uLWFkZHJlc3MKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5jb25uZWN0YCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhIG5vbi1hZGRyZXNzCiAgICAgICAgIGFyZ3VtZW50IG9yIHdpdGggdGhlIHdyb25nIG51bWJlciBvZiBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjb25uZWN0aW9uID0gQ29ubmVjdGlvbihDb250ZXh0KFRMU3YxX01FVEhPRCksIHNvY2tldCgpKQpAQCAtMTE1Niw3ICsxMTU2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfcmVmdXNlZChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5jb25uZWN0fSByYWlzZXMgTHtzb2NrZXQuZXJyb3J9IGlmIHRoZSB1bmRlcmx5aW5nIHNvY2tldAorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLmNvbm5lY3RgIHJhaXNlcyA6cHk6b2JqOmBzb2NrZXQuZXJyb3JgIGlmIHRoZSB1bmRlcmx5aW5nIHNvY2tldAogICAgICAgICBjb25uZWN0IG1ldGhvZCByYWlzZXMgaXQuCiAgICAgICAgICIiIgogICAgICAgICBjbGllbnQgPSBzb2NrZXQoKQpAQCAtMTE2OCw3ICsxMTY4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24uY29ubmVjdH0gZXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4KKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5jb25uZWN0YCBlc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzLgogICAgICAgICAiIiIKICAgICAgICAgcG9ydCA9IHNvY2tldCgpCiAgICAgICAgIHBvcnQuYmluZCgoJycsIDApKQpAQCAtMTE4NCw3ICsxMTg0LDcgQEAKICAgICBlbHNlOgogICAgICAgICBkZWYgdGVzdF9jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJZiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24gZXJyb3IsIEx7Q29ubmVjdGlvbi5jb25uZWN0X2V4fSByZXR1cm5zIHRoZQorICAgICAgICAgICAgSWYgdGhlcmUgaXMgYSBjb25uZWN0aW9uIGVycm9yLCA6cHk6b2JqOmBDb25uZWN0aW9uLmNvbm5lY3RfZXhgIHJldHVybnMgdGhlCiAgICAgICAgICAgICBlcnJubyBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBwb3J0ID0gc29ja2V0KCkKQEAgLTEyMDEsNyArMTIwMSw3IEBACiAKICAgICBkZWYgdGVzdF9hY2NlcHRfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5hY2NlcHR9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy4KKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5hY2NlcHRgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCiAgICAgICAgICIiIgogICAgICAgICBjb25uZWN0aW9uID0gQ29ubmVjdGlvbihDb250ZXh0KFRMU3YxX01FVEhPRCksIHNvY2tldCgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbm5lY3Rpb24uYWNjZXB0LCBOb25lKQpAQCAtMTIwOSw4ICsxMjA5LDggQEAKIAogICAgIGRlZiB0ZXN0X2FjY2VwdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5hY2NlcHR9IGFjY2VwdHMgYSBwZW5kaW5nIGNvbm5lY3Rpb24gYXR0ZW1wdCBhbmQgcmV0dXJucyBhCi0gICAgICAgIHR1cGxlIG9mIGEgbmV3IEx7Q29ubmVjdGlvbn0gKHRoZSBhY2NlcHRlZCBjbGllbnQpIGFuZCB0aGUgYWRkcmVzcyB0aGUKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5hY2NlcHRgIGFjY2VwdHMgYSBwZW5kaW5nIGNvbm5lY3Rpb24gYXR0ZW1wdCBhbmQgcmV0dXJucyBhCisgICAgICAgIHR1cGxlIG9mIGEgbmV3IDpweTpvYmo6YENvbm5lY3Rpb25gICh0aGUgYWNjZXB0ZWQgY2xpZW50KSBhbmQgdGhlIGFkZHJlc3MgdGhlCiAgICAgICAgIGNvbm5lY3Rpb24gb3JpZ2luYXRlZCBmcm9tLgogICAgICAgICAiIiIKICAgICAgICAgY3R4ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC0xMjM2LDcgKzEyMzYsNyBAQAogCiAgICAgZGVmIHRlc3Rfc2h1dGRvd25fd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5zaHV0ZG93bn0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5zaHV0ZG93bmAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggdGhlIHdyb25nCiAgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgb3Igd2l0aCBhcmd1bWVudHMgb3RoZXIgdGhhbiBpbnRlZ2Vycy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm5lY3Rpb24gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgTm9uZSkKQEAgLTEyNDksNyArMTI0OSw3IEBACiAKICAgICBkZWYgdGVzdF9zaHV0ZG93bihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5zaHV0ZG93bn0gcGVyZm9ybXMgYW4gU1NMLWxldmVsIGNvbm5lY3Rpb24gc2h1dGRvd24uCisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uc2h1dGRvd25gIHBlcmZvcm1zIGFuIFNTTC1sZXZlbCBjb25uZWN0aW9uIHNodXRkb3duLgogICAgICAgICAiIiIKICAgICAgICAgc2VydmVyLCBjbGllbnQgPSBzZWxmLl9sb29wYmFjaygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLnNodXRkb3duKCkpCkBAIC0xMjY0LDcgKzEyNjQsNyBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X3NodXRkb3duKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb25uZWN0aW9uLnNldF9zaHV0ZG93bn0gc2V0cyB0aGUgc3RhdGUgb2YgdGhlIFNTTCBjb25uZWN0aW9uIHNodXRkb3duCisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uc2V0X3NodXRkb3duYCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgU1NMIGNvbm5lY3Rpb24gc2h1dGRvd24KICAgICAgICAgcHJvY2Vzcy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm5lY3Rpb24gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgc29ja2V0KCkpCkBAIC0xMjc0LDggKzEyNzQsOCBAQAogCiAgICAgZGVmIHRlc3RfYXBwX2RhdGFfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5zZXRfYXBwX2RhdGF9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggb3RoZXIgdGhhbgotICAgICAgICBvbmUgYXJndW1lbnQuICBMe0Nvbm5lY3Rpb24uZ2V0X2FwcF9kYXRhfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZAorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLnNldF9hcHBfZGF0YWAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggb3RoZXIgdGhhbgorICAgICAgICBvbmUgYXJndW1lbnQuICA6cHk6b2JqOmBDb25uZWN0aW9uLmdldF9hcHBfZGF0YWAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkCiAgICAgICAgIHdpdGggYW55IGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm4gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgTm9uZSkKQEAgLTEyODcsOCArMTI4Nyw4IEBACiAgICAgZGVmIHRlc3RfYXBwX2RhdGEoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBBbnkgb2JqZWN0IGNhbiBiZSBzZXQgYXMgYXBwIGRhdGEgYnkgcGFzc2luZyBpdCB0bwotICAgICAgICBMe0Nvbm5lY3Rpb24uc2V0X2FwcF9kYXRhfSBhbmQgbGF0ZXIgcmV0cmlldmVkIHdpdGgKLSAgICAgICAgTHtDb25uZWN0aW9uLmdldF9hcHBfZGF0YX0uCisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uc2V0X2FwcF9kYXRhYCBhbmQgbGF0ZXIgcmV0cmlldmVkIHdpdGgKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5nZXRfYXBwX2RhdGFgLgogICAgICAgICAiIiIKICAgICAgICAgY29ubiA9IENvbm5lY3Rpb24oQ29udGV4dChUTFN2MV9NRVRIT0QpLCBOb25lKQogICAgICAgICBhcHBfZGF0YSA9IG9iamVjdCgpCkBAIC0xMjk4LDggKzEyOTgsOCBAQAogCiAgICAgZGVmIHRlc3RfbWFrZWZpbGUoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24ubWFrZWZpbGV9IGlzIG5vdCBpbXBsZW1lbnRlZCBhbmQgY2FsbGluZyB0aGF0IG1ldGhvZCByYWlzZXMKLSAgICAgICAgTHtOb3RJbXBsZW1lbnRlZEVycm9yfS4KKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5tYWtlZmlsZWAgaXMgbm90IGltcGxlbWVudGVkIGFuZCBjYWxsaW5nIHRoYXQgbWV0aG9kIHJhaXNlcworICAgICAgICA6cHk6b2JqOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm4gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgY29ubi5tYWtlZmlsZSkKQEAgLTEzMDcsNyArMTMwNyw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfcGVlcl9jZXJ0X2NoYWluX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24uZ2V0X3BlZXJfY2VydF9jaGFpbn0gcmFpc2VzIEx7VHlwZUVycm9yfSBpZiBjYWxsZWQgd2l0aCBhbnkKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5nZXRfcGVlcl9jZXJ0X2NoYWluYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhbnkKICAgICAgICAgYXJndW1lbnRzLgogICAgICAgICAiIiIKICAgICAgICAgY29ubiA9IENvbm5lY3Rpb24oQ29udGV4dChUTFN2MV9NRVRIT0QpLCBOb25lKQpAQCAtMTMxOSw3ICsxMzE5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9wZWVyX2NlcnRfY2hhaW4oc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24uZ2V0X3BlZXJfY2VydF9jaGFpbn0gcmV0dXJucyBhIGxpc3Qgb2YgY2VydGlmaWNhdGVzIHdoaWNoCisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uZ2V0X3BlZXJfY2VydF9jaGFpbmAgcmV0dXJucyBhIGxpc3Qgb2YgY2VydGlmaWNhdGVzIHdoaWNoCiAgICAgICAgIHRoZSBjb25uZWN0ZWQgc2VydmVyIHJldHVybmVkIGZvciB0aGUgY2VydGlmaWNhdGlvbiB2ZXJpZmljYXRpb24uCiAgICAgICAgICIiIgogICAgICAgICBjaGFpbiA9IF9jcmVhdGVfY2VydGlmaWNhdGVfY2hhaW4oKQpAQCAtMTM1Myw3ICsxMzUzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9wZWVyX2NlcnRfY2hhaW5fbm9uZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5nZXRfcGVlcl9jZXJ0X2NoYWlufSByZXR1cm5zIEN7Tm9uZX0gaWYgdGhlIHBlZXIgc2VuZHMgbm8KKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5nZXRfcGVlcl9jZXJ0X2NoYWluYCByZXR1cm5zIDpweTpvYmo6YE5vbmVgIGlmIHRoZSBwZWVyIHNlbmRzIG5vCiAgICAgICAgIGNlcnRpZmljYXRlIGNoYWluLgogICAgICAgICAiIiIKICAgICAgICAgY3R4ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC0xMzcwLDExICsxMzcwLDExIEBACiAKIGNsYXNzIENvbm5lY3Rpb25HZXRDaXBoZXJMaXN0VGVzdHMoVGVzdENhc2UpOgogICAgICIiIgotICAgIFRlc3RzIGZvciBMe0Nvbm5lY3Rpb24uZ2V0X2NpcGhlcl9saXN0fS4KKyAgICBUZXN0cyBmb3IgOnB5Om9iajpgQ29ubmVjdGlvbi5nZXRfY2lwaGVyX2xpc3RgLgogICAgICIiIgogICAgIGRlZiB0ZXN0X3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24uZ2V0X2NpcGhlcl9saXN0fSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLmdldF9jaXBoZXJfbGlzdGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYW55CiAgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm5lY3Rpb24gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgTm9uZSkKQEAgLTEzODMsNyArMTM4Myw3IEBACiAKICAgICBkZWYgdGVzdF9yZXN1bHQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24uZ2V0X2NpcGhlcl9saXN0fSByZXR1cm5zIGEgQ3tsaXN0fSBvZiBDe3N0cn0gZ2l2aW5nIHRoZQorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLmdldF9jaXBoZXJfbGlzdGAgcmV0dXJucyBhIDpweTpvYmo6YGxpc3RgIG9mIDpweTpvYmo6YHN0cmAgZ2l2aW5nIHRoZQogICAgICAgICBuYW1lcyBvZiB0aGUgY2lwaGVycyB3aGljaCBtaWdodCBiZSB1c2VkLgogICAgICAgICAiIiIKICAgICAgICAgY29ubmVjdGlvbiA9IENvbm5lY3Rpb24oQ29udGV4dChUTFN2MV9NRVRIT0QpLCBOb25lKQpAQCAtMTM5NiwxMiArMTM5NiwxMiBAQAogCiBjbGFzcyBDb25uZWN0aW9uU2VuZFRlc3RzKFRlc3RDYXNlLCBfTG9vcGJhY2tNaXhpbik6CiAgICAgIiIiCi0gICAgVGVzdHMgZm9yIEx7Q29ubmVjdGlvbi5zZW5kfQorICAgIFRlc3RzIGZvciA6cHk6b2JqOmBDb25uZWN0aW9uLnNlbmRgCiAgICAgIiIiCiAgICAgZGVmIHRlc3Rfd3JvbmdfYXJncyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFdoZW4gY2FsbGVkIHdpdGggYXJndW1lbnRzIG90aGVyIHRoYW4gYSBzaW5nbGUgc3RyaW5nLAotICAgICAgICBMe0Nvbm5lY3Rpb24uc2VuZH0gcmFpc2VzIEx7VHlwZUVycm9yfS4KKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5zZW5kYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYC4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm5lY3Rpb24gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb25uZWN0aW9uLnNlbmQpCkBAIC0xNDExLDcgKzE0MTEsNyBAQAogCiAgICAgZGVmIHRlc3Rfc2hvcnRfYnl0ZXMoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBXaGVuIHBhc3NlZCBhIHNob3J0IGJ5dGUgc3RyaW5nLCBMe0Nvbm5lY3Rpb24uc2VuZH0gdHJhbnNtaXRzIGFsbCBvZiBpdAorICAgICAgICBXaGVuIHBhc3NlZCBhIHNob3J0IGJ5dGUgc3RyaW5nLCA6cHk6b2JqOmBDb25uZWN0aW9uLnNlbmRgIHRyYW5zbWl0cyBhbGwgb2YgaXQKICAgICAgICAgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBzZW50LgogICAgICAgICAiIiIKICAgICAgICAgc2VydmVyLCBjbGllbnQgPSBzZWxmLl9sb29wYmFjaygpCkBAIC0xNDI3LDcgKzE0MjcsNyBAQAogICAgICAgICBkZWYgdGVzdF9zaG9ydF9tZW1vcnl2aWV3KHNlbGYpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBXaGVuIHBhc3NlZCBhIG1lbW9yeXZpZXcgb250byBhIHNtYWxsIG51bWJlciBvZiBieXRlcywKLSAgICAgICAgICAgIEx7Q29ubmVjdGlvbi5zZW5kfSB0cmFuc21pdHMgYWxsIG9mIHRoZW0gYW5kIHJldHVybnMgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5zZW5kYCB0cmFuc21pdHMgYWxsIG9mIHRoZW0gYW5kIHJldHVybnMgdGhlIG51bWJlciBvZgogICAgICAgICAgICAgYnl0ZXMgc2VudC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VydmVyLCBjbGllbnQgPSBzZWxmLl9sb29wYmFjaygpCkBAIC0xNDM5LDEyICsxNDM5LDEyIEBACiAKIGNsYXNzIENvbm5lY3Rpb25TZW5kYWxsVGVzdHMoVGVzdENhc2UsIF9Mb29wYmFja01peGluKToKICAgICAiIiIKLSAgICBUZXN0cyBmb3IgTHtDb25uZWN0aW9uLnNlbmRhbGx9LgorICAgIFRlc3RzIGZvciA6cHk6b2JqOmBDb25uZWN0aW9uLnNlbmRhbGxgLgogICAgICIiIgogICAgIGRlZiB0ZXN0X3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBXaGVuIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyBvdGhlciB0aGFuIGEgc2luZ2xlIHN0cmluZywKLSAgICAgICAgTHtDb25uZWN0aW9uLnNlbmRhbGx9IHJhaXNlcyBMe1R5cGVFcnJvcn0uCisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uc2VuZGFsbGAgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAuCiAgICAgICAgICIiIgogICAgICAgICBjb25uZWN0aW9uID0gQ29ubmVjdGlvbihDb250ZXh0KFRMU3YxX01FVEhPRCksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29ubmVjdGlvbi5zZW5kYWxsKQpAQCAtMTQ1NCw3ICsxNDU0LDcgQEAKIAogICAgIGRlZiB0ZXN0X3Nob3J0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb25uZWN0aW9uLnNlbmRhbGx9IHRyYW5zbWl0cyBhbGwgb2YgdGhlIGJ5dGVzIGluIHRoZSBzdHJpbmcgcGFzc2VkIHRvCisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uc2VuZGFsbGAgdHJhbnNtaXRzIGFsbCBvZiB0aGUgYnl0ZXMgaW4gdGhlIHN0cmluZyBwYXNzZWQgdG8KICAgICAgICAgaXQuCiAgICAgICAgICIiIgogICAgICAgICBzZXJ2ZXIsIGNsaWVudCA9IHNlbGYuX2xvb3BiYWNrKCkKQEAgLTE0NzAsNyArMTQ3MCw3IEBACiAgICAgICAgIGRlZiB0ZXN0X3Nob3J0X21lbW9yeXZpZXcoc2VsZik6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFdoZW4gcGFzc2VkIGEgbWVtb3J5dmlldyBvbnRvIGEgc21hbGwgbnVtYmVyIG9mIGJ5dGVzLAotICAgICAgICAgICAgTHtDb25uZWN0aW9uLnNlbmRhbGx9IHRyYW5zbWl0cyBhbGwgb2YgdGhlbS4KKyAgICAgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uc2VuZGFsbGAgdHJhbnNtaXRzIGFsbCBvZiB0aGVtLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBzZXJ2ZXIsIGNsaWVudCA9IHNlbGYuX2xvb3BiYWNrKCkKICAgICAgICAgICAgIHNlcnZlci5zZW5kYWxsKG1lbW9yeXZpZXcoYigneCcpKSkKQEAgLTE0NzksNyArMTQ3OSw3IEBACiAKICAgICBkZWYgdGVzdF9sb25nKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb25uZWN0aW9uLnNlbmRhbGx9IHRyYW5zbWl0cyBhbGwgb2YgdGhlIGJ5dGVzIGluIHRoZSBzdHJpbmcgcGFzc2VkIHRvCisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uc2VuZGFsbGAgdHJhbnNtaXRzIGFsbCBvZiB0aGUgYnl0ZXMgaW4gdGhlIHN0cmluZyBwYXNzZWQgdG8KICAgICAgICAgaXQgZXZlbiBpZiB0aGlzIHJlcXVpcmVzIG11bHRpcGxlIGNhbGxzIG9mIGFuIHVuZGVybHlpbmcgd3JpdGUgZnVuY3Rpb24uCiAgICAgICAgICIiIgogICAgICAgICBzZXJ2ZXIsIGNsaWVudCA9IHNlbGYuX2xvb3BiYWNrKCkKQEAgLTE0OTksNyArMTQ5OSw3IEBACiAKICAgICBkZWYgdGVzdF9jbG9zZWQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBJZiB0aGUgdW5kZXJseWluZyBzb2NrZXQgaXMgY2xvc2VkLCBMe0Nvbm5lY3Rpb24uc2VuZGFsbH0gcHJvcGFnYXRlcyB0aGUKKyAgICAgICAgSWYgdGhlIHVuZGVybHlpbmcgc29ja2V0IGlzIGNsb3NlZCwgOnB5Om9iajpgQ29ubmVjdGlvbi5zZW5kYWxsYCBwcm9wYWdhdGVzIHRoZQogICAgICAgICB3cml0ZSBlcnJvciBmcm9tIHRoZSBsb3cgbGV2ZWwgd3JpdGUgY2FsbC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlcnZlciwgY2xpZW50ID0gc2VsZi5fbG9vcGJhY2soKQpAQCAtMTUxNCw3ICsxNTE0LDcgQEAKICAgICAiIiIKICAgICBkZWYgdGVzdF9yZW5lZ290aWF0ZV93cm9uZ19hcmdzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb25uZWN0aW9uLnJlbmVnb3RpYXRlfSByYWlzZXMgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGFueQorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLnJlbmVnb3RpYXRlYCByYWlzZXMgOnB5Om9iajpgVHlwZUVycm9yYCBpZiBjYWxsZWQgd2l0aCBhbnkKICAgICAgICAgYXJndW1lbnRzLgogICAgICAgICAiIiIKICAgICAgICAgY29ubmVjdGlvbiA9IENvbm5lY3Rpb24oQ29udGV4dChUTFN2MV9NRVRIT0QpLCBOb25lKQpAQCAtMTUyMyw3ICsxNTIzLDcgQEAKIAogICAgIGRlZiB0ZXN0X3RvdGFsX3JlbmVnb3RpYXRpb25zX3dyb25nX2FyZ3Moc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBMe0Nvbm5lY3Rpb24udG90YWxfcmVuZWdvdGlhdGlvbnN9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGgKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi50b3RhbF9yZW5lZ290aWF0aW9uc2AgcmFpc2VzIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGgKICAgICAgICAgYW55IGFyZ3VtZW50cy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbm5lY3Rpb24gPSBDb25uZWN0aW9uKENvbnRleHQoVExTdjFfTUVUSE9EKSwgTm9uZSkKQEAgLTE1MzIsNyArMTUzMiw3IEBACiAKICAgICBkZWYgdGVzdF90b3RhbF9yZW5lZ290aWF0aW9ucyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi50b3RhbF9yZW5lZ290aWF0aW9uc30gcmV0dXJucyBDezB9IGJlZm9yZSBhbnkKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi50b3RhbF9yZW5lZ290aWF0aW9uc2AgcmV0dXJucyA6cHk6b2JqOmAwYCBiZWZvcmUgYW55CiAgICAgICAgIHJlbmVnb3RpYXRpb25zIGhhdmUgaGFwcGVuZWQuCiAgICAgICAgICIiIgogICAgICAgICBjb25uZWN0aW9uID0gQ29ubmVjdGlvbihDb250ZXh0KFRMU3YxX01FVEhPRCksIE5vbmUpCkBAIC0xNTYzLDExICsxNTYzLDExIEBACiAKIGNsYXNzIEVycm9yVGVzdHMoVGVzdENhc2UpOgogICAgICIiIgotICAgIFVuaXQgdGVzdHMgZm9yIEx7T3BlblNTTC5TU0wuRXJyb3J9LgorICAgIFVuaXQgdGVzdHMgZm9yIDpweTpvYmo6YE9wZW5TU0wuU1NMLkVycm9yYC4KICAgICAiIiIKICAgICBkZWYgdGVzdF90eXBlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtFcnJvcn0gaXMgYW4gZXhjZXB0aW9uIHR5cGUuCisgICAgICAgIDpweTpvYmo6YEVycm9yYCBpcyBhbiBleGNlcHRpb24gdHlwZS4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEVycm9yLCBFeGNlcHRpb24pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVycm9yLl9fbmFtZV9fLCAnRXJyb3InKQpAQCAtMTU3Niw3ICsxNTc2LDcgQEAKIAogY2xhc3MgQ29uc3RhbnRzVGVzdHMoVGVzdENhc2UpOgogICAgICIiIgotICAgIFRlc3RzIGZvciB0aGUgdmFsdWVzIG9mIGNvbnN0YW50cyBleHBvc2VkIGluIEx7T3BlblNTTC5TU0x9LgorICAgIFRlc3RzIGZvciB0aGUgdmFsdWVzIG9mIGNvbnN0YW50cyBleHBvc2VkIGluIDpweTpvYmo6YE9wZW5TU0wuU1NMYC4KIAogICAgIFRoZXNlIGFyZSB2YWx1ZXMgZGVmaW5lZCBieSBPcGVuU1NMIGludGVuZGVkIG9ubHkgdG8gYmUgdXNlZCBhcyBmbGFncyB0bwogICAgIE9wZW5TU0wgQVBJcy4gIFRoZSBvbmx5IGFzc2VydGlvbnMgaXQgc2VlbXMgY2FuIGJlIG1hZGUgYWJvdXQgdGhlbSBpcwpAQCAtMTU4Niw4ICsxNTg2LDggQEAKICAgICBpZiBPUF9OT19RVUVSWV9NVFUgaXMgbm90IE5vbmU6CiAgICAgICAgIGRlZiB0ZXN0X29wX25vX3F1ZXJ5X210dShzZWxmKToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgVGhlIHZhbHVlIG9mIEx7T3BlblNTTC5TU0wuT1BfTk9fUVVFUllfTVRVfSBpcyAweDEwMDAsIHRoZSB2YWx1ZSBvZgotICAgICAgICAgICAgSXtTU0xfT1BfTk9fUVVFUllfTVRVfSBkZWZpbmVkIGJ5IEl7b3BlbnNzbC9zc2wuaH0uCisgICAgICAgICAgICBUaGUgdmFsdWUgb2YgOnB5Om9iajpgT3BlblNTTC5TU0wuT1BfTk9fUVVFUllfTVRVYCBpcyAweDEwMDAsIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgOnB5OmNvbnN0OmBTU0xfT1BfTk9fUVVFUllfTVRVYCBkZWZpbmVkIGJ5IDpmaWxlOmBvcGVuc3NsL3NzbC5oYC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPUF9OT19RVUVSWV9NVFUsIDB4MTAwMCkKICAgICBlbHNlOgpAQCAtMTU5Nyw4ICsxNTk3LDggQEAKICAgICBpZiBPUF9DT09LSUVfRVhDSEFOR0UgaXMgbm90IE5vbmU6CiAgICAgICAgIGRlZiB0ZXN0X29wX2Nvb2tpZV9leGNoYW5nZShzZWxmKToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgVGhlIHZhbHVlIG9mIEx7T3BlblNTTC5TU0wuT1BfQ09PS0lFX0VYQ0hBTkdFfSBpcyAweDIwMDAsIHRoZSB2YWx1ZQotICAgICAgICAgICAgb2YgSXtTU0xfT1BfQ09PS0lFX0VYQ0hBTkdFfSBkZWZpbmVkIGJ5IEl7b3BlbnNzbC9zc2wuaH0uCisgICAgICAgICAgICBUaGUgdmFsdWUgb2YgOnB5Om9iajpgT3BlblNTTC5TU0wuT1BfQ09PS0lFX0VYQ0hBTkdFYCBpcyAweDIwMDAsIHRoZSB2YWx1ZQorICAgICAgICAgICAgb2YgOnB5OmNvbnN0OmBTU0xfT1BfQ09PS0lFX0VYQ0hBTkdFYCBkZWZpbmVkIGJ5IDpmaWxlOmBvcGVuc3NsL3NzbC5oYC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPUF9DT09LSUVfRVhDSEFOR0UsIDB4MjAwMCkKICAgICBlbHNlOgpAQCAtMTYwOCw4ICsxNjA4LDggQEAKICAgICBpZiBPUF9OT19USUNLRVQgaXMgbm90IE5vbmU6CiAgICAgICAgIGRlZiB0ZXN0X29wX25vX3RpY2tldChzZWxmKToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgVGhlIHZhbHVlIG9mIEx7T3BlblNTTC5TU0wuT1BfTk9fVElDS0VUfSBpcyAweDQwMDAsIHRoZSB2YWx1ZSBvZgotICAgICAgICAgICAgSXtTU0xfT1BfTk9fVElDS0VUfSBkZWZpbmVkIGJ5IEl7b3BlbnNzbC9zc2wuaH0uCisgICAgICAgICAgICBUaGUgdmFsdWUgb2YgOnB5Om9iajpgT3BlblNTTC5TU0wuT1BfTk9fVElDS0VUYCBpcyAweDQwMDAsIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgOnB5OmNvbnN0OmBTU0xfT1BfTk9fVElDS0VUYCBkZWZpbmVkIGJ5IDpmaWxlOmBvcGVuc3NsL3NzbC5oYC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPUF9OT19USUNLRVQsIDB4NDAwMCkKICAgICBlbHNlOgpAQCAtMTYxOSw4ICsxNjE5LDggQEAKICAgICBpZiBPUF9OT19DT01QUkVTU0lPTiBpcyBub3QgTm9uZToKICAgICAgICAgZGVmIHRlc3Rfb3Bfbm9fY29tcHJlc3Npb24oc2VsZik6CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiBMe09wZW5TU0wuU1NMLk9QX05PX0NPTVBSRVNTSU9OfSBpcyAweDIwMDAwLCB0aGUgdmFsdWUKLSAgICAgICAgICAgIG9mIEx7U1NMX09QX05PX0NPTVBSRVNTSU9OfSBkZWZpbmVkIGJ5IEl7b3BlbnNzbC9zc2wuaH0uCisgICAgICAgICAgICBUaGUgdmFsdWUgb2YgOnB5Om9iajpgT3BlblNTTC5TU0wuT1BfTk9fQ09NUFJFU1NJT05gIGlzIDB4MjAwMDAsIHRoZSB2YWx1ZQorICAgICAgICAgICAgb2YgOnB5OmNvbnN0OmBTU0xfT1BfTk9fQ09NUFJFU1NJT05gIGRlZmluZWQgYnkgOmZpbGU6YG9wZW5zc2wvc3NsLmhgLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE9QX05PX0NPTVBSRVNTSU9OLCAweDIwMDAwKQogICAgIGVsc2U6CkBAIC0xNjMwLDEyICsxNjMwLDEyIEBACiAKIGNsYXNzIE1lbW9yeUJJT1Rlc3RzKFRlc3RDYXNlLCBfTG9vcGJhY2tNaXhpbik6CiAgICAgIiIiCi0gICAgVGVzdHMgZm9yIEx7T3BlblNTTC5TU0wuQ29ubmVjdGlvbn0gdXNpbmcgYSBtZW1vcnkgQklPLgorICAgIFRlc3RzIGZvciA6cHk6b2JqOmBPcGVuU1NMLlNTTC5Db25uZWN0aW9uYCB1c2luZyBhIG1lbW9yeSBCSU8uCiAgICAgIiIiCiAgICAgZGVmIF9zZXJ2ZXIoc2VsZiwgc29jayk6CiAgICAgICAgICIiIgotICAgICAgICBDcmVhdGUgYSBuZXcgc2VydmVyLXNpZGUgU1NMIEx7Q29ubmVjdGlvbn0gb2JqZWN0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgIEN7c29ja30uCisgICAgICAgIENyZWF0ZSBhIG5ldyBzZXJ2ZXItc2lkZSBTU0wgOnB5Om9iajpgQ29ubmVjdGlvbmAgb2JqZWN0IHdyYXBwZWQgYXJvdW5kCisgICAgICAgIDpweTpvYmo6YHNvY2tgLgogICAgICAgICAiIiIKICAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciBzaWRlIENvbm5lY3Rpb24uICBUaGlzIGlzIG1vc3RseSBzZXR1cCBib2lsZXJwbGF0ZQogICAgICAgICAjIC0gdXNlIFRMU3YxLCB1c2UgYSBwYXJ0aWN1bGFyIGNlcnRpZmljYXRlLCBldGMuCkBAIC0xNjU2LDggKzE2NTYsOCBAQAogCiAgICAgZGVmIF9jbGllbnQoc2VsZiwgc29jayk6CiAgICAgICAgICIiIgotICAgICAgICBDcmVhdGUgYSBuZXcgY2xpZW50LXNpZGUgU1NMIEx7Q29ubmVjdGlvbn0gb2JqZWN0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgIEN7c29ja30uCisgICAgICAgIENyZWF0ZSBhIG5ldyBjbGllbnQtc2lkZSBTU0wgOnB5Om9iajpgQ29ubmVjdGlvbmAgb2JqZWN0IHdyYXBwZWQgYXJvdW5kCisgICAgICAgIDpweTpvYmo6YHNvY2tgLgogICAgICAgICAiIiIKICAgICAgICAgIyBOb3cgY3JlYXRlIHRoZSBjbGllbnQgc2lkZSBDb25uZWN0aW9uLiAgU2ltaWxhciBib2lsZXJwbGF0ZSB0byB0aGUKICAgICAgICAgIyBhYm92ZS4KQEAgLTE2NzYsNyArMTY3Niw3IEBACiAKICAgICBkZWYgdGVzdF9tZW1vcnlDb25uZWN0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgVHdvIEx7Q29ubmVjdGlvbn1zIHdoaWNoIHVzZSBtZW1vcnkgQklPcyBjYW4gYmUgbWFudWFsbHkgY29ubmVjdGVkIGJ5CisgICAgICAgIFR3byA6cHk6b2JqOmBDb25uZWN0aW9uYHMgd2hpY2ggdXNlIG1lbW9yeSBCSU9zIGNhbiBiZSBtYW51YWxseSBjb25uZWN0ZWQgYnkKICAgICAgICAgcmVhZGluZyBmcm9tIHRoZSBvdXRwdXQgb2YgZWFjaCBhbmQgd3JpdGluZyB0aG9zZSBieXRlcyB0byB0aGUgaW5wdXQgb2YKICAgICAgICAgdGhlIG90aGVyIGFuZCBpbiB0aGlzIHdheSBlc3RhYmxpc2ggYSBjb25uZWN0aW9uIGFuZCBleGNoYW5nZQogICAgICAgICBhcHBsaWNhdGlvbi1sZXZlbCBieXRlcyB3aXRoIGVhY2ggb3RoZXIuCkBAIC0xNzIwLDEwICsxNzIwLDEwIEBACiAKICAgICBkZWYgdGVzdF9zb2NrZXRDb25uZWN0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgSnVzdCBsaWtlIEx7dGVzdF9tZW1vcnlDb25uZWN0fSBidXQgd2l0aCBhbiBhY3R1YWwgc29ja2V0LgorICAgICAgICBKdXN0IGxpa2UgOnB5Om9iajpgdGVzdF9tZW1vcnlDb25uZWN0YCBidXQgd2l0aCBhbiBhY3R1YWwgc29ja2V0LgogCiAgICAgICAgIFRoaXMgaXMgcHJpbWFyaWx5IHRvIHJ1bGUgb3V0IHRoZSBtZW1vcnkgQklPIGNvZGUgYXMgdGhlIHNvdXJjZSBvZgotICAgICAgICBhbnkgcHJvYmxlbXMgZW5jb3VudGVyZWQgd2hpbGUgcGFzc2luZyBkYXRhIG92ZXIgYSBMe0Nvbm5lY3Rpb259IChpZgorICAgICAgICBhbnkgcHJvYmxlbXMgZW5jb3VudGVyZWQgd2hpbGUgcGFzc2luZyBkYXRhIG92ZXIgYSA6cHk6b2JqOmBDb25uZWN0aW9uYCAoaWYKICAgICAgICAgdGhpcyB0ZXN0IGZhaWxzLCB0aGVyZSBtdXN0IGJlIGEgcHJvYmxlbSBvdXRzaWRlIHRoZSBtZW1vcnkgQklPCiAgICAgICAgIGNvZGUsIGFzIG5vIG1lbW9yeSBCSU8gaXMgaW52b2x2ZWQgaGVyZSkuICBFdmVuIHRob3VnaCB0aGlzIGlzbid0IGEKICAgICAgICAgbWVtb3J5IEJJTyB0ZXN0LCBpdCdzIGNvbnZlbmllbnQgdG8gaGF2ZSBpdCBoZXJlLgpAQCAtMTc0NCw4ICsxNzQ0LDggQEAKIAogICAgIGRlZiB0ZXN0X3NvY2tldE92ZXJyaWRlc01lbW9yeShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgdGhhdCBMe09wZW5TU0wuU1NMLmJpb19yZWFkfSBhbmQgTHtPcGVuU1NMLlNTTC5iaW9fd3JpdGV9IGRvbid0Ci0gICAgICAgIHdvcmsgb24gTHtPcGVuU1NMLlNTTC5Db25uZWN0aW9ufSgpIHRoYXQgdXNlIHNvY2tldHMuCisgICAgICAgIFRlc3QgdGhhdCA6cHk6b2JqOmBPcGVuU1NMLlNTTC5iaW9fcmVhZGAgYW5kIDpweTpvYmo6YE9wZW5TU0wuU1NMLmJpb193cml0ZWAgZG9uJ3QKKyAgICAgICAgd29yayBvbiA6cHk6b2JqOmBPcGVuU1NMLlNTTC5Db25uZWN0aW9uYCgpIHRoYXQgdXNlIHNvY2tldHMuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gQ29udGV4dChTU0x2M19NRVRIT0QpCiAgICAgICAgIGNsaWVudCA9IHNvY2tldCgpCkBAIC0xNzU4LDcgKzE3NTgsNyBAQAogICAgIGRlZiB0ZXN0X291dGdvaW5nT3ZlcmZsb3coc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBJZiBtb3JlIGJ5dGVzIHRoYW4gY2FuIGJlIHdyaXR0ZW4gdG8gdGhlIG1lbW9yeSBCSU8gYXJlIHBhc3NlZCB0bwotICAgICAgICBMe0Nvbm5lY3Rpb24uc2VuZH0gYXQgb25jZSwgdGhlIG51bWJlciBvZiBieXRlcyB3aGljaCB3ZXJlIHdyaXR0ZW4gaXMKKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5zZW5kYCBhdCBvbmNlLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoIHdlcmUgd3JpdHRlbiBpcwogICAgICAgICByZXR1cm5lZCBhbmQgdGhhdCBtYW55IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQgY2FuIGJlCiAgICAgICAgIHJlYWQgZnJvbSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0aW9uLgogICAgICAgICAiIiIKQEAgLTE3ODQsOCArMTc4NCw4IEBACiAKICAgICBkZWYgdGVzdF9zaHV0ZG93bihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEx7Q29ubmVjdGlvbi5iaW9fc2h1dGRvd259IHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgZGF0YSBzdHJlYW0gZnJvbQotICAgICAgICB3aGljaCB0aGUgTHtDb25uZWN0aW9ufSByZWFkcy4KKyAgICAgICAgOnB5Om9iajpgQ29ubmVjdGlvbi5iaW9fc2h1dGRvd25gIHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgZGF0YSBzdHJlYW0gZnJvbQorICAgICAgICB3aGljaCB0aGUgOnB5Om9iajpgQ29ubmVjdGlvbmAgcmVhZHMuCiAgICAgICAgICIiIgogICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9zZXJ2ZXIoTm9uZSkKICAgICAgICAgc2VydmVyLmJpb19zaHV0ZG93bigpCkBAIC0xNzk3LDEzICsxNzk3LDEzIEBACiAKICAgICBkZWYgX2NoZWNrX2NsaWVudF9jYV9saXN0KHNlbGYsIGZ1bmMpOgogICAgICAgICAiIiIKLSAgICAgICAgVmVyaWZ5IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIEN7Z2V0X2NsaWVudF9jYV9saXN0fSBtZXRob2QgZm9yIHNlcnZlciBhbmQgY2xpZW50IGNvbm5lY3Rpb25zLgorICAgICAgICBWZXJpZnkgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgOnB5Om9iajpgZ2V0X2NsaWVudF9jYV9saXN0YCBtZXRob2QgZm9yIHNlcnZlciBhbmQgY2xpZW50IGNvbm5lY3Rpb25zLgogCi0gICAgICAgIEBwYXJhbSBmdW5jOiBBIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNlcnZlciBjb250ZXh0CisgICAgICAgIDpwYXJhbSBmdW5jOiBBIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNlcnZlciBjb250ZXh0CiAgICAgICAgICAgICBiZWZvcmUgdGhlIGNsaWVudCBhbmQgc2VydmVyIGFyZSBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlci4gIFRoaXMKICAgICAgICAgICAgIGZ1bmN0aW9uIHNob3VsZCBzcGVjaWZ5IGEgbGlzdCBvZiBDQXMgZm9yIHRoZSBzZXJ2ZXIgdG8gc2VuZCB0byB0aGUKICAgICAgICAgICAgIGNsaWVudCBhbmQgcmV0dXJuIHRoYXQgc2FtZSBsaXN0LiAgVGhlIGxpc3Qgd2lsbCBiZSB1c2VkIHRvIHZlcmlmeQotICAgICAgICAgICAgdGhhdCBDe2dldF9jbGllbnRfY2FfbGlzdH0gcmV0dXJucyB0aGUgcHJvcGVyIHZhbHVlIGF0IHZhcmlvdXMKKyAgICAgICAgICAgIHRoYXQgOnB5Om9iajpgZ2V0X2NsaWVudF9jYV9saXN0YCByZXR1cm5zIHRoZSBwcm9wZXIgdmFsdWUgYXQgdmFyaW91cwogICAgICAgICAgICAgdGltZXMuCiAgICAgICAgICIiIgogICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9zZXJ2ZXIoTm9uZSkKQEAgLTE4MjEsNyArMTgyMSw3IEBACiAKICAgICBkZWYgdGVzdF9zZXRfY2xpZW50X2NhX2xpc3RfZXJyb3JzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LnNldF9jbGllbnRfY2FfbGlzdH0gcmFpc2VzIGEgTHtUeXBlRXJyb3J9IGlmIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgOnB5Om9iajpgQ29udGV4dC5zZXRfY2xpZW50X2NhX2xpc3RgIHJhaXNlcyBhIDpweTpvYmo6YFR5cGVFcnJvcmAgaWYgY2FsbGVkIHdpdGggYQogICAgICAgICBub24tbGlzdCBvciBhIGxpc3QgdGhhdCBjb250YWlucyBvYmplY3RzIG90aGVyIHRoYW4gWDUwOU5hbWVzLgogICAgICAgICAiIiIKICAgICAgICAgY3R4ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC0xODMyLDkgKzE4MzIsOSBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X2VtcHR5X2NhX2xpc3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBJZiBwYXNzZWQgYW4gZW1wdHkgbGlzdCwgTHtDb250ZXh0LnNldF9jbGllbnRfY2FfbGlzdH0gY29uZmlndXJlcyB0aGUKKyAgICAgICAgSWYgcGFzc2VkIGFuIGVtcHR5IGxpc3QsIDpweTpvYmo6YENvbnRleHQuc2V0X2NsaWVudF9jYV9saXN0YCBjb25maWd1cmVzIHRoZQogICAgICAgICBjb250ZXh0IHRvIHNlbmQgbm8gQ0EgbmFtZXMgdG8gdGhlIGNsaWVudCBhbmQsIG9uIGJvdGggdGhlIHNlcnZlciBhbmQKLSAgICAgICAgY2xpZW50IHNpZGVzLCBMe0Nvbm5lY3Rpb24uZ2V0X2NsaWVudF9jYV9saXN0fSByZXR1cm5zIGFuIGVtcHR5IGxpc3QKKyAgICAgICAgY2xpZW50IHNpZGVzLCA6cHk6b2JqOmBDb25uZWN0aW9uLmdldF9jbGllbnRfY2FfbGlzdGAgcmV0dXJucyBhbiBlbXB0eSBsaXN0CiAgICAgICAgIGFmdGVyIHRoZSBjb25uZWN0aW9uIGlzIHNldCB1cC4KICAgICAgICAgIiIiCiAgICAgICAgIGRlZiBub19jYShjdHgpOgpAQCAtMTg0Niw5ICsxODQ2LDkgQEAKICAgICBkZWYgdGVzdF9zZXRfb25lX2NhX2xpc3Qoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBJZiBwYXNzZWQgYSBsaXN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgWDUwOU5hbWUsCi0gICAgICAgIEx7Q29udGV4dC5zZXRfY2xpZW50X2NhX2xpc3R9IGNvbmZpZ3VyZXMgdGhlIGNvbnRleHQgdG8gc2VuZCB0aGF0IENBCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuc2V0X2NsaWVudF9jYV9saXN0YCBjb25maWd1cmVzIHRoZSBjb250ZXh0IHRvIHNlbmQgdGhhdCBDQQogICAgICAgICBuYW1lIHRvIHRoZSBjbGllbnQgYW5kLCBvbiBib3RoIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlcywKLSAgICAgICAgTHtDb25uZWN0aW9uLmdldF9jbGllbnRfY2FfbGlzdH0gcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aGF0CisgICAgICAgIDpweTpvYmo6YENvbm5lY3Rpb24uZ2V0X2NsaWVudF9jYV9saXN0YCByZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIHRoYXQKICAgICAgICAgWDUwOU5hbWUgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaXMgc2V0IHVwLgogICAgICAgICAiIiIKICAgICAgICAgY2FjZXJ0ID0gbG9hZF9jZXJ0aWZpY2F0ZShGSUxFVFlQRV9QRU0sIHJvb3RfY2VydF9wZW0pCkBAIC0xODYyLDkgKzE4NjIsOSBAQAogICAgIGRlZiB0ZXN0X3NldF9tdWx0aXBsZV9jYV9saXN0KHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgSWYgcGFzc2VkIGEgbGlzdCBjb250YWluaW5nIG11bHRpcGxlIFg1MDlOYW1lIG9iamVjdHMsCi0gICAgICAgIEx7Q29udGV4dC5zZXRfY2xpZW50X2NhX2xpc3R9IGNvbmZpZ3VyZXMgdGhlIGNvbnRleHQgdG8gc2VuZCB0aG9zZSBDQQorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LnNldF9jbGllbnRfY2FfbGlzdGAgY29uZmlndXJlcyB0aGUgY29udGV4dCB0byBzZW5kIHRob3NlIENBCiAgICAgICAgIG5hbWVzIHRvIHRoZSBjbGllbnQgYW5kLCBvbiBib3RoIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlcywKLSAgICAgICAgTHtDb25uZWN0aW9uLmdldF9jbGllbnRfY2FfbGlzdH0gcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aG9zZQorICAgICAgICA6cHk6b2JqOmBDb25uZWN0aW9uLmdldF9jbGllbnRfY2FfbGlzdGAgcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aG9zZQogICAgICAgICBYNTA5TmFtZXMgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaXMgc2V0IHVwLgogICAgICAgICAiIiIKICAgICAgICAgc2VjZXJ0ID0gbG9hZF9jZXJ0aWZpY2F0ZShGSUxFVFlQRV9QRU0sIHNlcnZlcl9jZXJ0X3BlbSkKQEAgLTE4ODMsNyArMTg4Myw3IEBACiAgICAgZGVmIHRlc3RfcmVzZXRfY2FfbGlzdChzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIElmIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgb25seSB0aGUgWDUwOU5hbWVzIHBhc3NlZCB0byB0aGUgZmluYWwgY2FsbAotICAgICAgICBvZiBMe0NvbnRleHQuc2V0X2NsaWVudF9jYV9saXN0fSBhcmUgdXNlZCB0byBjb25maWd1cmUgdGhlIENBIG5hbWVzCisgICAgICAgIG9mIDpweTpvYmo6YENvbnRleHQuc2V0X2NsaWVudF9jYV9saXN0YCBhcmUgdXNlZCB0byBjb25maWd1cmUgdGhlIENBIG5hbWVzCiAgICAgICAgIHNlbnQgdG8gdGhlIGNsaWVudC4KICAgICAgICAgIiIiCiAgICAgICAgIGNhY2VydCA9IGxvYWRfY2VydGlmaWNhdGUoRklMRVRZUEVfUEVNLCByb290X2NlcnRfcGVtKQpAQCAtMTkwMyw3ICsxOTAzLDcgQEAKIAogICAgIGRlZiB0ZXN0X211dGF0ZWRfY2FfbGlzdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIHRoZSBsaXN0IHBhc3NlZCB0byBMe0NvbnRleHQuc2V0X2NsaWVudF9jYV9saXN0fSBpcyBtdXRhdGVkCisgICAgICAgIElmIHRoZSBsaXN0IHBhc3NlZCB0byA6cHk6b2JqOmBDb250ZXh0LnNldF9jbGllbnRfY2FfbGlzdGAgaXMgbXV0YXRlZAogICAgICAgICBhZnRlcndhcmRzLCB0aGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgbGlzdCBvZiBDQSBuYW1lcyBzZW50IHRvIHRoZQogICAgICAgICBjbGllbnQuCiAgICAgICAgICIiIgpAQCAtMTkyMyw3ICsxOTIzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2FkZF9jbGllbnRfY2FfZXJyb3JzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgTHtDb250ZXh0LmFkZF9jbGllbnRfY2F9IHJhaXNlcyBMe1R5cGVFcnJvcn0gaWYgY2FsbGVkIHdpdGggYSBub24tWDUwOQorICAgICAgICA6cHk6b2JqOmBDb250ZXh0LmFkZF9jbGllbnRfY2FgIHJhaXNlcyA6cHk6b2JqOmBUeXBlRXJyb3JgIGlmIGNhbGxlZCB3aXRoIGEgbm9uLVg1MDkKICAgICAgICAgb2JqZWN0IG9yIHdpdGggYSBudW1iZXIgb2YgYXJndW1lbnRzIG90aGVyIHRoYW4gb25lLgogICAgICAgICAiIiIKICAgICAgICAgY3R4ID0gQ29udGV4dChUTFN2MV9NRVRIT0QpCkBAIC0xOTM2LDcgKzE5MzYsNyBAQAogICAgIGRlZiB0ZXN0X29uZV9hZGRfY2xpZW50X2NhKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgQSBjZXJ0aWZpY2F0ZSdzIHN1YmplY3QgY2FuIGJlIGFkZGVkIGFzIGEgQ0EgdG8gYmUgc2VudCB0byB0aGUgY2xpZW50Ci0gICAgICAgIHdpdGggTHtDb250ZXh0LmFkZF9jbGllbnRfY2F9LgorICAgICAgICB3aXRoIDpweTpvYmo6YENvbnRleHQuYWRkX2NsaWVudF9jYWAuCiAgICAgICAgICIiIgogICAgICAgICBjYWNlcnQgPSBsb2FkX2NlcnRpZmljYXRlKEZJTEVUWVBFX1BFTSwgcm9vdF9jZXJ0X3BlbSkKICAgICAgICAgY2FkZXNjID0gY2FjZXJ0LmdldF9zdWJqZWN0KCkKQEAgLTE5NDksNyArMTk0OSw3IEBACiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfYWRkX2NsaWVudF9jYShzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIE11bHRpcGxlIENBIG5hbWVzIGNhbiBiZSBzZW50IHRvIHRoZSBjbGllbnQgYnkgY2FsbGluZwotICAgICAgICBMe0NvbnRleHQuYWRkX2NsaWVudF9jYX0gd2l0aCBtdWx0aXBsZSBYNTA5IG9iamVjdHMuCisgICAgICAgIDpweTpvYmo6YENvbnRleHQuYWRkX2NsaWVudF9jYWAgd2l0aCBtdWx0aXBsZSBYNTA5IG9iamVjdHMuCiAgICAgICAgICIiIgogICAgICAgICBjYWNlcnQgPSBsb2FkX2NlcnRpZmljYXRlKEZJTEVUWVBFX1BFTSwgcm9vdF9jZXJ0X3BlbSkKICAgICAgICAgc2VjZXJ0ID0gbG9hZF9jZXJ0aWZpY2F0ZShGSUxFVFlQRV9QRU0sIHNlcnZlcl9jZXJ0X3BlbSkKQEAgLTE5NjYsOCArMTk2Niw4IEBACiAKICAgICBkZWYgdGVzdF9zZXRfYW5kX2FkZF9jbGllbnRfY2Eoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBBIGNhbGwgdG8gTHtDb250ZXh0LnNldF9jbGllbnRfY2FfbGlzdH0gZm9sbG93ZWQgYnkgYSBjYWxsIHRvCi0gICAgICAgIEx7Q29udGV4dC5hZGRfY2xpZW50X2NhfSByZXN1bHRzIGluIHVzaW5nIHRoZSBDQSBuYW1lcyBmcm9tIHRoZSBmaXJzdAorICAgICAgICBBIGNhbGwgdG8gOnB5Om9iajpgQ29udGV4dC5zZXRfY2xpZW50X2NhX2xpc3RgIGZvbGxvd2VkIGJ5IGEgY2FsbCB0bworICAgICAgICA6cHk6b2JqOmBDb250ZXh0LmFkZF9jbGllbnRfY2FgIHJlc3VsdHMgaW4gdXNpbmcgdGhlIENBIG5hbWVzIGZyb20gdGhlIGZpcnN0CiAgICAgICAgIGNhbGwgYW5kIHRoZSBDQSBuYW1lIGZyb20gdGhlIHNlY29uZCBjYWxsLgogICAgICAgICAiIiIKICAgICAgICAgY2FjZXJ0ID0gbG9hZF9jZXJ0aWZpY2F0ZShGSUxFVFlQRV9QRU0sIHJvb3RfY2VydF9wZW0pCkBAIC0xOTg3LDggKzE5ODcsOCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0X2FmdGVyX2FkZF9jbGllbnRfY2Eoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBBIGNhbGwgdG8gTHtDb250ZXh0LnNldF9jbGllbnRfY2FfbGlzdH0gYWZ0ZXIgYSBjYWxsIHRvCi0gICAgICAgIEx7Q29udGV4dC5hZGRfY2xpZW50X2NhfSByZXBsYWNlcyB0aGUgQ0EgbmFtZSBzcGVjaWZpZWQgYnkgdGhlIGZvcm1lcgorICAgICAgICBBIGNhbGwgdG8gOnB5Om9iajpgQ29udGV4dC5zZXRfY2xpZW50X2NhX2xpc3RgIGFmdGVyIGEgY2FsbCB0bworICAgICAgICA6cHk6b2JqOmBDb250ZXh0LmFkZF9jbGllbnRfY2FgIHJlcGxhY2VzIHRoZSBDQSBuYW1lIHNwZWNpZmllZCBieSB0aGUgZm9ybWVyCiAgICAgICAgIGNhbGwgd2l0aCB0aGUgbmFtZXMgc3BlY2lmaWVkIGJ5IHRoZSBsYXR0ZXIgY2FsLgogICAgICAgICAiIiIKICAgICAgICAgY2FjZXJ0ID0gbG9hZF9jZXJ0aWZpY2F0ZShGSUxFVFlQRV9QRU0sIHJvb3RfY2VydF9wZW0pCmRpZmYgLS1naXQgYS9PcGVuU1NML3Rlc3QvdXRpbC5weSBiL09wZW5TU0wvdGVzdC91dGlsLnB5CmluZGV4IDY0M2ZiOTEuLjc5ZGE3NmIgMTAwNjQ0Ci0tLSBhL09wZW5TU0wvdGVzdC91dGlsLnB5CisrKyBiL09wZW5TU0wvdGVzdC91dGlsLnB5CkBAIC0yNywxMiArMjcsMTIgQEAKIAogY2xhc3MgVGVzdENhc2UoVGVzdENhc2UpOgogICAgICIiIgotICAgIEx7VGVzdENhc2V9IGFkZHMgdXNlZnVsIHRlc3RpbmcgZnVuY3Rpb25hbGl0eSBiZXlvbmQgd2hhdCBpcyBhdmFpbGFibGUKLSAgICBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IEx7dW5pdHRlc3QuVGVzdENhc2V9LgorICAgIDpweTpjbGFzczpgVGVzdENhc2VgIGFkZHMgdXNlZnVsIHRlc3RpbmcgZnVuY3Rpb25hbGl0eSBiZXlvbmQgd2hhdCBpcyBhdmFpbGFibGUKKyAgICBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IDpweTpjbGFzczpgdW5pdHRlc3QuVGVzdENhc2VgLgogICAgICIiIgogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIENsZWFuIHVwIGFueSBmaWxlcyBvciBkaXJlY3RvcmllcyBjcmVhdGVkIHVzaW5nIEx7VGVzdENhc2UubWt0ZW1wfS4KKyAgICAgICAgQ2xlYW4gdXAgYW55IGZpbGVzIG9yIGRpcmVjdG9yaWVzIGNyZWF0ZWQgdXNpbmcgOnB5Om1ldGg6YFRlc3RDYXNlLm1rdGVtcGAuCiAgICAgICAgIFN1YmNsYXNzZXMgbXVzdCBpbnZva2UgdGhpcyBtZXRob2QgaWYgdGhleSBvdmVycmlkZSBpdCBvciB0aGUKICAgICAgICAgY2xlYW51cCB3aWxsIG5vdCBvY2N1ci4KICAgICAgICAgIiIiCkBAIC01MiwxMiArNTIsMTIgQEAKIAogICAgIGRlZiBmYWlsVW5sZXNzSW4oc2VsZiwgY29udGFpbmVlLCBjb250YWluZXIsIG1zZz1Ob25lKToKICAgICAgICAgIiIiCi0gICAgICAgIEZhaWwgdGhlIHRlc3QgaWYgQ3tjb250YWluZWV9IGlzIG5vdCBmb3VuZCBpbiBDe2NvbnRhaW5lcn0uCisgICAgICAgIEZhaWwgdGhlIHRlc3QgaWYgOnB5OmRhdGE6YGNvbnRhaW5lZWAgaXMgbm90IGZvdW5kIGluIDpweTpkYXRhOmBjb250YWluZXJgLgogCi0gICAgICAgIEBwYXJhbSBjb250YWluZWU6IHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBpbiBDe2NvbnRhaW5lcn0KLSAgICAgICAgQHBhcmFtIGNvbnRhaW5lcjogYSBzZXF1ZW5jZSB0eXBlLCBvciBpbiB0aGUgY2FzZSBvZiBhIG1hcHBpbmcgdHlwZSwKKyAgICAgICAgOnBhcmFtIGNvbnRhaW5lZTogdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGluIDpweTpjbGFzczpgY29udGFpbmVyYAorICAgICAgICA6cGFyYW0gY29udGFpbmVyOiBhIHNlcXVlbmNlIHR5cGUsIG9yIGluIHRoZSBjYXNlIG9mIGEgbWFwcGluZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGZvbGxvdyBzZW1hbnRpY3Mgb2YgJ2lmIGtleSBpbiBkaWN0LmtleXMoKScKLSAgICAgICAgQHBhcmFtIG1zZzogaWYgbXNnIGlzIE5vbmUsIHRoZW4gdGhlIGZhaWx1cmUgbWVzc2FnZSB3aWxsIGJlCisgICAgICAgIDpwYXJhbSBtc2c6IGlmIG1zZyBpcyBOb25lLCB0aGVuIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugd2lsbCBiZQogICAgICAgICAgICAgICAgICAgICAnJXIgbm90IGluICVyJyAlIChmaXJzdCwgc2Vjb25kKQogICAgICAgICAiIiIKICAgICAgICAgaWYgY29udGFpbmVlIG5vdCBpbiBjb250YWluZXI6CkBAIC02OCwxMSArNjgsMTEgQEAKIAogICAgIGRlZiBmYWlsVW5sZXNzSWRlbnRpY2FsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKToKICAgICAgICAgIiIiCi0gICAgICAgIEZhaWwgdGhlIHRlc3QgaWYgQ3tmaXJzdH0gaXMgbm90IEN7c2Vjb25kfS4gIFRoaXMgaXMgYW4KKyAgICAgICAgRmFpbCB0aGUgdGVzdCBpZiA6cHk6ZGF0YTpgZmlyc3RgIGlzIG5vdCA6cHk6ZGF0YTpgc2Vjb25kYC4gIFRoaXMgaXMgYW4KICAgICAgICAgb2JlY3QtaWRlbnRpdHktZXF1YWxpdHkgdGVzdCwgbm90IGFuIG9iamVjdCBlcXVhbGl0eQotICAgICAgICAoaS5lLiBDe19fZXFfX30pIHRlc3QuCisgICAgICAgIChpLmUuIDpweTpmdW5jOmBfX2VxX19gKSB0ZXN0LgogCi0gICAgICAgIEBwYXJhbSBtc2c6IGlmIG1zZyBpcyBOb25lLCB0aGVuIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugd2lsbCBiZQorICAgICAgICA6cGFyYW0gbXNnOiBpZiBtc2cgaXMgTm9uZSwgdGhlbiB0aGUgZmFpbHVyZSBtZXNzYWdlIHdpbGwgYmUKICAgICAgICAgJyVyIGlzIG5vdCAlcicgJSAoZmlyc3QsIHNlY29uZCkKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGZpcnN0IGlzIG5vdCBzZWNvbmQ6CkBAIC04MywxMSArODMsMTEgQEAKIAogICAgIGRlZiBmYWlsSWZJZGVudGljYWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpOgogICAgICAgICAiIiIKLSAgICAgICAgRmFpbCB0aGUgdGVzdCBpZiBDe2ZpcnN0fSBpcyBDe3NlY29uZH0uICBUaGlzIGlzIGFuCisgICAgICAgIEZhaWwgdGhlIHRlc3QgaWYgOnB5OmRhdGE6YGZpcnN0YCBpcyA6cHk6ZGF0YTpgc2Vjb25kYC4gIFRoaXMgaXMgYW4KICAgICAgICAgb2JlY3QtaWRlbnRpdHktZXF1YWxpdHkgdGVzdCwgbm90IGFuIG9iamVjdCBlcXVhbGl0eQotICAgICAgICAoaS5lLiBDe19fZXFfX30pIHRlc3QuCisgICAgICAgIChpLmUuIDpweTpmdW5jOmBfX2VxX19gKSB0ZXN0LgogCi0gICAgICAgIEBwYXJhbSBtc2c6IGlmIG1zZyBpcyBOb25lLCB0aGVuIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugd2lsbCBiZQorICAgICAgICA6cGFyYW0gbXNnOiBpZiBtc2cgaXMgTm9uZSwgdGhlbiB0aGUgZmFpbHVyZSBtZXNzYWdlIHdpbGwgYmUKICAgICAgICAgJyVyIGlzICVyJyAlIChmaXJzdCwgc2Vjb25kKQogICAgICAgICAiIiIKICAgICAgICAgaWYgZmlyc3QgaXMgc2Vjb25kOgpAQCAtOTgsMTUgKzk4LDE2IEBACiAKICAgICBkZWYgZmFpbFVubGVzc1JhaXNlcyhzZWxmLCBleGNlcHRpb24sIGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgotICAgICAgICBGYWlsIHRoZSB0ZXN0IHVubGVzcyBjYWxsaW5nIHRoZSBmdW5jdGlvbiBDe2Z9IHdpdGggdGhlIGdpdmVuCi0gICAgICAgIEN7YXJnc30gYW5kIEN7a3dhcmdzfSByYWlzZXMgQ3tleGNlcHRpb259LiBUaGUgZmFpbHVyZSB3aWxsIHJlcG9ydAotICAgICAgICB0aGUgdHJhY2ViYWNrIGFuZCBjYWxsIHN0YWNrIG9mIHRoZSB1bmV4cGVjdGVkIGV4Y2VwdGlvbi4KKyAgICAgICAgRmFpbCB0aGUgdGVzdCB1bmxlc3MgY2FsbGluZyB0aGUgZnVuY3Rpb24gOnB5OmRhdGE6YGZgIHdpdGggdGhlIGdpdmVuCisgICAgICAgIDpweTpkYXRhOmBhcmdzYCBhbmQgOnB5OmRhdGE6YGt3YXJnc2AgcmFpc2VzIDpweTpkYXRhOmBleGNlcHRpb25gLiBUaGUKKyAgICAgICAgZmFpbHVyZSB3aWxsIHJlcG9ydCB0aGUgdHJhY2ViYWNrIGFuZCBjYWxsIHN0YWNrIG9mIHRoZSB1bmV4cGVjdGVkCisgICAgICAgIGV4Y2VwdGlvbi4KIAotICAgICAgICBAcGFyYW0gZXhjZXB0aW9uOiBleGNlcHRpb24gdHlwZSB0aGF0IGlzIHRvIGJlIGV4cGVjdGVkCi0gICAgICAgIEBwYXJhbSBmOiB0aGUgZnVuY3Rpb24gdG8gY2FsbAorICAgICAgICA6cGFyYW0gZXhjZXB0aW9uOiBleGNlcHRpb24gdHlwZSB0aGF0IGlzIHRvIGJlIGV4cGVjdGVkCisgICAgICAgIDpwYXJhbSBmOiB0aGUgZnVuY3Rpb24gdG8gY2FsbAogCi0gICAgICAgIEByZXR1cm46IFRoZSByYWlzZWQgZXhjZXB0aW9uIGluc3RhbmNlLCBpZiBpdCBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS4KLSAgICAgICAgQHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbjogUmFpc2VkIGlmIHRoZSBmdW5jdGlvbiBjYWxsIGRvZXMKKyAgICAgICAgOnJldHVybjogVGhlIHJhaXNlZCBleGNlcHRpb24gaW5zdGFuY2UsIGlmIGl0IGlzIG9mIHRoZSBnaXZlbiB0eXBlLgorICAgICAgICA6cmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uOiBSYWlzZWQgaWYgdGhlIGZ1bmN0aW9uIGNhbGwgZG9lcwogICAgICAgICAgICAgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiBvciBpZiBpdCByYWlzZXMgYW4gZXhjZXB0aW9uIG9mIGEKICAgICAgICAgICAgIGRpZmZlcmVudCB0eXBlLgogICAgICAgICAiIiIKQEAgLTE1MCwxNCArMTUxLDE0IEBACiAgICAgIyBPdGhlciBzdHVmZgogICAgIGRlZiBhc3NlcnRDb25zaXN0ZW50VHlwZShzZWxmLCB0aGVUeXBlLCBuYW1lLCAqY29uc3RydWN0aW9uQXJncyk6CiAgICAgICAgICIiIgotICAgICAgICBQZXJmb3JtIHZhcmlvdXMgYXNzZXJ0aW9ucyBhYm91dCBDe3RoZVR5cGV9IHRvIGVuc3VyZSB0aGF0IGl0IGlzIGEKKyAgICAgICAgUGVyZm9ybSB2YXJpb3VzIGFzc2VydGlvbnMgYWJvdXQgOnB5OmRhdGE6YHRoZVR5cGVgIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGEKICAgICAgICAgd2VsbC1kZWZpbmVkIHR5cGUuICBUaGlzIGlzIHVzZWZ1bCBmb3IgZXh0ZW5zaW9uIHR5cGVzLCB3aGVyZSBpdCdzCiAgICAgICAgIHByZXR0eSBlYXN5IHRvIGRvIHNvbWV0aGluZyB3YWNreS4gIElmIHNvbWV0aGluZyBhYm91dCB0aGUgdHlwZSBpcwogICAgICAgICB1bnVzdWFsLCBhbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCiAKLSAgICAgICAgQHBhcmFtIHRoZVR5cGU6IFRoZSB0eXBlIG9iamVjdCBhYm91dCB3aGljaCB0byBtYWtlIGFzc2VydGlvbnMuCi0gICAgICAgIEBwYXJhbSBuYW1lOiBBIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUgb2YgdGhlIHR5cGUuCi0gICAgICAgIEBwYXJhbSBjb25zdHJ1Y3Rpb25BcmdzOiBQb3NpdGlvbmFsIGFyZ3VtZW50cyB0byB1c2Ugd2l0aCBDe3RoZVR5cGV9IHRvCisgICAgICAgIDpwYXJhbSB0aGVUeXBlOiBUaGUgdHlwZSBvYmplY3QgYWJvdXQgd2hpY2ggdG8gbWFrZSBhc3NlcnRpb25zLgorICAgICAgICA6cGFyYW0gbmFtZTogQSBzdHJpbmcgZ2l2aW5nIHRoZSBuYW1lIG9mIHRoZSB0eXBlLgorICAgICAgICA6cGFyYW0gY29uc3RydWN0aW9uQXJnczogUG9zaXRpb25hbCBhcmd1bWVudHMgdG8gdXNlIHdpdGggOnB5OmRhdGE6YHRoZVR5cGVgIHRvCiAgICAgICAgICAgICBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgaXQuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZVR5cGUuX19uYW1lX18sIG5hbWUpCmRpZmYgLS1naXQgYS9kb2MvTWFrZWZpbGUgYi9kb2MvTWFrZWZpbGUKaW5kZXggMDdhYWJkYy4uNDIwMmJlZSAxMDA2NDQKLS0tIGEvZG9jL01ha2VmaWxlCisrKyBiL2RvYy9NYWtlZmlsZQpAQCAtMSwyMCArMSwxMzAgQEAKLVBBUEVSID0gYTQKLU1LSE9XVE8gPSBweXRob24gdG9vbHMvbWtob3d0byAtLSQoUEFQRVIpCisjIE1ha2VmaWxlIGZvciBTcGhpbnggZG9jdW1lbnRhdGlvbgorIwogCi1kZWZhdWx0OiBodG1sCisjIFlvdSBjYW4gc2V0IHRoZXNlIHZhcmlhYmxlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCitTUEhJTlhPUFRTICAgID0KK1NQSElOWEJVSUxEICAgPSBzcGhpbngtYnVpbGQKK1BBUEVSICAgICAgICAgPQorQlVJTERESVIgICAgICA9IF9idWlsZAogCi1hbGw6IHBzIGh0bWwgdGV4dCBkdmkKKyMgSW50ZXJuYWwgdmFyaWFibGVzLgorUEFQRVJPUFRfYTQgICAgID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1hNAorUEFQRVJPUFRfbGV0dGVyID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1sZXR0ZXIKK0FMTFNQSElOWE9QVFMgICA9IC1kICQoQlVJTERESVIpL2RvY3RyZWVzICQoUEFQRVJPUFRfJChQQVBFUikpICQoU1BISU5YT1BUUykgLgogCi1kdmkgcHMgdGV4dDogcHlPcGVuU1NMLnRleAotCSQoTUtIT1dUTykgLS0kQCAkXgorLlBIT05ZOiBoZWxwIGNsZWFuIGh0bWwgZGlyaHRtbCBzaW5nbGVodG1sIHBpY2tsZSBqc29uIGh0bWxoZWxwIHF0aGVscCBkZXZoZWxwIGVwdWIgbGF0ZXggbGF0ZXhwZGYgdGV4dCBtYW4gY2hhbmdlcyBsaW5rY2hlY2sgZG9jdGVzdAogCi1odG1sOiBweU9wZW5TU0wudGV4Ci0JJChNS0hPV1RPKSAtLWh0bWwgLS1pY29uc2VydmVyIC4gJF4KLQktcm0gLXJmIGh0bWwKLQltdiBweU9wZW5TU0wgaHRtbAoraGVscDoKKwlAZWNobyAiUGxlYXNlIHVzZSBcYG1ha2UgPHRhcmdldD4nIHdoZXJlIDx0YXJnZXQ+IGlzIG9uZSBvZiIKKwlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzIgorCUBlY2hvICIgIGRpcmh0bWwgICAgdG8gbWFrZSBIVE1MIGZpbGVzIG5hbWVkIGluZGV4Lmh0bWwgaW4gZGlyZWN0b3JpZXMiCisJQGVjaG8gIiAgc2luZ2xlaHRtbCB0byBtYWtlIGEgc2luZ2xlIGxhcmdlIEhUTUwgZmlsZSIKKwlAZWNobyAiICBwaWNrbGUgICAgIHRvIG1ha2UgcGlja2xlIGZpbGVzIgorCUBlY2hvICIgIGpzb24gICAgICAgdG8gbWFrZSBKU09OIGZpbGVzIgorCUBlY2hvICIgIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0IgorCUBlY2hvICIgIHF0aGVscCAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIHF0aGVscCBwcm9qZWN0IgorCUBlY2hvICIgIGRldmhlbHAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIERldmhlbHAgcHJvamVjdCIKKwlAZWNobyAiICBlcHViICAgICAgIHRvIG1ha2UgYW4gZXB1YiIKKwlAZWNobyAiICBsYXRleCAgICAgIHRvIG1ha2UgTGFUZVggZmlsZXMsIHlvdSBjYW4gc2V0IFBBUEVSPWE0IG9yIFBBUEVSPWxldHRlciIKKwlAZWNobyAiICBsYXRleHBkZiAgIHRvIG1ha2UgTGFUZVggZmlsZXMgYW5kIHJ1biB0aGVtIHRocm91Z2ggcGRmbGF0ZXgiCisJQGVjaG8gIiAgdGV4dCAgICAgICB0byBtYWtlIHRleHQgZmlsZXMiCisJQGVjaG8gIiAgbWFuICAgICAgICB0byBtYWtlIG1hbnVhbCBwYWdlcyIKKwlAZWNobyAiICBjaGFuZ2VzICAgIHRvIG1ha2UgYW4gb3ZlcnZpZXcgb2YgYWxsIGNoYW5nZWQvYWRkZWQvZGVwcmVjYXRlZCBpdGVtcyIKKwlAZWNobyAiICBsaW5rY2hlY2sgIHRvIGNoZWNrIGFsbCBleHRlcm5hbCBsaW5rcyBmb3IgaW50ZWdyaXR5IgorCUBlY2hvICIgIGRvY3Rlc3QgICAgdG8gcnVuIGFsbCBkb2N0ZXN0cyBlbWJlZGRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoaWYgZW5hYmxlZCkiCiAKIGNsZWFuOgotCXJtIC1yZiBodG1sIHB5T3BlblNTTC5kdmkgcHlPcGVuU1NMLnBzIHB5T3BlblNTTC50eHQgXAotCSAgICBweU9wZW5TU0wubDJoIHB5T3BlblNTTC5ob3cKKwktcm0gLXJmICQoQlVJTERESVIpLyoKIAotLlBIT05ZOiBkZWZhdWx0IGFsbCBodG1sIGR2aSBwcyB0ZXh0IGNsZWFuCitodG1sOgorCSQoU1BISU5YQlVJTEQpIC1iIGh0bWwgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9odG1sCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9odG1sLiIKKworZGlyaHRtbDoKKwkkKFNQSElOWEJVSUxEKSAtYiBkaXJodG1sICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZGlyaHRtbAorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvZGlyaHRtbC4iCisKK3NpbmdsZWh0bWw6CisJJChTUEhJTlhCVUlMRCkgLWIgc2luZ2xlaHRtbCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3NpbmdsZWh0bWwKKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwgcGFnZSBpcyBpbiAkKEJVSUxERElSKS9zaW5nbGVodG1sLiIKKworcGlja2xlOgorCSQoU1BISU5YQlVJTEQpIC1iIHBpY2tsZSAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3BpY2tsZQorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBwcm9jZXNzIHRoZSBwaWNrbGUgZmlsZXMuIgorCitqc29uOgorCSQoU1BISU5YQlVJTEQpIC1iIGpzb24gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9qc29uCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIEpTT04gZmlsZXMuIgorCitodG1saGVscDoKKwkkKFNQSElOWEJVSUxEKSAtYiBodG1saGVscCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2h0bWxoZWxwCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHJ1biBIVE1MIEhlbHAgV29ya3Nob3Agd2l0aCB0aGUiIFwKKwkgICAgICAiLmhocCBwcm9qZWN0IGZpbGUgaW4gJChCVUlMRERJUikvaHRtbGhlbHAuIgorCitxdGhlbHA6CisJJChTUEhJTlhCVUlMRCkgLWIgcXRoZWxwICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvcXRoZWxwCisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHJ1biAicWNvbGxlY3Rpb25nZW5lcmF0b3IiIHdpdGggdGhlIiBcCisJICAgICAgIi5xaGNwIHByb2plY3QgZmlsZSBpbiAkKEJVSUxERElSKS9xdGhlbHAsIGxpa2UgdGhpczoiCisJQGVjaG8gIiMgcWNvbGxlY3Rpb25nZW5lcmF0b3IgJChCVUlMRERJUikvcXRoZWxwL3B5T3BlblNTTC5xaGNwIgorCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6IgorCUBlY2hvICIjIGFzc2lzdGFudCAtY29sbGVjdGlvbkZpbGUgJChCVUlMRERJUikvcXRoZWxwL3B5T3BlblNTTC5xaGMiCisKK2RldmhlbHA6CisJJChTUEhJTlhCVUlMRCkgLWIgZGV2aGVscCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RldmhlbHAKKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4iCisJQGVjaG8gIlRvIHZpZXcgdGhlIGhlbHAgZmlsZToiCisJQGVjaG8gIiMgbWtkaXIgLXAgJCRIT01FLy5sb2NhbC9zaGFyZS9kZXZoZWxwL3B5T3BlblNTTCIKKwlAZWNobyAiIyBsbiAtcyAkKEJVSUxERElSKS9kZXZoZWxwICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC9weU9wZW5TU0wiCisJQGVjaG8gIiMgZGV2aGVscCIKKworZXB1YjoKKwkkKFNQSElOWEJVSUxEKSAtYiBlcHViICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZXB1YgorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgZXB1YiBmaWxlIGlzIGluICQoQlVJTERESVIpL2VwdWIuIgorCitsYXRleDoKKwkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2xhdGV4CisJQGVjaG8KKwlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IHRoZSBMYVRlWCBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvbGF0ZXguIgorCUBlY2hvICJSdW4gXGBtYWtlJyBpbiB0aGF0IGRpcmVjdG9yeSB0byBydW4gdGhlc2UgdGhyb3VnaCAocGRmKWxhdGV4IiBcCisJICAgICAgIih1c2UgXGBtYWtlIGxhdGV4cGRmJyBoZXJlIHRvIGRvIHRoYXQgYXV0b21hdGljYWxseSkuIgorCitsYXRleHBkZjoKKwkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2xhdGV4CisJQGVjaG8gIlJ1bm5pbmcgTGFUZVggZmlsZXMgdGhyb3VnaCBwZGZsYXRleC4uLiIKKwltYWtlIC1DICQoQlVJTERESVIpL2xhdGV4IGFsbC1wZGYKKwlAZWNobyAicGRmbGF0ZXggZmluaXNoZWQ7IHRoZSBQREYgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL2xhdGV4LiIKKwordGV4dDoKKwkkKFNQSElOWEJVSUxEKSAtYiB0ZXh0ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvdGV4dAorCUBlY2hvCisJQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgdGV4dCBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4dC4iCisKK21hbjoKKwkkKFNQSElOWEJVSUxEKSAtYiBtYW4gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9tYW4KKwlAZWNobworCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIG1hbnVhbCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvbWFuLiIKKworY2hhbmdlczoKKwkkKFNQSElOWEJVSUxEKSAtYiBjaGFuZ2VzICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvY2hhbmdlcworCUBlY2hvCisJQGVjaG8gIlRoZSBvdmVydmlldyBmaWxlIGlzIGluICQoQlVJTERESVIpL2NoYW5nZXMuIgorCitsaW5rY2hlY2s6CisJJChTUEhJTlhCVUlMRCkgLWIgbGlua2NoZWNrICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvbGlua2NoZWNrCisJQGVjaG8KKwlAZWNobyAiTGluayBjaGVjayBjb21wbGV0ZTsgbG9vayBmb3IgYW55IGVycm9ycyBpbiB0aGUgYWJvdmUgb3V0cHV0ICIgXAorCSAgICAgICJvciBpbiAkKEJVSUxERElSKS9saW5rY2hlY2svb3V0cHV0LnR4dC4iCisKK2RvY3Rlc3Q6CisJJChTUEhJTlhCVUlMRCkgLWIgZG9jdGVzdCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RvY3Rlc3QKKwlAZWNobyAiVGVzdGluZyBvZiBkb2N0ZXN0cyBpbiB0aGUgc291cmNlcyBmaW5pc2hlZCwgbG9vayBhdCB0aGUgIiBcCisJICAgICAgInJlc3VsdHMgaW4gJChCVUlMRERJUikvZG9jdGVzdC9vdXRwdXQudHh0LiIKZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUgYi9kb2MvUkVBRE1FCmluZGV4IDBjZWZmMTUuLjJhNTI1YmIgMTAwNjQ0Ci0tLSBhL2RvYy9SRUFETUUKKysrIGIvZG9jL1JFQURNRQpAQCAtMSwxOCArMSw0IEBACitUaGlzIGlzIHRoZSBweU9wZW5TU0wgZG9jdW1lbnRhdGlvbiBzb3VyY2UuICBJdCB1c2VzIFNwaGlueC4gIFRvIGJ1aWxkIHRoZQorZG9jdW1lbnRhdGlvbiwgaW5zdGFsbCBTcGhpbnggMS4wIGFuZCBydW46CiAKLU9ubHkgdGhlIC50ZXggZm9ybWF0IGRvY3VtZW50YXRpb24gaXMgb3JpZ2luYWwsCi1iZWNhdXNlIHRoZSBvdGhlcnMgYXJlIGRlcml2ZWQgZnJvbSBpdCwgc28gZG9uJ3QKLWVkaXQgdGhlbSBkaXJlY3RseS4gIFRvIGJ1aWxkIHRoZSBvdGhlciBmb3JtYXRzCi11c2UgYSBjb21tYW5kIG9mIC4uLgotCi0gIG1ha2UgYWxsCi0KLQotVG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24geW91IHdpbGwgbmVlZCB0byBoYXZlCi1sYXRleDJodG1sIGFuZCBseW54IGluc3RhbGxlZC4gIE9uIEZlZG9yYSBib3RoIGNhbgotYmUgb2J0YWluZWQgd2l0aCAuLi4KLQotICBzdWRvIHl1bSBpbnN0YWxsIGxhdGV4Mmh0bWwgbHlueAotCi1PciBvbiBEZWJpYW4gb3IgVWJ1bnR1IC4uLgotCi0gIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGxhdGV4Mmh0bWwgbHlueAorICAgICQgbWFrZSBodG1sCmRpZmYgLS1naXQgYS9kb2MvYXBpLnJzdCBiL2RvYy9hcGkucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNmVjNGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYXBpLnJzdApAQCAtMCwwICsxLDE4IEBACisuLiBfb3BlbnNzbDoKKworOnB5Om1vZDpgT3BlblNTTGAgLS0tIFB5dGhvbiBpbnRlcmZhY2UgdG8gT3BlblNTTAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBweTptb2R1bGU6OiBPcGVuU1NMCisgICA6c3lub3BzaXM6IFB5dGhvbiBpbnRlcmZhY2UgdG8gT3BlblNTTAorCisKK1RoaXMgcGFja2FnZSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlIHRvIHRoZSBmdW5jdGlvbnMgaW4gdGhlCitPcGVuU1NMIGxpYnJhcnkuIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgZGVmaW5lZDoKKworLi4gdG9jdHJlZTo6CisgICA6bWF4ZGVwdGg6IDIKKworICAgYXBpL2NyeXB0bworICAgYXBpL3JhbmQKKyAgIGFwaS9zc2wKZGlmZiAtLWdpdCBhL2RvYy9hcGkvY3J5cHRvLnJzdCBiL2RvYy9hcGkvY3J5cHRvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM5NjFjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2FwaS9jcnlwdG8ucnN0CkBAIC0wLDAgKzEsNzUxIEBACisuLiBfb3BlbnNzbC1jcnlwdG86CisKKzpweTptb2Q6YGNyeXB0b2AgLS0tIEdlbmVyaWMgY3J5cHRvZ3JhcGhpYyBtb2R1bGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gcHk6bW9kdWxlOjogT3BlblNTTC5jcnlwdG8KKyAgIDpzeW5vcHNpczogR2VuZXJpYyBjcnlwdG9ncmFwaGljIG1vZHVsZQorCisKKy4uIHB5OmRhdGE6OiBYNTA5VHlwZQorCisgICAgU2VlIDpweTpjbGFzczpgWDUwOWAuCisKKworLi4gcHk6Y2xhc3M6OiBYNTA5KCkKKworICAgIEEgY2xhc3MgcmVwcmVzZW50aW5nIFguNTA5IGNlcnRpZmljYXRlcy4KKworCisuLiBweTpkYXRhOjogWDUwOU5hbWVUeXBlCisKKyAgICBTZWUgOnB5OmNsYXNzOmBYNTA5TmFtZWAuCisKKworLi4gcHk6Y2xhc3M6OiBYNTA5TmFtZSh4NTA5bmFtZSkKKworICAgIEEgY2xhc3MgcmVwcmVzZW50aW5nIFguNTA5IERpc3Rpbmd1aXNoZWQgTmFtZXMuCisKKyAgICBUaGlzIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBjb3B5IG9mICp4NTA5bmFtZSogd2hpY2ggc2hvdWxkIGJlIGFuCisgICAgaW5zdGFuY2Ugb2YgOnB5OmNsYXNzOmBYNTA5TmFtZWAuCisKKworLi4gcHk6ZGF0YTo6IFg1MDlSZXFUeXBlCisKKyAgICBTZWUgOnB5OmNsYXNzOmBYNTA5UmVxYC4KKworCisuLiBweTpjbGFzczo6IFg1MDlSZXEoKQorCisgICAgQSBjbGFzcyByZXByZXNlbnRpbmcgWC41MDkgY2VydGlmaWNhdGUgcmVxdWVzdHMuCisKKworLi4gcHk6ZGF0YTo6IFg1MDlTdG9yZVR5cGUKKworICAgIEEgUHl0aG9uIHR5cGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgWDUwOVN0b3JlIG9iamVjdCB0eXBlLgorCisKKy4uIHB5OmRhdGE6OiBQS2V5VHlwZQorCisgICAgU2VlIDpweTpjbGFzczpgUEtleWAuCisKKworLi4gcHk6Y2xhc3M6OiBQS2V5KCkKKworICAgIEEgY2xhc3MgcmVwcmVzZW50aW5nIERTQSBvciBSU0Ega2V5cy4KKworCisuLiBweTpkYXRhOjogUEtDUzdUeXBlCisKKyAgICBBIFB5dGhvbiB0eXBlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFBLQ1M3IG9iamVjdCB0eXBlLgorCisKKy4uIHB5OmRhdGE6OiBQS0NTMTJUeXBlCisKKyAgICBBIFB5dGhvbiB0eXBlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFBLQ1MxMiBvYmplY3QgdHlwZS4KKworCisuLiBweTpkYXRhOjogWDUwOUV4dGVuc2lvblR5cGUKKworICAgIFNlZSA6cHk6Y2xhc3M6YFg1MDlFeHRlbnNpb25gLgorCisKKy4uIHB5OmNsYXNzOjogWDUwOUV4dGVuc2lvbih0eXBlbmFtZSwgY3JpdGljYWwsIHZhbHVlWywgc3ViamVjdF1bLCBpc3N1ZXJdKQorCisgICAgQSBjbGFzcyByZXByZXNlbnRpbmcgYW4gWC41MDkgdjMgY2VydGlmaWNhdGUgZXh0ZW5zaW9ucy4gIFNlZQorICAgIGh0dHA6Ly9vcGVuc3NsLm9yZy9kb2NzL2FwcHMveDUwOXYzX2NvbmZpZy5odG1sI1NUQU5EQVJEX0VYVEVOU0lPTlMgZm9yCisgICAgKnR5cGVuYW1lKiBzdHJpbmdzIGFuZCB0aGVpciBvcHRpb25zLiAgT3B0aW9uYWwgcGFyYW1ldGVycyAqc3ViamVjdCogYW5kCisgICAgKmlzc3VlciogbXVzdCBiZSBYNTA5IG9iamVjdHMuCisKKworLi4gcHk6ZGF0YTo6IE5ldHNjYXBlU1BLSVR5cGUKKworICAgIFNlZSA6cHk6Y2xhc3M6YE5ldHNjYXBlU1BLSWAuCisKKworLi4gcHk6Y2xhc3M6OiBOZXRzY2FwZVNQS0koW2VuY10pCisKKyAgICBBIGNsYXNzIHJlcHJlc2VudGluZyBOZXRzY2FwZSBTUEtJIG9iamVjdHMuCisKKyAgICBJZiB0aGUgKmVuYyogYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgc2hvdWxkIGJlIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nCisgICAgcmVwcmVzZW50aW5nIGEgTmV0c2NhcGVTUEtJIG9iamVjdCwgYXMgcmV0dXJuZWQgYnkgdGhlIDpweTptZXRoOmBiNjRfZW5jb2RlYAorICAgIG1ldGhvZC4KKworCisuLiBweTpjbGFzczo6IENSTCgpCisKKyAgICBBIGNsYXNzIHJlcHJlc2VudGluZyBDZXJ0aWZjYXRlIFJldm9jYXRpb24gTGlzdCBvYmplY3RzLgorCisKKy4uIHB5OmNsYXNzOjogUmV2b2tlZCgpCisKKyAgICBBIGNsYXNzIHJlcHJlc2VudGluZyBSZXZvY2F0aW9uIG9iamVjdHMgb2YgQ1JMLgorCisKKy4uIHB5OmRhdGE6OiBGSUxFVFlQRV9QRU0KKyAgICAgICAgICAgICBGSUxFVFlQRV9BU04xCisKKyAgICBGaWxlIHR5cGUgY29uc3RhbnRzLgorCisKKy4uIHB5OmRhdGE6OiBUWVBFX1JTQQorICAgICAgICAgICAgIFRZUEVfRFNBCisKKyAgICBLZXkgdHlwZSBjb25zdGFudHMuCisKKworLi4gcHk6ZXhjZXB0aW9uOjogRXJyb3IKKworICAgIEdlbmVyaWMgZXhjZXB0aW9uIHVzZWQgaW4gdGhlIDpweTptb2Q6YC5jcnlwdG9gIG1vZHVsZS4KKworCisuLiBweTpmdW5jdGlvbjo6IGR1bXBfY2VydGlmaWNhdGUodHlwZSwgY2VydCkKKworICAgIER1bXAgdGhlIGNlcnRpZmljYXRlICpjZXJ0KiBpbnRvIGEgYnVmZmVyIHN0cmluZyBlbmNvZGVkIHdpdGggdGhlIHR5cGUKKyAgICAqdHlwZSouCisKKworLi4gcHk6ZnVuY3Rpb246OiBkdW1wX2NlcnRpZmljYXRlX3JlcXVlc3QodHlwZSwgcmVxKQorCisgICAgRHVtcCB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCAqcmVxKiBpbnRvIGEgYnVmZmVyIHN0cmluZyBlbmNvZGVkIHdpdGggdGhlCisgICAgdHlwZSAqdHlwZSouCisKKworLi4gcHk6ZnVuY3Rpb246OiBkdW1wX3ByaXZhdGVrZXkodHlwZSwgcGtleVssIGNpcGhlciwgcGFzc3BocmFzZV0pCisKKyAgICBEdW1wIHRoZSBwcml2YXRlIGtleSAqcGtleSogaW50byBhIGJ1ZmZlciBzdHJpbmcgZW5jb2RlZCB3aXRoIHRoZSB0eXBlCisgICAgKnR5cGUqLCBvcHRpb25hbGx5IChpZiAqdHlwZSogaXMgOnB5OmNvbnN0OmBGSUxFVFlQRV9QRU1gKSBlbmNyeXB0aW5nIGl0CisgICAgdXNpbmcgKmNpcGhlciogYW5kICpwYXNzcGhyYXNlKi4KKworICAgICpwYXNzcGhyYXNlKiBtdXN0IGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGNhbGxiYWNrIGZvciBwcm92aWRpbmcgdGhlCisgICAgcGFzcyBwaHJhc2UuCisKKworLi4gcHk6ZnVuY3Rpb246OiBsb2FkX2NlcnRpZmljYXRlKHR5cGUsIGJ1ZmZlcikKKworICAgIExvYWQgYSBjZXJ0aWZpY2F0ZSAoWDUwOSkgZnJvbSB0aGUgc3RyaW5nICpidWZmZXIqIGVuY29kZWQgd2l0aCB0aGUKKyAgICB0eXBlICp0eXBlKi4KKworCisuLiBweTpmdW5jdGlvbjo6IGxvYWRfY2VydGlmaWNhdGVfcmVxdWVzdCh0eXBlLCBidWZmZXIpCisKKyAgICBMb2FkIGEgY2VydGlmaWNhdGUgcmVxdWVzdCAoWDUwOVJlcSkgZnJvbSB0aGUgc3RyaW5nICpidWZmZXIqIGVuY29kZWQgd2l0aAorICAgIHRoZSB0eXBlICp0eXBlKi4KKworCisuLiBweTpmdW5jdGlvbjo6IGxvYWRfcHJpdmF0ZWtleSh0eXBlLCBidWZmZXJbLCBwYXNzcGhyYXNlXSkKKworICAgIExvYWQgYSBwcml2YXRlIGtleSAoUEtleSkgZnJvbSB0aGUgc3RyaW5nICpidWZmZXIqIGVuY29kZWQgd2l0aCB0aGUgdHlwZQorICAgICp0eXBlKiAobXVzdCBiZSBvbmUgb2YgOnB5OmNvbnN0OmBGSUxFVFlQRV9QRU1gIGFuZAorICAgIDpweTpjb25zdDpgRklMRVRZUEVfQVNOMWApLgorCisgICAgKnBhc3NwaHJhc2UqIG11c3QgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgY2FsbGJhY2sgZm9yIHByb3ZpZGluZyB0aGUgcGFzcworICAgIHBocmFzZS4KKworCisuLiBweTpmdW5jdGlvbjo6IGxvYWRfY3JsKHR5cGUsIGJ1ZmZlcikKKworICAgIExvYWQgQ2VydGlmaWNhdGUgUmV2b2NhdGlvbiBMaXN0IChDUkwpIGRhdGEgZnJvbSBhIHN0cmluZyAqYnVmZmVyKi4KKyAgICAqYnVmZmVyKiBlbmNvZGVkIHdpdGggdGhlIHR5cGUgKnR5cGUqLiAgVGhlIHR5cGUgKnR5cGUqIG11c3QgZWl0aGVyCisgICAgOnB5OmNvbnN0OmBGSUxFVFlQRV9QRU1gIG9yIDpweTpjb25zdDpgRklMRVRZUEVfQVNOMWApLgorCisKKy4uIHB5OmZ1bmN0aW9uOjogbG9hZF9wa2NzN19kYXRhKHR5cGUsIGJ1ZmZlcikKKworICAgIExvYWQgcGtjczcgZGF0YSBmcm9tIHRoZSBzdHJpbmcgKmJ1ZmZlciogZW5jb2RlZCB3aXRoIHRoZSB0eXBlICp0eXBlKi4KKworCisuLiBweTpmdW5jdGlvbjo6IGxvYWRfcGtjczEyKGJ1ZmZlclssIHBhc3NwaHJhc2VdKQorCisgICAgTG9hZCBwa2NzMTIgZGF0YSBmcm9tIHRoZSBzdHJpbmcgKmJ1ZmZlciouIElmIHRoZSBwa2NzMTIgc3RydWN0dXJlIGlzCisgICAgZW5jcnlwdGVkLCBhICpwYXNzcGhyYXNlKiBtdXN0IGJlIGluY2x1ZGVkLiAgVGhlIE1BQyBpcyBhbHdheXMKKyAgICBjaGVja2VkIGFuZCB0aHVzIHJlcXVpcmVkLgorCisgICAgU2VlIGFsc28gdGhlIG1hbiBwYWdlIGZvciB0aGUgQyBmdW5jdGlvbiA6cHk6ZnVuYzpgUEtDUzEyX3BhcnNlYC4KKworCisuLiBweTpmdW5jdGlvbjo6IHNpZ24oa2V5LCBkYXRhLCBkaWdlc3QpCisKKyAgICBTaWduIGEgZGF0YSBzdHJpbmcgdXNpbmcgdGhlIGdpdmVuIGtleSBhbmQgbWVzc2FnZSBkaWdlc3QuCisKKyAgICAqa2V5KiBpcyBhIDpweTpjbGFzczpgUEtleWAgaW5zdGFuY2UuICAqZGF0YSogaXMgYSBgYHN0cmBgIGluc3RhbmNlLgorICAgICpkaWdlc3QqIGlzIGEgYGBzdHJgYCBuYW1pbmcgYSBzdXBwb3J0ZWQgbWVzc2FnZSBkaWdlc3QgdHlwZSwgZm9yIGV4YW1wbGUKKyAgICA6cHk6Y29uc3Q6YHNoYTFgLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xMQorCisKKy4uIHB5OmZ1bmN0aW9uOjogdmVyaWZ5KGNlcnRpZmljYXRlLCBzaWduYXR1cmUsIGRhdGEsIGRpZ2VzdCkKKworICAgIFZlcmlmeSB0aGUgc2lnbmF0dXJlIGZvciBhIGRhdGEgc3RyaW5nLgorCisgICAgKmNlcnRpZmljYXRlKiBpcyBhIDpweTpjbGFzczpgWDUwOWAgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgcHJpdmF0ZQorICAgIGtleSB3aGljaCBnZW5lcmF0ZWQgdGhlIHNpZ25hdHVyZS4gICpzaWduYXR1cmUqIGlzIGEgKnN0ciogaW5zdGFuY2UgZ2l2aW5nCisgICAgdGhlIHNpZ25hdHVyZSBpdHNlbGYuICAqZGF0YSogaXMgYSAqc3RyKiBpbnN0YW5jZSBnaXZpbmcgdGhlIGRhdGEgdG8gd2hpY2gKKyAgICB0aGUgc2lnbmF0dXJlIGFwcGxpZXMuICAqZGlnZXN0KiBpcyBhICpzdHIqIGluc3RhbmNlIG5hbWluZyB0aGUgbWVzc2FnZQorICAgIGRpZ2VzdCB0eXBlIG9mIHRoZSBzaWduYXR1cmUsIGZvciBleGFtcGxlIDpweTpjb25zdDpgc2hhMWAuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjExCisKKworLi4gX29wZW5zc2wteDUwOToKKworWDUwOSBvYmplY3RzCistLS0tLS0tLS0tLS0KKworWDUwOSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisuLiBweTptZXRob2Q6OiBYNTA5LmdldF9pc3N1ZXIoKQorCisgICAgUmV0dXJuIGFuIFg1MDlOYW1lIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGlzc3VlciBvZiB0aGUgY2VydGlmaWNhdGUuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nZXRfcHVia2V5KCkKKworICAgIFJldHVybiBhIDpweTpjbGFzczpgUEtleWAgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcHVibGljIGtleSBvZiB0aGUgY2VydGlmaWNhdGUuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nZXRfc2VyaWFsX251bWJlcigpCisKKyAgICBSZXR1cm4gdGhlIGNlcnRpZmljYXRlIHNlcmlhbCBudW1iZXIuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nZXRfc2lnbmF0dXJlX2FsZ29yaXRobSgpCisKKyAgICBSZXR1cm4gdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gdXNlZCBpbiB0aGUgY2VydGlmaWNhdGUuICBJZiB0aGUgYWxnb3JpdGhtIGlzCisgICAgdW5kZWZpbmVkLCByYWlzZSA6cHk6ZGF0YTpgVmFsdWVFcnJvcmAuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nZXRfc3ViamVjdCgpCisKKyAgICBSZXR1cm4gYW4gOnB5OmNsYXNzOmBYNTA5TmFtZWAgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc3ViamVjdCBvZiB0aGUgY2VydGlmaWNhdGUuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nZXRfdmVyc2lvbigpCisKKyAgICBSZXR1cm4gdGhlIGNlcnRpZmljYXRlIHZlcnNpb24uCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nZXRfbm90QmVmb3JlKCkKKworICAgIFJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIHRpbWUgYmVmb3JlIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQuICBUaGUKKyAgICBzdHJpbmcgaXMgZm9ybWF0dGVkIGFzIGFuIEFTTjEgR0VORVJBTElaRURUSU1FOjoKKworICAgICAgICBZWVlZTU1ERGhobW1zc1oKKyAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbQorICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tCisKKyAgICBJZiBubyB2YWx1ZSBleGlzdHMgZm9yIHRoaXMgZmllbGQsIDpweTpkYXRhOmBOb25lYCBpcyByZXR1cm5lZC4KKworCisuLiBweTptZXRob2Q6OiBYNTA5LmdldF9ub3RBZnRlcigpCisKKyAgICBSZXR1cm4gYSBzdHJpbmcgZ2l2aW5nIHRoZSB0aW1lIGFmdGVyIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQuICBUaGUKKyAgICBzdHJpbmcgaXMgZm9ybWF0dGVkIGFzIGFuIEFTTjEgR0VORVJBTElaRURUSU1FOjoKKworICAgICAgICBZWVlZTU1ERGhobW1zc1oKKyAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbQorICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tCisKKyAgICBJZiBubyB2YWx1ZSBleGlzdHMgZm9yIHRoaXMgZmllbGQsIDpweTpkYXRhOmBOb25lYCBpcyByZXR1cm5lZC4KKworCisuLiBweTptZXRob2Q6OiBYNTA5LnNldF9ub3RCZWZvcmUod2hlbikKKworICAgIENoYW5nZSB0aGUgdGltZSBiZWZvcmUgd2hpY2ggdGhlIGNlcnRpZmljYXRlIGlzIG5vdCB2YWxpZC4gICp3aGVuKiBpcyBhCisgICAgc3RyaW5nIGZvcm1hdHRlZCBhcyBhbiBBU04xIEdFTkVSQUxJWkVEVElNRTo6CisKKyAgICAgICAgWVlZWU1NRERoaG1tc3NaCisgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KKyAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDkuc2V0X25vdEFmdGVyKHdoZW4pCisKKyAgICBDaGFuZ2UgdGhlIHRpbWUgYWZ0ZXIgd2hpY2ggdGhlIGNlcnRpZmljYXRlIGlzIG5vdCB2YWxpZC4gICp3aGVuKiBpcyBhCisgICAgc3RyaW5nIGZvcm1hdHRlZCBhcyBhbiBBU04xIEdFTkVSQUxJWkVEVElNRTo6CisKKyAgICAgICAgWVlZWU1NRERoaG1tc3NaCisgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KKyAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQorCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nbXRpbWVfYWRqX25vdEJlZm9yZSh0aW1lKQorCisgICAgQWRqdXN0IHRoZSB0aW1lc3RhbXAgKGluIEdNVCkgd2hlbiB0aGUgY2VydGlmaWNhdGUgc3RhcnRzIGJlaW5nIHZhbGlkLgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDkuZ210aW1lX2Fkal9ub3RBZnRlcih0aW1lKQorCisgICAgQWRqdXN0IHRoZSB0aW1lc3RhbXAgKGluIEdNVCkgd2hlbiB0aGUgY2VydGlmaWNhdGUgc3RvcHMgYmVpbmcgdmFsaWQuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5oYXNfZXhwaXJlZCgpCisKKyAgICBDaGVja3MgdGhlIGNlcnRpZmljYXRlJ3MgdGltZSBzdGFtcCBhZ2FpbnN0IGN1cnJlbnQgdGltZS4gUmV0dXJucyB0cnVlIGlmIHRoZQorICAgIGNlcnRpZmljYXRlIGhhcyBleHBpcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5zZXRfaXNzdWVyKGlzc3VlcikKKworICAgIFNldCB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byAqaXNzdWVyKi4KKworCisuLiBweTptZXRob2Q6OiBYNTA5LnNldF9wdWJrZXkocGtleSkKKworICAgIFNldCB0aGUgcHVibGljIGtleSBvZiB0aGUgY2VydGlmaWNhdGUgdG8gKnBrZXkqLgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDkuc2V0X3NlcmlhbF9udW1iZXIoc2VyaWFsbm8pCisKKyAgICBTZXQgdGhlIHNlcmlhbCBudW1iZXIgb2YgdGhlIGNlcnRpZmljYXRlIHRvICpzZXJpYWxubyouCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5zZXRfc3ViamVjdChzdWJqZWN0KQorCisgICAgU2V0IHRoZSBzdWJqZWN0IG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byAqc3ViamVjdCouCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5zZXRfdmVyc2lvbih2ZXJzaW9uKQorCisgICAgU2V0IHRoZSBjZXJ0aWZpY2F0ZSB2ZXJzaW9uIHRvICp2ZXJzaW9uKi4KKworCisuLiBweTptZXRob2Q6OiBYNTA5LnNpZ24ocGtleSwgZGlnZXN0KQorCisgICAgU2lnbiB0aGUgY2VydGlmaWNhdGUsIHVzaW5nIHRoZSBrZXkgKnBrZXkqIGFuZCB0aGUgbWVzc2FnZSBkaWdlc3QgYWxnb3JpdGhtCisgICAgaWRlbnRpZmllZCBieSB0aGUgc3RyaW5nICpkaWdlc3QqLgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDkuc3ViamVjdF9uYW1lX2hhc2goKQorCisgICAgUmV0dXJuIHRoZSBoYXNoIG9mIHRoZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0LgorCisuLiBweTptZXRob2Q6OiBYNTA5LmRpZ2VzdChkaWdlc3RfbmFtZSkKKworICAgIFJldHVybiBhIGRpZ2VzdCBvZiB0aGUgY2VydGlmaWNhdGUsIHVzaW5nIHRoZSAqZGlnZXN0X25hbWUqIG1ldGhvZC4KKyAgICAqZGlnZXN0X25hbWUqIG11c3QgYmUgYSBzdHJpbmcgZGVzY3JpYmluZyBhIGRpZ2VzdCBhbGdvcml0aG0gc3VwcG9ydGVkCisgICAgYnkgT3BlblNTTCAoYnkgRVZQX2dldF9kaWdlc3RieW5hbWUsIHNwZWNpZmljYWxseSkuICBGb3IgZXhhbXBsZSwKKyAgICA6cHk6Y29uc3Q6YCJtZDUiYCBvciA6cHk6Y29uc3Q6YCJzaGExImAuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5hZGRfZXh0ZW5zaW9ucyhleHRlbnNpb25zKQorCisgICAgQWRkIHRoZSBleHRlbnNpb25zIGluIHRoZSBzZXF1ZW5jZSAqZXh0ZW5zaW9ucyogdG8gdGhlIGNlcnRpZmljYXRlLgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDkuZ2V0X2V4dGVuc2lvbl9jb3VudCgpCisKKyAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBleHRlbnNpb25zIG9uIHRoaXMgY2VydGlmaWNhdGUuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjEyCisKKworLi4gcHk6bWV0aG9kOjogWDUwOS5nZXRfZXh0ZW5zaW9uKGluZGV4KQorCisgICAgUmV0cmlldmUgdGhlIGV4dGVuc2lvbiBvbiB0aGlzIGNlcnRpZmljYXRlIGF0IHRoZSBnaXZlbiBpbmRleC4KKworICAgIEV4dGVuc2lvbnMgb24gYSBjZXJ0aWZpY2F0ZSBhcmUga2VwdCBpbiBvcmRlci4gIFRoZSBpbmRleCBwYXJhbWV0ZXIgc2VsZWN0cworICAgIHdoaWNoIGV4dGVuc2lvbiB3aWxsIGJlIHJldHVybmVkLiAgVGhlIHJldHVybmVkIG9iamVjdCB3aWxsIGJlIGFuCisgICAgOnB5OmNsYXNzOmBYNTA5RXh0ZW5zaW9uYCBpbnN0YW5jZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuMTIKKworCisuLiBfb3BlbnNzbC14NTA5bmFtZToKKworWDUwOU5hbWUgb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLQorCitYNTA5TmFtZSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisuLiBweTptZXRob2Q6OiBYNTA5TmFtZS5oYXNoKCkKKworICAgIFJldHVybiBhbiBpbnRlZ2VyIGdpdmluZyB0aGUgZmlyc3QgZm91ciBieXRlcyBvZiB0aGUgTUQ1IGRpZ2VzdCBvZiB0aGUgREVSCisgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5hbWUuCisKKworLi4gcHk6bWV0aG9kOjogWDUwOU5hbWUuZGVyKCkKKworICAgIFJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIERFUiByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmFtZS4KKworCisuLiBweTptZXRob2Q6OiBYNTA5TmFtZS5nZXRfY29tcG9uZW50cygpCisKKyAgICBSZXR1cm4gYSBsaXN0IG9mIHR3by10dXBsZXMgb2Ygc3RyaW5ncyBnaXZpbmcgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG5hbWUuCisKKworWDUwOU5hbWUgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKKworLi4gcHk6YXR0cmlidXRlOjogWDUwOU5hbWUuY291bnRyeU5hbWUKKworICAgIFRoZSBjb3VudHJ5IG9mIHRoZSBlbnRpdHkuIDpweTphdHRyOmBDYCBtYXkgYmUgdXNlZCBhcyBhbiBhbGlhcyBmb3IKKyAgICA6cHk6YXR0cjpgY291bnRyeU5hbWVgLgorCisKKy4uIHB5OmF0dHJpYnV0ZTo6IFg1MDlOYW1lLnN0YXRlT3JQcm92aW5jZU5hbWUKKworICAgIFRoZSBzdGF0ZSBvciBwcm92aW5jZSBvZiB0aGUgZW50aXR5LiA6cHk6YXR0cjpgU1RgIG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgorICAgIDpweTphdHRyOmBzdGF0ZU9yUHJvdmluY2VOYW1lYC4KKworCisuLiBweTphdHRyaWJ1dGU6OiBYNTA5TmFtZS5sb2NhbGl0eU5hbWUKKworICAgIFRoZSBsb2NhbGl0eSBvZiB0aGUgZW50aXR5LiA6cHk6YXR0cjpgTGAgbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCisgICAgOnB5OmF0dHI6YGxvY2FsaXR5TmFtZWAuCisKKworLi4gcHk6YXR0cmlidXRlOjogWDUwOU5hbWUub3JnYW5pemF0aW9uTmFtZQorCisgICAgVGhlIG9yZ2FuaXphdGlvbiBuYW1lIG9mIHRoZSBlbnRpdHkuIDpweTphdHRyOmBPYCBtYXkgYmUgdXNlZCBhcyBhbiBhbGlhcyBmb3IKKyAgICA6cHk6YXR0cjpgb3JnYW5pemF0aW9uTmFtZWAuCisKKworLi4gcHk6YXR0cmlidXRlOjogWDUwOU5hbWUub3JnYW5pemF0aW9uYWxVbml0TmFtZQorCisgICAgVGhlIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgdGhlIGVudGl0eS4gOnB5OmF0dHI6YE9VYCBtYXkgYmUgdXNlZCBhcyBhbiBhbGlhcyBmb3IKKyAgICA6cHk6YXR0cjpgb3JnYW5pemF0aW9uYWxVbml0TmFtZWAuCisKKworLi4gcHk6YXR0cmlidXRlOjogWDUwOU5hbWUuY29tbW9uTmFtZQorCisgICAgVGhlIGNvbW1vbiBuYW1lIG9mIHRoZSBlbnRpdHkuIDpweTphdHRyOmBDTmAgbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCisgICAgOnB5OmF0dHI6YGNvbW1vbk5hbWVgLgorCisKKy4uIHB5OmF0dHJpYnV0ZTo6IFg1MDlOYW1lLmVtYWlsQWRkcmVzcworCisgICAgVGhlIGUtbWFpbCBhZGRyZXNzIG9mIHRoZSBlbnRpdHkuCisKKworLi4gX29wZW5zc2wteDUwOXJlcToKKworWDUwOVJlcSBvYmplY3RzCistLS0tLS0tLS0tLS0tLS0KKworWDUwOVJlcSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisuLiBweTptZXRob2Q6OiBYNTA5UmVxLmdldF9wdWJrZXkoKQorCisgICAgUmV0dXJuIGEgOnB5OmNsYXNzOmBQS2V5YCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0LgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDlSZXEuZ2V0X3N1YmplY3QoKQorCisgICAgUmV0dXJuIGFuIDpweTpjbGFzczpgWDUwOU5hbWVgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHN1YmplY3Qgb2YgdGhlIGNlcnRpZmljYXRlLgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDlSZXEuc2V0X3B1YmtleShwa2V5KQorCisgICAgU2V0IHRoZSBwdWJsaWMga2V5IG9mIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IHRvICpwa2V5Ki4KKworCisuLiBweTptZXRob2Q6OiBYNTA5UmVxLnNpZ24ocGtleSwgZGlnZXN0KQorCisgICAgU2lnbiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCwgdXNpbmcgdGhlIGtleSAqcGtleSogYW5kIHRoZSBtZXNzYWdlIGRpZ2VzdAorICAgIGFsZ29yaXRobSBpZGVudGlmaWVkIGJ5IHRoZSBzdHJpbmcgKmRpZ2VzdCouCisKKworLi4gcHk6bWV0aG9kOjogWDUwOVJlcS52ZXJpZnkocGtleSkKKworICAgIFZlcmlmeSBhIGNlcnRpZmljYXRlIHJlcXVlc3QgdXNpbmcgdGhlIHB1YmxpYyBrZXkgKnBrZXkqLgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDlSZXEuc2V0X3ZlcnNpb24odmVyc2lvbikKKworICAgIFNldCB0aGUgdmVyc2lvbiAoUkZDIDI0NTksIDQuMS4yLjEpIG9mIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IHRvCisgICAgKnZlcnNpb24qLgorCisKKy4uIHB5Om1ldGhvZDo6IFg1MDlSZXEuZ2V0X3ZlcnNpb24oKQorCisgICAgR2V0IHRoZSB2ZXJzaW9uIChSRkMgMjQ1OSwgNC4xLjIuMSkgb2YgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QuCisKKworLi4gX29wZW5zc2wteDUwOXN0b3JlOgorCitYNTA5U3RvcmUgb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFg1MDlTdG9yZSBvYmplY3QgaGFzIGN1cnJlbnRseSBqdXN0IG9uZSBtZXRob2Q6CisKKy4uIHB5Om1ldGhvZDo6IFg1MDlTdG9yZS5hZGRfY2VydChjZXJ0KQorCisgICAgQWRkIHRoZSBjZXJ0aWZpY2F0ZSAqY2VydCogdG8gdGhlIGNlcnRpZmljYXRlIHN0b3JlLgorCisKKy4uIF9vcGVuc3NsLXBrZXk6CisKK1BLZXkgb2JqZWN0cworLS0tLS0tLS0tLS0tCisKK1RoZSBQS2V5IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisuLiBweTptZXRob2Q6OiBQS2V5LmJpdHMoKQorCisgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBvZiB0aGUga2V5LgorCisKKy4uIHB5Om1ldGhvZDo6IFBLZXkuZ2VuZXJhdGVfa2V5KHR5cGUsIGJpdHMpCisKKyAgICBHZW5lcmF0ZSBhIHB1YmxpYy9wcml2YXRlIGtleSBwYWlyIG9mIHRoZSB0eXBlICp0eXBlKiAob25lIG9mCisgICAgOnB5OmNvbnN0OmBUWVBFX1JTQWAgYW5kIDpweTpjb25zdDpgVFlQRV9EU0FgKSB3aXRoIHRoZSBzaXplICpiaXRzKi4KKworCisuLiBweTptZXRob2Q6OiBQS2V5LnR5cGUoKQorCisgICAgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBrZXkuCisKKworLi4gcHk6bWV0aG9kOjogUEtleS5jaGVjaygpCisKKyAgICBDaGVjayB0aGUgY29uc2lzdGVuY3kgb2YgdGhpcyBrZXksIHJldHVybmluZyBUcnVlIGlmIGl0IGlzIGNvbnNpc3RlbnQgYW5kCisgICAgcmFpc2luZyBhbiBleGNlcHRpb24gb3RoZXJ3aXNlLiAgVGhpcyBpcyBvbmx5IHZhbGlkIGZvciBSU0Ega2V5cy4gIFNlZSB0aGUKKyAgICBPcGVuU1NMIFJTQV9jaGVja19rZXkgbWFuIHBhZ2UgZm9yIGZ1cnRoZXIgbGltaXRhdGlvbnMuCisKKworLi4gX29wZW5zc2wtcGtjczc6CisKK1BLQ1M3IG9iamVjdHMKKy0tLS0tLS0tLS0tLS0KKworUEtDUzcgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworLi4gcHk6bWV0aG9kOjogUEtDUzcudHlwZV9pc19zaWduZWQoKQorCisgICAgRklYTUUKKworCisuLiBweTptZXRob2Q6OiBQS0NTNy50eXBlX2lzX2VudmVsb3BlZCgpCisKKyAgICBGSVhNRQorCisKKy4uIHB5Om1ldGhvZDo6IFBLQ1M3LnR5cGVfaXNfc2lnbmVkQW5kRW52ZWxvcGVkKCkKKworICAgIEZJWE1FCisKKworLi4gcHk6bWV0aG9kOjogUEtDUzcudHlwZV9pc19kYXRhKCkKKworICAgIEZJWE1FCisKKworLi4gcHk6bWV0aG9kOjogUEtDUzcuZ2V0X3R5cGVfbmFtZSgpCisKKyAgICBHZXQgdGhlIHR5cGUgbmFtZSBvZiB0aGUgUEtDUzcuCisKKworLi4gX29wZW5zc2wtcGtjczEyOgorCitQS0NTMTIgb2JqZWN0cworLS0tLS0tLS0tLS0tLS0KKworUEtDUzEyIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKy4uIHB5Om1ldGhvZDo6IFBLQ1MxMi5leHBvcnQoW3Bhc3NwaHJhc2U9Tm9uZV1bLCBpdGVyPTIwNDhdWywgbWFjaXRlcj0xXSkKKworICAgIFJldHVybnMgYSBQS0NTMTIgb2JqZWN0IGFzIGEgc3RyaW5nLgorCisgICAgVGhlIG9wdGlvbmFsICpwYXNzcGhyYXNlKiBtdXN0IGJlIGEgc3RyaW5nIG5vdCBhIGNhbGxiYWNrLgorCisgICAgU2VlIGFsc28gdGhlIG1hbiBwYWdlIGZvciB0aGUgQyBmdW5jdGlvbiA6cHk6ZnVuYzpgUEtDUzEyX2NyZWF0ZWAuCisKKworLi4gcHk6bWV0aG9kOjogUEtDUzEyLmdldF9jYV9jZXJ0aWZpY2F0ZXMoKQorCisgICAgUmV0dXJuIENBIGNlcnRpZmljYXRlcyB3aXRoaW4gdGhlIFBLQ1MxMiBvYmplY3QgYXMgYSB0dXBsZS4gUmV0dXJucworICAgIDpweTpjb25zdDpgTm9uZWAgaWYgbm8gQ0EgY2VydGlmaWNhdGVzIGFyZSBwcmVzZW50LgorCisKKy4uIHB5Om1ldGhvZDo6IFBLQ1MxMi5nZXRfY2VydGlmaWNhdGUoKQorCisgICAgUmV0dXJuIGNlcnRpZmljYXRlIHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmUuCisKKworLi4gcHk6bWV0aG9kOjogUEtDUzEyLmdldF9mcmllbmRseW5hbWUoKQorCisgICAgUmV0dXJuIGZyaWVuZGx5TmFtZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlLgorCisKKy4uIHB5Om1ldGhvZDo6IFBLQ1MxMi5nZXRfcHJpdmF0ZWtleSgpCisKKyAgICBSZXR1cm4gcHJpdmF0ZSBrZXkgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZQorCisKKy4uIHB5Om1ldGhvZDo6IFBLQ1MxMi5zZXRfY2FfY2VydGlmaWNhdGVzKGNhY2VydHMpCisKKyAgICBSZXBsYWNlIG9yIHNldCB0aGUgQ0EgY2VydGlmaWNhdGVzIHdpdGhpbiB0aGUgUEtDUzEyIG9iamVjdCB3aXRoIHRoZSBzZXF1ZW5jZSAqY2FjZXJ0cyouCisKKyAgICBTZXQgKmNhY2VydHMqIHRvIDpweTpjb25zdDpgTm9uZWAgdG8gcmVtb3ZlIGFsbCBDQSBjZXJ0aWZpY2F0ZXMuCisKKworLi4gcHk6bWV0aG9kOjogUEtDUzEyLnNldF9jZXJ0aWZpY2F0ZShjZXJ0KQorCisgICAgUmVwbGFjZSBvciBzZXQgdGhlIGNlcnRpZmljYXRlIHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmUuCisKKworLi4gcHk6bWV0aG9kOjogUEtDUzEyLnNldF9mcmllbmRseW5hbWUobmFtZSkKKworICAgIFJlcGxhY2Ugb3Igc2V0IHRoZSBmcmllbmRseU5hbWUgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZS4KKworCisuLiBweTptZXRob2Q6OiBQS0NTMTIuc2V0X3ByaXZhdGVrZXkocGtleSkKKworICAgIFJlcGxhY2Ugb3Igc2V0IHByaXZhdGUga2V5IHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmUKKworCisuLiBfb3BlbnNzbC01MDlleHQ6CisKK1g1MDlFeHRlbnNpb24gb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1g1MDlFeHRlbnNpb24gb2JqZWN0cyBoYXZlIHNldmVyYWwgbWV0aG9kczoKKworLi4gcHk6bWV0aG9kOjogWDUwOUV4dGVuc2lvbi5nZXRfY3JpdGljYWwoKQorCisgICAgUmV0dXJuIHRoZSBjcml0aWNhbCBmaWVsZCBvZiB0aGUgZXh0ZW5zaW9uIG9iamVjdC4KKworCisuLiBweTptZXRob2Q6OiBYNTA5RXh0ZW5zaW9uLmdldF9zaG9ydF9uYW1lKCkKKworICAgIFJldHJpZXZlIHRoZSBzaG9ydCBkZXNjcmlwdGl2ZSBuYW1lIGZvciB0aGlzIGV4dGVuc2lvbi4KKworICAgIFRoZSByZXN1bHQgaXMgYSBieXRlIHN0cmluZyBsaWtlIDpweTpjb25zdDpgYmFzaWNDb25zdHJhaW50c2AuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjEyCisKKworLi4gcHk6bWV0aG9kOjogWDUwOUV4dGVuc2lvbi5nZXRfZGF0YSgpCisKKyAgICBSZXRyaWV2ZSB0aGUgZGF0YSBmb3IgdGhpcyBleHRlbnNpb24uCisKKyAgICBUaGUgcmVzdWx0IGlzIHRoZSBBU04uMSBlbmNvZGVkIGZvcm0gb2YgdGhlIGV4dGVuc2lvbiBkYXRhIGFzIGEgYnl0ZSBzdHJpbmcuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjEyCisKKworLi4gX29wZW5zc2wtbmV0c2NhcGUtc3BraToKKworTmV0c2NhcGVTUEtJIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05ldHNjYXBlU1BLSSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisuLiBweTptZXRob2Q6OiBOZXRzY2FwZVNQS0kuYjY0X2VuY29kZSgpCisKKyAgICBSZXR1cm4gYSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KKworCisuLiBweTptZXRob2Q6OiBOZXRzY2FwZVNQS0kuZ2V0X3B1YmtleSgpCisKKyAgICBSZXR1cm4gdGhlIHB1YmxpYyBrZXkgb2Ygb2JqZWN0LgorCisKKy4uIHB5Om1ldGhvZDo6IE5ldHNjYXBlU1BLSS5zZXRfcHVia2V5KGtleSkKKworICAgIFNldCB0aGUgcHVibGljIGtleSBvZiB0aGUgb2JqZWN0IHRvICprZXkqLgorCisKKy4uIHB5Om1ldGhvZDo6IE5ldHNjYXBlU1BLSS5zaWduKGtleSwgZGlnZXN0X25hbWUpCisKKyAgICBTaWduIHRoZSBOZXRzY2FwZVNQS0kgb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiAqa2V5KiBhbmQgKmRpZ2VzdF9uYW1lKi4KKyAgICAqZGlnZXN0X25hbWUqIG11c3QgYmUgYSBzdHJpbmcgZGVzY3JpYmluZyBhIGRpZ2VzdCBhbGdvcml0aG0gc3VwcG9ydGVkIGJ5CisgICAgT3BlblNTTCAoYnkgRVZQX2dldF9kaWdlc3RieW5hbWUsIHNwZWNpZmljYWxseSkuICBGb3IgZXhhbXBsZSwKKyAgICA6cHk6Y29uc3Q6YCJtZDUiYCBvciA6cHk6Y29uc3Q6YCJzaGExImAuCisKKworLi4gcHk6bWV0aG9kOjogTmV0c2NhcGVTUEtJLnZlcmlmeShrZXkpCisKKyAgICBWZXJpZnkgdGhlIE5ldHNjYXBlU1BLSSBvYmplY3QgdXNpbmcgdGhlIGdpdmVuICprZXkqLgorCisKKy4uIF9jcmw6CisKK0NSTCBvYmplY3RzCistLS0tLS0tLS0tLQorCitDUkwgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworLi4gcHk6bWV0aG9kOjogQ1JMLmFkZF9yZXZva2VkKHJldm9rZWQpCisKKyAgICBBZGQgYSBSZXZva2VkIG9iamVjdCB0byB0aGUgQ1JMLCBieSB2YWx1ZSBub3QgcmVmZXJlbmNlLgorCisKKy4uIHB5Om1ldGhvZDo6IENSTC5leHBvcnQoY2VydCwga2V5WywgdHlwZT1GSUxFVFlQRV9QRU1dWywgZGF5cz0xMDBdKQorCisgICAgVXNlICpjZXJ0KiBhbmQgKmtleSogdG8gc2lnbiB0aGUgQ1JMIGFuZCByZXR1cm4gdGhlIENSTCBhcyBhIHN0cmluZy4KKyAgICAqZGF5cyogaXMgdGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGUgbmV4dCBDUkwgaXMgZHVlLgorCisKKy4uIHB5Om1ldGhvZDo6IENSTC5nZXRfcmV2b2tlZCgpCisKKyAgICBSZXR1cm4gYSB0dXBsZSBvZiBSZXZva2VkIG9iamVjdHMsIGJ5IHZhbHVlIG5vdCByZWZlcmVuY2UuCisKKworLi4gX3Jldm9rZWQ6CisKK1Jldm9rZWQgb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tCisKK1Jldm9rZWQgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworLi4gcHk6bWV0aG9kOjogUmV2b2tlZC5hbGxfcmVhc29ucygpCisKKyAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCBzdXBwb3J0ZWQgcmVhc29ucy4KKworCisuLiBweTptZXRob2Q6OiBSZXZva2VkLmdldF9yZWFzb24oKQorCisgICAgUmV0dXJuIHRoZSByZXZvY2F0aW9uIHJlYXNvbiBhcyBhIHN0ci4gIENhbiBiZQorICAgIE5vbmUsIHdoaWNoIGRpZmZlcnMgZnJvbSAiVW5zcGVjaWZpZWQiLgorCisKKy4uIHB5Om1ldGhvZDo6IFJldm9rZWQuZ2V0X3Jldl9kYXRlKCkKKworICAgIFJldHVybiB0aGUgcmV2b2NhdGlvbiBkYXRlIGFzIGEgc3RyLgorICAgIFRoZSBzdHJpbmcgaXMgZm9ybWF0dGVkIGFzIGFuIEFTTjEgR0VORVJBTElaRURUSU1FLgorCisKKy4uIHB5Om1ldGhvZDo6IFJldm9rZWQuZ2V0X3NlcmlhbCgpCisKKyAgICBSZXR1cm4gYSBzdHIgY29udGFpbmluZyBhIGhleCBudW1iZXIgb2YgdGhlIHNlcmlhbCBvZiB0aGUgcmV2b2tlZCBjZXJ0aWZpY2F0ZS4KKworCisuLiBweTptZXRob2Q6OiBSZXZva2VkLnNldF9yZWFzb24ocmVhc29uKQorCisgICAgU2V0IHRoZSByZXZvY2F0aW9uIHJlYXNvbi4gICpyZWFzb24qIG11c3QgYmUgTm9uZSBvciBhIHN0cmluZywgYnV0IHRoZQorICAgIHZhbHVlcyBhcmUgbGltaXRlZC4gIFNwYWNlcyBhbmQgY2FzZSBhcmUgaWdub3JlZC4gIFNlZQorICAgIDpweTptZXRoOmBhbGxfcmVhc29uc2AuCisKKworLi4gcHk6bWV0aG9kOjogUmV2b2tlZC5zZXRfcmV2X2RhdGUoZGF0ZSkKKworICAgIFNldCB0aGUgcmV2b2NhdGlvbiBkYXRlLgorICAgIFRoZSBzdHJpbmcgaXMgZm9ybWF0dGVkIGFzIGFuIEFTTjEgR0VORVJBTElaRURUSU1FLgorCisKKy4uIHB5Om1ldGhvZDo6IFJldm9rZWQuc2V0X3NlcmlhbChzZXJpYWwpCisKKyAgICAqc2VyaWFsKiBpcyBhIHN0cmluZyBjb250YWluaW5nIGEgaGV4IG51bWJlciBvZiB0aGUgc2VyaWFsIG9mIHRoZSByZXZva2VkIGNlcnRpZmljYXRlLgpkaWZmIC0tZ2l0IGEvZG9jL2FwaS9yYW5kLnJzdCBiL2RvYy9hcGkvcmFuZC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg3ODliOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9hcGkvcmFuZC5yc3QKQEAgLTAsMCArMSw3OSBAQAorLi4gX29wZW5zc2wtcmFuZDoKKworOnB5Om1vZDpgcmFuZGAgLS0tIEFuIGludGVyZmFjZSB0byB0aGUgT3BlblNTTCBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIHB5Om1vZHVsZTo6IE9wZW5TU0wucmFuZAorICAgOnN5bm9wc2lzOiBBbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5TU0wgcHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCisKKworVGhpcyBtb2R1bGUgaGFuZGxlcyB0aGUgT3BlblNTTCBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKFBSTkcpIGFuZAorZGVjbGFyZXMgdGhlIGZvbGxvd2luZzoKKworLi4gcHk6ZnVuY3Rpb246OiBhZGQoc3RyaW5nLCBlbnRyb3B5KQorCisgICAgTWl4IGJ5dGVzIGZyb20gKnN0cmluZyogaW50byB0aGUgUFJORyBzdGF0ZS4gVGhlICplbnRyb3B5KiBhcmd1bWVudCBpcworICAgICh0aGUgbG93ZXIgYm91bmQgb2YpIGFuIGVzdGltYXRlIG9mIGhvdyBtdWNoIHJhbmRvbW5lc3MgaXMgY29udGFpbmVkIGluCisgICAgKnN0cmluZyosIG1lYXN1cmVkIGluIGJ5dGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGUuZy4gOnJmYzpgMTc1MGAuCisKKworLi4gcHk6ZnVuY3Rpb246OiBieXRlcyhudW1fYnl0ZXMpCisKKyAgICBHZXQgc29tZSByYW5kb20gYnl0ZXMgZnJvbSB0aGUgUFJORyBhcyBhIHN0cmluZy4KKworICAgIFRoaXMgaXMgYSB3cmFwcGVyIGZvciB0aGUgQyBmdW5jdGlvbiA6cHk6ZnVuYzpgUkFORF9ieXRlc2AuCisKKworLi4gcHk6ZnVuY3Rpb246OiBjbGVhbnVwKCkKKworICAgIEVyYXNlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgUFJORy4KKworICAgIFRoaXMgaXMgYSB3cmFwcGVyIGZvciB0aGUgQyBmdW5jdGlvbiA6cHk6ZnVuYzpgUkFORF9jbGVhbnVwYC4KKworCisuLiBweTpmdW5jdGlvbjo6IGVnZChwYXRoWywgYnl0ZXNdKQorCisgICAgUXVlcnkgdGhlIGBFbnRyb3B5IEdhdGhlcmluZyBEYWVtb24gPGh0dHA6Ly93d3cubG90aGFyLmNvbS90ZWNoL2NyeXB0by8+YF8gb24KKyAgICBzb2NrZXQgKnBhdGgqIGZvciAqYnl0ZXMqIGJ5dGVzIG9mIHJhbmRvbSBkYXRhIGFuZCB1c2VzIDpweTpmdW5jOmBhZGRgIHRvCisgICAgc2VlZCB0aGUgUFJORy4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgKmJ5dGVzKiBpcyAyNTUuCisKKworLi4gcHk6ZnVuY3Rpb246OiBsb2FkX2ZpbGUocGF0aFssIGJ5dGVzXSkKKworICAgIFJlYWQgKmJ5dGVzKiBieXRlcyAob3IgYWxsIG9mIGl0LCBpZiAqYnl0ZXMqIGlzIG5lZ2F0aXZlKSBvZiBkYXRhIGZyb20gdGhlCisgICAgZmlsZSAqcGF0aCogdG8gc2VlZCB0aGUgUFJORy4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgKmJ5dGVzKiBpcyAtMS4KKworCisuLiBweTpmdW5jdGlvbjo6IHNjcmVlbigpCisKKyAgICBBZGQgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIHNjcmVlbiB0byB0aGUgUFJORyBzdGF0ZS4KKworICAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KKworCisuLiBweTpmdW5jdGlvbjo6IHNlZWQoc3RyaW5nKQorCisgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgOnB5OmZ1bmM6YGFkZGAgd2l0aCAqZW50cm9weSogYXMgdGhlIGxlbmd0aAorICAgIG9mIHRoZSBzdHJpbmcuCisKKworLi4gcHk6ZnVuY3Rpb246OiBzdGF0dXMoKQorCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBQUk5HIGhhcyBiZWVuIHNlZWRlZCB3aXRoIGVub3VnaCBkYXRhLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorCisKKy4uIHB5OmZ1bmN0aW9uOjogd3JpdGVfZmlsZShwYXRoKQorCisgICAgV3JpdGUgYSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIChjdXJyZW50bHkgMTAyNCkgdG8gdGhlIGZpbGUgKnBhdGgqLiBUaGlzCisgICAgZmlsZSBjYW4gdGhlbiBiZSB1c2VkIHdpdGggOnB5OmZ1bmM6YGxvYWRfZmlsZWAgdG8gc2VlZCB0aGUgUFJORyBhZ2Fpbi4KKworCisuLiBweTpleGNlcHRpb246OiBFcnJvcgorCisgICAgSWYgdGhlIGN1cnJlbnQgUkFORCBtZXRob2Qgc3VwcG9ydHMgYW55IGVycm9ycywgdGhpcyBpcyByYWlzZWQgd2hlbiBuZWVkZWQuCisgICAgVGhlIGRlZmF1bHQgbWV0aG9kIGRvZXMgbm90IHJhaXNlIHRoaXMgd2hlbiB0aGUgZW50cm9weSBwb29sIGlzIGRlcGxldGVkLgorCisgICAgV2hlbmV2ZXIgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGRpcmVjdGx5LCBpdCBoYXMgYSBsaXN0IG9mIGVycm9yIG1lc3NhZ2VzCisgICAgZnJvbSB0aGUgT3BlblNTTCBlcnJvciBxdWV1ZSwgd2hlcmUgZWFjaCBpdGVtIGlzIGEgdHVwbGUgKihsaWIsIGZ1bmN0aW9uLAorICAgIHJlYXNvbikqLiBIZXJlICpsaWIqLCAqZnVuY3Rpb24qIGFuZCAqcmVhc29uKiBhcmUgYWxsIHN0cmluZ3MsIGRlc2NyaWJpbmcKKyAgICB3aGVyZSBhbmQgd2hhdCB0aGUgcHJvYmxlbSBpcy4gU2VlIDptYW5wYWdlOmBlcnIoMylgIGZvciBtb3JlIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvZG9jL2FwaS9zc2wucnN0IGIvZG9jL2FwaS9zc2wucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZWQ4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvYXBpL3NzbC5yc3QKQEAgLTAsMCArMSw2NzcgQEAKKy4uIF9vcGVuc3NsLXNzbDoKKworOnB5Om1vZDpgU1NMYCAtLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBTU0wtc3BlY2lmaWMgcGFydHMgb2YgT3BlblNTTAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBweTptb2R1bGU6OiBPcGVuU1NMLlNTTAorICAgIDpzeW5vcHNpczogQW4gaW50ZXJmYWNlIHRvIHRoZSBTU0wtc3BlY2lmaWMgcGFydHMgb2YgT3BlblNTTAorCisKK1RoaXMgbW9kdWxlIGhhbmRsZXMgdGhpbmdzIHNwZWNpZmljIHRvIFNTTC4gVGhlcmUgYXJlIHR3byBvYmplY3RzIGRlZmluZWQ6CitDb250ZXh0LCBDb25uZWN0aW9uLgorCisuLiBweTpkYXRhOjogU1NMdjJfTUVUSE9ECisgICAgICAgICAgICAgU1NMdjNfTUVUSE9ECisgICAgICAgICAgICAgU1NMdjIzX01FVEhPRAorICAgICAgICAgICAgIFRMU3YxX01FVEhPRAorCisgICAgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgZGlmZmVyZW50IFNTTCBtZXRob2RzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEKKyAgICBjb250ZXh0IG9iamVjdC4KKworCisuLiBweTpkYXRhOjogVkVSSUZZX05PTkUKKyAgICAgICAgICAgICBWRVJJRllfUEVFUgorICAgICAgICAgICAgIFZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVAorCisgICAgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdmVyaWZpY2F0aW9uIG1vZGUgdXNlZCBieSB0aGUgQ29udGV4dAorICAgIG9iamVjdCdzIDpweTptZXRoOmBzZXRfdmVyaWZ5YCBtZXRob2QuCisKKworLi4gcHk6ZGF0YTo6IEZJTEVUWVBFX1BFTQorICAgICAgICAgICAgIEZJTEVUWVBFX0FTTjEKKworICAgIEZpbGUgdHlwZSBjb25zdGFudHMgdXNlZCB3aXRoIHRoZSA6cHk6bWV0aDpgdXNlX2NlcnRpZmljYXRlX2ZpbGVgIGFuZAorICAgIDpweTptZXRoOmB1c2VfcHJpdmF0ZWtleV9maWxlYCBtZXRob2RzIG9mIENvbnRleHQgb2JqZWN0cy4KKworCisuLiBweTpkYXRhOjogT1BfU0lOR0xFX0RIX1VTRQorICAgICAgICAgICAgIE9QX0VQSEVNRVJBTF9SU0EKKyAgICAgICAgICAgICBPUF9OT19TU0x2MgorICAgICAgICAgICAgIE9QX05PX1NTTHYzCisgICAgICAgICAgICAgT1BfTk9fVExTdjEKKyAgICAgICAgICAgICBPUF9OT19USUNLRVQKKyAgICAgICAgICAgICBPUF9OT19DT01QUkVTU0lPTgorCisgICAgQ29uc3RhbnRzIHVzZWQgd2l0aCA6cHk6bWV0aDpgc2V0X29wdGlvbnNgIG9mIENvbnRleHQgb2JqZWN0cy4KKworICAgIDpweTpjb25zdDpgT1BfU0lOR0xFX0RIX1VTRWAgbWVhbnMgdG8gYWx3YXlzIGNyZWF0ZSBhIG5ldyBrZXkgd2hlbiB1c2luZworICAgIGVwaGVtZXJhbCBEaWZmaWUtSGVsbG1hbi4gOnB5OmNvbnN0OmBPUF9FUEhFTUVSQUxfUlNBYCBtZWFucyB0byBhbHdheXMgdXNlCisgICAgZXBoZW1lcmFsIFJTQSBrZXlzIHdoZW4gZG9pbmcgUlNBIG9wZXJhdGlvbnMuIDpweTpjb25zdDpgT1BfTk9fU1NMdjJgLAorICAgIDpweTpjb25zdDpgT1BfTk9fU1NMdjNgIGFuZCA6cHk6Y29uc3Q6YE9QX05PX1RMU3YxYCBtZWFucyB0byBkaXNhYmxlIHRob3NlCisgICAgc3BlY2lmaWMgcHJvdG9jb2xzLiBUaGlzIGlzIGludGVyZXN0aW5nIGlmIHlvdSdyZSB1c2luZyBlLmcuCisgICAgOnB5OmNvbnN0OmBTU0x2MjNfTUVUSE9EYCB0byBnZXQgYW4gU1NMdjItY29tcGF0aWJsZSBoYW5kc2hha2UsIGJ1dCBkb24ndCB3YW50CisgICAgdG8gdXNlIFNTTHYyLgorCisKKy4uIHB5OmRhdGE6OiBNT0RFX05PX0NPTVBSRVNTSU9OCisKKyAgIENvbnN0YW50IHVzZWQgd2l0aCA6cHk6bWV0aDpgc2V0X21vZGVgIG9mIENvbnRleHQgb2JqZWN0cyB0byBkaXNhYmxlCisgICBhdXRvbWF0aWMgY29tcHJlc3Npb24gb2YgYXBwbGljYXRpb24gdHJhZmZpYy4KKworCisuLiBweTpkYXRhOjogU1NMRUFZX1ZFUlNJT04KKyAgICAgICAgICAgICBTU0xFQVlfQ0ZMQUdTCisgICAgICAgICAgICAgU1NMRUFZX0JVSUxUX09OCisgICAgICAgICAgICAgU1NMRUFZX1BMQVRGT1JNCisgICAgICAgICAgICAgU1NMRUFZX0RJUgorCisgICAgQ29uc3RhbnRzIHVzZWQgd2l0aCA6cHk6bWV0aDpgU1NMZWF5X3ZlcnNpb25gIHRvIHNwZWNpZnkgd2hhdCBPcGVuU1NMIHZlcnNpb24KKyAgICBpbmZvcm1hdGlvbiB0byByZXRyaWV2ZS4gIFNlZSB0aGUgbWFuIHBhZ2UgZm9yIHRoZSA6cHk6ZnVuYzpgU1NMZWF5X3ZlcnNpb25gIEMKKyAgICBBUEkgZm9yIGRldGFpbHMuCisKKworLi4gcHk6ZGF0YTo6IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIKKworICAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgT3BlblNTTCBsaWJyYXJ5IHVzZWQgdG8gYnVpbGQgdGhpcworICAgIHZlcnNpb24gb2YgcHlPcGVuU1NMLiAgU2VlIHRoZSBtYW4gcGFnZSBmb3IgdGhlIDpweTpmdW5jOmBTU0xlYXlfdmVyc2lvbmAgQyBBUEkKKyAgICBmb3IgZGV0YWlscy4KKworCisuLiBweTpmdW5jdGlvbjo6IFNTTGVheV92ZXJzaW9uKHR5cGUpCisKKyAgICBSZXRyaWV2ZSBhIHN0cmluZyBkZXNjcmliaW5nIHNvbWUgYXNwZWN0IG9mIHRoZSB1bmRlcmx5aW5nIE9wZW5TU0wgdmVyc2lvbi4gIFRoZQorICAgIHR5cGUgcGFzc2VkIGluIHNob3VsZCBiZSBvbmUgb2YgdGhlIDpweTpjb25zdDpgU1NMRUFZXypgIGNvbnN0YW50cyBkZWZpbmVkIGluCisgICAgdGhpcyBtb2R1bGUuCisKKworLi4gcHk6ZGF0YTo6IENvbnRleHRUeXBlCisKKyAgICBTZWUgOnB5OmNsYXNzOmBDb250ZXh0YC4KKworCisuLiBweTpjbGFzczo6IENvbnRleHQobWV0aG9kKQorCisgICAgQSBjbGFzcyByZXByZXNlbnRpbmcgU1NMIGNvbnRleHRzLiAgQ29udGV4dHMgZGVmaW5lIHRoZSBwYXJhbWV0ZXJzIG9mIG9uZSBvcgorICAgIG1vcmUgU1NMIGNvbm5lY3Rpb25zLgorCisgICAgKm1ldGhvZCogc2hvdWxkIGJlIDpweTpjb25zdDpgU1NMdjJfTUVUSE9EYCwgOnB5OmNvbnN0OmBTU0x2M19NRVRIT0RgLAorICAgIDpweTpjb25zdDpgU1NMdjIzX01FVEhPRGAgb3IgOnB5OmNvbnN0OmBUTFN2MV9NRVRIT0RgLgorCisKKy4uIHB5OmRhdGE6OiBDb25uZWN0aW9uVHlwZQorCisgICAgU2VlIDpweTpjbGFzczpgQ29ubmVjdGlvbmAuCisKKworLi4gcHk6Y2xhc3M6OiBDb25uZWN0aW9uKGNvbnRleHQsIHNvY2tldCkKKworICAgIEEgY2xhc3MgcmVwcmVzZW50aW5nIFNTTCBjb25uZWN0aW9ucy4KKworICAgICpjb250ZXh0KiBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgOnB5OmNsYXNzOmBDb250ZXh0YCBhbmQgKnNvY2tldCoKKyAgICBzaG91bGQgYmUgYSBzb2NrZXQgWyNjb25uZWN0aW9uLWNvbnRleHQtc29ja2V0XV8gIG9iamVjdC4gICpzb2NrZXQqIG1heSBiZQorICAgICpOb25lKjsgaW4gdGhpcyBjYXNlLCB0aGUgQ29ubmVjdGlvbiBpcyBjcmVhdGVkIHdpdGggYSBtZW1vcnkgQklPOiBzZWUKKyAgICB0aGUgOnB5Om1ldGg6YGJpb19yZWFkYCwgOnB5Om1ldGg6YGJpb193cml0ZWAsIGFuZCA6cHk6bWV0aDpgYmlvX3NodXRkb3duYAorICAgIG1ldGhvZHMuCisKKy4uIHB5OmV4Y2VwdGlvbjo6IEVycm9yCisKKyAgICBUaGlzIGV4Y2VwdGlvbiBpcyB1c2VkIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlIG90aGVyIFNTTC1yZWxhdGVkCisgICAgZXhjZXB0aW9ucywgYnV0IG1heSBhbHNvIGJlIHJhaXNlZCBkaXJlY3RseS4KKworICAgIFdoZW5ldmVyIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBkaXJlY3RseSwgaXQgaGFzIGEgbGlzdCBvZiBlcnJvciBtZXNzYWdlcworICAgIGZyb20gdGhlIE9wZW5TU0wgZXJyb3IgcXVldWUsIHdoZXJlIGVhY2ggaXRlbSBpcyBhIHR1cGxlICoobGliLCBmdW5jdGlvbiwKKyAgICByZWFzb24pKi4gSGVyZSAqbGliKiwgKmZ1bmN0aW9uKiBhbmQgKnJlYXNvbiogYXJlIGFsbCBzdHJpbmdzLCBkZXNjcmliaW5nCisgICAgd2hlcmUgYW5kIHdoYXQgdGhlIHByb2JsZW0gaXMuIFNlZSA6bWFucGFnZTpgZXJyKDMpYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCisuLiBweTpleGNlcHRpb246OiBaZXJvUmV0dXJuRXJyb3IKKworICAgIFRoaXMgZXhjZXB0aW9uIG1hdGNoZXMgdGhlIGVycm9yIHJldHVybiBjb2RlCisgICAgOnB5OmRhdGE6YFNTTF9FUlJPUl9aRVJPX1JFVFVSTmAsIGFuZCBpcyByYWlzZWQgd2hlbiB0aGUgU1NMIENvbm5lY3Rpb24gaGFzCisgICAgYmVlbiBjbG9zZWQuIEluIFNTTCAzLjAgYW5kIFRMUyAxLjAsIHRoaXMgb25seSBvY2N1cnMgaWYgYSBjbG9zdXJlIGFsZXJ0IGhhcworICAgIG9jY3VycmVkIGluIHRoZSBwcm90b2NvbCwgaS5lLiAgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIGNsZWFubHkuIE5vdGUKKyAgICB0aGF0IHRoaXMgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IHRoZSB0cmFuc3BvcnQgbGF5ZXIgKGUuZy4gYSBzb2NrZXQpCisgICAgaGFzIGJlZW4gY2xvc2VkLgorCisgICAgSXQgbWF5IHNlZW0gYSBsaXR0bGUgc3RyYW5nZSB0aGF0IHRoaXMgaXMgYW4gZXhjZXB0aW9uLCBidXQgaXQgZG9lcyBtYXRjaCBhbgorICAgIDpweTpkYXRhOmBTU0xfRVJST1JgIGNvZGUsIGFuZCBpcyB2ZXJ5IGNvbnZlbmllbnQuCisKKworLi4gcHk6ZXhjZXB0aW9uOjogV2FudFJlYWRFcnJvcgorCisgICAgVGhlIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlOyB0aGUgc2FtZSBJL08gbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4KKyAgICBsYXRlciwgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMuIEFueSBJL08gbWV0aG9kIGNhbiBsZWFkIHRvIHRoaXMgc2luY2UgbmV3CisgICAgaGFuZHNoYWtlcyBjYW4gb2NjdXIgYXQgYW55IHRpbWUuCisKKyAgICBUaGUgd2FudGVkIHJlYWQgaXMgZm9yICoqZGlydHkqKiBkYXRhIHNlbnQgb3ZlciB0aGUgbmV0d29yaywgbm90IHRoZQorICAgICoqY2xlYW4qKiBkYXRhIGluc2lkZSB0aGUgdHVubmVsLiAgRm9yIGEgc29ja2V0IGJhc2VkIFNTTCBjb25uZWN0aW9uLAorICAgICoqcmVhZCoqIG1lYW5zIGRhdGEgY29taW5nIGF0IHVzIG92ZXIgdGhlIG5ldHdvcmsuICBVbnRpbCB0aGF0IHJlYWQKKyAgICBzdWNjZWVkcywgdGhlIGF0dGVtcHRlZCA6cHk6bWV0aDpgT3BlblNTTC5TU0wuQ29ubmVjdGlvbi5yZWN2YCwKKyAgICA6cHk6bWV0aDpgT3BlblNTTC5TU0wuQ29ubmVjdGlvbi5zZW5kYCwgb3IKKyAgICA6cHk6bWV0aDpgT3BlblNTTC5TU0wuQ29ubmVjdGlvbi5kb19oYW5kc2hha2VgIGlzIHByZXZlbnRlZCBvciBpbmNvbXBsZXRlLiBZb3UKKyAgICBwcm9iYWJseSB3YW50IHRvIDpweTptZXRoOmBzZWxlY3QoKWAgb24gdGhlIHNvY2tldCBiZWZvcmUgdHJ5aW5nIGFnYWluLgorCisKKy4uIHB5OmV4Y2VwdGlvbjo6IFdhbnRXcml0ZUVycm9yCisKKyAgICBTZWUgOnB5OmV4YzpgV2FudFJlYWRFcnJvcmAuICBUaGUgc29ja2V0IHNlbmQgYnVmZmVyIG1heSBiZSB0b28gZnVsbCB0bworICAgIHdyaXRlIG1vcmUgZGF0YS4KKworCisuLiBweTpleGNlcHRpb246OiBXYW50WDUwOUxvb2t1cEVycm9yCisKKyAgICBUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgYmVjYXVzZSBhbiBhcHBsaWNhdGlvbiBjYWxsYmFjayBoYXMgYXNrZWQgdG8gYmUKKyAgICBjYWxsZWQgYWdhaW4uIFRoZSBJL08gbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4gbGF0ZXIsIHdpdGggdGhlIHNhbWUKKyAgICBhcmd1bWVudHMuCisKKyAgICAuLiBub3RlOjogVGhpcyB3b24ndCBvY2N1ciBpbiB0aGlzIHZlcnNpb24sIGFzIHRoZXJlIGFyZSBubyBzdWNoCisgICAgICAgIGNhbGxiYWNrcyBpbiB0aGlzIHZlcnNpb24uCisKKworLi4gcHk6ZXhjZXB0aW9uOjogU3lzQ2FsbEVycm9yCisKKyAgICBUaGUgOnB5OmV4YzpgU3lzQ2FsbEVycm9yYCBvY2N1cnMgd2hlbiB0aGVyZSdzIGFuIEkvTyBlcnJvciBhbmQgT3BlblNTTCdzCisgICAgZXJyb3IgcXVldWUgZG9lcyBub3QgY29udGFpbiBhbnkgaW5mb3JtYXRpb24uIFRoaXMgY2FuIG1lYW4gdHdvIHRoaW5nczogQW4KKyAgICBlcnJvciBpbiB0aGUgdHJhbnNwb3J0IHByb3RvY29sLCBvciBhbiBlbmQgb2YgZmlsZSB0aGF0IHZpb2xhdGVzIHRoZSBwcm90b2NvbC4KKyAgICBUaGUgcGFyYW1ldGVyIHRvIHRoZSBleGNlcHRpb24gaXMgYWx3YXlzIGEgcGFpciAqKGVycm51bSwKKyAgICBlcnJzdHIpKi4KKworCisKKy4uIF9vcGVuc3NsLWNvbnRleHQ6CisKK0NvbnRleHQgb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tCisKK0NvbnRleHQgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworLi4gOnB5OmNsYXNzOjogT3BlblNTTC5TU0wuQ29udGV4dAorCisuLiBweTptZXRob2Q6OiBDb250ZXh0LmNoZWNrX3ByaXZhdGVrZXkoKQorCisgICAgQ2hlY2sgaWYgdGhlIHByaXZhdGUga2V5IChsb2FkZWQgd2l0aCA6cHk6bWV0aDpgdXNlX3ByaXZhdGVrZXlgKSBtYXRjaGVzIHRoZQorICAgIGNlcnRpZmljYXRlIChsb2FkZWQgd2l0aCA6cHk6bWV0aDpgdXNlX2NlcnRpZmljYXRlYCkuICBSZXR1cm5zCisgICAgOnB5OmRhdGE6YE5vbmVgIGlmIHRoZXkgbWF0Y2gsIHJhaXNlcyA6cHk6ZXhjOmBFcnJvcmAgb3RoZXJ3aXNlLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQuZ2V0X2FwcF9kYXRhKCkKKworICAgIFJldHJpZXZlIGFwcGxpY2F0aW9uIGRhdGEgYXMgc2V0IGJ5IDpweTptZXRoOmBzZXRfYXBwX2RhdGFgLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQuZ2V0X2NlcnRfc3RvcmUoKQorCisgICAgUmV0cmlldmUgdGhlIGNlcnRpZmljYXRlIHN0b3JlIChhIFg1MDlTdG9yZSBvYmplY3QpIHRoYXQgdGhlIGNvbnRleHQgdXNlcy4KKyAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGFkZCAidHJ1c3RlZCIgY2VydGlmaWNhdGVzIHdpdGhvdXQgdXNpbmcgdGhlLgorICAgIDpweTptZXRoOmBsb2FkX3ZlcmlmeV9sb2NhdGlvbnNgIG1ldGhvZC4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LmdldF90aW1lb3V0KCkKKworICAgIFJldHJpZXZlIHNlc3Npb24gdGltZW91dCwgYXMgc2V0IGJ5IDpweTptZXRoOmBzZXRfdGltZW91dGAuIFRoZSBkZWZhdWx0IGlzIDMwMAorICAgIHNlY29uZHMuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC5nZXRfdmVyaWZ5X2RlcHRoKCkKKworICAgIFJldHJpZXZlIHRoZSBDb250ZXh0IG9iamVjdCdzIHZlcmlmeSBkZXB0aCwgYXMgc2V0IGJ5CisgICAgOnB5Om1ldGg6YHNldF92ZXJpZnlfZGVwdGhgLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQuZ2V0X3ZlcmlmeV9tb2RlKCkKKworICAgIFJldHJpZXZlIHRoZSBDb250ZXh0IG9iamVjdCdzIHZlcmlmeSBtb2RlLCBhcyBzZXQgYnkgOnB5Om1ldGg6YHNldF92ZXJpZnlgLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQubG9hZF9jbGllbnRfY2EocGVtZmlsZSkKKworICAgIFJlYWQgYSBmaWxlIHdpdGggUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZXMgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGNsaWVudAorICAgIHdoZW4gcmVxdWVzdGluZyBhIGNsaWVudCBjZXJ0aWZpY2F0ZS4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LnNldF9jbGllbnRfY2FfbGlzdChjZXJ0aWZpY2F0ZV9hdXRob3JpdGllcykKKworICAgIFJlcGxhY2UgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcmVmZXJyZWQgY2VydGlmaWNhdGUgc2lnbmVycyB0aGF0IHdvdWxkIGJlCisgICAgc2VudCB0byB0aGUgY2xpZW50IHdoZW4gcmVxdWVzdGluZyBhIGNsaWVudCBjZXJ0aWZpY2F0ZSB3aXRoIHRoZQorICAgICpjZXJ0aWZpY2F0ZV9hdXRob3JpdGllcyogc2VxdWVuY2Ugb2YgOnB5OmNsYXNzOmBPcGVuU1NMLmNyeXB0by5YNTA5TmFtZWAncy4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuMTAKKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LmFkZF9jbGllbnRfY2EoY2VydGlmaWNhdGVfYXV0aG9yaXR5KQorCisgICAgRXh0cmFjdCBhIDpweTpjbGFzczpgT3BlblNTTC5jcnlwdG8uWDUwOU5hbWVgIGZyb20gdGhlICpjZXJ0aWZpY2F0ZV9hdXRob3JpdHkqCisgICAgOnB5OmNsYXNzOmBPcGVuU1NMLmNyeXB0by5YNTA5YCBjZXJ0aWZpY2F0ZSBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHByZWZlcnJlZAorICAgIGNlcnRpZmljYXRlIHNpZ25lcnMgc2VudCB0byB0aGUgY2xpZW50IHdoZW4gcmVxdWVzdGluZyBhIGNsaWVudCBjZXJ0aWZpY2F0ZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuMTAKKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhwZW1maWxlLCBjYXBhdGgpCisKKyAgICBTcGVjaWZ5IHdoZXJlIENBIGNlcnRpZmljYXRlcyBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzIGFyZSBsb2NhdGVkLiBUaGVzZQorICAgIGFyZSB0cnVzdGVkIGNlcnRpZmljYXRlcy4gTm90ZSB0aGF0IHRoZSBjZXJ0aWZpY2F0ZXMgaGF2ZSB0byBiZSBpbiBQRU0KKyAgICBmb3JtYXQuICBJZiBjYXBhdGggaXMgcGFzc2VkLCBpdCBtdXN0IGJlIGEgZGlyZWN0b3J5IHByZXBhcmVkIHVzaW5nIHRoZQorICAgIGBgY19yZWhhc2hgYCB0b29sIGluY2x1ZGVkIHdpdGggT3BlblNTTC4gIEVpdGhlciwgYnV0IG5vdCBib3RoLCBvZgorICAgICpwZW1maWxlKiBvciAqY2FwYXRoKiBtYXkgYmUgOnB5OmRhdGE6YE5vbmVgLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKKworICAgIFNwZWNpZnkgdGhhdCB0aGUgcGxhdGZvcm0gcHJvdmlkZWQgQ0EgY2VydGlmaWNhdGVzIGFyZSB0byBiZSB1c2VkIGZvcgorICAgIHZlcmlmaWNhdGlvbiBwdXJwb3Nlcy4gIFRoaXMgbWV0aG9kIG1heSBub3Qgd29yayBwcm9wZXJseSBvbiBPUyBYLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQubG9hZF90bXBfZGgoZGhmaWxlKQorCisgICAgTG9hZCBwYXJhbWV0ZXJzIGZvciBFcGhlbWVyYWwgRGlmZmllLUhlbGxtYW4gZnJvbSAqZGhmaWxlKi4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LnNldF9hcHBfZGF0YShkYXRhKQorCisgICAgQXNzb2NpYXRlICpkYXRhKiB3aXRoIHRoaXMgQ29udGV4dCBvYmplY3QuICpkYXRhKiBjYW4gYmUgcmV0cmlldmVkCisgICAgbGF0ZXIgdXNpbmcgdGhlIDpweTptZXRoOmBnZXRfYXBwX2RhdGFgIG1ldGhvZC4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LnNldF9jaXBoZXJfbGlzdChjaXBoZXJzKQorCisgICAgU2V0IHRoZSBsaXN0IG9mIGNpcGhlcnMgdG8gYmUgdXNlZCBpbiB0aGlzIGNvbnRleHQuIFNlZSB0aGUgT3BlblNTTCBtYW51YWwgZm9yCisgICAgbW9yZSBpbmZvcm1hdGlvbiAoZS5nLiA6bWFucGFnZTpgY2lwaGVycygxKWApCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC5zZXRfaW5mb19jYWxsYmFjayhjYWxsYmFjaykKKworICAgIFNldCB0aGUgaW5mb3JtYXRpb24gY2FsbGJhY2sgdG8gKmNhbGxiYWNrKi4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAorICAgIGZyb20gdGltZSB0byB0aW1lIGR1cmluZyBTU0wgaGFuZHNoYWtlcy4KKworICAgICpjYWxsYmFjayogc2hvdWxkIHRha2UgdGhyZWUgYXJndW1lbnRzOiBhIENvbm5lY3Rpb24gb2JqZWN0IGFuZCB0d28gaW50ZWdlcnMuCisgICAgVGhlIGZpcnN0IGludGVnZXIgc3BlY2lmaWVzIHdoZXJlIGluIHRoZSBTU0wgaGFuZHNoYWtlIHRoZSBmdW5jdGlvbiB3YXMKKyAgICBjYWxsZWQsIGFuZCB0aGUgb3RoZXIgdGhlIHJldHVybiBjb2RlIGZyb20gYSAocG9zc2libHkgZmFpbGVkKSBpbnRlcm5hbAorICAgIGZ1bmN0aW9uIGNhbGwuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC5zZXRfb3B0aW9ucyhvcHRpb25zKQorCisgICAgQWRkIFNTTCBvcHRpb25zLiBPcHRpb25zIHlvdSBoYXZlIHNldCBiZWZvcmUgYXJlIG5vdCBjbGVhcmVkIQorICAgIFRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIHdpdGggdGhlIDpweTpjb25zdDpgT1BfKmAgY29uc3RhbnRzLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQuc2V0X21vZGUobW9kZSkKKworICAgQWRkIFNTTCBtb2RlLiBNb2RlcyB5b3UgaGF2ZSBzZXQgYmVmb3JlIGFyZSBub3QgY2xlYXJlZCEgIFRoaXMgbWV0aG9kIHNob3VsZAorICAgYmUgdXNlZCB3aXRoIHRoZSA6cHk6Y29uc3Q6YE1PREVfKmAgY29uc3RhbnRzLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQuc2V0X3Bhc3N3ZF9jYihjYWxsYmFja1ssIHVzZXJkYXRhXSkKKworICAgIFNldCB0aGUgcGFzc3BocmFzZSBjYWxsYmFjayB0byAqY2FsbGJhY2sqLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCisgICAgd2hlbiBhIHByaXZhdGUga2V5IHdpdGggYSBwYXNzcGhyYXNlIGlzIGxvYWRlZC4gKmNhbGxiYWNrKiBtdXN0IGFjY2VwdAorICAgIHRocmVlIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgRmlyc3QsIGFuIGludGVnZXIgZ2l2aW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBvZgorICAgIHRoZSBwYXNzcGhyYXNlIGl0IG1heSByZXR1cm4uICBJZiB0aGUgcmV0dXJuZWQgcGFzc3BocmFzZSBpcyBsb25nZXIgdGhhbgorICAgIHRoaXMsIGl0IHdpbGwgYmUgdHJ1bmNhdGVkLiAgU2Vjb25kLCBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggd2lsbCBiZSB0cnVlIGlmCisgICAgdGhlIHVzZXIgc2hvdWxkIGJlIHByb21wdGVkIGZvciB0aGUgcGFzc3BocmFzZSB0d2ljZSBhbmQgdGhlIGNhbGxiYWNrIHNob3VsZAorICAgIHZlcmlmeSB0aGF0IHRoZSB0d28gdmFsdWVzIHN1cHBsaWVkIGFyZSBlcXVhbC4gVGhpcmQsIHRoZSB2YWx1ZSBnaXZlbiBhcyB0aGUKKyAgICAqdXNlcmRhdGEqIHBhcmFtZXRlciB0byA6cHk6bWV0aDpgc2V0X3Bhc3N3ZF9jYmAuICBJZiBhbiBlcnJvciBvY2N1cnMsCisgICAgKmNhbGxiYWNrKiBzaG91bGQgcmV0dXJuIGEgZmFsc2UgdmFsdWUgKGUuZy4gYW4gZW1wdHkgc3RyaW5nKS4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LnNldF9zZXNzaW9uX2lkKG5hbWUpCisKKyAgICBTZXQgdGhlIGNvbnRleHQgKm5hbWUqIHdpdGhpbiB3aGljaCBhIHNlc3Npb24gY2FuIGJlIHJldXNlZCBmb3IgdGhpcworICAgIENvbnRleHQgb2JqZWN0LiBUaGlzIGlzIG5lZWRlZCB3aGVuIGRvaW5nIHNlc3Npb24gcmVzdW1wdGlvbiwgYmVjYXVzZSB0aGVyZSBpcworICAgIG5vIHdheSBmb3IgYSBzdG9yZWQgc2Vzc2lvbiB0byBrbm93IHdoaWNoIENvbnRleHQgb2JqZWN0IGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4KKyAgICAqbmFtZSogbWF5IGJlIGFueSBiaW5hcnkgZGF0YS4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LnNldF90aW1lb3V0KHRpbWVvdXQpCisKKyAgICBTZXQgdGhlIHRpbWVvdXQgZm9yIG5ld2x5IGNyZWF0ZWQgc2Vzc2lvbnMgZm9yIHRoaXMgQ29udGV4dCBvYmplY3QgdG8KKyAgICAqdGltZW91dCouICp0aW1lb3V0KiBtdXN0IGJlIGdpdmVuIGluICh3aG9sZSkgc2Vjb25kcy4gVGhlIGRlZmF1bHQKKyAgICB2YWx1ZSBpcyAzMDAgc2Vjb25kcy4gU2VlIHRoZSBPcGVuU1NMIG1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbiAoZS5nLgorICAgIDptYW5wYWdlOmBTU0xfQ1RYX3NldF90aW1lb3V0KDMpYCkuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC5zZXRfdmVyaWZ5KG1vZGUsIGNhbGxiYWNrKQorCisgICAgU2V0IHRoZSB2ZXJpZmljYXRpb24gZmxhZ3MgZm9yIHRoaXMgQ29udGV4dCBvYmplY3QgdG8gKm1vZGUqIGFuZCBzcGVjaWZ5CisgICAgdGhhdCAqY2FsbGJhY2sqIHNob3VsZCBiZSB1c2VkIGZvciB2ZXJpZmljYXRpb24gY2FsbGJhY2tzLiAqbW9kZSogc2hvdWxkIGJlCisgICAgb25lIG9mIDpweTpjb25zdDpgVkVSSUZZX05PTkVgIGFuZCA6cHk6Y29uc3Q6YFZFUklGWV9QRUVSYC4gSWYKKyAgICA6cHk6Y29uc3Q6YFZFUklGWV9QRUVSYCBpcyB1c2VkLCAqbW9kZSogY2FuIGJlIE9SOmVkIHdpdGgKKyAgICA6cHk6Y29uc3Q6YFZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVGAgYW5kIDpweTpjb25zdDpgVkVSSUZZX0NMSUVOVF9PTkNFYAorICAgIHRvIGZ1cnRoZXIgY29udHJvbCB0aGUgYmVoYXZpb3VyLgorCisgICAgKmNhbGxiYWNrKiBzaG91bGQgdGFrZSBmaXZlIGFyZ3VtZW50czogQSBDb25uZWN0aW9uIG9iamVjdCwgYW4gWDUwOSBvYmplY3QsCisgICAgYW5kIHRocmVlIGludGVnZXIgdmFyaWFibGVzLCB3aGljaCBhcmUgaW4gdHVybiBwb3RlbnRpYWwgZXJyb3IgbnVtYmVyLCBlcnJvcgorICAgIGRlcHRoIGFuZCByZXR1cm4gY29kZS4gKmNhbGxiYWNrKiBzaG91bGQgcmV0dXJuIHRydWUgaWYgdmVyaWZpY2F0aW9uIHBhc3NlcworICAgIGFuZCBmYWxzZSBvdGhlcndpc2UuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC5zZXRfdmVyaWZ5X2RlcHRoKGRlcHRoKQorCisgICAgU2V0IHRoZSBtYXhpbXVtIGRlcHRoIGZvciB0aGUgY2VydGlmaWNhdGUgY2hhaW4gdmVyaWZpY2F0aW9uIHRoYXQgc2hhbGwgYmUKKyAgICBhbGxvd2VkIGZvciB0aGlzIENvbnRleHQgb2JqZWN0LgorCisKKy4uIHB5Om1ldGhvZDo6IENvbnRleHQudXNlX2NlcnRpZmljYXRlKGNlcnQpCisKKyAgICBVc2UgdGhlIGNlcnRpZmljYXRlICpjZXJ0KiB3aGljaCBoYXMgdG8gYmUgYSBYNTA5IG9iamVjdC4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LmFkZF9leHRyYV9jaGFpbl9jZXJ0KGNlcnQpCisKKyAgICBBZGRzIHRoZSBjZXJ0aWZpY2F0ZSAqY2VydCosIHdoaWNoIGhhcyB0byBiZSBhIFg1MDkgb2JqZWN0LCB0byB0aGUKKyAgICBjZXJ0aWZpY2F0ZSBjaGFpbiBwcmVzZW50ZWQgdG9nZXRoZXIgd2l0aCB0aGUgY2VydGlmaWNhdGUuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC51c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZShmaWxlKQorCisgICAgTG9hZCBhIGNlcnRpZmljYXRlIGNoYWluIGZyb20gKmZpbGUqIHdoaWNoIG11c3QgYmUgUEVNIGVuY29kZWQuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC51c2VfcHJpdmF0ZWtleShwa2V5KQorCisgICAgVXNlIHRoZSBwcml2YXRlIGtleSAqcGtleSogd2hpY2ggaGFzIHRvIGJlIGEgUEtleSBvYmplY3QuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC51c2VfY2VydGlmaWNhdGVfZmlsZShmaWxlWywgZm9ybWF0XSkKKworICAgIExvYWQgdGhlIGZpcnN0IGNlcnRpZmljYXRlIGZvdW5kIGluICpmaWxlKi4gVGhlIGNlcnRpZmljYXRlIG11c3QgYmUgaW4gdGhlCisgICAgZm9ybWF0IHNwZWNpZmllZCBieSAqZm9ybWF0Kiwgd2hpY2ggaXMgZWl0aGVyIDpweTpjb25zdDpgRklMRVRZUEVfUEVNYCBvcgorICAgIDpweTpjb25zdDpgRklMRVRZUEVfQVNOMWAuIFRoZSBkZWZhdWx0IGlzIDpweTpjb25zdDpgRklMRVRZUEVfUEVNYC4KKworCisuLiBweTptZXRob2Q6OiBDb250ZXh0LnVzZV9wcml2YXRla2V5X2ZpbGUoZmlsZVssIGZvcm1hdF0pCisKKyAgICBMb2FkIHRoZSBmaXJzdCBwcml2YXRlIGtleSBmb3VuZCBpbiAqZmlsZSouIFRoZSBwcml2YXRlIGtleSBtdXN0IGJlIGluIHRoZQorICAgIGZvcm1hdCBzcGVjaWZpZWQgYnkgKmZvcm1hdCosIHdoaWNoIGlzIGVpdGhlciA6cHk6Y29uc3Q6YEZJTEVUWVBFX1BFTWAgb3IKKyAgICA6cHk6Y29uc3Q6YEZJTEVUWVBFX0FTTjFgLiBUaGUgZGVmYXVsdCBpcyA6cHk6Y29uc3Q6YEZJTEVUWVBFX1BFTWAuCisKKworLi4gcHk6bWV0aG9kOjogQ29udGV4dC5zZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2soY2FsbGJhY2spCisKKyAgICBTcGVjaWZ5IGEgb25lLWFyZ3VtZW50IGNhbGxhYmxlIHRvIHVzZSBhcyB0aGUgVExTIGV4dGVuc2lvbiBzZXJ2ZXIgbmFtZQorICAgIGNhbGxiYWNrLiAgV2hlbiBhIGNvbm5lY3Rpb24gdXNpbmcgdGhlIHNlcnZlciBuYW1lIGV4dGVuc2lvbiBpcyBtYWRlIHVzaW5nCisgICAgdGhpcyBjb250ZXh0LCB0aGUgY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIDpweTpjbGFzczpgQ29ubmVjdGlvbmAKKyAgICBpbnN0YW5jZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuMTMKKworCisuLiBfb3BlbnNzbC1jb25uZWN0aW9uOgorCitDb25uZWN0aW9uIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitDb25uZWN0aW9uIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uYWNjZXB0KCkKKworICAgIENhbGwgdGhlIDpweTptZXRoOmBhY2NlcHRgIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQgYW5kIHNldCB1cCBTU0wgb24gdGhlCisgICAgcmV0dXJuZWQgc29ja2V0LCB1c2luZyB0aGUgQ29udGV4dCBvYmplY3Qgc3VwcGxpZWQgdG8gdGhpcyBDb25uZWN0aW9uIG9iamVjdCBhdAorICAgIGNyZWF0aW9uLiBSZXR1cm5zIGEgcGFpciAqKGNvbm4sIGFkZHJlc3MpKi4gd2hlcmUgKmNvbm4qIGlzIHRoZSBuZXcKKyAgICBDb25uZWN0aW9uIG9iamVjdCBjcmVhdGVkLCBhbmQgKmFkZHJlc3MqIGlzIGFzIHJldHVybmVkIGJ5IHRoZSBzb2NrZXQncworICAgIDpweTptZXRoOmBhY2NlcHRgLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uYmluZChhZGRyZXNzKQorCisgICAgQ2FsbCB0aGUgOnB5Om1ldGg6YGJpbmRgIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5jbG9zZSgpCisKKyAgICBDYWxsIHRoZSA6cHk6bWV0aDpgY2xvc2VgIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuIE5vdGU6IElmIHlvdSB3YW50CisgICAgY29ycmVjdCBTU0wgY2xvc3VyZSwgeW91IG5lZWQgdG8gY2FsbCB0aGUgOnB5Om1ldGg6YHNodXRkb3duYCBtZXRob2QgZmlyc3QuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5jb25uZWN0KGFkZHJlc3MpCisKKyAgICBDYWxsIHRoZSA6cHk6bWV0aDpgY29ubmVjdGAgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBhbmQgc2V0IHVwIFNTTCBvbiB0aGUKKyAgICBzb2NrZXQsIHVzaW5nIHRoZSBDb250ZXh0IG9iamVjdCBzdXBwbGllZCB0byB0aGlzIENvbm5lY3Rpb24gb2JqZWN0IGF0CisgICAgY3JlYXRpb24uCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5jb25uZWN0X2V4KGFkZHJlc3MpCisKKyAgICBDYWxsIHRoZSA6cHk6bWV0aDpgY29ubmVjdF9leGAgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBhbmQgc2V0IHVwIFNTTCBvbgorICAgIHRoZSBzb2NrZXQsIHVzaW5nIHRoZSBDb250ZXh0IG9iamVjdCBzdXBwbGllZCB0byB0aGlzIENvbm5lY3Rpb24gb2JqZWN0IGF0CisgICAgY3JlYXRpb24uIE5vdGUgdGhhdCBpZiB0aGUgOnB5Om1ldGg6YGNvbm5lY3RfZXhgIG1ldGhvZCBvZiB0aGUgc29ja2V0IGRvZXNuJ3QKKyAgICByZXR1cm4gMCwgU1NMIHdvbid0IGJlIGluaXRpYWxpemVkLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uZG9faGFuZHNoYWtlKCkKKworICAgIFBlcmZvcm0gYW4gU1NMIGhhbmRzaGFrZSAodXN1YWxseSBjYWxsZWQgYWZ0ZXIgOnB5Om1ldGg6YHJlbmVnb3RpYXRlYCBvciBvbmUgb2YKKyAgICA6cHk6bWV0aDpgc2V0X2FjY2VwdF9zdGF0ZWAgb3IgOnB5Om1ldGg6YHNldF9hY2NlcHRfc3RhdGVgKS4gVGhpcyBjYW4gcmFpc2UgdGhlCisgICAgc2FtZSBleGNlcHRpb25zIGFzIDpweTptZXRoOmBzZW5kYCBhbmQgOnB5Om1ldGg6YHJlY3ZgLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uZmlsZW5vKCkKKworICAgIFJldHJpZXZlIHRoZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyIGZvciB0aGUgdW5kZXJseWluZyBzb2NrZXQuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5saXN0ZW4oYmFja2xvZykKKworICAgIENhbGwgdGhlIDpweTptZXRoOmBsaXN0ZW5gIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5nZXRfYXBwX2RhdGEoKQorCisgICAgUmV0cmlldmUgYXBwbGljYXRpb24gZGF0YSBhcyBzZXQgYnkgOnB5Om1ldGg6YHNldF9hcHBfZGF0YWAuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5nZXRfY2lwaGVyX2xpc3QoKQorCisgICAgUmV0cmlldmUgdGhlIGxpc3Qgb2YgY2lwaGVycyB1c2VkIGJ5IHRoZSBDb25uZWN0aW9uIG9iamVjdC4gV0FSTklORzogVGhpcyBBUEkKKyAgICBoYXMgY2hhbmdlZC4gSXQgdXNlZCB0byB0YWtlIGFuIG9wdGlvbmFsIHBhcmFtZXRlciBhbmQganVzdCByZXR1cm4gYSBzdHJpbmcsCisgICAgYnV0IG5vdCBpdCByZXR1cm5zIHRoZSBlbnRpcmUgbGlzdCBpbiBvbmUgZ28uCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5nZXRfY2xpZW50X2NhX2xpc3QoKQorCisgICAgUmV0cmlldmUgdGhlIGxpc3Qgb2YgcHJlZmVycmVkIGNsaWVudCBjZXJ0aWZpY2F0ZSBpc3N1ZXJzIHNlbnQgYnkgdGhlIHNlcnZlcgorICAgIGFzIDpweTpjbGFzczpgT3BlblNTTC5jcnlwdG8uWDUwOU5hbWVgIG9iamVjdHMuCisKKyAgICBJZiB0aGlzIGlzIGEgY2xpZW50IDpweTpjbGFzczpgQ29ubmVjdGlvbmAsIHRoZSBsaXN0IHdpbGwgYmUgZW1wdHkgdW50aWwgdGhlCisgICAgY29ubmVjdGlvbiB3aXRoIHRoZSBzZXJ2ZXIgaXMgZXN0YWJsaXNoZWQuCisKKyAgICBJZiB0aGlzIGlzIGEgc2VydmVyIDpweTpjbGFzczpgQ29ubmVjdGlvbmAsIHJldHVybiB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZQorICAgIGF1dGhvcml0aWVzIHRoYXQgd2lsbCBiZSBzZW50IG9yIGhhcyBiZWVuIHNlbnQgdG8gdGhlIGNsaWVudCwgYXMgY29udHJvbGxlZAorICAgIGJ5IHRoaXMgOnB5OmNsYXNzOmBDb25uZWN0aW9uYCdzIDpweTpjbGFzczpgQ29udGV4dGAuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjEwCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5nZXRfY29udGV4dCgpCisKKyAgICBSZXRyaWV2ZSB0aGUgQ29udGV4dCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQ29ubmVjdGlvbi4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLnNldF9jb250ZXh0KGNvbnRleHQpCisKKyAgICBTcGVjaWZ5IGEgcmVwbGFjZW1lbnQgQ29udGV4dCBvYmplY3QgZm9yIHRoaXMgQ29ubmVjdGlvbi4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLmdldF9wZWVyX2NlcnRpZmljYXRlKCkKKworICAgIFJldHJpZXZlIHRoZSBvdGhlciBzaWRlJ3MgY2VydGlmaWNhdGUgKGlmIGFueSkKKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLmdldF9wZWVyX2NlcnRfY2hhaW4oKQorCisgICAgUmV0cmlldmUgdGhlIHR1cGxlIG9mIHRoZSBvdGhlciBzaWRlJ3MgY2VydGlmaWNhdGUgY2hhaW4gKGlmIGFueSkKKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLmdldHBlZXJuYW1lKCkKKworICAgIENhbGwgdGhlIDpweTptZXRoOmBnZXRwZWVybmFtZWAgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLmdldHNvY2tuYW1lKCkKKworICAgIENhbGwgdGhlIDpweTptZXRoOmBnZXRzb2NrbmFtZWAgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLmdldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWVbLCBidWZsZW5dKQorCisgICAgQ2FsbCB0aGUgOnB5Om1ldGg6YGdldHNvY2tvcHRgIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5wZW5kaW5nKCkKKworICAgIFJldHJpZXZlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgc2FmZWx5IHJlYWQgZnJvbSB0aGUgU1NMIGJ1ZmZlcgorICAgICgqKm5vdCoqIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCBidWZmZXIpLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24ucmVjdihidWZzaXplKQorCisgICAgUmVjZWl2ZSBkYXRhIGZyb20gdGhlIENvbm5lY3Rpb24uIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQorICAgIGRhdGEgcmVjZWl2ZWQuIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRvIGJlIHJlY2VpdmVkIGF0IG9uY2UsIGlzIHNwZWNpZmllZAorICAgIGJ5ICpidWZzaXplKi4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLmJpb193cml0ZShieXRlcykKKworICAgIElmIHRoZSBDb25uZWN0aW9uIHdhcyBjcmVhdGVkIHdpdGggYSBtZW1vcnkgQklPLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBhZGQKKyAgICBieXRlcyB0byB0aGUgcmVhZCBlbmQgb2YgdGhhdCBtZW1vcnkgQklPLiAgVGhlIENvbm5lY3Rpb24gY2FuIHRoZW4gcmVhZCB0aGUKKyAgICBieXRlcyAoZm9yIGV4YW1wbGUsIGluIHJlc3BvbnNlIHRvIGEgY2FsbCB0byA6cHk6bWV0aDpgcmVjdmApLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24ucmVuZWdvdGlhdGUoKQorCisgICAgUmVuZWdvdGlhdGUgdGhlIFNTTCBzZXNzaW9uLiBDYWxsIHRoaXMgaWYgeW91IHdpc2ggdG8gY2hhbmdlIGNpcGhlciBzdWl0ZXMgb3IKKyAgICBhbnl0aGluZyBsaWtlIHRoYXQuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5zZW5kKHN0cmluZykKKworICAgIFNlbmQgdGhlICpzdHJpbmcqIGRhdGEgdG8gdGhlIENvbm5lY3Rpb24uCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5iaW9fcmVhZChidWZzaXplKQorCisgICAgSWYgdGhlIENvbm5lY3Rpb24gd2FzIGNyZWF0ZWQgd2l0aCBhIG1lbW9yeSBCSU8sIHRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvCisgICAgcmVhZCBieXRlcyBmcm9tIHRoZSB3cml0ZSBlbmQgb2YgdGhhdCBtZW1vcnkgQklPLiAgTWFueSBDb25uZWN0aW9uIG1ldGhvZHMgd2lsbAorICAgIGFkZCBieXRlcyB3aGljaCBtdXN0IGJlIHJlYWQgaW4gdGhpcyBtYW5uZXIgb3IgdGhlIGJ1ZmZlciB3aWxsIGV2ZW50dWFsbHkgZmlsbAorICAgIHVwIGFuZCB0aGUgQ29ubmVjdGlvbiB3aWxsIGJlIGFibGUgdG8gdGFrZSBubyBmdXJ0aGVyIGFjdGlvbnMuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5zZW5kYWxsKHN0cmluZykKKworICAgIFNlbmQgYWxsIG9mIHRoZSAqc3RyaW5nKiBkYXRhIHRvIHRoZSBDb25uZWN0aW9uLiBUaGlzIGNhbGxzIDpweTptZXRoOmBzZW5kYAorICAgIHJlcGVhdGVkbHkgdW50aWwgYWxsIGRhdGEgaXMgc2VudC4gSWYgYW4gZXJyb3Igb2NjdXJzLCBpdCdzIGltcG9zc2libGUgdG8gdGVsbAorICAgIGhvdyBtdWNoIGRhdGEgaGFzIGJlZW4gc2VudC4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLnNldF9hY2NlcHRfc3RhdGUoKQorCisgICAgU2V0IHRoZSBjb25uZWN0aW9uIHRvIHdvcmsgaW4gc2VydmVyIG1vZGUuIFRoZSBoYW5kc2hha2Ugd2lsbCBiZSBoYW5kbGVkCisgICAgYXV0b21hdGljYWxseSBieSByZWFkL3dyaXRlLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uc2V0X2FwcF9kYXRhKGRhdGEpCisKKyAgICBBc3NvY2lhdGUgKmRhdGEqIHdpdGggdGhpcyBDb25uZWN0aW9uIG9iamVjdC4gKmRhdGEqIGNhbiBiZSByZXRyaWV2ZWQKKyAgICBsYXRlciB1c2luZyB0aGUgOnB5Om1ldGg6YGdldF9hcHBfZGF0YWAgbWV0aG9kLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uc2V0X2Nvbm5lY3Rfc3RhdGUoKQorCisgICAgU2V0IHRoZSBjb25uZWN0aW9uIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUuIFRoZSBoYW5kc2hha2Ugd2lsbCBiZSBoYW5kbGVkCisgICAgYXV0b21hdGljYWxseSBieSByZWFkL3dyaXRlLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uc2V0YmxvY2tpbmcoZmxhZykKKworICAgIENhbGwgdGhlIDpweTptZXRoOmBzZXRibG9ja2luZ2AgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlKQorCisgICAgQ2FsbCB0aGUgOnB5Om1ldGg6YHNldHNvY2tvcHRgIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5zaHV0ZG93bigpCisKKyAgICBTZW5kIHRoZSBzaHV0ZG93biBtZXNzYWdlIHRvIHRoZSBDb25uZWN0aW9uLiBSZXR1cm5zIHRydWUgaWYgdGhlIHNodXRkb3duCisgICAgbWVzc2FnZSBleGNoYW5nZSBpcyBjb21wbGV0ZWQgYW5kIGZhbHNlIG90aGVyd2lzZSAoaW4gd2hpY2ggY2FzZSB5b3UgY2FsbAorICAgIDpweTptZXRoOmByZWN2YCBvciA6cHk6bWV0aDpgc2VuZGAgd2hlbiB0aGUgY29ubmVjdGlvbiBiZWNvbWVzCisgICAgcmVhZGFibGUvd3JpdGVhYmxlLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uZ2V0X3NodXRkb3duKCkKKworICAgIEdldCB0aGUgc2h1dGRvd24gc3RhdGUgb2YgdGhlIENvbm5lY3Rpb24uICBSZXR1cm5zIGEgYml0dmVjdG9yIG9mIGVpdGhlciBvcgorICAgIGJvdGggb2YgKlNFTlRfU0hVVERPV04qIGFuZCAqUkVDRUlWRURfU0hVVERPV04qLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uc2V0X3NodXRkb3duKHN0YXRlKQorCisgICAgU2V0IHRoZSBzaHV0ZG93biBzdGF0ZSBvZiB0aGUgQ29ubmVjdGlvbi4gICpzdGF0ZSogaXMgYSBiaXR2ZWN0b3Igb2YKKyAgICBlaXRoZXIgb3IgYm90aCBvZiAqU0VOVF9TSFVURE9XTiogYW5kICpSRUNFSVZFRF9TSFVURE9XTiouCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5zb2NrX3NodXRkb3duKGhvdykKKworICAgIENhbGwgdGhlIDpweTptZXRoOmBzaHV0ZG93bmAgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLmJpb19zaHV0ZG93bigpCisKKyAgICBJZiB0aGUgQ29ubmVjdGlvbiB3YXMgY3JlYXRlZCB3aXRoIGEgbWVtb3J5IEJJTywgdGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8KKyAgICBpbmRpY2F0ZSB0aGF0ICplbmQgb2YgZmlsZSogaGFzIGJlZW4gcmVhY2hlZCBvbiB0aGUgcmVhZCBlbmQgb2YgdGhhdCBtZW1vcnkKKyAgICBCSU8uCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5zdGF0ZV9zdHJpbmcoKQorCisgICAgUmV0cmlldmUgYSB2ZXJib3NlIHN0cmluZyBkZXRhaWxpbmcgdGhlIHN0YXRlIG9mIHRoZSBDb25uZWN0aW9uLgorCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uY2xpZW50X3JhbmRvbSgpCisKKyAgICBSZXRyaWV2ZSB0aGUgcmFuZG9tIHZhbHVlIHVzZWQgd2l0aCB0aGUgY2xpZW50IGhlbGxvIG1lc3NhZ2UuCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5zZXJ2ZXJfcmFuZG9tKCkKKworICAgIFJldHJpZXZlIHRoZSByYW5kb20gdmFsdWUgdXNlZCB3aXRoIHRoZSBzZXJ2ZXIgaGVsbG8gbWVzc2FnZS4KKworCisuLiBweTptZXRob2Q6OiBDb25uZWN0aW9uLm1hc3Rlcl9rZXkoKQorCisgICAgUmV0cmlldmUgdGhlIHZhbHVlIG9mIHRoZSBtYXN0ZXIga2V5IGZvciB0aGlzIHNlc3Npb24uCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi53YW50X3JlYWQoKQorCisgICAgQ2hlY2tzIGlmIG1vcmUgZGF0YSBoYXMgdG8gYmUgcmVhZCBmcm9tIHRoZSB0cmFuc3BvcnQgbGF5ZXIgdG8gY29tcGxldGUgYW4KKyAgICBvcGVyYXRpb24uCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi53YW50X3dyaXRlKCkKKworICAgIENoZWNrcyBpZiB0aGVyZSBpcyBkYXRhIHRvIHdyaXRlIHRvIHRoZSB0cmFuc3BvcnQgbGF5ZXIgdG8gY29tcGxldGUgYW4KKyAgICBvcGVyYXRpb24uCisKKworLi4gcHk6bWV0aG9kOjogQ29ubmVjdGlvbi5zZXRfdGxzZXh0X2hvc3RfbmFtZShuYW1lKQorCisgICAgU3BlY2lmeSB0aGUgYnl0ZSBzdHJpbmcgdG8gc2VuZCBhcyB0aGUgc2VydmVyIG5hbWUgaW4gdGhlIGNsaWVudCBoZWxsbyBtZXNzYWdlLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xMworCisKKy4uIHB5Om1ldGhvZDo6IENvbm5lY3Rpb24uZ2V0X3NlcnZlcm5hbWUoKQorCisgICAgR2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VydmVyIG5hbWUgcmVjZWl2ZWQgaW4gdGhlIGNsaWVudCBoZWxsbyBtZXNzYWdlLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xMworCisKKy4uIFJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbI2Nvbm5lY3Rpb24tY29udGV4dC1zb2NrZXRdIEFjdHVhbGx5LCBhbGwgdGhhdCBpcyByZXF1aXJlZCBpcyBhbiBvYmplY3QgdGhhdAorICAgICoqYmVoYXZlcyoqIGxpa2UgYSBzb2NrZXQsIHlvdSBjb3VsZCBldmVuIHVzZSBmaWxlcywgZXZlbiB0aG91Z2ggaXQnZCBiZQorICAgIHRyaWNreSB0byBnZXQgdGhlIGhhbmRzaGFrZXMgcmlnaHQhCmRpZmYgLS1naXQgYS9kb2MvY29uZi5weSBiL2RvYy9jb25mLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOTc4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvY29uZi5weQpAQCAtMCwwICsxLDIxOSBAQAorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgcHlPcGVuU1NMIGRvY3VtZW50YXRpb24gYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlLCBjcmVhdGVkIGJ5CisjIHNwaGlueC1xdWlja3N0YXJ0IG9uIFNhdCBKdWwgMTYgMDc6MTI6MjIgMjAxMS4KKyMKKyMgVGhpcyBmaWxlIGlzIGV4ZWNmaWxlKClkIHdpdGggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHNldCB0byBpdHMgY29udGFpbmluZyBkaXIuCisjCisjIE5vdGUgdGhhdCBub3QgYWxsIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGFyZSBwcmVzZW50IGluIHRoaXMKKyMgYXV0b2dlbmVyYXRlZCBmaWxlLgorIworIyBBbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMgaGF2ZSBhIGRlZmF1bHQ7IHZhbHVlcyB0aGF0IGFyZSBjb21tZW50ZWQgb3V0CisjIHNlcnZlIHRvIHNob3cgdGhlIGRlZmF1bHQuCisKK2ltcG9ydCBzeXMsIG9zCisKK0RPQ19ESVIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKERPQ19ESVIsICIuLiIpKSkKKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdpdGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQgdGhlc2UgZGlyZWN0b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQgYWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KKyNzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5hYnNwYXRoKCcuJykpCisKKyMgLS0gR2VuZXJhbCBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEgbWluaW1hbCBTcGhpbnggdmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KK25lZWRzX3NwaGlueCA9ICcxLjAnCisKKyMgQWRkIGFueSBTcGhpbnggZXh0ZW5zaW9uIG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBzdHJpbmdzLiBUaGV5IGNhbiBiZSBleHRlbnNpb25zCisjIGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQgJ3NwaGlueC5leHQuKicpIG9yIHlvdXIgY3VzdG9tIG9uZXMuCitleHRlbnNpb25zID0gW10KKworIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0ZW1wbGF0ZXMgaGVyZSwgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuCit0ZW1wbGF0ZXNfcGF0aCA9IFsnX3RlbXBsYXRlcyddCisKKyMgVGhlIHN1ZmZpeCBvZiBzb3VyY2UgZmlsZW5hbWVzLgorc291cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXMuCisjc291cmNlX2VuY29kaW5nID0gJ3V0Zi04LXNpZycKKworIyBUaGUgbWFzdGVyIHRvY3RyZWUgZG9jdW1lbnQuCittYXN0ZXJfZG9jID0gJ2luZGV4JworCisjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCitwcm9qZWN0ID0gdSdweU9wZW5TU0wnCitjb3B5cmlnaHQgPSB1JzIwMTEsIEplYW4tUGF1bCBDYWxkZXJvbmUnCisKKyMgVGhlIHZlcnNpb24gaW5mbyBmb3IgdGhlIHByb2plY3QgeW91J3JlIGRvY3VtZW50aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50IGZvcgorIyB8dmVyc2lvbnwgYW5kIHxyZWxlYXNlfCwgYWxzbyB1c2VkIGluIHZhcmlvdXMgb3RoZXIgcGxhY2VzIHRocm91Z2hvdXQgdGhlCisjIGJ1aWx0IGRvY3VtZW50cy4KKyMKKyMgVGhlIHNob3J0IFguWSB2ZXJzaW9uLgordmVyc2lvbiA9ICcwLjEzJworIyBUaGUgZnVsbCB2ZXJzaW9uLCBpbmNsdWRpbmcgYWxwaGEvYmV0YS9yYyB0YWdzLgorcmVsZWFzZSA9ICcwLjEzJworCisjIFRoZSBsYW5ndWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgorIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCisjbGFuZ3VhZ2UgPSBOb25lCisKKyMgVGhlcmUgYXJlIHR3byBvcHRpb25zIGZvciByZXBsYWNpbmcgfHRvZGF5fDogZWl0aGVyLCB5b3Ugc2V0IHRvZGF5IHRvIHNvbWUKKyMgbm9uLWZhbHNlIHZhbHVlLCB0aGVuIGl0IGlzIHVzZWQ6CisjdG9kYXkgPSAnJworIyBFbHNlLCB0b2RheV9mbXQgaXMgdXNlZCBhcyB0aGUgZm9ybWF0IGZvciBhIHN0cmZ0aW1lIGNhbGwuCisjdG9kYXlfZm10ID0gJyVCICVkLCAlWScKKworIyBMaXN0IG9mIHBhdHRlcm5zLCByZWxhdGl2ZSB0byBzb3VyY2UgZGlyZWN0b3J5LCB0aGF0IG1hdGNoIGZpbGVzIGFuZAorIyBkaXJlY3RvcmllcyB0byBpZ25vcmUgd2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMuCitleGNsdWRlX3BhdHRlcm5zID0gWydfYnVpbGQnXQorCisjIFRoZSByZVNUIGRlZmF1bHQgcm9sZSAodXNlZCBmb3IgdGhpcyBtYXJrdXA6IGB0ZXh0YCkgdG8gdXNlIGZvciBhbGwgZG9jdW1lbnRzLgorI2RlZmF1bHRfcm9sZSA9IE5vbmUKKworIyBJZiB0cnVlLCAnKCknIHdpbGwgYmUgYXBwZW5kZWQgdG8gOmZ1bmM6IGV0Yy4gY3Jvc3MtcmVmZXJlbmNlIHRleHQuCisjYWRkX2Z1bmN0aW9uX3BhcmVudGhlc2VzID0gVHJ1ZQorCisjIElmIHRydWUsIHRoZSBjdXJyZW50IG1vZHVsZSBuYW1lIHdpbGwgYmUgcHJlcGVuZGVkIHRvIGFsbCBkZXNjcmlwdGlvbgorIyB1bml0IHRpdGxlcyAoc3VjaCBhcyAuLiBmdW5jdGlvbjo6KS4KKyNhZGRfbW9kdWxlX25hbWVzID0gVHJ1ZQorCisjIElmIHRydWUsIHNlY3Rpb25hdXRob3IgYW5kIG1vZHVsZWF1dGhvciBkaXJlY3RpdmVzIHdpbGwgYmUgc2hvd24gaW4gdGhlCisjIG91dHB1dC4gVGhleSBhcmUgaWdub3JlZCBieSBkZWZhdWx0LgorI3Nob3dfYXV0aG9ycyA9IEZhbHNlCisKKyMgVGhlIG5hbWUgb2YgdGhlIFB5Z21lbnRzIChzeW50YXggaGlnaGxpZ2h0aW5nKSBzdHlsZSB0byB1c2UuCitweWdtZW50c19zdHlsZSA9ICdzcGhpbngnCisKKyMgQSBsaXN0IG9mIGlnbm9yZWQgcHJlZml4ZXMgZm9yIG1vZHVsZSBpbmRleCBzb3J0aW5nLgorI21vZGluZGV4X2NvbW1vbl9wcmVmaXggPSBbXQorCisKKyMgLS0gT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCitodG1sX3RoZW1lID0gJ2RlZmF1bHQnCisKKyMgVGhlbWUgb3B0aW9ucyBhcmUgdGhlbWUtc3BlY2lmaWMgYW5kIGN1c3RvbWl6ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBhIHRoZW1lCisjIGZ1cnRoZXIuICBGb3IgYSBsaXN0IG9mIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBlYWNoIHRoZW1lLCBzZWUgdGhlCisjIGRvY3VtZW50YXRpb24uCisjaHRtbF90aGVtZV9vcHRpb25zID0ge30KKworIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gdGhlbWVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LgorI2h0bWxfdGhlbWVfcGF0aCA9IFtdCisKKyMgVGhlIG5hbWUgZm9yIHRoaXMgc2V0IG9mIFNwaGlueCBkb2N1bWVudHMuICBJZiBOb25lLCBpdCBkZWZhdWx0cyB0bworIyAiPHByb2plY3Q+IHY8cmVsZWFzZT4gZG9jdW1lbnRhdGlvbiIuCisjaHRtbF90aXRsZSA9IE5vbmUKKworIyBBIHNob3J0ZXIgdGl0bGUgZm9yIHRoZSBuYXZpZ2F0aW9uIGJhci4gIERlZmF1bHQgaXMgdGhlIHNhbWUgYXMgaHRtbF90aXRsZS4KKyNodG1sX3Nob3J0X3RpdGxlID0gTm9uZQorCisjIFRoZSBuYW1lIG9mIGFuIGltYWdlIGZpbGUgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KSB0byBwbGFjZSBhdCB0aGUgdG9wCisjIG9mIHRoZSBzaWRlYmFyLgorI2h0bWxfbG9nbyA9IE5vbmUKKworIyBUaGUgbmFtZSBvZiBhbiBpbWFnZSBmaWxlICh3aXRoaW4gdGhlIHN0YXRpYyBwYXRoKSB0byB1c2UgYXMgZmF2aWNvbiBvZiB0aGUKKyMgZG9jcy4gIFRoaXMgZmlsZSBzaG91bGQgYmUgYSBXaW5kb3dzIGljb24gZmlsZSAoLmljbykgYmVpbmcgMTZ4MTYgb3IgMzJ4MzIKKyMgcGl4ZWxzIGxhcmdlLgorI2h0bWxfZmF2aWNvbiA9IE5vbmUKKworIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gc3RhdGljIGZpbGVzIChzdWNoIGFzIHN0eWxlIHNoZWV0cykgaGVyZSwKKyMgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuIFRoZXkgYXJlIGNvcGllZCBhZnRlciB0aGUgYnVpbHRpbiBzdGF0aWMgZmlsZXMsCisjIHNvIGEgZmlsZSBuYW1lZCAiZGVmYXVsdC5jc3MiIHdpbGwgb3ZlcndyaXRlIHRoZSBidWlsdGluICJkZWZhdWx0LmNzcyIuCitodG1sX3N0YXRpY19wYXRoID0gWydfc3RhdGljJ10KKworIyBJZiBub3QgJycsIGEgJ0xhc3QgdXBkYXRlZCBvbjonIHRpbWVzdGFtcCBpcyBpbnNlcnRlZCBhdCBldmVyeSBwYWdlIGJvdHRvbSwKKyMgdXNpbmcgdGhlIGdpdmVuIHN0cmZ0aW1lIGZvcm1hdC4KKyNodG1sX2xhc3RfdXBkYXRlZF9mbXQgPSAnJWIgJWQsICVZJworCisjIElmIHRydWUsIFNtYXJ0eVBhbnRzIHdpbGwgYmUgdXNlZCB0byBjb252ZXJ0IHF1b3RlcyBhbmQgZGFzaGVzIHRvCisjIHR5cG9ncmFwaGljYWxseSBjb3JyZWN0IGVudGl0aWVzLgorI2h0bWxfdXNlX3NtYXJ0eXBhbnRzID0gVHJ1ZQorCisjIEN1c3RvbSBzaWRlYmFyIHRlbXBsYXRlcywgbWFwcyBkb2N1bWVudCBuYW1lcyB0byB0ZW1wbGF0ZSBuYW1lcy4KKyNodG1sX3NpZGViYXJzID0ge30KKworIyBBZGRpdGlvbmFsIHRlbXBsYXRlcyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCB0byBwYWdlcywgbWFwcyBwYWdlIG5hbWVzIHRvCisjIHRlbXBsYXRlIG5hbWVzLgorI2h0bWxfYWRkaXRpb25hbF9wYWdlcyA9IHt9CisKKyMgSWYgZmFsc2UsIG5vIG1vZHVsZSBpbmRleCBpcyBnZW5lcmF0ZWQuCisjaHRtbF9kb21haW5faW5kaWNlcyA9IFRydWUKKworIyBJZiBmYWxzZSwgbm8gaW5kZXggaXMgZ2VuZXJhdGVkLgorI2h0bWxfdXNlX2luZGV4ID0gVHJ1ZQorCisjIElmIHRydWUsIHRoZSBpbmRleCBpcyBzcGxpdCBpbnRvIGluZGl2aWR1YWwgcGFnZXMgZm9yIGVhY2ggbGV0dGVyLgorI2h0bWxfc3BsaXRfaW5kZXggPSBGYWxzZQorCisjIElmIHRydWUsIGxpbmtzIHRvIHRoZSByZVNUIHNvdXJjZXMgYXJlIGFkZGVkIHRvIHRoZSBwYWdlcy4KKyNodG1sX3Nob3dfc291cmNlbGluayA9IFRydWUKKworIyBJZiB0cnVlLCAiQ3JlYXRlZCB1c2luZyBTcGhpbngiIGlzIHNob3duIGluIHRoZSBIVE1MIGZvb3Rlci4gRGVmYXVsdCBpcyBUcnVlLgorI2h0bWxfc2hvd19zcGhpbnggPSBUcnVlCisKKyMgSWYgdHJ1ZSwgIihDKSBDb3B5cmlnaHQgLi4uIiBpcyBzaG93biBpbiB0aGUgSFRNTCBmb290ZXIuIERlZmF1bHQgaXMgVHJ1ZS4KKyNodG1sX3Nob3dfY29weXJpZ2h0ID0gVHJ1ZQorCisjIElmIHRydWUsIGFuIE9wZW5TZWFyY2ggZGVzY3JpcHRpb24gZmlsZSB3aWxsIGJlIG91dHB1dCwgYW5kIGFsbCBwYWdlcyB3aWxsCisjIGNvbnRhaW4gYSA8bGluaz4gdGFnIHJlZmVycmluZyB0byBpdC4gIFRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiBtdXN0IGJlIHRoZQorIyBiYXNlIFVSTCBmcm9tIHdoaWNoIHRoZSBmaW5pc2hlZCBIVE1MIGlzIHNlcnZlZC4KKyNodG1sX3VzZV9vcGVuc2VhcmNoID0gJycKKworIyBUaGlzIGlzIHRoZSBmaWxlIG5hbWUgc3VmZml4IGZvciBIVE1MIGZpbGVzIChlLmcuICIueGh0bWwiKS4KKyNodG1sX2ZpbGVfc3VmZml4ID0gTm9uZQorCisjIE91dHB1dCBmaWxlIGJhc2UgbmFtZSBmb3IgSFRNTCBoZWxwIGJ1aWxkZXIuCitodG1saGVscF9iYXNlbmFtZSA9ICdweU9wZW5TU0xkb2MnCisKKworIyAtLSBPcHRpb25zIGZvciBMYVRlWCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcicgb3IgJ2E0JykuCisjbGF0ZXhfcGFwZXJfc2l6ZSA9ICdsZXR0ZXInCisKKyMgVGhlIGZvbnQgc2l6ZSAoJzEwcHQnLCAnMTFwdCcgb3IgJzEycHQnKS4KKyNsYXRleF9mb250X3NpemUgPSAnMTBwdCcKKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVzLiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwgYXV0aG9yLCBkb2N1bWVudGNsYXNzIFtob3d0by9tYW51YWxdKS4KK2xhdGV4X2RvY3VtZW50cyA9IFsKKyAgKCdpbmRleCcsICdweU9wZW5TU0wudGV4JywgdSdweU9wZW5TU0wgRG9jdW1lbnRhdGlvbicsCisgICB1J0plYW4tUGF1bCBDYWxkZXJvbmUnLCAnbWFudWFsJyksCitdCisKKyMgVGhlIG5hbWUgb2YgYW4gaW1hZ2UgZmlsZSAocmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkpIHRvIHBsYWNlIGF0IHRoZSB0b3Agb2YKKyMgdGhlIHRpdGxlIHBhZ2UuCisjbGF0ZXhfbG9nbyA9IE5vbmUKKworIyBGb3IgIm1hbnVhbCIgZG9jdW1lbnRzLCBpZiB0aGlzIGlzIHRydWUsIHRoZW4gdG9wbGV2ZWwgaGVhZGluZ3MgYXJlIHBhcnRzLAorIyBub3QgY2hhcHRlcnMuCisjbGF0ZXhfdXNlX3BhcnRzID0gRmFsc2UKKworIyBJZiB0cnVlLCBzaG93IHBhZ2UgcmVmZXJlbmNlcyBhZnRlciBpbnRlcm5hbCBsaW5rcy4KKyNsYXRleF9zaG93X3BhZ2VyZWZzID0gRmFsc2UKKworIyBJZiB0cnVlLCBzaG93IFVSTCBhZGRyZXNzZXMgYWZ0ZXIgZXh0ZXJuYWwgbGlua3MuCisjbGF0ZXhfc2hvd191cmxzID0gRmFsc2UKKworIyBBZGRpdGlvbmFsIHN0dWZmIGZvciB0aGUgTGFUZVggcHJlYW1ibGUuCisjbGF0ZXhfcHJlYW1ibGUgPSAnJworCisjIERvY3VtZW50cyB0byBhcHBlbmQgYXMgYW4gYXBwZW5kaXggdG8gYWxsIG1hbnVhbHMuCisjbGF0ZXhfYXBwZW5kaWNlcyA9IFtdCisKKyMgSWYgZmFsc2UsIG5vIG1vZHVsZSBpbmRleCBpcyBnZW5lcmF0ZWQuCisjbGF0ZXhfZG9tYWluX2luZGljZXMgPSBUcnVlCisKKworIyAtLSBPcHRpb25zIGZvciBtYW51YWwgcGFnZSBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPbmUgZW50cnkgcGVyIG1hbnVhbCBwYWdlLiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRob3JzLCBtYW51YWwgc2VjdGlvbikuCittYW5fcGFnZXMgPSBbCisgICAgKCdpbmRleCcsICdweW9wZW5zc2wnLCB1J3B5T3BlblNTTCBEb2N1bWVudGF0aW9uJywKKyAgICAgW3UnSmVhbi1QYXVsIENhbGRlcm9uZSddLCAxKQorXQpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWJvdXQuaHRtbCBiL2RvYy9odG1sL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMjNiYTkuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5BYm91dCB0aGlzIGRvY3VtZW50IC4uLjwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iQWJvdXQgdGhpcyBkb2N1bWVudCAuLi4iPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgSFJFRj0icHlPcGVuU1NMLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJzb2NrZXQtbWV0aG9kcy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9InNvY2tldC1tZXRob2RzLmh0bWwiPjQuMyBBY2Vzc2luZyBTb2NrZXQgTWV0aG9kczwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgSFJFRj0icHlPcGVuU1NMLmh0bWwiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDE+PEEgTkFNRT0iU0VDVElPTjAwMDYwMDAwMDAwMDAwMDAwMDAwMCI+Ci1BYm91dCB0aGlzIGRvY3VtZW50IC4uLjwvQT4KLTwvSDE+Ci0gPHN0cm9uZz5QeXRob24gT3BlblNTTCBNYW51YWw8L3N0cm9uZz4KLTxwPiBUaGlzIGRvY3VtZW50IHdhcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIDxhCi0gICAgaHJlZj0iaHR0cDovL3NhZnRzYWNrLmZzLnVuaS1iYXlyZXV0aC5kZS9+bGF0ZXgyaHQvIj4KLSAgICA8c3Ryb25nPkxhVGVYPC9zdHJvbmc+Mjx0dD5IVE1MPC90dD48L2E+IHRyYW5zbGF0b3IuCi08L3A+Ci0KLTxwPiA8YQotICAgIGhyZWY9Imh0dHA6Ly9zYWZ0c2Fjay5mcy51bmktYmF5cmV1dGguZGUvfmxhdGV4Mmh0LyI+Ci0gICAgPHN0cm9uZz5MYVRlWDwvc3Ryb25nPjI8dHQ+SFRNTDwvdHQ+PC9hPiBpcyBDb3B5cmlnaHQgJmNvcHk7Ci0gIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDxhCi0gICAgaHJlZj0iaHR0cDovL2NibC5sZWVkcy5hYy51ay9uaWtvcy9wZXJzb25hbC5odG1sIj5OaWtvcwotICAgIERyYWtvczwvYT4sIENvbXB1dGVyIEJhc2VkIExlYXJuaW5nIFVuaXQsIFVuaXZlcnNpdHkgb2YKLSAgTGVlZHMsIGFuZCBDb3B5cmlnaHQgJmNvcHk7IDE5OTcsIDE5OTgsIDxhCi0gICAgaHJlZj0iaHR0cDovL3d3dy5tYXRocy5tcS5lZHUuYXUvfnJvc3MvIj5Sb3NzCi0gICAgTW9vcmU8L2E+LCBNYXRoZW1hdGljcyBEZXBhcnRtZW50LCBNYWNxdWFyaWUgVW5pdmVyc2l0eSwKLSAgU3lkbmV5LgotPC9wPgotCi08cD4gVGhlIGFwcGxpY2F0aW9uIG9mIDxhCi0gICAgaHJlZj0iaHR0cDovL3NhZnRzYWNrLmZzLnVuaS1iYXlyZXV0aC5kZS9+bGF0ZXgyaHQvIj4KLSAgICA8c3Ryb25nPkxhVGVYPC9zdHJvbmc+Mjx0dD5IVE1MPC90dD48L2E+IHRvIHRoZSBQeXRob24KLSAgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBoZWF2aWx5IHRhaWxvcmVkIGJ5IEZyZWQgTC4gRHJha2UsCi0gIEpyLiAgT3JpZ2luYWwgbmF2aWdhdGlvbiBpY29ucyB3ZXJlIGNvbnRyaWJ1dGVkIGJ5IENocmlzdG9waGVyCi0gIFBldHJpbGxpLgotPC9wPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJzb2NrZXQtbWV0aG9kcy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9InNvY2tldC1tZXRob2RzLmh0bWwiPjQuMyBBY2Vzc2luZyBTb2NrZXQgTWV0aG9kczwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgSFJFRj0icHlPcGVuU1NMLmh0bWwiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9ibGFuay5naWYgYi9kb2MvaHRtbC9ibGFuay5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMzFmNGUuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvYmxhbmsuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYnVpbGRpbmctdW5peC5odG1sIGIvZG9jL2h0bWwvYnVpbGRpbmctdW5peC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGE3YTA1Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2J1aWxkaW5nLXVuaXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4yLjEgQnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFVuaXggU3lzdGVtIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMi4xIEJ1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBVbml4IFN5c3RlbSAiPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJidWlsZGluZy13aW5kb3dzLmh0bWwiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0iYnVpbGRpbmcuaHRtbCI+Ci08TElOSyBSRUw9InVwIiBocmVmPSJidWlsZGluZy5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iYnVpbGRpbmctd2luZG93cy5odG1sIj4KLTwvaGVhZD4KLTxib2R5PgotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0iYnVpbGRpbmcuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iYnVpbGRpbmcuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJidWlsZGluZy13aW5kb3dzLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iYnVpbGRpbmcuaHRtbCI+MiBCdWlsZGluZyBhbmQgSW5zdGFsbGluZzwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iYnVpbGRpbmcuaHRtbCI+MiBCdWlsZGluZyBhbmQgSW5zdGFsbGluZzwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJidWlsZGluZy13aW5kb3dzLmh0bWwiPjIuMiBCdWlsZGluZyB0aGUgTW9kdWxlPC9BPgotPGJyPjxocj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTxIMj48QSBOQU1FPSJTRUNUSU9OMDAwMzEwMDAwMDAwMDAwMDAwMDAwIj4mbmJzcDs8L0E+Ci08QlI+Ci0yLjEgQnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFVuaXggU3lzdGVtIAotPC9IMj4KLQotPFA+Ci1weU9wZW5TU0wgdXNlcyBkaXN0dXRpbHMsIHNvIHRoZXJlIHJlYWxseSBzaG91bGRuJ3QgYmUgYW55IHByb2JsZW1zLiBUbyBidWlsZAotdGhlIGxpYnJhcnk6Ci08ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4KLXB5dGhvbiBzZXR1cC5weSBidWlsZAotPC9wcmU+PC9kbD4KLQotPFA+Ci1JZiB5b3VyIE9wZW5TU0wgaGVhZGVyIGZpbGVzIGFyZW4ndCBpbiA8Y29kZT4vdXNyL2luY2x1ZGU8L2NvZGU+LCB5b3UgbWF5IG5lZWQgdG8KLXN1cHBseSB0aGUgPGNvZGU+LUk8L2NvZGU+IGZsYWcgdG8gbGV0IHRoZSBzZXR1cCBzY3JpcHQga25vdyB3aGVyZSB0byBsb29rLiBUaGUgc2FtZQotZ29lcyBmb3IgdGhlIGxpYnJhcmllcyBvZiBjb3Vyc2UsIHVzZSB0aGUgPGNvZGU+LUw8L2NvZGU+IGZsYWcuIE5vdGUgdGhhdAotPGNvZGU+YnVpbGQ8L2NvZGU+IHdvbid0IGFjY2VwdCB0aGVzZSBmbGFncywgc28geW91IGhhdmUgdG8gcnVuIGZpcnN0Ci08Y29kZT5idWlsZF9leHQ8L2NvZGU+IGFuZCB0aGVuIDxjb2RlPmJ1aWxkPC9jb2RlPiEgRXhhbXBsZToKLTxkbD48ZGQ+PHByZSBjbGFzcz0idmVyYmF0aW0iPgotcHl0aG9uIHNldHVwLnB5IGJ1aWxkX2V4dCAtSS91c3IvbG9jYWwvc3NsL2luY2x1ZGUgLUwvdXNyL2xvY2FsL3NzbC9saWIKLXB5dGhvbiBzZXR1cC5weSBidWlsZAotPC9wcmU+PC9kbD4KLQotPFA+Ci1Ob3cgeW91IHNob3VsZCBoYXZlIGEgZGlyZWN0b3J5IGNhbGxlZCA8Y29kZT5PcGVuU1NMPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGUuZy4KLTxjb2RlPlNTTC5zbzwvY29kZT4gYW5kIDxjb2RlPl9faW5pdF9fLnB5PC9jb2RlPiBzb21ld2hlcmUgaW4gdGhlIGJ1aWxkIGRpY3JlY3RvcnksCi1zbyBqdXN0OgotPGRsPjxkZD48cHJlIGNsYXNzPSJ2ZXJiYXRpbSI+Ci1weXRob24gc2V0dXAucHkgaW5zdGFsbAotPC9wcmU+PC9kbD4KLQotPFA+Ci1JZiB5b3UsIGZvciBzb21lIGFyY2FuZSByZWFzb24sIGRvbid0IHdhbnQgdGhlIG1vZHVsZSB0byBhcHBlYXIgaW4gdGhlCi08Y29kZT5zaXRlLXBhY2thZ2VzPC9jb2RlPiBkaXJlY3RvcnksIHVzZSB0aGUgPGNvZGU+LS1wcmVmaXg8L2NvZGU+IG9wdGlvbi4KLQotPFA+Ci1Zb3UgY2FuLCBvZiBjb3Vyc2UsIGRvCi08ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4KLXB5dGhvbiBzZXR1cC5weSAtLWhlbHAKLTwvcHJlPjwvZGw+Ci0KLTxQPgotdG8gZmluZCBvdXQgbW9yZSBhYm91dCBob3cgdG8gdXNlIHRoZSBzY3JpcHQuCi0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJidWlsZGluZy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJidWlsZGluZy5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9ImJ1aWxkaW5nLXdpbmRvd3MuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJidWlsZGluZy5odG1sIj4yIEJ1aWxkaW5nIGFuZCBJbnN0YWxsaW5nPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJidWlsZGluZy5odG1sIj4yIEJ1aWxkaW5nIGFuZCBJbnN0YWxsaW5nPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLXdpbmRvd3MuaHRtbCI+Mi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGU8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYnVpbGRpbmctd2luZG93cy5odG1sIGIvZG9jL2h0bWwvYnVpbGRpbmctd2luZG93cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTk0NzUxLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2J1aWxkaW5nLXdpbmRvd3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4yLjIgQnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFdpbmRvd3MgU3lzdGVtIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBXaW5kb3dzIFN5c3RlbSAiPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0iYnVpbGRpbmctdW5peC5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJidWlsZGluZy11bml4Lmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLXVuaXguaHRtbCI+Mi4xIEJ1aWxkaW5nIHRoZSBNb2R1bGU8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPjIgQnVpbGRpbmcgYW5kIEluc3RhbGxpbmc8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC5odG1sIj4zIE9wZW5TU0wgIDwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDI+PEEgTkFNRT0iU0VDVElPTjAwMDMyMDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBXaW5kb3dzIFN5c3RlbSAKLTwvSDI+Ci0KLTxQPgotQmlnIHRoYW5rcyB0byBJdGFtYXIgU2h0dWxsLVRyYXVyaW5nIGFuZCBPbGVnIE9ybG92IGZvciB0aGVpciBoZWxwIHdpdGgKLVdpbmRvd3MgYnVpbGQgaW5zdHJ1Y3Rpb25zLiAgU2FtZSBhcyBmb3IgVW5peCBzeXN0ZW1zLCB3ZSBoYXZlIHRvIHNlcGFyYXRlCi10aGUgPGNvZGU+YnVpbGRfZXh0PC9jb2RlPiBhbmQgdGhlIDxjb2RlPmJ1aWxkPC9jb2RlPi4KLQotPFA+Ci1CdWlsZGluZyB0aGUgbGlicmFyeToKLQotPFA+Ci08ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4KLXNldHVwLnB5IGJ1aWxkX2V4dCAtSSAuLi5cb3BlbnNzbFxpbmMzMiAtTCAuLi5cb3BlbnNzbFxvdXQzMmRsbAotc2V0dXAucHkgYnVpbGQKLTwvcHJlPjwvZGw+Ci0KLTxQPgotV2hlcmUgPGNvZGU+Li4uXG9wZW5zc2w8L2NvZGU+IGlzIG9mIGNvdXJzZSB0aGUgbG9jYXRpb24gb2YgeW91ciBPcGVuU1NMIGluc3RhbGxhdGlvbi4KLQotPFA+Ci1JbnN0YWxsYXRpb24gaXMgdGhlIHNhbWUgYXMgZm9yIFVuaXggc3lzdGVtczoKLTxkbD48ZGQ+PHByZSBjbGFzcz0idmVyYmF0aW0iPgotc2V0dXAucHkgaW5zdGFsbAotPC9wcmU+PC9kbD4KLQotPFA+Ci1BbmQgc2ltaWxhcmlseSwgeW91IGNhbiBkbwotPGRsPjxkZD48cHJlIGNsYXNzPSJ2ZXJiYXRpbSI+Ci1zZXR1cC5weSAtLWhlbHAKLTwvcHJlPjwvZGw+Ci0KLTxQPgotdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24uCi0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJidWlsZGluZy11bml4Lmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLXVuaXguaHRtbCI+Mi4xIEJ1aWxkaW5nIHRoZSBNb2R1bGU8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPjIgQnVpbGRpbmcgYW5kIEluc3RhbGxpbmc8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC5odG1sIj4zIE9wZW5TU0wgIDwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9idWlsZGluZy5odG1sIGIvZG9jL2h0bWwvYnVpbGRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ5N2FjMC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9idWlsZGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjIgQnVpbGRpbmcgYW5kIEluc3RhbGxpbmcgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIyIEJ1aWxkaW5nIGFuZCBJbnN0YWxsaW5nICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wuaHRtbCI+Ci08TElOSyBSRUw9InByZXZpb3VzIiBocmVmPSJpbnRyby5odG1sIj4KLTxMSU5LIFJFTD0idXAiIEhSRUY9InB5T3BlblNTTC5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iYnVpbGRpbmctdW5peC5odG1sIj4KLTwvaGVhZD4KLTxib2R5PgotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0iaW50cm8uaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgSFJFRj0icHlPcGVuU1NMLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iYnVpbGRpbmctdW5peC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImludHJvLmh0bWwiPjEgSW50cm9kdWN0aW9uPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBIUkVGPSJweU9wZW5TU0wuaHRtbCI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLXVuaXguaHRtbCI+Mi4xIEJ1aWxkaW5nIHRoZSBNb2R1bGU8L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPEgxPjxBIE5BTUU9IlNFQ1RJT04wMDAzMDAwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTIgQnVpbGRpbmcgYW5kIEluc3RhbGxpbmcgCi08L0gxPgotCi08UD4KLVRoZXNlIGluc3RydWN0aW9ucyBjYW4gYWxzbyBiZSBmb3VuZCBpbiB0aGUgZmlsZSA8Y29kZT5JTlNUQUxMPC9jb2RlPi4KLQotPFA+Ci1JIGhhdmUgdGVzdGVkIHRoaXMgb24gRGViaWFuIExpbnV4IHN5c3RlbXMgKHdvb2R5IGFuZCBzaWQpLCBTb2xhcmlzIDIuNiBhbmQKLTIuNy4gT3RoZXJzIGhhdmUgc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkIGl0IG9uIFdpbmRvd3MgYW5kIE5ULgotCi08UD4KLQotPHA+PGhyPgotPCEtLVRhYmxlIG9mIENoaWxkLUxpbmtzLS0+Ci08QSBOQU1FPSJDSElMRF9MSU5LUyI+PFNUUk9ORz5TdWJzZWN0aW9uczwvU1RST05HPjwvQT4KLQotPFVMIENMQVNTPSJDaGlsZExpbmtzIj4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDc5IgotICBocmVmPSJidWlsZGluZy11bml4Lmh0bWwiPjIuMSBCdWlsZGluZyB0aGUgTW9kdWxlIG9uIGEgVW5peCBTeXN0ZW0gPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sODAiCi0gIGhyZWY9ImJ1aWxkaW5nLXdpbmRvd3MuaHRtbCI+Mi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBXaW5kb3dzIFN5c3RlbSA8L0E+Ci08L1VMPgotPCEtLUVuZCBvZiBUYWJsZSBvZiBDaGlsZC1MaW5rcy0tPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJpbnRyby5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJidWlsZGluZy11bml4Lmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iaW50cm8uaHRtbCI+MSBJbnRyb2R1Y3Rpb248L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIEhSRUY9InB5T3BlblNTTC5odG1sIj5QeXRob24gT3BlblNTTCBNYW51YWw8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iYnVpbGRpbmctdW5peC5odG1sIj4yLjEgQnVpbGRpbmcgdGhlIE1vZHVsZTwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9jYWxsYmFja3MuaHRtbCBiL2RvYy9odG1sL2NhbGxiYWNrcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWM5Y2NiLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2NhbGxiYWNrcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjQuMiBDYWxsYmFja3MgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSI0LjIgQ2FsbGJhY2tzICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9InNvY2tldC1tZXRob2RzLmh0bWwiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0iZXhjZXB0aW9ucy5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9ImludGVybmFscy5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0ic29ja2V0LW1ldGhvZHMuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9ImV4Y2VwdGlvbnMuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ic29ja2V0LW1ldGhvZHMuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJleGNlcHRpb25zLmh0bWwiPjQuMSBFeGNlcHRpb25zPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJpbnRlcm5hbHMuaHRtbCI+NCBJbnRlcm5hbHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ic29ja2V0LW1ldGhvZHMuaHRtbCI+NC4zIEFjZXNzaW5nIFNvY2tldCBNZXRob2RzPC9BPgotPGJyPjxocj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTxIMj48QSBOQU1FPSJTRUNUSU9OMDAwNTIwMDAwMDAwMDAwMDAwMDAwIj4mbmJzcDs8L0E+Ci08QlI+Ci00LjIgQ2FsbGJhY2tzIAotPC9IMj4KLQotPFA+Ci1UaGVyZSBhcmUgYSBudW1iZXIgb2YgcHJvYmxlbXMgd2l0aCBjYWxsYmFja3MuIEZpcnN0IG9mIGFsbCwgT3BlblNTTCBpcyB3cml0dGVuCi1hcyBhIEMgbGlicmFyeSwgaXQncyBub3QgbWVhbnQgdG8gaGF2ZSBQeXRob24gY2FsbGJhY2tzLCBzbyBhIHdheSBhcm91bmQgdGhhdAotaXMgbmVlZGVkLiBBbm90aGVyIHByb2JsZW0gaXMgdGhyZWFkIHN1cHBvcnQuIEEgbG90IG9mIHRoZSBPcGVuU1NMIEkvTwotZnVuY3Rpb25zIGNhbiBibG9jayBpZiB0aGUgc29ja2V0IGlzIGluIGJsb2NraW5nIG1vZGUsIGFuZCB0aGVuIHlvdSB3YW50IG90aGVyCi1QeXRob24gdGhyZWFkcyB0byBiZSBhYmxlIHRvIGRvIG90aGVyIHRoaW5ncy4gVGhlIHJlYWwgdHJvdWJsZSBpcyBpZiB5b3UndmUKLXJlbGVhc2VkIHRoZSBnbG9iYWwgQ1B5dGhvbiBpbnRlcnByZXRlciBsb2NrIHRvIGRvIGEgcG90ZW50aWFsbHkgYmxvY2tpbmcKLW9wZXJhdGlvbiwgYW5kIHRoZSBvcGVyYXRpb24gY2FsbHMgYSBjYWxsYmFjay4gVGhlbiB3ZSBtdXN0IHRha2UgdGhlIEdJTCBiYWNrLAotc2luY2UgY2FsbGluZyBQeXRob24gQVBJcyB3aXRob3V0IGhvbGRpbmcgaXQgaXMgbm90IGFsbG93ZWQuCi0KLTxQPgotVGhlcmUgYXJlIHR3byBzb2x1dGlvbnMgdG8gdGhlIGZpcnN0IHByb2JsZW0sIGJvdGggb2Ygd2hpY2ggYXJlIG5lY2Vzc2FyeS4gVGhlCi1maXJzdCBzb2x1dGlvbiB0byB1c2UgaXMgaWYgdGhlIEMgY2FsbGJhY2sgYWxsb3dzICcndXNlcmRhdGEnJyB0byBiZSBwYXNzZWQgdG8KLWl0IChhbiBhcmJpdHJhcnkgcG9pbnRlciBub3JtYWxseSkuIFRoaXMgaXMgZ3JlYXQhIFdlIGNhbiBzZXQgb3VyIFB5dGhvbgotZnVuY3Rpb24gb2JqZWN0IGFzIHRoZSByZWFsIHVzZXJkYXRhIGFuZCBlbXVsYXRlIHVzZXJkYXRhIGZvciB0aGUgUHl0aG9uCi1mdW5jdGlvbiBpbiBhbm90aGVyIHdheS4gVGhlIG90aGVyIHNvbHV0aW9uIGNhbiBiZSB1c2VkIGlmIGFuIG9iamVjdCB3aXRoIGFuCi0nJ2FwcF9kYXRhJycgc3lzdGVtIGFsd2F5cyBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrLiBGb3IgZXhhbXBsZSwgdGhlIFNTTAotb2JqZWN0IGluIE9wZW5TU0wgaGFzIGFwcF9kYXRhIGZ1bmN0aW9ucyBhbmQgaW4gZS5nLiB0aGUgdmVyaWZpY2F0aW9uCi1jYWxsYmFja3MsIHlvdSBjYW4gcmV0cmlldmUgdGhlIHJlbGF0ZWQgU1NMIG9iamVjdC4gV2hhdCB3ZSBkbyBpcyB0byBzZXQgb3VyCi13cmFwcGVyIDx0dCBjbGFzcz0iY2xhc3MiPkNvbm5lY3Rpb248L3R0PiBvYmplY3QgYXMgYXBwX2RhdGEgZm9yIHRoZSBTU0wgb2JqZWN0LCBhbmQgd2UgY2FuCi1lYXNpbHkgZmluZCB0aGUgUHl0aG9uIGNhbGxiYWNrLgotCi08UD4KLVRoZSBvdGhlciBwcm9ibGVtIGlzIHNvbHZlZCB1c2luZyB0aHJlYWQgbG9jYWwgdmFyaWFibGVzLiAgV2hlbmV2ZXIgdGhlIEdJTCBpcwotcmVsZWFzZWQgYmVmb3JlIGNhbGxpbmcgaW50byBhbiBPcGVuU1NMIEFQSSwgdGhlIFB5VGhyZWFkU3RhdGUgcG9pbnRlciByZXR1cm5lZAotYnkgPHR0IGNsYXNzPSJjZnVuY3Rpb24iPlB5RXZhbF9TYXZlU3RhdGU8L3R0PiBpcyBzdG9yZWQgaW4gYSBnbG9iYWwgdGhyZWFkIGxvY2FsIHZhcmlhYmxlCi0odXNpbmcgUHl0aG9uJ3Mgb3duIFRMUyBBUEksIDx0dCBjbGFzcz0iY2Z1bmN0aW9uIj5QeVRocmVhZF9zZXRfa2V5X3ZhbHVlPC90dD4pLiAgV2hlbiBpdCBpcwotbmVjZXNzYXJ5IHRvIHJlLWFjcXVpcmUgdGhlIEdJTCwgZWl0aGVyIGFmdGVyIHRoZSBPcGVuU1NMIEFQSSByZXR1cm5zIG9yIGluIGEgQwotY2FsbGJhY2sgaW52b2tlZCBieSB0aGF0IE9wZW5TU0wgQVBJLCB0aGUgdmFsdWUgb2YgdGhlIHRocmVhZCBsb2NhbCB2YXJpYWJsZSBpcwotcmV0cmlldmVkICg8dHQgY2xhc3M9ImNmdW5jdGlvbiI+UHlUaHJlYWRfZ2V0X2tleV92YWx1ZTwvdHQ+KSBhbmQgdXNlZCB0byByZS1hY3F1aXJlIHRoZSBHSUwuCi1UaGlzIGFsbG93cyBQeXRob24gdGhyZWFkcyB0byBleGVjdXRlIHdoaWxlIE9wZW5TU0wgQVBJcyBhcmUgcnVubmluZyBhbmQgYWxsb3dzCi11c2Ugb2YgYW55IHBhcnRpY3VsYXIgcHlPcGVuU1NMIG9iamVjdCBmcm9tIGFueSBQeXRob24gdGhyZWFkLCBzaW5jZSB0aGVyZSBpcwotbm8gcGVyLXRocmVhZCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggYW55IG9mIHRoZXNlIG9iamVjdHMgYW5kIHNpbmNlIE9wZW5TU0wgaXMKLXRocmVhZHNhZmUgKGFzIGxvbmcgYXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIGFzIHB5T3BlblNTTCBpbml0aWFsaXplcyBpdCkuCi0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJleGNlcHRpb25zLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9ImludGVybmFscy5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9InNvY2tldC1tZXRob2RzLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iZXhjZXB0aW9ucy5odG1sIj40LjEgRXhjZXB0aW9uczwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPjQgSW50ZXJuYWxzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9InNvY2tldC1tZXRob2RzLmh0bWwiPjQuMyBBY2Vzc2luZyBTb2NrZXQgTWV0aG9kczwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9jb250ZW50cy5naWYgYi9kb2MvaHRtbC9jb250ZW50cy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMjk5YzQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvY29udGVudHMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvY29udGVudHMuaHRtbCBiL2RvYy9odG1sL2NvbnRlbnRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNzkxYWQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvY29udGVudHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5Db250ZW50czwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iQ29udGVudHMiPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJpbnRyby5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIEhSRUY9InB5T3BlblNTTC5odG1sIj4KLTxMSU5LIFJFTD0idXAiIEhSRUY9InB5T3BlblNTTC5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iaW50cm8uaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIEhSRUY9InB5T3BlblNTTC5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJpbnRyby5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgSFJFRj0icHlPcGVuU1NMLmh0bWwiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgSFJFRj0icHlPcGVuU1NMLmh0bWwiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJpbnRyby5odG1sIj4xIEludHJvZHVjdGlvbjwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotPEJSPgotPEJSPjxIMj48QSBOQU1FPSJTRUNUSU9OMDAwMTAwMDAwMDAwMDAwMDAwMDAwIj4KLUNvbnRlbnRzPC9BPgotPC9IMj4KLTwhLS1UYWJsZSBvZiBDb250ZW50cy0tPgotCi08VUwgQ0xBU1M9IlRvZkMiPgotPExJPjxBIE5BTUU9InRleDJodG1sNDUiCi0gIGhyZWY9ImludHJvLmh0bWwiPjEgSW50cm9kdWN0aW9uIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDQ2IgotICBocmVmPSJidWlsZGluZy5odG1sIj4yIEJ1aWxkaW5nIGFuZCBJbnN0YWxsaW5nIDwvQT4KLTxVTD4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDQ3IgotICBocmVmPSJidWlsZGluZy11bml4Lmh0bWwiPjIuMSBCdWlsZGluZyB0aGUgTW9kdWxlIG9uIGEgVW5peCBTeXN0ZW0gPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sNDgiCi0gIGhyZWY9ImJ1aWxkaW5nLXdpbmRvd3MuaHRtbCI+Mi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBXaW5kb3dzIFN5c3RlbSA8L0E+Ci08L1VMPgotPEJSPgotPExJPjxBIE5BTUU9InRleDJodG1sNDkiCi0gIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyBPcGVuU1NMIC0tIFB5dGhvbiBpbnRlcmZhY2UgdG8gT3BlblNTTCA8L0E+Ci08VUw+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWw1MCIKLSAgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAtLSBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDUxIgotICBocmVmPSJvcGVuc3NsLXJhbmQuaHRtbCI+My4yIHJhbmQgLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBPcGVuU1NMIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWw1MiIKLSAgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+My4zIFNTTCAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIFNTTC1zcGVjaWZpYyBwYXJ0cyBvZiBPcGVuU1NMIDwvQT4KLTwvVUw+Ci08QlI+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWw1MyIKLSAgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPjQgSW50ZXJuYWxzIDwvQT4KLTxVTD4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDU0IgotICBocmVmPSJleGNlcHRpb25zLmh0bWwiPjQuMSBFeGNlcHRpb25zIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDU1IgotICBocmVmPSJjYWxsYmFja3MuaHRtbCI+NC4yIENhbGxiYWNrcyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWw1NiIKLSAgaHJlZj0ic29ja2V0LW1ldGhvZHMuaHRtbCI+NC4zIEFjZXNzaW5nIFNvY2tldCBNZXRob2RzIDwvQT4KLTwvVUw+PC9VTD4KLTwhLS1FbmQgb2YgVGFibGUgb2YgQ29udGVudHMtLT4KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgSFJFRj0icHlPcGVuU1NMLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iaW50cm8uaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIEhSRUY9InB5T3BlblNTTC5odG1sIj5QeXRob24gT3BlblNTTCBNYW51YWw8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIEhSRUY9InB5T3BlblNTTC5odG1sIj5QeXRob24gT3BlblNTTCBNYW51YWw8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iaW50cm8uaHRtbCI+MSBJbnRyb2R1Y3Rpb248L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvY3JsLmh0bWwgYi9kb2MvaHRtbC9jcmwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U1MDM4NS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9jcmwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zLjEuMTAgQ1JMIG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjEuMTAgQ1JMIG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0icmV2b2tlZC5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wtbmV0c2NhcGUtc3BraS5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJyZXZva2VkLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJyZXZva2VkLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1uZXRzY2FwZS1zcGtpLmh0bWwiPjMuMS45IE5ldHNjYXBlU1BLSSBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgY3J5cHRvICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0icmV2b2tlZC5odG1sIj4zLjEuMTEgUmV2b2tlZCBvYmplY3RzPC9BPgotPGJyPjxocj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTxIMz48QSBOQU1FPSJTRUNUSU9OMDAwNDExMDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4xLjEwIENSTCBvYmplY3RzIAotPC9IMz4KLQotPFA+Ci1DUkwgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMDcnPjx0dCBjbGFzcz0nbWV0aG9kJz5hZGRfcmV2b2tlZDwvdHQ+PC9hPjwvYj4oPHZhcj5yZXZva2VkPC92YXI+KQotPGRkPgotQWRkIGEgUmV2b2tlZCBvYmplY3QgdG8gdGhlIENSTCwgYnkgdmFsdWUgbm90IHJlZmVyZW5jZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTA4Jz48dHQgY2xhc3M9J21ldGhvZCc+ZXhwb3J0PC90dD48L2E+PC9iPig8dmFyPmNlcnQsIGtleTwvdmFyPjxiaWc+WzwvYmlnPjx2YXI+LCB0eXBlPUZJTEVUWVBFX1BFTTwvdmFyPjxiaWc+XTwvYmlnPjxiaWc+WzwvYmlnPjx2YXI+LCBkYXlzPTEwMDwvdmFyPjxiaWc+XTwvYmlnPikKLTxkZD4KLVVzZSA8dmFyPmNlcnQ8L3Zhcj4gYW5kIDx2YXI+a2V5PC92YXI+IHRvIHNpZ24gdGhlIENSTCBhbmQgcmV0dXJuIHRoZSBDUkwgYXMgYSBzdHJpbmcuCi08dmFyPmRheXM8L3Zhcj4gaXMgdGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGUgbmV4dCBDUkwgaXMgZHVlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMDknPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfcmV2b2tlZDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIGEgdHVwbGUgb2YgUmV2b2tlZCBvYmplY3RzLCBieSB2YWx1ZSBub3QgcmVmZXJlbmNlLgotPC9kbD4KLQotPFA+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtbmV0c2NhcGUtc3BraS5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9InJldm9rZWQuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+My4xLjkgTmV0c2NhcGVTUEtJIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJyZXZva2VkLmh0bWwiPjMuMS4xMSBSZXZva2VkIG9iamVjdHM8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZXhjZXB0aW9ucy5odG1sIGIvZG9jL2h0bWwvZXhjZXB0aW9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTNhMzUxLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2V4Y2VwdGlvbnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjQuMSBFeGNlcHRpb25zIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iNC4xIEV4Y2VwdGlvbnMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iY2FsbGJhY2tzLmh0bWwiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJjYWxsYmFja3MuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9ImludGVybmFscy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJpbnRlcm5hbHMuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJjYWxsYmFja3MuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJpbnRlcm5hbHMuaHRtbCI+NCBJbnRlcm5hbHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImludGVybmFscy5odG1sIj40IEludGVybmFsczwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJjYWxsYmFja3MuaHRtbCI+NC4yIENhbGxiYWNrczwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDI+PEEgTkFNRT0iU0VDVElPTjAwMDUxMDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotNC4xIEV4Y2VwdGlvbnMgCi08L0gyPgotCi08UD4KLVdlIHJlYWxpemVkIGVhcmx5IHRoYXQgbW9zdCBvZiB0aGUgZXhjZXB0aW9ucyB3b3VsZCBiZSByYWlzZWQgYnkgdGhlIEkvTwotZnVuY3Rpb25zIG9mIE9wZW5TU0wsIHNvIGl0IGZlbHQgbmF0dXJhbCB0byBtaW1pYyBPcGVuU1NMJ3MgZXJyb3IgY29kZSBzeXN0ZW0sCi10cmFuc2xhdGluZyB0aGVtIGludG8gUHl0aG9uIGV4Y2VwdGlvbnMuIFRoaXMgbmF0dXJhbGx5IGdpdmVzIHVzIHRoZSBleGNlcHRpb25zCi08dHQgY2xhc3M9ImV4Y2VwdGlvbiI+U1NMLlplcm9SZXR1cm5FcnJvcjwvdHQ+LCA8dHQgY2xhc3M9ImV4Y2VwdGlvbiI+U1NMLldhbnRSZWFkRXJyb3I8L3R0PiwKLTx0dCBjbGFzcz0iZXhjZXB0aW9uIj5TU0wuV2FudFdyaXRlRXJyb3I8L3R0PiwgPHR0IGNsYXNzPSJleGNlcHRpb24iPlNTTC5XYW50WDUwOUxvb2t1cEVycm9yPC90dD4gYW5kCi08dHQgY2xhc3M9ImV4Y2VwdGlvbiI+U1NMLlN5c0NhbGxFcnJvcjwvdHQ+LgotCi08UD4KLUZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMsIHNlZSBzZWN0aW9uIDxBIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwjb3BlbnNzbC1zc2wiPjMuMzwvQT4uCi0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJpbnRlcm5hbHMuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iY2FsbGJhY2tzLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPjQgSW50ZXJuYWxzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJpbnRlcm5hbHMuaHRtbCI+NCBJbnRlcm5hbHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iY2FsbGJhY2tzLmh0bWwiPjQuMiBDYWxsYmFja3M8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvaW5kZXguZ2lmIGIvZG9jL2h0bWwvaW5kZXguZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmVlY2ZiLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2luZGV4LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2luZGV4Lmh0bWwgYi9kb2MvaHRtbC9pbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDcwYTgwLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2luZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSJQeXRob24gT3BlblNTTCBNYW51YWwiPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJjb250ZW50cy5odG1sIj4KLTwvaGVhZD4KLTxib2R5PgotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iY29udGVudHMuaHRtbCI+Q29udGVudHM8L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPFA+Ci0KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+Ci08Y2VudGVyPgotPGgxPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvaDE+Ci08cD48Yj48Zm9udCBzaXplPScrMic+SmVhbi1QYXVsIENhbGRlcm9uZTwvZm9udD48L2I+PC9wPgotPHA+PHNwYW4gY2xhc3M9ImVtYWlsIj5leGFya3VuQHR3aXN0ZWRtYXRyaXguY29tPC9zcGFuPjwvcD4KLTxwPgotPC9jZW50ZXI+Ci08L2Rpdj4KLQotPFA+Ci0KLTxIMz5BYnN0cmFjdDo8L0gzPgotPERJViBDTEFTUz0iQUJTVFJBQ1QiPgotCi1UaGlzIG1vZHVsZSBpcyBhIHJhdGhlciB0aGluIHdyYXBwZXIgYXJvdW5kIChhIHN1YnNldCBvZikgdGhlIE9wZW5TU0wgbGlicmFyeS4KLVdpdGggdGhpbiB3cmFwcGVyIEkgbWVhbiB0aGF0IGEgbG90IG9mIHRoZSBvYmplY3QgbWV0aG9kcyBkbyBub3RoaW5nIG1vcmUgdGhhbgotY2FsbGluZyBhIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gaW4gdGhlIE9wZW5TU0wgbGlicmFyeS4KLTwvRElWPgotPFA+Ci0KLTxQPgotCi08cD48aHI+Ci08IS0tVGFibGUgb2YgQ2hpbGQtTGlua3MtLT4KLQotCi08VUwgQ0xBU1M9IkNoaWxkTGlua3MiPgotPExJPjxBIE5BTUU9InRleDJodG1sOCIKLSAgaHJlZj0iY29udGVudHMuaHRtbCI+Q29udGVudHM8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWw5IgotICBocmVmPSJpbnRyby5odG1sIj4xIEludHJvZHVjdGlvbiA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMCIKLSAgaHJlZj0iYnVpbGRpbmcuaHRtbCI+MiBCdWlsZGluZyBhbmQgSW5zdGFsbGluZyA8L0E+Ci08VUw+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMSIKLSAgaHJlZj0iYnVpbGRpbmctdW5peC5odG1sIj4yLjEgQnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFVuaXggU3lzdGVtIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDEyIgotICBocmVmPSJidWlsZGluZy13aW5kb3dzLmh0bWwiPjIuMiBCdWlsZGluZyB0aGUgTW9kdWxlIG9uIGEgV2luZG93cyBTeXN0ZW0gPC9BPgotPC9VTD4KLTxCUj4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDEzIgotICBocmVmPSJvcGVuc3NsLmh0bWwiPjMgPHR0IGNsYXNzPSJtb2R1bGUiPk9wZW5TU0w8L3R0PiAtLSBQeXRob24gaW50ZXJmYWNlIHRvIE9wZW5TU0wgPC9BPgotPFVMPgotPExJPjxBIE5BTUU9InRleDJodG1sMTQiCi0gIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSA8dHQgY2xhc3M9Im1vZHVsZSI+Y3J5cHRvPC90dD4gLS0gR2VuZXJpYyBjcnlwdG9ncmFwaGljIG1vZHVsZSA8L0E+Ci08VUw+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxNSIKLSAgaHJlZj0ib3BlbnNzbC14NTA5Lmh0bWwiPjMuMS4xIFg1MDkgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxNiIKLSAgaHJlZj0ib3BlbnNzbC14NTA5bmFtZS5odG1sIj4zLjEuMiBYNTA5TmFtZSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE3IgotICBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+My4xLjMgWDUwOVJlcSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE4IgotICBocmVmPSJvcGVuc3NsLXg1MDlzdG9yZS5odG1sIj4zLjEuNCBYNTA5U3RvcmUgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxOSIKLSAgaHJlZj0ib3BlbnNzbC1wa2V5Lmh0bWwiPjMuMS41IFBLZXkgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwyMCIKLSAgaHJlZj0ib3BlbnNzbC1wa2NzNy5odG1sIj4zLjEuNiBQS0NTNyBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDIxIgotICBocmVmPSJvcGVuc3NsLXBrY3MxMi5odG1sIj4zLjEuNyBQS0NTMTIgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwyMiIKLSAgaHJlZj0ib3BlbnNzbC01MDlleHQuaHRtbCI+My4xLjggWDUwOUV4dGVuc2lvbiBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDIzIgotICBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+My4xLjkgTmV0c2NhcGVTUEtJIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMjQiCi0gIGhyZWY9ImNybC5odG1sIj4zLjEuMTAgQ1JMIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMjUiCi0gIGhyZWY9InJldm9rZWQuaHRtbCI+My4xLjExIFJldm9rZWQgb2JqZWN0cyA8L0E+Ci08L1VMPgotPExJPjxBIE5BTUU9InRleDJodG1sMjYiCi0gIGhyZWY9Im9wZW5zc2wtcmFuZC5odG1sIj4zLjIgPHR0IGNsYXNzPSJtb2R1bGUiPnJhbmQ8L3R0PiAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5TU0wgcHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDI3IgotICBocmVmPSJvcGVuc3NsLXNzbC5odG1sIj4zLjMgPHR0IGNsYXNzPSJtb2R1bGUiPlNTTDwvdHQ+IC0tIEFuIGludGVyZmFjZSB0byB0aGUgU1NMLXNwZWNpZmljIHBhcnRzIG9mIE9wZW5TU0wgPC9BPgotPFVMPgotPExJPjxBIE5BTUU9InRleDJodG1sMjgiCi0gIGhyZWY9Im9wZW5zc2wtY29udGV4dC5odG1sIj4zLjMuMSBDb250ZXh0IG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMjkiCi0gIGhyZWY9Im9wZW5zc2wtY29ubmVjdGlvbi5odG1sIj4zLjMuMiBDb25uZWN0aW9uIG9iamVjdHMgPC9BPgotPC9VTD4KLTwvVUw+Ci08QlI+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwzMCIKLSAgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPjQgSW50ZXJuYWxzIDwvQT4KLTxVTD4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDMxIgotICBocmVmPSJleGNlcHRpb25zLmh0bWwiPjQuMSBFeGNlcHRpb25zIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDMyIgotICBocmVmPSJjYWxsYmFja3MuaHRtbCI+NC4yIENhbGxiYWNrcyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwzMyIKLSAgaHJlZj0ic29ja2V0LW1ldGhvZHMuaHRtbCI+NC4zIEFjZXNzaW5nIFNvY2tldCBNZXRob2RzIDwvQT4KLTwvVUw+Ci08QlI+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwzNCIKLSAgaHJlZj0iYWJvdXQuaHRtbCI+QWJvdXQgdGhpcyBkb2N1bWVudCAuLi48L0E+Ci08L1VMPgotPCEtLUVuZCBvZiBUYWJsZSBvZiBDaGlsZC1MaW5rcy0tPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJjb250ZW50cy5odG1sIj5Db250ZW50czwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9pbnRlcm5hbHMuaHRtbCBiL2RvYy9odG1sL2ludGVybmFscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGIyNmE0Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2ludGVybmFscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjQgSW50ZXJuYWxzIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iNCBJbnRlcm5hbHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iYWJvdXQuaHRtbCI+Ci08TElOSyBSRUw9InByZXZpb3VzIiBocmVmPSJvcGVuc3NsLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgSFJFRj0icHlPcGVuU1NMLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJleGNlcHRpb25zLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNvbm5lY3Rpb24uaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgSFJFRj0icHlPcGVuU1NMLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iZXhjZXB0aW9ucy5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY29ubmVjdGlvbi5odG1sIj4zLjMuMiBDb25uZWN0aW9uIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIEhSRUY9InB5T3BlblNTTC5odG1sIj5QeXRob24gT3BlblNTTCBNYW51YWw8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iZXhjZXB0aW9ucy5odG1sIj40LjEgRXhjZXB0aW9uczwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDE+PEEgTkFNRT0iU0VDVElPTjAwMDUwMDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotNCBJbnRlcm5hbHMgCi08L0gxPgotCi08UD4KLVdlIHJhbiBpbnRvIHRocmVlIG1haW4gcHJvYmxlbXMgZGV2ZWxvcGluZyB0aGlzOiBFeGNlcHRpb25zLCBjYWxsYmFja3MgYW5kCi1hY2Nlc3Npbmcgc29ja2V0IG1ldGhvZHMuIFRoaXMgaXMgd2hhdCB0aGlzIGNoYXB0ZXIgaXMgYWJvdXQuCi0KLTxQPgotCi08cD48aHI+Ci08IS0tVGFibGUgb2YgQ2hpbGQtTGlua3MtLT4KLTxBIE5BTUU9IkNISUxEX0xJTktTIj48U1RST05HPlN1YnNlY3Rpb25zPC9TVFJPTkc+PC9BPgotCi08VUwgQ0xBU1M9IkNoaWxkTGlua3MiPgotPExJPjxBIE5BTUU9InRleDJodG1sMzIyIgotICBocmVmPSJleGNlcHRpb25zLmh0bWwiPjQuMSBFeGNlcHRpb25zIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDMyMyIKLSAgaHJlZj0iY2FsbGJhY2tzLmh0bWwiPjQuMiBDYWxsYmFja3MgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMzI0IgotICBocmVmPSJzb2NrZXQtbWV0aG9kcy5odG1sIj40LjMgQWNlc3NpbmcgU29ja2V0IE1ldGhvZHMgPC9BPgotPC9VTD4KLTwhLS1FbmQgb2YgVGFibGUgb2YgQ2hpbGQtTGlua3MtLT4KLQotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08cD48aHI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jb25uZWN0aW9uLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIEhSRUY9InB5T3BlblNTTC5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9ImV4Y2VwdGlvbnMuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNvbm5lY3Rpb24uaHRtbCI+My4zLjIgQ29ubmVjdGlvbiBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBIUkVGPSJweU9wZW5TU0wuaHRtbCI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImV4Y2VwdGlvbnMuaHRtbCI+NC4xIEV4Y2VwdGlvbnM8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvaW50cm8uaHRtbCBiL2RvYy9odG1sL2ludHJvLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NzVkNDIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvaW50cm8uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4xIEludHJvZHVjdGlvbiA8L3RpdGxlPgotPE1FVEEgTkFNRT0iZGVzY3JpcHRpb24iIENPTlRFTlQ9IjEgSW50cm9kdWN0aW9uICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0iY29udGVudHMuaHRtbCI+Ci08TElOSyBSRUw9InVwIiBIUkVGPSJweU9wZW5TU0wuaHRtbCI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJidWlsZGluZy5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImNvbnRlbnRzLmh0bWwiPkNvbnRlbnRzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBIUkVGPSJweU9wZW5TU0wuaHRtbCI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPjIgQnVpbGRpbmcgYW5kIEluc3RhbGxpbmc8L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPEgxPjxBIE5BTUU9IlNFQ1RJT04wMDAyMDAwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTEgSW50cm9kdWN0aW9uIAotPC9IMT4KLQotPFA+Ci1UaGUgcmVhc29uIHB5T3BlblNTTCB3YXMgY3JlYXRlZCBpcyB0aGF0IHRoZSBTU0wgc3VwcG9ydCBpbiB0aGUgc29ja2V0IG1vZHVsZQotaW4gUHl0aG9uIDIuMSAodGhlIGNvbnRlbXBvcmFyeSB2ZXJzaW9uIG9mIFB5dGhvbiB3aGVuIHRoZSBweU9wZW5TU0wgcHJvamVjdAotd2FzIGJlZ3VuKSB3YXMgc2V2ZXJlbHkgbGltaXRlZC4gIE90aGVyIE9wZW5TU0wgd3JhcHBlcnMgZm9yIFB5dGhvbiBhdCB0aGUgdGltZQotd2VyZSBhbHNvIGxpbWl0ZWQsIHRob3VnaCBpbiBkaWZmZXJlbnQgd2F5cy4gIFVuZm9ydHVuYXRlbHksIFB5dGhvbidzIHN0YW5kYXJkCi1saWJyYXJ5IFNTTCBzdXBwb3J0IGhhcyByZW1haW5lZCB3ZWFrLCBhbHRob3VnaCBvdGhlciBwYWNrYWdlcyAoc3VjaCBhcwotTTJDcnlwdG88QSBOQU1FPSJ0ZXgyaHRtbDEiCi0gIEhSRUY9IiNmb290MTI0NiI+PFNVUD4xPC9TVVA+PC9BPikKLWhhdmUgbWFkZSBncmVhdCBhZHZhbmNlcyBhbmQgbm93IGVxdWFsIG9yIGV4Y2VlZCBweU9wZW5TU0wncyBmdW5jdGlvbmFsaXR5LgotCi08UD4KLVRoZSByZWFzb24gcHlPcGVuU1NMIGNvbnRpbnVlcyB0byBiZSBtYWludGFpbmVkIGlzIHRoYXQgdGhlcmUgaXMgYSBzaWduaWZpY2FudAotdXNlciBjb21tdW5pdHkgYXJvdW5kIGl0LCBhcyB3ZWxsIGFzIGEgbGFyZ2UgYW1vdW50IG9mIHNvZnR3YXJlIHdoaWNoIGRlcGVuZHMKLW9uIGl0LiAgSXQgaXMgYSBncmVhdCBiZW5lZml0IHRvIG1hbnkgcGVvcGxlIGZvciBweU9wZW5TU0wgdG8gY29udGludWUgdG8gZXhpc3QKLWFuZCBhZHZhbmNlLgotCi08UD4KLTxCUj48SFI+PEg0PkZvb3Rub3RlczwvSDQ+Ci08REw+Ci08RFQ+PEEgTkFNRT0iZm9vdDEyNDYiPi4uLgotTTJDcnlwdG88L0E+PEEKLSBocmVmPSJpbnRyby5odG1sI3RleDJodG1sMSI+PFNVUD4xPC9TVVA+PC9BPjwvRFQ+Ci08REQ+U2VlIDxhIGNsYXNzPSJ1cmwiIGhyZWY9Imh0dHA6Ly9jaGFuZGxlcnByb2plY3Qub3JnL1Byb2plY3RzL01lVG9vQ3J5cHRvIj5odHRwOi8vY2hhbmRsZXJwcm9qZWN0Lm9yZy9Qcm9qZWN0cy9NZVRvb0NyeXB0bzwvYT4KLQotPC9ERD4KLTwvREw+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJidWlsZGluZy5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImNvbnRlbnRzLmh0bWwiPkNvbnRlbnRzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBIUkVGPSJweU9wZW5TU0wuaHRtbCI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPjIgQnVpbGRpbmcgYW5kIEluc3RhbGxpbmc8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbW9kdWxlcy5naWYgYi9kb2MvaHRtbC9tb2R1bGVzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4NjBiNi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9tb2R1bGVzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL25leHQuZ2lmIGIvZG9jL2h0bWwvbmV4dC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkY2FmZjguLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvbmV4dC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9vcGVuc3NsLTUwOWV4dC5odG1sIGIvZG9jL2h0bWwvb3BlbnNzbC01MDlleHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWExZjNjOS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLTUwOWV4dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMuMS44IFg1MDlFeHRlbnNpb24gb2JqZWN0cyA8L3RpdGxlPgotPE1FVEEgTkFNRT0iZGVzY3JpcHRpb24iIENPTlRFTlQ9IjMuMS44IFg1MDlFeHRlbnNpb24gb2JqZWN0cyAiPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+Ci08TElOSyBSRUw9InByZXZpb3VzIiBocmVmPSJvcGVuc3NsLXBrY3MxMi5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtcGtjczEyLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1uZXRzY2FwZS1zcGtpLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1wa2NzMTIuaHRtbCI+My4xLjcgUEtDUzEyIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+My4xLjkgTmV0c2NhcGVTUEtJIG9iamVjdHM8L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPEgzPjxBIE5BTUU9IlNFQ1RJT04wMDA0MTgwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTMuMS44IFg1MDlFeHRlbnNpb24gb2JqZWN0cyAKLTwvSDM+Ci0KLTxQPgotWDUwOUV4dGVuc2lvbiBvYmplY3RzIGhhdmUgc2V2ZXJhbCBtZXRob2RzOgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTk5Jz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X2NyaXRpY2FsPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gdGhlIGNyaXRpY2FsIGZpZWxkIG9mIHRoZSBleHRlbnNpb24gb2JqZWN0LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMDAnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfc2hvcnRfbmFtZTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIHNob3J0IGRlc2NyaXB0aXZlIG5hbWUgZm9yIHRoaXMgZXh0ZW5zaW9uLgotCi08UD4KLVRoZSByZXN1bHQgaXMgYSBieXRlIHN0cmluZyBsaWtlIDxjb2RlPmBgYmFzaWNDb25zdHJhaW50cycnPC9jb2RlPi4KLQotPHNwYW4gY2xhc3M9J3ZlcnNpb25ub3RlJz5OZXcgaW4gdmVyc2lvbiAwLjEyLjwvc3Bhbj4KLQotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMDEnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfZGF0YTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIGRhdGEgZm9yIHRoaXMgZXh0ZW5zaW9uLgotCi08UD4KLVRoZSByZXN1bHQgaXMgdGhlIEFTTi4xIGVuY29kZWQgZm9ybSBvZiB0aGUgZXh0ZW5zaW9uIGRhdGEgYXMgYSBieXRlIHN0cmluZy4KLQotPHNwYW4gY2xhc3M9J3ZlcnNpb25ub3RlJz5OZXcgaW4gdmVyc2lvbiAwLjEyLjwvc3Bhbj4KLQotPC9kbD4KLQotPFA+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtcGtjczEyLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1uZXRzY2FwZS1zcGtpLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1wa2NzMTIuaHRtbCI+My4xLjcgUEtDUzEyIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+My4xLjkgTmV0c2NhcGVTUEtJIG9iamVjdHM8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvb3BlbnNzbC1jb25uZWN0aW9uLmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLWNvbm5lY3Rpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRmN2Q4OC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLWNvbm5lY3Rpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zLjMuMiBDb25uZWN0aW9uIG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjMuMiBDb25uZWN0aW9uIG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wtY29udGV4dC5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJpbnRlcm5hbHMuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY29udGV4dC5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXNzbC5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9ImludGVybmFscy5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY29udGV4dC5odG1sIj4zLjMuMSBDb250ZXh0IG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPjMuMyBTU0wgIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJpbnRlcm5hbHMuaHRtbCI+NCBJbnRlcm5hbHM8L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPEgzPjxBIE5BTUU9IlNFQ1RJT04wMDA0MzIwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTMuMy4yIENvbm5lY3Rpb24gb2JqZWN0cyAKLTwvSDM+Ci0KLTxQPgotQ29ubmVjdGlvbiBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE4OCc+PHR0IGNsYXNzPSdtZXRob2QnPmFjY2VwdDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotQ2FsbCB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPmFjY2VwdDwvdHQ+IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQgYW5kIHNldCB1cCBTU0wgb24gdGhlCi1yZXR1cm5lZCBzb2NrZXQsIHVzaW5nIHRoZSBDb250ZXh0IG9iamVjdCBzdXBwbGllZCB0byB0aGlzIENvbm5lY3Rpb24gb2JqZWN0IGF0Ci1jcmVhdGlvbi4gUmV0dXJucyBhIHBhaXIgPGNvZGU+KDx2YXI+Y29ubjwvdmFyPiwgPHZhcj5hZGRyZXNzPC92YXI+KTwvY29kZT4uIHdoZXJlIDx2YXI+Y29ubjwvdmFyPgotaXMgdGhlIG5ldyBDb25uZWN0aW9uIG9iamVjdCBjcmVhdGVkLCBhbmQgPHZhcj5hZGRyZXNzPC92YXI+IGlzIGFzIHJldHVybmVkIGJ5IHRoZQotc29ja2V0J3MgPHR0IGNsYXNzPSJtZXRob2QiPmFjY2VwdDwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xODknPjx0dCBjbGFzcz0nbWV0aG9kJz5iaW5kPC90dD48L2E+PC9iPig8dmFyPmFkZHJlc3M8L3Zhcj4pCi08ZGQ+Ci1DYWxsIHRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+YmluZDwvdHQ+IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE5MCc+PHR0IGNsYXNzPSdtZXRob2QnPmNsb3NlPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1DYWxsIHRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+Y2xvc2U8L3R0PiBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LiBOb3RlOiBJZiB5b3Ugd2FudAotY29ycmVjdCBTU0wgY2xvc3VyZSwgeW91IG5lZWQgdG8gY2FsbCB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPnNodXRkb3duPC90dD4gbWV0aG9kIGZpcnN0LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xOTEnPjx0dCBjbGFzcz0nbWV0aG9kJz5jb25uZWN0PC90dD48L2E+PC9iPig8dmFyPmFkZHJlc3M8L3Zhcj4pCi08ZGQ+Ci1DYWxsIHRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+Y29ubmVjdDwvdHQ+IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQgYW5kIHNldCB1cCBTU0wgb24gdGhlCi1zb2NrZXQsIHVzaW5nIHRoZSBDb250ZXh0IG9iamVjdCBzdXBwbGllZCB0byB0aGlzIENvbm5lY3Rpb24gb2JqZWN0IGF0Ci1jcmVhdGlvbi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTkyJz48dHQgY2xhc3M9J21ldGhvZCc+Y29ubmVjdF9leDwvdHQ+PC9hPjwvYj4oPHZhcj5hZGRyZXNzPC92YXI+KQotPGRkPgotQ2FsbCB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPmNvbm5lY3RfZXg8L3R0PiBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0IGFuZCBzZXQgdXAgU1NMIG9uCi10aGUgc29ja2V0LCB1c2luZyB0aGUgQ29udGV4dCBvYmplY3Qgc3VwcGxpZWQgdG8gdGhpcyBDb25uZWN0aW9uIG9iamVjdCBhdAotY3JlYXRpb24uIE5vdGUgdGhhdCBpZiB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPmNvbm5lY3RfZXg8L3R0PiBtZXRob2Qgb2YgdGhlIHNvY2tldCBkb2Vzbid0Ci1yZXR1cm4gMCwgU1NMIHdvbid0IGJlIGluaXRpYWxpemVkLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xOTMnPjx0dCBjbGFzcz0nbWV0aG9kJz5kb19oYW5kc2hha2U8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVBlcmZvcm0gYW4gU1NMIGhhbmRzaGFrZSAodXN1YWxseSBjYWxsZWQgYWZ0ZXIgPHR0IGNsYXNzPSJtZXRob2QiPnJlbmVnb3RpYXRlPC90dD4gb3Igb25lIG9mCi08dHQgY2xhc3M9Im1ldGhvZCI+c2V0X2FjY2VwdF9zdGF0ZTwvdHQ+IG9yIDx0dCBjbGFzcz0ibWV0aG9kIj5zZXRfYWNjZXB0X3N0YXRlPC90dD4pLiBUaGlzIGNhbiByYWlzZSB0aGUKLXNhbWUgZXhjZXB0aW9ucyBhcyA8dHQgY2xhc3M9Im1ldGhvZCI+c2VuZDwvdHQ+IGFuZCA8dHQgY2xhc3M9Im1ldGhvZCI+cmVjdjwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xOTQnPjx0dCBjbGFzcz0nbWV0aG9kJz5maWxlbm88L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHJpZXZlIHRoZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyIGZvciB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE5NSc+PHR0IGNsYXNzPSdtZXRob2QnPmxpc3RlbjwvdHQ+PC9hPjwvYj4oPHZhcj5iYWNrbG9nPC92YXI+KQotPGRkPgotQ2FsbCB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPmxpc3RlbjwvdHQ+IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE5Nic+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9hcHBfZGF0YTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgYXBwbGljYXRpb24gZGF0YSBhcyBzZXQgYnkgPHR0IGNsYXNzPSJtZXRob2QiPnNldF9hcHBfZGF0YTwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xOTcnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfY2lwaGVyX2xpc3Q8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHJpZXZlIHRoZSBsaXN0IG9mIGNpcGhlcnMgdXNlZCBieSB0aGUgQ29ubmVjdGlvbiBvYmplY3QuIFdBUk5JTkc6IFRoaXMgQVBJCi1oYXMgY2hhbmdlZC4gSXQgdXNlZCB0byB0YWtlIGFuIG9wdGlvbmFsIHBhcmFtZXRlciBhbmQganVzdCByZXR1cm4gYSBzdHJpbmcsCi1idXQgbm90IGl0IHJldHVybnMgdGhlIGVudGlyZSBsaXN0IGluIG9uZSBnby4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTk4Jz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X2NsaWVudF9jYV9saXN0PC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXRyaWV2ZSB0aGUgbGlzdCBvZiBwcmVmZXJyZWQgY2xpZW50IGNlcnRpZmljYXRlIGlzc3VlcnMgc2VudCBieSB0aGUgc2VydmVyCi1hcyA8dHQgY2xhc3M9ImNsYXNzIj5PcGVuU1NMLmNyeXB0by5YNTA5TmFtZTwvdHQ+IG9iamVjdHMuCi0KLTxQPgotSWYgdGhpcyBpcyBhIGNsaWVudCA8dHQgY2xhc3M9ImNsYXNzIj5Db25uZWN0aW9uPC90dD4sIHRoZSBsaXN0IHdpbGwgYmUgZW1wdHkgdW50aWwgdGhlCi1jb25uZWN0aW9uIHdpdGggdGhlIHNlcnZlciBpcyBlc3RhYmxpc2hlZC4KLQotPFA+Ci1JZiB0aGlzIGlzIGEgc2VydmVyIDx0dCBjbGFzcz0iY2xhc3MiPkNvbm5lY3Rpb248L3R0PiwgcmV0dXJuIHRoZSBsaXN0IG9mIGNlcnRpZmljYXRlCi1hdXRob3JpdGllcyB0aGF0IHdpbGwgYmUgc2VudCBvciBoYXMgYmVlbiBzZW50IHRvIHRoZSBjbGllbnQsIGFzIGNvbnRyb2xsZWQKLWJ5IHRoaXMgPHR0IGNsYXNzPSJjbGFzcyI+Q29ubmVjdGlvbjwvdHQ+J3MgPHR0IGNsYXNzPSJjbGFzcyI+Q29udGV4dDwvdHQ+LgotCi08UD4KLQotPHNwYW4gY2xhc3M9J3ZlcnNpb25ub3RlJz5OZXcgaW4gdmVyc2lvbiAwLjEwLjwvc3Bhbj4KLQotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xOTknPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfY29udGV4dDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIENvbnRleHQgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIENvbm5lY3Rpb24uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIwMCc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9jb250ZXh0PC90dD48L2E+PC9iPig8dmFyPmNvbnRleHQ8L3Zhcj4pCi08ZGQ+Ci1TcGVjaWZ5IGEgcmVwbGFjZW1lbnQgQ29udGV4dCBvYmplY3QgZm9yIHRoaXMgQ29ubmVjdGlvbi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjAxJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X3BlZXJfY2VydGlmaWNhdGU8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHJpZXZlIHRoZSBvdGhlciBzaWRlJ3MgY2VydGlmaWNhdGUgKGlmIGFueSkKLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjAyJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X3BlZXJfY2VydF9jaGFpbjwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIHR1cGxlIG9mIHRoZSBvdGhlciBzaWRlJ3MgY2VydGlmaWNhdGUgY2hhaW4gKGlmIGFueSkKLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjAzJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0cGVlcm5hbWU8L3R0PjwvYT48L2I+KCkKLTxkZD4KLUNhbGwgdGhlIDx0dCBjbGFzcz0ibWV0aG9kIj5nZXRwZWVybmFtZTwvdHQ+IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIwNCc+PHR0IGNsYXNzPSdtZXRob2QnPmdldHNvY2tuYW1lPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1DYWxsIHRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+Z2V0c29ja25hbWU8L3R0PiBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yMDUnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRzb2Nrb3B0PC90dD48L2E+PC9iPig8dmFyPmxldmVsLCBvcHRuYW1lPC92YXI+PGJpZz5bPC9iaWc+PHZhcj4sIGJ1ZmxlbjwvdmFyPjxiaWc+XTwvYmlnPikKLTxkZD4KLUNhbGwgdGhlIDx0dCBjbGFzcz0ibWV0aG9kIj5nZXRzb2Nrb3B0PC90dD4gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjA2Jz48dHQgY2xhc3M9J21ldGhvZCc+cGVuZGluZzwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSBzYWZlbHkgcmVhZCBmcm9tIHRoZSBTU0wgYnVmZmVyCi0oPGk+bm90PC9pPiB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgYnVmZmVyKS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjA3Jz48dHQgY2xhc3M9J21ldGhvZCc+cmVjdjwvdHQ+PC9hPjwvYj4oPHZhcj5idWZzaXplPC92YXI+KQotPGRkPgotUmVjZWl2ZSBkYXRhIGZyb20gdGhlIENvbm5lY3Rpb24uIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQotZGF0YSByZWNlaXZlZC4gVGhlIG1heGltdW0gYW1vdW50IG9mIGRhdGEgdG8gYmUgcmVjZWl2ZWQgYXQgb25jZSwgaXMgc3BlY2lmaWVkCi1ieSA8dmFyPmJ1ZnNpemU8L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIwOCc+PHR0IGNsYXNzPSdtZXRob2QnPmJpb193cml0ZTwvdHQ+PC9hPjwvYj4oPHZhcj5ieXRlczwvdmFyPikKLTxkZD4KLUlmIHRoZSBDb25uZWN0aW9uIHdhcyBjcmVhdGVkIHdpdGggYSBtZW1vcnkgQklPLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBhZGQKLWJ5dGVzIHRvIHRoZSByZWFkIGVuZCBvZiB0aGF0IG1lbW9yeSBCSU8uICBUaGUgQ29ubmVjdGlvbiBjYW4gdGhlbiByZWFkIHRoZQotYnl0ZXMgKGZvciBleGFtcGxlLCBpbiByZXNwb25zZSB0byBhIGNhbGwgdG8gPHR0IGNsYXNzPSJtZXRob2QiPnJlY3Y8L3R0PikuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIwOSc+PHR0IGNsYXNzPSdtZXRob2QnPnJlbmVnb3RpYXRlPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZW5lZ290aWF0ZSB0aGUgU1NMIHNlc3Npb24uIENhbGwgdGhpcyBpZiB5b3Ugd2lzaCB0byBjaGFuZ2UgY2lwaGVyIHN1aXRlcyBvcgotYW55dGhpbmcgbGlrZSB0aGF0LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yMTAnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZW5kPC90dD48L2E+PC9iPig8dmFyPnN0cmluZzwvdmFyPikKLTxkZD4KLVNlbmQgdGhlIDx2YXI+c3RyaW5nPC92YXI+IGRhdGEgdG8gdGhlIENvbm5lY3Rpb24uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIxMSc+PHR0IGNsYXNzPSdtZXRob2QnPmJpb19yZWFkPC90dD48L2E+PC9iPig8dmFyPmJ1ZnNpemU8L3Zhcj4pCi08ZGQ+Ci1JZiB0aGUgQ29ubmVjdGlvbiB3YXMgY3JlYXRlZCB3aXRoIGEgbWVtb3J5IEJJTywgdGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8KLXJlYWQgYnl0ZXMgZnJvbSB0aGUgd3JpdGUgZW5kIG9mIHRoYXQgbWVtb3J5IEJJTy4gIE1hbnkgQ29ubmVjdGlvbiBtZXRob2RzIHdpbGwKLWFkZCBieXRlcyB3aGljaCBtdXN0IGJlIHJlYWQgaW4gdGhpcyBtYW5uZXIgb3IgdGhlIGJ1ZmZlciB3aWxsIGV2ZW50dWFsbHkgZmlsbAotdXAgYW5kIHRoZSBDb25uZWN0aW9uIHdpbGwgYmUgYWJsZSB0byB0YWtlIG5vIGZ1cnRoZXIgYWN0aW9ucy4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjEyJz48dHQgY2xhc3M9J21ldGhvZCc+c2VuZGFsbDwvdHQ+PC9hPjwvYj4oPHZhcj5zdHJpbmc8L3Zhcj4pCi08ZGQ+Ci1TZW5kIGFsbCBvZiB0aGUgPHZhcj5zdHJpbmc8L3Zhcj4gZGF0YSB0byB0aGUgQ29ubmVjdGlvbi4gVGhpcyBjYWxscyA8dHQgY2xhc3M9Im1ldGhvZCI+c2VuZDwvdHQ+Ci1yZXBlYXRlZGx5IHVudGlsIGFsbCBkYXRhIGlzIHNlbnQuIElmIGFuIGVycm9yIG9jY3VycywgaXQncyBpbXBvc3NpYmxlIHRvIHRlbGwKLWhvdyBtdWNoIGRhdGEgaGFzIGJlZW4gc2VudC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjEzJz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X2FjY2VwdF9zdGF0ZTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotU2V0IHRoZSBjb25uZWN0aW9uIHRvIHdvcmsgaW4gc2VydmVyIG1vZGUuIFRoZSBoYW5kc2hha2Ugd2lsbCBiZSBoYW5kbGVkCi1hdXRvbWF0aWNhbGx5IGJ5IHJlYWQvd3JpdGUuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIxNCc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9hcHBfZGF0YTwvdHQ+PC9hPjwvYj4oPHZhcj5kYXRhPC92YXI+KQotPGRkPgotQXNzb2NpYXRlIDx2YXI+ZGF0YTwvdmFyPiB3aXRoIHRoaXMgQ29ubmVjdGlvbiBvYmplY3QuIDx2YXI+ZGF0YTwvdmFyPiBjYW4gYmUgcmV0cmlldmVkCi1sYXRlciB1c2luZyB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPmdldF9hcHBfZGF0YTwvdHQ+IG1ldGhvZC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjE1Jz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X2Nvbm5lY3Rfc3RhdGU8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVNldCB0aGUgY29ubmVjdGlvbiB0byB3b3JrIGluIGNsaWVudCBtb2RlLiBUaGUgaGFuZHNoYWtlIHdpbGwgYmUgaGFuZGxlZAotYXV0b21hdGljYWxseSBieSByZWFkL3dyaXRlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yMTYnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRibG9ja2luZzwvdHQ+PC9hPjwvYj4oPHZhcj5mbGFnPC92YXI+KQotPGRkPgotQ2FsbCB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPnNldGJsb2NraW5nPC90dD4gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjE3Jz48dHQgY2xhc3M9J21ldGhvZCc+c2V0c29ja29wdDwvdHQ+PC9hPjwvYj4oPHZhcj5sZXZlbCwgb3B0bmFtZSwgdmFsdWU8L3Zhcj4pCi08ZGQ+Ci1DYWxsIHRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+c2V0c29ja29wdDwvdHQ+IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIxOCc+PHR0IGNsYXNzPSdtZXRob2QnPnNodXRkb3duPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1TZW5kIHRoZSBzaHV0ZG93biBtZXNzYWdlIHRvIHRoZSBDb25uZWN0aW9uLiBSZXR1cm5zIHRydWUgaWYgdGhlIHNodXRkb3duCi1tZXNzYWdlIGV4Y2hhbmdlIGlzIGNvbXBsZXRlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlIChpbiB3aGljaCBjYXNlIHlvdSBjYWxsCi08dHQgY2xhc3M9Im1ldGhvZCI+cmVjdigpPC90dD4gb3IgPHR0IGNsYXNzPSJtZXRob2QiPnNlbmQoKTwvdHQ+IHdoZW4gdGhlIGNvbm5lY3Rpb24gYmVjb21lcwotcmVhZGFibGUvd3JpdGVhYmxlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yMTknPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfc2h1dGRvd248L3R0PjwvYT48L2I+KCkKLTxkZD4KLUdldCB0aGUgc2h1dGRvd24gc3RhdGUgb2YgdGhlIENvbm5lY3Rpb24uICBSZXR1cm5zIGEgYml0dmVjdG9yIG9mIGVpdGhlciBvcgotYm90aCBvZiA8dmFyPlNFTlRfU0hVVERPV048L3Zhcj4gYW5kIDx2YXI+UkVDRUlWRURfU0hVVERPV048L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIyMCc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9zaHV0ZG93bjwvdHQ+PC9hPjwvYj4oPHZhcj5zdGF0ZTwvdmFyPikKLTxkZD4KLVNldCB0aGUgc2h1dGRvd24gc3RhdGUgb2YgdGhlIENvbm5lY3Rpb24uICA8dmFyPnN0YXRlPC92YXI+IGlzIGEgYml0dmVjdG9yIG9mCi1laXRoZXIgb3IgYm90aCBvZiA8dmFyPlNFTlRfU0hVVERPV048L3Zhcj4gYW5kIDx2YXI+UkVDRUlWRURfU0hVVERPV048L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIyMSc+PHR0IGNsYXNzPSdtZXRob2QnPnNvY2tfc2h1dGRvd248L3R0PjwvYT48L2I+KDx2YXI+aG93PC92YXI+KQotPGRkPgotQ2FsbCB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPnNodXRkb3duPC90dD4gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjIyJz48dHQgY2xhc3M9J21ldGhvZCc+YmlvX3NodXRkb3duPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1JZiB0aGUgQ29ubmVjdGlvbiB3YXMgY3JlYXRlZCB3aXRoIGEgbWVtb3J5IEJJTywgdGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8KLWluZGljYXRlIHRoYXQgYGBlbmQgb2YgZmlsZScnIGhhcyBiZWVuIHJlYWNoZWQgb24gdGhlIHJlYWQgZW5kIG9mIHRoYXQgbWVtb3J5Ci1CSU8uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIyMyc+PHR0IGNsYXNzPSdtZXRob2QnPnN0YXRlX3N0cmluZzwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgYSB2ZXJib3NlIHN0cmluZyBkZXRhaWxpbmcgdGhlIHN0YXRlIG9mIHRoZSBDb25uZWN0aW9uLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yMjQnPjx0dCBjbGFzcz0nbWV0aG9kJz5jbGllbnRfcmFuZG9tPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXRyaWV2ZSB0aGUgcmFuZG9tIHZhbHVlIHVzZWQgd2l0aCB0aGUgY2xpZW50IGhlbGxvIG1lc3NhZ2UuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIyNSc+PHR0IGNsYXNzPSdtZXRob2QnPnNlcnZlcl9yYW5kb208L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHJpZXZlIHRoZSByYW5kb20gdmFsdWUgdXNlZCB3aXRoIHRoZSBzZXJ2ZXIgaGVsbG8gbWVzc2FnZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjI2Jz48dHQgY2xhc3M9J21ldGhvZCc+bWFzdGVyX2tleTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIHZhbHVlIG9mIHRoZSBtYXN0ZXIga2V5IGZvciB0aGlzIHNlc3Npb24uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIyNyc+PHR0IGNsYXNzPSdtZXRob2QnPndhbnRfcmVhZDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotQ2hlY2tzIGlmIG1vcmUgZGF0YSBoYXMgdG8gYmUgcmVhZCBmcm9tIHRoZSB0cmFuc3BvcnQgbGF5ZXIgdG8gY29tcGxldGUgYW4KLW9wZXJhdGlvbi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjI4Jz48dHQgY2xhc3M9J21ldGhvZCc+d2FudF93cml0ZTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotQ2hlY2tzIGlmIHRoZXJlIGlzIGRhdGEgdG8gd3JpdGUgdG8gdGhlIHRyYW5zcG9ydCBsYXllciB0byBjb21wbGV0ZSBhbgotb3BlcmF0aW9uLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yMjknPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfdGxzZXh0X2hvc3RfbmFtZTwvdHQ+PC9hPjwvYj4oPHZhcj5uYW1lPC92YXI+KQotPGRkPgotU3BlY2lmeSB0aGUgYnl0ZSBzdHJpbmcgdG8gc2VuZCBhcyB0aGUgc2VydmVyIG5hbWUgaW4gdGhlIGNsaWVudCBoZWxsbyBtZXNzYWdlLgotCi08c3BhbiBjbGFzcz0ndmVyc2lvbm5vdGUnPk5ldyBpbiB2ZXJzaW9uIDAuMTMuPC9zcGFuPgotCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTIzMCc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9zZXJ2ZXJuYW1lPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1HZXQgdGhlIHZhbHVlIG9mIHRoZSBzZXJ2ZXIgbmFtZSByZWNlaXZlZCBpbiB0aGUgY2xpZW50IGhlbGxvIG1lc3NhZ2UuCi0KLTxzcGFuIGNsYXNzPSd2ZXJzaW9ubm90ZSc+TmV3IGluIHZlcnNpb24gMC4xMy48L3NwYW4+Ci0KLTwvZGw+Ci0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNvbnRleHQuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJpbnRlcm5hbHMuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNvbnRleHQuaHRtbCI+My4zLjEgQ29udGV4dCBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXNzbC5odG1sIj4zLjMgU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iaW50ZXJuYWxzLmh0bWwiPjQgSW50ZXJuYWxzPC9BPgotPGhyPgotPHNwYW4gY2xhc3M9InJlbGVhc2UtaW5mbyI+UmVsZWFzZSAwLjEzLjwvc3Bhbj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL29wZW5zc2wtY29udGV4dC5odG1sIGIvZG9jL2h0bWwvb3BlbnNzbC1jb250ZXh0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMzdjYWUuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvb3BlbnNzbC1jb250ZXh0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+My4zLjEgQ29udGV4dCBvYmplY3RzIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMy4zLjEgQ29udGV4dCBvYmplY3RzICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wtY29ubmVjdGlvbi5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wtY29ubmVjdGlvbi5odG1sIj4KLTwvaGVhZD4KLTxib2R5PgotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNvbm5lY3Rpb24uaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXNzbC5odG1sIj4zLjMgU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPjMuMyBTU0wgIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNvbm5lY3Rpb24uaHRtbCI+My4zLjIgQ29ubmVjdGlvbiBvYmplY3RzPC9BPgotPGJyPjxocj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTxIMz48QSBOQU1FPSJTRUNUSU9OMDAwNDMxMDAwMDAwMDAwMDAwMDAwIj4mbmJzcDs8L0E+Ci08QlI+Ci0zLjMuMSBDb250ZXh0IG9iamVjdHMgCi08L0gzPgotCi08UD4KLUNvbnRleHQgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNjAnPjx0dCBjbGFzcz0nbWV0aG9kJz5jaGVja19wcml2YXRla2V5PC90dD48L2E+PC9iPigpCi08ZGQ+Ci1DaGVjayBpZiB0aGUgcHJpdmF0ZSBrZXkgKGxvYWRlZCB3aXRoIDx0dCBjbGFzcz0ibWV0aG9kIj51c2VfcHJpdmF0ZWtleTxiaWc+WzwvYmlnPl9maWxlPGJpZz5dPC9iaWc+PC90dD4pCi1tYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSAobG9hZGVkIHdpdGggPHR0IGNsYXNzPSJtZXRob2QiPnVzZV9jZXJ0aWZpY2F0ZTxiaWc+WzwvYmlnPl9maWxlPGJpZz5dPC9iaWc+PC90dD4pLgotUmV0dXJucyA8Y29kZT5Ob25lPC9jb2RlPiBpZiB0aGV5IG1hdGNoLCByYWlzZXMgPHR0IGNsYXNzPSJleGNlcHRpb24iPkVycm9yPC90dD4gb3RoZXJ3aXNlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNjEnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfYXBwX2RhdGE8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHJpZXZlIGFwcGxpY2F0aW9uIGRhdGEgYXMgc2V0IGJ5IDx0dCBjbGFzcz0ibWV0aG9kIj5zZXRfYXBwX2RhdGE8L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTYyJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X2NlcnRfc3RvcmU8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHJpZXZlIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZSAoYSBYNTA5U3RvcmUgb2JqZWN0KSB0aGF0IHRoZSBjb250ZXh0IHVzZXMuCi1UaGlzIGNhbiBiZSB1c2VkIHRvIGFkZCAidHJ1c3RlZCIgY2VydGlmaWNhdGVzIHdpdGhvdXQgdXNpbmcgdGhlLgotPHR0IGNsYXNzPSJtZXRob2QiPmxvYWRfdmVyaWZ5X2xvY2F0aW9ucygpPC90dD4gbWV0aG9kLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNjMnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfdGltZW91dDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgc2Vzc2lvbiB0aW1lb3V0LCBhcyBzZXQgYnkgPHR0IGNsYXNzPSJtZXRob2QiPnNldF90aW1lb3V0PC90dD4uIFRoZSBkZWZhdWx0IGlzIDMwMAotc2Vjb25kcy4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTY0Jz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X3ZlcmlmeV9kZXB0aDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIENvbnRleHQgb2JqZWN0J3MgdmVyaWZ5IGRlcHRoLCBhcyBzZXQgYnkKLTx0dCBjbGFzcz0ibWV0aG9kIj5zZXRfdmVyaWZ5X2RlcHRoPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE2NSc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF92ZXJpZnlfbW9kZTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0cmlldmUgdGhlIENvbnRleHQgb2JqZWN0J3MgdmVyaWZ5IG1vZGUsIGFzIHNldCBieSA8dHQgY2xhc3M9Im1ldGhvZCI+c2V0X3ZlcmlmeTwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNjYnPjx0dCBjbGFzcz0nbWV0aG9kJz5sb2FkX2NsaWVudF9jYTwvdHQ+PC9hPjwvYj4oPHZhcj5wZW1maWxlPC92YXI+KQotPGRkPgotUmVhZCBhIGZpbGUgd2l0aCBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlcyB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgY2xpZW50Ci13aGVuIHJlcXVlc3RpbmcgYSBjbGllbnQgY2VydGlmaWNhdGUuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE2Nyc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9jbGllbnRfY2FfbGlzdDwvdHQ+PC9hPjwvYj4oPHZhcj5jZXJ0aWZpY2F0ZV9hdXRob3JpdGllczwvdmFyPikKLTxkZD4KLVJlcGxhY2UgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcmVmZXJyZWQgY2VydGlmaWNhdGUgc2lnbmVycyB0aGF0IHdvdWxkIGJlCi1zZW50IHRvIHRoZSBjbGllbnQgd2hlbiByZXF1ZXN0aW5nIGEgY2xpZW50IGNlcnRpZmljYXRlIHdpdGggdGhlCi08dmFyPmNlcnRpZmljYXRlX2F1dGhvcml0aWVzPC92YXI+IHNlcXVlbmNlIG9mIDx0dCBjbGFzcz0iY2xhc3MiPk9wZW5TU0wuY3J5cHRvLlg1MDlOYW1lPC90dD5zLgotCi08UD4KLQotPHNwYW4gY2xhc3M9J3ZlcnNpb25ub3RlJz5OZXcgaW4gdmVyc2lvbiAwLjEwLjwvc3Bhbj4KLQotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNjgnPjx0dCBjbGFzcz0nbWV0aG9kJz5hZGRfY2xpZW50X2NhPC90dD48L2E+PC9iPig8dmFyPmNlcnRpZmljYXRlX2F1dGhvcml0eTwvdmFyPikKLTxkZD4KLUV4dHJhY3QgYSA8dHQgY2xhc3M9ImNsYXNzIj5PcGVuU1NMLmNyeXB0by5YNTA5TmFtZTwvdHQ+IGZyb20gdGhlIDx2YXI+Y2VydGlmaWNhdGVfYXV0aG9yaXR5PC92YXI+Ci08dHQgY2xhc3M9ImNsYXNzIj5PcGVuU1NMLmNyeXB0by5YNTA5PC90dD4gY2VydGlmaWNhdGUgYW5kIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBwcmVmZXJyZWQKLWNlcnRpZmljYXRlIHNpZ25lcnMgc2VudCB0byB0aGUgY2xpZW50IHdoZW4gcmVxdWVzdGluZyBhIGNsaWVudCBjZXJ0aWZpY2F0ZS4KLQotPFA+Ci0KLTxzcGFuIGNsYXNzPSd2ZXJzaW9ubm90ZSc+TmV3IGluIHZlcnNpb24gMC4xMC48L3NwYW4+Ci0KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTY5Jz48dHQgY2xhc3M9J21ldGhvZCc+bG9hZF92ZXJpZnlfbG9jYXRpb25zPC90dD48L2E+PC9iPig8dmFyPnBlbWZpbGUsIGNhcGF0aDwvdmFyPikKLTxkZD4KLVNwZWNpZnkgd2hlcmUgQ0EgY2VydGlmaWNhdGVzIGZvciB2ZXJpZmljYXRpb24gcHVycG9zZXMgYXJlIGxvY2F0ZWQuIFRoZXNlCi1hcmUgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuIE5vdGUgdGhhdCB0aGUgY2VydGlmaWNhdGVzIGhhdmUgdG8gYmUgaW4gUEVNCi1mb3JtYXQuICBJZiBjYXBhdGggaXMgcGFzc2VkLCBpdCBtdXN0IGJlIGEgZGlyZWN0b3J5IHByZXBhcmVkIHVzaW5nIHRoZQotPGNvZGU+Y19yZWhhc2g8L2NvZGU+IHRvb2wgaW5jbHVkZWQgd2l0aCBPcGVuU1NMLiAgRWl0aGVyLCBidXQgbm90IGJvdGgsIG9mCi08dmFyPnBlbWZpbGU8L3Zhcj4gb3IgPHZhcj5jYXBhdGg8L3Zhcj4gbWF5IGJlIDxjb2RlPk5vbmU8L2NvZGU+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNzAnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHM8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVNwZWNpZnkgdGhhdCB0aGUgcGxhdGZvcm0gcHJvdmlkZWQgQ0EgY2VydGlmaWNhdGVzIGFyZSB0byBiZSB1c2VkIGZvcgotdmVyaWZpY2F0aW9uIHB1cnBvc2VzLiAgVGhpcyBtZXRob2QgbWF5IG5vdCB3b3JrIHByb3Blcmx5IG9uIE9TIFguCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE3MSc+PHR0IGNsYXNzPSdtZXRob2QnPmxvYWRfdG1wX2RoPC90dD48L2E+PC9iPig8dmFyPmRoZmlsZTwvdmFyPikKLTxkZD4KLUxvYWQgcGFyYW1ldGVycyBmb3IgRXBoZW1lcmFsIERpZmZpZS1IZWxsbWFuIGZyb20gPHZhcj5kaGZpbGU8L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE3Mic+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9hcHBfZGF0YTwvdHQ+PC9hPjwvYj4oPHZhcj5kYXRhPC92YXI+KQotPGRkPgotQXNzb2NpYXRlIDx2YXI+ZGF0YTwvdmFyPiB3aXRoIHRoaXMgQ29udGV4dCBvYmplY3QuIDx2YXI+ZGF0YTwvdmFyPiBjYW4gYmUgcmV0cmlldmVkCi1sYXRlciB1c2luZyB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPmdldF9hcHBfZGF0YTwvdHQ+IG1ldGhvZC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTczJz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X2NpcGhlcl9saXN0PC90dD48L2E+PC9iPig8dmFyPmNpcGhlcnM8L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIGxpc3Qgb2YgY2lwaGVycyB0byBiZSB1c2VkIGluIHRoaXMgY29udGV4dC4gU2VlIHRoZSBPcGVuU1NMIG1hbnVhbCBmb3IKLW1vcmUgaW5mb3JtYXRpb24gKGUuZy4gY2lwaGVycygxKSkKLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTc0Jz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X2luZm9fY2FsbGJhY2s8L3R0PjwvYT48L2I+KDx2YXI+Y2FsbGJhY2s8L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIGluZm9ybWF0aW9uIGNhbGxiYWNrIHRvIDx2YXI+Y2FsbGJhY2s8L3Zhcj4uIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQKLWZyb20gdGltZSB0byB0aW1lIGR1cmluZyBTU0wgaGFuZHNoYWtlcy4KLTx2YXI+Y2FsbGJhY2s8L3Zhcj4gc2hvdWxkIHRha2UgdGhyZWUgYXJndW1lbnRzOiBhIENvbm5lY3Rpb24gb2JqZWN0IGFuZCB0d28KLWludGVnZXJzLiBUaGUgZmlyc3QgaW50ZWdlciBzcGVjaWZpZXMgd2hlcmUgaW4gdGhlIFNTTCBoYW5kc2hha2UgdGhlIGZ1bmN0aW9uCi13YXMgY2FsbGVkLCBhbmQgdGhlIG90aGVyIHRoZSByZXR1cm4gY29kZSBmcm9tIGEgKHBvc3NpYmx5IGZhaWxlZCkgaW50ZXJuYWwKLWZ1bmN0aW9uIGNhbGwuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE3NSc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9vcHRpb25zPC90dD48L2E+PC9iPig8dmFyPm9wdGlvbnM8L3Zhcj4pCi08ZGQ+Ci1BZGQgU1NMIG9wdGlvbnMuIE9wdGlvbnMgeW91IGhhdmUgc2V0IGJlZm9yZSBhcmUgbm90IGNsZWFyZWQhCi1UaGlzIG1ldGhvZCBzaG91bGQgYmUgdXNlZCB3aXRoIHRoZSA8dHQgY2xhc3M9ImNvbnN0YW50Ij5PUF8qPC90dD4gY29uc3RhbnRzLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNzYnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfcGFzc3dkX2NiPC90dD48L2E+PC9iPig8dmFyPmNhbGxiYWNrPC92YXI+PGJpZz5bPC9iaWc+PHZhcj4sIHVzZXJkYXRhPC92YXI+PGJpZz5dPC9iaWc+KQotPGRkPgotU2V0IHRoZSBwYXNzcGhyYXNlIGNhbGxiYWNrIHRvIDx2YXI+Y2FsbGJhY2s8L3Zhcj4uIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQKLXdoZW4gYSBwcml2YXRlIGtleSB3aXRoIGEgcGFzc3BocmFzZSBpcyBsb2FkZWQuIDx2YXI+Y2FsbGJhY2s8L3Zhcj4gbXVzdCBhY2NlcHQKLXRocmVlIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgRmlyc3QsIGFuIGludGVnZXIgZ2l2aW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBvZgotdGhlIHBhc3NwaHJhc2UgaXQgbWF5IHJldHVybi4gIElmIHRoZSByZXR1cm5lZCBwYXNzcGhyYXNlIGlzIGxvbmdlciB0aGFuCi10aGlzLCBpdCB3aWxsIGJlIHRydW5jYXRlZC4gIFNlY29uZCwgYSBib29sZWFuIHZhbHVlIHdoaWNoIHdpbGwgYmUgdHJ1ZSBpZgotdGhlIHVzZXIgc2hvdWxkIGJlIHByb21wdGVkIGZvciB0aGUgcGFzc3BocmFzZSB0d2ljZSBhbmQgdGhlIGNhbGxiYWNrIHNob3VsZAotdmVyaWZ5IHRoYXQgdGhlIHR3byB2YWx1ZXMgc3VwcGxpZWQgYXJlIGVxdWFsLiBUaGlyZCwgdGhlIHZhbHVlIGdpdmVuIGFzIHRoZQotPHZhcj51c2VyZGF0YTwvdmFyPiBwYXJhbWV0ZXIgdG8gPHR0IGNsYXNzPSJtZXRob2QiPnNldF9wYXNzd2RfY2I8L3R0Pi4gIElmIGFuIGVycm9yIG9jY3VycywKLTx2YXI+Y2FsbGJhY2s8L3Zhcj4gc2hvdWxkIHJldHVybiBhIGZhbHNlIHZhbHVlIChlLmcuIGFuIGVtcHR5IHN0cmluZykuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE3Nyc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9zZXNzaW9uX2lkPC90dD48L2E+PC9iPig8dmFyPm5hbWU8L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIGNvbnRleHQgPHZhcj5uYW1lPC92YXI+IHdpdGhpbiB3aGljaCBhIHNlc3Npb24gY2FuIGJlIHJldXNlZCBmb3IgdGhpcwotQ29udGV4dCBvYmplY3QuIFRoaXMgaXMgbmVlZGVkIHdoZW4gZG9pbmcgc2Vzc2lvbiByZXN1bXB0aW9uLCBiZWNhdXNlIHRoZXJlIGlzCi1ubyB3YXkgZm9yIGEgc3RvcmVkIHNlc3Npb24gdG8ga25vdyB3aGljaCBDb250ZXh0IG9iamVjdCBpdCBpcyBhc3NvY2lhdGVkIHdpdGguCi08dmFyPm5hbWU8L3Zhcj4gbWF5IGJlIGFueSBiaW5hcnkgZGF0YS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTc4Jz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X3RpbWVvdXQ8L3R0PjwvYT48L2I+KDx2YXI+dGltZW91dDwvdmFyPikKLTxkZD4KLVNldCB0aGUgdGltZW91dCBmb3IgbmV3bHkgY3JlYXRlZCBzZXNzaW9ucyBmb3IgdGhpcyBDb250ZXh0IG9iamVjdCB0bwotPHZhcj50aW1lb3V0PC92YXI+LiA8dmFyPnRpbWVvdXQ8L3Zhcj4gbXVzdCBiZSBnaXZlbiBpbiAod2hvbGUpIHNlY29uZHMuIFRoZSBkZWZhdWx0Ci12YWx1ZSBpcyAzMDAgc2Vjb25kcy4gU2VlIHRoZSBPcGVuU1NMIG1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbiAoZS5nLgotU1NMX0NUWF9zZXRfdGltZW91dCgzKSkuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE3OSc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF92ZXJpZnk8L3R0PjwvYT48L2I+KDx2YXI+bW9kZSwgY2FsbGJhY2s8L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIHZlcmlmaWNhdGlvbiBmbGFncyBmb3IgdGhpcyBDb250ZXh0IG9iamVjdCB0byA8dmFyPm1vZGU8L3Zhcj4gYW5kIHNwZWNpZnkKLXRoYXQgPHZhcj5jYWxsYmFjazwvdmFyPiBzaG91bGQgYmUgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIGNhbGxiYWNrcy4gPHZhcj5tb2RlPC92YXI+Ci1zaG91bGQgYmUgb25lIG9mIDx0dCBjbGFzcz0iY29uc3RhbnQiPlZFUklGWV9OT05FPC90dD4gYW5kIDx0dCBjbGFzcz0iY29uc3RhbnQiPlZFUklGWV9QRUVSPC90dD4uIElmCi08dHQgY2xhc3M9ImNvbnN0YW50Ij5WRVJJRllfUEVFUjwvdHQ+IGlzIHVzZWQsIDx2YXI+bW9kZTwvdmFyPiBjYW4gYmUgT1I6ZWQgd2l0aAotPHR0IGNsYXNzPSJjb25zdGFudCI+VkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUPC90dD4gYW5kIDx0dCBjbGFzcz0iY29uc3RhbnQiPlZFUklGWV9DTElFTlRfT05DRTwvdHQ+IHRvCi1mdXJ0aGVyIGNvbnRyb2wgdGhlIGJlaGF2aW91ci4KLTx2YXI+Y2FsbGJhY2s8L3Zhcj4gc2hvdWxkIHRha2UgZml2ZSBhcmd1bWVudHM6IEEgQ29ubmVjdGlvbiBvYmplY3QsIGFuIFg1MDkgb2JqZWN0LAotYW5kIHRocmVlIGludGVnZXIgdmFyaWFibGVzLCB3aGljaCBhcmUgaW4gdHVybiBwb3RlbnRpYWwgZXJyb3IgbnVtYmVyLCBlcnJvcgotZGVwdGggYW5kIHJldHVybiBjb2RlLiA8dmFyPmNhbGxiYWNrPC92YXI+IHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB2ZXJpZmljYXRpb24gcGFzc2VzCi1hbmQgZmFsc2Ugb3RoZXJ3aXNlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xODAnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfdmVyaWZ5X2RlcHRoPC90dD48L2E+PC9iPig8dmFyPmRlcHRoPC92YXI+KQotPGRkPgotU2V0IHRoZSBtYXhpbXVtIGRlcHRoIGZvciB0aGUgY2VydGlmaWNhdGUgY2hhaW4gdmVyaWZpY2F0aW9uIHRoYXQgc2hhbGwgYmUKLWFsbG93ZWQgZm9yIHRoaXMgQ29udGV4dCBvYmplY3QuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE4MSc+PHR0IGNsYXNzPSdtZXRob2QnPnVzZV9jZXJ0aWZpY2F0ZTwvdHQ+PC9hPjwvYj4oPHZhcj5jZXJ0PC92YXI+KQotPGRkPgotVXNlIHRoZSBjZXJ0aWZpY2F0ZSA8dmFyPmNlcnQ8L3Zhcj4gd2hpY2ggaGFzIHRvIGJlIGEgWDUwOSBvYmplY3QuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE4Mic+PHR0IGNsYXNzPSdtZXRob2QnPmFkZF9leHRyYV9jaGFpbl9jZXJ0PC90dD48L2E+PC9iPig8dmFyPmNlcnQ8L3Zhcj4pCi08ZGQ+Ci1BZGRzIHRoZSBjZXJ0aWZpY2F0ZSA8dmFyPmNlcnQ8L3Zhcj4sIHdoaWNoIGhhcyB0byBiZSBhIFg1MDkgb2JqZWN0LCB0byB0aGUKLWNlcnRpZmljYXRlIGNoYWluIHByZXNlbnRlZCB0b2dldGhlciB3aXRoIHRoZSBjZXJ0aWZpY2F0ZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTgzJz48dHQgY2xhc3M9J21ldGhvZCc+dXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGU8L3R0PjwvYT48L2I+KDx2YXI+ZmlsZTwvdmFyPikKLTxkZD4KLUxvYWQgYSBjZXJ0aWZpY2F0ZSBjaGFpbiBmcm9tIDx2YXI+ZmlsZTwvdmFyPiB3aGljaCBtdXN0IGJlIFBFTSBlbmNvZGVkLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xODQnPjx0dCBjbGFzcz0nbWV0aG9kJz51c2VfcHJpdmF0ZWtleTwvdHQ+PC9hPjwvYj4oPHZhcj5wa2V5PC92YXI+KQotPGRkPgotVXNlIHRoZSBwcml2YXRlIGtleSA8dmFyPnBrZXk8L3Zhcj4gd2hpY2ggaGFzIHRvIGJlIGEgUEtleSBvYmplY3QuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE4NSc+PHR0IGNsYXNzPSdtZXRob2QnPnVzZV9jZXJ0aWZpY2F0ZV9maWxlPC90dD48L2E+PC9iPig8dmFyPmZpbGU8L3Zhcj48YmlnPls8L2JpZz48dmFyPiwgZm9ybWF0PC92YXI+PGJpZz5dPC9iaWc+KQotPGRkPgotTG9hZCB0aGUgZmlyc3QgY2VydGlmaWNhdGUgZm91bmQgaW4gPHZhcj5maWxlPC92YXI+LiBUaGUgY2VydGlmaWNhdGUgbXVzdCBiZSBpbiB0aGUKLWZvcm1hdCBzcGVjaWZpZWQgYnkgPHZhcj5mb3JtYXQ8L3Zhcj4sIHdoaWNoIGlzIGVpdGhlciA8dHQgY2xhc3M9ImNvbnN0YW50Ij5GSUxFVFlQRV9QRU08L3R0PiBvcgotPHR0IGNsYXNzPSJjb25zdGFudCI+RklMRVRZUEVfQVNOMTwvdHQ+LiBUaGUgZGVmYXVsdCBpcyA8dHQgY2xhc3M9ImNvbnN0YW50Ij5GSUxFVFlQRV9QRU08L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTg2Jz48dHQgY2xhc3M9J21ldGhvZCc+dXNlX3ByaXZhdGVrZXlfZmlsZTwvdHQ+PC9hPjwvYj4oPHZhcj5maWxlPC92YXI+PGJpZz5bPC9iaWc+PHZhcj4sIGZvcm1hdDwvdmFyPjxiaWc+XTwvYmlnPikKLTxkZD4KLUxvYWQgdGhlIGZpcnN0IHByaXZhdGUga2V5IGZvdW5kIGluIDx2YXI+ZmlsZTwvdmFyPi4gVGhlIHByaXZhdGUga2V5IG11c3QgYmUgaW4gdGhlCi1mb3JtYXQgc3BlY2lmaWVkIGJ5IDx2YXI+Zm9ybWF0PC92YXI+LCB3aGljaCBpcyBlaXRoZXIgPHR0IGNsYXNzPSJjb25zdGFudCI+RklMRVRZUEVfUEVNPC90dD4gb3IKLTx0dCBjbGFzcz0iY29uc3RhbnQiPkZJTEVUWVBFX0FTTjE8L3R0Pi4gVGhlIGRlZmF1bHQgaXMgPHR0IGNsYXNzPSJjb25zdGFudCI+RklMRVRZUEVfUEVNPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTE4Nyc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFjazwvdHQ+PC9hPjwvYj4oPHZhcj5jYWxsYmFjazwvdmFyPikKLTxkZD4KLVNwZWNpZnkgYSBvbmUtYXJndW1lbnQgY2FsbGFibGUgdG8gdXNlIGFzIHRoZSBUTFMgZXh0ZW5zaW9uIHNlcnZlciBuYW1lCi1jYWxsYmFjay4gIFdoZW4gYSBjb25uZWN0aW9uIHVzaW5nIHRoZSBzZXJ2ZXIgbmFtZSBleHRlbnNpb24gaXMgbWFkZSB1c2luZyB0aGlzCi1jb250ZXh0LCB0aGUgY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIDxjb2RlPkNvbm5lY3Rpb248L2NvZGU+IGluc3RhbmNlLgotCi08c3BhbiBjbGFzcz0ndmVyc2lvbm5vdGUnPk5ldyBpbiB2ZXJzaW9uIDAuMTMuPC9zcGFuPgotCi08L2RsPgotCi08UD4KLQotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08cD48aHI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNvbm5lY3Rpb24uaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXNzbC5odG1sIj4zLjMgU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPjMuMyBTU0wgIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNvbm5lY3Rpb24uaHRtbCI+My4zLjIgQ29ubmVjdGlvbiBvYmplY3RzPC9BPgotPGhyPgotPHNwYW4gY2xhc3M9InJlbGVhc2UtaW5mbyI+UmVsZWFzZSAwLjEzLjwvc3Bhbj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL29wZW5zc2wtY3J5cHRvLmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLWNyeXB0by5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmY3NmYwLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL29wZW5zc2wtY3J5cHRvLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNTkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+My4xIGNyeXB0byAtLSBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMy4xIGNyeXB0byAtLSBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wtcmFuZC5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wuaHRtbCI+Ci08TElOSyBSRUw9InVwIiBocmVmPSJvcGVuc3NsLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLXg1MDkuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wteDUwOS5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyBPcGVuU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyBPcGVuU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC14NTA5Lmh0bWwiPjMuMS4xIFg1MDkgb2JqZWN0czwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDI+PEEgTkFNRT0iU0VDVElPTjAwMDQxMDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4xIDx0dCBjbGFzcz0ibW9kdWxlIj5jcnlwdG88L3R0PiAtLSBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlIAotPC9IMj4KLQotPFA+Ci0KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC02Jz48dHQ+WDUwOVR5cGU8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1TZWUgPHR0IGNsYXNzPSJjbGFzcyI+WDUwOTwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmNsYXNzIDxhIG5hbWU9J2wyaC03Jz48dHQgY2xhc3M9J2NsYXNzJz5YNTA5PC90dD48L2E+PC9iPigpCi08ZGQ+Ci1BIGNsYXNzIHJlcHJlc2VudGluZyBYLjUwOSBjZXJ0aWZpY2F0ZXMuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTgnPjx0dD5YNTA5TmFtZVR5cGU8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1TZWUgPHR0IGNsYXNzPSJjbGFzcyI+WDUwOU5hbWU8L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj5jbGFzcyA8YSBuYW1lPSdsMmgtOSc+PHR0IGNsYXNzPSdjbGFzcyc+WDUwOU5hbWU8L3R0PjwvYT48L2I+KDx2YXI+eDUwOW5hbWU8L3Zhcj4pCi08ZGQ+Ci1BIGNsYXNzIHJlcHJlc2VudGluZyBYLjUwOSBEaXN0aW5ndWlzaGVkIE5hbWVzLgotCi08UD4KLVRoaXMgY29uc3RydWN0b3IgY3JlYXRlcyBhIGNvcHkgb2YgPHZhcj54NTA5bmFtZTwvdmFyPiB3aGljaCBzaG91bGQgYmUgYW4KLWluc3RhbmNlIG9mIDx0dCBjbGFzcz0iY2xhc3MiPlg1MDlOYW1lPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEwJz48dHQ+WDUwOVJlcVR5cGU8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1TZWUgPHR0IGNsYXNzPSJjbGFzcyI+WDUwOVJlcTwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmNsYXNzIDxhIG5hbWU9J2wyaC0xMSc+PHR0IGNsYXNzPSdjbGFzcyc+WDUwOVJlcTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotQSBjbGFzcyByZXByZXNlbnRpbmcgWC41MDkgY2VydGlmaWNhdGUgcmVxdWVzdHMuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEyJz48dHQ+WDUwOVN0b3JlVHlwZTwvdHQ+PC9hPjwvYj4KLTxkZD4KLUEgUHl0aG9uIHR5cGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgWDUwOVN0b3JlIG9iamVjdCB0eXBlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMyc+PHR0PlBLZXlUeXBlPC90dD48L2E+PC9iPgotPGRkPgotU2VlIDx0dCBjbGFzcz0iY2xhc3MiPlBLZXk8L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj5jbGFzcyA8YSBuYW1lPSdsMmgtMTQnPjx0dCBjbGFzcz0nY2xhc3MnPlBLZXk8L3R0PjwvYT48L2I+KCkKLTxkZD4KLUEgY2xhc3MgcmVwcmVzZW50aW5nIERTQSBvciBSU0Ega2V5cy4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTUnPjx0dD5QS0NTN1R5cGU8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1BIFB5dGhvbiB0eXBlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFBLQ1M3IG9iamVjdCB0eXBlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xNic+PHR0PlBLQ1MxMlR5cGU8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1BIFB5dGhvbiB0eXBlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFBLQ1MxMiBvYmplY3QgdHlwZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTcnPjx0dD5YNTA5RXh0ZW5zaW9uVHlwZTwvdHQ+PC9hPjwvYj4KLTxkZD4KLVNlZSA8dHQgY2xhc3M9ImNsYXNzIj5YNTA5RXh0ZW5zaW9uPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+Y2xhc3MgPGEgbmFtZT0nbDJoLTE4Jz48dHQgY2xhc3M9J2NsYXNzJz5YNTA5RXh0ZW5zaW9uPC90dD48L2E+PC9iPig8dmFyPnR5cGVuYW1lLCBjcml0aWNhbCwgdmFsdWU8L3Zhcj48YmlnPls8L2JpZz48dmFyPiwgc3ViamVjdDwvdmFyPjxiaWc+XTwvYmlnPjxiaWc+WzwvYmlnPjx2YXI+LCBpc3N1ZXI8L3Zhcj48YmlnPl08L2JpZz4pCi08ZGQ+Ci1BIGNsYXNzIHJlcHJlc2VudGluZyBhbiBYLjUwOSB2MyBjZXJ0aWZpY2F0ZSBleHRlbnNpb25zLgotU2VlIDxhIGNsYXNzPSJ1cmwiIGhyZWY9Imh0dHA6Ly9vcGVuc3NsLm9yZy9kb2NzL2FwcHMveDUwOXYzX2NvbmZpZy5odG1sI1NUQU5EQVJEX0VYVEVOU0lPTlMiPmh0dHA6Ly9vcGVuc3NsLm9yZy9kb2NzL2FwcHMveDUwOXYzX2NvbmZpZy5odG1sI1NUQU5EQVJEX0VYVEVOU0lPTlM8L2E+Zm9yIDx2YXI+dHlwZW5hbWU8L3Zhcj4gc3RyaW5ncyBhbmQgdGhlaXIgb3B0aW9ucy4KLU9wdGlvbmFsIHBhcmFtZXRlcnMgPHZhcj5zdWJqZWN0PC92YXI+IGFuZCA8dmFyPmlzc3VlcjwvdmFyPiBtdXN0IGJlIFg1MDkgb2JqZWN0cy4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTknPjx0dD5OZXRzY2FwZVNQS0lUeXBlPC90dD48L2E+PC9iPgotPGRkPgotU2VlIDx0dCBjbGFzcz0iY2xhc3MiPk5ldHNjYXBlU1BLSTwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmNsYXNzIDxhIG5hbWU9J2wyaC0yMCc+PHR0IGNsYXNzPSdjbGFzcyc+TmV0c2NhcGVTUEtJPC90dD48L2E+PC9iPig8YmlnPls8L2JpZz48dmFyPmVuYzwvdmFyPjxiaWc+XTwvYmlnPikKLTxkZD4KLUEgY2xhc3MgcmVwcmVzZW50aW5nIE5ldHNjYXBlIFNQS0kgb2JqZWN0cy4KLQotPFA+Ci1JZiB0aGUgPHZhcj5lbmM8L3Zhcj4gYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgc2hvdWxkIGJlIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nCi1yZXByZXNlbnRpbmcgYSBOZXRzY2FwZVNQS0kgb2JqZWN0LCBhcyByZXR1cm5lZCBieSB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPmI2NF9lbmNvZGU8L3R0PgotbWV0aG9kLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmNsYXNzIDxhIG5hbWU9J2wyaC0yMSc+PHR0IGNsYXNzPSdjbGFzcyc+Q1JMPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1BIGNsYXNzIHJlcHJlc2VudGluZyBDZXJ0aWZjYXRlIFJldm9jYXRpb24gTGlzdCBvYmplY3RzLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmNsYXNzIDxhIG5hbWU9J2wyaC0yMic+PHR0IGNsYXNzPSdjbGFzcyc+UmV2b2tlZDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotQSBjbGFzcyByZXByZXNlbnRpbmcgUmV2b2NhdGlvbiBvYmplY3RzIG9mIENSTC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMjMnPjx0dD5GSUxFVFlQRV9QRU08L3R0PjwvYT48L2I+Ci08ZGQ+Ci08ZHQ+PGI+PGEgbmFtZT0nbDJoLTM3Jz48dHQ+RklMRVRZUEVfQVNOMTwvdHQ+PC9hPjwvYj48ZGQ+Ci1GaWxlIHR5cGUgY29uc3RhbnRzLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yNCc+PHR0PlRZUEVfUlNBPC90dD48L2E+PC9iPgotPGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0zOCc+PHR0PlRZUEVfRFNBPC90dD48L2E+PC9iPjxkZD4KLUtleSB0eXBlIGNvbnN0YW50cy4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj5leGNlcHRpb24gPGEgbmFtZT0nbDJoLTI1Jz48dHQgY2xhc3M9J2V4Y2VwdGlvbic+RXJyb3I8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1HZW5lcmljIGV4Y2VwdGlvbiB1c2VkIGluIHRoZSA8dHQgY2xhc3M9Im1vZHVsZSI+Y3J5cHRvPC90dD4gbW9kdWxlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yNic+PHR0IGNsYXNzPSdmdW5jdGlvbic+ZHVtcF9jZXJ0aWZpY2F0ZTwvdHQ+PC9hPjwvYj4oPHZhcj50eXBlLCBjZXJ0PC92YXI+KQotPGRkPgotRHVtcCB0aGUgY2VydGlmaWNhdGUgPHZhcj5jZXJ0PC92YXI+IGludG8gYSBidWZmZXIgc3RyaW5nIGVuY29kZWQgd2l0aCB0aGUgdHlwZQotPHZhcj50eXBlPC92YXI+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0yNyc+PHR0IGNsYXNzPSdmdW5jdGlvbic+ZHVtcF9jZXJ0aWZpY2F0ZV9yZXF1ZXN0PC90dD48L2E+PC9iPig8dmFyPnR5cGUsIHJlcTwvdmFyPikKLTxkZD4KLUR1bXAgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QgPHZhcj5yZXE8L3Zhcj4gaW50byBhIGJ1ZmZlciBzdHJpbmcgZW5jb2RlZCB3aXRoIHRoZQotdHlwZSA8dmFyPnR5cGU8L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTI4Jz48dHQgY2xhc3M9J2Z1bmN0aW9uJz5kdW1wX3ByaXZhdGVrZXk8L3R0PjwvYT48L2I+KDx2YXI+dHlwZSwgcGtleTwvdmFyPjxiaWc+WzwvYmlnPjx2YXI+LCBjaXBoZXIsIHBhc3NwaHJhc2U8L3Zhcj48YmlnPl08L2JpZz4pCi08ZGQ+Ci1EdW1wIHRoZSBwcml2YXRlIGtleSA8dmFyPnBrZXk8L3Zhcj4gaW50byBhIGJ1ZmZlciBzdHJpbmcgZW5jb2RlZCB3aXRoIHRoZSB0eXBlCi08dmFyPnR5cGU8L3Zhcj4sIG9wdGlvbmFsbHkgKGlmIDx2YXI+dHlwZTwvdmFyPiBpcyA8dHQgY2xhc3M9ImNvbnN0YW50Ij5GSUxFVFlQRV9QRU08L3R0PikgZW5jcnlwdGluZyBpdAotdXNpbmcgPHZhcj5jaXBoZXI8L3Zhcj4gYW5kIDx2YXI+cGFzc3BocmFzZTwvdmFyPi4KLQotPFA+Ci08dmFyPnBhc3NwaHJhc2U8L3Zhcj4gbXVzdCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBjYWxsYmFjayBmb3IgcHJvdmlkaW5nIHRoZQotcGFzcyBwaHJhc2UuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTI5Jz48dHQgY2xhc3M9J2Z1bmN0aW9uJz5sb2FkX2NlcnRpZmljYXRlPC90dD48L2E+PC9iPig8dmFyPnR5cGUsIGJ1ZmZlcjwvdmFyPikKLTxkZD4KLUxvYWQgYSBjZXJ0aWZpY2F0ZSAoWDUwOSkgZnJvbSB0aGUgc3RyaW5nIDx2YXI+YnVmZmVyPC92YXI+IGVuY29kZWQgd2l0aCB0aGUKLXR5cGUgPHZhcj50eXBlPC92YXI+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0zMCc+PHR0IGNsYXNzPSdmdW5jdGlvbic+bG9hZF9jZXJ0aWZpY2F0ZV9yZXF1ZXN0PC90dD48L2E+PC9iPig8dmFyPnR5cGUsIGJ1ZmZlcjwvdmFyPikKLTxkZD4KLUxvYWQgYSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IChYNTA5UmVxKSBmcm9tIHRoZSBzdHJpbmcgPHZhcj5idWZmZXI8L3Zhcj4gZW5jb2RlZCB3aXRoCi10aGUgdHlwZSA8dmFyPnR5cGU8L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTMxJz48dHQgY2xhc3M9J2Z1bmN0aW9uJz5sb2FkX3ByaXZhdGVrZXk8L3R0PjwvYT48L2I+KDx2YXI+dHlwZSwgYnVmZmVyPC92YXI+PGJpZz5bPC9iaWc+PHZhcj4sIHBhc3NwaHJhc2U8L3Zhcj48YmlnPl08L2JpZz4pCi08ZGQ+Ci1Mb2FkIGEgcHJpdmF0ZSBrZXkgKFBLZXkpIGZyb20gdGhlIHN0cmluZyA8dmFyPmJ1ZmZlcjwvdmFyPiBlbmNvZGVkIHdpdGgKLXRoZSB0eXBlIDx2YXI+dHlwZTwvdmFyPiAobXVzdCBiZSBvbmUgb2YgPHR0IGNsYXNzPSJjb25zdGFudCI+RklMRVRZUEVfUEVNPC90dD4gYW5kCi08dHQgY2xhc3M9ImNvbnN0YW50Ij5GSUxFVFlQRV9BU04xPC90dD4pLgotCi08UD4KLTx2YXI+cGFzc3BocmFzZTwvdmFyPiBtdXN0IGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGNhbGxiYWNrIGZvciBwcm92aWRpbmcgdGhlCi1wYXNzIHBocmFzZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMzInPjx0dCBjbGFzcz0nZnVuY3Rpb24nPmxvYWRfY3JsPC90dD48L2E+PC9iPig8dmFyPnR5cGUsIGJ1ZmZlcjwvdmFyPikKLTxkZD4KLUxvYWQgQ2VydGlmaWNhdGUgUmV2b2NhdGlvbiBMaXN0IChDUkwpIGRhdGEgZnJvbSBhIHN0cmluZyA8dmFyPmJ1ZmZlcjwvdmFyPi4KLTx2YXI+YnVmZmVyPC92YXI+IGVuY29kZWQgd2l0aCB0aGUgdHlwZSA8dmFyPnR5cGU8L3Zhcj4uICBUaGUgdHlwZSA8dmFyPnR5cGU8L3Zhcj4KLW11c3QgZWl0aGVyIDx0dCBjbGFzcz0iY29uc3RhbnQiPkZJTEVUWVBFX1BFTTwvdHQ+IG9yIDx0dCBjbGFzcz0iY29uc3RhbnQiPkZJTEVUWVBFX0FTTjE8L3R0PikuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTMzJz48dHQgY2xhc3M9J2Z1bmN0aW9uJz5sb2FkX3BrY3M3X2RhdGE8L3R0PjwvYT48L2I+KDx2YXI+dHlwZSwgYnVmZmVyPC92YXI+KQotPGRkPgotTG9hZCBwa2NzNyBkYXRhIGZyb20gdGhlIHN0cmluZyA8dmFyPmJ1ZmZlcjwvdmFyPiBlbmNvZGVkIHdpdGggdGhlIHR5cGUgPHZhcj50eXBlPC92YXI+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0zNCc+PHR0IGNsYXNzPSdmdW5jdGlvbic+bG9hZF9wa2NzMTI8L3R0PjwvYT48L2I+KDx2YXI+YnVmZmVyPC92YXI+PGJpZz5bPC9iaWc+PHZhcj4sIHBhc3NwaHJhc2U8L3Zhcj48YmlnPl08L2JpZz4pCi08ZGQ+Ci1Mb2FkIHBrY3MxMiBkYXRhIGZyb20gdGhlIHN0cmluZyA8dmFyPmJ1ZmZlcjwvdmFyPi4gSWYgdGhlIHBrY3MxMiBzdHJ1Y3R1cmUgaXMKLWVuY3J5cHRlZCwgYSA8dmFyPnBhc3NwaHJhc2U8L3Zhcj4gbXVzdCBiZSBpbmNsdWRlZC4gIFRoZSBNQUMgaXMgYWx3YXlzCi1jaGVja2VkIGFuZCB0aHVzIHJlcXVpcmVkLgotCi08UD4KLVNlZSBhbHNvIHRoZSBtYW4gcGFnZSBmb3IgdGhlIEMgZnVuY3Rpb24gPHR0IGNsYXNzPSJmdW5jdGlvbiI+UEtDUzEyX3BhcnNlPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTM1Jz48dHQgY2xhc3M9J2Z1bmN0aW9uJz5zaWduPC90dD48L2E+PC9iPig8dmFyPmtleSwgZGF0YSwgZGlnZXN0PC92YXI+KQotPGRkPgotU2lnbiBhIGRhdGEgc3RyaW5nIHVzaW5nIHRoZSBnaXZlbiBrZXkgYW5kIG1lc3NhZ2UgZGlnZXN0LgotCi08UD4KLTx2YXI+a2V5PC92YXI+IGlzIGEgPGNvZGU+UEtleTwvY29kZT4gaW5zdGFuY2UuICA8dmFyPmRhdGE8L3Zhcj4gaXMgYSA8Y29kZT5zdHI8L2NvZGU+IGluc3RhbmNlLgotPHZhcj5kaWdlc3Q8L3Zhcj4gaXMgYSA8Y29kZT5zdHI8L2NvZGU+IG5hbWluZyBhIHN1cHBvcnRlZCBtZXNzYWdlIGRpZ2VzdCB0eXBlLCBmb3IgZXhhbXBsZQotPGNvZGU+YGBzaGExJyc8L2NvZGU+LgotCi08c3BhbiBjbGFzcz0ndmVyc2lvbm5vdGUnPk5ldyBpbiB2ZXJzaW9uIDAuMTEuPC9zcGFuPgotCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTM2Jz48dHQgY2xhc3M9J2Z1bmN0aW9uJz52ZXJpZnk8L3R0PjwvYT48L2I+KDx2YXI+Y2VydGlmaWNhdGUsIHNpZ25hdHVyZSwgZGF0YSwgZGlnZXN0PC92YXI+KQotPGRkPgotVmVyaWZ5IHRoZSBzaWduYXR1cmUgZm9yIGEgZGF0YSBzdHJpbmcuCi0KLTxQPgotPHZhcj5jZXJ0aWZpY2F0ZTwvdmFyPiBpcyBhIDxjb2RlPlg1MDk8L2NvZGU+IGluc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByaXZhdGUga2V5Ci13aGljaCBnZW5lcmF0ZWQgdGhlIHNpZ25hdHVyZS4gIDx2YXI+c2lnbmF0dXJlPC92YXI+IGlzIGEgPHZhcj5zdHI8L3Zhcj4gaW5zdGFuY2UgZ2l2aW5nCi10aGUgc2lnbmF0dXJlIGl0c2VsZi4gIDx2YXI+ZGF0YTwvdmFyPiBpcyBhIDx2YXI+c3RyPC92YXI+IGluc3RhbmNlIGdpdmluZyB0aGUgZGF0YSB0bwotd2hpY2ggdGhlIHNpZ25hdHVyZSBhcHBsaWVzLiAgPHZhcj5kaWdlc3Q8L3Zhcj4gaXMgYSA8dmFyPnN0cjwvdmFyPiBpbnN0YW5jZSBuYW1pbmcgdGhlCi1tZXNzYWdlIGRpZ2VzdCB0eXBlIG9mIHRoZSBzaWduYXR1cmUsIGZvciBleGFtcGxlIDxjb2RlPmBgc2hhMScnPC9jb2RlPi4KLQotPHNwYW4gY2xhc3M9J3ZlcnNpb25ub3RlJz5OZXcgaW4gdmVyc2lvbiAwLjExLjwvc3Bhbj4KLQotPC9kbD4KLQotPFA+Ci0KLTxwPjxocj4KLTwhLS1UYWJsZSBvZiBDaGlsZC1MaW5rcy0tPgotPEEgTkFNRT0iQ0hJTERfTElOS1MiPjxTVFJPTkc+U3Vic2VjdGlvbnM8L1NUUk9ORz48L0E+Ci0KLTxVTCBDTEFTUz0iQ2hpbGRMaW5rcyI+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMzkiCi0gIGhyZWY9Im9wZW5zc2wteDUwOS5odG1sIj4zLjEuMSBYNTA5IG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTQwIgotICBocmVmPSJvcGVuc3NsLXg1MDluYW1lLmh0bWwiPjMuMS4yIFg1MDlOYW1lIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTQxIgotICBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+My4xLjMgWDUwOVJlcSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE0MiIKLSAgaHJlZj0ib3BlbnNzbC14NTA5c3RvcmUuaHRtbCI+My4xLjQgWDUwOVN0b3JlIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTQzIgotICBocmVmPSJvcGVuc3NsLXBrZXkuaHRtbCI+My4xLjUgUEtleSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE0NCIKLSAgaHJlZj0ib3BlbnNzbC1wa2NzNy5odG1sIj4zLjEuNiBQS0NTNyBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE0NSIKLSAgaHJlZj0ib3BlbnNzbC1wa2NzMTIuaHRtbCI+My4xLjcgUEtDUzEyIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTQ2IgotICBocmVmPSJvcGVuc3NsLTUwOWV4dC5odG1sIj4zLjEuOCBYNTA5RXh0ZW5zaW9uIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTQ3IgotICBocmVmPSJvcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCI+My4xLjkgTmV0c2NhcGVTUEtJIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTQ4IgotICBocmVmPSJjcmwuaHRtbCI+My4xLjEwIENSTCBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE0OSIKLSAgaHJlZj0icmV2b2tlZC5odG1sIj4zLjEuMTEgUmV2b2tlZCBvYmplY3RzIDwvQT4KLTwvVUw+Ci08IS0tRW5kIG9mIFRhYmxlIG9mIENoaWxkLUxpbmtzLS0+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wteDUwOS5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyBPcGVuU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyBPcGVuU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC14NTA5Lmh0bWwiPjMuMS4xIFg1MDkgb2JqZWN0czwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9vcGVuc3NsLW5ldHNjYXBlLXNwa2kuaHRtbCBiL2RvYy9odG1sL29wZW5zc2wtbmV0c2NhcGUtc3BraS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWFiZDNiLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL29wZW5zc2wtbmV0c2NhcGUtc3BraS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMuMS45IE5ldHNjYXBlU1BLSSBvYmplY3RzIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMy4xLjkgTmV0c2NhcGVTUEtJIG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iY3JsLmh0bWwiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0ib3BlbnNzbC01MDlleHQuaHRtbCI+Ci08TElOSyBSRUw9InVwIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iY3JsLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLTUwOWV4dC5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9ImNybC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtNTA5ZXh0Lmh0bWwiPjMuMS44IFg1MDlFeHRlbnNpb24gb2JqZWN0czwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImNybC5odG1sIj4zLjEuMTAgQ1JMIG9iamVjdHM8L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPEgzPjxBIE5BTUU9IlNFQ1RJT04wMDA0MTkwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTMuMS45IE5ldHNjYXBlU1BLSSBvYmplY3RzIAotPC9IMz4KLQotPFA+Ci1OZXRzY2FwZVNQS0kgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMDInPjx0dCBjbGFzcz0nbWV0aG9kJz5iNjRfZW5jb2RlPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gYSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTAzJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X3B1YmtleTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIHRoZSBwdWJsaWMga2V5IG9mIG9iamVjdC4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTA0Jz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X3B1YmtleTwvdHQ+PC9hPjwvYj4oPHZhcj5rZXk8L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIG9iamVjdCB0byA8dmFyPmtleTwvdmFyPi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTA1Jz48dHQgY2xhc3M9J21ldGhvZCc+c2lnbjwvdHQ+PC9hPjwvYj4oPHZhcj5rZXksIGRpZ2VzdF9uYW1lPC92YXI+KQotPGRkPgotU2lnbiB0aGUgTmV0c2NhcGVTUEtJIG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gPHZhcj5rZXk8L3Zhcj4gYW5kCi08dmFyPmRpZ2VzdF9uYW1lPC92YXI+LiAgPHZhcj5kaWdlc3RfbmFtZTwvdmFyPiBtdXN0IGJlIGEgc3RyaW5nIGRlc2NyaWJpbmcgYSBkaWdlc3QKLWFsZ29yaXRobSBzdXBwb3J0ZWQgYnkgT3BlblNTTCAoYnkgRVZQX2dldF9kaWdlc3RieW5hbWUsIHNwZWNpZmljYWxseSkuICBGb3IKLWV4YW1wbGUsIDx0dCBjbGFzcz0iY29uc3RhbnQiPiJtZDUiPC90dD4gb3IgPHR0IGNsYXNzPSJjb25zdGFudCI+InNoYTEiPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEwNic+PHR0IGNsYXNzPSdtZXRob2QnPnZlcmlmeTwvdHQ+PC9hPjwvYj4oPHZhcj5rZXk8L3Zhcj4pCi08ZGQ+Ci1WZXJpZnkgdGhlIE5ldHNjYXBlU1BLSSBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIDx2YXI+a2V5PC92YXI+LgotPC9kbD4KLQotPFA+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtNTA5ZXh0Lmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iY3JsLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC01MDlleHQuaHRtbCI+My4xLjggWDUwOUV4dGVuc2lvbiBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgY3J5cHRvICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iY3JsLmh0bWwiPjMuMS4xMCBDUkwgb2JqZWN0czwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9vcGVuc3NsLXBrY3MxMi5odG1sIGIvZG9jL2h0bWwvb3BlbnNzbC1wa2NzMTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg4N2JhNC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLXBrY3MxMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMuMS43IFBLQ1MxMiBvYmplY3RzIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMy4xLjcgUEtDUzEyIG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0ib3BlbnNzbC01MDlleHQuaHRtbCI+Ci08TElOSyBSRUw9InByZXZpb3VzIiBocmVmPSJvcGVuc3NsLXBrY3M3Lmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wtNTA5ZXh0Lmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXBrY3M3Lmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC01MDlleHQuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXBrY3M3Lmh0bWwiPjMuMS42IFBLQ1M3IG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLTUwOWV4dC5odG1sIj4zLjEuOCBYNTA5RXh0ZW5zaW9uIG9iamVjdHM8L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPEgzPjxBIE5BTUU9IlNFQ1RJT04wMDA0MTcwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTMuMS43IFBLQ1MxMiBvYmplY3RzIAotPC9IMz4KLQotPFA+Ci1QS0NTMTIgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC05MCc+PHR0IGNsYXNzPSdtZXRob2QnPmV4cG9ydDwvdHQ+PC9hPjwvYj4oPGJpZz5bPC9iaWc+PHZhcj5wYXNzcGhyYXNlPU5vbmU8L3Zhcj48YmlnPl08L2JpZz48YmlnPls8L2JpZz48dmFyPiwgaXRlcj0yMDQ4PC92YXI+PGJpZz5dPC9iaWc+PGJpZz5bPC9iaWc+PHZhcj4sIG1hY2l0ZXI9MTwvdmFyPjxiaWc+XTwvYmlnPikKLTxkZD4KLVJldHVybnMgYSBQS0NTMTIgb2JqZWN0IGFzIGEgc3RyaW5nLgotCi08UD4KLVRoZSBvcHRpb25hbCA8dmFyPnBhc3NwaHJhc2U8L3Zhcj4gbXVzdCBiZSBhIHN0cmluZyBub3QgYSBjYWxsYmFjay4KLQotPFA+Ci1TZWUgYWxzbyB0aGUgbWFuIHBhZ2UgZm9yIHRoZSBDIGZ1bmN0aW9uIDx0dCBjbGFzcz0iZnVuY3Rpb24iPlBLQ1MxMl9jcmVhdGU8L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtOTEnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfY2FfY2VydGlmaWNhdGVzPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gQ0EgY2VydGlmaWNhdGVzIHdpdGhpbiB0aGUgUEtDUzEyIG9iamVjdCBhcyBhIHR1cGxlLiBSZXR1cm5zCi08dHQgY2xhc3M9ImNvbnN0YW50Ij5Ob25lPC90dD4gaWYgbm8gQ0EgY2VydGlmaWNhdGVzIGFyZSBwcmVzZW50LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC05Mic+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9jZXJ0aWZpY2F0ZTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIGNlcnRpZmljYXRlIHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmUuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTkzJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X2ZyaWVuZGx5bmFtZTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIGZyaWVuZGx5TmFtZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC05NCc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9wcml2YXRla2V5PC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gcHJpdmF0ZSBrZXkgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZQotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC05NSc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9jYV9jZXJ0aWZpY2F0ZXM8L3R0PjwvYT48L2I+KDx2YXI+Y2FjZXJ0czwvdmFyPikKLTxkZD4KLVJlcGxhY2Ugb3Igc2V0IHRoZSBDQSBjZXJ0aWZpY2F0ZXMgd2l0aGluIHRoZSBQS0NTMTIgb2JqZWN0IHdpdGggdGhlIHNlcXVlbmNlIDx2YXI+Y2FjZXJ0czwvdmFyPi4KLQotPFA+Ci1TZXQgPHZhcj5jYWNlcnRzPC92YXI+IHRvIDx0dCBjbGFzcz0iY29uc3RhbnQiPk5vbmU8L3R0PiB0byByZW1vdmUgYWxsIENBIGNlcnRpZmljYXRlcy4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtOTYnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfY2VydGlmaWNhdGU8L3R0PjwvYT48L2I+KDx2YXI+Y2VydDwvdmFyPikKLTxkZD4KLVJlcGxhY2Ugb3Igc2V0IHRoZSBjZXJ0aWZpY2F0ZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC05Nyc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9mcmllbmRseW5hbWU8L3R0PjwvYT48L2I+KDx2YXI+bmFtZTwvdmFyPikKLTxkZD4KLVJlcGxhY2Ugb3Igc2V0IHRoZSBmcmllbmRseU5hbWUgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtOTgnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfcHJpdmF0ZWtleTwvdHQ+PC9hPjwvYj4oPHZhcj5wa2V5PC92YXI+KQotPGRkPgotUmVwbGFjZSBvciBzZXQgcHJpdmF0ZSBrZXkgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZQotPC9kbD4KLQotPFA+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtcGtjczcuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLTUwOWV4dC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtcGtjczcuaHRtbCI+My4xLjYgUEtDUzcgb2JqZWN0czwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtNTA5ZXh0Lmh0bWwiPjMuMS44IFg1MDlFeHRlbnNpb24gb2JqZWN0czwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9vcGVuc3NsLXBrY3M3Lmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLXBrY3M3Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYTJiOWQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvb3BlbnNzbC1wa2NzNy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMuMS42IFBLQ1M3IG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjEuNiBQS0NTNyBvYmplY3RzICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wtcGtjczEyLmh0bWwiPgotPExJTksgUkVMPSJwcmV2aW91cyIgaHJlZj0ib3BlbnNzbC1wa2V5Lmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wtcGtjczEyLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXBrZXkuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXBrY3MxMi5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtcGtleS5odG1sIj4zLjEuNSBQS2V5IG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXBrY3MxMi5odG1sIj4zLjEuNyBQS0NTMTIgb2JqZWN0czwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDM+PEEgTkFNRT0iU0VDVElPTjAwMDQxNjAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4xLjYgUEtDUzcgb2JqZWN0cyAKLTwvSDM+Ci0KLTxQPgotUEtDUzcgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC04NSc+PHR0IGNsYXNzPSdtZXRob2QnPnR5cGVfaXNfc2lnbmVkPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1GSVhNRQotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC04Nic+PHR0IGNsYXNzPSdtZXRob2QnPnR5cGVfaXNfZW52ZWxvcGVkPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1GSVhNRQotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC04Nyc+PHR0IGNsYXNzPSdtZXRob2QnPnR5cGVfaXNfc2lnbmVkQW5kRW52ZWxvcGVkPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1GSVhNRQotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC04OCc+PHR0IGNsYXNzPSdtZXRob2QnPnR5cGVfaXNfZGF0YTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotRklYTUUKLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtODknPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfdHlwZV9uYW1lPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1HZXQgdGhlIHR5cGUgbmFtZSBvZiB0aGUgUEtDUzcuCi08L2RsPgotCi08UD4KLQotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08cD48aHI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1wa2V5Lmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1wa2NzMTIuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXBrZXkuaHRtbCI+My4xLjUgUEtleSBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgY3J5cHRvICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1wa2NzMTIuaHRtbCI+My4xLjcgUEtDUzEyIG9iamVjdHM8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvb3BlbnNzbC1wa2V5Lmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLXBrZXkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNlOTM4MC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLXBrZXkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zLjEuNSBQS2V5IG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjEuNSBQS2V5IG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0ib3BlbnNzbC1wa2NzNy5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wteDUwOXN0b3JlLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wtcGtjczcuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wteDUwOXN0b3JlLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1wa2NzNy5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wteDUwOXN0b3JlLmh0bWwiPjMuMS40IFg1MDlTdG9yZSBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgY3J5cHRvICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1wa2NzNy5odG1sIj4zLjEuNiBQS0NTNyBvYmplY3RzPC9BPgotPGJyPjxocj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTxIMz48QSBOQU1FPSJTRUNUSU9OMDAwNDE1MDAwMDAwMDAwMDAwMDAwIj4mbmJzcDs8L0E+Ci08QlI+Ci0zLjEuNSBQS2V5IG9iamVjdHMgCi08L0gzPgotCi08UD4KLVRoZSBQS2V5IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTgxJz48dHQgY2xhc3M9J21ldGhvZCc+Yml0czwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBvZiB0aGUga2V5LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC04Mic+PHR0IGNsYXNzPSdtZXRob2QnPmdlbmVyYXRlX2tleTwvdHQ+PC9hPjwvYj4oPHZhcj50eXBlLCBiaXRzPC92YXI+KQotPGRkPgotR2VuZXJhdGUgYSBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFpciBvZiB0aGUgdHlwZSA8dmFyPnR5cGU8L3Zhcj4gKG9uZSBvZgotPHR0IGNsYXNzPSJjb25zdGFudCI+VFlQRV9SU0E8L3R0PiBhbmQgPHR0IGNsYXNzPSJjb25zdGFudCI+VFlQRV9EU0E8L3R0Pikgd2l0aCB0aGUgc2l6ZSA8dmFyPmJpdHM8L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTgzJz48dHQgY2xhc3M9J21ldGhvZCc+dHlwZTwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBrZXkuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTg0Jz48dHQgY2xhc3M9J21ldGhvZCc+Y2hlY2s8L3R0PjwvYT48L2I+KCkKLTxkZD4KLUNoZWNrIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGlzIGtleSwgcmV0dXJuaW5nIFRydWUgaWYgaXQgaXMgY29uc2lzdGVudCBhbmQKLXJhaXNpbmcgYW4gZXhjZXB0aW9uIG90aGVyd2lzZS4gIFRoaXMgaXMgb25seSB2YWxpZCBmb3IgUlNBIGtleXMuICBTZWUgdGhlCi1PcGVuU1NMIFJTQV9jaGVja19rZXkgbWFuIHBhZ2UgZm9yIGZ1cnRoZXIgbGltaXRhdGlvbnMuCi08L2RsPgotCi08UD4KLQotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08cD48aHI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC14NTA5c3RvcmUuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXBrY3M3Lmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC14NTA5c3RvcmUuaHRtbCI+My4xLjQgWDUwOVN0b3JlIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXBrY3M3Lmh0bWwiPjMuMS42IFBLQ1M3IG9iamVjdHM8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvb3BlbnNzbC1yYW5kLmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLXJhbmQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZmNDk4Mi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLXJhbmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zLjIgcmFuZCAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5TU0wgcHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMy4yIHJhbmQgLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBPcGVuU1NMIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciAiPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLXNzbC5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0ib3BlbnNzbC5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9InJldm9rZWQuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0icmV2b2tlZC5odG1sIj4zLjEuMTEgUmV2b2tlZCBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLmh0bWwiPjMgT3BlblNTTCAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPjMuMyBTU0wgIDwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDI+PEEgTkFNRT0iU0VDVElPTjAwMDQyMDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4yIDx0dCBjbGFzcz0ibW9kdWxlIj5yYW5kPC90dD4gLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBPcGVuU1NMIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciAKLTwvSDI+Ci0KLTxQPgotCi0KLTxQPgotVGhpcyBtb2R1bGUgaGFuZGxlcyB0aGUgT3BlblNTTCBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKFBSTkcpIGFuZAotZGVjbGFyZXMgdGhlIGZvbGxvd2luZzoKLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMTgnPjx0dCBjbGFzcz0nZnVuY3Rpb24nPmFkZDwvdHQ+PC9hPjwvYj4oPHZhcj5zdHJpbmcsIGVudHJvcHk8L3Zhcj4pCi08ZGQ+Ci1NaXggYnl0ZXMgZnJvbSA8dmFyPnN0cmluZzwvdmFyPiBpbnRvIHRoZSBQUk5HIHN0YXRlLiBUaGUgPHZhcj5lbnRyb3B5PC92YXI+IGFyZ3VtZW50IGlzCi0odGhlIGxvd2VyIGJvdW5kIG9mKSBhbiBlc3RpbWF0ZSBvZiBob3cgbXVjaCByYW5kb21uZXNzIGlzIGNvbnRhaW5lZCBpbgotPHZhcj5zdHJpbmc8L3Zhcj4sIG1lYXN1cmVkIGluIGJ5dGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGUuZy4gPGEgY2xhc3M9InJmYyIgbmFtZT0icmZjcmVmLTIzNzQiCi1ocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMxNzUwLnR4dCI+UkZDIDE3NTA8L2E+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMTknPjx0dCBjbGFzcz0nZnVuY3Rpb24nPmJ5dGVzPC90dD48L2E+PC9iPig8dmFyPm51bV9ieXRlczwvdmFyPikKLTxkZD4KLUdldCBzb21lIHJhbmRvbSBieXRlcyBmcm9tIHRoZSBQUk5HIGFzIGEgc3RyaW5nLgotCi08UD4KLVRoaXMgaXMgYSB3cmFwcGVyIGZvciB0aGUgQyBmdW5jdGlvbiA8dHQgY2xhc3M9ImZ1bmN0aW9uIj5SQU5EX2J5dGVzPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEyMCc+PHR0IGNsYXNzPSdmdW5jdGlvbic+Y2xlYW51cDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotRXJhc2UgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBQUk5HLgotCi08UD4KLVRoaXMgaXMgYSB3cmFwcGVyIGZvciB0aGUgQyBmdW5jdGlvbiA8dHQgY2xhc3M9ImZ1bmN0aW9uIj5SQU5EX2NsZWFudXA8L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTIxJz48dHQgY2xhc3M9J2Z1bmN0aW9uJz5lZ2Q8L3R0PjwvYT48L2I+KDx2YXI+cGF0aDwvdmFyPjxiaWc+WzwvYmlnPjx2YXI+LCBieXRlczwvdmFyPjxiaWc+XTwvYmlnPikKLTxkZD4KLVF1ZXJ5IHRoZSBFbnRyb3B5IEdhdGhlcmluZyBEYWVtb248QSBOQU1FPSJ0ZXgyaHRtbDIiCi0gIEhSRUY9IiNmb290MTI3MiI+PFNVUD4yPC9TVVA+PC9BPiBvbiBzb2NrZXQgPHZhcj5wYXRoPC92YXI+IGZvciA8dmFyPmJ5dGVzPC92YXI+Ci1ieXRlcyBvZiByYW5kb20gZGF0YSBhbmQgYW5kIHVzZXMgPHR0IGNsYXNzPSJmdW5jdGlvbiI+YWRkPC90dD4gdG8gc2VlZCB0aGUgUFJORy4gVGhlIGRlZmF1bHQKLXZhbHVlIG9mIDx2YXI+Ynl0ZXM8L3Zhcj4gaXMgMjU1LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMjInPjx0dCBjbGFzcz0nZnVuY3Rpb24nPmxvYWRfZmlsZTwvdHQ+PC9hPjwvYj4oPHZhcj5wYXRoPC92YXI+PGJpZz5bPC9iaWc+PHZhcj4sIGJ5dGVzPC92YXI+PGJpZz5dPC9iaWc+KQotPGRkPgotUmVhZCA8dmFyPmJ5dGVzPC92YXI+IGJ5dGVzIChvciBhbGwgb2YgaXQsIGlmIDx2YXI+Ynl0ZXM8L3Zhcj4gaXMgbmVnYXRpdmUpIG9mIGRhdGEgZnJvbQotdGhlIGZpbGUgPHZhcj5wYXRoPC92YXI+IHRvIHNlZWQgdGhlIFBSTkcuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIDx2YXI+Ynl0ZXM8L3Zhcj4gaXMgLTEuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEyMyc+PHR0IGNsYXNzPSdmdW5jdGlvbic+c2NyZWVuPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1BZGQgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIHNjcmVlbiB0byB0aGUgUFJORyBzdGF0ZS4KLUF2YWlsYWJpbGl0eTogV2luZG93cy4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTI0Jz48dHQgY2xhc3M9J2Z1bmN0aW9uJz5zZWVkPC90dD48L2E+PC9iPig8dmFyPnN0cmluZzwvdmFyPikKLTxkZD4KLVRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIDx0dCBjbGFzcz0iZnVuY3Rpb24iPmFkZDwvdHQ+IHdpdGggPHZhcj5lbnRyb3B5PC92YXI+IGFzIHRoZSBsZW5ndGgKLW9mIHRoZSBzdHJpbmcuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEyNSc+PHR0IGNsYXNzPSdmdW5jdGlvbic+c3RhdHVzPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm5zIHRydWUgaWYgdGhlIFBSTkcgaGFzIGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEsIGFuZCBmYWxzZSBvdGhlcndpc2UuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEyNic+PHR0IGNsYXNzPSdmdW5jdGlvbic+d3JpdGVfZmlsZTwvdHQ+PC9hPjwvYj4oPHZhcj5wYXRoPC92YXI+KQotPGRkPgotV3JpdGUgYSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIChjdXJyZW50bHkgMTAyNCkgdG8gdGhlIGZpbGUgPHZhcj5wYXRoPC92YXI+LiBUaGlzCi1maWxlIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCA8dHQgY2xhc3M9ImZ1bmN0aW9uIj5sb2FkX2ZpbGU8L3R0PiB0byBzZWVkIHRoZSBQUk5HIGFnYWluLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmV4Y2VwdGlvbiA8YSBuYW1lPSdsMmgtMTI3Jz48dHQgY2xhc3M9J2V4Y2VwdGlvbic+RXJyb3I8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1JZiB0aGUgY3VycmVudCBSQU5EIG1ldGhvZCBzdXBwb3J0cyBhbnkgZXJyb3JzLCB0aGlzIGlzIHJhaXNlZCB3aGVuIG5lZWRlZC4KLVRoZSBkZWZhdWx0IG1ldGhvZCBkb2VzIG5vdCByYWlzZSB0aGlzIHdoZW4gdGhlIGVudHJvcHkgcG9vbCBpcyBkZXBsZXRlZC4KLQotPFA+Ci1XaGVuZXZlciB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZGlyZWN0bHksIGl0IGhhcyBhIGxpc3Qgb2YgZXJyb3IgbWVzc2FnZXMKLWZyb20gdGhlIE9wZW5TU0wgZXJyb3IgcXVldWUsIHdoZXJlIGVhY2ggaXRlbSBpcyBhIHR1cGxlIDxjb2RlPig8dmFyPmxpYjwvdmFyPiwKLTx2YXI+ZnVuY3Rpb248L3Zhcj4sIDx2YXI+cmVhc29uPC92YXI+KTwvY29kZT4uIEhlcmUgPHZhcj5saWI8L3Zhcj4sIDx2YXI+ZnVuY3Rpb248L3Zhcj4gYW5kIDx2YXI+cmVhc29uPC92YXI+Ci1hcmUgYWxsIHN0cmluZ3MsIGRlc2NyaWJpbmcgd2hlcmUgYW5kIHdoYXQgdGhlIHByb2JsZW0gaXMuIFNlZSA8c3BhbiBjbGFzcz0nbWFucGFnZSc+PGk+ZXJyPC9pPigzKTwvc3Bhbj4KLWZvciBtb3JlIGluZm9ybWF0aW9uLgotPC9kbD4KLQotPFA+Ci08QlI+PEhSPjxIND5Gb290bm90ZXM8L0g0PgotPERMPgotPERUPjxBIE5BTUU9ImZvb3QxMjcyIj4uLi4gRGFlbW9uPC9BPjxBCi0gaHJlZj0ib3BlbnNzbC1yYW5kLmh0bWwjdGV4Mmh0bWwyIj48U1VQPjI8L1NVUD48L0E+PC9EVD4KLTxERD5TZWUKLTxhIGNsYXNzPSJ1cmwiIGhyZWY9Imh0dHA6Ly93d3cubG90aGFyLmNvbS90ZWNoL2NyeXB0by8iPmh0dHA6Ly93d3cubG90aGFyLmNvbS90ZWNoL2NyeXB0by88L2E+Ci0KLTwvREQ+Ci08L0RMPgotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08cD48aHI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0icmV2b2tlZC5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJyZXZva2VkLmh0bWwiPjMuMS4xMSBSZXZva2VkIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyBPcGVuU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1zc2wuaHRtbCI+My4zIFNTTCAgPC9BPgotPGhyPgotPHNwYW4gY2xhc3M9InJlbGVhc2UtaW5mbyI+UmVsZWFzZSAwLjEzLjwvc3Bhbj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL29wZW5zc2wtc3NsLmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLXNzbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDBjNWI3Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL29wZW5zc2wtc3NsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+My4zIFNTTCAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIFNTTC1zcGVjaWZpYyBwYXJ0cyBvZiBPcGVuU1NMIDwvdGl0bGU+Ci08TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iMy4zIFNTTCAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIFNTTC1zcGVjaWZpYyBwYXJ0cyBvZiBPcGVuU1NMICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9InByZXZpb3VzIiBocmVmPSJvcGVuc3NsLXJhbmQuaHRtbCI+Ci08TElOSyBSRUw9InVwIiBocmVmPSJvcGVuc3NsLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLWNvbnRleHQuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtcmFuZC5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jb250ZXh0Lmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1yYW5kLmh0bWwiPjMuMiByYW5kICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyBPcGVuU1NMICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jb250ZXh0Lmh0bWwiPjMuMy4xIENvbnRleHQgb2JqZWN0czwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDI+PEEgTkFNRT0iU0VDVElPTjAwMDQzMDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4zIDx0dCBjbGFzcz0ibW9kdWxlIj5TU0w8L3R0PiAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIFNTTC1zcGVjaWZpYyBwYXJ0cyBvZiBPcGVuU1NMIAotPC9IMj4KLQotPFA+Ci0KLQotPFA+Ci1UaGlzIG1vZHVsZSBoYW5kbGVzIHRoaW5ncyBzcGVjaWZpYyB0byBTU0wuIFRoZXJlIGFyZSB0d28gb2JqZWN0cyBkZWZpbmVkOgotQ29udGV4dCwgQ29ubmVjdGlvbi4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMjknPjx0dD5TU0x2Ml9NRVRIT0Q8L3R0PjwvYT48L2I+Ci08ZGQ+Ci08ZHQ+PGI+PGEgbmFtZT0nbDJoLTE0Nic+PHR0PlNTTHYzX01FVEhPRDwvdHQ+PC9hPjwvYj48ZGQ+Ci08ZHQ+PGI+PGEgbmFtZT0nbDJoLTE0Nyc+PHR0PlNTTHYyM19NRVRIT0Q8L3R0PjwvYT48L2I+PGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0xNDgnPjx0dD5UTFN2MV9NRVRIT0Q8L3R0PjwvYT48L2I+PGRkPgotVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgZGlmZmVyZW50IFNTTCBtZXRob2RzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEKLWNvbnRleHQgb2JqZWN0LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMzAnPjx0dD5WRVJJRllfTk9ORTwvdHQ+PC9hPjwvYj4KLTxkZD4KLTxkdD48Yj48YSBuYW1lPSdsMmgtMTQ5Jz48dHQ+VkVSSUZZX1BFRVI8L3R0PjwvYT48L2I+PGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0xNTAnPjx0dD5WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQ8L3R0PjwvYT48L2I+PGRkPgotVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdmVyaWZpY2F0aW9uIG1vZGUgdXNlZCBieSB0aGUgQ29udGV4dAotb2JqZWN0J3MgPHR0IGNsYXNzPSJtZXRob2QiPnNldF92ZXJpZnk8L3R0PiBtZXRob2QuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEzMSc+PHR0PkZJTEVUWVBFX1BFTTwvdHQ+PC9hPjwvYj4KLTxkZD4KLTxkdD48Yj48YSBuYW1lPSdsMmgtMTUxJz48dHQ+RklMRVRZUEVfQVNOMTwvdHQ+PC9hPjwvYj48ZGQ+Ci1GaWxlIHR5cGUgY29uc3RhbnRzIHVzZWQgd2l0aCB0aGUgPHR0IGNsYXNzPSJtZXRob2QiPnVzZV9jZXJ0aWZpY2F0ZV9maWxlPC90dD4gYW5kCi08dHQgY2xhc3M9Im1ldGhvZCI+dXNlX3ByaXZhdGVrZXlfZmlsZTwvdHQ+IG1ldGhvZHMgb2YgQ29udGV4dCBvYmplY3RzLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMzInPjx0dD5PUF9TSU5HTEVfREhfVVNFPC90dD48L2E+PC9iPgotPGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0xNTInPjx0dD5PUF9FUEhFTUVSQUxfUlNBPC90dD48L2E+PC9iPjxkZD4KLTxkdD48Yj48YSBuYW1lPSdsMmgtMTUzJz48dHQ+T1BfTk9fU1NMdjI8L3R0PjwvYT48L2I+PGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0xNTQnPjx0dD5PUF9OT19TU0x2MzwvdHQ+PC9hPjwvYj48ZGQ+Ci08ZHQ+PGI+PGEgbmFtZT0nbDJoLTE1NSc+PHR0Pk9QX05PX1RMU3YxPC90dD48L2E+PC9iPjxkZD4KLUNvbnN0YW50cyB1c2VkIHdpdGggPHR0IGNsYXNzPSJtZXRob2QiPnNldF9vcHRpb25zPC90dD4gb2YgQ29udGV4dCBvYmplY3RzLgotPHR0IGNsYXNzPSJjb25zdGFudCI+T1BfU0lOR0xFX0RIX1VTRTwvdHQ+IG1lYW5zIHRvIGFsd2F5cyBjcmVhdGUgYSBuZXcga2V5IHdoZW4gdXNpbmcgZXBoZW1lcmFsCi1EaWZmaWUtSGVsbG1hbi4gPHR0IGNsYXNzPSJjb25zdGFudCI+T1BfRVBIRU1FUkFMX1JTQTwvdHQ+IG1lYW5zIHRvIGFsd2F5cyB1c2UgZXBoZW1lcmFsIFJTQSBrZXlzCi13aGVuIGRvaW5nIFJTQSBvcGVyYXRpb25zLiA8dHQgY2xhc3M9ImNvbnN0YW50Ij5PUF9OT19TU0x2MjwvdHQ+LCA8dHQgY2xhc3M9ImNvbnN0YW50Ij5PUF9OT19TU0x2MzwvdHQ+IGFuZAotPHR0IGNsYXNzPSJjb25zdGFudCI+T1BfTk9fVExTdjE8L3R0PiBtZWFucyB0byBkaXNhYmxlIHRob3NlIHNwZWNpZmljIHByb3RvY29scy4gVGhpcyBpcwotaW50ZXJlc3RpbmcgaWYgeW91J3JlIHVzaW5nIGUuZy4gPHR0IGNsYXNzPSJjb25zdGFudCI+U1NMdjIzX01FVEhPRDwvdHQ+IHRvIGdldCBhbiBTU0x2Mi1jb21wYXRpYmxlCi1oYW5kc2hha2UsIGJ1dCBkb24ndCB3YW50IHRvIHVzZSBTU0x2Mi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMTMzJz48dHQ+U1NMRUFZX1ZFUlNJT048L3R0PjwvYT48L2I+Ci08ZGQ+Ci08ZHQ+PGI+PGEgbmFtZT0nbDJoLTE1Nic+PHR0PlNTTEVBWV9DRkxBR1M8L3R0PjwvYT48L2I+PGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0xNTcnPjx0dD5TU0xFQVlfQlVJTFRfT048L3R0PjwvYT48L2I+PGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0xNTgnPjx0dD5TU0xFQVlfUExBVEZPUk08L3R0PjwvYT48L2I+PGRkPgotPGR0PjxiPjxhIG5hbWU9J2wyaC0xNTknPjx0dD5TU0xFQVlfRElSPC90dD48L2E+PC9iPjxkZD4KLUNvbnN0YW50cyB1c2VkIHdpdGggPHR0IGNsYXNzPSJtZXRob2QiPlNTTGVheV92ZXJzaW9uPC90dD4gdG8gc3BlY2lmeSB3aGF0IE9wZW5TU0wgdmVyc2lvbgotaW5mb3JtYXRpb24gdG8gcmV0cmlldmUuICBTZWUgdGhlIG1hbiBwYWdlIGZvciB0aGUgPHR0IGNsYXNzPSJmdW5jdGlvbiI+U1NMZWF5X3ZlcnNpb248L3R0PiBDCi1BUEkgZm9yIGRldGFpbHMuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEzNCc+PHR0Pk9QRU5TU0xfVkVSU0lPTl9OVU1CRVI8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1BbiBpbnRlZ2VyIGdpdmluZyB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIE9wZW5TU0wgbGlicmFyeSB1c2VkIHRvIGJ1aWxkIHRoaXMKLXZlcnNpb24gb2YgcHlPcGVuU1NMLiAgU2VlIHRoZSBtYW4gcGFnZSBmb3IgdGhlIDx0dCBjbGFzcz0iZnVuY3Rpb24iPlNTTGVheV92ZXJzaW9uPC90dD4gQyBBUEkKLWZvciBkZXRhaWxzLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMzUnPjx0dCBjbGFzcz0nZnVuY3Rpb24nPlNTTGVheV92ZXJzaW9uPC90dD48L2E+PC9iPig8dmFyPnR5cGU8L3Zhcj4pCi08ZGQ+Ci1SZXRyaWV2ZSBhIHN0cmluZyBkZXNjcmliaW5nIHNvbWUgYXNwZWN0IG9mIHRoZSB1bmRlcmx5aW5nIE9wZW5TU0wgdmVyc2lvbi4gIFRoZQotdHlwZSBwYXNzZWQgaW4gc2hvdWxkIGJlIG9uZSBvZiB0aGUgPHR0IGNsYXNzPSJjb25zdGFudCI+U1NMRUFZXyo8L3R0PiBjb25zdGFudHMgZGVmaW5lZCBpbgotdGhpcyBtb2R1bGUuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEzNic+PHR0PkNvbnRleHRUeXBlPC90dD48L2E+PC9iPgotPGRkPgotU2VlIDx0dCBjbGFzcz0iY2xhc3MiPkNvbnRleHQ8L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj5jbGFzcyA8YSBuYW1lPSdsMmgtMTM3Jz48dHQgY2xhc3M9J2NsYXNzJz5Db250ZXh0PC90dD48L2E+PC9iPig8dmFyPm1ldGhvZDwvdmFyPikKLTxkZD4KLUEgY2xhc3MgcmVwcmVzZW50aW5nIFNTTCBjb250ZXh0cy4gIENvbnRleHRzIGRlZmluZSB0aGUgcGFyYW1ldGVycyBvZiBvbmUgb3IKLW1vcmUgU1NMIGNvbm5lY3Rpb25zLgotCi08UD4KLTx2YXI+bWV0aG9kPC92YXI+IHNob3VsZCBiZSA8dHQgY2xhc3M9ImNvbnN0YW50Ij5TU0x2Ml9NRVRIT0Q8L3R0PiwgPHR0IGNsYXNzPSJjb25zdGFudCI+U1NMdjNfTUVUSE9EPC90dD4sCi08dHQgY2xhc3M9ImNvbnN0YW50Ij5TU0x2MjNfTUVUSE9EPC90dD4gb3IgPHR0IGNsYXNzPSJjb25zdGFudCI+VExTdjFfTUVUSE9EPC90dD4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTEzOCc+PHR0PkNvbm5lY3Rpb25UeXBlPC90dD48L2E+PC9iPgotPGRkPgotU2VlIDx0dCBjbGFzcz0iY2xhc3MiPkNvbm5lY3Rpb248L3R0Pi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj5jbGFzcyA8YSBuYW1lPSdsMmgtMTM5Jz48dHQgY2xhc3M9J2NsYXNzJz5Db25uZWN0aW9uPC90dD48L2E+PC9iPig8dmFyPmNvbnRleHQsIHNvY2tldDwvdmFyPikKLTxkZD4KLUEgY2xhc3MgcmVwcmVzZW50aW5nIFNTTCBjb25uZWN0aW9ucy4KLQotPFA+Ci08dmFyPmNvbnRleHQ8L3Zhcj4gc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIDx0dCBjbGFzcz0iY2xhc3MiPkNvbnRleHQ8L3R0PiBhbmQgPHZhcj5zb2NrZXQ8L3Zhcj4KLXNob3VsZCBiZSBhIHNvY2tldCA8QSBOQU1FPSJ0ZXgyaHRtbDQiCi0gIEhSRUY9IiNmb290MTI3NiI+PFNVUD4zPC9TVVA+PC9BPiBvYmplY3QuICA8dmFyPnNvY2tldDwvdmFyPiBtYXkgYmUKLTx2YXI+Tm9uZTwvdmFyPjsgaW4gdGhpcyBjYXNlLCB0aGUgQ29ubmVjdGlvbiBpcyBjcmVhdGVkIHdpdGggYSBtZW1vcnkgQklPOiBzZWUKLXRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+YmlvX3JlYWQ8L3R0PiwgPHR0IGNsYXNzPSJtZXRob2QiPmJpb193cml0ZTwvdHQ+LCBhbmQgPHR0IGNsYXNzPSJtZXRob2QiPmJpb19zaHV0ZG93bjwvdHQ+Ci1tZXRob2RzLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmV4Y2VwdGlvbiA8YSBuYW1lPSdsMmgtMTQwJz48dHQgY2xhc3M9J2V4Y2VwdGlvbic+RXJyb3I8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1UaGlzIGV4Y2VwdGlvbiBpcyB1c2VkIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlIG90aGVyIFNTTC1yZWxhdGVkCi1leGNlcHRpb25zLCBidXQgbWF5IGFsc28gYmUgcmFpc2VkIGRpcmVjdGx5LgotCi08UD4KLVdoZW5ldmVyIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBkaXJlY3RseSwgaXQgaGFzIGEgbGlzdCBvZiBlcnJvciBtZXNzYWdlcwotZnJvbSB0aGUgT3BlblNTTCBlcnJvciBxdWV1ZSwgd2hlcmUgZWFjaCBpdGVtIGlzIGEgdHVwbGUgPGNvZGU+KDx2YXI+bGliPC92YXI+LAotPHZhcj5mdW5jdGlvbjwvdmFyPiwgPHZhcj5yZWFzb248L3Zhcj4pPC9jb2RlPi4gSGVyZSA8dmFyPmxpYjwvdmFyPiwgPHZhcj5mdW5jdGlvbjwvdmFyPiBhbmQgPHZhcj5yZWFzb248L3Zhcj4KLWFyZSBhbGwgc3RyaW5ncywgZGVzY3JpYmluZyB3aGVyZSBhbmQgd2hhdCB0aGUgcHJvYmxlbSBpcy4gU2VlIDxzcGFuIGNsYXNzPSdtYW5wYWdlJz48aT5lcnI8L2k+KDMpPC9zcGFuPgotZm9yIG1vcmUgaW5mb3JtYXRpb24uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+ZXhjZXB0aW9uIDxhIG5hbWU9J2wyaC0xNDEnPjx0dCBjbGFzcz0nZXhjZXB0aW9uJz5aZXJvUmV0dXJuRXJyb3I8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1UaGlzIGV4Y2VwdGlvbiBtYXRjaGVzIHRoZSBlcnJvciByZXR1cm4gY29kZSA8Y29kZT5TU0xfRVJST1JfWkVST19SRVRVUk48L2NvZGU+LCBhbmQKLWlzIHJhaXNlZCB3aGVuIHRoZSBTU0wgQ29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQuIEluIFNTTCAzLjAgYW5kIFRMUyAxLjAsIHRoaXMKLW9ubHkgb2NjdXJzIGlmIGEgY2xvc3VyZSBhbGVydCBoYXMgb2NjdXJyZWQgaW4gdGhlIHByb3RvY29sLCBpLmUuIHRoZQotY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgY2xlYW5seS4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbmVjZXNzYXJpbHkKLW1lYW4gdGhhdCB0aGUgdHJhbnNwb3J0IGxheWVyIChlLmcuIGEgc29ja2V0KSBoYXMgYmVlbiBjbG9zZWQuCi0KLTxQPgotSXQgbWF5IHNlZW0gYSBsaXR0bGUgc3RyYW5nZSB0aGF0IHRoaXMgaXMgYW4gZXhjZXB0aW9uLCBidXQgaXQgZG9lcyBtYXRjaCBhbgotPGNvZGU+U1NMX0VSUk9SPC9jb2RlPiBjb2RlLCBhbmQgaXMgdmVyeSBjb252ZW5pZW50LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmV4Y2VwdGlvbiA8YSBuYW1lPSdsMmgtMTQyJz48dHQgY2xhc3M9J2V4Y2VwdGlvbic+V2FudFJlYWRFcnJvcjwvdHQ+PC9hPjwvYj4KLTxkZD4KLVRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZTsgdGhlIHNhbWUgSS9PIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGFnYWluCi1sYXRlciwgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMuIEFueSBJL08gbWV0aG9kIGNhbiBsZWFkIHRvIHRoaXMgc2luY2UgbmV3Ci1oYW5kc2hha2VzIGNhbiBvY2N1ciBhdCBhbnkgdGltZS4KLQotPFA+Ci1UaGUgd2FudGVkIHJlYWQgaXMgZm9yIDxpPmRpcnR5PC9pPiBkYXRhIHNlbnQgb3ZlciB0aGUgbmV0d29yaywgbm90IHRoZQotPGk+Y2xlYW48L2k+IGRhdGEgaW5zaWRlIHRoZSB0dW5uZWwuICBGb3IgYSBzb2NrZXQgYmFzZWQgU1NMIGNvbm5lY3Rpb24sCi08aT5yZWFkPC9pPiBtZWFucyBkYXRhIGNvbWluZyBhdCB1cyBvdmVyIHRoZSBuZXR3b3JrLiAgVW50aWwgdGhhdCByZWFkCi1zdWNjZWVkcywgdGhlIGF0dGVtcHRlZCA8dHQgY2xhc3M9Im1ldGhvZCI+T3BlblNTTC5TU0wuQ29ubmVjdGlvbi5yZWN2PC90dD4sCi08dHQgY2xhc3M9Im1ldGhvZCI+T3BlblNTTC5TU0wuQ29ubmVjdGlvbi5zZW5kPC90dD4sIG9yCi08dHQgY2xhc3M9Im1ldGhvZCI+T3BlblNTTC5TU0wuQ29ubmVjdGlvbi5kb19oYW5kc2hha2U8L3R0PiBpcyBwcmV2ZW50ZWQgb3IgaW5jb21wbGV0ZS4gWW91Ci1wcm9iYWJseSB3YW50IHRvIDx0dCBjbGFzcz0ibWV0aG9kIj5zZWxlY3QoKTwvdHQ+IG9uIHRoZSBzb2NrZXQgYmVmb3JlIHRyeWluZyBhZ2Fpbi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj5leGNlcHRpb24gPGEgbmFtZT0nbDJoLTE0Myc+PHR0IGNsYXNzPSdleGNlcHRpb24nPldhbnRXcml0ZUVycm9yPC90dD48L2E+PC9iPgotPGRkPgotU2VlIDx0dCBjbGFzcz0iZXhjZXB0aW9uIj5XYW50UmVhZEVycm9yPC90dD4uICBUaGUgc29ja2V0IHNlbmQgYnVmZmVyIG1heSBiZSB0b28gZnVsbCB0bwotd3JpdGUgbW9yZSBkYXRhLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPmV4Y2VwdGlvbiA8YSBuYW1lPSdsMmgtMTQ0Jz48dHQgY2xhc3M9J2V4Y2VwdGlvbic+V2FudFg1MDlMb29rdXBFcnJvcjwvdHQ+PC9hPjwvYj4KLTxkZD4KLVRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSBiZWNhdXNlIGFuIGFwcGxpY2F0aW9uIGNhbGxiYWNrIGhhcyBhc2tlZCB0byBiZQotY2FsbGVkIGFnYWluLiBUaGUgSS9PIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIGxhdGVyLCB3aXRoIHRoZSBzYW1lCi1hcmd1bWVudHMuIE5vdGU6IFRoaXMgd29uJ3Qgb2NjdXIgaW4gdGhpcyB2ZXJzaW9uLCBhcyB0aGVyZSBhcmUgbm8gc3VjaAotY2FsbGJhY2tzIGluIHRoaXMgdmVyc2lvbi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj5leGNlcHRpb24gPGEgbmFtZT0nbDJoLTE0NSc+PHR0IGNsYXNzPSdleGNlcHRpb24nPlN5c0NhbGxFcnJvcjwvdHQ+PC9hPjwvYj4KLTxkZD4KLVRoZSA8dHQgY2xhc3M9ImV4Y2VwdGlvbiI+U3lzQ2FsbEVycm9yPC90dD4gb2NjdXJzIHdoZW4gdGhlcmUncyBhbiBJL08gZXJyb3IgYW5kIE9wZW5TU0wncwotZXJyb3IgcXVldWUgZG9lcyBub3QgY29udGFpbiBhbnkgaW5mb3JtYXRpb24uIFRoaXMgY2FuIG1lYW4gdHdvIHRoaW5nczogQW4KLWVycm9yIGluIHRoZSB0cmFuc3BvcnQgcHJvdG9jb2wsIG9yIGFuIGVuZCBvZiBmaWxlIHRoYXQgdmlvbGF0ZXMgdGhlIHByb3RvY29sLgotVGhlIHBhcmFtZXRlciB0byB0aGUgZXhjZXB0aW9uIGlzIGFsd2F5cyBhIHBhaXIgPGNvZGU+KDx2YXI+ZXJybnVtPC92YXI+LAotPHZhcj5lcnJzdHI8L3Zhcj4pPC9jb2RlPi4KLTwvZGw+Ci0KLTxQPgotPEJSPjxIUj48SDQ+Rm9vdG5vdGVzPC9IND4KLTxETD4KLTxEVD48QSBOQU1FPSJmb290MTI3NiI+Li4uIHNvY2tldDwvQT48QQotIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwjdGV4Mmh0bWw0Ij48U1VQPjM8L1NVUD48L0E+PC9EVD4KLTxERD5BY3R1YWxseSwgYWxsIHRoYXQgaXMgcmVxdWlyZWQgaXMgYW4gb2JqZWN0Ci10aGF0IDxpPmJlaGF2ZXM8L2k+IGxpa2UgYSBzb2NrZXQsIHlvdSBjb3VsZCBldmVuIHVzZSBmaWxlcywgZXZlbiB0aG91Z2gKLWl0J2QgYmUgdHJpY2t5IHRvIGdldCB0aGUgaGFuZHNoYWtlcyByaWdodCEKLQotPC9ERD4KLTwvREw+Ci08cD48aHI+Ci08IS0tVGFibGUgb2YgQ2hpbGQtTGlua3MtLT4KLTxBIE5BTUU9IkNISUxEX0xJTktTIj48U1RST05HPlN1YnNlY3Rpb25zPC9TVFJPTkc+PC9BPgotCi08VUwgQ0xBU1M9IkNoaWxkTGlua3MiPgotPExJPjxBIE5BTUU9InRleDJodG1sMjg5IgotICBocmVmPSJvcGVuc3NsLWNvbnRleHQuaHRtbCI+My4zLjEgQ29udGV4dCBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDI5MCIKLSAgaHJlZj0ib3BlbnNzbC1jb25uZWN0aW9uLmh0bWwiPjMuMy4yIENvbm5lY3Rpb24gb2JqZWN0cyA8L0E+Ci08L1VMPgotPCEtLUVuZCBvZiBUYWJsZSBvZiBDaGlsZC1MaW5rcy0tPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXJhbmQuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY29udGV4dC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtcmFuZC5odG1sIj4zLjIgcmFuZCAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLmh0bWwiPjMgT3BlblNTTCAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY29udGV4dC5odG1sIj4zLjMuMSBDb250ZXh0IG9iamVjdHM8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvb3BlbnNzbC14NTA5Lmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLXg1MDkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxNTAzYS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLXg1MDkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zLjEuMSBYNTA5IG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjEuMSBYNTA5IG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0ib3BlbnNzbC14NTA5bmFtZS5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wteDUwOW5hbWUuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC14NTA5bmFtZS5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wteDUwOW5hbWUuaHRtbCI+My4xLjIgWDUwOU5hbWUgb2JqZWN0czwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDM+PEEgTkFNRT0iU0VDVElPTjAwMDQxMTAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4xLjEgWDUwOSBvYmplY3RzIAotPC9IMz4KLQotPFA+Ci1YNTA5IG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMzknPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfaXNzdWVyPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gYW4gWDUwOU5hbWUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY2F0ZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNDAnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfcHVia2V5PC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gYSBQS2V5IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC00MSc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9zZXJpYWxfbnVtYmVyPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gdGhlIGNlcnRpZmljYXRlIHNlcmlhbCBudW1iZXIuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTQyJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X3NpZ25hdHVyZV9hbGdvcml0aG08L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHVybiB0aGUgc2lnbmF0dXJlIGFsZ29yaXRobSB1c2VkIGluIHRoZSBjZXJ0aWZpY2F0ZS4gIElmIHRoZSBhbGdvcml0aG0gaXMKLXVuZGVmaW5lZCwgcmFpc2UgPGNvZGU+VmFsdWVFcnJvcjwvY29kZT4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTQzJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X3N1YmplY3Q8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHVybiBhbiBYNTA5TmFtZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzdWJqZWN0IG9mIHRoZSBjZXJ0aWZpY2F0ZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNDQnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfdmVyc2lvbjwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIHRoZSBjZXJ0aWZpY2F0ZSB2ZXJzaW9uLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC00NSc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9ub3RCZWZvcmU8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIHRpbWUgYmVmb3JlIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQuICBUaGUKLXN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUU6Ci08ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotPC9wcmU+PC9kbD4KLUlmIG5vIHZhbHVlIGV4aXN0cyBmb3IgdGhpcyBmaWVsZCwgPGNvZGU+Tm9uZTwvY29kZT4gaXMgcmV0dXJuZWQuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTQ2Jz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X25vdEFmdGVyPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gYSBzdHJpbmcgZ2l2aW5nIHRoZSB0aW1lIGFmdGVyIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQuICBUaGUKLXN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUU6Ci08ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotPC9wcmU+PC9kbD4KLUlmIG5vIHZhbHVlIGV4aXN0cyBmb3IgdGhpcyBmaWVsZCwgPGNvZGU+Tm9uZTwvY29kZT4gaXMgcmV0dXJuZWQuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTQ3Jz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X25vdEJlZm9yZTwvdHQ+PC9hPjwvYj4oPHZhcj53aGVuPC92YXI+KQotPGRkPgotQ2hhbmdlIHRoZSB0aW1lIGJlZm9yZSB3aGljaCB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHZhbGlkLiAgPHZhcj53aGVuPC92YXI+IGlzIGEKLXN0cmluZyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUU6Ci08ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotPC9wcmU+PC9kbD4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNDgnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfbm90QWZ0ZXI8L3R0PjwvYT48L2I+KDx2YXI+d2hlbjwvdmFyPikKLTxkZD4KLUNoYW5nZSB0aGUgdGltZSBhZnRlciB3aGljaCB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHZhbGlkLiAgPHZhcj53aGVuPC92YXI+IGlzIGEKLXN0cmluZyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUU6Ci08ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotPC9wcmU+PC9kbD4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNDknPjx0dCBjbGFzcz0nbWV0aG9kJz5nbXRpbWVfYWRqX25vdEJlZm9yZTwvdHQ+PC9hPjwvYj4oPHZhcj50aW1lPC92YXI+KQotPGRkPgotQWRqdXN0IHRoZSB0aW1lc3RhbXAgKGluIEdNVCkgd2hlbiB0aGUgY2VydGlmaWNhdGUgc3RhcnRzIGJlaW5nIHZhbGlkLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC01MCc+PHR0IGNsYXNzPSdtZXRob2QnPmdtdGltZV9hZGpfbm90QWZ0ZXI8L3R0PjwvYT48L2I+KDx2YXI+dGltZTwvdmFyPikKLTxkZD4KLUFkanVzdCB0aGUgdGltZXN0YW1wIChpbiBHTVQpIHdoZW4gdGhlIGNlcnRpZmljYXRlIHN0b3BzIGJlaW5nIHZhbGlkLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC01MSc+PHR0IGNsYXNzPSdtZXRob2QnPmhhc19leHBpcmVkPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1DaGVja3MgdGhlIGNlcnRpZmljYXRlJ3MgdGltZSBzdGFtcCBhZ2FpbnN0IGN1cnJlbnQgdGltZS4gUmV0dXJucyB0cnVlIGlmIHRoZQotY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNTInPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfaXNzdWVyPC90dD48L2E+PC9iPig8dmFyPmlzc3VlcjwvdmFyPikKLTxkZD4KLVNldCB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byA8dmFyPmlzc3VlcjwvdmFyPi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNTMnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfcHVia2V5PC90dD48L2E+PC9iPig8dmFyPnBrZXk8L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlIHRvIDx2YXI+cGtleTwvdmFyPi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNTQnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfc2VyaWFsX251bWJlcjwvdHQ+PC9hPjwvYj4oPHZhcj5zZXJpYWxubzwvdmFyPikKLTxkZD4KLVNldCB0aGUgc2VyaWFsIG51bWJlciBvZiB0aGUgY2VydGlmaWNhdGUgdG8gPHZhcj5zZXJpYWxubzwvdmFyPi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNTUnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfc3ViamVjdDwvdHQ+PC9hPjwvYj4oPHZhcj5zdWJqZWN0PC92YXI+KQotPGRkPgotU2V0IHRoZSBzdWJqZWN0IG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byA8dmFyPnN1YmplY3Q8L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTU2Jz48dHQgY2xhc3M9J21ldGhvZCc+c2V0X3ZlcnNpb248L3R0PjwvYT48L2I+KDx2YXI+dmVyc2lvbjwvdmFyPikKLTxkZD4KLVNldCB0aGUgY2VydGlmaWNhdGUgdmVyc2lvbiB0byA8dmFyPnZlcnNpb248L3Zhcj4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTU3Jz48dHQgY2xhc3M9J21ldGhvZCc+c2lnbjwvdHQ+PC9hPjwvYj4oPHZhcj5wa2V5LCBkaWdlc3Q8L3Zhcj4pCi08ZGQ+Ci1TaWduIHRoZSBjZXJ0aWZpY2F0ZSwgdXNpbmcgdGhlIGtleSA8dmFyPnBrZXk8L3Zhcj4gYW5kIHRoZSBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG0KLWlkZW50aWZpZWQgYnkgdGhlIHN0cmluZyA8dmFyPmRpZ2VzdDwvdmFyPi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNTgnPjx0dCBjbGFzcz0nbWV0aG9kJz5zdWJqZWN0X25hbWVfaGFzaDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIHRoZSBoYXNoIG9mIHRoZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC01OSc+PHR0IGNsYXNzPSdtZXRob2QnPmRpZ2VzdDwvdHQ+PC9hPjwvYj4oPHZhcj5kaWdlc3RfbmFtZTwvdmFyPikKLTxkZD4KLVJldHVybiBhIGRpZ2VzdCBvZiB0aGUgY2VydGlmaWNhdGUsIHVzaW5nIHRoZSA8dmFyPmRpZ2VzdF9uYW1lPC92YXI+IG1ldGhvZC4KLTx2YXI+ZGlnZXN0X25hbWU8L3Zhcj4gbXVzdCBiZSBhIHN0cmluZyBkZXNjcmliaW5nIGEgZGlnZXN0IGFsZ29yaXRobSBzdXBwb3J0ZWQKLWJ5IE9wZW5TU0wgKGJ5IEVWUF9nZXRfZGlnZXN0YnluYW1lLCBzcGVjaWZpY2FsbHkpLiAgRm9yIGV4YW1wbGUsCi08dHQgY2xhc3M9ImNvbnN0YW50Ij4ibWQ1IjwvdHQ+IG9yIDx0dCBjbGFzcz0iY29uc3RhbnQiPiJzaGExIjwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC02MCc+PHR0IGNsYXNzPSdtZXRob2QnPmFkZF9leHRlbnNpb25zPC90dD48L2E+PC9iPig8dmFyPmV4dGVuc2lvbnM8L3Zhcj4pCi08ZGQ+Ci1BZGQgdGhlIGV4dGVuc2lvbnMgaW4gdGhlIHNlcXVlbmNlIDx2YXI+ZXh0ZW5zaW9uczwvdmFyPiB0byB0aGUgY2VydGlmaWNhdGUuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTYxJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X2V4dGVuc2lvbl9jb3VudDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIHRoZSBudW1iZXIgb2YgZXh0ZW5zaW9ucyBvbiB0aGlzIGNlcnRpZmljYXRlLgotCi08c3BhbiBjbGFzcz0ndmVyc2lvbm5vdGUnPk5ldyBpbiB2ZXJzaW9uIDAuMTIuPC9zcGFuPgotCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTYyJz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X2V4dGVuc2lvbjwvdHQ+PC9hPjwvYj4oPHZhcj5pbmRleDwvdmFyPikKLTxkZD4KLVJldHJpZXZlIHRoZSBleHRlbnNpb24gb24gdGhpcyBjZXJ0aWZpY2F0ZSBhdCB0aGUgZ2l2ZW4gaW5kZXguCi0KLTxQPgotRXh0ZW5zaW9ucyBvbiBhIGNlcnRpZmljYXRlIGFyZSBrZXB0IGluIG9yZGVyLiAgVGhlIGluZGV4IHBhcmFtZXRlciBzZWxlY3RzCi13aGljaCBleHRlbnNpb24gd2lsbCBiZSByZXR1cm5lZC4gIFRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBiZSBhbiBYNTA5RXh0ZW5zaW9uCi1pbnN0YW5jZS4KLQotPHNwYW4gY2xhc3M9J3ZlcnNpb25ub3RlJz5OZXcgaW4gdmVyc2lvbiAwLjEyLjwvc3Bhbj4KLQotPC9kbD4KLQotPFA+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC14NTA5bmFtZS5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wteDUwOW5hbWUuaHRtbCI+My4xLjIgWDUwOU5hbWUgb2JqZWN0czwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9vcGVuc3NsLXg1MDluYW1lLmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLXg1MDluYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZTUzMmQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvb3BlbnNzbC14NTA5bmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMuMS4yIFg1MDlOYW1lIG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjEuMiBYNTA5TmFtZSBvYmplY3RzICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wteDUwOXJlcS5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9Im9wZW5zc2wteDUwOS5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wteDUwOS5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wteDUwOXJlcS5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wteDUwOS5odG1sIj4zLjEuMSBYNTA5IG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+My4xLjMgWDUwOVJlcSBvYmplY3RzPC9BPgotPGJyPjxocj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTxIMz48QSBOQU1FPSJTRUNUSU9OMDAwNDEyMDAwMDAwMDAwMDAwMDAwIj4mbmJzcDs8L0E+Ci08QlI+Ci0zLjEuMiBYNTA5TmFtZSBvYmplY3RzIAotPC9IMz4KLQotPFA+Ci1YNTA5TmFtZSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTYzJz48dHQgY2xhc3M9J21ldGhvZCc+aGFzaDwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIGFuIGludGVnZXIgZ2l2aW5nIHRoZSBmaXJzdCBmb3VyIGJ5dGVzIG9mIHRoZSBNRDUgZGlnZXN0IG9mIHRoZSBERVIKLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYW1lLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC02NCc+PHR0IGNsYXNzPSdtZXRob2QnPmRlcjwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIGEgc3RyaW5nIGdpdmluZyB0aGUgREVSIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYW1lLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC02NSc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9jb21wb25lbnRzPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gYSBsaXN0IG9mIHR3by10dXBsZXMgb2Ygc3RyaW5ncyBnaXZpbmcgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG5hbWUuCi08L2RsPgotCi08UD4KLVg1MDlOYW1lIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1lbWJlcnM6Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNjYnPjx0dCBjbGFzcz0nbWVtYmVyJz5jb3VudHJ5TmFtZTwvdHQ+PC9hPjwvYj4KLTxkZD4KLVRoZSBjb3VudHJ5IG9mIHRoZSBlbnRpdHkuIDxjb2RlPkM8L2NvZGU+IG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotPGNvZGU+Y291bnRyeU5hbWU8L2NvZGU+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC02Nyc+PHR0IGNsYXNzPSdtZW1iZXInPnN0YXRlT3JQcm92aW5jZU5hbWU8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1UaGUgc3RhdGUgb3IgcHJvdmluY2Ugb2YgdGhlIGVudGl0eS4gPGNvZGU+U1Q8L2NvZGU+IG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotPGNvZGU+c3RhdGVPclByb3ZpbmNlTmFtZTwvY29kZT63Ci08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTY4Jz48dHQgY2xhc3M9J21lbWJlcic+bG9jYWxpdHlOYW1lPC90dD48L2E+PC9iPgotPGRkPgotVGhlIGxvY2FsaXR5IG9mIHRoZSBlbnRpdHkuIDxjb2RlPkw8L2NvZGU+IG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotPGNvZGU+bG9jYWxpdHlOYW1lPC9jb2RlPi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNjknPjx0dCBjbGFzcz0nbWVtYmVyJz5vcmdhbml6YXRpb25OYW1lPC90dD48L2E+PC9iPgotPGRkPgotVGhlIG9yZ2FuaXphdGlvbiBuYW1lIG9mIHRoZSBlbnRpdHkuIDxjb2RlPk88L2NvZGU+IG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotPGNvZGU+b3JnYW5pemF0aW9uTmFtZTwvY29kZT4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTcwJz48dHQgY2xhc3M9J21lbWJlcic+b3JnYW5pemF0aW9uYWxVbml0TmFtZTwvdHQ+PC9hPjwvYj4KLTxkZD4KLVRoZSBvcmdhbml6YXRpb25hbCB1bml0IG9mIHRoZSBlbnRpdHkuIDxjb2RlPk9VPC9jb2RlPiBtYXkgYmUgdXNlZCBhcyBhbiBhbGlhcyBmb3IKLTxjb2RlPm9yZ2FuaXphdGlvbmFsVW5pdE5hbWU8L2NvZGU+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC03MSc+PHR0IGNsYXNzPSdtZW1iZXInPmNvbW1vbk5hbWU8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1UaGUgY29tbW9uIG5hbWUgb2YgdGhlIGVudGl0eS4gPGNvZGU+Q048L2NvZGU+IG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotPGNvZGU+Y29tbW9uTmFtZTwvY29kZT4uCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTcyJz48dHQgY2xhc3M9J21lbWJlcic+ZW1haWxBZGRyZXNzPC90dD48L2E+PC9iPgotPGRkPgotVGhlIGUtbWFpbCBhZGRyZXNzIG9mIHRoZSBlbnRpdHkuCi08L2RsPgotCi08UD4KLQotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08cD48aHI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC14NTA5Lmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC14NTA5cmVxLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+UHJldmlvdXM6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC14NTA5Lmh0bWwiPjMuMS4xIFg1MDkgb2JqZWN0czwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+VXA6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAgPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wteDUwOXJlcS5odG1sIj4zLjEuMyBYNTA5UmVxIG9iamVjdHM8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvb3BlbnNzbC14NTA5cmVxLmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLXg1MDlyZXEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODljOGY0Ni4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLXg1MDlyZXEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zLjEuMyBYNTA5UmVxIG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjEuMyBYNTA5UmVxIG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0ib3BlbnNzbC14NTA5c3RvcmUuaHRtbCI+Ci08TElOSyBSRUw9InByZXZpb3VzIiBocmVmPSJvcGVuc3NsLXg1MDluYW1lLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9Im9wZW5zc2wteDUwOXN0b3JlLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXg1MDluYW1lLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC14NTA5c3RvcmUuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXg1MDluYW1lLmh0bWwiPjMuMS4yIFg1MDlOYW1lIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXg1MDlzdG9yZS5odG1sIj4zLjEuNCBYNTA5U3RvcmUgb2JqZWN0czwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDM+PEEgTkFNRT0iU0VDVElPTjAwMDQxMzAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4xLjMgWDUwOVJlcSBvYmplY3RzIAotPC9IMz4KLQotPFA+Ci1YNTA5UmVxIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNzMnPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfcHVia2V5PC90dD48L2E+PC9iPigpCi08ZGQ+Ci1SZXR1cm4gYSBQS2V5IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTc0Jz48dHQgY2xhc3M9J21ldGhvZCc+Z2V0X3N1YmplY3Q8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHVybiBhbiBYNTA5TmFtZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzdWJqZWN0IG9mIHRoZSBjZXJ0aWZpY2F0ZS4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNzUnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfcHVia2V5PC90dD48L2E+PC9iPig8dmFyPnBrZXk8L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QgdG8gPHZhcj5wa2V5PC92YXI+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC03Nic+PHR0IGNsYXNzPSdtZXRob2QnPnNpZ248L3R0PjwvYT48L2I+KDx2YXI+cGtleSwgZGlnZXN0PC92YXI+KQotPGRkPgotU2lnbiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCwgdXNpbmcgdGhlIGtleSA8dmFyPnBrZXk8L3Zhcj4gYW5kIHRoZSBtZXNzYWdlIGRpZ2VzdAotYWxnb3JpdGhtIGlkZW50aWZpZWQgYnkgdGhlIHN0cmluZyA8dmFyPmRpZ2VzdDwvdmFyPi4KLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtNzcnPjx0dCBjbGFzcz0nbWV0aG9kJz52ZXJpZnk8L3R0PjwvYT48L2I+KDx2YXI+cGtleTwvdmFyPikKLTxkZD4KLVZlcmlmeSBhIGNlcnRpZmljYXRlIHJlcXVlc3QgdXNpbmcgdGhlIHB1YmxpYyBrZXkgPHZhcj5wa2V5PC92YXI+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC03OCc+PHR0IGNsYXNzPSdtZXRob2QnPnNldF92ZXJzaW9uPC90dD48L2E+PC9iPig8dmFyPnZlcnNpb248L3Zhcj4pCi08ZGQ+Ci1TZXQgdGhlIHZlcnNpb24gKFJGQyAyNDU5LCA0LjEuMi4xKSBvZiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCB0bwotPHZhcj52ZXJzaW9uPC92YXI+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC03OSc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF92ZXJzaW9uPC90dD48L2E+PC9iPigpCi08ZGQ+Ci1HZXQgdGhlIHZlcnNpb24gKFJGQyAyNDU5LCA0LjEuMi4xKSBvZiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdC4KLTwvZGw+Ci0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXg1MDluYW1lLmh0bWwiPjxpbWcgc3JjPSJwcmV2aW91cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJQcmV2aW91cyBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjxpbWcgc3JjPSJ1cC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJVcCBPbmUgTGV2ZWwiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC14NTA5c3RvcmUuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXg1MDluYW1lLmh0bWwiPjMuMS4yIFg1MDlOYW1lIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXg1MDlzdG9yZS5odG1sIj4zLjEuNCBYNTA5U3RvcmUgb2JqZWN0czwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9vcGVuc3NsLXg1MDlzdG9yZS5odG1sIGIvZG9jL2h0bWwvb3BlbnNzbC14NTA5c3RvcmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZiNTdiYy4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9vcGVuc3NsLXg1MDlzdG9yZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+My4xLjQgWDUwOVN0b3JlIG9iamVjdHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzLjEuNCBYNTA5U3RvcmUgb2JqZWN0cyAiPgotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InB5T3BlblNTTCI+Ci08TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci08TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci08bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9InB5T3BlblNTTC5jc3MiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLXBrZXkuaHRtbCI+Ci08TElOSyBSRUw9InByZXZpb3VzIiBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+Ci08TElOSyBSRUw9InVwIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0ib3BlbnNzbC1wa2V5Lmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXBrZXkuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+My4xLjMgWDUwOVJlcSBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgY3J5cHRvICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1wa2V5Lmh0bWwiPjMuMS41IFBLZXkgb2JqZWN0czwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDM+PEEgTkFNRT0iU0VDVElPTjAwMDQxNDAwMDAwMDAwMDAwMDAwMCI+Jm5ic3A7PC9BPgotPEJSPgotMy4xLjQgWDUwOVN0b3JlIG9iamVjdHMgCi08L0gzPgotCi08UD4KLVRoZSBYNTA5U3RvcmUgb2JqZWN0IGhhcyBjdXJyZW50bHkganVzdCBvbmUgbWV0aG9kOgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTgwJz48dHQgY2xhc3M9J21ldGhvZCc+YWRkX2NlcnQ8L3R0PjwvYT48L2I+KDx2YXI+Y2VydDwvdmFyPikKLTxkZD4KLUFkZCB0aGUgY2VydGlmaWNhdGUgPHZhcj5jZXJ0PC92YXI+IHRvIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZS4KLTwvZGw+Ci0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXBrZXkuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXg1MDlyZXEuaHRtbCI+My4xLjMgWDUwOVJlcSBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgY3J5cHRvICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1wa2V5Lmh0bWwiPjMuMS41IFBLZXkgb2JqZWN0czwvQT4KLTxocj4KLTxzcGFuIGNsYXNzPSJyZWxlYXNlLWluZm8iPlJlbGVhc2UgMC4xMy48L3NwYW4+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9vcGVuc3NsLmh0bWwgYi9kb2MvaHRtbC9vcGVuc3NsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYjhjNGYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvb3BlbnNzbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMgT3BlblNTTCAtLSBQeXRob24gaW50ZXJmYWNlIHRvIE9wZW5TU0wgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSIzIE9wZW5TU0wgLS0gUHl0aG9uIGludGVyZmFjZSB0byBPcGVuU1NMICI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9ImludGVybmFscy5odG1sIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9ImJ1aWxkaW5nLmh0bWwiPgotPExJTksgUkVMPSJ1cCIgSFJFRj0icHlPcGVuU1NMLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4KLTwvaGVhZD4KLTxib2R5PgotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0iYnVpbGRpbmctd2luZG93cy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLXdpbmRvd3MuaHRtbCI+Mi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGU8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIEhSRUY9InB5T3BlblNTTC5odG1sIj5QeXRob24gT3BlblNTTCBNYW51YWw8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAgPC9BPgotPGJyPjxocj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTxIMT48QSBOQU1FPSJTRUNUSU9OMDAwNDAwMDAwMDAwMDAwMDAwMDAwIj4mbmJzcDs8L0E+Ci08QlI+Ci0zIDx0dCBjbGFzcz0ibW9kdWxlIj5PcGVuU1NMPC90dD4gLS0gUHl0aG9uIGludGVyZmFjZSB0byBPcGVuU1NMIAotPC9IMT4KLQotPFA+Ci0KLQotPFA+Ci1UaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBoaWdoLWxldmVsIGludGVyZmFjZSB0byB0aGUgZnVuY3Rpb25zIGluIHRoZQotT3BlblNTTCBsaWJyYXJ5LiBUaGUgZm9sbG93aW5nIG1vZHVsZXMgYXJlIGRlZmluZWQ6Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMic+PHR0PmNyeXB0bzwvdHQ+PC9hPjwvYj4KLTxkZD4KLUdlbmVyaWMgY3J5cHRvZ3JhcGhpYyBtb2R1bGUuIE5vdGUgdGhhdCBpZiBhbnl0aGluZyBpcyBpbmNvbXBsZXRlLCB0aGlzIG1vZHVsZSBpcyEKLTwvZGw+Ci0KLTxQPgotPGRsPjxkdD48Yj48YSBuYW1lPSdsMmgtMyc+PHR0PnJhbmQ8L3R0PjwvYT48L2I+Ci08ZGQ+Ci1BbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5TU0wgcHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC00Jz48dHQ+U1NMPC90dD48L2E+PC9iPgotPGRkPgotQW4gaW50ZXJmYWNlIHRvIHRoZSBTU0wtc3BlY2lmaWMgcGFydHMgb2YgT3BlblNTTC4KLTwvZGw+Ci0KLTxQPgotCi08cD48aHI+Ci08IS0tVGFibGUgb2YgQ2hpbGQtTGlua3MtLT4KLTxBIE5BTUU9IkNISUxEX0xJTktTIj48U1RST05HPlN1YnNlY3Rpb25zPC9TVFJPTkc+PC9BPgotCi08VUwgQ0xBU1M9IkNoaWxkTGlua3MiPgotPExJPjxBIE5BTUU9InRleDJodG1sMTEyIgotICBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgPHR0IGNsYXNzPSJtb2R1bGUiPmNyeXB0bzwvdHQ+IC0tIEdlbmVyaWMgY3J5cHRvZ3JhcGhpYyBtb2R1bGUgPC9BPgotPFVMPgotPExJPjxBIE5BTUU9InRleDJodG1sMTEzIgotICBocmVmPSJvcGVuc3NsLXg1MDkuaHRtbCI+My4xLjEgWDUwOSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDExNCIKLSAgaHJlZj0ib3BlbnNzbC14NTA5bmFtZS5odG1sIj4zLjEuMiBYNTA5TmFtZSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDExNSIKLSAgaHJlZj0ib3BlbnNzbC14NTA5cmVxLmh0bWwiPjMuMS4zIFg1MDlSZXEgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMTYiCi0gIGhyZWY9Im9wZW5zc2wteDUwOXN0b3JlLmh0bWwiPjMuMS40IFg1MDlTdG9yZSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDExNyIKLSAgaHJlZj0ib3BlbnNzbC1wa2V5Lmh0bWwiPjMuMS41IFBLZXkgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMTgiCi0gIGhyZWY9Im9wZW5zc2wtcGtjczcuaHRtbCI+My4xLjYgUEtDUzcgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMTkiCi0gIGhyZWY9Im9wZW5zc2wtcGtjczEyLmh0bWwiPjMuMS43IFBLQ1MxMiBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDEyMCIKLSAgaHJlZj0ib3BlbnNzbC01MDlleHQuaHRtbCI+My4xLjggWDUwOUV4dGVuc2lvbiBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDEyMSIKLSAgaHJlZj0ib3BlbnNzbC1uZXRzY2FwZS1zcGtpLmh0bWwiPjMuMS45IE5ldHNjYXBlU1BLSSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDEyMiIKLSAgaHJlZj0iY3JsLmh0bWwiPjMuMS4xMCBDUkwgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMjMiCi0gIGhyZWY9InJldm9rZWQuaHRtbCI+My4xLjExIFJldm9rZWQgb2JqZWN0cyA8L0E+Ci08L1VMPgotPEJSPgotPExJPjxBIE5BTUU9InRleDJodG1sMTI0IgotICBocmVmPSJvcGVuc3NsLXJhbmQuaHRtbCI+My4yIDx0dCBjbGFzcz0ibW9kdWxlIj5yYW5kPC90dD4gLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBPcGVuU1NMIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMjUiCi0gIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPjMuMyA8dHQgY2xhc3M9Im1vZHVsZSI+U1NMPC90dD4gLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBTU0wtc3BlY2lmaWMgcGFydHMgb2YgT3BlblNTTCA8L0E+Ci08VUw+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxMjYiCi0gIGhyZWY9Im9wZW5zc2wtY29udGV4dC5odG1sIj4zLjMuMSBDb250ZXh0IG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTI3IgotICBocmVmPSJvcGVuc3NsLWNvbm5lY3Rpb24uaHRtbCI+My4zLjIgQ29ubmVjdGlvbiBvYmplY3RzIDwvQT4KLTwvVUw+PC9VTD4KLTwhLS1FbmQgb2YgVGFibGUgb2YgQ2hpbGQtTGlua3MtLT4KLQotPERJViBDTEFTUz0ibmF2aWdhdGlvbiI+Ci08cD48aHI+Ci08dGFibGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PEEgaHJlZj0iYnVpbGRpbmctd2luZG93cy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBIUkVGPSJweU9wZW5TU0wuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImJ1aWxkaW5nLXdpbmRvd3MuaHRtbCI+Mi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGU8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIEhSRUY9InB5T3BlblNTTC5odG1sIj5QeXRob24gT3BlblNTTCBNYW51YWw8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIGNyeXB0byAgPC9BPgotPGhyPgotPHNwYW4gY2xhc3M9InJlbGVhc2UtaW5mbyI+UmVsZWFzZSAwLjEzLjwvc3Bhbj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3ByZXZpb3VzLmdpZiBiL2RvYy9odG1sL3ByZXZpb3VzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUxZGExNi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9wcmV2aW91cy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9weU9wZW5TU0wuY3NzIGIvZG9jL2h0bWwvcHlPcGVuU1NMLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY3Y2Y3NC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9weU9wZW5TU0wuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIFRoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgaXMgdGhlIHN0YW5kYXJkIENTUyBnZW5lcmF0ZWQgYnkgTGFUZVgySFRNTCwKLSAqIHdpdGggdGhlICJlbXB0eSIgZGVjbGFyYXRpb25zIHJlbW92ZWQuCi0gKi8KLQotLyogQ2VudHVyeSBTY2hvb2xib29rIGZvbnQgaXMgdmVyeSBzaW1pbGFyIHRvIENvbXB1dGVyIE1vZGVybiBNYXRoOiBjbW1pICovCi0ubWF0aCAgICAgICAgICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiAiQ2VudHVyeSBTY2hvb2xib29rIiwgc2VyaWY7IH0KLS5tYXRoIGkgICAgICAgICAgICAgICAgIHsgZm9udC1mYW1pbHk6ICJDZW50dXJ5IFNjaG9vbGJvb2siLCBzZXJpZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgfQotLmJvbGRtYXRoICAgICAgICAgICAgICAgeyBmb250LWZhbWlseTogIkNlbnR1cnkgU2Nob29sYm9vayIsIHNlcmlmOwotICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCB9Ci0KLS8qIEltcGxlbWVudCBib3RoIGZpeGVkLXNpemUgYW5kIHJlbGF0aXZlIHNpemVzOiAqLwotc21hbGwueHRpbnkgICAgICAgICAgICAgeyBmb250LXNpemUgOiB4eC1zbWFsbCB9Ci1zbWFsbC50aW55ICAgICAgICAgICAgICB7IGZvbnQtc2l6ZSA6IHgtc21hbGwgfQotc21hbGwuc2NyaXB0c2l6ZSAgICAgICAgeyBmb250LXNpemUgOiBzbWFsbGVyIH0KLXNtYWxsLmZvb3Rub3Rlc2l6ZSAgICAgIHsgZm9udC1zaXplIDogc21hbGwgfQotYmlnLnhsYXJnZSAgICAgICAgICAgICAgeyBmb250LXNpemUgOiBsYXJnZSB9Ci1iaWcueHhsYXJnZSAgICAgICAgICAgICB7IGZvbnQtc2l6ZSA6IHgtbGFyZ2UgfQotYmlnLmh1Z2UgICAgICAgICAgICAgICAgeyBmb250LXNpemUgOiBsYXJnZXIgfQotYmlnLnhodWdlICAgICAgICAgICAgICAgeyBmb250LXNpemUgOiB4eC1sYXJnZSB9Ci0KLS8qCi0gKiBEb2N1bWVudC1zcGVjaWZpYyBzdHlsZXMgY29tZSBuZXh0OwotICogdGhlc2UgYXJlIGFkZGVkIGZvciB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24uCi0gKgotICogTm90ZSB0aGF0IHRoZSBzaXplIHNwZWNpZmljYXRpb25zIGZvciB0aGUgSCogZWxlbWVudHMgYXJlIGJlY2F1c2UKLSAqIE5ldHNjYXBlIG9uIFNvbGFyaXMgb3RoZXJ3aXNlIGRvZXNuJ3QgZ2V0IGl0IHJpZ2h0OyB0aGV5IGFsbCBlbmQgdXAKLSAqIHRoZSBub3JtYWwgdGV4dCBzaXplLgotICovCi0KLWJvZHkgICAgICAgICAgICAgICAgICAgIHsgY29sb3I6ICMwMDAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH0KLQotYTphY3RpdmUgICAgICAgICAgICAgICAgeyBjb2xvcjogI2ZmMDAwMDsgfQotYTp2aXNpdGVkICAgICAgICAgICAgICAgeyBjb2xvcjogIzU1MWE4YjsgfQotYTpsaW5rICAgICAgICAgICAgICAgICAgeyBjb2xvcjogIzAwMDBiYjsgfQotCi1oMSwgaDIsIGgzLCBoNCwgaDUsIGg2ICB7IGZvbnQtZmFtaWx5OiBhdmFudGdhcmRlLCBzYW5zLXNlcmlmOwotICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCB9Ci1oMSAgICAgICAgICAgICAgICAgICAgICB7IGZvbnQtc2l6ZTogMTgwJSB9Ci1oMiAgICAgICAgICAgICAgICAgICAgICB7IGZvbnQtc2l6ZTogMTUwJSB9Ci1oMywgaDQgICAgICAgICAgICAgICAgICB7IGZvbnQtc2l6ZTogMTIwJSB9Ci1jb2RlLCB0dCAgICAgICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgfQotdmFyICAgICAgICAgICAgICAgICAgICAgeyBmb250LWZhbWlseTogdGltZXMsIHNlcmlmOwotICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWwgfQotCi0ubmF2aWdhdGlvbiB0ZCAgICAgICAgICB7IGJhY2tncm91bmQtY29sb3I6ICM5OWNjZmY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogYXZhbnRnYXJkZSwgc2Fucy1zZXJpZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMTAlIH0KLQotLnJlbGVhc2UtaW5mbyAgICAgICAgICAgeyBmb250LXN0eWxlOiBpdGFsaWM7IH0KLQotLnRpdGxlZ3JhcGhpYyAgICAgICAgICAgeyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB9Ci0KLS52ZXJiYXRpbSAgICAgICAgICAgICAgIHsgY29sb3I6ICMwMDAwOGIgfQotCi0uZW1haWwgICAgICAgICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBhdmFudGdhcmRlLCBzYW5zLXNlcmlmIH0KLS5taW1ldHlwZSAgICAgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IGF2YW50Z2FyZGUsIHNhbnMtc2VyaWYgfQotLm5ld3Nncm91cCAgICAgICAgICAgICAgeyBmb250LWZhbWlseTogYXZhbnRnYXJkZSwgc2Fucy1zZXJpZiB9Ci0udXJsICAgICAgICAgICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBhdmFudGdhcmRlLCBzYW5zLXNlcmlmIH0KLS5maWxlICAgICAgICAgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IGF2YW50Z2FyZGUsIHNhbnMtc2VyaWYgfQotCi0udGFibGVoZWFkZXIgICAgICAgICAgICB7IGJhY2tncm91bmQtY29sb3I6ICM5OWNjZmY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBhdmFudGdhcmRlLCBzYW5zLXNlcmlmOyB9Ci0KLS5yZWZjb3VudC1pbmZvICAgICAgICAgIHsgZm9udC1zdHlsZTogaXRhbGljIH0KLS5yZWZjb3VudC1pbmZvIC52YWx1ZSAgIHsgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDA2NjAwIH0KLQotLyoKLSAqIFNvbWUgZGVjb3JhdGlvbiBmb3IgdGhlICJTZWUgYWxzbzoiIGJsb2NrcywgaW4gcGFydCBpbnNwaXJlZCBieSBzb21lIG9mCi0gKiB0aGUgc3R5bGluZyBvbiBMYXJzIE1hcml1cyBHYXJzaG9sJ3MgWFNBIHBhZ2VzLgotICogKFRoZSBibHVlIGluIHRoZSBuYXZpZ2F0aW9uIGJhcnMgaXMgIzk5Q0NGRi4pCi0gKi8KLS5zZWVhbHNvICAgICAgICAgICAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmFmMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiB0aGluIHNvbGlkIGJsYWNrOwotICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHQgfQotCi0uc2VlYWxzbyAuaGVhZGluZyAgICAgICB7IGZvbnQtc2l6ZTogMTEwJSB9Ci0KLS8qCi0gKiBDbGFzcyAnYXZhaWxhYmlsaXR5JyBpcyB1c2VkIGZvciBtb2R1bGUgYXZhaWxhYmlsaXR5IHN0YXRlbWVudHMgYXQKLSAqIHRoZSB0b3Agb2YgbW9kdWxlcy4KLSAqLwotLmF2YWlsYWJpbGl0eSAucGxhdGZvcm0geyBmb250LXdlaWdodDogYm9sZCB9CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9weU9wZW5TU0wuaG93IGIvZG9jL2h0bWwvcHlPcGVuU1NMLmhvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UxMjA5Yi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9weU9wZW5TU0wuaG93CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotKysrIHBlcmwgL2hvbWUvZXhhcmt1bi9Qcm9qZWN0cy9weU9wZW5TU0wvYnJhbmNoZXMvcmVsZWFzZS0wLjEzL2RvYy90b29scy9ub2RlMmxhYmVsLnBsICouaHRtbApkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvcHlPcGVuU1NMLmh0bWwgYi9kb2MvaHRtbC9weU9wZW5TU0wuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA3MGE4MC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9weU9wZW5TU0wuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5QeXRob24gT3BlblNTTCBNYW51YWw8L3RpdGxlPgotPE1FVEEgTkFNRT0iZGVzY3JpcHRpb24iIENPTlRFTlQ9IlB5dGhvbiBPcGVuU1NMIE1hbnVhbCI+Ci08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0icHlPcGVuU1NMIj4KLTxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLTxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KLTxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0icHlPcGVuU1NMLmNzcyI+Ci08TElOSyBSRUw9Im5leHQiIGhyZWY9ImNvbnRlbnRzLmh0bWwiPgotPC9oZWFkPgotPGJvZHk+Ci08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJuZXh0LmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9Ik5leHQgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC90ZD4KLTx0ZD48QSBocmVmPSJjb250ZW50cy5odG1sIj48aW1nIHNyYz0iY29udGVudHMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iQ29udGVudHMiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJjb250ZW50cy5odG1sIj5Db250ZW50czwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08UD4KLQotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KLTxjZW50ZXI+Ci08aDE+UHl0aG9uIE9wZW5TU0wgTWFudWFsPC9oMT4KLTxwPjxiPjxmb250IHNpemU9JysyJz5KZWFuLVBhdWwgQ2FsZGVyb25lPC9mb250PjwvYj48L3A+Ci08cD48c3BhbiBjbGFzcz0iZW1haWwiPmV4YXJrdW5AdHdpc3RlZG1hdHJpeC5jb208L3NwYW4+PC9wPgotPHA+Ci08L2NlbnRlcj4KLTwvZGl2PgotCi08UD4KLQotPEgzPkFic3RyYWN0OjwvSDM+Ci08RElWIENMQVNTPSJBQlNUUkFDVCI+Ci0KLVRoaXMgbW9kdWxlIGlzIGEgcmF0aGVyIHRoaW4gd3JhcHBlciBhcm91bmQgKGEgc3Vic2V0IG9mKSB0aGUgT3BlblNTTCBsaWJyYXJ5LgotV2l0aCB0aGluIHdyYXBwZXIgSSBtZWFuIHRoYXQgYSBsb3Qgb2YgdGhlIG9iamVjdCBtZXRob2RzIGRvIG5vdGhpbmcgbW9yZSB0aGFuCi1jYWxsaW5nIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBpbiB0aGUgT3BlblNTTCBsaWJyYXJ5LgotPC9ESVY+Ci08UD4KLQotPFA+Ci0KLTxwPjxocj4KLTwhLS1UYWJsZSBvZiBDaGlsZC1MaW5rcy0tPgotCi0KLTxVTCBDTEFTUz0iQ2hpbGRMaW5rcyI+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWw4IgotICBocmVmPSJjb250ZW50cy5odG1sIj5Db250ZW50czwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDkiCi0gIGhyZWY9ImludHJvLmh0bWwiPjEgSW50cm9kdWN0aW9uIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDEwIgotICBocmVmPSJidWlsZGluZy5odG1sIj4yIEJ1aWxkaW5nIGFuZCBJbnN0YWxsaW5nIDwvQT4KLTxVTD4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDExIgotICBocmVmPSJidWlsZGluZy11bml4Lmh0bWwiPjIuMSBCdWlsZGluZyB0aGUgTW9kdWxlIG9uIGEgVW5peCBTeXN0ZW0gPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTIiCi0gIGhyZWY9ImJ1aWxkaW5nLXdpbmRvd3MuaHRtbCI+Mi4yIEJ1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBXaW5kb3dzIFN5c3RlbSA8L0E+Ci08L1VMPgotPEJSPgotPExJPjxBIE5BTUU9InRleDJodG1sMTMiCi0gIGhyZWY9Im9wZW5zc2wuaHRtbCI+MyA8dHQgY2xhc3M9Im1vZHVsZSI+T3BlblNTTDwvdHQ+IC0tIFB5dGhvbiBpbnRlcmZhY2UgdG8gT3BlblNTTCA8L0E+Ci08VUw+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwxNCIKLSAgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+My4xIDx0dCBjbGFzcz0ibW9kdWxlIj5jcnlwdG88L3R0PiAtLSBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlIDwvQT4KLTxVTD4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE1IgotICBocmVmPSJvcGVuc3NsLXg1MDkuaHRtbCI+My4xLjEgWDUwOSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE2IgotICBocmVmPSJvcGVuc3NsLXg1MDluYW1lLmh0bWwiPjMuMS4yIFg1MDlOYW1lIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTciCi0gIGhyZWY9Im9wZW5zc2wteDUwOXJlcS5odG1sIj4zLjEuMyBYNTA5UmVxIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMTgiCi0gIGhyZWY9Im9wZW5zc2wteDUwOXN0b3JlLmh0bWwiPjMuMS40IFg1MDlTdG9yZSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDE5IgotICBocmVmPSJvcGVuc3NsLXBrZXkuaHRtbCI+My4xLjUgUEtleSBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDIwIgotICBocmVmPSJvcGVuc3NsLXBrY3M3Lmh0bWwiPjMuMS42IFBLQ1M3IG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMjEiCi0gIGhyZWY9Im9wZW5zc2wtcGtjczEyLmh0bWwiPjMuMS43IFBLQ1MxMiBvYmplY3RzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDIyIgotICBocmVmPSJvcGVuc3NsLTUwOWV4dC5odG1sIj4zLjEuOCBYNTA5RXh0ZW5zaW9uIG9iamVjdHMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMjMiCi0gIGhyZWY9Im9wZW5zc2wtbmV0c2NhcGUtc3BraS5odG1sIj4zLjEuOSBOZXRzY2FwZVNQS0kgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwyNCIKLSAgaHJlZj0iY3JsLmh0bWwiPjMuMS4xMCBDUkwgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwyNSIKLSAgaHJlZj0icmV2b2tlZC5odG1sIj4zLjEuMTEgUmV2b2tlZCBvYmplY3RzIDwvQT4KLTwvVUw+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwyNiIKLSAgaHJlZj0ib3BlbnNzbC1yYW5kLmh0bWwiPjMuMiA8dHQgY2xhc3M9Im1vZHVsZSI+cmFuZDwvdHQ+IC0tIEFuIGludGVyZmFjZSB0byB0aGUgT3BlblNTTCBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMjciCi0gIGhyZWY9Im9wZW5zc2wtc3NsLmh0bWwiPjMuMyA8dHQgY2xhc3M9Im1vZHVsZSI+U1NMPC90dD4gLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBTU0wtc3BlY2lmaWMgcGFydHMgb2YgT3BlblNTTCA8L0E+Ci08VUw+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwyOCIKLSAgaHJlZj0ib3BlbnNzbC1jb250ZXh0Lmh0bWwiPjMuMy4xIENvbnRleHQgb2JqZWN0cyA8L0E+Ci08TEk+PEEgTkFNRT0idGV4Mmh0bWwyOSIKLSAgaHJlZj0ib3BlbnNzbC1jb25uZWN0aW9uLmh0bWwiPjMuMy4yIENvbm5lY3Rpb24gb2JqZWN0cyA8L0E+Ci08L1VMPgotPC9VTD4KLTxCUj4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDMwIgotICBocmVmPSJpbnRlcm5hbHMuaHRtbCI+NCBJbnRlcm5hbHMgPC9BPgotPFVMPgotPExJPjxBIE5BTUU9InRleDJodG1sMzEiCi0gIGhyZWY9ImV4Y2VwdGlvbnMuaHRtbCI+NC4xIEV4Y2VwdGlvbnMgPC9BPgotPExJPjxBIE5BTUU9InRleDJodG1sMzIiCi0gIGhyZWY9ImNhbGxiYWNrcy5odG1sIj40LjIgQ2FsbGJhY2tzIDwvQT4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDMzIgotICBocmVmPSJzb2NrZXQtbWV0aG9kcy5odG1sIj40LjMgQWNlc3NpbmcgU29ja2V0IE1ldGhvZHMgPC9BPgotPC9VTD4KLTxCUj4KLTxMST48QSBOQU1FPSJ0ZXgyaHRtbDM0IgotICBocmVmPSJhYm91dC5odG1sIj5BYm91dCB0aGlzIGRvY3VtZW50IC4uLjwvQT4KLTwvVUw+Ci08IS0tRW5kIG9mIFRhYmxlIG9mIENoaWxkLUxpbmtzLS0+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5OZXh0OjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImNvbnRlbnRzLmh0bWwiPkNvbnRlbnRzPC9BPgotPGhyPgotPHNwYW4gY2xhc3M9InJlbGVhc2UtaW5mbyI+UmVsZWFzZSAwLjEzLjwvc3Bhbj4KLTwvRElWPgotPCEtLUVuZCBvZiBOYXZpZ2F0aW9uIFBhbmVsLS0+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3Jldm9rZWQuaHRtbCBiL2RvYy9odG1sL3Jldm9rZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQyMzQ2NS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9yZXZva2VkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+My4xLjExIFJldm9rZWQgb2JqZWN0cyA8L3RpdGxlPgotPE1FVEEgTkFNRT0iZGVzY3JpcHRpb24iIENPTlRFTlQ9IjMuMS4xMSBSZXZva2VkIG9iamVjdHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9ImNybC5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPgotPExJTksgUkVMPSJuZXh0IiBocmVmPSJvcGVuc3NsLXJhbmQuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9ImNybC5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj48aW1nIHNyYz0idXAuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iVXAgT25lIExldmVsIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxBIGhyZWY9Im9wZW5zc2wtcmFuZC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImNybC5odG1sIj4zLjEuMTAgQ1JMIG9iamVjdHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9Im9wZW5zc2wtY3J5cHRvLmh0bWwiPjMuMSBjcnlwdG8gIDwvQT4KLTxiIGNsYXNzPSJuYXZsYWJlbCI+TmV4dDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLXJhbmQuaHRtbCI+My4yIHJhbmQgIDwvQT4KLTxicj48aHI+Ci08L0RJVj4KLTwhLS1FbmQgb2YgTmF2aWdhdGlvbiBQYW5lbC0tPgotCi08SDM+PEEgTkFNRT0iU0VDVElPTjAwMDQxMTEwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTMuMS4xMSBSZXZva2VkIG9iamVjdHMgCi08L0gzPgotCi08UD4KLVJldm9rZWQgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMTAnPjx0dCBjbGFzcz0nbWV0aG9kJz5hbGxfcmVhc29uczwvdHQ+PC9hPjwvYj4oKQotPGRkPgotUmV0dXJuIGEgbGlzdCBvZiBhbGwgc3VwcG9ydGVkIHJlYXNvbnMuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTExMSc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9yZWFzb248L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHVybiB0aGUgcmV2b2NhdGlvbiByZWFzb24gYXMgYSBzdHIuICBDYW4gYmUKLU5vbmUsIHdoaWNoIGRpZmZlcnMgZnJvbSAiVW5zcGVjaWZpZWQiLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMTInPjx0dCBjbGFzcz0nbWV0aG9kJz5nZXRfcmV2X2RhdGU8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHVybiB0aGUgcmV2b2NhdGlvbiBkYXRlIGFzIGEgc3RyLgotVGhlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUUuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTExMyc+PHR0IGNsYXNzPSdtZXRob2QnPmdldF9zZXJpYWw8L3R0PjwvYT48L2I+KCkKLTxkZD4KLVJldHVybiBhIHN0ciBjb250YWluaW5nIGEgaGV4IG51bWJlciBvZiB0aGUgc2VyaWFsIG9mIHRoZSByZXZva2VkIGNlcnRpZmljYXRlLgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMTQnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfcmVhc29uPC90dD48L2E+PC9iPig8dmFyPnJlYXNvbjwvdmFyPikKLTxkZD4KLVNldCB0aGUgcmV2b2NhdGlvbiByZWFzb24uICA8dmFyPnJlYXNvbjwvdmFyPiBtdXN0Ci1iZSBOb25lIG9yIGEgc3RyaW5nLCBidXQgdGhlIHZhbHVlcyBhcmUgbGltaXRlZC4gIAotU3BhY2VzIGFuZCBjYXNlIGFyZSBpZ25vcmVkLiAgU2VlIDx0dCBjbGFzcz0ibWV0aG9kIj5hbGxfcmVhc29uczwvdHQ+LgotPC9kbD4KLQotPFA+Ci08ZGw+PGR0PjxiPjxhIG5hbWU9J2wyaC0xMTUnPjx0dCBjbGFzcz0nbWV0aG9kJz5zZXRfcmV2X2RhdGU8L3R0PjwvYT48L2I+KDx2YXI+ZGF0ZTwvdmFyPikKLTxkZD4KLVNldCB0aGUgcmV2b2NhdGlvbiBkYXRlLgotVGhlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUUuCi08L2RsPgotCi08UD4KLTxkbD48ZHQ+PGI+PGEgbmFtZT0nbDJoLTExNic+PHR0IGNsYXNzPSdtZXRob2QnPnNldF9zZXJpYWw8L3R0PjwvYT48L2I+KDx2YXI+c2VyaWFsPC92YXI+KQotPGRkPgotPHZhcj5zZXJpYWw8L3Zhcj4gaXMgYSBzdHJpbmcgY29udGFpbmluZyBhIGhleCBudW1iZXIgb2YgdGhlIHNlcmlhbCBvZiB0aGUgcmV2b2tlZCBjZXJ0aWZpY2F0ZS4KLTwvZGw+Ci0KLTxQPgotCi08RElWIENMQVNTPSJuYXZpZ2F0aW9uIj4KLTxwPjxocj4KLTx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIyIj4KLTx0cj4KLTx0ZD48QSBocmVmPSJjcmwuaHRtbCI+PGltZyBzcmM9InByZXZpb3VzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlByZXZpb3VzIFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQ+PEEgaHJlZj0ib3BlbnNzbC1jcnlwdG8uaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJvcGVuc3NsLXJhbmQuaHRtbCI+PGltZyBzcmM9Im5leHQuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iTmV4dCBQYWdlIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5QeXRob24gT3BlblNTTCBNYW51YWw8L3RkPgotPHRkPjxBIGhyZWY9ImNvbnRlbnRzLmh0bWwiPjxpbWcgc3JjPSJjb250ZW50cy5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJDb250ZW50cyIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08dGQ+PGltZyBzcmM9ImJsYW5rLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IiIgd2lkdGg9IjMyIj48L3RkPgotPC90cj48L3RhYmxlPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5QcmV2aW91czo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJjcmwuaHRtbCI+My4xLjEwIENSTCBvYmplY3RzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJvcGVuc3NsLWNyeXB0by5odG1sIj4zLjEgY3J5cHRvICA8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0ib3BlbnNzbC1yYW5kLmh0bWwiPjMuMiByYW5kICA8L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc29ja2V0LW1ldGhvZHMuaHRtbCBiL2RvYy9odG1sL3NvY2tldC1tZXRob2RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YTA4MWYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc29ja2V0LW1ldGhvZHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT40LjMgQWNlc3NpbmcgU29ja2V0IE1ldGhvZHMgPC90aXRsZT4KLTxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSI0LjMgQWNlc3NpbmcgU29ja2V0IE1ldGhvZHMgIj4KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJweU9wZW5TU0wiPgotPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgotPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotPGxpbmsgcmVsPSJTVFlMRVNIRUVUIiBocmVmPSJweU9wZW5TU0wuY3NzIj4KLTxMSU5LIFJFTD0icHJldmlvdXMiIGhyZWY9ImNhbGxiYWNrcy5odG1sIj4KLTxMSU5LIFJFTD0idXAiIGhyZWY9ImludGVybmFscy5odG1sIj4KLTxMSU5LIFJFTD0ibmV4dCIgaHJlZj0iYWJvdXQuaHRtbCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9ImNhbGxiYWNrcy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJpbnRlcm5hbHMuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJhYm91dC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImNhbGxiYWNrcy5odG1sIj40LjIgQ2FsbGJhY2tzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJpbnRlcm5hbHMuaHRtbCI+NCBJbnRlcm5hbHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iYWJvdXQuaHRtbCI+QWJvdXQgdGhpcyBkb2N1bWVudCAuLi48L0E+Ci08YnI+PGhyPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPEgyPjxBIE5BTUU9IlNFQ1RJT04wMDA1MzAwMDAwMDAwMDAwMDAwMDAiPiZuYnNwOzwvQT4KLTxCUj4KLTQuMyBBY2Vzc2luZyBTb2NrZXQgTWV0aG9kcyAKLTwvSDI+Ci0KLTxQPgotV2UgcXVpY2tseSBzYXcgdGhlIGJlbmVmaXQgb2Ygd3JhcHBpbmcgc29ja2V0IG1ldGhvZHMgaW4gdGhlCi08dHQgY2xhc3M9ImNsYXNzIj5TU0wuQ29ubmVjdGlvbjwvdHQ+IGNsYXNzLCBmb3IgYW4gZWFzeSB0cmFuc2l0aW9uIGludG8gdXNpbmcgU1NMLiBUaGUKLXByb2JsZW0gaGVyZSBpcyB0aGF0IHRoZSA8dHQgY2xhc3M9Im1vZHVsZSI+c29ja2V0PC90dD4gbW9kdWxlIGxhY2tzIGEgQyBBUEksIGFuZCBhbGwgdGhlCi1tZXRob2RzIGFyZSBkZWNsYXJlZCBzdGF0aWMuIE9uZSBhcHByb2FjaCB3b3VsZCBiZSB0byBoYXZlIDx0dCBjbGFzcz0ibW9kdWxlIj5PcGVuU1NMPC90dD4gYXMKLWEgc3VibW9kdWxlIHRvIHRoZSA8dHQgY2xhc3M9Im1vZHVsZSI+c29ja2V0PC90dD4gbW9kdWxlLCBwbGFjaW5nIGFsbCB0aGUgY29kZSBpbgotPHNwYW4gY2xhc3M9ImZpbGUiPnNvY2tldG1vZHVsZS5jPC9zcGFuPiwgYnV0IHRoaXMgaXMgb2J2aW91c2x5IG5vdCBhIGdvb2Qgc29sdXRpb24sIHNpbmNlIHlvdQotbWlnaHQgbm90IHdhbnQgdG8gaW1wb3J0IHRvbm5lcyBvZiBleHRyYSBzdHVmZiB5b3UncmUgbm90IGdvaW5nIHRvIHVzZSB3aGVuCi1pbXBvcnRpbmcgdGhlIDx0dCBjbGFzcz0ibW9kdWxlIj5zb2NrZXQ8L3R0PiBtb2R1bGUuIFRoZSBvdGhlciBhcHByb2FjaCBpcyB0byBzb21laG93IGdldCBhCi1wb2ludGVyIHRvIHRoZSBtZXRob2QgdG8gYmUgY2FsbGVkLCBlaXRoZXIgdGhlIEMgZnVuY3Rpb24sIG9yIGEgY2FsbGFibGUgUHl0aG9uCi1vYmplY3QuIFRoaXMgaXMgbm90IHJlYWxseSBhIGdvb2Qgc29sdXRpb24gZWl0aGVyLCBzaW5jZSB0aGVyZSdzIGEgbG90IG9mCi1sb29rdXBzIGludm9sdmVkLgotCi08UD4KLVRoZSB3YXkgaXQgd29ya3MgaXMgdGhhdCB5b3UgaGF2ZSB0byBzdXBwbHkgYSBgYDx0dCBjbGFzcz0iY2xhc3MiPnNvY2tldDwvdHQ+LWxpa2UnJyB0cmFuc3BvcnQKLW9iamVjdCB0byB0aGUgPHR0IGNsYXNzPSJjbGFzcyI+U1NMLkNvbm5lY3Rpb248L3R0Pi4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgdGhpcyBvYmplY3QgaXMKLXRoYXQgaXQgaGFzIGEgPHR0IGNsYXNzPSJtZXRob2QiPmZpbGVubygpPC90dD4gbWV0aG9kIHRoYXQgcmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvciB0aGF0J3MKLXZhbGlkIGF0IHRoZSBDIGxldmVsIChpLmUuIHlvdSBjYW4gdXNlIHRoZSBzeXN0ZW0gY2FsbHMgcmVhZCBhbmQgd3JpdGUpLiBJZiB5b3UKLXdhbnQgdG8gdXNlIHRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+Y29ubmVjdCgpPC90dD4gb3IgPHR0IGNsYXNzPSJtZXRob2QiPmFjY2VwdCgpPC90dD4gbWV0aG9kcyBvZiB0aGUKLTx0dCBjbGFzcz0iY2xhc3MiPlNTTC5Db25uZWN0aW9uPC90dD4gb2JqZWN0LCB0aGUgdHJhbnNwb3J0IG9iamVjdCBoYXMgdG8gc3VwcGx5IHN1Y2gKLW1ldGhvZHMgdG9vLiBBcGFydCBmcm9tIHRoZW0sIGFueSBtZXRob2QgbG9va3VwcyBpbiB0aGUgPHR0IGNsYXNzPSJjbGFzcyI+U1NMLkNvbm5lY3Rpb248L3R0Pgotb2JqZWN0IHRoYXQgZmFpbCBhcmUgcGFzc2VkIG9uIHRvIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCBvYmplY3QuCi0KLTxQPgotRnV0dXJlIGNoYW5nZXMgbWlnaHQgYmUgdG8gYWxsb3cgUHl0aG9uLWxldmVsIHRyYW5zcG9ydCBvYmplY3RzLCB0aGF0IGluc3RlYWQKLW9mIGhhdmluZyA8dHQgY2xhc3M9Im1ldGhvZCI+ZmlsZW5vKCk8L3R0PiBtZXRob2RzLCBoYXZlIDx0dCBjbGFzcz0ibWV0aG9kIj5yZWFkKCk8L3R0PiBhbmQgPHR0IGNsYXNzPSJtZXRob2QiPndyaXRlKCk8L3R0PgotbWV0aG9kcywgc28gbW9yZSBhZHZhbmNlZCBmZWF0dXJlcyBvZiBQeXRob24gY2FuIGJlIHVzZWQuIFRoaXMgd291bGQgcHJvYmFibHkKLWVudGFpbCBzb21lIHNvcnQgb2YgT3BlblNTTCBgYEJJT3MnJywgYnV0IGNvbnZlcnRpbmcgUHl0aG9uIHN0cmluZ3MgYmFjayBhbmQKLWZvcnRoIGlzIGV4cGVuc2l2ZSwgc28gdGhpcyBzaG91bGRuJ3QgYmUgdXNlZCB1bmxlc3MgbmVjZXNzYXJ5LiBPdGhlciBuaWNlCi10aGluZ3Mgd291bGQgYmUgdG8gYmUgYWJsZSB0byBwYXNzIGluIGRpZmZlcmVudCB0cmFuc3BvcnQgb2JqZWN0cyBmb3IgcmVhZGluZwotYW5kIHdyaXRpbmcsIGJ1dCB0aGVuIHRoZSA8dHQgY2xhc3M9Im1ldGhvZCI+ZmlsZW5vKCk8L3R0PiBtZXRob2Qgb2YgPHR0IGNsYXNzPSJjbGFzcyI+U1NMLkNvbm5lY3Rpb248L3R0PgotYmVjb21lcyB2aXJ0dWFsbHkgdXNlbGVzcy4gQWxzbywgc2hvdWxkIHRoZSBtZXRob2QgcmVzb2x1dGlvbiBiZSB1c2VkIG9uIHRoZQotcmVhZC10cmFuc3BvcnQgb3IgdGhlIHdyaXRlLXRyYW5zcG9ydD8KLQotPFA+Ci0KLTxESVYgQ0xBU1M9Im5hdmlnYXRpb24iPgotPHA+PGhyPgotPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotPHRyPgotPHRkPjxBIGhyZWY9ImNhbGxiYWNrcy5odG1sIj48aW1nIHNyYz0icHJldmlvdXMuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iUHJldmlvdXMgUGFnZSIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJpbnRlcm5hbHMuaHRtbCI+PGltZyBzcmM9InVwLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IlVwIE9uZSBMZXZlbCIgd2lkdGg9IjMyIj48L0E+PC90ZD4KLTx0ZD48QSBocmVmPSJhYm91dC5odG1sIj48aW1nIHNyYz0ibmV4dC5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSJOZXh0IFBhZ2UiIHdpZHRoPSIzMiI+PC9BPjwvdGQ+Ci08dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiPlB5dGhvbiBPcGVuU1NMIE1hbnVhbDwvdGQ+Ci08dGQ+PEEgaHJlZj0iY29udGVudHMuaHRtbCI+PGltZyBzcmM9ImNvbnRlbnRzLmdpZiIKLSAgYm9yZGVyPSIwIiBoZWlnaHQ9IjMyIgotICBhbHQ9IkNvbnRlbnRzIiB3aWR0aD0iMzIiPjwvQT48L3RkPgotPHRkPjxpbWcgc3JjPSJibGFuay5naWYiCi0gIGJvcmRlcj0iMCIgaGVpZ2h0PSIzMiIKLSAgYWx0PSIiIHdpZHRoPSIzMiI+PC90ZD4KLTx0ZD48aW1nIHNyYz0iYmxhbmsuZ2lmIgotICBib3JkZXI9IjAiIGhlaWdodD0iMzIiCi0gIGFsdD0iIiB3aWR0aD0iMzIiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlByZXZpb3VzOjwvYj4gPGEgY2xhc3M9InNlY3RyZWYiIGhyZWY9ImNhbGxiYWNrcy5odG1sIj40LjIgQ2FsbGJhY2tzPC9BPgotPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+IDxhIGNsYXNzPSJzZWN0cmVmIiBocmVmPSJpbnRlcm5hbHMuaHRtbCI+NCBJbnRlcm5hbHM8L0E+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPk5leHQ6PC9iPiA8YSBjbGFzcz0ic2VjdHJlZiIgaHJlZj0iYWJvdXQuaHRtbCI+QWJvdXQgdGhpcyBkb2N1bWVudCAuLi48L0E+Ci08aHI+Ci08c3BhbiBjbGFzcz0icmVsZWFzZS1pbmZvIj5SZWxlYXNlIDAuMTMuPC9zcGFuPgotPC9ESVY+Ci08IS0tRW5kIG9mIE5hdmlnYXRpb24gUGFuZWwtLT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvdXAuZ2lmIGIvZG9jL2h0bWwvdXAuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWQzZTEzLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3VwLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9pbmRleC5yc3QgYi9kb2MvaW5kZXgucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2M2RmODcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaW5kZXgucnN0CkBAIC0wLDAgKzEsMjcgQEAKK1dlbGNvbWUgdG8gcHlPcGVuU1NMJ3MgZG9jdW1lbnRhdGlvbiEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gdG9waWM6OiBBYnN0cmFjdAorCisgICBUaGlzIG1vZHVsZSBpcyBhIHJhdGhlciB0aGluIHdyYXBwZXIgYXJvdW5kIChhIHN1YnNldCBvZikgdGhlIE9wZW5TU0wgbGlicmFyeS4KKyAgIFdpdGggdGhpbiB3cmFwcGVyIEkgbWVhbiB0aGF0IGEgbG90IG9mIHRoZSBvYmplY3QgbWV0aG9kcyBkbyBub3RoaW5nIG1vcmUgdGhhbgorICAgY2FsbGluZyBhIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gaW4gdGhlIE9wZW5TU0wgbGlicmFyeS4KKworCitDb250ZW50czoKKworLi4gdG9jdHJlZTo6CisgICA6bWF4ZGVwdGg6IDMKKworICAgaW50cm9kdWN0aW9uCisgICBpbnN0YWxsCisgICBhcGkKKyAgIGludGVybmFscworCitJbmRpY2VzIGFuZCB0YWJsZXMKKz09PT09PT09PT09PT09PT09PQorCisqIDpyZWY6YGdlbmluZGV4YAorKiA6cmVmOmBtb2RpbmRleGAKKyogOnJlZjpgc2VhcmNoYAorCmRpZmYgLS1naXQgYS9kb2MvaW5zdGFsbC5yc3QgYi9kb2MvaW5zdGFsbC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUyNTcyNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9pbnN0YWxsLnJzdApAQCAtMCwwICsxLDY5IEBACisuLiBfYnVpbGRpbmc6CisKK0J1aWxkaW5nIGFuZCBJbnN0YWxsaW5nCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVzZSBpbnN0cnVjdGlvbnMgY2FuIGFsc28gYmUgZm91bmQgaW4gdGhlIGZpbGUgYGBJTlNUQUxMYGAuCisKK0kgaGF2ZSB0ZXN0ZWQgdGhpcyBvbiBEZWJpYW4gTGludXggc3lzdGVtcyAod29vZHkgYW5kIHNpZCksIFNvbGFyaXMgMi42IGFuZAorMi43LiBPdGhlcnMgaGF2ZSBzdWNjZXNzZnVsbHkgY29tcGlsZWQgaXQgb24gV2luZG93cyBhbmQgTlQuCisKKy4uIF9idWlsZGluZy11bml4OgorCitCdWlsZGluZyB0aGUgTW9kdWxlIG9uIGEgVW5peCBTeXN0ZW0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitweU9wZW5TU0wgdXNlcyBkaXN0dXRpbHMsIHNvIHRoZXJlIHJlYWxseSBzaG91bGRuJ3QgYmUgYW55IHByb2JsZW1zLiBUbyBidWlsZAordGhlIGxpYnJhcnk6OgorCisgICAgcHl0aG9uIHNldHVwLnB5IGJ1aWxkCisKK0lmIHlvdXIgT3BlblNTTCBoZWFkZXIgZmlsZXMgYXJlbid0IGluIGBgL3Vzci9pbmNsdWRlYGAsIHlvdSBtYXkgbmVlZCB0byBzdXBwbHkKK3RoZSBgYC1JYGAgZmxhZyB0byBsZXQgdGhlIHNldHVwIHNjcmlwdCBrbm93IHdoZXJlIHRvIGxvb2suIFRoZSBzYW1lIGdvZXMgZm9yCit0aGUgbGlicmFyaWVzIG9mIGNvdXJzZSwgdXNlIHRoZSBgYC1MYGAgZmxhZy4gTm90ZSB0aGF0IGBgYnVpbGRgYCB3b24ndCBhY2NlcHQKK3RoZXNlIGZsYWdzLCBzbyB5b3UgaGF2ZSB0byBydW4gZmlyc3QgYGBidWlsZF9leHRgYCBhbmQgdGhlbiBgYGJ1aWxkYGAhCitFeGFtcGxlOjoKKworICAgIHB5dGhvbiBzZXR1cC5weSBidWlsZF9leHQgLUkvdXNyL2xvY2FsL3NzbC9pbmNsdWRlIC1ML3Vzci9sb2NhbC9zc2wvbGliCisgICAgcHl0aG9uIHNldHVwLnB5IGJ1aWxkCisKK05vdyB5b3Ugc2hvdWxkIGhhdmUgYSBkaXJlY3RvcnkgY2FsbGVkIGBgT3BlblNTTGBgIHRoYXQgY29udGFpbnMgZS5nLgorYGBTU0wuc29gYCBhbmQgYGBfX2luaXRfXy5weWBgIHNvbWV3aGVyZSBpbiB0aGUgYnVpbGQgZGljcmVjdG9yeSwKK3NvIGp1c3Q6OgorCisgICAgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwKKworSWYgeW91LCBmb3Igc29tZSBhcmNhbmUgcmVhc29uLCBkb24ndCB3YW50IHRoZSBtb2R1bGUgdG8gYXBwZWFyIGluIHRoZQorYGBzaXRlLXBhY2thZ2VzYGAgZGlyZWN0b3J5LCB1c2UgdGhlIGBgLS1wcmVmaXhgYCBvcHRpb24uCisKK1lvdSBjYW4sIG9mIGNvdXJzZSwgZG86OgorCisgICAgcHl0aG9uIHNldHVwLnB5IC0taGVscAorCit0byBmaW5kIG91dCBtb3JlIGFib3V0IGhvdyB0byB1c2UgdGhlIHNjcmlwdC4KKworLi4gX2J1aWxkaW5nLXdpbmRvd3M6CisKK0J1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBXaW5kb3dzIFN5c3RlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JpZyB0aGFua3MgdG8gSXRhbWFyIFNodHVsbC1UcmF1cmluZyBhbmQgT2xlZyBPcmxvdiBmb3IgdGhlaXIgaGVscCB3aXRoCitXaW5kb3dzIGJ1aWxkIGluc3RydWN0aW9ucy4gIFNhbWUgYXMgZm9yIFVuaXggc3lzdGVtcywgd2UgaGF2ZSB0byBzZXBhcmF0ZQordGhlIGBgYnVpbGRfZXh0YGAgYW5kIHRoZSBgYGJ1aWxkYGAuCisKK0J1aWxkaW5nIHRoZSBsaWJyYXJ5OjoKKworICAgIHNldHVwLnB5IGJ1aWxkX2V4dCAtSSAuLi5cb3BlbnNzbFxpbmMzMiAtTCAuLi5cb3BlbnNzbFxvdXQzMmRsbAorICAgIHNldHVwLnB5IGJ1aWxkCisKK1doZXJlIGBgLi4uXG9wZW5zc2xgYCBpcyBvZiBjb3Vyc2UgdGhlIGxvY2F0aW9uIG9mIHlvdXIgT3BlblNTTCBpbnN0YWxsYXRpb24uCisKK0luc3RhbGxhdGlvbiBpcyB0aGUgc2FtZSBhcyBmb3IgVW5peCBzeXN0ZW1zOjoKKworICAgIHNldHVwLnB5IGluc3RhbGwKKworQW5kIHNpbWlsYXJpbHksIHlvdSBjYW4gZG86OgorCisgICAgc2V0dXAucHkgLS1oZWxwCisKK3RvIGdldCBtb3JlIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvZG9jL2ludGVybmFscy5yc3QgYi9kb2MvaW50ZXJuYWxzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzljNDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2ludGVybmFscy5yc3QKQEAgLTAsMCArMSw5NyBAQAorLi4gX2ludGVybmFsczoKKworSW50ZXJuYWxzCis9PT09PT09PT0KKworV2UgcmFuIGludG8gdGhyZWUgbWFpbiBwcm9ibGVtcyBkZXZlbG9waW5nIHRoaXM6IEV4Y2VwdGlvbnMsIGNhbGxiYWNrcyBhbmQKK2FjY2Vzc2luZyBzb2NrZXQgbWV0aG9kcy4gVGhpcyBpcyB3aGF0IHRoaXMgY2hhcHRlciBpcyBhYm91dC4KKworCisuLiBfZXhjZXB0aW9uczoKKworRXhjZXB0aW9ucworLS0tLS0tLS0tLQorCitXZSByZWFsaXplZCBlYXJseSB0aGF0IG1vc3Qgb2YgdGhlIGV4Y2VwdGlvbnMgd291bGQgYmUgcmFpc2VkIGJ5IHRoZSBJL08KK2Z1bmN0aW9ucyBvZiBPcGVuU1NMLCBzbyBpdCBmZWx0IG5hdHVyYWwgdG8gbWltaWMgT3BlblNTTCdzIGVycm9yIGNvZGUgc3lzdGVtLAordHJhbnNsYXRpbmcgdGhlbSBpbnRvIFB5dGhvbiBleGNlcHRpb25zLiBUaGlzIG5hdHVyYWxseSBnaXZlcyB1cyB0aGUgZXhjZXB0aW9ucworOnB5OmV4YzpgLlNTTC5aZXJvUmV0dXJuRXJyb3JgLCA6cHk6ZXhjOmAuU1NMLldhbnRSZWFkRXJyb3JgLAorOnB5OmV4YzpgLlNTTC5XYW50V3JpdGVFcnJvcmAsIDpweTpleGM6YC5TU0wuV2FudFg1MDlMb29rdXBFcnJvcmAgYW5kCis6cHk6ZXhjOmAuU1NMLlN5c0NhbGxFcnJvcmAuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMsIHNlZSBzZWN0aW9uIDpyZWY6YG9wZW5zc2wtc3NsYC4KKworCisuLiBfY2FsbGJhY2tzOgorCitDYWxsYmFja3MKKy0tLS0tLS0tLQorCitUaGVyZSBhcmUgYSBudW1iZXIgb2YgcHJvYmxlbXMgd2l0aCBjYWxsYmFja3MuIEZpcnN0IG9mIGFsbCwgT3BlblNTTCBpcyB3cml0dGVuCithcyBhIEMgbGlicmFyeSwgaXQncyBub3QgbWVhbnQgdG8gaGF2ZSBQeXRob24gY2FsbGJhY2tzLCBzbyBhIHdheSBhcm91bmQgdGhhdAoraXMgbmVlZGVkLiBBbm90aGVyIHByb2JsZW0gaXMgdGhyZWFkIHN1cHBvcnQuIEEgbG90IG9mIHRoZSBPcGVuU1NMIEkvTworZnVuY3Rpb25zIGNhbiBibG9jayBpZiB0aGUgc29ja2V0IGlzIGluIGJsb2NraW5nIG1vZGUsIGFuZCB0aGVuIHlvdSB3YW50IG90aGVyCitQeXRob24gdGhyZWFkcyB0byBiZSBhYmxlIHRvIGRvIG90aGVyIHRoaW5ncy4gVGhlIHJlYWwgdHJvdWJsZSBpcyBpZiB5b3UndmUKK3JlbGVhc2VkIHRoZSBnbG9iYWwgQ1B5dGhvbiBpbnRlcnByZXRlciBsb2NrIHRvIGRvIGEgcG90ZW50aWFsbHkgYmxvY2tpbmcKK29wZXJhdGlvbiwgYW5kIHRoZSBvcGVyYXRpb24gY2FsbHMgYSBjYWxsYmFjay4gVGhlbiB3ZSBtdXN0IHRha2UgdGhlIEdJTCBiYWNrLAorc2luY2UgY2FsbGluZyBQeXRob24gQVBJcyB3aXRob3V0IGhvbGRpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKK1RoZXJlIGFyZSB0d28gc29sdXRpb25zIHRvIHRoZSBmaXJzdCBwcm9ibGVtLCBib3RoIG9mIHdoaWNoIGFyZSBuZWNlc3NhcnkuIFRoZQorZmlyc3Qgc29sdXRpb24gdG8gdXNlIGlzIGlmIHRoZSBDIGNhbGxiYWNrIGFsbG93cyAnJ3VzZXJkYXRhJycgdG8gYmUgcGFzc2VkIHRvCitpdCAoYW4gYXJiaXRyYXJ5IHBvaW50ZXIgbm9ybWFsbHkpLiBUaGlzIGlzIGdyZWF0ISBXZSBjYW4gc2V0IG91ciBQeXRob24KK2Z1bmN0aW9uIG9iamVjdCBhcyB0aGUgcmVhbCB1c2VyZGF0YSBhbmQgZW11bGF0ZSB1c2VyZGF0YSBmb3IgdGhlIFB5dGhvbgorZnVuY3Rpb24gaW4gYW5vdGhlciB3YXkuIFRoZSBvdGhlciBzb2x1dGlvbiBjYW4gYmUgdXNlZCBpZiBhbiBvYmplY3Qgd2l0aCBhbgorJydhcHBfZGF0YScnIHN5c3RlbSBhbHdheXMgaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjay4gRm9yIGV4YW1wbGUsIHRoZSBTU0wKK29iamVjdCBpbiBPcGVuU1NMIGhhcyBhcHBfZGF0YSBmdW5jdGlvbnMgYW5kIGluIGUuZy4gdGhlIHZlcmlmaWNhdGlvbgorY2FsbGJhY2tzLCB5b3UgY2FuIHJldHJpZXZlIHRoZSByZWxhdGVkIFNTTCBvYmplY3QuIFdoYXQgd2UgZG8gaXMgdG8gc2V0IG91cgord3JhcHBlciA6cHk6Y2xhc3M6YC5Db25uZWN0aW9uYCBvYmplY3QgYXMgYXBwX2RhdGEgZm9yIHRoZSBTU0wgb2JqZWN0LCBhbmQgd2UgY2FuCitlYXNpbHkgZmluZCB0aGUgUHl0aG9uIGNhbGxiYWNrLgorCitUaGUgb3RoZXIgcHJvYmxlbSBpcyBzb2x2ZWQgdXNpbmcgdGhyZWFkIGxvY2FsIHZhcmlhYmxlcy4gIFdoZW5ldmVyIHRoZSBHSUwgaXMKK3JlbGVhc2VkIGJlZm9yZSBjYWxsaW5nIGludG8gYW4gT3BlblNTTCBBUEksIHRoZSBQeVRocmVhZFN0YXRlIHBvaW50ZXIgcmV0dXJuZWQKK2J5IDpjOmZ1bmM6YFB5RXZhbF9TYXZlU3RhdGVgIGlzIHN0b3JlZCBpbiBhIGdsb2JhbCB0aHJlYWQgbG9jYWwgdmFyaWFibGUKKyh1c2luZyBQeXRob24ncyBvd24gVExTIEFQSSwgOmM6ZnVuYzpgUHlUaHJlYWRfc2V0X2tleV92YWx1ZWApLiAgV2hlbiBpdCBpcworbmVjZXNzYXJ5IHRvIHJlLWFjcXVpcmUgdGhlIEdJTCwgZWl0aGVyIGFmdGVyIHRoZSBPcGVuU1NMIEFQSSByZXR1cm5zIG9yIGluIGEgQworY2FsbGJhY2sgaW52b2tlZCBieSB0aGF0IE9wZW5TU0wgQVBJLCB0aGUgdmFsdWUgb2YgdGhlIHRocmVhZCBsb2NhbCB2YXJpYWJsZSBpcworcmV0cmlldmVkICg6YzpmdW5jOmBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlYCkgYW5kIHVzZWQgdG8gcmUtYWNxdWlyZSB0aGUgR0lMLgorVGhpcyBhbGxvd3MgUHl0aG9uIHRocmVhZHMgdG8gZXhlY3V0ZSB3aGlsZSBPcGVuU1NMIEFQSXMgYXJlIHJ1bm5pbmcgYW5kIGFsbG93cwordXNlIG9mIGFueSBwYXJ0aWN1bGFyIHB5T3BlblNTTCBvYmplY3QgZnJvbSBhbnkgUHl0aG9uIHRocmVhZCwgc2luY2UgdGhlcmUgaXMKK25vIHBlci10aHJlYWQgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFueSBvZiB0aGVzZSBvYmplY3RzIGFuZCBzaW5jZSBPcGVuU1NMIGlzCit0aHJlYWRzYWZlIChhcyBsb25nIGFzIHByb3Blcmx5IGluaXRpYWxpemVkLCBhcyBweU9wZW5TU0wgaW5pdGlhbGl6ZXMgaXQpLgorCisKKy4uIF9zb2NrZXQtbWV0aG9kczoKKworQWNjZXNzaW5nIFNvY2tldCBNZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2UgcXVpY2tseSBzYXcgdGhlIGJlbmVmaXQgb2Ygd3JhcHBpbmcgc29ja2V0IG1ldGhvZHMgaW4gdGhlCis6cHk6Y2xhc3M6YC5TU0wuQ29ubmVjdGlvbmAgY2xhc3MsIGZvciBhbiBlYXN5IHRyYW5zaXRpb24gaW50byB1c2luZyBTU0wuIFRoZQorcHJvYmxlbSBoZXJlIGlzIHRoYXQgdGhlIDpweTptb2Q6YHNvY2tldGAgbW9kdWxlIGxhY2tzIGEgQyBBUEksIGFuZCBhbGwgdGhlCittZXRob2RzIGFyZSBkZWNsYXJlZCBzdGF0aWMuIE9uZSBhcHByb2FjaCB3b3VsZCBiZSB0byBoYXZlIDpweTptb2Q6YC5PcGVuU1NMYCBhcworYSBzdWJtb2R1bGUgdG8gdGhlIDpweTptb2Q6YHNvY2tldGAgbW9kdWxlLCBwbGFjaW5nIGFsbCB0aGUgY29kZSBpbgorYGBzb2NrZXRtb2R1bGUuY2BgLCBidXQgdGhpcyBpcyBvYnZpb3VzbHkgbm90IGEgZ29vZCBzb2x1dGlvbiwgc2luY2UgeW91CittaWdodCBub3Qgd2FudCB0byBpbXBvcnQgdG9ubmVzIG9mIGV4dHJhIHN0dWZmIHlvdSdyZSBub3QgZ29pbmcgdG8gdXNlIHdoZW4KK2ltcG9ydGluZyB0aGUgOnB5Om1vZDpgc29ja2V0YCBtb2R1bGUuIFRoZSBvdGhlciBhcHByb2FjaCBpcyB0byBzb21laG93IGdldCBhCitwb2ludGVyIHRvIHRoZSBtZXRob2QgdG8gYmUgY2FsbGVkLCBlaXRoZXIgdGhlIEMgZnVuY3Rpb24sIG9yIGEgY2FsbGFibGUgUHl0aG9uCitvYmplY3QuIFRoaXMgaXMgbm90IHJlYWxseSBhIGdvb2Qgc29sdXRpb24gZWl0aGVyLCBzaW5jZSB0aGVyZSdzIGEgbG90IG9mCitsb29rdXBzIGludm9sdmVkLgorCitUaGUgd2F5IGl0IHdvcmtzIGlzIHRoYXQgeW91IGhhdmUgdG8gc3VwcGx5IGEgOnB5OmNsYXNzOmBzb2NrZXRgLSAqKmxpa2UqKiB0cmFuc3BvcnQKK29iamVjdCB0byB0aGUgOnB5OmNsYXNzOmAuU1NMLkNvbm5lY3Rpb25gLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB0aGlzIG9iamVjdCBpcwordGhhdCBpdCBoYXMgYSA6cHk6bWV0aDpgZmlsZW5vKClgIG1ldGhvZCB0aGF0IHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCdzCit2YWxpZCBhdCB0aGUgQyBsZXZlbCAoaS5lLiB5b3UgY2FuIHVzZSB0aGUgc3lzdGVtIGNhbGxzIHJlYWQgYW5kIHdyaXRlKS4gSWYgeW91Cit3YW50IHRvIHVzZSB0aGUgOnB5Om1ldGg6YGNvbm5lY3QoKWAgb3IgOnB5Om1ldGg6YGFjY2VwdCgpYCBtZXRob2RzIG9mIHRoZQorOnB5OmNsYXNzOmAuU1NMLkNvbm5lY3Rpb25gIG9iamVjdCwgdGhlIHRyYW5zcG9ydCBvYmplY3QgaGFzIHRvIHN1cHBseSBzdWNoCittZXRob2RzIHRvby4gQXBhcnQgZnJvbSB0aGVtLCBhbnkgbWV0aG9kIGxvb2t1cHMgaW4gdGhlIDpweTpjbGFzczpgLlNTTC5Db25uZWN0aW9uYAorb2JqZWN0IHRoYXQgZmFpbCBhcmUgcGFzc2VkIG9uIHRvIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCBvYmplY3QuCisKK0Z1dHVyZSBjaGFuZ2VzIG1pZ2h0IGJlIHRvIGFsbG93IFB5dGhvbi1sZXZlbCB0cmFuc3BvcnQgb2JqZWN0cywgdGhhdCBpbnN0ZWFkCitvZiBoYXZpbmcgOnB5Om1ldGg6YGZpbGVubygpYCBtZXRob2RzLCBoYXZlIDpweTptZXRoOmByZWFkKClgIGFuZCA6cHk6bWV0aDpgd3JpdGUoKWAKK21ldGhvZHMsIHNvIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgb2YgUHl0aG9uIGNhbiBiZSB1c2VkLiBUaGlzIHdvdWxkIHByb2JhYmx5CitlbnRhaWwgc29tZSBzb3J0IG9mIE9wZW5TU0wgKipCSU9zKiosIGJ1dCBjb252ZXJ0aW5nIFB5dGhvbiBzdHJpbmdzIGJhY2sgYW5kCitmb3J0aCBpcyBleHBlbnNpdmUsIHNvIHRoaXMgc2hvdWxkbid0IGJlIHVzZWQgdW5sZXNzIG5lY2Vzc2FyeS4gT3RoZXIgbmljZQordGhpbmdzIHdvdWxkIGJlIHRvIGJlIGFibGUgdG8gcGFzcyBpbiBkaWZmZXJlbnQgdHJhbnNwb3J0IG9iamVjdHMgZm9yIHJlYWRpbmcKK2FuZCB3cml0aW5nLCBidXQgdGhlbiB0aGUgOnB5Om1ldGg6YGZpbGVubygpYCBtZXRob2Qgb2YgOnB5OmNsYXNzOmAuU1NMLkNvbm5lY3Rpb25gCitiZWNvbWVzIHZpcnR1YWxseSB1c2VsZXNzLiBBbHNvLCBzaG91bGQgdGhlIG1ldGhvZCByZXNvbHV0aW9uIGJlIHVzZWQgb24gdGhlCityZWFkLXRyYW5zcG9ydCBvciB0aGUgd3JpdGUtdHJhbnNwb3J0PwpkaWZmIC0tZ2l0IGEvZG9jL2ludHJvZHVjdGlvbi5yc3QgYi9kb2MvaW50cm9kdWN0aW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjlmODBjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2ludHJvZHVjdGlvbi5yc3QKQEAgLTAsMCArMSwxNyBAQAorLi4gX2ludHJvOgorCitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGUgcmVhc29uIHB5T3BlblNTTCB3YXMgY3JlYXRlZCBpcyB0aGF0IHRoZSBTU0wgc3VwcG9ydCBpbiB0aGUgc29ja2V0IG1vZHVsZSBpbgorUHl0aG9uIDIuMSAodGhlIGNvbnRlbXBvcmFyeSB2ZXJzaW9uIG9mIFB5dGhvbiB3aGVuIHRoZSBweU9wZW5TU0wgcHJvamVjdCB3YXMKK2JlZ3VuKSB3YXMgc2V2ZXJlbHkgbGltaXRlZC4gIE90aGVyIE9wZW5TU0wgd3JhcHBlcnMgZm9yIFB5dGhvbiBhdCB0aGUgdGltZSB3ZXJlCithbHNvIGxpbWl0ZWQsIHRob3VnaCBpbiBkaWZmZXJlbnQgd2F5cy4gIFVuZm9ydHVuYXRlbHksIFB5dGhvbidzIHN0YW5kYXJkCitsaWJyYXJ5IFNTTCBzdXBwb3J0IGhhcyByZW1haW5lZCB3ZWFrLCBhbHRob3VnaCBvdGhlciBwYWNrYWdlcyAoc3VjaCBhcworYE0yQ3J5cHRvIDxodHRwOi8vY2hhbmRsZXJwcm9qZWN0Lm9yZy9Qcm9qZWN0cy9NZVRvb0NyeXB0bz5gXykKK2hhdmUgbWFkZSBncmVhdCBhZHZhbmNlcyBhbmQgbm93IGVxdWFsIG9yIGV4Y2VlZCBweU9wZW5TU0wncyBmdW5jdGlvbmFsaXR5LgorCitUaGUgcmVhc29uIHB5T3BlblNTTCBjb250aW51ZXMgdG8gYmUgbWFpbnRhaW5lZCBpcyB0aGF0IHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQKK3VzZXIgY29tbXVuaXR5IGFyb3VuZCBpdCwgYXMgd2VsbCBhcyBhIGxhcmdlIGFtb3VudCBvZiBzb2Z0d2FyZSB3aGljaCBkZXBlbmRzIG9uCitpdC4gIEl0IGlzIGEgZ3JlYXQgYmVuZWZpdCB0byBtYW55IHBlb3BsZSBmb3IgcHlPcGVuU1NMIHRvIGNvbnRpbnVlIHRvIGV4aXN0IGFuZAorYWR2YW5jZS4KZGlmZiAtLWdpdCBhL2RvYy9tYWtlLmJhdCBiL2RvYy9tYWtlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWYwNGRlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21ha2UuYmF0CkBAIC0wLDAgKzEsMTcwIEBACitARUNITyBPRkYKKworUkVNIENvbW1hbmQgZmlsZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKworaWYgIiVTUEhJTlhCVUlMRCUiID09ICIiICgKKwlzZXQgU1BISU5YQlVJTEQ9c3BoaW54LWJ1aWxkCispCitzZXQgQlVJTERESVI9X2J1aWxkCitzZXQgQUxMU1BISU5YT1BUUz0tZCAlQlVJTERESVIlL2RvY3RyZWVzICVTUEhJTlhPUFRTJSAuCitpZiBOT1QgIiVQQVBFUiUiID09ICIiICgKKwlzZXQgQUxMU1BISU5YT1BUUz0tRCBsYXRleF9wYXBlcl9zaXplPSVQQVBFUiUgJUFMTFNQSElOWE9QVFMlCispCisKK2lmICIlMSIgPT0gIiIgZ290byBoZWxwCisKK2lmICIlMSIgPT0gImhlbHAiICgKKwk6aGVscAorCWVjaG8uUGxlYXNlIHVzZSBgbWFrZSBePHRhcmdldF4+YCB3aGVyZSBePHRhcmdldF4+IGlzIG9uZSBvZgorCWVjaG8uICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzCisJZWNoby4gIGRpcmh0bWwgICAgdG8gbWFrZSBIVE1MIGZpbGVzIG5hbWVkIGluZGV4Lmh0bWwgaW4gZGlyZWN0b3JpZXMKKwllY2hvLiAgc2luZ2xlaHRtbCB0byBtYWtlIGEgc2luZ2xlIGxhcmdlIEhUTUwgZmlsZQorCWVjaG8uICBwaWNrbGUgICAgIHRvIG1ha2UgcGlja2xlIGZpbGVzCisJZWNoby4gIGpzb24gICAgICAgdG8gbWFrZSBKU09OIGZpbGVzCisJZWNoby4gIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0CisJZWNoby4gIHF0aGVscCAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIHF0aGVscCBwcm9qZWN0CisJZWNoby4gIGRldmhlbHAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIERldmhlbHAgcHJvamVjdAorCWVjaG8uICBlcHViICAgICAgIHRvIG1ha2UgYW4gZXB1YgorCWVjaG8uICBsYXRleCAgICAgIHRvIG1ha2UgTGFUZVggZmlsZXMsIHlvdSBjYW4gc2V0IFBBUEVSPWE0IG9yIFBBUEVSPWxldHRlcgorCWVjaG8uICB0ZXh0ICAgICAgIHRvIG1ha2UgdGV4dCBmaWxlcworCWVjaG8uICBtYW4gICAgICAgIHRvIG1ha2UgbWFudWFsIHBhZ2VzCisJZWNoby4gIGNoYW5nZXMgICAgdG8gbWFrZSBhbiBvdmVydmlldyBvdmVyIGFsbCBjaGFuZ2VkL2FkZGVkL2RlcHJlY2F0ZWQgaXRlbXMKKwllY2hvLiAgbGlua2NoZWNrICB0byBjaGVjayBhbGwgZXh0ZXJuYWwgbGlua3MgZm9yIGludGVncml0eQorCWVjaG8uICBkb2N0ZXN0ICAgIHRvIHJ1biBhbGwgZG9jdGVzdHMgZW1iZWRkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gaWYgZW5hYmxlZAorCWdvdG8gZW5kCispCisKK2lmICIlMSIgPT0gImNsZWFuIiAoCisJZm9yIC9kICUlaSBpbiAoJUJVSUxERElSJVwqKSBkbyBybWRpciAvcSAvcyAlJWkKKwlkZWwgL3EgL3MgJUJVSUxERElSJVwqCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAiaHRtbCIgKAorCSVTUEhJTlhCVUlMRCUgLWIgaHRtbCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9odG1sCisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5CdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwgcGFnZXMgYXJlIGluICVCVUlMRERJUiUvaHRtbC4KKwlnb3RvIGVuZAorKQorCitpZiAiJTEiID09ICJkaXJodG1sIiAoCisJJVNQSElOWEJVSUxEJSAtYiBkaXJodG1sICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2Rpcmh0bWwKKwlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxCisJZWNoby4KKwllY2hvLkJ1aWxkIGZpbmlzaGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJUJVSUxERElSJS9kaXJodG1sLgorCWdvdG8gZW5kCispCisKK2lmICIlMSIgPT0gInNpbmdsZWh0bWwiICgKKwklU1BISU5YQlVJTEQlIC1iIHNpbmdsZWh0bWwgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvc2luZ2xlaHRtbAorCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDEKKwllY2hvLgorCWVjaG8uQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2VzIGFyZSBpbiAlQlVJTERESVIlL3NpbmdsZWh0bWwuCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAicGlja2xlIiAoCisJJVNQSElOWEJVSUxEJSAtYiBwaWNrbGUgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvcGlja2xlCisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5CdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcHJvY2VzcyB0aGUgcGlja2xlIGZpbGVzLgorCWdvdG8gZW5kCispCisKK2lmICIlMSIgPT0gImpzb24iICgKKwklU1BISU5YQlVJTEQlIC1iIGpzb24gJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvanNvbgorCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDEKKwllY2hvLgorCWVjaG8uQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIEpTT04gZmlsZXMuCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAiaHRtbGhlbHAiICgKKwklU1BISU5YQlVJTEQlIC1iIGh0bWxoZWxwICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2h0bWxoZWxwCisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5CdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcnVuIEhUTUwgSGVscCBXb3Jrc2hvcCB3aXRoIHRoZSBeCisuaGhwIHByb2plY3QgZmlsZSBpbiAlQlVJTERESVIlL2h0bWxoZWxwLgorCWdvdG8gZW5kCispCisKK2lmICIlMSIgPT0gInF0aGVscCIgKAorCSVTUEhJTlhCVUlMRCUgLWIgcXRoZWxwICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL3F0aGVscAorCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDEKKwllY2hvLgorCWVjaG8uQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHJ1biAicWNvbGxlY3Rpb25nZW5lcmF0b3IiIHdpdGggdGhlIF4KKy5xaGNwIHByb2plY3QgZmlsZSBpbiAlQlVJTERESVIlL3F0aGVscCwgbGlrZSB0aGlzOgorCWVjaG8uXj4gcWNvbGxlY3Rpb25nZW5lcmF0b3IgJUJVSUxERElSJVxxdGhlbHBccHlPcGVuU1NMLnFoY3AKKwllY2hvLlRvIHZpZXcgdGhlIGhlbHAgZmlsZToKKwllY2hvLl4+IGFzc2lzdGFudCAtY29sbGVjdGlvbkZpbGUgJUJVSUxERElSJVxxdGhlbHBccHlPcGVuU1NMLmdoYworCWdvdG8gZW5kCispCisKK2lmICIlMSIgPT0gImRldmhlbHAiICgKKwklU1BISU5YQlVJTEQlIC1iIGRldmhlbHAgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvZGV2aGVscAorCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDEKKwllY2hvLgorCWVjaG8uQnVpbGQgZmluaXNoZWQuCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAiZXB1YiIgKAorCSVTUEhJTlhCVUlMRCUgLWIgZXB1YiAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9lcHViCisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5CdWlsZCBmaW5pc2hlZC4gVGhlIGVwdWIgZmlsZSBpcyBpbiAlQlVJTERESVIlL2VwdWIuCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAibGF0ZXgiICgKKwklU1BISU5YQlVJTEQlIC1iIGxhdGV4ICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2xhdGV4CisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5CdWlsZCBmaW5pc2hlZDsgdGhlIExhVGVYIGZpbGVzIGFyZSBpbiAlQlVJTERESVIlL2xhdGV4LgorCWdvdG8gZW5kCispCisKK2lmICIlMSIgPT0gInRleHQiICgKKwklU1BISU5YQlVJTEQlIC1iIHRleHQgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvdGV4dAorCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDEKKwllY2hvLgorCWVjaG8uQnVpbGQgZmluaXNoZWQuIFRoZSB0ZXh0IGZpbGVzIGFyZSBpbiAlQlVJTERESVIlL3RleHQuCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAibWFuIiAoCisJJVNQSElOWEJVSUxEJSAtYiBtYW4gJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvbWFuCisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5CdWlsZCBmaW5pc2hlZC4gVGhlIG1hbnVhbCBwYWdlcyBhcmUgaW4gJUJVSUxERElSJS9tYW4uCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAiY2hhbmdlcyIgKAorCSVTUEhJTlhCVUlMRCUgLWIgY2hhbmdlcyAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9jaGFuZ2VzCisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5UaGUgb3ZlcnZpZXcgZmlsZSBpcyBpbiAlQlVJTERESVIlL2NoYW5nZXMuCisJZ290byBlbmQKKykKKworaWYgIiUxIiA9PSAibGlua2NoZWNrIiAoCisJJVNQSElOWEJVSUxEJSAtYiBsaW5rY2hlY2sgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvbGlua2NoZWNrCisJaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQorCWVjaG8uCisJZWNoby5MaW5rIGNoZWNrIGNvbXBsZXRlOyBsb29rIGZvciBhbnkgZXJyb3JzIGluIHRoZSBhYm92ZSBvdXRwdXQgXgorb3IgaW4gJUJVSUxERElSJS9saW5rY2hlY2svb3V0cHV0LnR4dC4KKwlnb3RvIGVuZAorKQorCitpZiAiJTEiID09ICJkb2N0ZXN0IiAoCisJJVNQSElOWEJVSUxEJSAtYiBkb2N0ZXN0ICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2RvY3Rlc3QKKwlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxCisJZWNoby4KKwllY2hvLlRlc3Rpbmcgb2YgZG9jdGVzdHMgaW4gdGhlIHNvdXJjZXMgZmluaXNoZWQsIGxvb2sgYXQgdGhlIF4KK3Jlc3VsdHMgaW4gJUJVSUxERElSJS9kb2N0ZXN0L291dHB1dC50eHQuCisJZ290byBlbmQKKykKKworOmVuZApkaWZmIC0tZ2l0IGEvZG9jL3B5T3BlblNTTC5wcyBiL2RvYy9weU9wZW5TU0wucHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYmUwMjguLjAwMDAwMDAKLS0tIGEvZG9jL3B5T3BlblNTTC5wcworKysgL2Rldi9udWxsCkBAIC0xLDU5OTAgKzAsMCBAQAotJSFQUy1BZG9iZS0yLjAKLSUlQ3JlYXRvcjogZHZpcHMoaykgNS45OCBDb3B5cmlnaHQgMjAwOSBSYWRpY2FsIEV5ZSBTb2Z0d2FyZQotJSVUaXRsZTogcHlPcGVuU1NMLmR2aQotJSVDcmVhdGlvbkRhdGU6IEZyaSBTZXAgIDIgMTE6Mjg6NTQgMjAxMQotJSVQYWdlczogMTkKLSUlUGFnZU9yZGVyOiBBc2NlbmQKLSUlQm91bmRpbmdCb3g6IDAgMCA1OTYgODQyCi0lJURvY3VtZW50UGFwZXJTaXplczogYTQKLSUlRW5kQ29tbWVudHMKLSVEVklQU1dlYlBhZ2U6ICh3d3cucmFkaWNhbGV5ZS5jb20pCi0lRFZJUFNDb21tYW5kTGluZTogZHZpcHMgLU4wIC1vIHB5T3BlblNTTC5wcyBweU9wZW5TU0wKLSVEVklQU1BhcmFtZXRlcnM6IGRwaT02MDAKLSVEVklQU1NvdXJjZTogIFRlWCBvdXRwdXQgMjAxMS4wOS4wMjoxMTI4Ci0lJUJlZ2luUHJvY1NldDogdGV4LnBybyAwIDAKLSUhCi0vVGVYRGljdCAzMDAgZGljdCBkZWYgVGVYRGljdCBiZWdpbi9Oe2RlZn1kZWYvQntiaW5kIGRlZn1OL1N7ZXhjaH1OL1h7UwotTn1CL0F7ZHVwfUIvVFJ7dHJhbnNsYXRlfU4vaXNscyBmYWxzZSBOL3ZzaXplIDExIDcyIG11bCBOL2hzaXplIDguNSA3MgotbXVsIE4vbGFuZHBsdXM5MHtmYWxzZX1kZWYvQHJpZ2lue2lzbHN7WzAgbGFuZHBsdXM5MHsxIC0xfXstMSAxfWlmZWxzZSAwCi0wIDBdY29uY2F0fWlmIDcyIFJlc29sdXRpb24gZGl2IDcyIFZSZXNvbHV0aW9uIGRpdiBuZWcgc2NhbGUgaXNsc3sKLWxhbmRwbHVzOTB7VlJlc29sdXRpb24gNzIgZGl2IHZzaXplIG11bCAwIGV4Y2h9e1Jlc29sdXRpb24gLTcyIGRpdiBoc2l6ZQotbXVsIDB9aWZlbHNlIFRSfWlmIFJlc29sdXRpb24gVlJlc29sdXRpb24gdnNpemUgLTcyIGRpdiAxIGFkZCBtdWwgVFJbCi1tYXRyaXggY3VycmVudG1hdHJpeHtBIEEgcm91bmQgc3ViIGFicyAwLjAwMDAxIGx0e3JvdW5kfWlmfWZvcmFsbCByb3VuZAotZXhjaCByb3VuZCBleGNoXXNldG1hdHJpeH1OL0BsYW5kc2NhcGV7L2lzbHMgdHJ1ZSBOfUIvQG1hbnVhbGZlZWR7Ci1zdGF0dXNkaWN0L21hbnVhbGZlZWQgdHJ1ZSBwdXR9Qi9AY29waWVzey8jY29waWVzIFh9Qi9GTWF0WzEgMCAwIC0xIDAgMF0KLU4vRkJCWzAgMCAwIDBdTi9ubiAwIE4vSUVuIDAgTi9jdHIgMCBOL2RmLXRhaWx7L25uIDggZGljdCBOIG5uIGJlZ2luCi0vRm9udFR5cGUgMyBOL0ZvbnRNYXRyaXggZm50cnggTi9Gb250QkJveCBGQkIgTiBzdHJpbmcvYmFzZSBYIGFycmF5Ci0vQml0TWFwcyBYL0J1aWxkQ2hhcntDaGFyQnVpbGRlcn1OL0VuY29kaW5nIElFbiBOIGVuZCBBey9mb28gc2V0Zm9udH0yCi1hcnJheSBjb3B5IGN2eCBOIGxvYWQgMCBubiBwdXQvY3RyIDAgTlt9Qi9zZiAwIE4vZGZ7L3NmIDEgTi9mbnRyeCBGTWF0IE4KLWRmLXRhaWx9Qi9kZnN7ZGl2L3NmIFgvZm50cnhbc2YgMCAwIHNmIG5lZyAwIDBdTiBkZi10YWlsfUIvRXtwb3Agbm4gQQotZGVmaW5lZm9udCBzZXRmb250fUIvQ3d7Q2QgQSBsZW5ndGggNSBzdWIgZ2V0fUIvQ2h7Q2QgQSBsZW5ndGggNCBzdWIgZ2V0Ci19Qi9DeHsxMjggQ2QgQSBsZW5ndGggMyBzdWIgZ2V0IHN1Yn1CL0N5e0NkIEEgbGVuZ3RoIDIgc3ViIGdldCAxMjcgc3VifQotQi9DZHh7Q2QgQSBsZW5ndGggMSBzdWIgZ2V0fUIvQ2l7Q2QgQSB0eXBlL3N0cmluZ3R5cGUgbmV7Y3RyIGdldC9jdHIgY3RyCi0xIGFkZCBOfWlmfUIvQ2hhckJ1aWxkZXJ7c2F2ZSAzIDEgcm9sbCBTIEEvYmFzZSBnZXQgMiBpbmRleCBnZXQgUwotL0JpdE1hcHMgZ2V0IFMgZ2V0L0NkIFggcG9wL2N0ciAwIE4gQ2R4IDAgQ3ggQ3kgQ2ggc3ViIEN4IEN3IGFkZCBDeQotc2V0Y2FjaGVkZXZpY2UgQ3cgQ2ggdHJ1ZVsxIDAgMCAtMSAtLjEgQ3ggc3ViIEN5IC4xIHN1Yl17Q2l9aW1hZ2VtYXNrCi1yZXN0b3JlfUIvRHsvY2MgWCBBIHR5cGUvc3RyaW5ndHlwZSBuZXtdfWlmIG5uL2Jhc2UgZ2V0IGNjIGN0ciBwdXQgbm4KLS9CaXRNYXBzIGdldCBTIGN0ciBTIHNmIDEgbmV7QSBBIGxlbmd0aCAxIHN1YiBBIDIgaW5kZXggUyBnZXQgc2YgZGl2IHB1dAotfWlmIHB1dC9jdHIgY3RyIDEgYWRkIE59Qi9Je2NjIDEgYWRkIER9Qi9ib3B7dXNlcmRpY3QvYm9wLWhvb2sga25vd257Ci1ib3AtaG9va31pZi9TSSBzYXZlIE4gQHJpZ2luIDAgMCBtb3ZldG8vViBtYXRyaXggY3VycmVudG1hdHJpeCBBIDEgZ2V0IEEKLW11bCBleGNoIDAgZ2V0IEEgbXVsIGFkZCAuOTkgbHR7L1FWfXsvUlZ9aWZlbHNlIGxvYWQgZGVmIHBvcCBwb3B9Ti9lb3B7Ci1TSSByZXN0b3JlIHVzZXJkaWN0L2VvcC1ob29rIGtub3due2VvcC1ob29rfWlmIHNob3dwYWdlfU4vQHN0YXJ0ewotdXNlcmRpY3Qvc3RhcnQtaG9vayBrbm93bntzdGFydC1ob29rfWlmIHBvcC9WUmVzb2x1dGlvbiBYL1Jlc29sdXRpb24gWAotMTAwMCBkaXYvRFZJbWFnIFgvSUVuIDI1NiBhcnJheSBOIDIgc3RyaW5nIDAgMSAyNTV7SUVuIFMgQSAzNjAgYWRkIDM2IDQKLWluZGV4IGN2cnMgY3ZuIHB1dH1mb3IgcG9wIDY1NzgxLjc2IGRpdi92c2l6ZSBYIDY1NzgxLjc2IGRpdi9oc2l6ZSBYfU4KLS9we3Nob3d9Ti9STWF0WzEgMCAwIC0xIDAgMF1OL0JEb3QgMjYwIHN0cmluZyBOL1J4IDAgTi9SeSAwIE4vVnt9Qi9SVi92ewotL1J5IFgvUnggWCBWfUIgc3RhdHVzZGljdCBiZWdpbi9wcm9kdWN0IHdoZXJle3BvcCBmYWxzZVsoRGlzcGxheSkoTmVYVCkKLShMYXNlcldyaXRlciAxNi82MDApXXtBIGxlbmd0aCBwcm9kdWN0IGxlbmd0aCBsZXtBIGxlbmd0aCBwcm9kdWN0IGV4Y2ggMAotZXhjaCBnZXRpbnRlcnZhbCBlcXtwb3AgdHJ1ZSBleGl0fWlmfXtwb3B9aWZlbHNlfWZvcmFsbH17ZmFsc2V9aWZlbHNlCi1lbmR7e2dzYXZlIFRSIC0uMSAuMSBUUiAxIDEgc2NhbGUgUnggUnkgZmFsc2UgUk1hdHtCRG90fWltYWdlbWFzawotZ3Jlc3RvcmV9fXt7Z3NhdmUgVFIgLS4xIC4xIFRSIFJ4IFJ5IHNjYWxlIDEgMSBmYWxzZSBSTWF0e0JEb3R9Ci1pbWFnZW1hc2sgZ3Jlc3RvcmV9fWlmZWxzZSBCL1FWe2dzYXZlIG5ld3BhdGggdHJhbnNmb3JtIHJvdW5kIGV4Y2ggcm91bmQKLWV4Y2ggaXRyYW5zZm9ybSBtb3ZldG8gUnggMCBybGluZXRvIDAgUnkgbmVnIHJsaW5ldG8gUnggbmVnIDAgcmxpbmV0bwotZmlsbCBncmVzdG9yZX1CL2F7bW92ZXRvfUIvZGVsdGEgMCBOL3RhaWx7QS9kZWx0YSBYIDAgcm1vdmV0b31CL017UyBwCi1kZWx0YSBhZGQgdGFpbH1CL2J7UyBwIHRhaWx9Qi9jey00IE19Qi9key0zIE19Qi9ley0yIE19Qi9mey0xIE19Qi9nezAgTX0KLUIvaHsxIE19Qi9pezIgTX1CL2p7MyBNfUIva3s0IE19Qi93ezAgcm1vdmV0b31CL2x7cCAtNCB3fUIvbXtwIC0zIHd9Qi9uewotcCAtMiB3fUIvb3twIC0xIHd9Qi9xe3AgMSB3fUIvcntwIDIgd31CL3N7cCAzIHd9Qi90e3AgNCB3fUIveHswIFMKLXJtb3ZldG99Qi95ezMgMiByb2xsIHAgYX1CL2Jvc3svU1Mgc2F2ZSBOfUIvZW9ze1NTIHJlc3RvcmV9QiBlbmQKLQotJSVFbmRQcm9jU2V0Ci1UZVhEaWN0IGJlZ2luIDM5MTU4MjgwIDU1MzgwOTk2IDEwMDAgNjAwIDYwMCAocHlPcGVuU1NMLmR2aSkKLUBzdGFydAotJURWSVBTQml0bWFwRm9udDogRmEgZWN0aTA4MDAgOCA2Ci0vRmEgNiAxMTkgZGY8MDAwN0MwMDAwMDFGRjAwMDAwN0MzOUMwMDBGODFGQzAwMUYwMUZDMDAzRTAwRkMwMDdDMDBGQzAwRgotQzAwRkMwMUY4MDBGODAxRjgwMEY4MDNGMDAwRjgwM0YwMDFGODA3RjAwMUYwMDdFMDAxRjAwN0UwMDFGMDA3RTAwM0YwMEZFCi0wMDNFMDBGQzAwM0UwMEZDMDAzRTAwRkMwMDdFMThGQzAwN0MzOEY4MDA3QzM4RjgwMDdDMzhGODAwRkMzODc4MDFGQzc4N0MKLTAzRjg3MDdDMDNGODcwM0MwRjc4RTAxRTFFM0RFMDBGRjgxRkMwMDNFMDBGMDAxRDFGNzk5RDI0Pjk3Ci1EPDAwRjgwMDFGRjgwMDFGRjgwMDAxRjgwMDAxRjgwMDAxRjAwMDAxRjAwMDAzRjAwMDAzRjAwMDAzRTAwMDAzRTAwMDA3RTAKLTAwMDdFMDAwMDdDMDAwMDdDMDAwMEZDMDAwMEZDN0MwMEY5RkYwMEZGODc4MUZGMDNDMUZFMDNFMUZDMDFFMUY4MDFGM0YwMAotMUYzRjAwMUYzRTAwMUYzRTAwMUY3RTAwM0Y3RTAwM0Y3QzAwM0Y3QzAwM0Y3QzAwN0ZGQzAwN0VGODAwN0VGODAwN0VGODAwCi1GQ0Y4MDBGQ0Y4MDBGOEY4MDFGOEY4MDFGMEY4MDNFMDc4MDdFMDc4MDdDMDNDMEY4MDFFM0UwMDBGRjgwMDAzRTAwMDE4MkYKLTc4QUQyMT5JPDAwMDNGODAwMDAwRkZFMDAwMDNFMEYwMDAwRjgwNzAwMDFGMDAzODAwM0UwMDM4MDA3QzAwMzgwMEZDMDA3Ci04MDFGODAwNzAwMUY4MDBGMDAzRjAwMUUwMDNGMDAzQzAwN0YwM0Y4MDA3RkZGRTAwMDdGRkUwMDAwN0UwMDAwMDBGRTAwMDAKLTAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDA3QzAwMDAwMDdDMDAwMTgwN0MwMDAzQzA3QzAwMDc4MDNFMDAwRgotMDAzRTAwMUUwMDFGMDA3QzAwMEY4M0YwMDAwM0ZGQzAwMDAwRkUwMDAwMUExRjc5OUQyMT4xMDEKLUQ8MDAxRjAwMDAwM0ZGMDAwMDAzRkYwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDdFMDAwMDAwN0UwMAotMDAwMDdDMDAwMDAwN0MwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRjgwMDAwMDBGODAwMDAwMUY4MDAwMDAxRjg3RTAwMDFGM0ZGCi04MDAxRjc4N0MwMDNGRTAzRTAwM0ZDMDNFMDAzRjgwM0UwMDNGODAzRTAwN0YwMDNFMDA3RTAwM0UwMDdFMDAzRTAwN0MwMDMKLUUwMEZDMDA3RTAwRkMwMDdDMDBGODAwN0MwMEY4MDA3QzAxRjgwMEZDMDFGODAwRjgwMUYwMDBGODAxRjAwMUY4MDNGMDAxRgotMDYzRjAwMUYwRTNFMDAzRjBFM0UwMDNFMEU3RTAwM0UxRTdFMDA3RTFDN0MwMDdDMUM3QzAwM0MzOEZDMDAzQzM4RkMwMDNDCi03MEY4MDAxRkUwNzAwMDA3ODAxRjJGN0JBRDI0PjEwNCBEPDAwMEZDMDAwN0ZGMDAwRjAzQzAxRTAxQzAzQzAxRTA3ODAxRQotMDc4MDNFMDc4MDNFMEY4MDNDMEY4MDE4MEZDMDAwMEZGODAwMEZGRjAwMDdGRkMwMDNGRkUwMDFGRkYwMDA3RkYwMDAwN0YwCi0wMDAzRjAwMDAxRjA3ODAwRjBGQzAwRjBGQzAwRjBGQzAxRjBGODAxRTBFMDAxRTBFMDAzQzBGMDA3ODA3ODFGMDAxRkZDMDAKLTA3RjAwMDE3MUY3QTlEMUQ+MTE1IEQ8MDNDMDAxQzAwRkYwMDNFMDFFNzgwN0YwMUM3QzA3RjAzODdDMDdGMDc4N0MwM0YwCi03MDdDMDFGMDcwRkMwMUYwRjBGODAxRTBFMEY4MDFFMEUxRjgwMEUwQzFGMDAxRTAwMUYwMDFDMDAzRjAwMUMwMDNFMDAxQzAKLTAzRTAwM0MwMDdFMDAzODAwN0MwMDM4MDA3QzAwMzgwMDdDMDA3MDAwRkMwMDcwMDBGODAwNzAwMEY4MDBFMDAwRjgwMEUwMAotMEY4MDFDMDAwNzgwMUMwMDA3QzAzODAwMDNDMDcwMDAwM0UwRTAwMDAwRkZDMDAwMDAzRjAwMDAxQzFGN0E5RDIxPjExOAotRCBFCi0lRW5kRFZJUFNCaXRtYXBGb250Ci0lRFZJUFNCaXRtYXBGb250OiBGYiBlY3JtMTQ0MCAxNC40IDIKLS9GYiAyIDk0IGRmPEZGRkZDMEZGRkZDMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMAotRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwCi1GRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDAKLUZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMAotRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwCi1GRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDAKLUZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMAotRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwCi1GRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDAKLUZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMAotRkZGRkMwRkZGRkMwMTI3ODc1RDkyMD45MSBEPEZGRkZDMEZGRkZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwCi0xRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAKLTFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMAotMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwCi0xRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAKLTFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMAotMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwCi0xRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAxRkMwMDAKLTFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMDFGQzAwMAotMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwMUZDMDAwCi0xRkMwMDAxRkMwMDAxRkMwRkZGRkMwRkZGRkMwMTI3ODdFRDkyMD45MyBEIEUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZjIGVjdGkxMDAwIDEwIDU3Ci0vRmMgNTcgMTIzIGRmPDAwMDAwMDAwRkYwMDAzRjAwMDAwMDAwM0ZGRTAwRkZDMDAwMDAwMEZDMEYwMUYxRTAwMDAwMDNGMDAKLTc4M0UwRjAwMDAwMDdFMDFGODdDM0YwMDAwMDA3QzAzRjhGQzdGMDAwMDAwRkMwM0Y4Rjg3RjAwMDAwMUY4MDNGOUY4N0YwMAotMDAwMUY4MDNGMUY4N0UwMDAwMDFGODAxRTFGODNDMDAwMDAzRjAwMDAzRjAwMDAwMDAwM0YwMDAwM0YwMDAwMDAwMDNGMDAwCi0wM0YwMDAwMDAwMDdGMDAwMDNGMDAwMDAwMDA3RTAwMDA3RjAwMDAwMDAwN0UwMDAwN0UwMDAwMDAwMDdFMDAwMDdFMDAwMDAKLTAwMDdFMDAwMDdFMDAwMDAwMDBGRTAwMDA3RTAwMDAwMDAwRkMwMDAwRkUwMDAwMDAwMEZDMDAwMEZDMDAwMDAwMDBGQzAwMAotMEZDMDAwMDAwMDBGQzAwMDBGQzAwMDAwMEZGRkZGRkZGRkZGQzAwMDBGRkZGRkZGRkZGRkMwMDAwRkZGRkZGRkZGRkZDMDAwCi0wMDFGODAwMDFGODAwMDAwMDAxRjgwMDAxRjgwMDAwMDAwMUY4MDAwMUY4MDAwMDAwMDNGODAwMDNGODAwMDAwMDAzRjAwMDAKLTNGMDAwMDAwMDAzRjAwMDAzRjAwMDAwMDAwM0YwMDAwM0YwMDAwMDAwMDNGMDAwMDNGMDAwMDAwMDA3RjAwMDA3RjAwMDAwMAotMDA3RTAwMDA3RTAwMDAwMDAwN0UwMDAwN0UwMDAwMDAwMDdFMDAwMDdFMDAwMDAwMDA3RTAwMDA3RTAwMDAwMDAwRkUwMDAwCi1GRTAwMDAwMDAwRkMwMDAwRkMwMDAwMDAwMEZDMDAwMEZDMDAwMDAwMDBGQzAwMDBGQzAwMDAwMDAwRkMwMDAwRkMwMDAwMDAKLTAxRkMwMDAwRkMwMDAwMDAwMUY4MDAwMUZDMDAwMDAwMDFGODAwMDFGODAwMDAwMDAxRjgwMDAxRjgwMDAwMDAwMUY4MDAwMQotRjgwMDAwMDAwM0Y4MDAwMUY4MDAwMDAwMDNGMDAwMDNGODAwMDAwMDAzRjAwMDAzRjAwMDAwMDAwM0YwMDAwM0YwMDAwMDAwCi0wM0YwMDAwM0YwMDAwMDAwMDdGMDAwMDNGMDAwMDAwMDA3RTAwMDA3RTAwMDAwMDAwN0UwMDAwN0UwMDAwMDAwMDdFMDAwMDcKLUUwMDAwMDAwMDdFMDAwMDdFMDAwMDAwMDBGQzAwMDBGQzAwMDAwMDAwRkMwMDAwRkMwMDAwMDAwMEZDMDAwMEZDMDAwMDAwMAotMEZDMDAwMEZDMDAwMDAwMDFGODAwMDFGODAwMDAwMDAxRjgwMDAxRjgwMDAwMDAwMUY4MDAwMUY4MDAwMDAxQzFGMDM4MDFGCi0wMDAwMDA3RTFGMEZDMDNGMDAwMDAwN0UzRTBGQzAzRTAwMDAwMEZFM0UxRkMwN0MwMDAwMDBGRTNDMUZDMDdDMDAwMDAwRkUKLTdDMUZDMEY4MDAwMDAwRjg3ODBGMDFFMDAwMDAwMDc4RjAwRjA3QzAwMDAwMDAzRkUwMDNGRjAwMDAwMDAwMEY4MDAwRkMwMAotMDAwMDAwNDA0QzgyQkEzMz4yNyBEPDAwMDAwMDAwM0ZGQzAwMDAwMDAwMDFGRkZGODAwMDAwMDAwN0UwMDdDMDAwMDAwMDFGCi04MDAxRTAwMDAwMDAzRjAwMDFGMDAwMDAwMDdFMDAwM0YwMDAwMDAwRkMwMDA3RjAwMDAwMDBGQzAwMDdGMDAwMDAwMUY4MDAKLTA3RjAwMDAwMDFGODAwMDdFMDAwMDAwM0YwMDAwMzgwMDAwMDAzRjAwMDAwMDAwMDAwMDNGMDAwMDAwMDAwMDAwM0YwMDAwMAotMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0UwMDAwMDAwMDAwMDA3RTAwMDAwMDAwMDAwMDdFMDAwMDAwMDAwMDAwN0UwMDAwMDAwCi0wMDAwMEZFMDAwMDAwMDAwMDAwRkMwMDAwMDAwMDAwMDBGQzAwMDAwMDAwMDAwMEZDMDAwMDAwMDAwMEZGRkZGRkZGRjAwMDAKLTBGRkZGRkZGRkYwMDAwMEZGRkZGRkZGRTAwMDAwMDFGODAwMDdFMDAwMDAwMUY4MDAwN0UwMDAwMDAxRjgwMDBGRTAwMDAwMAotM0Y4MDAwRkMwMDAwMDAzRjAwMDBGQzAwMDAwMDNGMDAwMEZDMDAwMDAwM0YwMDAxRkMwMDAwMDAzRjAwMDFGODAwMDAwMDdGCi0wMDAxRjgwMDAwMDA3RTAwMDFGODAwMDAwMDdFMDAwM0Y4MDAwMDAwN0UwMDAzRjAwMDAwMDA3RTAwMDNGMDAwMDAwMEZFMDAKLTAzRjAwMDAwMDBGQzAwMDdGMDAwMDAwMEZDMDAwN0UwMDAwMDAwRkMwMDA3RTAwMDAwMDBGQzAwMDdFMDAwMDAwMUZDMDAwRgotRTAwMDAwMDFGQzAwMEZDMDAwMDAwMUY4MDAwRkMxQzAwMDAxRjgwMDBGQzFDMDAwMDFGODAwMUZDMUMwMDAwMUY4MDAxRjgzCi1DMDAwMDNGODAwMUY4MzgwMDAwM0YwMDAxRjgzODAwMDAzRjAwMDFGODM4MDAwMDNGMDAwMUY4NzAwMDAwN0YwMDAxRjg3MDAKLTAwMDdFMDAwMUYwRjAwMDAwN0UwMDAwRjhFMDAwMDA3RTAwMDA3OUUwMDAwMDdFMDAwMDNGQzAwMDAwRkUwMDAwMEYwMDAwMAotMEZDMDAwMDAwMDAwMDAwRkMwMDAwMDAwMDAwMDBGQzAwMDAwMDAwMDAwMEY4MDAwMDAwMDAwMDAxRjgwMDAwMDAwMDAwMDFGCi04MDAwMDAwMDAwMUMxRjAwMDAwMDAwMDA3RTFGMDAwMDAwMDAwMDdFM0YwMDAwMDAwMDAwRkUzRTAwMDAwMDAwMDBGRTNDMDAKLTAwMDAwMDAwRkU3QzAwMDAwMDAwMDBGODc4MDAwMDAwMDAwMDc4RjAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDAwRjgwMDAwMAotMDAwMDAwMzQ0QzgyQkEyRj5JPDAwMDAwMDAwN0ZFMDAwMDAwMDAwMDNGRkZDN0UwMDAwMDAwRkMwM0U3RTAwMDAwMDFGMDAKLTBGN0UwMDAwMDAzRTAwM0ZGRTAwMDAwMDdDMDA3RkZFMDAwMDAwRkMwMDdGRkMwMDAwMDBGODAwN0ZGQzAwMDAwMUY4MDA3RgotRkMwMDAwMDFGODAwM0RGQzAwMDAwM0YwMDAwMUY4MDAwMDAzRjAwMDAxRjgwMDAwMDNGMDAwMDNGODAwMDAwM0YwMDAwM0Y4Ci0wMDAwMDdFMDAwMDNGMDAwMDAwN0UwMDAwM0YwMDAwMDA3RTAwMDA3RjAwMDAwMDdFMDAwMDdGMDAwMDAwRkUwMDAwN0UwMDAKLTAwMEZDMDAwMDdFMDAwMDAwRkMwMDAwRkUwMDAwMDBGQzAwMDBGRTAwMDAwMEZDMDAwMEZDMDAwMEZGRkZGRkZGRkMwMDAwRgotRkZGRkZGRkZDMDAwMEZGRkZGRkZGRkMwMDAwMDFGODAwMDFGODAwMDAwMUY4MDAwMUY4MDAwMDAxRjgwMDAzRjgwMDAwMDNGCi04MDAwM0Y4MDAwMDAzRjAwMDAzRjAwMDAwMDNGMDAwMDNGMDAwMDAwM0YwMDAwN0YwMDAwMDAzRjAwMDA3RjAwMDAwMDdGMDAKLTAwN0UwMDAwMDA3RTAwMDA3RTAwMDAwMDdFMDAwMEZFMDAwMDAwN0UwMDAwRkUwMDAwMDA3RTAwMDBGQzAwMDAwMEZFMDAwMAotRkMwMDAwMDBGQzAwMDFGQzAwMDAwMEZDMDAwMUZDMDAwMDAwRkMwMDAxRjgwMDAwMDBGQzAwMDFGODAwMDAwMUZDMDAwM0Y4Ci0wMDAwMDFGODAwMDNGODAwMDAwMUY4MDAwM0YwNzAwMDAxRjgwMDAzRjA3MDAwMDFGODAwMDdGMDcwMDAwM0Y4MDAwN0YwRjAKLTAwMDNGMDAwMDdFMEUwMDAwM0YwMDAwN0UwRTAwMDAzRjAwMDA3RTBFMDAwMDNGMDAwMDdFMUMwMDAwN0YwMDAwN0UxQzAwMAotMDdFMDAwMDdDM0MwMDAwN0UwMDAwM0UzODAwMDA3RTAwMDAxRTc4MDAwMDdFMDAwMDBGRjAwMDAwRkMwMDAwMDNDMDAwMDBGCi1DMDAwMDAwMDAwMDAwRkMwMDAwMDAwMDAwMDBGQzAwMDAwMDAwMDAwMUY4MDAwMDAwMDAwMDAxRjgwMDAwMDAwMDAwMDFGODAKLTAwMDAwMDAwMUMxRjAwMDAwMDAwMDA3RTFGMDAwMDAwMDAwMDdFM0UwMDAwMDAwMDAwRkUzRTAwMDAwMDAwMDBGRTNDMDAwMAotMDAwMDAwRkU3QzAwMDAwMDAwMDBGODc4MDAwMDAwMDAwMDc4RjAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDAwRjgwMDAwMDAwCi0wMDAwMzc0QzgyQkEzMT5JPDAzQzAwN0YwMEZGMDFGRjAxRkY4MUZGODFGRjgxRkYwMDdCMDAwMzAwMDcwMDA2MDAwNjAwMAotRTAwMEMwMDFDMDAzODAwMzAwMDcwMDBFMDAxQzAwMzgwMDcwMDBFMDAwQzAwMDBEMTk3QTg4MTk+NDQKLUQ8MDAwMDAzRjgwMDAwMDAxRkZFMDAwMDAwN0MxRjAwMDAwMEYwMEY4MDAwMDNFMDA3QzAwMDA3QzAwM0MwMDAwRjgwMDNFMAotMDAwRjAwMDNFMDAwMUYwMDAzRTAwMDNFMDAwM0YwMDAzRTAwMDNGMDAwN0MwMDAzRjAwMEZDMDAwM0YwMDBGQzAwMDNGMDAxCi1GODAwMDNGMDAxRjgwMDAzRjAwM0Y4MDAwN0YwMDNGODAwMDdGMDAzRjAwMDA3RjAwN0YwMDAwN0UwMDdGMDAwMDdFMDA3RTAKLTAwMEZFMDBGRTAwMDBGRTAwRkUwMDAwRkUwMEZFMDAwMEZFMDFGQzAwMDFGQzAxRkMwMDAxRkMwMUZDMDAwMUZDMDFGQzAwMAotMUZDMDNGODAwMDNGODAzRjgwMDAzRjgwM0Y4MDAwM0Y4MDNGODAwMDNGODA3RjAwMDA3RjAwN0YwMDAwN0YwMDdGMDAwMDdGCi0wMDdGMDAwMDdFMDA3RTAwMDBGRTAwN0UwMDAwRkUwMEZFMDAwMEZDMDBGRTAwMDFGQzAwRkUwMDAxRjgwMEZDMDAwMUY4MDAKLUZDMDAwM0YwMDBGQzAwMDNGMDAwRkMwMDAzRTAwMEZDMDAwN0UwMDA3QzAwMDdDMDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QwotMDAxRjAwMDAzRTAwM0UwMDAwM0UwMDdDMDAwMDFGMDBGODAwMDAwRjgzRTAwMDAwMDdGRjgwMDAwMDAwRkUwMDAwMDAyNDM5Ci03N0I2MkE+NDggRDwwMDAwMDAzODAwMDAwMDM4MDAwMDAwNzAwMDAwMDBGMDAwMDAwMUYwMDAwMDAzRjAwMDAwMDdFMDAwMDAKLTBGRTAwMDAwM0ZFMDAwMDBGRkUwMDAwN0ZGQzAwMDNGQ0ZDMDAwM0YxRkMwMDAxMDFGQzAwMDAwMUY4MDAwMDAxRjgwMDAwMAotM0Y4MDAwMDAzRjgwMDAwMDNGMDAwMDAwM0YwMDAwMDA3RjAwMDAwMDdGMDAwMDAwN0UwMDAwMDA3RTAwMDAwMEZFMDAwMDAwCi1GRTAwMDAwMEZDMDAwMDAwRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRjgwMDAwMDFGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDMKLUYwMDAwMDAzRjAwMDAwMDdGMDAwMDAwN0YwMDAwMDA3RTAwMDAwMDdFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZDMDAwMDAwRgotQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGODAwMDAwMUY4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0YwMDAwMDA3RjgwMDBGRkZGCi1GRjgwRkZGRkZGODBGRkZGRkY4MDFEMzc3N0I2MkE+STwwMDAwMDNGMDAwMDAwMDFGRkUwMDAwMDA3QzBGODAwMDAwRjAwNwotQzAwMDAxQzAwM0UwMDAwMzgwMDNGMDAwMDcwMDAxRjAwMDBGMDAwMUY4MDAxRTAwMDFGODAwMUMwMDAxRjgwMDNDNjAwMUY4Ci0wMDM4NzAwMUZDMDA3ODMwMDFGQzAwNzAzMDAxRkMwMEYwMzAwMUZDMDBFMDMwMDFGQzAwRTA3MDAzRkMwMUUwNjAwM0Y4MDEKLUMwNjAwM0Y4MDFDMEUwMDNGODAxQzBDMDA3RjgwMUMxQzAwN0YwMDE4MTgwMEZGMDAxODM4MDBGRTAwMUM3MDAxRkMwMDFGRQotMDAzRkMwMDA3ODAwM0Y4MDAwMDAwMDdGMDAwMDAwMDBGRTAwMDAwMDAxRjgwMDAwMDAwM0YwMDAwMDAwMDdFMDAwMDAwMDFGCi04MDAwMDAwMDNGMDAwMDAwMDBGQzAwMDAwMDAxRjAwMDAwMDAwN0MwMDAwMDAwMEY4MDAwMDAwMDNFMDAwMDAwMDA3QzAwMDAKLTAwMDBGODAwMDBDMDAxRjAwMDAxQzAwM0UwMDAwMUMwMDNDMDAwMDFDMDA3ODAwMDAzQzAwRjAwMDAwMzgwMEUwMDAwMDc4MAotMUUwMDAwMEY4MDNDMDAwMDFGMDAzRkY4MDAzRjAwN0ZGRkMwN0UwMDc4M0ZGRkZDMDA3MDBGRkZGQzAwRjAwN0ZGRjgwMEUwCi0wMUZGRjAwMEUwMDBGRkMwMDBFMDAwMUYwMDAwMjYzOTc5QjYyQT5JPDAwMDAwMDAwRTAwMDAwMDAwM0YwMDAwMDAwMDNGMAotMDAwMDAwMDNGMDAwMDAwMDA3RjAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwRkUwMDAwMDAwMEZDMDAwCi0wMDAwMEZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDNGODAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAKLTAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMwotRjAwMDAwMDAwM0YwMDAwMDAwMDNFMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMEY4MDAwMDAwMDFGODAwMDAwMDAxRjAwCi0wMDAwMDAzRTAwMDAwMDAwM0UwMDAwMDAwMDdDMDAwMDAwMDBGODFDMDAwMDAwRjgzRTAwMDAwMUYwN0UwMDAwMDNFMDdFMDAKLTAwMDNDMDdFMDAwMDA3QzBGRTAwMDAwRjgwRkMwMDAwMUYwMEZDMDAwMDNFMDBGQzAwMDAzQzAxRkMwMDAwNzgwMUY4MDAwMAotRjAwMUY4MDAwMUUwMDFGODAwMDNDMDAzRjgwMDA3RkUwM0YwMDAxRkZGQzNGMDAwM0ZGRkZCRjAwMDdDMDFGRkYwNDBGMDAwCi0zRkZGRTA2MDAwMDdGRkUwMDAwMDA3RkYwMDAwMDAwRkUwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMUYKLUMwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwM0Y4MDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMAotMDAwMDAwM0YwMDAwMDAwMDNFMDAwMDAwMDAxQzAwMDAyNDQ3N0RCNjJBPjUyIEQ8MDAwMzAwMDAzODAwMDc4MDAwRjgwMDA3Ci1GMDA3RjAwMDA3RkZGRkUwMDAwN0ZGRkY4MDAwMEZGRkZGMDAwMDBGRkZGRTAwMDAwRkZGRjgwMDAwMEZGRkMwMDAwMDFFMUMKLTAwMDAwMDFDMDAwMDAwMDAxQzAwMDAwMDAwMUMwMDAwMDAwMDNDMDAwMDAwMDAzODAwMDAwMDAwMzgwMDAwMDAwMDM4MDAwMAotMDAwMDc4MDAwMDAwMDA3MDAwMDAwMDAwNzAwMDAwMDAwMDcwN0YwMDAwMDBGMUZGQzAwMDAwRTc4M0UwMDAwMEZFMDFGMDAwCi0wMEY4MDBGODAwMDFGMDAwRjgwMDAxRTAwMEZDMDAwMUMwMDA3QzAwMDE4MDAwN0MwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAKLTAwMDA3RTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMUZFMDAwMDAwMDFGQzAwMUUwMAotMDFGQzAwN0YwMDAxRkMwMDdGMDAwM0ZDMDBGRjAwMDNGODAwRkYwMDAzRjgwMEZFMDAwN0YwMDBGODAwMDdGMDAwRTAwMDA3Ci1FMDAwRTAwMDBGRTAwMEUwMDAxRkMwMDBFMDAwMUY4MDAwRjAwMDNGMDAwMEYwMDA3RTAwMDA3ODAwRkMwMDAwN0MwMUY4MDAKLTAwM0UwN0YwMDAwMDFGRkZDMDAwMDAwRkZGMDAwMDAwMDNGODAwMDAwMDI1Mzk3N0I2MkE+STwwMDAwMDNGODAwMDAwMDBGCi1GRjAwMDAwMDNGRkY4MDAwMDBGRTA3RTAwMDAxRjAwM0UwMDAwM0UwMDFGMDAwMDdDMDAxRjAwMDBGODAwMEY4MDAxRjAwMDAKLUY4MDAxRjAwMDBGODAwM0UwMDAwRjgwMDNFMDAwMEY4MDAzRTAwMDFGODAwN0UwMDAxRjAwMDdFMDAwMUYwMDA3RTAwMDNGMAotMDA3RTAwMDNFMDAwN0YwMDA3RTAwMDdGODAwRkMwMDA3RkMwMEY4MDAwN0ZFMDFGMDAwMDNGRjAzRTAwMDAzRkY4NzgwMDAwCi0xRkZERjAwMDAwMEZGRkMwMDAwMDA3RkY4MDAwMDAwM0ZGQzAwMDAwMDNGRkUwMDAwMDBGRkZGMDAwMDAxRTdGRjgwMDAwN0MKLTFGRkMwMDAwRjgwRkZDMDAwM0UwMDdGRTAwMDdDMDAzRkUwMDBGQzAwMUZGMDAxRjgwMDBGRjAwMUYwMDAwN0YwMDNFMDAwMAotN0YwMDdFMDAwMDNGMDA3QzAwMDAzRjAwN0MwMDAwM0YwMEZDMDAwMDNFMDBGODAwMDAzRTAwRjgwMDAwM0UwMEY4MDAwMDdFCi0wMEY4MDAwMDdDMDBGODAwMDBGODAwRjgwMDAwRjgwMEY4MDAwMUYwMDBGQzAwMDNFMDAwN0MwMDA3QzAwMDdFMDAwRjgwMDAKLTNGMDAzRjAwMDAxRjgwRkUwMDAwMEZGRkY4MDAwMDAzRkZFMDAwMDAwMEZGMDAwMDAwMjUzOTc4QjYyQT41NgotRDwwMDAwMDNGODAwMDAwMDBGRkUwMDAwMDAzRkZGODAwMDAwRkUwRkMwMDAwMUY4MDdFMDAwMDNGMDAzRTAwMDA3RTAwM0YwCi0wMDBGQzAwMUYwMDAxRjgwMDFGMDAwM0YwMDAxRjAwMDdGMDAwMUY4MDA3RTAwMDFGODAwRkUwMDAxRjgwMEZFMDAwMUY4MDEKLUZDMDAwMUY4MDFGQzAwMDNGODAxRkMwMDAzRjgwM0ZDMDAwM0Y4MDNGODAwMDNGODAzRjgwMDAzRjAwM0Y4MDAwN0YwMDdGOAotMDAwN0YwMDdGMDAwMDdGMDA3RjAwMDBGRjAwN0YwMDAwRkYwMDdGMDAwMEZFMDA3RjAwMDFGRTAwM0UwMDAxRkUwMDNFMDAwCi0zRkUwMDNGMDAwN0ZDMDAxRjAwMDdGQzAwMUYwMDBGRkMwMDBGODAxRkZDMDAwNzgwM0JGODAwMDNDMEYzRjgwMDAxRkZDM0YKLTgwMDAwN0YwN0YwMDAwMDAwMDdGMDAwMDAwMDA3RTAwMDAwMDAwRkUwMDAwMDAwMEZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMAotMDAwMDAzRjAwMDAwMDAwM0YwMDAzRTAwMDdFMDAwN0YwMDBGQzAwMDdGMDAwRjgwMDA3RjAwMUY4MDAwRkUwMDNGMDAwMEZDCi0wMDdFMDAwMDcwMDBGQzAwMDA3ODAzRjAwMDAwN0MwRkUwMDAwMDNGRkY4MDAwMDAxRkZFMDAwMDAwMDNGODAwMDAwMDI1MzkKLTc4QjYyQT5JPDA3RkZGRkZGRkZGRkZDMEZGRkZGRkZGRkZGRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkUwN0ZGRkZGRkZGRkZGCi1DMDM3MTQ3NzlFNDA+NjEgRDwwMDAwMDAwM0ZFMDAwRTAwMDAwMDNGRkY4MDFFMDAwMDAwRkZGRkUwM0MwMDAwMDNGRTAxRjAKLTNDMDAwMDBGRjAwMDc4N0MwMDAwM0ZDMDAwM0NGQzAwMDA3RjAwMDAxRkY4MDAwMEZFMDAwMDBGRjgwMDAzRkMwMDAwMEZGOAotMDAwN0Y4MDAwMDA3RjgwMDBGRjAwMDAwMDdGMDAwMUZFMDAwMDAwM0YwMDAzRkMwMDAwMDAzRjAwMDNGODAwMDAwMDNGMDAwCi03RjAwMDAwMDAzRTAwMEZGMDAwMDAwMDNFMDAxRkUwMDAwMDAwM0UwMDFGQzAwMDAwMDAzRTAwM0ZDMDAwMDAwMDNDMDA3RjgKLTAwMDAwMDAzQzAwN0Y4MDAwMDAwMDNDMDBGRjAwMDAwMDAwM0MwMEZGMDAwMDAwMDAzODAxRkUwMDAwMDAwMDM4MDFGRTAwMAotMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDdGQzAwMDAwCi0wMDAwMDA3RjgwMDAwMDAwMDAwMDdGODAwMDAwMDAwMDAwN0Y4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGMDAwMDAwMDAKLTAwMDBGRjAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMzgwMEZGMDAwMDAwMDAzOAotMDBGRjAwMDAwMDAwNzgwMEZFMDAwMDAwMDA3MDAwRkYwMDAwMDAwMDcwMDBGRjAwMDAwMDAwRjAwMDdGMDAwMDAwMDBFMDAwCi03RjAwMDAwMDAxRTAwMDdGMDAwMDAwMDFDMDAwN0YwMDAwMDAwM0MwMDAzRjgwMDAwMDA3ODAwMDNGODAwMDAwMDcwMDAwMUYKLTgwMDAwMDBFMDAwMDFGQzAwMDAwMUUwMDAwMEZDMDAwMDAzQzAwMDAwRkUwMDAwMDc4MDAwMDA3RjAwMDAxRjAwMDAwMDNGOAotMDAwM0MwMDAwMDAxRkUwMDBGODAwMDAwMDA3RjgwN0UwMDAwMDAwMDNGRkZGQzAwMDAwMDAwMEZGRkUwMDAwMDAwMDAwMEZGCi0wMDAwMDAwMDM3M0Q3NEJBM0I+NjcgRDwwMDAzRkZGRkZGRkUwMDAwMDAwM0ZGRkZGRkZGQzAwMDAwMDNGRkZGRkZGRkYwMDAKLTAwMDAwN0Y4MDAwRkY4MDAwMDAwMDdGMDAwMDNGQzAwMDAwMDA3RjAwMDAwRkUwMDAwMDAwRkYwMDAwMDdGMDAwMDAwMEZGMAotMDAwMDNGODAwMDAwMEZFMDAwMDAxRjgwMDAwMDBGRTAwMDAwMUZDMDAwMDAxRkUwMDAwMDBGQzAwMDAwMUZFMDAwMDAwRkUwCi0wMDAwMUZDMDAwMDAwRkUwMDAwMDFGQzAwMDAwMDdFMDAwMDAzRkMwMDAwMDA3RTAwMDAwM0ZDMDAwMDAwN0YwMDAwMDNGODAKLTAwMDAwN0YwMDAwMDNGODAwMDAwMDdGMDAwMDA3RjgwMDAwMDA3RjAwMDAwN0Y4MDAwMDAwN0YwMDAwMDdGMDAwMDAwMDdGMAotMDAwMDdGMDAwMDAwMDdGMDAwMDBGRjAwMDAwMDA3RjAwMDAwRkYwMDAwMDAwRkYwMDAwMEZFMDAwMDAwMEZGMDAwMDBGRTAwCi0wMDAwMEZGMDAwMDFGRTAwMDAwMDBGRjAwMDAxRkUwMDAwMDAwRkUwMDAwMUZDMDAwMDAwMUZFMDAwMDFGQzAwMDAwMDFGRTAKLTAwMDNGQzAwMDAwMDFGRTAwMDAzRkMwMDAwMDAxRkMwMDAwM0Y4MDAwMDAwM0ZDMDAwMDNGODAwMDAwMDNGQzAwMDA3RjgwMAotMDAwMDNGODAwMDA3RjgwMDAwMDA3RjgwMDAwN0YwMDAwMDAwN0YwMDAwMDdGMDAwMDAwMDdGMDAwMDBGRjAwMDAwMDBGRTAwCi0wMDBGRjAwMDAwMDBGRTAwMDAwRkUwMDAwMDAxRkMwMDAwMEZFMDAwMDAwMUY4MDAwMDFGRTAwMDAwMDNGODAwMDAxRkUwMDAKLTAwMDdGMDAwMDAxRkMwMDAwMDA3RTAwMDAwMUZDMDAwMDAwRkMwMDAwMDNGQzAwMDAwMUY4MDAwMDAzRkMwMDAwMDNGODAwMAotMDAzRjgwMDAwMDdGMDAwMDAwM0Y4MDAwMDBGQzAwMDAwMDdGODAwMDAzRjgwMDAwMDA3RjgwMDAwN0YwMDAwMDAwN0YwMDAwCi0xRkMwMDAwMDAwRkYwMDAxRkY4MDAwMDA3RkZGRkZGRkZFMDAwMDAwRkZGRkZGRkZGMDAwMDAwMEZGRkZGRkZGODAwMDAwMDAKLTNDMzk3Q0I4M0Y+STwwMDA3RkZGRkZGRkZGRjAwMDdGRkZGRkZGRkZGMDAwN0ZGRkZGRkZGRkYwMDAwMEZGMDAwMDNGRjAwCi0wMDBGRTAwMDAwN0YwMDAwMEZFMDAwMDAzRTAwMDAxRkUwMDAwMDNFMDAwMDFGRTAwMDAwMUUwMDAwMUZDMDAwMDAxRTAwMDAKLTFGQzAwMDAwMUUwMDAwM0ZDMDAwMDAxRTAwMDAzRkMwMDAwMDFFMDAwMDNGODAwMDAwMUUwMDAwM0Y4MDAwMDAxQzAwMDA3RgotODAwMDAwMUMwMDAwN0Y4MDAwMDAxQzAwMDA3RjAwMDM4MDFDMDAwMDdGMDAwMzgwMUMwMDAwRkYwMDA3ODAxQzAwMDBGRjAwCi0wNzgwMDAwMDAwRkUwMDA3MDAwMDAwMDBGRTAwMEYwMDAwMDAwMUZFMDAwRjAwMDAwMDAxRkUwMDFGMDAwMDAwMDFGQzAwM0UKLTAwMDAwMDAxRkMwMDdFMDAwMDAwMDNGRkZGRkUwMDAwMDAwM0ZGRkZGRTAwMDAwMDAzRkZGRkZDMDAwMDAwMDNGODAwRkMwMAotMDAwMDA3RjgwMDdDMDAwMDAwMDdGODAwM0MwMDAwMDAwN0YwMDAzODAwMDAwMDA3RjAwMDM4MDAwMDAwMEZGMDAwNzgwMDAwCi0wMDBGRjAwMDc4MDBFMDAwMEZFMDAwNzAwMEUwMDAwRkUwMDA3MDAxRTAwMDFGRTAwMDcwMDFDMDAwMUZFMDAwMDAwMUMwMDAKLTFGQzAwMDAwMDNDMDAwMUZDMDAwMDAwMzgwMDAzRkMwMDAwMDA3ODAwMDNGQzAwMDAwMDcwMDAwM0Y4MDAwMDAwRjAwMDAzRgotODAwMDAwMEYwMDAwN0Y4MDAwMDAxRTAwMDA3RjgwMDAwMDNFMDAwMDdGMDAwMDAwM0MwMDAwN0YwMDAwMDA3QzAwMDBGRjAwCi0wMDAwRkMwMDAwRkYwMDAwMDFGODAwMDBGRTAwMDAwN0Y4MDAwMUZFMDAwMDdGRjAwMEZGRkZGRkZGRkZGMDAwRkZGRkZGRkYKLUZGRjAwMEZGRkZGRkZGRkZFMDAwMzgzOTdCQjgzOD5JPDAwMDdGRkZGRkZGRkZFMDAwN0ZGRkZGRkZGRkUwMDA3RkZGRkZGCi1GRkZFMDAwMDBGRjAwMDA3RkUwMDAwMEZFMDAwMDBGRTAwMDAwRkUwMDAwMDdDMDAwMDFGRTAwMDAwM0MwMDAwMUZFMDAwMDAKLTNDMDAwMDFGQzAwMDAwM0MwMDAwMUZDMDAwMDAzQzAwMDAzRkMwMDAwMDNDMDAwMDNGQzAwMDAwM0MwMDAwM0Y4MDAwMDAzQwotMDAwMDNGODAwMDAwMzgwMDAwN0Y4MDAwMDAzODAwMDA3RjgwMDAwMDM4MDAwMDdGMDAwMDAwMzgwMDAwN0YwMDAzODAzODAwCi0wMEZGMDAwNzgwMzgwMDAwRkYwMDA3ODAwMDAwMDBGRTAwMDcwMDAwMDAwMEZFMDAwNzAwMDAwMDAxRkUwMDBGMDAwMDAwMDEKLUZFMDAwRjAwMDAwMDAxRkMwMDFFMDAwMDAwMDFGQzAwM0UwMDAwMDAwM0ZDMDBGRTAwMDAwMDAzRkZGRkZFMDAwMDAwMDNGRgotRkZGQzAwMDAwMDAzRkZGRkZDMDAwMDAwMDdGODAwRkMwMDAwMDAwN0Y4MDA3QzAwMDAwMDA3RjAwMDc4MDAwMDAwMDdGMDAwCi03ODAwMDAwMDBGRjAwMDc4MDAwMDAwMEZGMDAwNzgwMDAwMDAwRkUwMDA3MDAwMDAwMDBGRTAwMDcwMDAwMDAwMUZFMDAwRjAKLTAwMDAwMDFGRTAwMEYwMDAwMDAwMUZDMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwM0ZDMDAwMDAwMAotMDAwMDNGODAwMDAwMDAwMDAwM0Y4MDAwMDAwMDAwMDA3RjgwMDAwMDAwMDAwMDdGODAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwCi0wMDdGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwRkYKLUZGRkYwMDAwMDAwMEZGRkZGRjAwMDAwMDAwRkZGRkZGMDAwMDAwMDAzNzM5N0JCODM2Pkk8MDAwM0ZGRkZGODBGRkZGRkUwCi0wMDAzRkZGRkY4MEZGRkZGRTAwMDAzRkZGRkY4MEZGRkZGRTAwMDAwMDdGODAwMDAxRkUwMDAwMDAwMDdGMDAwMDAxRkMwMDAKLTAwMDAwN0YwMDAwMDFGQzAwMDAwMDAwRkYwMDAwMDNGQzAwMDAwMDAwRkYwMDAwMDNGODAwMDAwMDAwRkUwMDAwMDNGODAwMAotMDAwMDBGRTAwMDAwM0Y4MDAwMDAwMDFGRTAwMDAwN0Y4MDAwMDAwMDFGRTAwMDAwN0YwMDAwMDAwMDFGQzAwMDAwN0YwMDAwCi0wMDAwMUZDMDAwMDA3RjAwMDAwMDAwM0ZDMDAwMDBGRjAwMDAwMDAwM0ZDMDAwMDBGRTAwMDAwMDAwM0Y4MDAwMDBGRTAwMDAKLTAwMDAzRjgwMDAwMEZFMDAwMDAwMDA3RjgwMDAwMUZFMDAwMDAwMDA3RjgwMDAwMUZDMDAwMDAwMDA3RjAwMDAwMUZDMDAwMAotMDAwMDdGMDAwMDAxRkMwMDAwMDAwMEZGMDAwMDAzRkMwMDAwMDAwMEZGMDAwMDAzRjgwMDAwMDAwMEZFMDAwMDAzRjgwMDAwCi0wMDAwRkUwMDAwMDNGODAwMDAwMDAxRkZGRkZGRkZGODAwMDAwMDAxRkZGRkZGRkZGMDAwMDAwMDAxRkZGRkZGRkZGMDAwMDAKLTAwMDFGQzAwMDAwN0YwMDAwMDAwMDNGQzAwMDAwRkYwMDAwMDAwMDNGQzAwMDAwRkUwMDAwMDAwMDNGODAwMDAwRkUwMDAwMAotMDAwM0Y4MDAwMDBGRTAwMDAwMDAwN0Y4MDAwMDFGRTAwMDAwMDAwN0Y4MDAwMDFGQzAwMDAwMDAwN0YwMDAwMDFGQzAwMDAwCi0wMDA3RjAwMDAwMUZDMDAwMDAwMDBGRjAwMDAwM0ZDMDAwMDAwMDBGRjAwMDAwM0Y4MDAwMDAwMDBGRTAwMDAwM0Y4MDAwMDAKLTAwMEZFMDAwMDAzRjgwMDAwMDAwMUZFMDAwMDA3RjgwMDAwMDAwMUZFMDAwMDA3RjAwMDAwMDAwMUZDMDAwMDA3RjAwMDAwMAotMDAxRkMwMDAwMDdGMDAwMDAwMDAzRkMwMDAwMEZGMDAwMDAwMDAzRkMwMDAwMEZFMDAwMDAwMDAzRjgwMDAwMEZFMDAwMDAwCi0wMDNGODAwMDAwRkUwMDAwMDAwMDdGODAwMDAxRkUwMDAwMDAwMDdGODAwMDAxRkMwMDAwMDAwMDdGMDAwMDAxRkMwMDAwMDAKLTAwRkYwMDAwMDNGQzAwMDAwMDdGRkZGRTAxRkZGRkY4MDAwMEZGRkZGRTAzRkZGRkY4MDAwMEZGRkZGRTAzRkZGRkY4MDAwMAotNDMzOTdDQjgzRT43MiBEPDAwMDNGRkZGRjgwMDAzRkZGRkY4MDAwM0ZGRkZGODAwMDAwN0Y4MDAwMDAwMDdGMDAwMDAwMDA3Ci1GMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGQzAKLTAwMDAwMDFGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMAotMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMUZFMDAwMDAwCi0wMUZFMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDcKLUY4MDAwMDAwMDdGODAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkUwMDAwMDAwMEZFMAotMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0Y4MDAwCi0wMDAwM0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0YwMDAwMDAwMEZGODAwMDAwRkZGRkZGMDAwMEZGRkZGRjAwMDAKLUZGRkZGRTAwMDAyNTM5N0NCODIwPkk8MDAwN0ZGRkZGQzAwMDAwN0ZGRkZGQzAwMDAwN0ZGRkZGODAwMDAwMDBGRjgwMDAwCi0wMDAwMEZGMDAwMDAwMDAwMEZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAKLTAwMDAzRkMwMDAwMDAwMDAzRkMwMDAwMDAwMDAzRjgwMDAwMDAwMDAzRjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMAotMDAwMDdGMDAwMDAwMDAwMDdGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwCi0wMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAzRkMwMDAwMDAwMDAzRkMwMDAwMDAKLTAwMDNGODAwMDAwMDAwMDNGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGMDAwMDAwMDAwMDdGMDAwMDAwMAotMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDBDMDAwRkUwMDAwMDFDMDAwRkUwMDAwMDFDMDAxRkUwMDAwMDNDMDAxRkUwMDAwMDM4Ci0wMDFGQzAwMDAwNzgwMDFGQzAwMDAwNzgwMDNGQzAwMDAwNzAwMDNGQzAwMDAwRjAwMDNGODAwMDAwRTAwMDNGODAwMDAxRTAKLTAwN0Y4MDAwMDNFMDAwN0Y4MDAwMDNDMDAwN0YwMDAwMDdDMDAwN0YwMDAwMEZDMDAwRkYwMDAwMUY4MDAwRkYwMDAwM0Y4MAotMDBGRTAwMDBGRjgwMDFGRTAwMDdGRjAwRkZGRkZGRkZGRjAwRkZGRkZGRkZGRjAwRkZGRkZGRkZGRTAwMkUzOTdCQjgzND4KLTc2IEQ8MDAwN0ZGRjgwMDAwMDAwN0ZGRjAwMDA3RkZGODAwMDAwMDBGRkZGMDAwMDdGRkY4MDAwMDAwMUZGRkUwMDAwMDBGCi1GODAwMDAwMDFGRjAwMDAwMDAwRkY4MDAwMDAwM0ZFMDAwMDAwMDBGRjgwMDAwMDAzRkUwMDAwMDAwMUZGODAwMDAwMDdGRTAKLTAwMDAwMDFGRjgwMDAwMDBFRkMwMDAwMDAwMURGODAwMDAwMEVGQzAwMDAwMDAxQ0ZDMDAwMDAxQ0ZDMDAwMDAwMDNDRkMwMAotMDAwMURGQzAwMDAwMDAzQ0ZDMDAwMDAzOUY4MDAwMDAwMDM4RkMwMDAwMDcxRjgwMDAwMDAwMzhGQzAwMDAwNzFGODAwMDAwCi0wMDc4RkMwMDAwMEUzRjgwMDAwMDAwNzhGQzAwMDAwRTNGMDAwMDAwMDA3MEZDMDAwMDFDM0YwMDAwMDAwMDcwRkMwMDAwMUMKLTNGMDAwMDAwMDBGMEZDMDAwMDM4N0YwMDAwMDAwMEYwRkMwMDAwNzA3RTAwMDAwMDAwRTBGQzAwMDA3MDdFMDAwMDAwMDBFMAotN0UwMDAwRTA3RTAwMDAwMDAxRTA3RTAwMDBFMEZFMDAwMDAwMDFFMDdFMDAwMUMwRkMwMDAwMDAwMUMwN0UwMDAzODBGQzAwCi0wMDAwMDFDMDdFMDAwMzgwRkMwMDAwMDAwM0MwN0UwMDA3MDFGQzAwMDAwMDAzQzA3RTAwMDcwMUY4MDAwMDAwMDM4MDdFMDAKLTBFMDFGODAwMDAwMDAzODA3RTAwMEUwMUY4MDAwMDAwMDc4MDdFMDAxQzAzRjgwMDAwMDAwNzgwN0UwMDM4MDNGMDAwMDAwMAotMDcwMDdFMDAzODAzRjAwMDAwMDAwNzAwM0YwMDcwMDNGMDAwMDAwMDBGMDAzRjAwNzAwN0YwMDAwMDAwMEYwMDNGMDBFMDA3Ci1FMDAwMDAwMDBFMDAzRjAxQzAwN0UwMDAwMDAwMEUwMDNGMDFDMDA3RTAwMDAwMDAxRTAwM0YwMzgwMEZFMDAwMDAwMDFFMDAKLTNGMDM4MDBGQzAwMDAwMDAxQzAwM0YwNzAwMEZDMDAwMDAwMDFDMDAzRjA3MDAwRkMwMDAwMDAwM0MwMDNGMEUwMDFGQzAwMAotMDAwMDNDMDAzRjFDMDAxRjgwMDAwMDAwMzgwMDNGMUMwMDFGODAwMDAwMDAzODAwMUZCODAwMUY4MDAwMDAwMDc4MDAxRkI4Ci0wMDNGODAwMDAwMDA3ODAwMUZGMDAwM0YwMDAwMDAwMDcwMDAxRkUwMDAzRjAwMDAwMDAwNzAwMDFGRTAwMDNGMDAwMDAwMDAKLUYwMDAxRkMwMDA3RjAwMDAwMDAwRjAwMDFGQzAwMDdFMDAwMDAwMDFGMDAwMUY4MDAwN0UwMDAwMDAwN0Y4MDAxRjgwMDBGRQotMDAwMDAwRkZGRkMwMUYwMDdGRkZGQzAwMDBGRkZGQzAxRTAwN0ZGRkZDMDAwMEZGRkZDMDBFMDA3RkZGRkMwMDAwNEMzOTdBCi1CODRBPkk8MDAwM0ZGRjgwMDAwRkZGRkUwMDAwM0ZGRjgwMDAwRkZGRkUwMDAwM0ZGRkMwMDAwRkZGRkUwMDAwMDA3RkMwMAotMDAwN0Y4MDAwMDAwMDdGRTAwMDAwM0YwMDAwMDAwMDdGRTAwMDAwM0UwMDAwMDAwMEZGRTAwMDAwM0MwMDAwMDAwMEZGRjAwCi0wMDAzQzAwMDAwMDAwRTdGMDAwMDAzODAwMDAwMDAwRTdGMDAwMDAzODAwMDAwMDAxRTdGODAwMDA3ODAwMDAwMDAxRTNGODAKLTAwMDcwMDAwMDAwMDFDM0Y4MDAwMDcwMDAwMDAwMDFDM0ZDMDAwMDcwMDAwMDAwMDNDMUZDMDAwMEYwMDAwMDAwMDNDMUZFMAotMDAwRTAwMDAwMDAwMzgwRkUwMDAwRTAwMDAwMDAwMzgwRkUwMDAwRTAwMDAwMDAwNzgwRkYwMDAxRTAwMDAwMDAwNzgwN0YwCi0wMDFDMDAwMDAwMDA3MDA3RjAwMDFDMDAwMDAwMDA3MDA3RjgwMDFDMDAwMDAwMDBGMDAzRjgwMDNDMDAwMDAwMDBGMDAzRkMKLTAwMzgwMDAwMDAwMEUwMDNGQzAwMzgwMDAwMDAwMEUwMDFGQzAwMzgwMDAwMDAwMUUwMDFGRTAwNzgwMDAwMDAwMUUwMDBGRQotMDA3MDAwMDAwMDAxQzAwMEZFMDA3MDAwMDAwMDAxQzAwMEZGMDA3MDAwMDAwMDAzQzAwMDdGMDBGMDAwMDAwMDAzQzAwMDdGCi0wMEUwMDAwMDAwMDM4MDAwN0Y4MEUwMDAwMDAwMDM4MDAwM0Y4MEUwMDAwMDAwMDc4MDAwM0ZDMUUwMDAwMDAwMDc4MDAwMUYKLUMxQzAwMDAwMDAwNzAwMDAxRkMxQzAwMDAwMDAwNzAwMDAxRkUxQzAwMDAwMDAwRjAwMDAwRkUzQzAwMDAwMDAwRjAwMDAwRgotRTM4MDAwMDAwMDBFMDAwMDBGRjM4MDAwMDAwMDBFMDAwMDA3RjM4MDAwMDAwMDFFMDAwMDA3RkY4MDAwMDAwMDFFMDAwMDA3Ci1GRjAwMDAwMDAwMUMwMDAwMDNGRjAwMDAwMDAwMUMwMDAwMDNGRjAwMDAwMDAwM0MwMDAwMDFGRjAwMDAwMDAwM0MwMDAwMDEKLUZFMDAwMDAwMDAzODAwMDAwMUZFMDAwMDAwMDAzODAwMDAwMEZFMDAwMDAwMDA3ODAwMDAwMEZFMDAwMDAwMDA3ODAwMDAwMAotRkMwMDAwMDAwMEY4MDAwMDAwN0MwMDAwMDAwM0ZDMDAwMDAwN0MwMDAwMDA3RkZGRTAwMDAwM0MwMDAwMDBGRkZGRTAwMDAwCi0zODAwMDAwMEZGRkZFMDAwMDAzODAwMDAwMDQzMzk3Q0I4M0U+STwwMDAwMDAwM0ZFMDAwMDAwMDAwMDNGRkZDMDAwMDAwMAotMDBGQzA3RjAwMDAwMDAwM0UwMDFGODAwMDAwMDBGODAwMDdDMDAwMDAwM0YwMDAwM0UwMDAwMDA3RTAwMDAxRjAwMDAwMEY4Ci0wMDAwMUY4MDAwMDFGMDAwMDAwRkMwMDAwN0UwMDAwMDBGQzAwMDBGQzAwMDAwMDdFMDAwMUZDMDAwMDAwN0UwMDAxRjgwMDAKLTAwMDdGMDAwM0YwMDAwMDAwM0YwMDA3RTAwMDAwMDAzRjAwMEZFMDAwMDAwMDNGODAxRkMwMDAwMDAwM0Y4MDFGQzAwMDAwMAotMDNGODAzRjgwMDAwMDAwM0Y4MDNGODAwMDAwMDAzRjgwN0YwMDAwMDAwMDNGODA3RjAwMDAwMDAwM0Y4MEZGMDAwMDAwMDAzCi1GODBGRTAwMDAwMDAwM0Y4MUZFMDAwMDAwMDA3RjgxRkMwMDAwMDAwMDdGODNGQzAwMDAwMDAwN0Y4M0ZDMDAwMDAwMDA3RjgKLTNGQzAwMDAwMDAwN0Y4N0Y4MDAwMDAwMDBGRjA3RjgwMDAwMDAwMEZGMDdGODAwMDAwMDAwRkYwN0Y4MDAwMDAwMDBGRjBGRgotMDAwMDAwMDAxRkUwRkYwMDAwMDAwMDFGRTBGRjAwMDAwMDAwMUZFMEZGMDAwMDAwMDAzRkMwRkYwMDAwMDAwMDNGQzBGRjAwCi0wMDAwMDAzRjgwRkYwMDAwMDAwMDdGODBGRjAwMDAwMDAwN0YwMEZGMDAwMDAwMDBGRjAwRkYwMDAwMDAwMEZFMDBGRjAwMDAKLTAwMDFGRTAwRkYwMDAwMDAwMUZDMDA3RjAwMDAwMDAzRjgwMDdGMDAwMDAwMDdGMDAwN0YwMDAwMDAwN0YwMDA3RjAwMDAwMAotMEZFMDAwM0YwMDAwMDAxRkMwMDAzRjgwMDAwMDNGODAwMDFGODAwMDAwM0YwMDAwMUZDMDAwMDA3RTAwMDAwRkMwMDAwMEZDCi0wMDAwMDdFMDAwMDNGMDAwMDAwM0YwMDAwN0UwMDAwMDAxRjgwMDBGODAwMDAwMDBGQzAwM0YwMDAwMDAwMDNGMDFGQzAwMDAKLTAwMDAxRkZGRTAwMDAwMDAwMDAxRkYwMDAwMDAwMDM1M0Q3NEJBNDA+STwwMDA3RkZGRkZGRjgwMDAwMDdGRkZGRkZGRjAwCi0wMDA3RkZGRkZGRkY4MDAwMDAwRkYwMDAzRkUwMDAwMDBGRTAwMDBGRjAwMDAwMEZFMDAwMDNGODAwMDAxRkUwMDAwM0Y4MDAKLTAwMUZFMDAwMDFGQzAwMDAxRkMwMDAwMUZDMDAwMDFGQzAwMDAxRkMwMDAwM0ZDMDAwMDFGRTAwMDAzRkMwMDAwMUZFMDAwMAotM0Y4MDAwMDFGRTAwMDAzRjgwMDAwMUZFMDAwMDdGODAwMDAxRkUwMDAwN0Y4MDAwMDNGQzAwMDA3RjAwMDAwM0ZDMDAwMDdGCi0wMDAwMDNGQzAwMDBGRjAwMDAwM0Y4MDAwMEZGMDAwMDA3RjgwMDAwRkUwMDAwMDdGMDAwMDBGRTAwMDAwRkUwMDAwMUZFMDAKLTAwMEZFMDAwMDFGRTAwMDAxRkMwMDAwMUZDMDAwMDNGODAwMDAxRkMwMDAwRkUwMDAwMDNGQzAwMDFGQzAwMDAwM0ZDMDAwRgotRjAwMDAwMDNGRkZGRkZDMDAwMDAwM0ZGRkZGRTAwMDAwMDA3RjgwMDAwMDAwMDAwMDdGODAwMDAwMDAwMDAwN0YwMDAwMDAwCi0wMDAwMDdGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAKLTAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGQzAwMDAwMDAwMDAwMUZDMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMAotM0ZDMDAwMDAwMDAwMDAzRjgwMDAwMDAwMDAwMDNGODAwMDAwMDAwMDAwN0Y4MDAwMDAwMDAwMDA3RjgwMDAwMDAwMDAwMDdGCi0wMDAwMDAwMDAwMDA3RjAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMUZFMDAKLTAwMDAwMDAwRkZGRkZDMDAwMDAwMDBGRkZGRkMwMDAwMDAwMEZGRkZGQzAwMDAwMDAwMzczOTdCQjgzOD5JPDAwMDNGRkZGCi1GRkYwMDAwMDAzRkZGRkZGRkUwMDAwMDNGRkZGRkZGRjgwMDAwMDA3RjgwMDNGQzAwMDAwMDdGMDAwMEZGMDAwMDAwN0YwMDAKLTA3RjAwMDAwMEZGMDAwMDNGODAwMDAwRkYwMDAwMUZDMDAwMDBGRTAwMDAxRkMwMDAwMEZFMDAwMDFGQzAwMDAxRkUwMDAwMQotRkUwMDAwMUZFMDAwMDFGRTAwMDAxRkMwMDAwMUZFMDAwMDFGQzAwMDAxRkUwMDAwM0ZDMDAwMDFGRTAwMDAzRkMwMDAwM0ZDCi0wMDAwM0Y4MDAwMDNGQzAwMDAzRjgwMDAwM0ZDMDAwMDdGODAwMDA3RjgwMDAwN0Y4MDAwMDdGMDAwMDA3RjAwMDAwRkYwMDAKLTAwN0YwMDAwMEZFMDAwMDBGRjAwMDAxRkMwMDAwMEZGMDAwMDNGMDAwMDAwRkUwMDAwRkUwMDAwMDBGRTAwMDFGODAwMDAwMQotRkUwMDBGRTAwMDAwMDFGRkZGRkY4MDAwMDAwMUZGRkZGQzAwMDAwMDAxRkMwMDNGMDAwMDAwMDNGQzAwMEY4MDAwMDAwM0ZDCi0wMDBGQzAwMDAwMDNGODAwMDdFMDAwMDAwM0Y4MDAwN0YwMDAwMDA3RjgwMDAzRjAwMDAwMDdGODAwMDNGMDAwMDAwN0YwMDAKLTAzRjAwMDAwMDdGMDAwMDNGODAwMDAwRkYwMDAwN0Y4MDAwMDBGRjAwMDA3RjAwMDAwMEZFMDAwMDdGMDAwMDAwRkUwMDAwNwotRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGQzAwMDBGRjAwMDAwMUZDMDAwMEZGMDAwMDAzRkMwMDAwRkYwCi0wMDAwM0ZDMDAwMUZGMDAwMDAzRjgwMDAxRkUwMDcwMDNGODAwMDFGRTAwNzAwN0Y4MDAwMUZFMDBGMDA3RjgwMDAxRkUwMEUKLTAwN0YwMDAwMUZFMDBFMDBGRjAwMDAwRkUwMUM3RkZGRkUwMDBGRTAzQ0ZGRkZGRTAwMDdGMDc4RkZGRkZFMDAwM0YwRjAwMAotMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDNGODAzODNCN0NCODNEPjgyIEQ8MDAwMDAwM0ZDMDBFMDAwMDAxRkZGMDFDMDAwMDA3Ci1GRkZDMUMwMDAwMUZDMDdFM0MwMDAwM0YwMDFGN0MwMDAwN0MwMDBGRjgwMDAwRjgwMDA3RjgwMDAxRjAwMDAzRjgwMDAzRTAKLTAwMDNGODAwMDdDMDAwMDFGMDAwMDdDMDAwMDFGMDAwMEY4MDAwMDFGMDAwMEY4MDAwMDFGMDAwMUY4MDAwMDFFMDAwMUYwMAotMDAwMUUwMDAxRjAwMDAwMUUwMDAxRjAwMDAwMUUwMDAzRjAwMDAwMUMwMDAzRjAwMDAwMUMwMDAzRjAwMDAwMUMwMDAzRjgwCi0wMDAwMDAwMDNGODAwMDAwMDAwMDNGQzAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRkMwMDAwMDAwMDFGRkY4MDAwMDAwMDBGRkYKLUYwMDAwMDAwMEZGRkZFMDAwMDAwMDdGRkZGODAwMDAwMDNGRkZGRTAwMDAwMDBGRkZGRjAwMDAwMDAzRkZGRjgwMDAwMDAwNwotRkZGODAwMDAwMDAwN0ZGQzAwMDAwMDAwMEZGQzAwMDAwMDAwMDNGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwCi0wMEZDMDAwMDAwMDAwMEZDMDAwMDAwMDAwMDdDMDAwRTAwMDAwMDdDMDAwRTAwMDAwMDdDMDAwRTAwMDAwMDdDMDAxRTAwMDAKLTAwRkMwMDFFMDAwMDAwRjgwMDFFMDAwMDAwRjgwMDFFMDAwMDAwRjgwMDNFMDAwMDAxRjAwMDNFMDAwMDAxRjAwMDNFMDAwMAotMDNFMDAwM0UwMDAwMDNFMDAwN0YwMDAwMDdDMDAwN0YwMDAwMEY4MDAwN0Y4MDAwMUYwMDAwN0ZDMDAwM0UwMDAwRjlGMDAwCi1GQzAwMDBGOEZDMDNGODAwMDBGMDdGRkZFMDAwMDBFMDFGRkY4MDAwMDBDMDAzRkMwMDAwMDAyRjNEN0FCQTJGPkk8MDdGRgotRkZGRkZGRkZFMDA3RkZGRkZGRkZGRkUwMEZGRkZGRkZGRkZGRTAwRkY4MDBGRjAwMUZFMDBGQzAwMEZFMDAwN0MwMUY4MDAwCi1GRTAwMDdDMDFGMDAwMUZFMDAwM0MwMUUwMDAxRkUwMDAzQzAxQzAwMDFGQzAwMDNDMDNDMDAwMUZDMDAwMzgwM0MwMDAzRkMKLTAwMDM4MDM4MDAwM0ZDMDAwMzgwNzgwMDAzRjgwMDAzODA3MDAwMDNGODAwMDc4MDcwMDAwN0Y4MDAwNzgwRjAwMDA3RjgwMAotMDcwMEUwMDAwN0YwMDAwNzAwRTAwMDA3RjAwMDA3MDBFMDAwMEZGMDAwMDcwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRTAwMDAwCi0wMDAwMDAwRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMDAKLTAwMDAzRkMwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwM0Y4MDAwMDAwMDAwMDAzRjgwMDAwMDAwMDAwMDdGODAwMDAwMDAwMAotMDA3RjgwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwCi1GRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZDMDAwMDAwMDAwMDAxRkMKLTAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDNGODAwMDAwMDAwMDAwM0Y4MDAwMDAwMDAwMDA3RjgwMAotMDAwMDAwMDAwN0Y4MDAwMDAwMDAwMDA3RjAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwCi0wMDAwMDAwRkUwMDAwMDAwMDAwMDNGRjAwMDAwMDAwMDdGRkZGRkY4MDAwMDAwRkZGRkZGRjgwMDAwMDBGRkZGRkZGODAwMDAKLTAwMzMzOTcxQjgzQj5JPDNGRkZGRjgwMEZGRkZFM0ZGRkZGODAwRkZGRkUzRkZGRkY4MDBGRkZGRTAwN0Y4MDAwMDA3RjgwCi0wMDdGMDAwMDAwM0YwMDAwN0YwMDAwMDAzRTAwMDBGRjAwMDAwMDNDMDAwMEZGMDAwMDAwM0MwMDAwRkUwMDAwMDAzODAwMDAKLUZFMDAwMDAwMzgwMDAxRkUwMDAwMDA3ODAwMDFGRTAwMDAwMDcwMDAwMUZDMDAwMDAwNzAwMDAxRkMwMDAwMDA3MDAwMDNGQwotMDAwMDAwRjAwMDAzRkMwMDAwMDBFMDAwMDNGODAwMDAwMEUwMDAwM0Y4MDAwMDAwRTAwMDA3RjgwMDAwMDFFMDAwMDdGODAwCi0wMDAxQzAwMDA3RjAwMDAwMDFDMDAwMDdGMDAwMDAwMUMwMDAwRkYwMDAwMDAzQzAwMDBGRjAwMDAwMDM4MDAwMEZFMDAwMDAKLTAzODAwMDBGRTAwMDAwMDM4MDAwMUZFMDAwMDAwNzgwMDAxRkUwMDAwMDA3MDAwMDFGQzAwMDAwMDcwMDAwMUZDMDAwMDAwNwotMDAwMDNGQzAwMDAwMEYwMDAwM0ZDMDAwMDAwRTAwMDAzRjgwMDAwMDBFMDAwMDNGODAwMDAwMEUwMDAwN0Y4MDAwMDAxRTAwCi0wMDdGODAwMDAwMUMwMDAwN0YwMDAwMDAxQzAwMDA3RjAwMDAwMDFDMDAwMDdGMDAwMDAwM0MwMDAwRkYwMDAwMDAzODAwMDAKLUZFMDAwMDAwMzgwMDAwRkUwMDAwMDA3ODAwMDBGRTAwMDAwMDcwMDAwMEZFMDAwMDAwNzAwMDAwRkUwMDAwMDBGMDAwMDBGRQotMDAwMDAxRTAwMDAwRkUwMDAwMDFDMDAwMDBGRTAwMDAwM0MwMDAwMDdFMDAwMDA3ODAwMDAwN0UwMDAwMEYwMDAwMDA3RTAwCi0wMDBFMDAwMDAwM0YwMDAwM0UwMDAwMDAxRjgwMDA3QzAwMDAwMDFGODAwMEYwMDAwMDAwMEZDMDAzRTAwMDAwMDAwN0YwMUYKLUMwMDAwMDAwMDFGRkZGMDAwMDAwMDAwMDdGRkMwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMzczQjcwQjgzRT5JPEZGRkZGODAwCi0wM0ZGRkVGRkZGRjgwMDAzRkZGRUZGRkZGODAwMDNGRkZDMDNGRTAwMDAwMDdGQzAwM0ZDMDAwMDAwM0YwMDAxRkMwMDAwMDAKLTNFMDAwMUZDMDAwMDAwM0MwMDAxRkMwMDAwMDAzODAwMDFGQzAwMDAwMDcwMDAwMUZDMDAwMDAwNzAwMDAxRkMwMDAwMDBFMAotMDAwMUZDMDAwMDAxRTAwMDAxRkMwMDAwMDFDMDAwMDFGRTAwMDAwMzgwMDAwMUZFMDAwMDAzODAwMDAwRkUwMDAwMDcwMDAwCi0wMEZFMDAwMDBGMDAwMDAwRkUwMDAwMEUwMDAwMDBGRTAwMDAxQzAwMDAwMEZFMDAwMDFDMDAwMDAwRkUwMDAwMzgwMDAwMDAKLUZFMDAwMDM4MDAwMDAwRkUwMDAwNzAwMDAwMDBGRTAwMDBFMDAwMDAwMEZFMDAwMEUwMDAwMDAwRkYwMDAxQzAwMDAwMDA3RgotMDAwMUMwMDAwMDAwN0YwMDAzODAwMDAwMDA3RjAwMDc4MDAwMDAwMDdGMDAwNzAwMDAwMDAwN0YwMDBFMDAwMDAwMDA3RjAwCi0wRTAwMDAwMDAwN0YwMDFDMDAwMDAwMDA3RjAwM0MwMDAwMDAwMDdGMDAzODAwMDAwMDAwN0YwMDcwMDAwMDAwMDA3RjgwNzAKLTAwMDAwMDAwM0Y4MEUwMDAwMDAwMDAzRjgxRTAwMDAwMDAwMDNGODFDMDAwMDAwMDAwM0Y4MzgwMDAwMDAwMDAzRjgzODAwMAotMDAwMDAwM0Y4NzAwMDAwMDAwMDAzRjg3MDAwMDAwMDAwMDNGOEUwMDAwMDAwMDAwM0Y5RTAwMDAwMDAwMDAzRjlDMDAwMDAwCi0wMDAwM0ZGODAwMDAwMDAwMDAzRkY4MDAwMDAwMDAwMDFGRjAwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAKLTAwMUZDMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGODAwMDAwMDAwMDAwMUY4MDAwMDAwMDAwMDAxRjAwMDAwMDAwMDAwMAotMUUwMDAwMDAwMDAwMDAxRTAwMDAwMDAwMDAzNzNCNkZCODNFPkk8RkZGRkY4MEZGRkZGMDAxRkZGRjBGRkZGRjgwRkZGRkYKLTAwM0ZGRkYwRkZGRkYwMEZGRkZGMDAzRkZGRTAwN0ZFMDAwMDdGRTAwMDAzRkUwMDAzRjgwMDAwM0Y4MDAwMDFGQzAwMDNGOAotMDAwMDNGODAwMDAwRjAwMDAzRjgwMDAwM0Y4MDAwMDBGMDAwMDNGODAwMDAzRjgwMDAwMUUwMDAwM0Y4MDAwMDNGODAwMDAxCi1DMDAwMDNGODAwMDAzRjgwMDAwM0MwMDAwM0Y4MDAwMDNGODAwMDAzODAwMDAzRjgwMDAwM0Y4MDAwMDc4MDAwMDNGODAwMDAKLTdGODAwMDA3MDAwMDAzRjgwMDAwN0Y4MDAwMEUwMDAwMDNGODAwMDBGRjgwMDAwRTAwMDAwM0Y4MDAwMUZGODAwMDFDMDAwMAotMDNGODAwMDFGRjgwMDAxQzAwMDAwM0Y4MDAwM0JGODAwMDM4MDAwMDAzRkMwMDAzQkY4MDAwMzgwMDAwMDFGQzAwMDczRjgwCi0wMDcwMDAwMDAxRkMwMDA3M0Y4MDAwNzAwMDAwMDFGQzAwMEUzRjgwMDBFMDAwMDAwMUZDMDAwRTNGQzAwMEUwMDAwMDAxRkMKLTAwMUMxRkMwMDFDMDAwMDAwMUZDMDAxQzFGQzAwM0MwMDAwMDAxRkMwMDM4MUZDMDAzODAwMDAwMDFGQzAwMzgxRkMwMDcwMAotMDAwMDAxRkMwMDcwMUZDMDA3MDAwMDAwMDFGQzAwRjAxRkMwMEUwMDAwMDAwMUZDMDBFMDFGQzAwRTAwMDAwMDAxRkMwMUMwCi0xRkMwMUMwMDAwMDAwMUZDMDFDMDFGQzAxQzAwMDAwMDAxRkMwMzgwMUZDMDM4MDAwMDAwMDFGQzAzODAxRkMwMzgwMDAwMDAKLTAxRkMwNzAwMUZDMDcwMDAwMDAwMDFGQzA3MDAxRkMwNzAwMDAwMDAwMUZDMEUwMDFGQzBFMDAwMDAwMDAxRkMwRTAwMUZDMQotRTAwMDAwMDAwMUZDMUMwMDFGQzFDMDAwMDAwMDAxRkMxQzAwMUZDMzgwMDAwMDAwMDFGQzM4MDAxRkMzODAwMDAwMDAwMUZDCi03ODAwMUZDNzAwMDAwMDAwMDFGQzcwMDAxRkM3MDAwMDAwMDAwMUZDRTAwMDFGQ0UwMDAwMDAwMDAxRkVFMDAwMUZDRTAwMDAKLTAwMDAwMEZGQzAwMDFGREMwMDAwMDAwMDAwRkZDMDAwMUZEQzAwMDAwMDAwMDBGRjgwMDAxRkY4MDAwMDAwMDAwMEZGODAwMAotMUZGODAwMDAwMDAwMDBGRjAwMDAxRkYwMDAwMDAwMDAwMEZGMDAwMDBGRjAwMDAwMDAwMDAwRkUwMDAwMEZFMDAwMDAwMDAwCi0wMEZFMDAwMDBGQzAwMDAwMDAwMDAwRkMwMDAwMEZDMDAwMDAwMDAwMDBGQzAwMDAwRjgwMDAwMDAwMDAwMEY4MDAwMDBGODAKLTAwMDAwMDAwMDBGMDAwMDAwRjAwMDAwMDAwMDAwMEYwMDAwMDBGMDAwMDAwMDAwMDAwRTAwMDAwMEUwMDAwMDAwMDAwNEMzQgotNkZCODUzPkk8RkZGRkY4MDAwM0ZGRkVGRkZGRjgwMDAzRkZGRUZGRkZGODAwMDNGRkZFMDNGRTAwMDAwMDdGQzAwMUZFMDAKLTAwMDAzRjAwMDFGRTAwMDAwMDNFMDAwMUZFMDAwMDAwNzgwMDAwRkUwMDAwMDBGMDAwMDBGRjAwMDAwMEUwMDAwMEZGMDAwMAotMDFDMDAwMDA3RjAwMDAwM0MwMDAwMDdGODAwMDA3ODAwMDAwN0Y4MDAwMDcwMDAwMDA3RjgwMDAwRTAwMDAwMDNGODAwMDFDCi0wMDAwMDAzRkMwMDAzQzAwMDAwMDNGQzAwMDc4MDAwMDAwMUZDMDAwNzAwMDAwMDAxRkUwMDBFMDAwMDAwMDFGRTAwMUMwMDAKLTAwMDAwRkUwMDNDMDAwMDAwMDBGRjAwNzgwMDAwMDAwMEZGMDA3MDAwMDAwMDAwRkYwMEUwMDAwMDAwMDA3RjAxQzAwMDAwMAotMDAwN0Y4M0MwMDAwMDAwMDA3Rjg3ODAwMDAwMDAwMDNGOEYwMDAwMDAwMDAwM0ZDRTAwMDAwMDAwMDAzRkRDMDAwMDAwMDAwCi0wMUZGODAwMDAwMDAwMDAxRkY4MDAwMDAwMDAwMDFGRjAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAwRkMwMDAwMDAwMDAwMDEKLUZDMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMDAwMDAwMUY4MDAwMDAwMDAwMDAzRjgwMDAwMDAwMDAwMDNGOAotMDAwMDAwMDAwMDAzRjgwMDAwMDAwMDAwMDNGMDAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwMDA3RjAwMDAwMDAwMDAwMDdGMDAwCi0wMDAwMDAwMDA3RTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZDMDAwMDAKLTAwMDAwMDFGQzAwMDAwMDAwMDAwMUZDMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAxRkZGRkY4MDAwMDAwMDNGRkZGRjgwMDAwMAotMDAzRkZGRkY4MDAwMDAwMDM3Mzk2RkI4M0U+ODkgRDxGRkZGRkZGRkZGRkNGRkZGRkZGRkZGRkVGRkZGRkZGRkZGRkVGRkZGCi1GRkZGRkZGQzJGMDQ3QzcwNDA+OTUgRDwwMDAwRjgwMDAwMDAwN0ZFMDAwMDAwMUY4NzFDMDAwMDNFMDNGRTAwMDA3QzAzRkUKLTAwMDBGODAxRkUwMDAxRjgwMUZFMDAwM0YwMDBGQzAwMDdFMDAwRkMwMDBGRTAwMEZDMDAwRkMwMDFGQzAwMUZDMDAxRjgwMAotMUZDMDAxRjgwMDNGODAwMUY4MDAzRjgwMDNGODAwN0Y4MDAzRjAwMDdGMDAwM0YwMDA3RjAwMDNGMDAwN0YwMDA3RjAwMEZGCi0wMDA3RTAwMEZFMDAwN0UwMDBGRTAwMDdFMDAwRkUwMDBGRTAwMEZFMDAwRkMwMDBGQzAwMEZDMUMwRkMwMDBGQzFDMEZDMDAKLTFGQzFDMEZDMDAxRjgzQzBGQzAwMUY4MzgwRkMwMDNGODM4MEZDMDAzRjg3ODA3QzAwN0Y4NzAwN0MwMEZGMDcwMDNFMDFGRgotMEYwMDNFMDM4RjhFMDAxRjBGMDc5RTAwMDdGRTAzRkMwMDAxRjAwMEYwMDAyMjI2NzdBNDJBPjk3Ci1EPDAwM0YwMDAwMUZGRjAwMDAxRkZGMDAwMDFGRkYwMDAwMDA3RjAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMEZFMDAKLTAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDFGQzAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwM0Y4MDAwMDAzRjAwMAotMDAwM0YwMDAwMDAzRjAwMDAwMDdGMDAwMDAwN0UwRjgwMDA3RTdGRTAwMDdFRjBGODAwRkZDMDdDMDBGRjgwN0MwMEZGMDAzCi1FMDBGRTAwM0UwMUZDMDAzRjAxRkMwMDNGMDFGODAwM0YwMUY4MDAzRjAzRjgwMDNGMDNGMDAwM0YwM0YwMDAzRjAzRjAwMDcKLUYwN0YwMDA3RjA3RTAwMDdGMDdFMDAwN0YwN0UwMDBGRjBGRTAwMEZGMEZDMDAwRkUwRkMwMDBGRTBGQzAwMUZFMEZDMDAxRgotQzBGODAwMUZDMEY4MDAzRjgwRjgwMDNGODBGODAwM0YwMEY4MDA3RjAwRjgwMDdFMDBGODAwRkMwMDc4MDFGODAwN0MwMUYwCi0wMDNDMDNFMDAwM0UwN0MwMDAxRTFGODAwMDBGRkUwMDAwMDFGMDAwMDAxQzNCNzdCOTI2Pkk8MDAwMDdGMDAwMDAzRkZDMAotMDAwRkMxRTAwMDFGMDA3MDAwN0UwMDc4MDBGQzAwMzgwMUY4MDFGODAzRjAwM0Y4MDdGMDAzRjgwN0UwMDNGODBGRTAwM0Y4Ci0xRkMwMDNGMDFGQzAwMDAwM0Y4MDAwMDAzRjgwMDAwMDdGODAwMDAwN0YwMDAwMDA3RjAwMDAwMDdGMDAwMDAwRkYwMDAwMDAKLUZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMzBGQzAwMDAzOAotRkMwMDAwNzg3QzAwMDBGMDdFMDAwMUUwM0UwMDAzQzAzRTAwMEY4MDFGMDAzRTAwMEY4MUY4MDAwM0ZGRTAwMDAwRkYwMDAwCi0xRDI2NzdBNDI2Pkk8MDAwMDAwMDFGODAwMDAwMEZGRjgwMDAwMDBGRkY4MDAwMDAwRkZGODAwMDAwMDAzRjgwMDAwMDAwMwotRjAwMDAwMDAwM0YwMDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDBGRTAwMDAwMDAwRkUwCi0wMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAzRjgwMDAKLTAwMDAzRjgwMDAwMEY4M0YwMDAwMDdGRTNGMDAwMDFGODc3RjAwMDAzRTAzRkYwMDAwN0MwM0ZFMDAwMEY4MDFGRTAwMDFGOAotMDFGRTAwMDNGMDAwRkUwMDA3RTAwMEZDMDAwRkUwMDBGQzAwMEZDMDAxRkMwMDFGQzAwMUZDMDAxRkMwMDFGODAwM0Y4MDAxCi1GODAwM0Y4MDAzRjgwMDdGODAwM0Y4MDA3RjAwMDNGMDAwN0YwMDAzRjAwMDdGMDAwN0YwMDBGRjAwMDdGMDAwRkUwMDA3RTAKLTAwRkUwMDA3RTAwMEZFMDAwRkUwMDBGRTAwMEZFMDAwRkMwMDBGQzFDMEZDMDAwRkMxQzBGQzAwMUZDMUMwRkMwMDFGQzNDMAotRkMwMDFGODM4MEZDMDAzRjgzODBGQzAwM0Y4NzgwN0MwMDdGODcwMDdDMDBGRjA3MDAzRTAxRkYwRjAwM0UwMzhGOEUwMDFGCi0wRjA3OUUwMDA3RkUwM0ZDMDAwMUYwMDBGMDAwMjUzQjc3QjkyQT5JPDAwMDA3RjAwMDAwM0ZGQzAwMDBGQzFFMDAwM0YwMAotRjAwMDdFMDA3ODAwRkMwMDc4MDFGODAwNzgwM0YwMDA3ODA3RTAwMDc4MEZFMDAwNzgwRkMwMDBGODFGQzAwMEYwM0Y4MDAxCi1GMDNGODAwN0UwM0Y4MDFGODA3RjgxRkYwMDdGRkZGODAwN0ZGRjgwMDA3RjAwMDAwMEZGMDAwMDAwRkUwMDAwMDBGRTAwMDAKLTAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDMwN0MwMDAwMzg3QzAwMDA3ODdFMDAwMAotRjAzRTAwMDFFMDNFMDAwM0MwMUYwMDBGODAwRjAwM0UwMDA3ODFGODAwMDNGRkUwMDAwMEZGMDAwMDFEMjY3N0E0MjY+STwKLTAwMDAwMDA3QzAwMDAwMDAxRkYwMDAwMDAwM0UzODAwMDAwMDdDM0MwMDAwMDBGOEZDMDAwMDAwRjlGQzAwMDAwMUY5RkMwMAotMDAwMUYxRkMwMDAwMDNGMUY4MDAwMDAzRjBGMDAwMDAwM0YwMDAwMDAwMDdGMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwCi0wN0UwMDAwMDAwMDdFMDAwMDAwMDBGRTAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMUYKLUMwMDAwMDAwMUY4MDAwMDAwRkZGRkZDMDAwMUZGRkZGQzAwMDFGRkZGRjgwMDAwMDNGODAwMDAwMDAzRjAwMDAwMDAwM0YwMAotMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDA3RjAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwCi0wMDAwRkUwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDAwMDAKLTAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAzRjgwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwMwotRjAwMDAwMDAwN0YwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDBGRTAwMDAwMDAwRkMwCi0wMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjAwMDAKLTAwMDAzRjAwMDAwMDFDM0YwMDAwMDA3RTNFMDAwMDAwN0UzRTAwMDAwMEZFM0MwMDAwMDBGRTdDMDAwMDAwRkU3ODAwMDAwMAotRjhGMDAwMDAwMDc4RjAwMDAwMDAzRkMwMDAwMDAwMEY4MDAwMDAwMDI2NEM4MkJBMTk+STwwMDAwMDdDMDAwMDAwMDNGRjAKLTAwMDAwMEZDMzhFMDAwMDFGMDFGRjAwMDAzRTAxRkYwMDAwN0MwMEZGMDAwMEY4MDBGRjAwMDFGODAwN0YwMDAzRjAwMDdFMAotMDA3RjAwMDdFMDAwN0UwMDBGRTAwMEZFMDAwRkUwMDBGQzAwMEZDMDAxRkMwMDBGQzAwMUZDMDAxRkMwMDNGQzAwMUZDMDAzCi1GODAwMUY4MDAzRjgwMDFGODAwM0Y4MDAzRjgwMDdGODAwM0Y4MDA3RjAwMDNGMDAwN0YwMDAzRjAwMDdGMDAwN0YwMDA3RjAKLTAwN0YwMDA3RTAwMDdFMDAwN0UwMDA3RTAwMDdFMDAwRkUwMDA3RTAwMEZFMDAwN0UwMDBGQzAwMDNFMDAxRkMwMDAzRTAwMwotRkMwMDAzRTAwN0ZDMDAwMUYwMEZGODAwMDBGMDFGRjgwMDAwNzg3QkY4MDAwMDNGRjNGODAwMDAwRkMzRjAwMDAwMDAwM0YwCi0wMDAwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMEZFMDAwMDAwMDBGQzAwMDFDMDAwRkMwMDAKLTdFMDAxRkMwMDA3RTAwMUY4MDAwRkUwMDNGMDAwMEZFMDA3RTAwMDBGRTAwRkMwMDAwNzgwMUY4MDAwMDdDMDdFMDAwMDAxRgotRkY4MDAwMDAwM0ZFMDAwMDAwMjQzNjdDQTQyNj5JPDAwMDNGMDAwMDAwMUZGRjAwMDAwMDFGRkYwMDAwMDAxRkZGMDAwMDAKLTAwMDdGMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDBGRTAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMAotMEZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAzRjgwMDAwMDAwM0YwMDAwMDAwMDNGCi0wMDAwMDAwMDNGMDAwMDAwMDA3RjAwMDAwMDAwN0UwN0YwMDAwMDdFMUZGQzAwMDA3RTc4M0UwMDAwRkZFMDFGMDAwMEZGQzAKLTFGODAwMEZGODAwRjgwMDBGRjAwMEY4MDAxRkUwMDBGODAwMUZFMDAwRkMwMDFGQzAwMEZDMDAxRjgwMDFGODAwM0Y4MDAxRgotODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDNGODAwN0YwMDAzRjAwMDdFMDAwM0YwMDA3RTAwMDNGMDAwN0UwMDA3RjAwCi0wRkUwMDA3RTAwMEZDMDAwN0UwMDBGQzAwMEZFMDAwRkMwMDBGQzAwMUZDMDAwRkMwMDFGODAwMUZDMUMxRjgwMDFGODFDMUYKLTgwMDFGODNDM0Y4MDAzRjgzODNGMDAwM0YwMzgzRjAwMDNGMDM4M0YwMDAzRjA3MDdGMDAwM0UwNzA3RTAwMDNFMEYwN0UwMAotMDNFMEUwN0UwMDAzRTFDMEZFMDAwMUUzODBGQzAwMDBGRjAwMzgwMDAwM0MwMDI2M0I3QkI5MkE+STwwMDAxQzAwMDA3RTAKLTAwMDdGMDAwMEZGMDAwMEZFMDAwMDdFMDAwMDM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMDAwMDNGQzAwMDcxRTAwMEUxRjAwMUMxRjAwMUMxRjAwMzgxRjAwMzgzRjAwCi03MDNGMDA3MDNGMDA3MDdGMDBGMDdFMDBFMDdFMDBFMEZFMDAwMEZDMDAwMEZDMDAwMUZDMDAwMUY4MDAwM0Y4MDAwM0Y4MDAKLTAzRjAwMDA3RjAwMDA3RTAwMDA3RTAwMDBGRTBFMDBGQzBFMDBGQzFFMDFGQzFDMDFGODFDMDFGODFDMDFGODM4MDFGMDM4MAotMUYwNzAwMUYwNzAwMUYwRTAwMEYxQzAwMDdGODAwMDFFMDAwMTQzODc5QjYxOT5JPDAwMDAwMDBFMDAwMDAwM0YwMDAwMDAKLTdGMDAwMDAwN0YwMDAwMDA3RjAwMDAwMDdFMDAwMDAwMUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUY4MDAwMDA3RkMwMDAwMEYxCi1GMDAwMDFDMEYwMDAwMzgwRjgwMDA3ODBGODAwMDcwMUY4MDAwRjAxRjgwMDBFMDFGODAwMUUwMUY4MDAxQzAzRjgwMDNDMDMKLUY4MDAzODAzRjAwMDM4MDNGMDAwMDAwN0YwMDAwMDA3RjAwMDAwMDdFMDAwMDAwN0UwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRgotQzAwMDAwMEZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUY4MDAwMDAxRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjAwMDAwMDNGCi0wMDAwMDA3RjAwMDAwMDdGMDAwMDAwN0UwMDAwMDA3RTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGQzAwMDAwMEZDMDAwMDAxRkMKLTAwMDAwMUZDMDAwMDAxRjgwMDAwMDFGODAwMDAwM0Y4MDAwMDAzRjAwMDFDMDNGMDAwN0UwN0UwMDA3RTA3RTAwMEZFMEZDMAotMDBGRTBGODAwMEZFMUYwMDAwRjgzRTAwMDA3ODdDMDAwMDNGRjAwMDAwMEZDMDAwMDAyMDQ4ODNCNjE5Pkk8MDAwM0YwMDAKLTAwMDFGRkYwMDAwMDAxRkZGMDAwMDAwMUZGRjAwMDAwMDAwN0YwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMAotMDAwRkUwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMUZDMDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwCi0xRjgwMDAwMDAwM0Y4MDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDdGMDAwMDAwMDA3RTAwMEY4MDAwN0UKLTAwM0ZFMDAwN0UwMEYwRTAwMEZFMDFDMUYwMDBGQzAzODdGMDAwRkMwNzA3RjAwMEZDMEUwN0YwMDFGQzFDMDdFMDAxRjgzOAotMDdFMDAxRjgzMDAzODAwMUY4NzAwMDAwMDNGOEUwMDAwMDAzRjFDMDAwMDAwM0YzODAwMDAwMDNGRjAwMDAwMDA3RkMwMDAwCi0wMDA3RkUwMDAwMDAwN0ZGQzAwMDAwMDdFN0Y4MDAwMDBGRTFGQzAwMDAwRkMwN0UwMDAwMEZDMDdGMDAwMDBGQzAzRjAwMDAKLTFGQzAzRjgwMDAxRjgwMUY4MUMwMUY4MDFGODFDMDFGODAxRjgzQzAzRjgwM0Y4MzgwM0YwMDNGMDM4MDNGMDAzRjAzODAzRgotMDAzRjA3ODA3RjAwM0YwNzAwN0UwMDNFMDcwMDdFMDAxRTBFMDA3RTAwMUUxRTAwRkUwMDBGM0MwMEZDMDAwN0Y4MDAzODAwCi0wMUUwMDAyNDNCN0JCOTI2Pkk8MDAwRkMwMDdGRkMwMDdGRkMwMDdGRkMwMDAxRkMwMDAxRjgwMDAxRjgwMDAzRjgwMDAzRgotODAwMDNGMDAwMDNGMDAwMDdGMDAwMDdGMDAwMDdFMDAwMDdFMDAwMEZFMDAwMEZFMDAwMEZDMDAwMEZDMDAwMUZDMDAwMUZDCi0wMDAxRjgwMDAxRjgwMDAzRjgwMDAzRjgwMDAzRjAwMDAzRjAwMDA3RjAwMDA3RjAwMDA3RTAwMDA3RTAwMDBGRTAwMDBGRTAKLTAwMEZDMDAwMEZDMDAwMUZDMDAwMUZDMDAwMUY4MDAwMUY4MDAwM0Y4MDAwM0Y4MDAwM0YwMDAwM0YwMDAwN0YwMDAwN0YwMAotMDA3RTBFMDA3RTBFMDBGRTBFMDBGRTFFMDBGQzFDMDBGQzFDMDBGQzNDMDBGQzM4MDBGODM4MDBGODc4MDA3ODcwMDA3Q0UwCi0wMDFGRTAwMDBGODAwMDEyM0I3OUI5MTU+STwwMUUwMDBGRTAwMDdGMDAwMDdGODAzRkY4MDFGRkMwMDBFM0MwRjA3QzA3OAotM0UwMDFFM0UzQzAzRTFFMDFGMDAxQzFGNzgwM0YzQzAxRjgwMzgzRkYwMDFGNzgwMEY4MDM4M0ZFMDAxRjcwMDBGODA3ODNGCi1DMDAxRkUwMDBGODA3MDNGQzAwMUZFMDAwRkMwNzAzRjgwMDFGQzAwMEZDMDcwM0YwMDAzRjgwMDFGODBGMDdGMDAwM0Y4MDAKLTFGODBFMDdFMDAwM0YwMDAxRjgwRTA3RTAwMDNGMDAwMUY4MDAwN0UwMDA3RjAwMDNGODAwMEZFMDAwN0YwMDAzRjAwMDBGQwotMDAwN0UwMDAzRjAwMDBGQzAwMDdFMDAwM0YwMDAwRkMwMDBGRTAwMDdGMDAwMUZDMDAwRkUwMDA3RTAwMDFGODAwMEZDMDAwCi03RTAwMDFGODAwMEZDMDAwRkUwMDAxRjgwMDFGQzAwMEZDMDAwM0Y4MDAxRkMwMDBGQzAwMDNGMDAwMUY4MDAxRkMxQzAzRjAKLTAwMUY4MDAxRjgxQzAzRjAwMDNGODAwMUY4M0MwN0YwMDAzRjgwMDNGODM4MDdFMDAwM0YwMDAzRjAzODA3RTAwMDNGMDAwMwotRjAzODA3RTAwMDdGMDAwM0YwNzAwRkUwMDA3RjAwMDNFMDcwMEZDMDAwN0UwMDAzRTBGMDBGQzAwMDdFMDAwM0UwRTAwRkMwCi0wMEZFMDAwM0UxQzAxRkMwMDBGRTAwMDFFM0MwMUY4MDAwRkMwMDAwRkYwMDA3MDAwMDM4MDAwMDNDMDAzRTI2NzlBNDQ0PgotSTwwMUUwMDBGRTAwMDAwN0Y4MDNGRjgwMDAwRTNDMEYwN0MwMDAxRTNFM0MwM0UwMDAxQzFGNzgwM0YwMDAzODNGRjAwMUYwCi0wMDM4M0ZFMDAxRjAwMDc4M0ZDMDAxRjAwMDcwM0ZDMDAxRjgwMDcwM0Y4MDAxRjgwMDcwM0YwMDAzRjAwMEYwN0YwMDAzRjAKLTAwRTA3RTAwMDNGMDAwRTA3RTAwMDNGMDAwMDA3RTAwMDdGMDAwMDBGRTAwMDdFMDAwMDBGQzAwMDdFMDAwMDBGQzAwMDdFMAotMDAwMEZDMDAwRkUwMDAwMUZDMDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAxRkMwMDAwMUY4MDAxRjgwMDAwM0Y4MDAxRjgwCi0wMDAzRjAwMDNGODM4MDAzRjAwMDNGMDM4MDAzRjAwMDNGMDc4MDA3RjAwMDdGMDcwMDA3RTAwMDdFMDcwMDA3RTAwMDdFMDcKLTAwMDdFMDAwN0UwRTAwMEZFMDAwN0MwRTAwMEZDMDAwN0MxRTAwMEZDMDAwN0MxQzAwMEZDMDAwN0MzODAwMUZDMDAwM0M3OAotMDAxRjgwMDAxRkUwMDAwNzAwMDAwNzgwMDAyOTI2NzlBNDJGPkk8MDAwMDdGMDAwMDAzRkZDMDAwMEZDMUYwMDAxRjAwRjgKLTAwN0UwMDdDMDBGQzAwN0MwMUY4MDA3RTAzRjAwMDNFMDdGMDAwM0YwN0UwMDAzRjBGRTAwMDNGMUZDMDAwM0YxRkMwMDAzRgotM0Y4MDAwM0YzRjgwMDA3RjdGODAwMDdGN0YwMDAwN0Y3RjAwMDA3RjdGMDAwMEZGRkYwMDAwRkZGRTAwMDBGRUZFMDAwMEZFCi1GRTAwMDFGRUZFMDAwMUZDRkMwMDAxRkNGQzAwMDNGOEZDMDAwM0Y4RkMwMDA3RjBGQzAwMDdFMEZDMDAwRkUwN0MwMDBGQzAKLTdFMDAxRjgwM0UwMDNGMDAzRTAwN0UwMDFGMDBGODAwMEY4M0YwMDAwM0ZGQzAwMDAwRkUwMDAwMjAyNjc3QTQyQT5JPDAwCi0wNzgwMDdDMDAwMDAxRkUwM0ZGMDAwMDAzQ0YwNzg3QzAwMDAzOEY4RTAzRTAwMDA3ODdGQzAzRTAwMDA3MDdGODAxRjAwMDAKLTcwRkYwMDFGMDAwMEYwRkUwMDFGODAwMEUwRkUwMDFGODAwMEUwRkMwMDFGODAwMUUxRkMwMDFGODAwMUMxRkMwMDFGODAwMQotQzFGODAwMUY4MDAxQzFGODAwMUY4MDAwMDNGODAwM0Y4MDAwMDNGODAwM0Y4MDAwMDNGMDAwM0Y4MDAwMDNGMDAwM0Y4MDAwCi0wN0YwMDA3RjgwMDAwN0YwMDA3RjgwMDAwN0UwMDA3RjAwMDAwN0UwMDA3RjAwMDAwRkUwMDBGRjAwMDAwRkUwMDBGRTAwMDAKLTBGQzAwMEZFMDAwMDBGQzAwMUZDMDAwMDFGQzAwMUZDMDAwMDFGQzAwMUY4MDAwMDFGODAwM0Y4MDAwMDFGODAwM0YwMDAwMAotM0Y4MDA3RTAwMDAwM0ZDMDBGQzAwMDAwM0ZDMDBGODAwMDAwM0ZFMDFGMDAwMDAwN0ZFMDNFMDAwMDAwN0Y3MEZDMDAwMDAwCi03RTNGRjAwMDAwMDA3RTBGODAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGQzAwMDAwMDAwMDBGQzAwMDAwMDAwMDEKLUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUY4MDAwMDAwMDAwMUY4MDAwMDAwMDAwM0Y4MDAwMDAwMDAwM0Y4MDAwMDAwMDAwMwotRjAwMDAwMDAwMDA3RjAwMDAwMDAwMEZGRkZDMDAwMDAwMEZGRkZDMDAwMDAwMEZGRkZDMDAwMDAwMDI5MzU4MEE0MkE+STwKLTAwMDBGODAzMDAwN0ZFMDcwMDFGODcxRjAwM0UwM0JGMDA3QzAzRkUwMEY4MDFGRTAxRjgwMUZFMDNGMDAwRkUwN0UwMDBGQwotMEZFMDAwRkMwRkMwMDBGQzFGQzAwMUZDMUZDMDAxRjgzRjgwMDFGODNGODAwMUY4N0Y4MDAzRjg3RjAwMDNGMDdGMDAwM0YwCi03RjAwMDNGMEZGMDAwN0YwRkUwMDA3RTBGRTAwMDdFMEZFMDAwN0UwRkUwMDBGRTBGQzAwMEZDMEZDMDAwRkMwRkMwMDBGQzAKLUZDMDAxRkMwRkMwMDFGODBGQzAwM0Y4MEZDMDAzRjgwN0MwMDdGODA3QzAwRkYwMDNFMDFGRjAwM0UwM0JGMDAxRjBGN0YwMAotMDdGRTdFMDAwMUYwN0UwMDAwMDA3RTAwMDAwMEZFMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAxRkMwMDAwMDFGODAwCi0wMDAxRjgwMDAwMDFGODAwMDAwM0Y4MDAwMDAzRjAwMDAwMDdGMDAwMDFGRkZGQzAwMUZGRkZDMDAxRkZGRkMwMjAzNTc3QTQKLTI2Pkk8MDNDMDAzRjAwMDBGRjAxRkZDMDAxRTc4M0MwRjAwMUM3QzcwMEYwMDNDM0VFMDNGODAzODNGQzAzRjgwMzg3RjgwCi0zRjgwNzg3RjgwM0YwMDcwN0YwMDNGMDA3MDdGMDAxQzAwRjA3RTAwMDAwMEUwRkUwMDAwMDBFMEZDMDAwMDAwRTBGQzAwMDAKLTAwMDBGQzAwMDAwMDAxRkMwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwM0Y4MDAwMDAwMDNGMDAwMDAwMAotMDNGMDAwMDAwMDAzRjAwMDAwMDAwN0YwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMEZFMDAwMDAwMDBGCi1DMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMUZDMDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDNGODAKLTAwMDAwMDNGMDAwMDAwMDAwRTAwMDAwMDAwMjEyNjc5QTQyMz5JPDAwMDBGRTAwMDAwN0ZGODAwMDBGODNDMDAwM0UwMEUwCi0wMDdDMDBGMDAwNzgwMDcwMDBGODAwRjAwMUY4MDNGMDAxRjAwM0YwMDFGMDAzRjAwMUYwMDNFMDAzRjAwMUMwMDNGODAwMDAKLTAzRkMwMDAwMDNGRkMwMDAwMUZGRjgwMDAxRkZGRTAwMDBGRkZGMDAwMDdGRkY4MDAwM0ZGRjgwMDAwRkZGQzAwMDAwRkZDMAotMDAwMDNGQzAwMDAwMUZDMDAwMDAwRkMwM0UwMDBGQzA3RTAwMEZDMEZFMDAwRjgwRkUwMDBGODBGRTAwMEY4MEZDMDAxRjAwCi1FMDAwMUYwMEYwMDAzRTAwNzAwMDdDMDAzODAwRjgwMDFFMDNFMDAwMEZGRkMwMDAwMUZFMDAwMDFDMjY3QUE0MjI+STwwMAotMDM4MDAwMDdDMDAwMEZDMDAwMEZDMDAwMEZDMDAwMEZDMDAwMUZDMDAwMUY4MDAwMUY4MDAwMUY4MDAwM0Y4MDAwM0YwMDAwCi0zRjAwMDAzRjAwMDA3RjAwMDA3RTAwN0ZGRkZGN0ZGRkZGRkZGRkZGMDBGQzAwMDBGQzAwMDBGQzAwMDFGQzAwMDFGODAwMDEKLUY4MDAwMUY4MDAwM0Y4MDAwM0YwMDAwM0YwMDAwM0YwMDAwN0YwMDAwN0UwMDAwN0UwMDAwN0UwMDAwRkUwMDAwRkMwMDAwRgotQzAwMDBGQzAwMDFGQzAwMDFGODAxQzFGODAxQzFGODAzQzNGODAzODNGMDA3ODNGMDA3MDNGMDBGMDNGMDBFMDNGMDFDMDNFCi0wM0MwMUYwNzgwMEYwRjAwMDdGQzAwMDFGMDAwMTgzNTc5QjMxQz5JPDAwRjgwMDAwMDAwM0ZFMDAwMUMwMDc4RjAwMDNFMAotMEUwRjgwMDdFMDFFMEY4MDA3RTAxQzBGODAwN0UwMzgwRjgwMEZFMDM4MUY4MDBGRTA3ODFGODAwRkMwNzAxRjgwMEZDMDcwCi0zRjgwMUZDMEYwM0YwMDFGQzBFMDNGMDAxRjgwRTA3RjAwMUY4MDAwN0UwMDNGODAwMDdFMDAzRjgwMDBGRTAwM0YwMDAwRkMKLTAwM0YwMDAwRkMwMDdGMDAwMUZDMDA3RjAwMDFGODAwN0UwMDAxRjgwMDdFMDAwMUY4MDBGRTAwMDNGODAwRkUwMDAzRjAwMAotRkMwRTAzRjAwMEZDMEUwM0YwMDFGQzFFMDNGMDAxRkMxQzAzRjAwMUY4MUMwM0UwMDFGODFDMDNFMDAxRjgzQzAzRjAwM0Y4Ci0zODAzRjAwN0Y4MzgwMUYwMDdGMDcwMDFGMDFFRjhGMDAwRjgzQzc4RTAwMDNGRjAzRkMwMDAwRkMwMEYwMDI3MjY3OUE0MkQKLT5JPDAwRjAwMDBFMDAwM0ZDMDAzRjAwMDcxRTAwN0Y4MDBFMUYwMDdGODAxQzFGMDA3RjgwM0MxRjAwN0Y4MDM4MUYwMDNGCi04MDM4M0YwMDFGODA3MDNGMDAwRjgwNzAzRjAwMEY4MDcwN0YwMDBGODBGMDdFMDAwRjAwRTA3RTAwMDcwMEUwRkUwMDA3MDAKLTAwRkMwMDBGMDAwMEZDMDAwRTAwMDFGQzAwMEUwMDAxRjgwMDBFMDAwMUY4MDAxRTAwMDNGODAwMUMwMDAzRjAwMDFDMDAwMwotRjAwMDFDMDAwM0YwMDAzQzAwMDdGMDAwMzgwMDA3RTAwMDM4MDAwN0UwMDA3MDAwMDdFMDAwNzAwMDA3RTAwMDcwMDAwN0UwCi0wMEUwMDAwN0UwMDBFMDAwMDdFMDAxQzAwMDA3RTAwM0MwMDAwM0UwMDM4MDAwMDNGMDA3MDAwMDAxRjAwRTAwMDAwMEY4M0MKLTAwMDAwMDdGRjgwMDAwMDAwRkMwMDAwMDIxMjY3OUE0MjY+STwwMEYwMDAwMDAwMDcwMDAzRkMwMDAzODAxRjgwMDcxRTAwCi0wN0MwM0ZDMDBFMUYwMDBGQzAzRkMwMUMxRjAwMEZDMDNGQzAzQzFGMDAwRkMwM0ZDMDM4MUYwMDFGQzAxRkMwMzgzRjAwMUYKLTgwMEZDMDcwM0YwMDFGODAwN0MwNzAzRjAwMUY4MDA3QzA3MDdGMDAzRjgwMDdDMEYwN0UwMDNGODAwNzgwRTA3RTAwM0YwMAotMDM4MEUwRkUwMDNGMDAwMzgwMDBGQzAwN0YwMDA3ODAwMEZDMDA3RjAwMDcwMDAxRkMwMDdFMDAwNzAwMDFGODAwN0UwMDA3Ci0wMDAxRjgwMEZFMDAwRjAwMDNGODAwRkUwMDBFMDAwM0YwMDBGQzAwMEUwMDAzRjAwMEZDMDAwRTAwMDNGMDAwRkMwMDFFMDAKLTA3RjAwMUZDMDAxQzAwMDdFMDAxRjgwMDFDMDAwN0UwMDFGODAwM0MwMDA3RTAwMUY4MDAzODAwMDdFMDAxRjgwMDM4MDAwNwotRTAwMUY4MDA3ODAwMDdFMDAxRjgwMDcwMDAwN0UwMDNGODAwRjAwMDA3RTAwM0Y4MDBFMDAwMDNFMDA3RjgwMUUwMDAwM0YwCi0wRkZDMDNDMDAwMDFGMDFFN0MwNzgwMDAwMEZDM0MzRTBGMDAwMDAwM0ZGODFGRkUwMDAwMDAwRkUwMDNGMDAwMDAzMjI2NzkKLUE0Mzc+STwwMDA3RTAwN0MwMDAxRkY4MUZGODAwNzg3QzM4M0MwMEYwM0U3MDNDMDFFMDFFRTBGRTAzQzAxRkUwRkUwMzgwCi0xRkMwRkUwNzAwMUZDMEZDMEYwMDFGODBGQzBFMDAxRjgwNzAwRTAwM0Y4MDAwMUUwMDNGMDAwMDFDMDAzRjAwMDAxQzAwM0YKLTAwMDAwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkMwMAotMDAwMDAwRkMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDcwMDAwMUY4MDA3MDAwMDNGODAwRjAwMDAzRjgwMEUwCi0xQzAzRjAwMEUwN0UwM0YwMDFFMDdFMDdGMDAxQzBGRTA3RjAwMzgwRkUwRkYwMDc4MEZFMEVGMDBGMDA3ODFDRjgxRTAwNzgKLTM4N0MzQzAwM0ZGMDNGRjAwMDA3QzAwRkMwMDAyNzI2N0NBNDI3Pkk8MDBGMDAwMDAwMDAzRkMwMDAxQzAwNzFFMDAwM0UwCi0wRTFGMDAwN0UwMUMxRjAwMDdFMDNDMUYwMDA3RTAzODFGMDAwRkUwMzgzRjAwMEZDMDcwM0YwMDBGQzA3MDNGMDAwRkMwNzAKLTdGMDAxRkMwRjA3RTAwMUY4MEUwN0UwMDFGODBFMEZFMDAxRjgwMDBGQzAwM0Y4MDAwRkMwMDNGMDAwMUZDMDAzRjAwMDFGOAotMDAzRjAwMDFGODAwN0YwMDAzRjgwMDdFMDAwM0YwMDA3RTAwMDNGMDAwN0UwMDAzRjAwMEZFMDAwN0YwMDBGQzAwMDdFMDAwCi1GQzAwMDdFMDAwRkMwMDA3RTAwMUZDMDAwN0UwMDFGODAwMDdFMDAxRjgwMDA3RTAwMUY4MDAwN0UwMDNGODAwMDdFMDAzRjAKLTAwMDdFMDA3RjAwMDAzRTAwRkYwMDAwM0YwMUZGMDAwMDFGODdGRTAwMDAwN0ZGN0UwMDAwMDFGQzdFMDAwMDAwMDBGRTAwMAotMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMUZDMDAwM0YwMDFGODAwMDdGMDAzRjgwMDA3RjAwM0YwMDAwN0YwMDdFMDAwMDdGCi0wMDdDMDAwMDdFMDBGQzAwMDA3MDAxRjgwMDAwNzAwM0UwMDAwMDM4MDdDMDAwMDAzQzFGODAwMDAwMEZGRTAwMDAwMDAzRjAKLTAwMDAwMDIzMzY3OUE0Mjg+STwwMDAzQzAwMzgwMDAwRkYwMDc4MDAwMUZGODA3MDAwMDNGRkMwRjAwMDA3RkZDMEUwMDAwCi1GRkZFMUUwMDAwRjgzRkZDMDAwMUYwMDdGODAwMDFFMDAwRjAwMDAxQzAwMEUwMDAwMUMwMDFFMDAwMDAwMDAzQzAwMDAwMDAKLTA3ODAwMDAwMDAwRjAwMDAwMDAwMUUwMDAwMDAwMDNDMDAwMDAwMDA3ODAwMDAwMDAwRjAwMDAwMDAwMUUwMDAwMDAwMDNDMAotMDAwMDAwMDc4MDAwMDAwMDBGMDAwMDAwMDAxRTAwMDAwMDAwM0MwMDAwMDAwMDc4MDAxQzAwMDBGMDAwMUMwMDAxRTAwMDNDCi0wMDAzQzAwMDM4MDAwMzgwMDA3ODAwMDc4MDAwRjgwMDBGRjgwMUYwMDAxRkZGMDdFMDAwM0UxRkZGRTAwMDNDMEZGRkMwMDAKLTc4MEZGRjgwMDA3MDA3RkYwMDAwRjAwM0ZDMDAwMEUwMDBGMDAwMDAyMTI2N0JBNDIyPkkKLUUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZkIGVjdHQxMjAwIDEyIDExCi0vRmQgMTEgMTIyIGRmPDdGRkZGODAwMDAwMEZGRkZGQzAwMDAwMEZGRkZGRTAwMDAwMEZGRkZGRTAwMDAwMEZGRkZGQzAwMDAKLTAwN0ZGRkY4MDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMAotMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwCi0wMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAKLTAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMAotMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwCi0wMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAKLTAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwM0UwMDFGQzAwMDAwNwotRjAwMUZDMDAwMDA3RjAwMUZDMDAwMDA3RjAwMUZDMDAwMDA3RjAwMUZDMDAwMDA3RjAwMUZDMDAwMDA3RjAwMUZDMDAwMDA3Ci1GMDAxRkMwMDAwMDdGMDAxRkMwMDAwMDdGMDdGRkZGRkZGRkZGMEZGRkZGRkZGRkZGMEZGRkZGRkZGRkZGMEZGRkZGRkZGRkYKLUYwRkZGRkZGRkZGRkYwN0ZGRkZGRkZGRkUwMkMzRDdEQkMzMz43NiBEPDAwMDdGRTAwNzgwMDNGRkZDMDdDMDBGRkZGRjBGQwotMDFGRkZGRkNGQzA3RkZGRkZGRkMwRkZGRkZGRkZDMEZGQzAzRkZGQzFGRjAwMDdGRkMzRkUwMDAzRkZDM0Y4MDAwMUZGQzdGCi04MDAwMEZGQzdGMDAwMDA3RkNGRjAwMDAwM0ZDRkUwMDAwMDNGQ0ZFMDAwMDAzRkNGRTAwMDAwMUZDRkUwMDAwMDFGQ0ZFMDAKLTAwMDFGQ0ZFMDAwMDAxRkNGRjAwMDAwMEY4N0YwMDAwMDAwMDdGODAwMDAwMDA3RkMwMDAwMDAwM0ZFMDAwMDAwMDNGRjAwMAotMDAwMDFGRkUwMDAwMDAwRkZGRTAwMDAwMDdGRkZGMDAwMDAzRkZGRkYwMDAwMUZGRkZGQzAwMDA3RkZGRkYwMDAwMUZGRkZGCi04MDAwMDNGRkZGQzAwMDAwM0ZGRkUwMDAwMDAzRkZGMDAwMDAwMDNGRjgwMDAwMDAwRkZDMDAwMDAwMDdGQzAwMDAwMDAzRkUKLTAwMDAwMDAxRkUwMDAwMDAwMEZFMDAwMDAwMDBGRjAwMDAwMDAwRkY3QzAwMDAwMDdGRkUwMDAwMDA3RkZFMDAwMDAwN0ZGRQotMDAwMDAwN0ZGRTAwMDAwMDdGRkUwMDAwMDA3RkZGMDAwMDAwRkZGRjAwMDAwMEZFRkY4MDAwMDBGRUZGODAwMDAxRkNGRkMwCi0wMDAzRkNGRkYwMDAwN0Y4RkZGQzAwMEZGOEZGRkY4MDdGRjBGRkZGRkZGRkUwRkZGRkZGRkZDMEZDRkZGRkZGODBGQzNGRkYKLUZFMDBGODBGRkZGQzAwNzgwMEZGRTAwMDI4M0Y3QkJEMzM+ODMgRDwwMDFGRkMwMDAwMDAwMEZGRkY4MDAwMDAwM0ZGRkZFMAotMDAwMDA3RkZGRkYwMDAwMDBGRkZGRkZDMDAwMDFGRkZGRkZFMDAwMDFGRjAwN0ZGMDAwMDFGRTAwMUZGMDAwMDFGRTAwMEZGCi04MDAwMUZFMDAwM0Y4MDAwMEZDMDAwM0ZDMDAwMDc4MDAwMUZDMDAwMDAwMDAwMUZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEYKLUUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMEZGRkUwMDAwMDAxRkZGRkUwMDAwMDFGRkZGRgotRTAwMDAwN0ZGRkZGRTAwMDAxRkZGRkZGRTAwMDA3RkZGRjBGRTAwMDBGRkZDMDBGRTAwMDFGRkMwMDBGRTAwMDNGRjAwMDBGCi1FMDAwN0ZDMDAwMEZFMDAwN0Y4MDAwMEZFMDAwRkYwMDAwMEZFMDAwRkUwMDAwMEZFMDAwRkUwMDAwMEZFMDAwRkUwMDAwMEYKLUUwMDBGRTAwMDAwRkUwMDBGRTAwMDAwRkUwMDBGRjAwMDAxRkUwMDA3RjAwMDAxRkUwMDA3RjgwMDA3RkUwMDAzRkUwMDBGRgotRjAwMDNGRjgwN0ZGRkZGMDFGRkZGRkZGRkZGODBGRkZGRkZGRkZGODA3RkZGRkYzRkZGODAzRkZGRkMxRkZGODAwRkZGRjAwCi0zRkYwMDAxRkYwMDAwMDAwMkQyRTdCQUMzMz45NyBEPDAwMDBGRkYwMDAwMDA3RkZGRTAwMDAxRkZGRkY4MDAwM0ZGRkZGQzAKLTAwN0ZGRkZGRTAwMUZGRkZGRkYwMDNGRkMwMUZGMDAzRkUwMDBGRjAwN0ZDMDAwRkYwMEZGODAwMEZGMDFGRjAwMDA3RTAxRgotRTAwMDAzQzAzRkMwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDA3RjgwMDAwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMDBGRjAwCi0wMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAKLTAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZGMDAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMDdGODAwMDAwMDAzRjgwMDAwMQotRjAzRkMwMDAwM0Y4MUZFMDAwMDNGODFGRjAwMDA3RjgwRkY4MDAwN0YwMDdGQzAwMEZGMDA3RkYwMDFGRTAwM0ZGRTA3RkUwCi0wMUZGRkZGRkMwMDBGRkZGRkY4MDAwM0ZGRkZGMDAwMDFGRkZGQzAwMDAwN0ZGRjgwMDAwMDBGRkMwMDAyNTJFNzlBQzMzPgotOTkgRDwwMDAwMDA3RkY4MDAwMDAwMDBGRkZDMDAwMDAwMDFGRkZDMDAwMDAwMDFGRkZDMDAwMDAwMDBGRkZDMDAwMDAwMDAKLTdGRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMAotMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMUZGCi0wMUZDMDAwMDA3RkZDMUZDMDAwMDFGRkZGMUZDMDAwMDdGRkZGOUZDMDAwMEZGRkZGRkZDMDAwMUZGRkZGRkZDMDAwM0ZGODEKLUZGRkMwMDA3RkUwMDNGRkMwMDBGRjgwMDFGRkMwMDBGRjAwMDBGRkMwMDFGRTAwMDA3RkMwMDFGQzAwMDAzRkMwMDNGQzAwMAotMDNGQzAwM0Y4MDAwMDFGQzAwN0Y4MDAwMDFGQzAwN0YwMDAwMDFGQzAwN0YwMDAwMDFGQzAwRkYwMDAwMDFGQzAwRkUwMDAwCi0wMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAKLTAxRkMwMEZFMDAwMDAxRkMwMEZFMDAwMDAxRkMwMEZGMDAwMDAxRkMwMDdGMDAwMDAxRkMwMDdGMDAwMDAzRkMwMDdGODAwMAotMDNGQzAwM0Y4MDAwMDNGQzAwM0ZDMDAwMDdGQzAwM0ZDMDAwMDdGQzAwMUZFMDAwMEZGQzAwMUZGMDAwMUZGQzAwMEZGODAwCi0zRkZDMDAwN0ZDMDA3RkZDMDAwM0ZGODFGRkZGRjAwM0ZGRkZGRkZGRjgwMEZGRkZGREZGRkMwMDdGRkZGOUZGRkMwMDNGRkYKLUUxRkZGODAwMEZGRjgwRkZGMDAwMDFGRTAwMDAwMDJFM0U3REJDMzM+STwwMDAwMDFGRjAwMDAzRkZDMDdGRkMwMDA3RkZFCi0xRkZGRjAwMEZGRkU3RkZGRjgwMEZGRkVGRkZGRjgwMDdGRkZGRkZGRkMwMDNGRkZGRjA3RkUwMDAwRkZGODAxRkUwMDAwRkYKLUYwMDBGRTAwMDBGRkUwMDBGRjAwMDBGRkMwMDA3RjAwMDBGRjgwMDA3RjAwMDBGRjgwMDA3RjAwMDBGRjAwMDA3RjAwMDBGRgotMDAwMDdGMDAwMEZGMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFCi0wMDAwN0YwMDAwRkUwMDAwN0YwMDAwRkUwMDAwN0YwMDAwRkUwMDAwN0YwMDAwRkUwMDAwN0YwMDAwRkUwMDAwN0YwMDAwRkUKLTAwMDA3RjAwMDBGRTAwMDA3RjAwMDBGRTAwMDA3RjAwMDBGRTAwMDA3RjAwMDBGRTAwMDA3RjAwMDBGRTAwMDA3RjAwMDBGRQotMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFMDAwMDdGMDAwMEZFMDAwMDdGMDAzRkZGCi1GODBGRkZGQzdGRkZGQzFGRkZGRUZGRkZGRTNGRkZGRkZGRkZGRTNGRkZGRjdGRkZGQzFGRkZGRTNGRkZGODBGRkZGQzMwMkMKLTdGQUIzMz4xMTAgRDwwMDAxRkUwMDAwMDAwRkZGQzAwMDAwM0ZGRkYwMDAwMDdGRkZGODAwMDBGRkZGRkMwMDAxRkZGRkZFCi0wMDAzRkYwM0ZGMDAwN0ZDMDBGRjgwMEZGODAwN0ZDMDBGRjAwMDNGQzAxRkUwMDAxRkUwMUZDMDAwMEZFMDNGODAwMDA3RjAKLTNGODAwMDA3RjA3RjgwMDAwN0Y4N0YwMDAwMDNGODdGMDAwMDAzRjg3RjAwMDAwM0Y4RkUwMDAwMDFGQ0ZFMDAwMDAxRkNGRQotMDAwMDAxRkNGRTAwMDAwMUZDRkUwMDAwMDFGQ0ZFMDAwMDAxRkNGRTAwMDAwMUZDRkUwMDAwMDFGQ0ZFMDAwMDAxRkNGRTAwCi0wMDAxRkNGRjAwMDAwM0ZDN0YwMDAwMDNGODdGMDAwMDAzRjg3RjgwMDAwN0Y4M0Y4MDAwMDdGMDNGQzAwMDBGRjAzRkMwMDAKLTBGRjAxRkUwMDAxRkUwMUZGMDAwM0ZFMDBGRjgwMDdGQzAwN0ZDMDBGRjgwMDNGRjAzRkYwMDAxRkZGRkZFMDAwMEZGRkZGQwotMDAwMDdGRkZGODAwMDAzRkZGRjAwMDAwMEZGRkMwMDAwMDAxRkUwMDAwMjYyRTdBQUMzMz5JPDAwMDAwMUZFMDAwMDNGRkMKLTBGRkZDMDAwN0ZGRTFGRkZGMDAwRkZGRTdGRkZGODAwRkZGRUZGRkZGRTAwN0ZGRkZGRkZGRjAwM0ZGRkZFMDdGRjAwMDBGRgotRjgwMEZGODAwMEZGRTAwMDdGQzAwMEZGQzAwMDNGRTAwMEZGODAwMDFGRTAwMEZGODAwMDBGRjAwMEZGMDAwMDBGRjAwMEZGCi0wMDAwMDdGMDAwRkUwMDAwMDdGODAwRkUwMDAwMDNGODAwRkUwMDAwMDNGODAwRkUwMDAwMDNGQzAwRkUwMDAwMDFGQzAwRkUKLTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRTAwMDAwMUZDMDBGRQotMDAwMDAxRkMwMEZFMDAwMDAxRkMwMEZFMDAwMDAzRkMwMEZFMDAwMDAzRjgwMEZFMDAwMDAzRjgwMEZGMDAwMDA3RjgwMEZGCi0wMDAwMDdGMDAwRkY4MDAwMEZGMDAwRkY4MDAwMEZFMDAwRkZDMDAwMUZFMDAwRkZDMDAwM0ZDMDAwRkZFMDAwN0ZDMDAwRkYKLUY4MDFGRjgwMDBGRkZFMDdGRjAwMDBGRkZGRkZGRTAwMDBGRUZGRkZGQzAwMDBGRTdGRkZGODAwMDBGRTNGRkZFMDAwMDBGRQotMEZGRjgwMDAwMEZFMDNGRTAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFCi0wMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUKLTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwM0ZGRkY4MDAwMDAwN0ZGRgotRkMwMDAwMDBGRkZGRkUwMDAwMDBGRkZGRkUwMDAwMDA3RkZGRkMwMDAwMDAzRkZGRjgwMDAwMDAyRTQyN0ZBQjMzPkk8MDAKLTAwMDAwM0ZFMDA3RkZGODAxRkZGODBGRkZGQzA3RkZGRTBGRkZGQzFGRkZGRTBGRkZGQzNGRkZGRjBGRkZGQzdGRkZGRjA3RgotRkZDRkZFMEZGMDAwMUZERkYwMEZGMDAwMUZGRkMwMDdFMDAwMUZGRjgwMDNDMDAwMUZGRjAwMDAwMDAwMUZGRTAwMDAwMDAwCi0xRkZDMDAwMDAwMDAxRkY4MDAwMDAwMDAxRkY4MDAwMDAwMDAxRkYwMDAwMDAwMDAxRkYwMDAwMDAwMDAxRkUwMDAwMDAwMDAKLTFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMAotMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwCi0xRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAKLTFGQzAwMDAwMDAwMDFGQzAwMDAwMDA3RkZGRkZGRTAwMDBGRkZGRkZGRjAwMDBGRkZGRkZGRjAwMDBGRkZGRkZGRjAwMDBGRgotRkZGRkZGMDAwMDdGRkZGRkZFMDAwMDJDMkM3REFCMzM+MTE0IEQ8MDAwM0MwMDAwMDAwMDAwN0UwMDAwMDAwMDAwRkUwMDAKLTAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMAotMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDNGRkZGRkZGRkMwMDdGRkZGRkZGRkUwMEZGRkZGRkZGCi1GRTAwRkZGRkZGRkZGRTAwRkZGRkZGRkZGRTAwN0ZGRkZGRkZGQzAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAKLTAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMAotMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwCi0wMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAKLTAwMDAwMDBGRTAwMDFGMDAwMDBGRTAwMDNGODAwMDBGRTAwMDNGODAwMDBGRTAwMDNGODAwMDBGRTAwMDNGODAwMDBGRTAwMAotM0Y4MDAwMEZFMDAwN0Y4MDAwMEZGMDAwN0YwMDAwMDdGMDAwRkYwMDAwMDdGODAxRkYwMDAwMDdGRTA3RkUwMDAwMDNGRkZGCi1GQzAwMDAwMUZGRkZGODAwMDAwMEZGRkZGMDAwMDAwMDdGRkZFMDAwMDAwMDFGRkY4MDAwMDAwMDA3RkMwMDAwMjkzODdFQjYKLTMzPjExNiBEPDdGRkY4MDFGRkZFMEZGRkZDMDNGRkZGMEZGRkZFMDdGRkZGOEZGRkZFMDdGRkZGOEZGRkZDMDNGRkZGMDdGCi1GRjgwMUZGRkUwMDNGODAwMDBGQzAwMDFGODAwMDFGQzAwMDFGODAwMDFGODAwMDFGQzAwMDFGODAwMDBGQzAwMDNGODAwMDAKLUZFMDAwM0YwMDAwMDdFMDAwM0YwMDAwMDdFMDAwM0YwMDAwMDdGMDAwN0UwMDAwMDNGMDAwN0UwMDAwMDNGMDAwN0UwMDAwMAotM0Y4MDBGQzAwMDAwMUY4MDBGQzAwMDAwMUY4MDBGQzAwMDAwMEZDMDFGODAwMDAwMEZDMDFGODAwMDAwMEZFMDFGODAwMDAwCi0wN0UwM0YwMDAwMDAwN0UwM0YwMDAwMDAwN0YwM0YwMDAwMDAwM0YwM0YwMDAwMDAwM0YwN0UwMDAwMDAwMUY4N0UwMDAwMDAKLTAxRjg3RTAwMDAwMDAxRjg3QzAwMDAwMDAwRjhGQzAwMDAwMDAwRkNGQzAwMDAwMDAwRkNGODAwMDAwMDAwN0NGODAwMDAwMAotMDA3REY4MDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwCi0wMDFGRTAwMDAwMDAwMDBGQzAwMDAwMDAwMDBGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGODAwMDAwMDAwMDFGODAwMDAwMDAKLTAwM0Y4MDAwMDAwMDAwM0YwMDAwMDAwMDAwM0YwMDAwMDAwMDAwM0YwMDAwMDAwMDAwN0UwMDAwMDAwMDAwN0UwMDAwMDAwMAotMDBGRTAwMDAwMDNGMDBGQzAwMDAwMDNGMDFGQzAwMDAwMDdGODFGODAwMDAwMDdGODNGODAwMDAwMDdGODdGMDAwMDAwMDdGCi05RkYwMDAwMDAwN0ZGRkUwMDAwMDAwM0ZGRkMwMDAwMDAwM0ZGRjgwMDAwMDAwMUZGRjAwMDAwMDAwMEZGQzAwMDAwMDAwMDMKLUYwMDAwMDAwMDAyRDQyN0RBQTMzPjEyMSBEIEUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZlIGVjdHQxNDQwIDE0LjQgNgotL0ZlIDYgMTEzIGRmPDdGRkZGRjAwMDAwMDAwRkZGRkZGODAwMDAwMDBGRkZGRkZDMDAwMDAwMEZGRkZGRkMwMDAwMDAwRkYKLUZGRkZDMDAwMDAwMEZGRkZGRjgwMDAwMDAwN0ZGRkZGMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRQotMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwCi0wMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAKLTAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMAotMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwCi0wMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAKLTAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMAotRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFCi0wMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAKLTAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDA3QzAwMEZFMDAwMAotMDAwRkUwMDBGRTAwMDAwMDBGRTAwMEZFMDAwMDAwMEZFMDAwRkUwMDAwMDAwRkUwMDBGRTAwMDAwMDBGRTAwMEZFMDAwMDAwCi0wRkUwMDBGRTAwMDAwMDBGRTAwMEZFMDAwMDAwMEZFMDAwRkUwMDAwMDAwRkUwMDBGRTAwMDAwMDBGRTAwMEZFMDAwMDAwMEYKLUUwN0ZGRkZGRkZGRkZGRTBGRkZGRkZGRkZGRkZFMEZGRkZGRkZGRkZGRkUwRkZGRkZGRkZGRkZGRTBGRkZGRkZGRkZGRkZFMAotRkZGRkZGRkZGRkZGRTA3RkZGRkZGRkZGRkZDMDMzNDk3QkM4M0Q+NzYgRDwwMDAzRkZGRkMwMDAwMDNGRkZGRkZDMDAwMEZGCi1GRkZGRkYwMDAzRkZGRkZGRkZDMDA3RkZGRkZGRkZFMDBGRkZGRkZGRkZGMDFGRkZGRkZGRkZGODFGRkYwMDAwRkZGODFGRjgKLTAwMDAxRkY4M0ZGMDAwMDAwRkZDM0ZDMDAwMDAwM0ZDM0ZDMDAwMDAwM0ZDN0Y4MDAwMDAwMUZFN0Y4MDAwMDAwMUZFN0Y4MAotMDAwMDAxRkU3RjAwMDAwMDAwRkU3RjAwMDAwMDAwRkU3RjAwMDAwMDAwRkU3RjAwMDAwMDAwRkU3RjAwMDAwMDAwRkVGRjAwCi0wMDAwMDBGRkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAKLTAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMAotMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwCi0wMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAKLTAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMDAwMDAwMDdGRkUwMAotMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRjAwMDAwMDAwRkZGRjAwMDAwMDAwRkY3RjAwMDAwMDAwRkU3RjAwCi0wMDAwMDBGRTdGMDAwMDAwMDBGRTdGMDAwMDAwMDBGRTdGMDAwMDAwMDBGRTdGODAwMDAwMDFGRTdGODAwMDAwMDFGRTdGODAKLTAwMDAwMUZFM0ZDMDAwMDAwM0ZDM0ZFMDAwMDAwN0ZDM0ZGMDAwMDAwRkZDMUZGQzAwMDAzRkY4MUZGRjgwMDFGRkY4MUZGRgotRkZGRkZGRjgwRkZGRkZGRkZGRjAwN0ZGRkZGRkZGRTAwM0ZGRkZGRkZGQzAwMEZGRkZGRkZGMDAwMDNGRkZGRkZDMDAwMDAzCi1GRkZGQzAwMDMwNEI3QUM5M0Q+NzkgRDwwMDAwRkZFMDAwRjAwMDA3RkZGQzAwRjgwMDFGRkZGRjgxRjgwMDdGRkZGRkUxRjgKLTAxRkZGRkZGRjFGODAzRkZGRkZGRkJGODA3RkZGRkZGRkZGODBGRkY4MDNGRkZGODBGRkMwMDA3RkZGODFGRjAwMDAxRkZGOAotM0ZFMDAwMDBGRkY4M0ZDMDAwMDAzRkY4N0Y4MDAwMDAzRkY4N0Y4MDAwMDAxRkY4N0YwMDAwMDAwRkY4RkYwMDAwMDAwRkY4Ci1GRTAwMDAwMDA3RjhGRTAwMDAwMDA3RjhGRTAwMDAwMDA3RjhGRTAwMDAwMDAzRjhGRTAwMDAwMDAzRjhGRTAwMDAwMDAzRjgKLUZGMDAwMDAwMDNGODdGMDAwMDAwMDFGMDdGMDAwMDAwMDAwMDdGODAwMDAwMDAwMDNGQzAwMDAwMDAwMDNGRTAwMDAwMDAwMAotMUZGMDAwMDAwMDAwMUZGQzAwMDAwMDAwMEZGRjAwMDAwMDAwMDdGRkYwMDAwMDAwMDNGRkZGMDAwMDAwMDFGRkZGRjgwMDAwCi0wMDdGRkZGRjgwMDAwMDNGRkZGRkUwMDAwMDBGRkZGRkY4MDAwMDAxRkZGRkZFMDAwMDAwMUZGRkZGMDAwMDAwMDFGRkZGODAKLTAwMDAwMDFGRkZDMDAwMDAwMDAxRkZFMDAwMDAwMDAwM0ZGMDAwMDAwMDAwMUZGODAwMDAwMDAwMDdGODAwMDAwMDAwMDNGQwotMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMUZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZGN0MwMDAwMDAwMDdGCi1GRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRjAwMDAwMDAwN0YKLUZGMDAwMDAwMDBGRkZGMDAwMDAwMDBGRUZGODAwMDAwMDBGRUZGODAwMDAwMDFGRUZGQzAwMDAwMDNGQ0ZGRTAwMDAwMDdGQwotRkZGODAwMDAwRkY4RkZGQzAwMDAxRkY4RkZGRjgwMDA3RkYwRkZGRkY4MDFGRkUwRkZGRkZGRkZGRkMwRkVGRkZGRkZGRjgwCi1GQzdGRkZGRkZGMDBGQzFGRkZGRkZFMDBGQzA3RkZGRkY4MDBGODAwRkZGRkUwMDA3ODAwMEZGRjAwMDAzMDRCN0FDOTNEPgotODMgRDwwMDAwMUZGODAwMDAwMDAwRkZGRjgwMDAwMDAzRkZGRkUwMDAwMDBGRkZGRkY4MDAwMDFGRkZGRkZDMDAwMDNGRkYKLUZGRkUwMDAwN0ZGRkZGRkYwMDAwRkZGODBGRkY4MDAxRkZDMDAxRkZDMDAzRkYwMDAwN0ZFMDA3RkMwMDAwMUZFMDBGRjgwMAotMDAwRkYwMEZGMDAwMDAwRkYwMUZFMDAwMDAwN0Y4MUZFMDAwMDAwM0Y4M0ZDMDAwMDAwM0Y4M0Y4MDAwMDAwM0ZDM0Y4MDAwCi0wMDAxRkM3RjgwMDAwMDAxRkM3RjAwMDAwMDAxRkM3RjAwMDAwMDAxRkVGRjAwMDAwMDAwRkVGRTAwMDAwMDAwRkVGRkZGRkYKLUZGRkZGRUZGRkZGRkZGRkZGRUZGRkZGRkZGRkZGRUZGRkZGRkZGRkZGRUZGRkZGRkZGRkZGRUZGRkZGRkZGRkZGRUZGRkZGRgotRkZGRkZDRkUwMDAwMDAwMDAwRkYwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0Y4MDAwCi0wMDAwMDAzRjgwMDAwMDAwMDAzRkMwMDAwMDAwMDAxRkUwMDAwMDAwN0MxRkUwMDAwMDAwRkUwRkYwMDAwMDAwRkUwRkY4MDAKLTAwMDBGRTA3RkMwMDAwMDFGRTAzRkYwMDAwMDNGQzAzRkY4MDAwMDdGQzAxRkZGMDAwMUZGODAwRkZGRTAwRkZGMDAwN0ZGRgotRkZGRkUwMDAzRkZGRkZGRkMwMDAwRkZGRkZGRjgwMDAwN0ZGRkZGRjAwMDAwMUZGRkZGQzAwMDAwMDdGRkZFMDAwMDAwMDA3Ci1GRjAwMDAyRjM2NzlCNDNEPjEwMSBEPDAwMDAwMDNGRTAwMDAwN0ZGRTAxRkZGQzAwMDBGRkZGMDdGRkZFMDAwMEZGRkYxRgotRkZGRjgwMDBGRkZGM0ZGRkZGODAwMEZGRkY3RkZGRkZDMDAwRkZGRkZGRkZGRkUwMDA3RkZGRkZDMDdGRTAwMDAwN0ZGRTAwCi0xRkYwMDAwMDdGRkMwMDBGRjAwMDAwN0ZGODAwMDdGMDAwMDA3RkYwMDAwN0Y4MDAwMDdGRTAwMDA3RjgwMDAwN0ZDMDAwMDMKLUY4MDAwMDdGQzAwMDAzRjgwMDAwN0Y4MDAwMDNGODAwMDA3RjgwMDAwM0Y4MDAwMDdGODAwMDAzRjgwMDAwN0YwMDAwMDNGOAotMDAwMDdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RjAwMDAwM0Y4MDAwMDdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwCi0wMDdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RjAwMDAwM0Y4MDAwMDdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDAKLTdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RjAwMDAwM0Y4MDAwMDdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RgotMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RjAwMDAwM0Y4MDAwMDdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RjAwCi0wMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RjAwMDAwM0Y4MDAwMDdGMDAwMDAzRjgwMDAwN0YwMDAwMDNGODAwMDA3RjAwMDAKLTAzRjgwMDdGRkZGRjAxRkZGRkY4RkZGRkZGODNGRkZGRkNGRkZGRkY4N0ZGRkZGQ0ZGRkZGRjg3RkZGRkZDRkZGRkZGODdGRgotRkZGQ0ZGRkZGRjgzRkZGRkZDN0ZGRkZGMDFGRkZGRjgzNjM0N0RCMzNEPjExMCBEPDAwMDAwMDFGRjAwMDAwN0ZGRTAwRkYKLUZDMDAwMEZGRkYwM0ZGRkYwMDAwRkZGRjBGRkZGRkMwMDBGRkZGM0ZGRkZGRTAwMEZGRkY3RkZGRkZGMDAwRkZGRkZGRkZGRgotRjgwMDdGRkZGRkMwN0ZGQzAwMDA3RkZGMDAwRkZFMDAwMDdGRkMwMDA3RkUwMDAwN0ZGODAwMDFGRjAwMDA3RkYwMDAwMEZGCi0wMDAwN0ZFMDAwMDBGRjgwMDA3RkMwMDAwMDdGODAwMDdGODAwMDAwM0ZDMDAwN0Y4MDAwMDAzRkMwMDA3RjgwMDAwMDFGRTAKLTAwN0YwMDAwMDAxRkUwMDA3RjAwMDAwMDBGRTAwMDdGMDAwMDAwMEZFMDAwN0YwMDAwMDAwRkYwMDA3RjAwMDAwMDBGRjAwMAotN0YwMDAwMDAwN0YwMDA3RjAwMDAwMDA3RjAwMDdGMDAwMDAwMDdGMDAwN0YwMDAwMDAwN0YwMDA3RjAwMDAwMDA3RjAwMDdGCi0wMDAwMDAwN0YwMDA3RjAwMDAwMDA3RjAwMDdGMDAwMDAwMDdGMDAwN0YwMDAwMDAwN0YwMDA3RjAwMDAwMDBGRjAwMDdGMDAKLTAwMDAwRkYwMDA3RjAwMDAwMDBGRTAwMDdGODAwMDAwMEZFMDAwN0Y4MDAwMDAxRkUwMDA3RjgwMDAwMDFGQzAwMDdGQzAwMAotMDAzRkMwMDA3RkMwMDAwMDNGQzAwMDdGRTAwMDAwN0Y4MDAwN0ZFMDAwMDBGRjgwMDA3RkYwMDAwMUZGMDAwMDdGRjgwMDAzCi1GRjAwMDA3RkZDMDAwN0ZFMDAwMDdGRkUwMDFGRkMwMDAwN0ZGRkMwRkZGODAwMDA3RkZGRkZGRkY4MDAwMDdGN0ZGRkZGRTAKLTAwMDA3RjNGRkZGRkMwMDAwMDdGMEZGRkZGODAwMDAwN0YwN0ZGRkUwMDAwMDA3RjAxRkZGODAwMDAwMDdGMDAzRkUwMDAwMAotMDA3RjAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwMDA3RjAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwCi03RjAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwMDA3RjAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0YKLTAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwMDA3RjAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0YwMAotMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RkZGRkYwMDAwMDAwMEZGRkZGRjgwCi0wMDAwMDBGRkZGRkY4MDAwMDAwMEZGRkZGRjgwMDAwMDAwRkZGRkZGODAwMDAwMDBGRkZGRkY4MDAwMDAwMDdGRkZGRjAwMDAKLTAwMDAzNDRGN0RCMzNEPjExMiBEIEUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZmIGVjc3MxMDAwIDEwIDU1Ci0vRmYgNTUgMTIyIGRmPEZGRkZGRkZGRkZGRkZGRkZGRkZGQzBGRkZGRkZGRkZGRkZGRkZGRkZGRkMwRkZGRkZGRkZGRkZGRkYKLUZGRkZGRkMwRkZGRkZGRkZGRkZGRkZGRkZGRkZDMEZGRkZGRkZGRkZGRkZGRkZGRkZGQzA1MjA1ODA5ODUzPjIyCi1EPDAwMDFGODA3RjAwMDA3RkUwN0YwMDAwRkZFMDdGMDAwMUZGRTA3RjAwMDNGRkUwN0YwMDA3RjBFMDdGMDAwN0UwMjA3RjAKLTAwRkUwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwMQotRkMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwMUZDCi0wMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMEZGRkZGRTA3RjBGRkZGRkUwN0YwRkZGRkZFMDdGMEZGRkZGRTA3RjBGRkZGRkUKLTA3RjAwMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwNwotRjAwMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwCi0wMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwMDEKLUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwMDFGQwotMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDA3RjAwMUZDMDAwN0YwMjQzRDdGQkMyQz4yOCBEPEZGRkZGQ0ZGRkZGQ0ZGRkZGQ0ZGCi1GRkZDRkZGRkZDMTYwNTdGOTQxQz40NSBEPEZFRkVGRUZFRkVGRUZFMDcwNzc4ODYxNz5JPDAwMDNGODAwMDAwMDFGRkYwMAotMDAwMDdGRkZDMDAwMDBGRkZGRTAwMDAxRkZGRkYwMDAwM0ZFMEZGODAwMDdGODAzRkMwMDBGRjAwMUZFMDAwRkUwMDBGRTAwCi0xRkMwMDA3RjAwMUY4MDAwM0YwMDNGODAwMDNGODAzRjgwMDAzRjgwM0YwMDAwMUY4MDdGMDAwMDFGQzA3RjAwMDAxRkMwN0YKLTAwMDAxRkMwN0UwMDAwMEZDMDdFMDAwMDBGQzA3RTAwMDAwRkMwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMAotMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwCi0wRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEYKLUUwRkUwMDAwMEZFMDdGMDAwMDFGQzA3RjAwMDAxRkMwN0YwMDAwMUZDMDdGMDAwMDFGQzA3RjAwMDAxRkMwM0Y4MDAwM0Y4MAotM0Y4MDAwM0Y4MDNGODAwMDNGODAxRkMwMDA3RjAwMUZDMDAwN0YwMDBGRTAwMEZFMDAwRkYwMDFGRTAwMDdGODAzRkMwMDAzCi1GRTBGRjgwMDAxRkZGRkYwMDAwMEZGRkZFMDAwMDA3RkZGQzAwMDAwMUZGRjAwMDAwMDAzRjgwMDAwMjMzQTdEQjcyQT40OAotRDwwMDAwQzAwMDAwMDFDMDAwMDAwN0MwMDAwMDFGQzAwMDAwRkZDMDAwRkZGRkMwMDBGRkZGQzAwMEZGRkZDMDAwRkZGRkMwCi0wMEZGMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAKLTAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMAotMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwCi0wMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAKLTAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwN0ZGRkZGRjA3RkZGRkZGMDdGRkZGRgotRjA3RkZGRkZGMDdGRkZGRkYwMUMzODc5QjcyQT5JPDAwMEZGODAwMDAwMDdGRkYwMDAwMDFGRkZGQzAwMDAzRkZGRkUwMDAKLTA3RkZGRkYwMDAwRkZGRkZGODAwMUZGMDFGRkMwMDFGQzAwN0ZFMDAzRjAwMDFGRjAwM0UwMDAwRkYwMDdFMDAwMEZGODA3QwotMDAwMDdGODBGQzAwMDAzRjgwRjgwMDAwM0Y4MDc4MDAwMDNGQzAzODAwMDAzRkMwMzAwMDAwMUZDMDEwMDAwMDFGQzAwMDAwCi0wMDFGQzAwMDAwMDAxRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDdGODAwMDAwMDAKLTdGMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMUZDMDAwMDAwMDNGODAwMDAwMDA3RjAwMDAwMDAwRkUwMDAwMDAwMUZDMAotMDAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMDBGRTAwMDAwMDAxRkMwMDAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMDBGQzAwMDAwCi0wMDFGODAwMDAwMDAzRjAwMDAwMDAwN0UwMDAwMDAwMEZDMDAwMDAwMDFGODAwMDAwMDAzRjAwMDAwMDAwN0UwMDAwMDAwMEYKLUMwMDAwMDAwMUY4MDAwMDAwMDNGMDAwMDAwMDA3RkZGRkZGRkMwN0ZGRkZGRkZDMDdGRkZGRkZGQzA3RkZGRkZGRkMwN0ZGRgotRkZGRkMwN0ZGRkZGRkZDMDIyMzg3REI3MkE+STwwMDA3RjgwMDAwMDAzRkZGMDAwMDAwRkZGRkMwMDAwMUZGRkZFMDAwMDMKLUZGRkZGMDAwMEZGRkZGRjgwMDBGRkMwRkZDMDAxRkUwMDNGRTAwM0ZDMDAxRkUwMDFGMDAwMEZFMDAwRTAwMDBGRjAwMEUwMAotMDBGRjAwMDQwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRTAwMDAwMDAxCi1GRTAwMDAwMDAxRkMwMDAwMDAwM0ZDMDAwMDAwMDdGODAwMDAwMDBGRjAwMDAwMDA3RkUwMDAwMDFGRkZDMDAwMDAxRkZGODAKLTAwMDAxRkZFMDAwMDAwMUZGRjgwMDAwMDFGRkZFMDAwMDAwMDBGRjgwMDAwMDAwM0ZDMDAwMDAwMDBGRTAwMDAwMDAwN0YwMAotMDAwMDAwN0Y4MDAwMDAwMDNGODAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwCi0wMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDQwMDAwMDNGRTA2MDAwMDAzRkMwNzAwMDAwM0ZDMEY4MDAKLTAwN0Y4MEZDMDAwMDdGODBGRjAwMDBGRjAwN0ZDMDAzRkYwMDNGRjgwRkZFMDAxRkZGRkZGQzAwMEZGRkZGRjgwMDAzRkZGRgotRjAwMDAxRkZGRkMwMDAwMDdGRkYwMDAwMDAwN0ZDMDAwMDIzM0E3REI3MkE+STwwMDAwMDdGODAwMDAwMDBGRjgwMDAwMDAKLTBGRjgwMDAwMDAxQkY4MDAwMDAwM0JGODAwMDAwMDNCRjgwMDAwMDA3QkY4MDAwMDAwNzNGODAwMDAwMEYzRjgwMDAwMDFGMwotRjgwMDAwMDFGM0Y4MDAwMDAzRTNGODAwMDAwM0UzRjgwMDAwMDdDM0Y4MDAwMDBGQzNGODAwMDAwRkMzRjgwMDAwMUY4M0Y4Ci0wMDAwMUY4M0Y4MDAwMDNGMDNGODAwMDA3RjAzRjgwMDAwN0UwM0Y4MDAwMEZFMDNGODAwMDBGQzAzRjgwMDAxRjgwM0Y4MDAKLTAzRjgwM0Y4MDAwM0YwMDNGODAwMDdGMDAzRjgwMDA3RTAwM0Y4MDAwRkUwMDNGODAwMUZDMDAzRjgwMDFGODAwM0Y4MDAzRgotODAwM0Y4MDAzRjAwMDNGODAwN0YwMDAzRjgwMEZFMDAwM0Y4MDBGRkZGRkZGRkY4RkZGRkZGRkZGOEZGRkZGRkZGRjhGRkZGCi1GRkZGRjhGRkZGRkZGRkY4MDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDMKLUY4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGOAotMDAwMDAwMDNGODAwMjUzNjdFQjUyQT5JPDFGRkZGRkZFMDAxRkZGRkZGRTAwMUZGRkZGRkUwMDFGRkZGRkZFMDAxRkZGRkYKLUZFMDAxRkZGRkZGRTAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMAotMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwCi0xRkMxRkMwMDAwMUZDRkZGMDAwMDFGREZGRkMwMDAxRkZGRkZFMDAwMUZGRkZGRjAwMDFGRkUwN0Y4MDAxRkY4MDNGQzAwMUYKLUYwMDFGRTAwMUZFMDAwRkYwMDFGQzAwMEZGMDAxRjgwMDA3RjAwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDAzRjgwMDAwMAotMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwCi0zRkMwMDAwMDAwM0ZDMDAwMDAwMDdGODAxMDAwMDA3RjgwMzgwMDAwN0Y4MDM4MDAwMEZGMDA3QzAwMDFGRjAwRkYwMDAzRkUKLTAwN0Y4MDA3RkMwMDNGRjAxRkY4MDAxRkZGRkZGMDAwMEZGRkZGRTAwMDA3RkZGRkMwMDAwM0ZGRkY4MDAwMDBGRkZFMDAwMAotMDAxRkYwMDAwMDIyMzg3REI1MkE+STwwMDAwM0ZFMDAwMDAwMUZGRjgwMDAwMDdGRkZFMDAwMDBGRkZGRTAwMDAzRkZGRkUKLTAwMDA3RkZGRkUwMDAwRkZFMDFFMDAwMUZGMDAwNjAwMDFGRTAwMDAwMDAzRjgwMDAwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMAotMEZFMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwMUY4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwN0YwMDdGMDAwMDdGCi0wM0ZGQzAwMDdGMEZGRkYwMDA3RjNGRkZGODAwN0U3RkZGRkMwMEZFRkUwN0ZFMDBGRkY4MDFGRTAwRkZFMDAwRkYwMEZGQzAKLTAwN0YwMEZGQzAwMDNGODBGRjgwMDAzRjgwRkY4MDAwMUZDMEZGMDAwMDFGQzBGRjAwMDAxRkMwRkYwMDAwMEZFMEZFMDAwMAotMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZGMDAwMDBGRTA3RTAwMDAwRkUwN0YwMDAwMEZFMDdGMDAwMDBGCi1FMDdGMDAwMDBGRTA3RjAwMDAwRkUwM0YwMDAwMUZDMDNGODAwMDFGQzAzRjgwMDAxRkMwMUY4MDAwM0Y4MDFGQzAwMDNGODAKLTBGRTAwMDdGMDAwRkUwMDBGRjAwMDdGODAxRkUwMDA3RkUwN0ZDMDAwM0ZGRkZGODAwMDFGRkZGRjAwMDAwRkZGRkUwMDAwMAotM0ZGRkMwMDAwMDFGRkYwMDAwMDAwM0ZDMDAwMDIzM0E3REI3MkE+STxGRkZGRkZGRkUwRkZGRkZGRkZFMEZGRkZGRkZGRTAKLUZGRkZGRkZGRTBGRkZGRkZGRkUwRkZGRkZGRkZFMDAwMDAwMDA3RTAwMDAwMDAwRkMwMDAwMDAwMUY4MDAwMDAwMDNGMDAwMAotMDAwMDdFMDAwMDAwMDBGRTAwMDAwMDAwRkMwMDAwMDAwMUY4MDAwMDAwMDNGODAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwCi0wRkUwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwRkUKLTAwMDAwMDAwRkUwMDAwMDAwMUZFMDAwMDAwMDFGQzAwMDAwMDAzRkMwMDAwMDAwM0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMAotMDAwMDA3RjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwCi0wMDFGRTAwMDAwMDAxRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAKLTNGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RgotODAwMDAwMDA3RjgwMDAwMDIzMzc3REI1MkE+STwwMDAzRjgwMDAwMDAxRkZGMDAwMDAwN0ZGRkMwMDAwMEZGRkZFMDAwMDMKLUZGRkZGODAwMDNGRkZGRjgwMDA3RkMwN0ZDMDAwRkYwMDFGRTAwMEZFMDAwRkUwMDFGQzAwMDdGMDAxRjgwMDAzRjAwM0Y4MAotMDAzRjgwM0YwMDAwMUY4MDNGMDAwMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDFGODAzRjAwMDAxRjgwMUY4MDAwCi0zRjAwMUY4MDAwM0YwMDBGQzAwMDdFMDAwRkMwMDA3RTAwMDdFMDAwRkMwMDAzRjgwM0Y4MDAwMEZGRkZFMDAwMDA3RkZGQzAKLTAwMDAwRkZFMDAwMDAwMUZGRjAwMDAwMEZGRkZFMDAwMDFGRjFGRjAwMDA3RjgwM0ZDMDAwRkUwMDBGRTAwMUZDMDAwN0YwMAotM0Y4MDAwM0Y4MDNGMDAwMDFGODA3RjAwMDAxRkMwN0YwMDAwMUZDMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFCi0wMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTA3RjAwMDAxRkMwN0YwMDAwMUZDMDdGODAKLTAwM0ZDMDNGODAwMDNGODAzRkMwMDA3RjgwMUZGMDAxRkYwMDBGRkMwN0ZFMDAwN0ZGRkZGQzAwMDNGRkZGRjgwMDAxRkZGRgotRjAwMDAwRkZGRkUwMDAwMDNGRkY4MDAwMDAwN0ZDMDAwMDIzM0E3REI3MkE+STwwMDAzRkMwMDAwMDAxRkZGMDAwMDAwN0YKLUZGQzAwMDAwRkZGRkUwMDAwMUZGRkZGMDAwMDNGRkZGRjgwMDA3RkMwN0ZDMDAwRkYwMDFGQzAwMUZFMDAwRkUwMDFGQzAwMAotN0UwMDNGODAwMDdGMDAzRjgwMDAzRjAwN0YwMDAwM0Y4MDdGMDAwMDNGODA3RjAwMDAxRjgwRkUwMDAwMUZDMEZFMDAwMDFGCi1DMEZFMDAwMDFGQzBGRTAwMDAwRkMwRkUwMDAwMEZDMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTAKLUZFMDAwMDBGRTBGRTAwMDAxRkUwN0YwMDAwMUZFMDdGMDAwMDFGRTA3RjAwMDAzRkUwM0Y4MDAwM0ZFMDNGODAwMDdGRTAxRgotQzAwMDdGRTAxRkUwMDBGRkUwMEZGMDAzRkZFMDBGRkMwRkVGRTAwN0ZGRkZDRkMwMDNGRkZGOUZDMDAxRkZGRTFGQzAwMDdGCi1GODFGQzAwMDFGQzAxRkMwMDAwMDAwMUY4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMDAKLUZFMDAwMDAwMDBGRTAwMDAwMDAxRkMwMDAwMDAwM0Y4MDAwNjAwMDdGODAwMDcwMDFGRjAwMDBGQzA3RkUwMDAwRkZGRkZDMAotMDAxRkZGRkY4MDAwMEZGRkZGMDAwMDA3RkZGQzAwMDAwMUZGRjgwMDAwMDAzRkMwMDAwMDIzM0E3REI3MkE+STwwMDAwMDcKLUY4MDAwMDAwMDAwMDA3RjgwMDAwMDAwMDAwMEZGQzAwMDAwMDAwMDAwRkZDMDAwMDAwMDAwMDFGRkUwMDAwMDAwMDAwMUZGRQotMDAwMDAwMDAwMDFGN0UwMDAwMDAwMDAwM0Y3RjAwMDAwMDAwMDAzRTdGMDAwMDAwMDAwMDNFN0YwMDAwMDAwMDAwN0UzRjgwCi0wMDAwMDAwMDdFM0Y4MDAwMDAwMDAwN0MzRjgwMDAwMDAwMDBGQzNGQzAwMDAwMDAwMEZDMUZDMDAwMDAwMDAwRkMxRkMwMDAKLTAwMDAwMUY4MUZFMDAwMDAwMDAxRjgwRkUwMDAwMDAwMDNGODBGRjAwMDAwMDAwM0YwMEZGMDAwMDAwMDAzRjAwRkYwMDAwMAotMDAwN0YwMDdGODAwMDAwMDA3RTAwN0Y4MDAwMDAwMDdFMDA3RjgwMDAwMDAwRkUwMDNGQzAwMDAwMDBGQzAwM0ZDMDAwMDAwCi0wRkMwMDNGQzAwMDAwMDFGQzAwMUZFMDAwMDAwMUY4MDAxRkUwMDAwMDAzRjgwMDFGRjAwMDAwMDNGODAwMEZGMDAwMDAwM0YKLTAwMDBGRjAwMDAwMDdGMDAwMEZGODAwMDAwN0YwMDAwN0Y4MDAwMDA3RTAwMDA3RjgwMDAwMEZFMDAwMDNGQzAwMDAwRkZGRgotRkZGRkMwMDAwMEZGRkZGRkZGQzAwMDAxRkZGRkZGRkZFMDAwMDFGRkZGRkZGRkUwMDAwMUZGRkZGRkZGRTAwMDAzRjgwMDAwCi0wRkYwMDAwM0YwMDAwMDBGRjAwMDA3RjAwMDAwMEZGODAwMDdGMDAwMDAwN0Y4MDAwN0UwMDAwMDA3RjgwMDBGRTAwMDAwMDcKLUZDMDAwRkUwMDAwMDAzRkMwMDBGQzAwMDAwMDNGQzAwMUZDMDAwMDAwM0ZFMDAxRkMwMDAwMDAxRkUwMDFGODAwMDAwMDFGRQotMDAzRjgwMDAwMDAwRkYwMDNGODAwMDAwMDBGRjAwN0YwMDAwMDAwMEZGODA3RjAwMDAwMDAwN0Y4MDdFMDAwMDAwMDA3RjgwCi1GRTAwMDAwMDAwN0ZDMDMyM0E3RUI5Mzc+NjUgRDxGRkZGRkY4MDAwMDBGRkZGRkZGODAwMDBGRkZGRkZGRTAwMDBGRkZGRkYKLUZGODAwMEZGRkZGRkZGQzAwMEZGMDAwMUZGRjAwMEZGMDAwMDNGRjgwMEZGMDAwMDBGRjgwMEZGMDAwMDA3RkMwMEZGMDAwMAotMDNGRTAwRkYwMDAwMDFGRTAwRkYwMDAwMDBGRTAwRkYwMDAwMDBGRjAwRkYwMDAwMDA3RjAwRkYwMDAwMDA3RjAwRkYwMDAwCi0wMDdGMDBGRjAwMDAwMDdGMDBGRjAwMDAwMEZGMDBGRjAwMDAwMEZFMDBGRjAwMDAwMUZFMDBGRjAwMDAwM0ZDMDBGRjAwMDAKLTA3RkMwMEZGMDAwMDBGRjgwMEZGMDAwMDNGRjAwMEZGMDAwMEZGQzAwMEZGRkZGRkZGODAwMEZGRkZGRkZFMDAwMEZGRkZGRgotRjgwMDAwRkZGRkZGRkYwMDAwRkZGRkZGRkZDMDAwRkYwMDAzRkZGMDAwRkYwMDAwM0ZGODAwRkYwMDAwMDdGQzAwRkYwMDAwCi0wM0ZFMDBGRjAwMDAwMEZGMDBGRjAwMDAwMDdGODBGRjAwMDAwMDNGQzBGRjAwMDAwMDNGQzBGRjAwMDAwMDFGQzBGRjAwMDAKLTAwMUZFMEZGMDAwMDAwMEZFMEZGMDAwMDAwMEZFMEZGMDAwMDAwMEZFMEZGMDAwMDAwMEZFMEZGMDAwMDAwMUZFMEZGMDAwMAotMDAxRkMwRkYwMDAwMDAzRkMwRkYwMDAwMDAzRkMwRkYwMDAwMDA3RjgwRkYwMDAwMDFGRjgwRkYwMDAwMDNGRjAwRkYwMDAwCi0wRkZFMDBGRjAwMDA3RkZDMDBGRkZGRkZGRkY4MDBGRkZGRkZGRkUwMDBGRkZGRkZGRjgwMDBGRkZGRkZGRTAwMDBGRkZGRkYKLUUwMDAwMDJCM0E3OUI5Mzc+STwwMDAwMDNGRjgwMDAwMDAwMUZGRkY4MDAwMDAwRkZGRkZGMDAwMDAxRkZGRkZGQzAwMDA3Ci1GRkZGRkZDMDAwMEZGRkZGRkZDMDAwMUZGRTAwRkY4MDAwN0ZGMDAwMEY4MDAwRkZDMDAwMDM4MDAwRkY4MDAwMDE4MDAxRkYKLTAwMDAwMDAwMDNGRTAwMDAwMDAwMDdGQzAwMDAwMDAwMDdGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGMDAwMDAwMDAwMUZFMAotMDAwMDAwMDAxRkUwMDAwMDAwMDAzRkMwMDAwMDAwMDAzRkMwMDAwMDAwMDAzRkMwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwCi0wMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAKLTAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMAotMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwCi0wMDAwMDAwMDNGQzAwMDAwMDAwMDNGQzAwMDAwMDAwMDNGQzAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDBGRjAKLTAwMDAwMDAwMEZGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGQzAwMDAwMDAwMDNGRTAwMDAwMDAwMDFGRjAwMDAwMDIwMDBGRgotODAwMDAwRTAwMEZGQzAwMDAxRTAwMDdGRjAwMDBGRTAwMDFGRkUwMDdGRTAwMDBGRkZGRkZGRTAwMDA3RkZGRkZGQzAwMDAxCi1GRkZGRkYwMDAwMDBGRkZGRkUwMDAwMDAxRkZGRjAwMDAwMDAwM0ZGODAwMDJCM0U3QkJCMzU+STxGRkZGRkZGRkYwRkZGRgotRkZGRkYwRkZGRkZGRkZGMEZGRkZGRkZGRjBGRkZGRkZGRkYwRkZGRkZGRkZGMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwCi0wMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAKLTAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMAotRkYwMDAwMDAwMEZGMDAwMDAwMDBGRkZGRkZGRkMwRkZGRkZGRkZDMEZGRkZGRkZGQzBGRkZGRkZGRkMwRkZGRkZGRkZDMEZGCi0wMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAKLTAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMAotMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGRkZGRkZGCi1GQ0ZGRkZGRkZGRkNGRkZGRkZGRkZDRkZGRkZGRkZGQ0ZGRkZGRkZGRkNGRkZGRkZGRkZDRkZGRkZGRkZGQzI2M0E3OEI5MzIKLT42OSBEPDAwMDAwM0ZGODAwMDAwMDAzRkZGRjgwMDAwMDBGRkZGRkUwMDAwMDNGRkZGRkZDMDAwMDdGRkZGRkZFMDAwMEZGRgotRkZGRkUwMDAzRkZFMDBGRkUwMDA3RkYwMDAxRkMwMDBGRkMwMDAwN0MwMDBGRjgwMDAwMUMwMDFGRjAwMDAwMDQwMDNGRTAwCi0wMDAwMDAwN0ZDMDAwMDAwMDAwN0Y4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkYwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAKLTAwMDAwMDNGQzAwMDAwMDAwMDNGQzAwMDAwMDAwMDNGQzAwMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMAotMDAwMDAwN0Y4MDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwCi0wMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAzRkZGRjBGRjAwMDAKLTNGRkZGMEZGMDAwMDNGRkZGMDdGODAwMDNGRkZGMDdGODAwMDNGRkZGMDdGODAwMDAwMDdGMDdGODAwMDAwMDdGMDNGQzAwMAotMDAwN0YwM0ZDMDAwMDAwN0YwM0ZDMDAwMDAwN0YwMUZFMDAwMDAwN0YwMUZFMDAwMDAwN0YwMEZGMDAwMDAwN0YwMEZGODAwCi0wMDA3RjAwN0Y4MDAwMDA3RjAwN0ZDMDAwMDA3RjAwM0ZFMDAwMDA3RjAwMUZGMDAwMDA3RjAwMEZGODAwMDA3RjAwMEZGQzAKLTAwMDdGMDAwN0ZGMDAwMDdGMDAwM0ZGRTAwN0ZGMDAwMEZGRkZGRkZGMDAwMDdGRkZGRkZGMDAwMDNGRkZGRkZDMDAwMDBGRgotRkZGRjAwMDAwMDNGRkZGODAwMDAwMDAzRkY4MDAwMkMzRTdCQkIzNz43MSBEPEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCi1GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKLUZGRkZGRkZGRkZGRkZGRkZGRjA4M0E3OUI5MTc+NzMgRDxGRTAwMDAwMDFGRjBGRTAwMDAwMDNGRTBGRTAwMDAwMDdGQzBGRQotMDAwMDAwRkY4MEZFMDAwMDAxRkYwMEZFMDAwMDAzRkUwMEZFMDAwMDA3RkMwMEZFMDAwMDBGRjgwMEZFMDAwMDFGRjAwMEZFCi0wMDAwM0ZFMDAwRkUwMDAwM0ZDMDAwRkUwMDAwN0Y4MDAwRkUwMDAwRkYwMDAwRkUwMDAxRkUwMDAwRkUwMDAzRkMwMDAwRkUKLTAwMDdGODAwMDBGRTAwMEZGODAwMDBGRTAwMUZGMDAwMDBGRTAwM0ZFMDAwMDBGRTAwN0ZDMDAwMDBGRTAwRkY4MDAwMDBGRQotMDFGRjAwMDAwMEZFMDNGRTAwMDAwMEZFMDdGRTAwMDAwMEZFMEZGRjAwMDAwMEZFMEZGRjAwMDAwMEZFMUZGRjgwMDAwMEZFCi0zRkZGQzAwMDAwRkU3RjlGQzAwMDAwRkVGRjFGRTAwMDAwRkZGRTBGRjAwMDAwRkZGRTA3RjAwMDAwRkZGQzA3RjgwMDAwRkYKLUY4MDNGQzAwMDBGRkYwMDFGQzAwMDBGRkUwMDFGRTAwMDBGRkMwMDBGRjAwMDBGRjgwMDA3RjAwMDBGRjAwMDA3RjgwMDBGRQotMDAwMDNGQzAwMEZFMDAwMDFGQzAwMEZFMDAwMDFGRTAwMEZFMDAwMDBGRjAwMEZFMDAwMDA3RjAwMEZFMDAwMDA3RjgwMEZFCi0wMDAwMDNGQzAwRkUwMDAwMDFGQzAwRkUwMDAwMDFGRTAwRkUwMDAwMDBGRjAwRkUwMDAwMDA3RjAwRkUwMDAwMDA3RjgwRkUKLTAwMDAwMDNGQzBGRTAwMDAwMDFGQzBGRTAwMDAwMDFGRTBGRTAwMDAwMDBGRjBGRTAwMDAwMDA3RjBGRTAwMDAwMDA3RjhGRQotMDAwMDAwMDNGQzJFM0E3OEI5M0E+NzUgRDxGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwCi0wMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAKLTAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMAotRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGCi0wMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAKLTAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMAotMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwCi0wMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRkZGRkZGRkMwRkZGRkZGRkZDMEZGRkZGRkZGQzAKLUZGRkZGRkZGQzBGRkZGRkZGRkMwRkZGRkZGRkZDMDIyM0E3OUI5MkQ+STxGRkMwMDAwMDAwMDdGRkZGQzAwMDAwMDAwN0ZGCi1GRkMwMDAwMDAwMDdGRkZGRTAwMDAwMDAwRkZGRkZFMDAwMDAwMDBGRkZGRkYwMDAwMDAwMUZGRkZFRjAwMDAwMDAxRjdGRkUKLUYwMDAwMDAwMUY3RkZFRjgwMDAwMDAzRjdGRkU3ODAwMDAwMDNFN0ZGRTc4MDAwMDAwM0U3RkZFN0MwMDAwMDA3RTdGRkU3QwotMDAwMDAwN0U3RkZFM0UwMDAwMDBGQzdGRkUzRTAwMDAwMEZDN0ZGRTNFMDAwMDAwRkM3RkZFM0YwMDAwMDFGQzdGRkUxRjAwCi0wMDAxRjg3RkZFMUYwMDAwMDFGODdGRkUxRjgwMDAwM0Y4N0ZGRTBGODAwMDAzRjA3RkZFMEZDMDAwMDdGMDdGRkUwRkMwMDAKLTA3RjA3RkZFMDdDMDAwMDdFMDdGRkUwN0UwMDAwRkUwN0ZGRTA3RTAwMDBGRTA3RkZFMDNFMDAwMEZDMDdGRkUwM0YwMDAxRgotQzA3RkZFMDNGMDAwMUZDMDdGRkUwMUYwMDAxRjgwN0ZGRTAxRjgwMDNGODA3RkZFMDFGODAwM0Y4MDdGRkUwMEY4MDAzRjAwCi03RkZFMDBGQzAwN0YwMDdGRkUwMDdDMDA3RTAwN0ZGRTAwN0UwMEZFMDA3RkZFMDA3RTAwRkUwMDdGRkUwMDNFMDBGQzAwN0YKLUZFMDAzRjAxRkMwMDdGRkUwMDNGMDFGQzAwN0ZGRTAwMUYwMUY4MDA3RkZFMDAxRjgzRjgwMDdGRkUwMDFGODNGODAwN0ZGRQotMDAwRjgzRjAwMDdGRkUwMDBGQzdGMDAwN0ZGRTAwMDdDN0UwMDA3RkZFMDAwN0M3RTAwMDdGRkUwMDA3QzdFMDAwN0ZGRTAwCi0wM0VGQzAwMDdGRkUwMDAzRUZDMDAwN0ZGRTAwMDNGRkMwMDA3RkZFMDAwMUZGODAwMDdGRkUwMDAxRkY4MDAwN0ZGRTAwMDAKLUZGMDAwMDdGRkUwMDAwRkYwMDAwN0ZGRTAwMDBGRjAwMDA3RkZFMDAwMDAwMDAwMDdGRkUwMDAwMDAwMDAwN0YzODNBNzhCOQotNDk+STxGRkUwMDAwMDFGQzBGRkUwMDAwMDFGQzBGRkYwMDAwMDFGQzBGRkYwMDAwMDFGQzBGRkY4MDAwMDFGQzBGRkY4MDAKLTAwMUZDMEZFRkMwMDAwMUZDMEZFRkMwMDAwMUZDMEZFN0UwMDAwMUZDMEZFN0UwMDAwMUZDMEZFN0YwMDAwMUZDMEZFM0YwMAotMDAxRkMwRkUzRjgwMDAxRkMwRkUxRjgwMDAxRkMwRkUxRjgwMDAxRkMwRkUwRkMwMDAxRkMwRkUwRkMwMDAxRkMwRkUwRkUwCi0wMDFGQzBGRTA3RTAwMDFGQzBGRTA3RjAwMDFGQzBGRTAzRjAwMDFGQzBGRTAzRjgwMDFGQzBGRTAxRjgwMDFGQzBGRTAxRkMKLTAwMUZDMEZFMDBGQzAwMUZDMEZFMDBGRTAwMUZDMEZFMDBGRTAwMUZDMEZFMDA3RjAwMUZDMEZFMDA3RjAwMUZDMEZFMDAzRgotODAxRkMwRkUwMDNGODAxRkMwRkUwMDFGQzAxRkMwRkUwMDFGQzAxRkMwRkUwMDBGQzAxRkMwRkUwMDBGRTAxRkMwRkUwMDA3Ci1FMDFGQzBGRTAwMDdGMDFGQzBGRTAwMDNGMDFGQzBGRTAwMDNGODFGQzBGRTAwMDFGODFGQzBGRTAwMDFGQzFGQzBGRTAwMDAKLUZDMUZDMEZFMDAwMEZDMUZDMEZFMDAwMDdFMUZDMEZFMDAwMDdFMUZDMEZFMDAwMDdGMUZDMEZFMDAwMDNGMUZDMEZFMDAwMAotM0Y5RkMwRkUwMDAwMUY5RkMwRkUwMDAwMUY5RkMwRkUwMDAwMEZERkMwRkUwMDAwMEZERkMwRkUwMDAwMDdGRkMwRkUwMDAwCi0wN0ZGQzBGRTAwMDAwM0ZGQzBGRTAwMDAwM0ZGQzBGRTAwMDAwMUZGQzBGRTAwMDAwMUZGQzAyQTNBNzhCOTNCPkk8MDAwMAotMDdGODAwMDAwMDAwMDA3RkZGODAwMDAwMDAwMUZGRkZFMDAwMDAwMDAzRkZGRkYwMDAwMDAwMEZGRkZGRkMwMDAwMDAxRkZDCi0wRkZFMDAwMDAwM0ZFMDAxRkYwMDAwMDA3RjgwMDA3RjgwMDAwMEZGMDAwMDNGQzAwMDAxRkUwMDAwMUZFMDAwMDNGQzAwMDAKLTBGRjAwMDAzRjgwMDAwMDdGMDAwMDdGODAwMDAwN0Y4MDAwRkYwMDAwMDAzRkMwMDBGRTAwMDAwMDFGQzAwMUZFMDAwMDAwMQotRkUwMDFGQzAwMDAwMDBGRTAwMUZDMDAwMDAwMEZFMDAzRkMwMDAwMDAwRkYwMDNGODAwMDAwMDA3RjAwN0Y4MDAwMDAwMDdGCi04MDdGODAwMDAwMDA3RjgwN0Y4MDAwMDAwMDdGODA3RjAwMDAwMDAwM0Y4MDdGMDAwMDAwMDAzRjgwRkYwMDAwMDAwMDNGQzAKLUZGMDAwMDAwMDAzRkMwRkYwMDAwMDAwMDNGQzBGRjAwMDAwMDAwM0ZDMEZGMDAwMDAwMDAzRkMwRkYwMDAwMDAwMDNGQzBGRgotMDAwMDAwMDAzRkMwRkYwMDAwMDAwMDNGQzBGRjAwMDAwMDAwM0ZDMEZGMDAwMDAwMDAzRkMwRkYwMDAwMDAwMDNGQzBGRjAwCi0wMDAwMDAzRkMwN0Y4MDAwMDAwMDdGODA3RjgwMDAwMDAwN0Y4MDdGODAwMDAwMDA3RjgwN0Y4MDAwMDAwMDdGODA3RjgwMDAKLTAwMDA3RjgwM0ZDMDAwMDAwMEZGMDAzRkMwMDAwMDAwRkYwMDNGRTAwMDAwMDFGRjAwMUZFMDAwMDAwMUZFMDAxRkUwMDAwMAotMDFGRTAwMEZGMDAwMDAwM0ZDMDAwRkYwMDAwMDAzRkMwMDA3RjgwMDAwMDdGODAwMDNGQzAwMDAwRkYwMDAwM0ZFMDAwMDFGCi1GMDAwMDFGRTAwMDAxRkUwMDAwMEZGMDAwMDNGQzAwMDAwN0ZDMDAwRkY4MDAwMDAzRkUwMDFGRjAwMDAwMDFGRkMwRkZFMDAKLTAwMDAwRkZGRkZGQzAwMDAwMDA3RkZGRkY4MDAwMDAwMDFGRkZGRTAwMDAwMDAwMDdGRkY4MDAwMDAwMDAwMDdGODAwMDAwMAotMzIzRTdCQkIzRD5JPEZGRkZGRkMwMDAwMEZGRkZGRkY4MDAwMEZGRkZGRkZGMDAwMEZGRkZGRkZGODAwMEZGRkZGRkZGRTAKLTAwRkYwMDAwRkZGMDAwRkYwMDAwMUZGODAwRkYwMDAwMDdGQzAwRkYwMDAwMDNGQzAwRkYwMDAwMDFGRTAwRkYwMDAwMDBGRQotMDBGRjAwMDAwMEZGMDBGRjAwMDAwMDdGMDBGRjAwMDAwMDdGODBGRjAwMDAwMDdGODBGRjAwMDAwMDNGODBGRjAwMDAwMDNGCi04MEZGMDAwMDAwM0Y4MEZGMDAwMDAwM0Y4MEZGMDAwMDAwN0Y4MEZGMDAwMDAwN0Y4MEZGMDAwMDAwN0YwMEZGMDAwMDAwRkYKLTAwRkYwMDAwMDBGRTAwRkYwMDAwMDFGRTAwRkYwMDAwMDNGQzAwRkYwMDAwMDdGQzAwRkYwMDAwMUZGODAwRkYwMDAwRkZGMAotMDBGRkZGRkZGRkUwMDBGRkZGRkZGRjgwMDBGRkZGRkZGRjAwMDBGRkZGRkZGODAwMDBGRkZGRkZDMDAwMDBGRjAwMDAwMDAwCi0wMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAKLTAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMAotMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwCi0wMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDI5M0E3OUI5MzUKLT5JPEZGRkZGRjgwMDAwMEZGRkZGRkY4MDAwMEZGRkZGRkZFMDAwMEZGRkZGRkZGODAwMEZGRkZGRkZGQzAwMEZGMDAwMEZGCi1FMDAwRkYwMDAwMUZGMDAwRkYwMDAwMEZGODAwRkYwMDAwMDNGQzAwRkYwMDAwMDFGQzAwRkYwMDAwMDFGRTAwRkYwMDAwMDAKLUZFMDBGRjAwMDAwMEZGMDBGRjAwMDAwMEZGMDBGRjAwMDAwMDdGMDBGRjAwMDAwMDdGMDBGRjAwMDAwMDdGMDBGRjAwMDAwMAotRkYwMEZGMDAwMDAwRkYwMEZGMDAwMDAwRkUwMEZGMDAwMDAxRkUwMEZGMDAwMDAxRkMwMEZGMDAwMDAzRkMwMEZGMDAwMDBGCi1GODAwRkYwMDAwMUZGMDAwRkYwMDAwRkZFMDAwRkZGRkZGRkZDMDAwRkZGRkZGRkY4MDAwRkZGRkZGRkUwMDAwRkZGRkZGRjgKLTAwMDBGRkZGRkZFMDAwMDBGRjAwMEZGMDAwMDBGRjAwMDdGMDAwMDBGRjAwMDdGODAwMDBGRjAwMDNGODAwMDBGRjAwMDNGQwotMDAwMEZGMDAwMUZDMDAwMEZGMDAwMUZFMDAwMEZGMDAwMEZGMDAwMEZGMDAwMDdGMDAwMEZGMDAwMDdGODAwMEZGMDAwMDNGCi04MDAwRkYwMDAwM0ZDMDAwRkYwMDAwMUZFMDAwRkYwMDAwMUZFMDAwRkYwMDAwMEZGMDAwRkYwMDAwMEZGMDAwRkYwMDAwMDcKLUY4MDBGRjAwMDAwM0Y4MDBGRjAwMDAwM0ZDMDBGRjAwMDAwMUZFMDBGRjAwMDAwMUZFMDBGRjAwMDAwMEZGMDBGRjAwMDAwMAotRkYwMEZGMDAwMDAwN0Y4MEZGMDAwMDAwM0ZDMEZGMDAwMDAwM0ZDMEZGMDAwMDAwMUZFMDJCM0E3OEI5MzY+ODIKLUQ8MDAwM0ZGMDAwMDAwMUZGRkYwMDAwMDdGRkZGRTAwMDFGRkZGRkY4MDAzRkZGRkZGQzAwN0ZGRkZGRkMwMEZGRTAwRkZDMAotMUZGMDAwMUY4MDNGRTAwMDA3ODAzRjgwMDAwMzgwN0Y4MDAwMDA4MDdGMDAwMDAwMDA3RjAwMDAwMDAwRkUwMDAwMDAwMEZFCi0wMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRjAwMDAwMDAwN0YwMDAwMDAwMDdGODAKLTAwMDAwMDdGQzAwMDAwMDAzRkYwMDAwMDAwM0ZGQzAwMDAwMDFGRkZDMDAwMDAwRkZGRkMwMDAwMDdGRkZGODAwMDAzRkZGRgotRTAwMDAxRkZGRkY4MDAwMEZGRkZGQzAwMDAzRkZGRkUwMDAwMDdGRkZGMDAwMDAwN0ZGRjgwMDAwMDA3RkZDMDAwMDAwMEZGCi1FMDAwMDAwMDdGRTAwMDAwMDAxRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDAzRjgKLTAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDdGMDQwMDAwMDA3RjA2MAotMDAwMDA3RjA3ODAwMDAwRkUwN0MwMDAwMUZFMEZGMDAwMDNGQzBGRkMwMDBGRjgwRkZGQzAzRkY4MDdGRkZGRkZGMDAxRkZGCi1GRkZFMDAwRkZGRkZGODAwMDFGRkZGRjAwMDAwN0ZGRkMwMDAwMDA3RkUwMDAwMjUzRTdDQkIyRT5JPEZFMDAwMDAwN0ZDMAotMDAwMDBGRTA3RjAwMDAwMDdGQzAwMDAwMEZDMDdGMDAwMDAwRkZDMDAwMDAxRkMwN0YwMDAwMDBGRkUwMDAwMDFGQzA3RjAwCi0wMDAwRkZFMDAwMDAxRkMwM0Y4MDAwMDBGRkUwMDAwMDFGODAzRjgwMDAwMUZCRTAwMDAwM0Y4MDNGODAwMDAxRkJGMDAwMDAKLTNGODAzRjgwMDAwMUYzRjAwMDAwM0Y4MDFGQzAwMDAxRjNGMDAwMDA3RjAwMUZDMDAwMDNGMUY4MDAwMDdGMDAxRkMwMDAwMwotRjFGODAwMDA3RjAwMEZFMDAwMDNGMUY4MDAwMDdFMDAwRkUwMDAwN0UxRjgwMDAwRkUwMDBGRTAwMDA3RTFGQzAwMDBGRTAwCi0wRkUwMDAwN0UwRkMwMDAwRkUwMDA3RjAwMDA3RTBGQzAwMDBGQzAwMDdGMDAwMEZDMEZDMDAwMUZDMDAwN0YwMDAwRkMwRkUKLTAwMDFGQzAwMDdGMDAwMEZDMDdFMDAwMUZDMDAwM0Y4MDAwRkMwN0UwMDAxRjgwMDAzRjgwMDFGODA3RTAwMDNGODAwMDNGOAotMDAxRjgwN0YwMDAzRjgwMDAxRkMwMDFGODAzRjAwMDNGMDAwMDFGQzAwMUY4MDNGMDAwN0YwMDAwMUZDMDAzRjAwM0Y4MDA3Ci1GMDAwMDFGQzAwM0YwMDFGODAwN0YwMDAwMEZFMDAzRjAwMUY4MDA3RTAwMDAwRkUwMDdFMDAxRjgwMEZFMDAwMDBGRTAwN0UKLTAwMUZDMDBGRTAwMDAwN0UwMDdFMDAwRkMwMEZDMDAwMDA3RjAwN0UwMDBGQzAwRkMwMDAwMDdGMDBGQzAwMEZDMDFGQzAwMAotMDA3RjAwRkMwMDBGRTAxRkMwMDAwMDNGMDBGQzAwMDdFMDFGODAwMDAwM0Y4MEZDMDAwN0UwMUY4MDAwMDAzRjgwRjgwMDA3Ci1FMDNGODAwMDAwM0Y4MUY4MDAwN0YwM0Y4MDAwMDAxRjgxRjgwMDAzRjAzRjAwMDAwMDFGODFGODAwMDNGMDNGMDAwMDAwMUYKLUMxRjAwMDAzRjA3RjAwMDAwMDBGQzNGMDAwMDFGODdFMDAwMDAwMEZDM0YwMDAwMUY4N0UwMDAwMDAwRkMzRTAwMDAxRjg3RQotMDAwMDAwMEZFM0UwMDAwMUY4N0UwMDAwMDAwN0UzRTAwMDAwRjhGQzAwMDAwMDA3RTdFMDAwMDBGQ0ZDMDAwMDAwMDdFN0MwCi0wMDAwRkNGQzAwMDAwMDA3RTdDMDAwMDBGQ0ZDMDAwMDAwMDNFN0MwMDAwMDdDRjgwMDAwMDAwM0Y3QzAwMDAwN0RGODAwMDAKLTAwMDNGNzgwMDAwMDdERjgwMDAwMDAwMUZGODAwMDAwM0ZGMDAwMDAwMDAxRkY4MDAwMDAzRkYwMDAwMDAwMDFGRjAwMDAwMAotM0ZGMDAwMDAwMDAxRkYwMDAwMDAzRkYwMDAwMDAwMDBGRjAwMDAwMDFGRTAwMDAwMDAwMEZGMDAwMDAwMUZFMDAwMDA0QjNBCi03RkI5NEU+ODcgRDwzRkUwMDAwMDAwRkYwMDNGRjAwMDAwMDFGRTAwMUZGMDAwMDAwM0ZFMDAwRkY4MDAwMDAzRkMwMDA3RkMKLTAwMDAwN0Y4MDAwN0ZDMDAwMDBGRjgwMDAzRkUwMDAwMEZGMDAwMDFGRjAwMDAxRkUwMDAwMEZGMDAwMDNGRTAwMDAwRkY4MAotMDAzRkMwMDAwMDdGQzAwMDdGODAwMDAwM0ZFMDAwRkYwMDAwMDAxRkUwMDFGRjAwMDAwMDFGRjAwMUZFMDAwMDAwMEZGODAzCi1GQzAwMDAwMDA3RjgwN0ZDMDAwMDAwMDdGQzA3RjgwMDAwMDAwM0ZFMEZGMDAwMDAwMDAxRkUxRkYwMDAwMDAwMDBGRjFGRTAKLTAwMDAwMDAwRkZCRkMwMDAwMDAwMDA3RkZGODAwMDAwMDAwMDNGRkY4MDAwMDAwMDAwMUZGRjAwMDAwMDAwMDAxRkZFMDAwMAotMDAwMDAwMEZGRTAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDAzRjgwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwRkZFMDAwMDAwCi0wMDAwMUZGRjAwMDAwMDAwMDAxRkZGMDAwMDAwMDAwMDNGRkY4MDAwMDAwMDAwN0ZCRkMwMDAwMDAwMDA3RjNGQzAwMDAwMDAKLTAwRkYxRkUwMDAwMDAwMDFGRTBGRjAwMDAwMDAwMUZDMDdGODAwMDAwMDAzRkMwN0Y4MDAwMDAwMDdGODAzRkMwMDAwMDAwRgotRjAwMUZFMDAwMDAwMEZGMDAxRkYwMDAwMDAxRkUwMDBGRjAwMDAwMDNGQzAwMDdGODAwMDAwM0ZDMDAwN0ZDMDAwMDA3RjgwCi0wMDNGRTAwMDAwRkYwMDAwMUZFMDAwMDFGRjAwMDAxRkYwMDAwMUZFMDAwMDBGRjgwMDAzRkMwMDAwMDdGQzAwMDdGQzAwMDAKLTA3RkMwMDA3RjgwMDAwMDNGRTAwMEZGMDAwMDAwMUZGMDAxRkYwMDAwMDAwRkY4MDFGRTAwMDAwMDBGRjgwM0ZDMDAwMDAwMAotN0ZDMDdGQzAwMDAwMDAzRkUwRkY4MDAwMDAwMDNGRjAzNDNBN0ZCOTM3Pkk8MDAxRkYwMDAwMEZGRkMwMDAzRkZGRjAwMEYKLUZGRkY4MDFGRkZGRkMwMUZFMDFGRTAxRjAwMEZGMDFDMDAwN0YwMTgwMDAzRjgxMDAwMDNGODAwMDAwM0Y4MDAwMDAxRkMwMAotMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAzRkZDMDAwRkZGRkMwMEZGRkZGQzAzCi1GRkZGRkMwRkZGRkZGQzFGRkUwMUZDM0ZFMDAxRkM3RjgwMDFGQzdGMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUKLTAwMDFGQ0ZFMDAwM0ZDRkYwMDAzRkM3RjgwMEZGQzdGRTAzRkZDM0ZGRkZGRkMxRkZGRkZGQzBGRkZGOUZDMDdGRkUxRkMwMQotRkUwMDAwMUUyODdEQTYyOD45NyBEPEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwCi1GRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUKLTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMAotMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAxRkMwMDAwRkUwRkZGMDAwMEZFM0ZGRkMwMDBGRUZGRkZFMDAwRkZGRkZGCi1GMDAwRkZGMDNGRjgwMEZGQzAwN0Y4MDBGRjgwMDNGQzAwRkYwMDAxRkMwMEZFMDAwMEZFMDBGRTAwMDBGRTAwRkUwMDAwN0YKLTAwRkUwMDAwN0YwMEZFMDAwMDdGMDBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MAotRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDA3RjAwRkUwMDAwN0YwMEZFCi0wMDAwN0YwMEZFMDAwMEZGMDBGRTAwMDBGRTAwRkUwMDAxRkUwMEZGMDAwMUZDMDBGRjgwMDNGQzAwRkZDMDBGRjgwMEZGRjAKLTNGRjAwMEZGRkZGRkUwMDBGRUZGRkZDMDAwRkU3RkZGODAwMEZFMUZGRTAwMDAwMDA3RjgwMDAwMjEzRDdBQkIyQj5JPDAwCi0wM0ZFMDAwMDFGRkZDMDAwN0ZGRkUwMDBGRkZGRjgwMUZGRkZGQzAzRkMwM0ZDMDdGODAwN0MwRkUwMDAzODFGQzAwMDA4MUYKLUMwMDAwMDNGODAwMDAwM0Y4MDAwMDA3RjAwMDAwMDdGMDAwMDAwN0YwMDAwMDA3RTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRQotMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwN0YwMDAwMDA3RjAwMDAwMDdGCi0wMDAwMDAzRjgwMDAwMDNGODAwMDAwM0ZDMDAwMDIxRkMwMDAwNjBGRTAwMDFFMDdGMDAwN0UwN0ZDMDNGRTAzRkZGRkZFMDAKLUZGRkZGQzAwN0ZGRkYwMDAxRkZGQzAwMDA3RkMwMDFGMjg3REE2MjU+STwwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGCi04MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAKLTAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMAotMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwRkUwM0Y4MDAwM0ZGQzNGODAwMEZGCi1GRjNGODAwMUZGRkZCRjgwMDNGRkZGRkY4MDA3RkUwN0ZGODAwRkY4MDFGRjgwMUZFMDAwRkY4MDFGQzAwMDdGODAzRkMwMDAKLTNGODAzRjgwMDAzRjgwN0Y4MDAwM0Y4MDdGMDAwMDNGODA3RjAwMDAzRjgwN0YwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRgotODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwCi1GRTAwMDAzRjgwN0YwMDAwM0Y4MDdGMDAwMDNGODA3RjAwMDAzRjgwM0Y4MDAwM0Y4MDNGODAwMDdGODAxRkMwMDA3RjgwMUYKLUUwMDBGRjgwMEZGMDAzRkY4MDA3RkUwN0ZGODAwM0ZGRkZCRjgwMDFGRkZGM0Y4MDAwRkZGRTNGODAwMDdGRjgzRjgwMDAwRgotRTAwMDAwMjEzRDdEQkIyQj5JPDAwMDdGODAwMDAxRkZFMDAwMDdGRkY4MDAxRkZGRkMwMDNGRkZGRTAwN0ZDMEZGMDBGRjAKLTAzRjgwRkUwMDFGODFGQzAwMEZDMUY4MDAwN0MzRjgwMDA3RTNGMDAwMDNFN0YwMDAwM0U3RTAwMDAzRTdFMDAwMDFGRkUwMAotMDAxRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQzAwMDAwMEZDMDAwMDAwRkUwMDAwMDBGRTAwCi0wMDAwN0UwMDAwMDA3RTAwMDAwMDdGMDAwMDAwM0YwMDAwMDAzRjgwMDAwMDFGQzAwMDAwMUZFMDAwMDIwRkYwMDAwRTA3RjgKLTAwM0UwM0ZFMDFGRTAxRkZGRkZFMDBGRkZGRkMwMDdGRkZGMDAwMUZGRkMwMDAwM0ZFMDAyMDI4N0VBNjI1Pkk8MDAwMEZGCi0wMDAwMDNGRkMwMDAwRkZGQzAwMDFGRkZDMDAwM0ZGRkMwMDA3RjgxQzAwMEZFMDA0MDAwRkMwMDAwMDFGQzAwMDAwMUY4MDAKLTAwMDFGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMAotMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwRkZGRkZDMDBGRkZGRkMwMEZGRkZGQzAwRkZGRkZDCi0wMEZGRkZGQzAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAKLTAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMAotMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwCi0wMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0Y4MDAwMDFBM0Q3RkJDMTk+STwwMDA3RTAwMQotRjgwMDNGRkMxRkY4MDA3RkZFRkZGQzAxRkZGRkZGRkMwM0ZGRkZGRkZDMDNGODFGRjgwMDA3RjAwRkUwMDAwRkUwMDdGMDAwCi0wRkMwMDNGMDAwMEZDMDAzRjAwMDFGODAwMUY4MDAxRjgwMDFGODAwMUY4MDAxRjgwMDFGODAwMUY4MDAxRjgwMDFGODAwMUYKLTgwMDFGODAwMUY4MDAxRjgwMDBGQzAwM0YwMDAwRkMwMDNGMDAwMEZFMDA3RjAwMDA3RjAwRkUwMDAwM0Y4MUZDMDAwMDdGRgotRkZDMDAwMDdGRkZGODAwMDBGRkZGRTAwMDAwRjNGRkMwMDAwMUYwN0UwMDAwMDFGMDAwMDAwMDAxRjAwMDAwMDAwMUYwMDAwCi0wMDAwMUY4MDAwMDAwMDFGQzAwMDAwMDAwRkZGRkZDMDAwMEZGRkZGRjgwMDBGRkZGRkZFMDAwN0ZGRkZGRjgwMDdGRkZGRkYKLUMwMEZGRkZGRkZFMDFGRkZGRkZGRTAzRjgwMDA3RkYwN0YwMDAwMEZGMDdFMDAwMDAzRjhGQzAwMDAwMUY4RkMwMDAwMDFGOAotRkMwMDAwMDFGOEZDMDAwMDAxRjhGRTAwMDAwM0Y4N0UwMDAwMDNGMDdGODAwMDBGRjAzRkMwMDAxRkUwMUZGQzAxRkZDMDBGCi1GRkZGRkY4MDA3RkZGRkZGMDAwMUZGRkZGQzAwMDA3RkZGRjAwMDAwMDdGRjAwMDAyNjM4N0VBNTJBPkk8RkUwMDAwMDBGRQotMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFCi0wMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUKLTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAxRkMwMEZFMEZGRjgwRkUxRkZGQzBGRTdGRkZFMEZFRkZGRkYwRkZGODFGRjhGRgotRTAwN0Y4RkZDMDAzRjhGRjgwMDNGQ0ZGODAwMUZDRkYwMDAxRkNGRjAwMDFGQ0ZGMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFCi0wMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUKLTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRQotMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkMxRTNDN0FCQjJCPkk8RkZGRkZGRkZGRkZGRkZGRjAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwN0Y3RjdGN0Y3RjdGN0Y3RjdGN0Y3RjdGN0Y3RjdGN0Y3RjdGN0Y3RjdGN0Y3RjdGN0Y3RgotN0Y3RjdGN0Y3RjdGN0Y3RjdGN0Y3RjA4Mzk3QkI4MTQ+STwwMDBGRjAwMDBGRjAwMDBGRjAwMDBGRjAwMDBGRjAwMDBGRjAKLTAwMEZGMDAwMEZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwCi0wMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAwMDA3RjAKLTAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMDAwMDdGMAotMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwMDAwN0YwCi00MDBGRTA2MDFGRTBGQzdGQzBGRkZGQzBGRkZGODA3RkZGMDAxRkZFMDAwM0Y4MDAxNDRBODVCODE2Pkk8RkUwMDAwMDAwMAotRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFCi0wMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAKLTAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMAotMDAwMEZFMDAwM0ZFMDBGRTAwMDdGQzAwRkUwMDBGRjgwMEZFMDAxRkYwMDBGRTAwM0ZFMDAwRkUwMDdGQzAwMEZFMDBGRjgwCi0wMEZFMDFGRjAwMDBGRTAzRkUwMDAwRkUwM0ZDMDAwMEZFMDdGODAwMDBGRTBGRjAwMDAwRkUxRkUwMDAwMEZFM0ZDMDAwMDAKLUZFN0Y4MDAwMDBGRUZGQzAwMDAwRkZGRkUwMDAwMEZGRkZFMDAwMDBGRkZGRjAwMDAwRkZGN0Y4MDAwMEZGRTNGODAwMDBGRgotQzFGQzAwMDBGRjgwRkUwMDAwRkYwMEZGMDAwMEZFMDA3RjAwMDBGRTAwM0Y4MDAwRkUwMDNGQzAwMEZFMDAxRkMwMDBGRTAwCi0wRkUwMDBGRTAwMEZGMDAwRkUwMDA3RjAwMEZFMDAwM0Y4MDBGRTAwMDFGQzAwRkUwMDAxRkUwMEZFMDAwMEZFMDBGRTAwMDAKLTdGMDBGRTAwMDA3RjgwMjEzQzdBQkIyOT5JPEZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFCi1GRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkUKLUZFRkUwNzNDN0FCQjE0Pkk8MDAwMUZDMDAwM0Y4MDBGRTBGRkY4MDFGRkYwMEZFMUZGRkMwM0ZGRjgwRkU3RkZGRTBGRkZGCi1DMEZFRkZGRkYxRkZGRkUwRkZGODFGRkJGMDNGRjBGRkUwMDdGQkMwMEZGMEZGQzAwM0ZGODAwN0YwRkY4MDAzRkYwMDA3RjgKLUZGODAwMUZGMDAwM0Y4RkYwMDAxRkUwMDAzRjhGRjAwMDFGRTAwMDNGOEZGMDAwMUZFMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRQotMDAwMUZDMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDFGQzAwMDNGOEZFMDAwMUZDMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwCi0wMUZDMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDFGQzAwMDNGOEZFMDAwMUZDMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDEKLUZDMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDFGQzAwMDNGOEZFMDAwMUZDMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDFGQwotMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDFGQzAwMDNGOEZFMDAwMUZDMDAwM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDFGQzAwCi0wM0Y4RkUwMDAxRkMwMDAzRjhGRTAwMDFGQzAwMDNGOEZFMDAwMUZDMDAwM0Y4MzUyNjdBQTU0Mj5JPDAwMDFGQzAwRkUwRgotRkY4MEZFMUZGRkMwRkU3RkZGRTBGRUZGRkZGMEZGRjgxRkY4RkZFMDA3RjhGRkMwMDNGOEZGODAwM0ZDRkY4MDAxRkNGRjAwCi0wMUZDRkYwMDAxRkNGRjAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAKLTAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMAotMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwCi0wMUZDMUUyNjdBQTUyQj5JPDAwMDNGRTAwMDAwMDBGRkY4MDAwMDAzRkZGRTAwMDAwRkZGRkY4MDAwMUZGRkZGQzAwMDNGRQotMDNGRTAwMDdGODAwRkYwMDBGRjAwMDdGODAwRkUwMDAzRjgwMUZDMDAwMUZDMDNGODAwMDBGRTAzRjgwMDAwRkUwM0YwMDAwCi0wN0UwN0YwMDAwMDdGMDdGMDAwMDA3RjA3RTAwMDAwM0YwRkUwMDAwMDNGOEZFMDAwMDAzRjhGRTAwMDAwM0Y4RkUwMDAwMDMKLUY4RkUwMDAwMDNGOEZFMDAwMDAzRjhGRTAwMDAwM0Y4RkUwMDAwMDNGOEZFMDAwMDAzRjg3RjAwMDAwN0YwN0YwMDAwMDdGMAotN0YwMDAwMDdGMDNGODAwMDBGRTAzRjgwMDAwRkUwMUZDMDAwMUZDMDFGRTAwMDNGQzAwRkYwMDA3RjgwMDdGODAwRkYwMDAzCi1GRTAzRkUwMDAxRkZGRkZDMDAwMEZGRkZGODAwMDA3RkZGRjAwMDAwMUZGRkMwMDAwMDAzRkUwMDAwMjUyODdFQTYyQT5JPAotMDAwMUZDMDAwMEZFMEZGRjAwMDBGRTNGRkZDMDAwRkVGRkZGRTAwMEZGRkZGRkYwMDBGRkYwM0ZGODAwRkZDMDBGRjgwMEZGCi04MDAzRkMwMEZGMDAwM0ZDMDBGRTAwMDFGRTAwRkUwMDAwRkUwMEZFMDAwMEZGMDBGRTAwMDA3RjAwRkUwMDAwN0YwMEZFMDAKLTAwN0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMAotM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwRkUwMDAwN0YwMEZFMDAwMDdGMDBGRTAwMDA3RjAwRkUwMDAwRkYwMEZFMDAwMEZFCi0wMEZFMDAwMUZFMDBGRjAwMDNGQzAwRkY4MDA3RkMwMEZGQzAwRkY4MDBGRkYwM0ZGMDAwRkZGRkZGRTAwMEZFRkZGRkMwMDAKLUZFN0ZGRjgwMDBGRTFGRkUwMDAwRkUwN0Y4MDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRQotMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwCi0wMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDAyMTM2N0FBNTJCPkk8MDAwN0YwM0Y4MDAwM0ZGQzNGODAwMAotRkZGRTNGODAwMUZGRkZCRjgwMDNGRkZGRkY4MDA3RkUwN0ZGODAwRkY4MDFGRjgwMUZGMDAwRkY4MDFGRTAwMEZGODAzRkMwCi0wMDdGODAzRjgwMDA3RjgwN0Y4MDAwM0Y4MDdGMDAwMDNGODA3RjAwMDAzRjgwN0YwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAKLTNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRgotODBGRjAwMDAzRjgwN0YwMDAwM0Y4MDdGMDAwMDNGODA3RjgwMDAzRjgwM0Y4MDAwM0Y4MDNGQzAwMDdGODAxRkUwMDA3RjgwCi0xRkUwMDBGRjgwMEZGODAxRkY4MDA3RkUwN0ZGODAwN0ZGRkZGRjgwMDNGRkZGM0Y4MDAwRkZGRTNGODAwMDdGRjgzRjgwMDAKLTFGRTAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMAotMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwCi0zRjgwMDAwMDAwM0Y4MDIxMzY3REE1MkI+STwwMDAwRjBGQzA3RjBGQzBGRjBGQzNGRjBGQzdGRjBGQ0ZGRjBGREZGMDBGRAotRkMwMEZGRjAwMEZGRTAwMEZGQzAwMEZGQzAwMEZGODAwMEZGMDAwMEZGMDAwMEZGMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFCi0wMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUKLTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDAxNDI2N0FBNTFDPkk8MDA3RkUwMDAwMUZGRkMwMDA3Ci1GRkZGODAwRkZGRkZDMDFGRkZGRkMwM0ZDMDNGQzAzRjAwMDc4MDNGMDAwMTgwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UKLTAwMDAwMDdGMDAwMDAwN0YwMDAwMDAzRjgwMDAwMDNGRjAwMDAwM0ZGRjgwMDAxRkZGRjAwMDBGRkZGQzAwMDdGRkZFMDAwMwotRkZGRjAwMDBGRkZGODAwMDFGRkY4MDAwMDBGRkMwMDAwMDNGQzAwMDAwMEZFMDAwMDAwRkUwMDAwMDA3RTAwMDAwMDdFMDAwCi0wMDA3RTA0MDAwMDdFMDYwMDAwN0UwNzgwMDBGQzBGRTAwMUZDMEZGQzA3RjgwRkZGRkZGODA3RkZGRkYwMDFGRkZGRTAwMDMKLUZGRjgwMDAwN0ZDMDAwMUIyODdFQTYyMD5JPDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDCi0wMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDBGRkZGRkYwMEZGRkZGRjAwRkZGRkZGMDBGRkZGRkYwMEZGRkYKLUZGMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQwotMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDCi0wMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZFMDA4MDAxRkUKLTAxODAwMEZGMDdDMDAwRkZGRkMwMDBGRkZGQzAwMDdGRkYwMDAwM0ZGQzAwMDAxRkUwMDAxQTMwN0ZBRTFFPkk8RkUwMDAxCi1GQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDEKLUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMQotRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxRkNGRTAwMDFGQ0ZFMDAwMUZDRkUwMDAxCi1GQ0ZFMDAwM0ZDRkUwMDAzRkNGRTAwMDdGQ0ZGMDAxRkZDN0Y4MDdGRkM3RkZGRkZGQzNGRkZGOUZDM0ZGRkYxRkMwRkZGQzEKLUZDMDNGQzAwMDAxRTI2N0FBNDJCPkk8RkYwMDAwMEZFMDdGMDAwMDFGQzA3RjAwMDAxRkMwN0Y4MDAwMUZDMDNGODAwMDNGCi04MDNGODAwMDNGODAzRkMwMDAzRjgwMUZDMDAwN0YwMDFGQzAwMDdGMDAwRkUwMDA3RTAwMEZFMDAwRkUwMDBGRTAwMEZFMDAKLTA3RjAwMUZDMDAwN0YwMDFGQzAwMDdGMDAxRkMwMDAzRjgwM0Y4MDAwM0Y4MDNGODAwMDNGODAzRjgwMDAxRkMwM0YwMDAwMQotRkMwN0YwMDAwMEZDMDdFMDAwMDBGRTA3RTAwMDAwRkUwRkUwMDAwMDdFMEZDMDAwMDA3RjBGQzAwMDAwN0YxRkMwMDAwMDNGCi0xRjgwMDAwMDNGMUY4MDAwMDAzRjlGODAwMDAwMUZCRjAwMDAwMDFGQkYwMDAwMDAxRkJGMDAwMDAwMEZCRTAwMDAwMDBGRkUKLTAwMDAwMDA3RkMwMDAwMDAwN0ZDMDAwMDAwMDdGQzAwMDAyMzI1N0ZBNDI2Pkk8RkUwMDAxRkUwMDAxRkM3RjAwMDFGRTAwCi0wMUY4N0YwMDAzRkUwMDAzRjg3RjAwMDNGRTAwMDNGODdGODAwM0RGMDAwM0Y4M0Y4MDAzREYwMDA3RjAzRjgwMDdERjAwMDcKLUYwM0Y4MDA3OUY4MDA3RjAxRkMwMDc5RjgwMDdFMDFGQzAwRjlGODAwRkUwMUZDMDBGOEY4MDBGRTAwRkUwMEY4RkMwMEZDMAotMEZFMDBGMEZDMDFGQzAwRkUwMUYwRkMwMUZDMDBGRTAxRjA3RTAxRkMwMDdGMDFGMDdFMDFGODAwN0YwMUUwN0UwM0Y4MDA3Ci1GMDNFMDdFMDNGODAwM0YwM0UwM0YwM0YwMDAzRjgzRTAzRjAzRjAwMDNGODNDMDNGMDdGMDAwMUY4N0MwM0YwN0UwMDAxRjgKLTdDMDFGODdFMDAwMUZDN0MwMUY4N0UwMDAxRkM3ODAxRjhGRTAwMDBGQ0Y4MDBGOEZDMDAwMEZDRjgwMEY4RkMwMDAwRkNGMAotMDBGQ0ZDMDAwMDdDRjAwMEZDRjgwMDAwN0NGMDAwN0RGODAwMDA3RUYwMDA3REY4MDAwMDdFRTAwMDdERjgwMDAwM0VFMDAwCi0zREYwMDAwMDNGRTAwMDNGRjAwMDAwM0ZDMDAwM0ZGMDAwMDAxRkMwMDAzRkUwMDAwMDFGQzAwMDFGRTAwMDM2MjU3RkE0MzkKLT5JPDdGODAwMDBGRTAzRjgwMDAxRkMwMUZDMDAwM0ZDMDFGRTAwMDdGODAwRkYwMDA3RjAwMDdGMDAwRkUwMDAzRjgwMUZDCi0wMDAxRkMwM0ZDMDAwMUZFMDNGODAwMDBGRjA3RjAwMDAwN0YwRkUwMDAwMDNGOUZDMDAwMDAxRkRGQzAwMDAwMEZGRjgwMDAKLTAwMEZGRjAwMDAwMDA3RkUwMDAwMDAwM0ZDMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwM0ZFMDAwMDAwMDdGRTAwMDAwMAotMEZGRjAwMDAwMDBGREY4MDAwMDAxRjlGQzAwMDAwM0YwRkUwMDAwMDdGMDdGMDAwMDBGRTAzRjAwMDAwRkMwM0Y4MDAwMUZDCi0wMUZDMDAwM0Y4MDBGRTAwMDdGMDAwN0YwMDBGRjAwMDdGMDAwRkUwMDAzRjgwMUZDMDAwMUZDMDNGODAwMDFGRTA3RjgwMDAKLTBGRjBGRjAwMDAwN0Y4MjUyNTgwQTQyNj5JPEZGMDAwMDBGRTA3RjAwMDAxRkMwN0YwMDAwMUZDMDNGODAwMDFGQzAzRjgwCi0wMDNGODAzRkMwMDAzRjgwMUZDMDAwN0YwMDFGQzAwMDdGMDAwRkUwMDA3RjAwMEZFMDAwRkUwMDBGRjAwMEZFMDAwN0YwMDAKLUZDMDAwN0YwMDFGQzAwMDNGODAxRkMwMDAzRjgwMUY4MDAwM0ZDMDNGODAwMDFGQzAzRjgwMDAxRkMwM0YwMDAwMEZFMDdGMAotMDAwMEZFMDdFMDAwMDA3RTA3RTAwMDAwN0UwRkUwMDAwMDdGMEZDMDAwMDAzRjBGQzAwMDAwM0YwRkMwMDAwMDFGOUY4MDAwCi0wMDFGOUY4MDAwMDAxRjlGMDAwMDAwMEY5RjAwMDAwMDBGOUYwMDAwMDAwNzlFMDAwMDAwMDdERTAwMDAwMDA3REUwMDAwMDAKLTAzRkMwMDAwMDAwM0ZDMDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGMDAwMDAwMDAzRjAwMDAwMDAwMwotRTAwMDAwMDAwM0UwMDAwMDAwMDdFMDAwMDAwMDA3QzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDFGODAwMDAwMjAxRjgwCi0wMDAwMzgzRjAwMDAwMDNGRkUwMDAwMDAzRkZFMDAwMDAwM0ZGQzAwMDAwMDNGRjgwMDAwMDAwRkUwMDAwMDAwMjMzNjdGQTQKLTI2PkkgRQotJUVuZERWSVBTQml0bWFwRm9udAotJURWSVBTQml0bWFwRm9udDogRmcgZWNybTA4MDAgOCAyNgotL0ZnIDI2IDEyMiBkZjwwMDAwRkYwMDAwMDAwN0ZGRTAwMDAwMUY4MEYwMDAwMDNFMDAzODAwMDA3QzAwN0MwMDAwRjgwMEZDCi0wMDAxRjAwMEZDMDAwM0YwMDBGQzAwMDNFMDAwNzgwMDAzRTAwMDMwMDAwM0UwMDAwMDAwMDNFMDAwMDAwMDAzRTAwMDAwMDAKLTAzRTAwMDAwMDAwM0UwMDAwMDAwMDNFMDAwMDAwMDAzRTAwMDAwMDAwM0UwMDA3QzAwRkZGRkZGRkMwMEZGRkZGRkZDMDAwMwotRTAwMEZDMDAwM0UwMDA3QzAwMDNFMDAwN0MwMDAzRTAwMDdDMDAwM0UwMDA3QzAwMDNFMDAwN0MwMDAzRTAwMDdDMDAwM0UwCi0wMDdDMDAwM0UwMDA3QzAwMDNFMDAwN0MwMDAzRTAwMDdDMDAwM0UwMDA3QzAwMDNFMDAwN0MwMDAzRTAwMDdDMDAwM0UwMDAKLTdDMDAwM0UwMDA3QzAwMDNFMDAwN0MwMDAzRTAwMDdDMDAwM0UwMDA3QzAwMDNFMDAwN0MwMDAzRTAwMDdDMDAwM0UwMDA3QwotMDAwM0UwMDA3QzAwMDNFMDAwN0MwMDA3RjAwMEZFMDA3RkZGMEZGRkUwN0ZGRjBGRkZFMDIzMkY3RkFFMjc+MjgKLUQ8M0M3RUZGRkZGRkZGRkZGRkZGN0U3RTdFN0U3RTdFN0U3RTdFM0MzQzNDM0MzQzNDM0MzQzNDM0MxODE4MTgxODAwMDAwMAotMDAwMDAwMDAzQzdFRkZGRkZGRkY3RTNDMDgyRjdBQUUxND4zMyBEPDNDMDA3RTAwRkYwMEZGMDBGRjgwRkY4MDdGODAzRDgwCi0wMTgwMDE4MDAxODAwMzgwMDMwMDAzMDAwNzAwMDYwMDBFMDAxQzAwMzgwMDcwMDA2MDAwMDkxNTdBQUQxND4zOQotRDwzQzAwN0UwMEZGMDBGRjAwRkY4MEZGODA3RjgwM0Q4MDAxODAwMTgwMDE4MDAzODAwMzAwMDMwMDA3MDAwNjAwMEUwMDFDCi0wMDM4MDA3MDAwNjAwMDA5MTU3QTg3MTQ+NDQgRDwwMDAwMDE4MDAwMDAwMDAwMDNDMDAwMDAwMDAwMDNDMDAwMDAwMDAwMDMKLUMwMDAwMDAwMDAwN0UwMDAwMDAwMDAwN0UwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAxQgotRjgwMDAwMDAwMDE5RjgwMDAwMDAwMDE5RjgwMDAwMDAwMDMwRkMwMDAwMDAwMDMwRkMwMDAwMDAwMDcwRkUwMDAwMDAwMDYwCi03RTAwMDAwMDAwNjA3RTAwMDAwMDAwQzAzRjAwMDAwMDAwQzAzRjAwMDAwMDAwQzAzRjAwMDAwMDAxODAxRjgwMDAwMDAxODAKLTFGODAwMDAwMDM4MDFGQzAwMDAwMDMwMDBGQzAwMDAwMDMwMDBGQzAwMDAwMDYwMDA3RTAwMDAwMDYwMDA3RTAwMDAwMDYwMAotMDdFMDAwMDAwQzAwMDNGMDAwMDAwQzAwMDNGMDAwMDAxRkZGRkZGODAwMDAxRkZGRkZGODAwMDAxODAwMDFGODAwMDAzMDAwCi0wMEZDMDAwMDMwMDAwMEZDMDAwMDMwMDAwMEZDMDAwMDYwMDAwMDdFMDAwMDYwMDAwMDdFMDAwMEUwMDAwMDdGMDAwMEMwMDAKLTAwM0YwMDAwQzAwMDAwM0YwMDAxQzAwMDAwMUY4MDAzQzAwMDAwMUY4MDA3QzAwMDAwMUZDMDBGRjAwMDAwM0ZFMEZGRkMwMAotMDNGRkZGRkZGQzAwMDNGRkZGMzAyRjdFQUUzNT42NSBEPDAwM0Y4MDMwMDFGRkYwNzAwN0MwN0M3MDBGMDAwRUYwMUUwMDA3Ci1GMDNDMDAwM0YwNzgwMDAxRjA3ODAwMDBGMDcwMDAwMEYwRjAwMDAwNzBGMDAwMDA3MEYwMDAwMDcwRjAwMDAwMzBGODAwMDAKLTMwRjgwMDAwMzBGQzAwMDAwMDdFMDAwMDAwN0YwMDAwMDAzRkUwMDAwMDNGRkUwMDAwMUZGRkUwMDAwRkZGRkMwMDA3RkZGRgotMDAwMUZGRkY4MDAwM0ZGRkUwMDAwM0ZGRTAwMDAwM0ZGMDAwMDAwN0Y4MDAwMDAxRjgwMDAwMDBGODAwMDAwMEZDMDAwMDAwCi03Q0MwMDAwMDdDQzAwMDAwM0NDMDAwMDAzQ0MwMDAwMDNDRTAwMDAwM0NFMDAwMDAzQ0UwMDAwMDc4RjAwMDAwNzhGODAwMDAKLTcwRkMwMDAwRjBGRTAwMDFFMEY3ODAwM0MwRTNGMDBGMDBFMDdGRkUwMEMwMEZGMDAwMUUyRjdDQUQyNz44MwotRDwwMEZGMDAwMDA3RkZDMDAwMEYwMUYwMDAxQzAwRjgwMDNGMDA3QzAwM0YwMDNFMDAzRjAwM0UwMDNGMDAzRjAwMUUwMDFGCi0wMDAwMDAxRjAwMDAwMDFGMDAwMDAwMUYwMDAwMDAxRjAwMDAwN0ZGMDAwMDdGRkYwMDAxRkUxRjAwMDdGMDFGMDAxRkMwMUYKLTAwM0Y4MDFGMDA3RjAwMUYwMDdFMDAxRjAwRkUwMDFGMDZGQzAwMUYwNkZDMDAxRjA2RkMwMDFGMDZGQzAwM0YwNkZFMDAzRgotMDY3RTAwN0YwNjdGMDBFRjhDMUY4M0M3RkMwRkZGMDNGODAxRkMwMUUwMUYyMDdEOUUyMz45NwotRDwwN0MwMDAwMDAwRkZDMDAwMDAwMEZGQzAwMDAwMDAwRkMwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwCi0wN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMDcKLUMwMDAwMDAwMDdDMDAwMDAwMDA3QzBGRTAwMDAwN0M3RkY4MDAwMDdDRjAzRTAwMDA3REMwMUYwMDAwN0Y4MDA3QzAwMDdGMAotMDA3RTAwMDdFMDAwM0UwMDA3QzAwMDFGMDAwN0MwMDAxRjgwMDdDMDAwMUY4MDA3QzAwMDBGODAwN0MwMDAwRkMwMDdDMDAwCi0wRkMwMDdDMDAwMEZDMDA3QzAwMDBGQzAwN0MwMDAwRkMwMDdDMDAwMEZDMDA3QzAwMDBGQzAwN0MwMDAwRkMwMDdDMDAwMEYKLUMwMDdDMDAwMUY4MDA3QzAwMDFGODAwN0MwMDAxRjAwMDdDMDAwM0YwMDA3RTAwMDNFMDAwN0YwMDA3QzAwMDdCMDAwRjgwMAotMDdCQzAxRjAwMDA3MEUwN0UwMDAwNjA3RkY4MDAwMDAwMUZDMDAwMDIyMkY3RUFEMjc+STwwMDFGRTAwMDAwN0ZGQzAwMDEKLUYwMUUwMDAzRTAwNzAwMDdDMDFGODAwRjgwMUY4MDFGMDAxRjgwM0YwMDFGODAzRTAwMEYwMDdFMDAwMDAwN0UwMDAwMDA3QwotMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDCi0wMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwQzAzRjAwMDBDMDFGMDAwMUMwMUY4MDAxODAwRkMwMDM4MDA3RTAwNzAwMDEKLUYwM0UwMDAwN0ZGODAwMDAxRkMwMDAxQTIwN0U5RTFGPkk8MDAwMDAwRjgwMDAwMDAxRkY4MDAwMDAwMUZGODAwMDAwMDAxCi1GODAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgKLTAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDBGRTBGODAwMDA3RkY4RjgwMAotMDFGODFFRjgwMDAzRTAwN0Y4MDAwN0MwMDNGODAwMEY4MDAxRjgwMDFGMDAwMUY4MDAzRjAwMDBGODAwM0UwMDAwRjgwMDdFCi0wMDAwRjgwMDdFMDAwMEY4MDBGQzAwMDBGODAwRkMwMDAwRjgwMEZDMDAwMEY4MDBGQzAwMDBGODAwRkMwMDAwRjgwMEZDMDAKLTAwRjgwMEZDMDAwMEY4MDBGQzAwMDBGODAwRkMwMDAwRjgwMDdDMDAwMEY4MDA3RTAwMDBGODAwN0UwMDAwRjgwMDNFMDAwMQotRjgwMDFGMDAwMUY4MDAxRjgwMDNGODAwMEY4MDA3RjgwMDAzRTAwRUZDMDAwMUYwM0NGRkMwMDA3RkYwRkZDMDAwMUZDMEY4Ci0wMDIyMkY3RUFEMjc+STwwMDFGODAwMDAwRkZGMDAwMDNFMDc4MDAwN0MwM0UwMDBGODAxRTAwMUYwMDFGMDAxRjAwMEY4MAotM0UwMDBGODA3RTAwMDc4MDdFMDAwN0MwN0MwMDA3QzBGQzAwMDdDMEZDMDAwN0MwRkMwMDA3QzBGRkZGRkZDMEZGRkZGRkMwCi1GQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDNFMDAwMEMwM0YwMDAwQzAKLTFGMDAwMUMwMEY4MDAzODAwRkMwMDMwMDAzRTAwRjAwMDFGMDNDMDAwMDdGRjgwMDAwMUZDMDAwMUEyMDdFOUUxRj5JPDAwCi0zRjAwRjgwMEZGQzNGRTAzRTFGRjFFMDc4MDdDMUUwRjgwN0MwQzFGMDAzRTAwMUYwMDNFMDAzRTAwMUYwMDNFMDAxRjAwM0UKLTAwMUYwMDNFMDAxRjAwM0UwMDFGMDAzRTAwMUYwMDNFMDAxRjAwMUYwMDNFMDAxRjAwM0UwMDBGODA3QzAwMDc4MDc4MDAwRgotRTFGMDAwMENGRkMwMDAxQzNGMDAwMDFDMDAwMDAwMUMwMDAwMDAxQzAwMDAwMDFFMDAwMDAwMUYwMDAwMDAwRkZGRjgwMDBGCi1GRkZGMDAwN0ZGRkZDMDBGRkZGRkYwMUUwMDA3RjgzQzAwMDBGODc4MDAwMDdDRjgwMDAwN0NGMDAwMDAzQ0YwMDAwMDNDRjAKLTAwMDAzQ0YwMDAwMDNDRjgwMDAwN0M3QzAwMDBGODNFMDAwMUYwMUYwMDAzRTAwN0UwMUY4MDAxRkZGRTAwMDAzRkYwMDAxRgotMkQ3RTlEMjM+MTAzIEQ8MDdDMDAwMDAwMEZGQzAwMDAwMDBGRkMwMDAwMDAwMEZDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAKLTAwMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMAotMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwRkUwMDAwMDdDM0ZGODAwMDA3QzcwM0UwMDAwN0RFMDFGMDAwCi0wN0Y4MDFGMDAwMDdGMDAwRjgwMDA3RjAwMEY4MDAwN0UwMDBGODAwMDdFMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDcKLUMwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMAotMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwCi1GODAwMDdDMDAwRjgwMDBGRTAwMUZDMDBGRkZFMUZGRkMwRkZGRTFGRkZDMDIyMkU3RUFEMjc+STwwNzgwMEZDMDFGRTAxRgotRTAxRkUwMUZFMDBGQzAwNzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0MwRkZDMEZGQzAwRkMwMDdDMDA3Ci1DMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDcKLUMwMDdDMDA3QzAwN0MwMEZFMEZGRkNGRkZDMEUyRTdFQUQxND5JPDAwMEYwMDAwMUY4MDAwM0ZDMDAwM0ZDMDAwM0ZDMDAwCi0zRkMwMDAxRjgwMDAwRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0MwMDAKLUZGQzAwMEZGQzAwMDBGQzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMAotMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwCi0wN0MwMDAwN0MwMDAwN0MwMDAwN0MwMDAwN0MwMDAwN0MwMDAwN0MwMDAwN0MwMDAwN0MwMDAwN0MwMzAwN0MwNzgwN0MwRkMKLTBGODBGQzBGODBGQzBGMDBGODFGMDA3ODNFMDAzRkY4MDAwN0UwMDAxMjNDODNBRDE2Pkk8MDdDMDAwMDAwMEZGQzAwMDAwCi0wMEZGQzAwMDAwMDAwRkMwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAKLTA3QzAwMDAwMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwNwotQzAwMDAwMDAwN0MwMUZGRTAwMDdDMDFGRkUwMDA3QzAwRkYwMDAwN0MwMDdDMDAwMDdDMDA3ODAwMDA3QzAwRTAwMDAwN0MwCi0xQzAwMDAwN0MwMzgwMDAwMDdDMDcwMDAwMDA3QzBFMDAwMDAwN0MzQzAwMDAwMDdDN0MwMDAwMDA3Q0ZFMDAwMDAwN0RGRjAKLTAwMDAwN0Y5RjAwMDAwMDdGMEY4MDAwMDA3RTBGQzAwMDAwN0MwN0UwMDAwMDdDMDNFMDAwMDA3QzAxRjAwMDAwN0MwMUY4MAotMDAwN0MwMEZDMDAwMDdDMDA3QzAwMDA3QzAwM0UwMDAwN0MwMDNGMDAwMDdDMDAxRjgwMDBGRTAwM0ZDMDBGRkZFMDdGRjgwCi1GRkZFMDdGRjgwMjEyRTdFQUQyNT5JPDA3QzBGRkMwRkZDMDBGQzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMAotMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwCi0wN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMDdDMDA3QzAwN0MwMEZFMEZGRkVGRkZFMEYyRTdFQUQKLTE0Pkk8MDdDMEZFMDAwMEZGQzNGRjgwMDBGRkM3MDNFMDAwMEZERTAxRjAwMDA3RjgwMUYwMDAwN0YwMDBGODAwMDdGMDAwCi1GODAwMDdFMDAwRjgwMDA3RTAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgKLTAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMAotMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMEZFMDAxRkMwMEZGCi1GRTFGRkZDMEZGRkUxRkZGQzAyMjFFN0U5RDI3PjExMCBEPDAwMUZFMDAwMDA3RkY4MDAwMUYwM0UwMDAzQzAwRjAwMDc4MAotMDc4MDBGMDAwM0MwMUYwMDAzRTAzRTAwMDFGMDNFMDAwMUYwN0MwMDAwRjg3QzAwMDBGODdDMDAwMEY4RkMwMDAwRkNGQzAwCi0wMEZDRkMwMDAwRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMDAwRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMDAwRkM3QzAwMDBGODdDMDAKLTAwRjgzRTAwMDFGMDNFMDAwMUYwMUYwMDAzRTAxRjAwMDNFMDBGODAwN0MwMDdDMDBGODAwMUYwM0UwMDAwN0ZGODAwMDAxRgotRTAwMDFFMjA3RTlFMjM+STwwMDBGRTAxODAwMDA3RkY4MzgwMDAxRjgxQzM4MDAwM0UwMEU3ODAwMDdDMDA3NzgwMDBGODAKLTAzRjgwMDFGODAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRjgwMDdFMDAwMEY4MDA3RTAwMDBGODAwRkUwMDAwRjgwMEZDMDAwMAotRjgwMEZDMDAwMEY4MDBGQzAwMDBGODAwRkMwMDAwRjgwMEZDMDAwMEY4MDBGQzAwMDBGODAwRkMwMDAwRjgwMEZDMDAwMEY4Ci0wMDdFMDAwMEY4MDA3RTAwMDBGODAwN0UwMDAwRjgwMDNGMDAwMUY4MDAxRjAwMDFGODAwMUY4MDAzRjgwMDBGQzAwN0Y4MDAKLTAzRTAwRUY4MDAwMUYwM0NGODAwMDA3RkYwRjgwMDAwMUZDMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMAotMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMUZDMDAwMDAwCi0xRkZGQzAwMDAwMUZGRkMwMjIyQjdFOUQyNT4xMTMgRDwwNzgxRjBGRjg3RkNGRjlFN0UwRjk4N0UwN0I4N0UwN0IwN0UwNwotRjAzQzA3RTAwMDA3RTAwMDA3RTAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3Ci1DMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMEZFMDAwRkZGRjAwRkZGRjAwMTcKLTFFN0U5RDFCPkk8MDFGRTE4MDdGRkI4MUUwMUY4M0MwMEY4NzgwMDc4RjAwMDM4RjAwMDM4RjAwMDE4RjAwMDE4RjgwMDE4Ci1GQzAwMThGRjAwMDA3RkYwMDAzRkZGMDAxRkZGQzAwRkZGRjAwMUZGRjgwMDFGRkMwMDAxRkNDMDAwN0VDMDAwM0VDMDAwM0UKLUUwMDAxRUUwMDAxRUYwMDAxRUYwMDAxRUY4MDAzQ0Y4MDAzQ0ZDMDA3OEZGMDFGMEUzRkZDMEMwRkYwMDE3MjA3RTlFMUM+Ci1JPDAwNjAwMDAwNjAwMDAwNjAwMDAwNjAwMDAwRTAwMDAwRTAwMDAwRTAwMDAxRTAwMDAzRTAwMDAzRTAwMDA3RTAwMDFGRTAKLTAwRkZGRkYwRkZGRkYwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMAotMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMTgwM0UwMTgwM0UwMTgwM0UwMTgwM0UwMTgwM0UwMTgwM0UwCi0xODAzRTAzODAxRjAzMDAxRjA3MDAwRjg2MDAwM0ZFMDAwMEY4MDE1MkE3RkE4MUI+STwwN0MwMDBGODAwRkZDMDFGRjgwMAotRkZDMDFGRjgwMDBGQzAwMUY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3Ci1DMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAKLTAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAwRjgwMDA3QzAwMEY4MDAwN0MwMDBGODAwMDdDMDAxRjgwMDA3QzAwMQotRjgwMDA3QzAwMUY4MDAwN0MwMDNGODAwMDNFMDA3RjgwMDAzRTAwRUZDMDAwMUY4MUNGRkMwMDA3RkY4RkZDMDAwMUZFMEY4Ci0wMDIyMUY3RTlEMjc+STxGRkZDMDFGRkMwRkZGQzAxRkZDMDBGRTAwMDdFMDAwN0UwMDA3QzAwMDdFMDAwMzgwMDAzRTAwMAotMzAwMDAzRTAwMDcwMDAwMUYwMDA2MDAwMDFGMDAwNjAwMDAwRjgwMEMwMDAwMEY4MDBDMDAwMDBGODAwQzAwMDAwN0MwMTgwCi0wMDAwN0MwMTgwMDAwMDNFMDMwMDAwMDAzRTAzMDAwMDAwM0YwNzAwMDAwMDFGMDYwMDAwMDAxRjA2MDAwMDAwMEY4QzAwMDAKLTAwMEY4QzAwMDAwMDBGREMwMDAwMDAwN0Q4MDAwMDAwMDdEODAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMAotMDFFMDAwMDAwMDAxRTAwMDAwMDAwMEMwMDAwMDIyMUU3RjlDMjU+STxGRkZDMDFGRkMwRkZGQzAxRkZDMDBGRTAwMDdFMDAKLTA3RTAwMDdDMDAwN0UwMDAzODAwMDNFMDAwMzAwMDAzRjAwMDcwMDAwMUYwMDA2MDAwMDFGMDAwNjAwMDAwRjgwMEMwMDAwMAotRjgwMEMwMDAwMEZDMDFDMDAwMDA3QzAxODAwMDAwN0UwMzgwMDAwMDNFMDMwMDAwMDAzRTAzMDAwMDAwMUYwNjAwMDAwMDFGCi0wNjAwMDAwMDFGOEUwMDAwMDAwRjhDMDAwMDAwMEY4QzAwMDAwMDA3RDgwMDAwMDAwN0Q4MDAwMDAwMDNGMDAwMDAwMDAzRjAKLTAwMDAwMDAzRjAwMDAwMDAwMUUwMDAwMDAwMDFFMDAwMDAwMDAwQzAwMDAwMDAwMEMwMDAwMDAwMDE4MDAwMDAwMDAxODAwMAotMDAwMDAzODAwMDAwMDAwMzAwMDAwMDc4MDMwMDAwMDBGQzA2MDAwMDAwRkMwNjAwMDAwMEZDMEMwMDAwMDBGQzFDMDAwMDAwCi03ODM4MDAwMDAwNzA3MDAwMDAwMDNGRTAwMDAwMDAwRjgwMDAwMDAwMjIyQjdGOUMyNT4xMjEKLUQgRQotJUVuZERWSVBTQml0bWFwRm9udAotJURWSVBTQml0bWFwRm9udDogRmggZWNybTA2MDAgNiAzCi0vRmggMyA1MiBkZjwwMEUwMDAwMUUwMDAwN0UwMDBGRkUwMDBGOUUwMDAwMUUwMDAwMUUwMDAwMUUwMDAwMUUwMDAwMUUwMDAKLTAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMDAxRTAwMAotMDFFMDAwMDFFMDAwMDFFMDAwMDFFMDAwMDFFMDAwMDFFMDAwMDFFMDAwMDFFMDAwMDNGMDAwRkZGRkMwRkZGRkMwMTIyMTdBCi1BMDFFPjQ5IEQ8MDFGQzAwMDdGRjgwMUMwRkMwMzAwM0UwNjAwMUYwNjAwMEY4RjgwMEY4RkMwMEZDRkMwMEZDRkMwMDdDNzgKLTAwN0MzMDAwRkMwMDAwRkMwMDAwRjgwMDAwRjgwMDAxRjAwMDAzRTAwMDAzQzAwMDA3ODAwMDBGMDAwMDFFMDAwMDM4MDAwMAotNzAwMDAwRTAwMDAxQzAwQzAzODAwQzA2MDAxODBDMDAxODE4MDAxODNGRkZGODdGRkZGOEZGRkZGMEZGRkZGMDE2MjE3Q0EwCi0xRT5JPDAwRkYwMDAzRkZDMDBGMDNFMDFDMDBGMDFDMDBGODNFMDBGQzNFMDA3QzNFMDA3QzFFMDBGQzBDMDBGQzAwMDBGOAotMDAwMEY4MDAwMUYwMDAwM0UwMDAwRkMwMDFGRjAwMDFGRjAwMDAwM0UwMDAwMEYwMDAwMDc4MDAwMDdDMDAwMDNFMDAwMDNGCi0zMDAwM0Y3ODAwM0ZGQzAwM0ZGQzAwM0ZGQzAwM0VGODAwN0U2MDAwN0MzODAwRjgxRTAzRjAwRkZGQzAwMUZGMDAxODIyN0QKLUEwMUU+SSBFCi0lRW5kRFZJUFNCaXRtYXBGb250Ci0lRFZJUFNCaXRtYXBGb250OiBGaSBlY3R0MDkwMCA5IDMyCi0vRmkgMzIgMTIyIGRmPDAwMDFDMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDNFMDAwMDAKLTAzRTAwMDAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDNGRkZGRkZDRkZGRkZGRkZGRgotRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDAwCi0wM0UwMDAwMDAzRTAwMDAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDFDMDAwMjAKLTIyN0RBNzI3PjQzIEQ8N0ZGRkZGODBGRkZGRkZDMEZGRkZGRkMwRkZGRkZGQzA3RkZGRkY4MDFBMDU3QTkyMjc+NDUKLUQ8MUUwMDdGODA3RjgwRkZDMEZGQzBGRkMwRkZDMDdGODA3RjgwMUUwMDBBMEE3Mjg5Mjc+STwwMDAwMDAzODAwMDAwMDdDCi0wMDAwMDA3QzAwMDAwMEZDMDAwMDAwRjgwMDAwMDFGODAwMDAwMUYwMDAwMDAzRjAwMDAwMDNFMDAwMDAwN0UwMDAwMDA3QzAKLTAwMDAwN0MwMDAwMDBGQzAwMDAwMEY4MDAwMDAxRjgwMDAwMDFGMDAwMDAwM0YwMDAwMDAzRTAwMDAwMDdFMDAwMDAwN0MwMAotMDAwMEZDMDAwMDAwRjgwMDAwMDFGODAwMDAwMUYwMDAwMDAzRjAwMDAwMDNFMDAwMDAwN0UwMDAwMDA3QzAwMDAwMEZDMDAwCi0wMDBGODAwMDAwMEY4MDAwMDAxRjgwMDAwMDFGMDAwMDAwM0YwMDAwMDAzRTAwMDAwMDdFMDAwMDAwN0MwMDAwMDBGQzAwMDAKLTAwRjgwMDAwMDFGODAwMDAwMUYwMDAwMDAzRjAwMDAwMDNFMDAwMDAwN0UwMDAwMDA3QzAwMDAwMEZDMDAwMDAwRjgwMDAwMAotMEY4MDAwMDAxRjgwMDAwMDFGMDAwMDAwM0YwMDAwMDAzRTAwMDAwMDdFMDAwMDAwN0MwMDAwMDBGQzAwMDAwMEY4MDAwMDAwCi1GODAwMDAwMDcwMDAwMDAwMUUzQTdDQjMyNz5JPDAwM0ZFMDAwMDFGRkY4MDAwM0ZGRkUwMDBGRkZGRjgwMUZGRkZGQzAzRgotRTA3RkUwM0Y4MDBGRTA3RjAwMDdGMDdFMDAwM0Y4RkUwMDAxRjhGQzAwMDFGOEZFMDAwMUZDRkUwMDAwRkNGRTAwMDBGQ0ZFCi0wMDAwRkM3QzAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDFGQzAwMDAwMUY4MDAwMDAxRjgwMDAwMDNGODAwMDAwM0YwMDAKLTAwMDdGMDAwMDAwRkUwMDAwMDFGQzAwMDAwM0ZDMDAwMDA3RjgwMDAwMEZGMDAwMDAxRkUwMDAwMDNGQzAwMDAwN0Y4MDAwMAotMEZGMDAwMDAxRkUwMDAwMDNGQzAwMDAwN0Y4MDAwMDBGRTAwMDAwMUZDMDAwMDA3RjgwMDc4MEZGMDAwRkMxRkUwMDBGQzNGCi1DMDAwRkM3RkZGRkZGQ0ZGRkZGRkZDRkZGRkZGRkNGRkZGRkZGQzdGRkZGRkY4MUUyRjdDQUUyNz41MAotRDwwMDFGRjgwMDAwRkZGRTAwMDNGRkZGODAwRkZGRkZDMDBGRkZGRkUwMUZGMDFGRjAzRkMwMDdGODNGODAwMUY4M0Y4MDAxCi1GQzNGODAwMEZDM0Y4MDAwRkMxRjAwMDBGQzA0MDAwMEZDMDAwMDAwRkMwMDAwMDFGQzAwMDAwMUY4MDAwMDAzRjgwMDAwMDcKLUYwMDAwMDBGRjAwMDAwM0ZFMDAwMUZGRkMwMDAzRkZGODAwMDNGRkY4MDAwM0ZGRkUwMDAxRkZGRjAwMDAwMUZGODAwMDAwMwotRkMwMDAwMDFGQzAwMDAwMEZFMDAwMDAwN0UwMDAwMDA3RjAwMDAwMDNGMDAwMDAwM0YzODAwMDAzRjdDMDAwMDNGRkUwMDAwCi0zRkZFMDAwMDNGRkUwMDAwN0ZGQzAwMDA3RUZFMDAwMEZFN0YwMDAxRkM3RjgwMDNGQzNGRjAxRkY4MUZGRkZGRjAwRkZGRkYKLUUwMDNGRkZGODAwMEZGRkUwMDAwMUZGODAwMjAzMDdEQUUyNz5JPDdGRkZGQzAwMDA3RkZGRkYwMDAwRkZGRkZGQzAwMDdGCi1GRkZGRTAwMDdGRkZGRkYwMDAwN0UwMEZGODAwMDdFMDA3RjgwMDA3RTAwMUZDMDAwN0UwMDBGRTAwMDdFMDAwRkUwMDA3RTAKLTAwN0UwMDA3RTAwMDdGMDAwN0UwMDAzRjAwMDdFMDAwM0Y4MDA3RTAwMDFGODAwN0UwMDAxRjgwMDdFMDAwMUY4MDA3RTAwMAotMUZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGCi1DMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAxRjgwMDdFMDAwMUY4MDA3RTAwMDFGODAKLTA3RTAwMDNGODAwN0UwMDAzRjAwMDdFMDAwM0YwMDA3RTAwMDdGMDAwN0UwMDBGRTAwMDdFMDAwRkUwMDA3RTAwMUZDMDAwNwotRTAwM0Y4MDAwN0UwMEZGODAwN0ZGRkZGRjAwMDdGRkZGRkUwMDBGRkZGRkZDMDAwN0ZGRkZGMDAwMDdGRkZGQzAwMDAyMjJFCi03RkFEMjc+NjggRDw3RkZGRkZFMEZGRkZGRkYwRkZGRkZGRjBGRkZGRkZGMDdGRkZGRkUwMDAxRjgwMDAwMDFGODAwMDAwMUYKLTgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRgotODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGCi04MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUYKLTgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDA3RkZGRkZFMEZGRkZGRkYwRkZGRgotRkZGMEZGRkZGRkYwN0ZGRkZGRTAxQzJFN0JBRDI3PjczIEQ8N0ZGRkMwMDAwMDdGRkZFMDAwMDBGRkZGRTAwMDAwN0ZGRkUwCi0wMDAwN0ZGRkMwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAKLTAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMAotMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzCi1GMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAKLTAwMDAwMDAzRjAwMDA3ODAwM0YwMDAwRkMwMDNGMDAwMEZDMDAzRjAwMDBGQzAwM0YwMDAwRkMwMDNGMDAwMEZDMDAzRjAwMAotMEZDMDAzRjAwMDBGQzA3RkZGRkZGRkMwN0ZGRkZGRkZDMEZGRkZGRkZGQzA3RkZGRkZGRkMwN0ZGRkZGRkY4MDIyMkU3RkFECi0yNz43NiBEPDdGRTAwMDdGRTBGRkYwMDBGRkYwRkZGMDAwRkZGMEZGRjgwMUZGRjA3RkY4MDFGRkUwMEZGODAxRkYwMDBGQjgKLTAxREYwMDBGQkMwM0RGMDAwRkJDMDNERjAwMEZCQzAzREYwMDBGQkUwN0RGMDAwRjlFMDc5RjAwMEY5RTA3OUYwMDBGOUUwNwotOUYwMDBGOUYwRjlGMDAwRjlGMEY5RjAwMEY4RjBGMUYwMDBGOEYwRjFGMDAwRjhGOUYxRjAwMEY4RjlGMUYwMDBGODc5RTFGCi0wMDBGODc5RTFGMDAwRjg3OUUxRjAwMEY4NzlFMUYwMDBGODM5QzFGMDAwRjgzRkMxRjAwMEY4M0ZDMUYwMDBGODNGQzFGMDAKLTBGODFGODFGMDAwRjgxRjgxRjAwMEY4MEYwMUYwMDBGODAwMDFGMDAwRjgwMDAxRjAwMEY4MDAwMUYwMDBGODAwMDFGMDAwRgotODAwMDFGMDAwRjgwMDAxRjAwMEY4MDAwMUYwMDBGODAwMDFGMDAwRjgwMDAxRjAwMEY4MDAwMUYwMDdGRjAwMEZGRTBGRkY4Ci0wMUZGRjBGRkY4MDFGRkYwRkZGODAxRkZGMDdGRjAwMEZGRTAyNDJFN0ZBRDI3Pkk8N0ZGQzAzRkZFMDdGRkUwN0ZGRTBGRgotRkUwN0ZGRjA3RkZFMDdGRkUwN0ZGQzAzRkZFMDA3RjAwMEZFMDAwM0YwMDBGQzAwMDNGODAxRkMwMDAxRjgwMUY4MDAwMUY4Ci0wMUY4MDAwMUZDMDNGODAwMDBGQzAzRjAwMDAwRkUwN0YwMDAwMDdFMDdFMDAwMDA3RTA3RTAwMDAwM0YwRkMwMDAwMDNGMEYKLUMwMDAwMDFGOUY4MDAwMDAxRjlGODAwMDAwMUY5RjgwMDAwMDBGOUYwMDAwMDAwRjlGMDAwMDAwMDdGRTAwMDAwMDA3RkUwMAotMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwCi0wMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAKLTAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDFGRkY4MDAwMDAzRkZGQzAwMDAwM0ZGRkMwMDAwMDNGRkZDMDAwMDAxRgotRkY4MDAwMjQyRTdGQUQyNz44OSBEPDNGRkZGRkZFN0ZGRkZGRkY3RkZGRkZGRjdGRkZGRkZGN0ZGRkZGRkY3RTAwMDBGRTdFCi0wMDAxRkM3RTAwMDFGQzdFMDAwM0Y4N0UwMDA3RjA3RTAwMDdGMDNDMDAwRkUwMDAwMDFGQzAwMDAwMUZDMDAwMDAzRjgwMDAKLTAwN0YwMDAwMDA3RjAwMDAwMEZFMDAwMDAwRkMwMDAwMDFGQzAwMDAwM0Y4MDAwMDAzRjAwMDAwMDdGMDAwMDAwRkUwMDAwMAotMEZDMDAwMDAxRkMwMDAwMDNGODAwMDAwM0YwMDAwMDA3RjAwMDAwMEZFMDAwMDAwRkUwMDAwMDFGQzAwMDAwM0Y4MDAxRTAzCi1GODAwM0YwN0YwMDAzRjBGRTAwMDNGMEZFMDAwM0YxRkMwMDAzRjNGODAwMDNGM0Y4MDAwM0Y3RjAwMDAzRkZGRkZGRkZGRkYKLUZGRkZGRkZGRkZGRkZGRkZGRkZGRkY3RkZGRkZGRTIwMkU3REFEMjc+STw3MDAwMDAwMEY4MDAwMDAwRjgwMDAwMDBGQzAwCi0wMDAwN0MwMDAwMDA3RTAwMDAwMDNFMDAwMDAwM0YwMDAwMDAxRjAwMDAwMDFGODAwMDAwMEY4MDAwMDAwRjgwMDAwMDBGQzAKLTAwMDAwN0MwMDAwMDA3RTAwMDAwMDNFMDAwMDAwM0YwMDAwMDAxRjAwMDAwMDFGODAwMDAwMEY4MDAwMDAwRkMwMDAwMDA3QwotMDAwMDAwN0UwMDAwMDAzRTAwMDAwMDNGMDAwMDAwMUYwMDAwMDAxRjgwMDAwMDBGODAwMDAwMEY4MDAwMDAwRkMwMDAwMDA3Ci1DMDAwMDAwN0UwMDAwMDAzRTAwMDAwMDNGMDAwMDAwMUYwMDAwMDAxRjgwMDAwMDBGODAwMDAwMEZDMDAwMDAwN0MwMDAwMDAKLTdFMDAwMDAwM0UwMDAwMDAzRjAwMDAwMDFGMDAwMDAwMUY4MDAwMDAwRjgwMDAwMDBGQzAwMDAwMDdDMDAwMDAwN0MwMDAwMAotMDdFMDAwMDAwM0UwMDAwMDAzRjAwMDAwMDFGMDAwMDAwMUY4MDAwMDAwRjgwMDAwMDBGQzAwMDAwMDdDMDAwMDAwN0MwMDAwCi0wMDM4MUUzQTdDQjMyNz45MiBEPDdGRkZGRkY4RkZGRkZGRkNGRkZGRkZGQ0ZGRkZGRkZDRkZGRkZGRkM3RkZGRkZGODFFMDYKLTdDN0UyNz45NSBEPDAxRkZFMDAwMDAwN0ZGRjgwMDAwMEZGRkZFMDAwMDFGRkZGRjgwMDAxRkZGRkZDMDAwMUZDMDdGQzAwMAotMUZDMDBGRTAwMDBGODAwN0UwMDAwMjAwMDdGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDA3RkZGMDAwMDA3RkZGRjAwMDAzCi1GRkZGRjAwMDBGRkZGRkYwMDAxRkZGRkZGMDAwM0ZGQzAzRjAwMDdGRTAwM0YwMDA3RjAwMDNGMDAwRkUwMDAzRjAwMEZDMDAKLTAzRjAwMEZDMDAwM0YwMDBGQzAwMDNGMDAwRkMwMDAzRjAwMEZFMDAwN0YwMDA3RjAwMEZGMDAwN0ZDMDdGRjAwMDNGRkZGRgotRkZDMDFGRkZGRkZGRTAwRkZGRkZGRkUwMDNGRkY4RkZFMDAwN0ZDMDNGQzAyMzIwN0Q5RjI3Pjk3Ci1EPDdGRTAwMDAwMDBGRkYwMDAwMDAwRkZGMDAwMDAwMEZGRjAwMDAwMDA3RkYwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAKLTAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwMwotRjA3RjgwMDAwM0YxRkZFMDAwMDNGN0ZGRjgwMDAzRkZGRkZDMDAwM0ZGRkZGRTAwMDNGRkMwRkYwMDAzRkYwMDdGODAwM0ZDCi0wMDFGQzAwM0Y4MDAwRkMwMDNGODAwMEZFMDAzRjAwMDA3RTAwM0YwMDAwN0UwMDNGMDAwMDdGMDAzRjAwMDAzRjAwM0YwMDAKLTAzRjAwM0YwMDAwM0YwMDNGMDAwMDNGMDAzRjAwMDAzRjAwM0YwMDAwM0YwMDNGMDAwMDdGMDAzRjgwMDA3RTAwM0Y4MDAwNwotRTAwM0Y4MDAwRkUwMDNGQzAwMUZDMDAzRkUwMDNGQzAwM0ZGMDA3RjgwMDNGRkMxRkYwMDAzRkZGRkZFMDAwM0ZGRkZGQzAwCi0wM0Y3RkZGODAwMDNGM0ZGRTAwMDAxRTA3RjAwMDAyNDJFODBBRDI3Pkk8MDAwRkZGMDAwMDdGRkZDMDAxRkZGRkUwMDNGRgotRkZGMDA3RkZGRkYwMEZGODA3RjAxRkUwMDdGMDNGQzAwM0UwM0Y4MDAwODA3RjAwMDAwMDdFMDAwMDAwN0UwMDAwMDBGRTAwCi0wMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkUwMDAwMDA3RTAwMDAwMDdFMDAKLTAwMDA3RjAwMDBGMDNGODAwMUY4M0ZDMDAxRjgxRkUwMDNGODBGRjgwRkYwMDdGRkZGRjAwM0ZGRkZFMDAxRkZGRkMwMDA3RgotRkYwMDAwMEZGODAwMUQyMDdCOUYyNz5JPDAwMDAxRkY4MDAwMDAwM0ZGQzAwMDAwMDNGRkMwMDAwMDAzRkZDMDAwMDAwMUYKLUZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQwotMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMEZGMEZDMDAwMDdGRkNGQzAwMDFGRkZGRkMwMDAzRkZGRkZDMDAwN0ZGRkZGQzAwCi0wRkY4MUZGQzAwMUZFMDA3RkMwMDNGQzAwM0ZDMDAzRjgwMDFGQzAwN0YwMDAxRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwRkUKLTAwMDBGQzAwRkMwMDAwRkMwMEZDMDAwMEZDMDBGQzAwMDBGQzAwRkMwMDAwRkMwMEZDMDAwMEZDMDBGQzAwMDBGQzAwRkUwMAotMDBGQzAwN0UwMDAxRkMwMDdFMDAwMUZDMDA3RjAwMDNGQzAwM0YwMDAzRkMwMDNGODAwN0ZDMDAxRkUwMEZGQzAwMEZGMDNGCi1GQzAwMDdGRkZGRkZFMDAzRkZGRkZGRjAwMUZGRkVGRkYwMDA3RkY4RkZGMDAwMUZFMDdGRTAyNDJFN0VBRDI3Pkk8MDAwRgotRjgwMDAwM0ZGRTAwMDBGRkZGODAwM0ZGRkZDMDA3RkZGRkUwMEZGQzBGRjAxRkUwMDNGODFGQzAwMUY4M0Y4MDAxRkM3RjAwCi0wMEZDN0UwMDAwRkM3RTAwMDA3RUZFMDAwMDdFRkZGRkZGRkVGRkZGRkZGRUZGRkZGRkZFRkZGRkZGRkVGRkZGRkZGQ0ZDMDAKLTAwMDBGRTAwMDAwMDdFMDAwMDAwN0YwMDAwMDAzRjAwMDAzQzNGODAwMDdFMUZDMDAwN0UxRkYwMDBGRTBGRkMwN0ZDMDdGRgotRkZGQzAxRkZGRkY4MDBGRkZGRjAwMDNGRkZDMDAwMDdGRTAwMUYyMDdEOUYyNz5JPDdGRTAwMDAwMDBGRkYwMDAwMDAwRkYKLUYwMDAwMDAwRkZGMDAwMDAwMDdGRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMAotMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAzRkMwMDAwM0YxRkZGMDAwMDNGN0ZGCi1GODAwMDNGRkZGRkMwMDAzRkZGRkZFMDAwM0ZGRTBGRTAwMDNGRjAwN0YwMDAzRkUwMDNGMDAwM0ZDMDAzRjAwMDNGODAwM0YKLTAwMDNGODAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMAotMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzCi1GMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwN0ZGRjgzRkZGOEZGRkZDN0ZGRkNGRkZGQzdGRkZDRkZGRkM3RkZGQzdGRkYKLTgzRkZGODI2MkU4MEFEMjc+MTA0IEQ8MDAwRjAwMDAwMDFGODAwMDAwM0ZDMDAwMDAzRkMwMDAwMDNGQzAwMDAwM0ZDMDAwCi0wMDFGODAwMDAwMEYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTNGRkY4MDAwN0ZGRkMwMDA3RkZGQzAwMDdGRkZDMDAwM0ZGRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMAotMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwCi0wMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAKLTdGRkZGRkYwRkZGRkZGRjBGRkZGRkZGOEZGRkZGRkYwN0ZGRkZGRjAxRDJGN0JBRTI3Pkk8N0ZGRjgwMDBGRkZGQzAwMEZGCi1GRkMwMDBGRkZGQzAwMDdGRkZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAKLTBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMAotMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwCi0wRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAKLTBGQzAwMDAwMEZDMDAwMDAwRkMwMDA3RkZGRkZGOEZGRkZGRkZDRkZGRkZGRkNGRkZGRkZGQzdGRkZGRkY4MUUyRTdDQUQyNwotPjEwOCBEPDdGMDdDMDFGMDAwMEZGOUZGMDdGQzAwMEZGRkZGOUZGRTAwMEZGRkZGRkZGRjAwMDdGRkZGRkZGRjAwMDBGRkMKLTdGRjFGODAwMEZGMDNGQzBGODAwMEZFMDNGODBGODAwMEZDMDNGMDBGODAwMEZDMDNGMDBGODAwMEZDMDNGMDBGODAwMEY4MAotM0UwMEY4MDAwRjgwM0UwMEY4MDAwRjgwM0UwMEY4MDAwRjgwM0UwMEY4MDAwRjgwM0UwMEY4MDAwRjgwM0UwMEY4MDAwRjgwCi0zRTAwRjgwMDBGODAzRTAwRjgwMDBGODAzRTAwRjgwMDBGODAzRTAwRjgwMDBGODAzRTAwRjgwMDBGODAzRTAwRjgwMDBGODAKLTNFMDBGODAwMEY4MDNFMDBGODAwMEY4MDNFMDBGODAwMEY4MDNFMDBGODAwN0ZGMEZGQzNGRjAwRkZGOEZGRTNGRjgwRkZGOQotRkZFN0ZGODBGRkY4RkZFM0ZGODA3RkYwRkZDM0ZGMDAyOTIwODE5RjI3Pkk8N0ZFMDNGQzAwMEZGRjFGRkYwMDBGRkY3RkYKLUY4MDBGRkZGRkZGQzAwN0ZGRkZGRkUwMDAzRkZFMEZFMDAwM0ZGMDA3RjAwMDNGRTAwM0YwMDAzRkMwMDNGMDAwM0Y4MDAzRgotMDAwM0Y4MDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwCi0wM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDMKLUYwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDA3RkZGODNGRkY4RkZGRkM3RkZGQ0ZGRkZDN0ZGRkNGRkZGQzdGRkZDN0ZGRgotODNGRkY4MjYyMDgwOUYyNz5JPDAwMUZFMDAwMDA3RkY4MDAwMUZGRkUwMDAzRkZGRjAwMDdGRkZGODAwRkYwM0ZDMDFGQzAKLTBGRTAzRjgwMDdGMDNGMDAwM0YwN0YwMDAzRjg3RTAwMDFGODdFMDAwMUY4RkMwMDAwRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMAotMDBGQ0ZDMDAwMEZDRkMwMDAwRkNGQzAwMDBGQ0ZFMDAwMUZDN0UwMDAxRjg3RTAwMDFGODdGMDAwM0Y4M0Y4MDA3RjAzRjgwCi0wN0YwMUZFMDFGRTAwRkYwM0ZDMDA3RkZGRjgwMDNGRkZGMDAwMUZGRkUwMDAwN0ZGODAwMDAxRkUwMDAxRTIwN0M5RjI3PgotSTw3RkUwN0Y4MDAwRkZGMUZGRTAwMEZGRjdGRkY4MDBGRkZGRkZGQzAwN0ZGRkZGRkUwMDAzRkZDMEZGMDAwM0ZGMDA3RjgwCi0wM0ZDMDAxRkMwMDNGODAwMEZDMDAzRjgwMDBGRTAwM0YwMDAwN0UwMDNGMDAwMDdFMDAzRjAwMDA3RjAwM0YwMDAwM0YwMDMKLUYwMDAwM0YwMDNGMDAwMDNGMDAzRjAwMDAzRjAwM0YwMDAwM0YwMDNGMDAwMDNGMDAzRjAwMDA3RjAwM0Y4MDAwN0UwMDNGOAotMDAwN0UwMDNGODAwMEZFMDAzRkMwMDFGQzAwM0ZFMDAzRkMwMDNGRjAwN0Y4MDAzRkZDMUZGMDAwM0ZGRkZGRTAwMDNGRkZGCi1GQzAwMDNGN0ZGRjgwMDAzRjNGRkUwMDAwM0YwN0YwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAKLTAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMAotMDNGMDAwMDAwMDdGRkY4MDAwMDBGRkZGQzAwMDAwRkZGRkMwMDAwMEZGRkZDMDAwMDA3RkZGODAwMDAwMjQzMTgwOUYyNz4KLUk8N0ZGQzAzRkMwMEZGRkUwRkZGMDBGRkZFM0ZGRjgwRkZGRTdGRkZDMDdGRkVGRkZGQzAwMDdGRkUxRkMwMDA3RkY4MUZDMAotMDA3RkYwMEY4MDAwN0ZFMDAyMDAwMDdGQzAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwCi03RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UKLTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwN0ZGRkZGODAwMEZGRkZGRgotQzAwMEZGRkZGRkMwMDBGRkZGRkZDMDAwN0ZGRkZGODAwMDIyMjA3RTlGMjc+MTE0IEQ8MDBGRkYzODAwN0ZGRkZDMDFGRkYKLUZGQzAzRkZGRkZDMDdGRkZGRkMwN0Y4MDNGQzBGQzAwMEZDMEY4MDAwRkMwRjgwMDBGQzBGODAwMDc4MEZDMDAwMDAwN0Y4MAotMDAwMDdGRkMwMDAwM0ZGRkYwMDAxRkZGRkMwMDA3RkZGRjAwMDFGRkZGODAwMDBGRkZDMDAwMDAzRkUwMDAwMDA3RTA3ODAwCi0wM0YwRkMwMDAxRjBGQzAwMDFGMEZFMDAwMUYwRkUwMDAzRjBGRjAwMDdFMEZGRTAxRkUwRkZGRkZGQzBGRkZGRkY4MEZGRkYKLUZGMDBGQkZGRkMwMDcwN0ZGMDAwMUMyMDdCOUYyNz5JPDAwM0MwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwCi0wMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwN0ZGRkZGRjBGRkZGRkZGOEZGRkZGRkY4RkZGRkZGRjg3RkZGRkYKLUYwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMAotMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMTgwMDdFMDA3RTAwN0UwMDdFMDA3RTAwCi03RTAwN0UwMDdFMDA3RTAwRkUwMDNGMDBGQzAwM0Y4M0ZDMDAzRkZGRjgwMDFGRkZGMDAwMEZGRkUwMDAwM0ZGQzAwMDAwRkYKLTAwMUYyOTdFQTgyNz5JPDdGRTAwN0ZFMDBGRkYwMEZGRjAwRkZGMDBGRkYwMEZGRjAwRkZGMDA3RkYwMDdGRjAwMDNGMDAwCi0zRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YKLTAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMAotMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwN0YwMDAzRjAwMDdGMDAwM0YwMDFGRjAwMDNGQzA3RkYwMDAxCi1GRkZGRkZGODAwRkZGRkZGRkMwMEZGRkZGRkZDMDAzRkZGQkZGQzAwMEZGQzFGRjgyNjIwODA5RjI3Pkk8M0ZGQzFGRkYwMAotN0ZGRTNGRkYwMDdGRkUzRkZGODA3RkZFM0ZGRjAwM0ZGQzFGRkYwMDAxRjgwN0UwMDAwMEZDMEZDMDAwMDBGQzFGODAwMDAwCi03RTFGMDAwMDAwM0YzRjAwMDAwMDFGN0UwMDAwMDAxRkZDMDAwMDAwMEZGODAwMDAwMDA3RjgwMDAwMDAwM0YwMDAwMDAwMDMKLUUwMDAwMDAwMDNGMDAwMDAwMDA3RjgwMDAwMDAwRkY4MDAwMDAwMUZGQzAwMDAwMDFGM0UwMDAwMDAzRTNGMDAwMDAwN0UxRgotMDAwMDAwN0MwRjgwMDAwMEY4MEZDMDAwMDFGODA3RTAwMDAzRjAwM0UwMDA3RkZFMUZGRjgwN0ZGRTFGRkY4MEZGRkYzRkZGCi1DMDdGRkUxRkZGODA3RkZFMUZGRjgwMjIyMDdFOUYyNz4xMjAgRDw3RkZDMEZGRjgwRkZGRTFGRkZDMEZGRkUxRkZGQzBGRgotRkUxRkZGQzA3RkZDMEZGRjgwMDdFMDAwRjgwMDAzRTAwMUY4MDAwM0UwMDFGMDAwMDNGMDAxRjAwMDAxRjAwM0YwMDAwMUY4Ci0wM0UwMDAwMEY4MDNFMDAwMDBGODAzRTAwMDAwRkMwN0MwMDAwMDdDMDdDMDAwMDA3QzA3QzAwMDAwN0UwRjgwMDAwMDNFMEYKLTgwMDAwMDNFMEY4MDAwMDAxRjBGMDAwMDAwMUYxRjAwMDAwMDFGMUYwMDAwMDAwRjFGMDAwMDAwMEY5RTAwMDAwMDBGQkUwMAotMDAwMDA3QkUwMDAwMDAwN0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0Y4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwCi0wMDAxRjAwMDAwMDAwMUYwMDAwMDAwMDNGMDAwMDAwMDAzRTAwMDAwMDAwM0UwMDAwMDAwMDdFMDAwMDAwMDA3QzAwMDAwMDgKLTA3QzAwMDAwM0UwRkMwMDAwMDdGMEY4MDAwMDA3RjFGODAwMDAwN0U3RjAwMDAwMDdGRkUwMDAwMDAzRkZDMDAwMDAwM0ZGOAotMDAwMDAwMUZGMDAwMDAwMDA3QzAwMDAwMDAyMjMxN0U5RjI3PkkgRQotJUVuZERWSVBTQml0bWFwRm9udAotJURWSVBTQml0bWFwRm9udDogRmogZWNzczEyMDAgMTIgNDEKLS9GaiA0MSAxMjIgZGY8RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGODBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY4MEZGRkZGRgotRkZGRkZGRkZGRkZGRkZGRkZGODBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY4MEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjgwCi1GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY4MDYxMDY4MDlENjI+MjIgRDwwMDAwN0YwMDNGQzAwMDAxRkZDMDNGQzAwMDAzRkYKLUMwM0ZDMDAwMEZGRkMwM0ZDMDAwMEZGRkMwM0ZDMDAwMUZGRkMwM0ZDMDAwM0ZDMUMwM0ZDMDAwM0Y4MDQwM0ZDMDAwN0YwMAotMDAwMDAwMDA3RjAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwCi0wMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAKLTAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMAotMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwRkZGRkZGQzAzRkMwRkZGRkZGQzAzRkMwRkZGRkZGCi1DMDNGQzBGRkZGRkZDMDNGQzBGRkZGRkZDMDNGQzBGRkZGRkZDMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAKLTAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMAotMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwCi0wMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAKLTAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMDAwM0ZDMDAxRkUwMAotMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwMDAzRkMwMDFGRTAwCi0wMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAwMUZFMDAwMDNGQzAyQTRBN0UKLUM5MzQ+MjggRDxGRkZGRkZDMEZGRkZGRkMwRkZGRkZGQzBGRkZGRkZDMEZGRkZGRkMwRkZGRkZGQzAxQTA2N0Y5ODIxPjQ1Ci1EPEZGRkZGRkZGRkZGRkZGRkYwODA4Nzc4NzFCPkk8MDAwMDE4MDAwMDAwMDA3ODAwMDAwMDAwRjgwMDAwMDAwM0Y4MDAwMAotMDAwRkY4MDAwMDAwN0ZGODAwMDBGRkZGRjgwMDAwRkZGRkY4MDAwMEZGRkZGODAwMDBGRkZGRjgwMDAwRkZGN0Y4MDAwMEZGCi04N0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDcKLUY4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGOAotMDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwCi0wMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAKLTAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMAotMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3Ci1GODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDA3RkZGRkYKLUZGODA3RkZGRkZGRjgwN0ZGRkZGRkY4MDdGRkZGRkZGODA3RkZGRkZGRjgwN0ZGRkZGRkY4MDIxNDM3OEMyMzE+NDkKLUQ8MDAwM0ZFMDAwMDAwMUZGRkUwMDAwMDdGRkZGODAwMDBGRkZGRkMwMDAxRkZGRkZGMDAwM0ZGRkZGRjgwMDdGQzA3RkZDMAotMEZGMDAwRkZDMDFGQzAwMDNGRTAxRjgwMDAxRkYwM0Y4MDAwMEZGMDNGMDAwMDBGRjg3RjAwMDAwN0Y4N0UwMDAwMDNGQzdFCi0wMDAwMDNGQ0ZFMDAwMDAzRkNGQzAwMDAwMUZFN0MwMDAwMDFGRTNDMDAwMDAxRkUzODAwMDAwMUZFMTgwMDAwMDFGRTA4MDAKLTAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMAotMDNGQzAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMEZGMDAwMDAwMDBGRTAwMDAwMDAxRkUwMDAwMDAwM0ZDMDAwMDAwMDNGCi04MDAwMDAwMDdGMDAwMDAwMDBGRjAwMDAwMDAxRkUwMDAwMDAwM0ZDMDAwMDAwMDdGODAwMDAwMDBGRjAwMDAwMDAxRkUwMDAKLTAwMDAzRkMwMDAwMDAwN0YwMDAwMDAwMEZFMDAwMDAwMDFGQzAwMDAwMDAzRjgwMDAwMDAwN0YwMDAwMDAwMEZFMDAwMDAwMAotMUZDMDAwMDAwMDFGODAwMDAwMDAzRjAwMDAwMDAwN0UwMDAwMDAwMEZDMDAwMDAwMDFGODAwMDAwMDAzRjAwMDAwMDAwN0UwCi0wMDAwMDAwRkMwMDAwMDAwMUY4MDAwMDAwMDNGMDAwMDAwMDA3RkZGRkZGRkZFN0ZGRkZGRkZGRTdGRkZGRkZGRkU3RkZGRkYKLUZGRkU3RkZGRkZGRkZFN0ZGRkZGRkZGRTI3NDM3Q0MyMzE+STwwMDAxRkYwMDAwMDAwRkZGRTAwMDAwM0ZGRkY4MDAwMEZGCi1GRkZFMDAwMUZGRkZGRjAwMDdGRkZGRkY4MDBGRkYwMUZGQzAxRkY4MDA3RkUwM0ZFMDAwMUZFMDNGQzAwMDFGRjA3RjAwMDAKLTBGRjAzRTAwMDAwRkYwM0UwMDAwMDdGODFDMDAwMDA3RjgxODAwMDAwN0Y4MDgwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwNwotRjgwMDAwMDAwN0Y4MDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAzRkMwCi0wMDAwMDA3RkMwMDAwMDAwRkY4MDAwMDAwM0ZGMDAwMDAwMUZGRTAwMDAwRkZGRkMwMDAwMEZGRkY4MDAwMDBGRkZFMDAwMDAKLTBGRkZGMDAwMDAwRkZGRkMwMDAwMEZGRkZGMDAwMDAwMDFGRjgwMDAwMDAwN0ZDMDAwMDAwMDFGRTAwMDAwMDAwRkYwMDAwMAotMDAwRkY4MDAwMDAwMDdGQzAwMDAwMDA3RkMwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwMUZGMDAwMDAwCi0wMUZGMDAwMDAwMDFGRjAwMDAwMDAxRkYwMDAwMDAwMUZGMDAwMDAwMDFGRjAwMDAwMDAxRkYwMDAwMDAwMUZGNDAwMDAwMDMKLUZFNjAwMDAwMDNGRTYwMDAwMDAzRkVGMDAwMDAwN0ZDRjgwMDAwMDdGQ0ZFMDAwMDBGRjg3RjAwMDAwRkY4M0ZDMDAwMUZGMAotMUZGMDAwN0ZFMDBGRkUwMUZGRTAwN0ZGRkZGRjgwMDNGRkZGRkYwMDAxRkZGRkZFMDAwMDdGRkZGODAwMDAxRkZGRTAwMDAwCi0wMUZGMDAwMDI4NDU3Q0MyMzE+STwwMDAwMDBGRjgwMDAwMDAwMDFGRjgwMDAwMDAwMDNGRjgwMDAwMDAwMDNGRjgwMDAwMAotMDAwNzdGODAwMDAwMDAwNzdGODAwMDAwMDAwRjdGODAwMDAwMDAwRjdGODAwMDAwMDAxRTdGODAwMDAwMDAzRTdGODAwMDAwCi0wMDNFN0Y4MDAwMDAwMDdFN0Y4MDAwMDAwMDdDN0Y4MDAwMDAwMEZDN0Y4MDAwMDAwMEZDN0Y4MDAwMDAwMUY4N0Y4MDAwMDAKLTAzRjg3RjgwMDAwMDAzRjA3RjgwMDAwMDA3RjA3RjgwMDAwMDA3RjA3RjgwMDAwMDBGRTA3RjgwMDAwMDBGRTA3RjgwMDAwMAotMUZDMDdGODAwMDAwM0ZDMDdGODAwMDAwM0Y4MDdGODAwMDAwN0Y4MDdGODAwMDAwN0YwMDdGODAwMDAwRkYwMDdGODAwMDAwCi1GRTAwN0Y4MDAwMDFGRTAwN0Y4MDAwMDFGQzAwN0Y4MDAwMDNGQzAwN0Y4MDAwMDdGODAwN0Y4MDAwMDdGODAwN0Y4MDAwMEYKLUYwMDA3RjgwMDAwRkUwMDA3RjgwMDAxRkUwMDA3RjgwMDAxRkMwMDA3RjgwMDAzRkMwMDA3RjgwMDA3RjgwMDA3RjgwMDA3RgotODAwMDdGODAwMEZGMDAwMDdGODAwMEZGRkZGRkZGRkZDMEZGRkZGRkZGRkZDMEZGRkZGRkZGRkZDMEZGRkZGRkZGRkZDMEZGCi1GRkZGRkZGRkMwRkZGRkZGRkZGRkMwMDAwMDAwN0Y4MDAwMDAwMDAwN0Y4MDAwMDAwMDAwN0Y4MDAwMDAwMDAwN0Y4MDAwMDAKLTAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMAotMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGODAwMDAwCi0wMDAwN0Y4MDAwMkE0MTdEQzAzMT5JPDAwMDAwMEZGODAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMAotMDAwMDAxRkZDMDAwMDAwMDAwMDAwM0ZGRTAwMDAwMDAwMDAwMDNGRkUwMDAwMDAwMDAwMDAzRkZFMDAwMDAwMDAwMDAwN0Y3Ci1GMDAwMDAwMDAwMDAwN0Y3RjAwMDAwMDAwMDAwMDdFN0YwMDAwMDAwMDAwMDBGRTdGODAwMDAwMDAwMDAwRkUzRjgwMDAwMDAKLTAwMDAwRkUzRjgwMDAwMDAwMDAwMUZDM0ZDMDAwMDAwMDAwMDFGQzFGQzAwMDAwMDAwMDAzRkMxRkUwMDAwMDAwMDAwM0Y4MQotRkUwMDAwMDAwMDAwM0Y4MUZFMDAwMDAwMDAwMDdGODBGRjAwMDAwMDAwMDA3RjAwRkYwMDAwMDAwMDAwN0YwMEZGMDAwMDAwCi0wMDAwRkYwMDdGODAwMDAwMDAwMEZFMDA3RjgwMDAwMDAwMDBGRTAwN0Y4MDAwMDAwMDAxRkUwMDNGQzAwMDAwMDAwMUZDMDAKLTNGQzAwMDAwMDAwMUZDMDAzRkMwMDAwMDAwMDNGQzAwMUZFMDAwMDAwMDAzRjgwMDFGRTAwMDAwMDAwM0Y4MDAxRkUwMDAwMAotMDAwN0Y4MDAwRkYwMDAwMDAwMDdGMDAwMEZGMDAwMDAwMDA3RjAwMDBGRjAwMDAwMDAwRkYwMDAwN0Y4MDAwMDAwMEZFMDAwCi0wN0Y4MDAwMDAwMUZFMDAwMDdGQzAwMDAwMDFGRTAwMDAzRkMwMDAwMDAxRkMwMDAwM0ZDMDAwMDAwM0ZDMDAwMDNGRTAwMDAKLTAwM0ZDMDAwMDFGRTAwMDAwMDNGODAwMDAxRkUwMDAwMDA3RjgwMDAwMUZGMDAwMDAwN0Y4MDAwMDBGRjAwMDAwMDdGRkZGRgotRkZGRjAwMDAwMEZGRkZGRkZGRkY4MDAwMDBGRkZGRkZGRkZGODAwMDAwRkZGRkZGRkZGRjgwMDAwMUZGRkZGRkZGRkZDMDAwCi0wMUZGRkZGRkZGRkZDMDAwMDFGQzAwMDAwMDNGQzAwMDAzRkMwMDAwMDAxRkUwMDAwM0ZDMDAwMDAwMUZFMDAwMDdGODAwMDAKLTAwMUZGMDAwMDdGODAwMDAwMDBGRjAwMDA3RjAwMDAwMDAwRkYwMDAwRkYwMDAwMDAwMEZGODAwMEZGMDAwMDAwMDA3RjgwMAotMEZFMDAwMDAwMDA3RjgwMDFGRTAwMDAwMDAwN0ZDMDAxRkUwMDAwMDAwMDNGQzAwMUZDMDAwMDAwMDAzRkMwMDNGQzAwMDAwCi0wMDAzRkUwMDNGQzAwMDAwMDAwMUZFMDAzRjgwMDAwMDAwMDFGRTAwN0Y4MDAwMDAwMDAwRkYwMDdGODAwMDAwMDAwMEZGMDAKLTdGMDAwMDAwMDAwMEZGMDBGRjAwMDAwMDAwMDA3RjgwRkYwMDAwMDAwMDAwN0Y4MDM5NDU3REM0NDA+NjUKLUQ8RkZGRkZGRjgwMDAwMDBGRkZGRkZGRjgwMDAwMEZGRkZGRkZGRTAwMDAwRkZGRkZGRkZGODAwMDBGRkZGRkZGRkZFMDAwMAotRkZGRkZGRkZGRjAwMDBGRjAwMDAzRkZGQzAwMEZGMDAwMDA3RkZFMDAwRkYwMDAwMDBGRkYwMDBGRjAwMDAwMDNGRjAwMEZGCi0wMDAwMDAxRkY4MDBGRjAwMDAwMDBGRjgwMEZGMDAwMDAwMDdGQzAwRkYwMDAwMDAwM0ZDMDBGRjAwMDAwMDAzRkUwMEZGMDAKLTAwMDAwMUZFMDBGRjAwMDAwMDAxRkUwMEZGMDAwMDAwMDFGRTAwRkYwMDAwMDAwMUZFMDBGRjAwMDAwMDAxRkUwMEZGMDAwMAotMDAwM0ZFMDBGRjAwMDAwMDAzRkMwMEZGMDAwMDAwMDdGQzAwRkYwMDAwMDAwN0Y4MDBGRjAwMDAwMDBGRjgwMEZGMDAwMDAwCi0xRkYwMDBGRjAwMDAwMDdGRTAwMEZGMDAwMDAwRkZDMDAwRkYwMDAwMDdGRjgwMDBGRjAwMDAzRkZGMDAwMEZGRkZGRkZGRkMKLTAwMDBGRkZGRkZGRkYwMDAwMEZGRkZGRkZGQzAwMDAwRkZGRkZGRkZFMDAwMDBGRkZGRkZGRkZDMDAwMEZGRkZGRkZGRkYwMAotMDBGRjAwMDAzRkZGQzAwMEZGMDAwMDAzRkZFMDAwRkYwMDAwMDA3RkYwMDBGRjAwMDAwMDFGRjgwMEZGMDAwMDAwMEZGQzAwCi1GRjAwMDAwMDA3RkUwMEZGMDAwMDAwMDNGRjAwRkYwMDAwMDAwMUZGMDBGRjAwMDAwMDAwRkY4MEZGMDAwMDAwMDA3RjgwRkYKLTAwMDAwMDAwN0ZDMEZGMDAwMDAwMDA3RkMwRkYwMDAwMDAwMDNGQzBGRjAwMDAwMDAwM0ZDMEZGMDAwMDAwMDAzRkMwRkYwMAotMDAwMDAwM0ZDMEZGMDAwMDAwMDA3RkMwRkYwMDAwMDAwMDdGQzBGRjAwMDAwMDAwN0Y4MEZGMDAwMDAwMDBGRjgwRkYwMDAwCi0wMDAxRkY4MEZGMDAwMDAwMDNGRjAwRkYwMDAwMDAwN0ZFMDBGRjAwMDAwMDBGRkUwMEZGMDAwMDAwM0ZGQzAwRkYwMDAwMDAKLUZGRjgwMEZGMDAwMDBGRkZGMDAwRkZGRkZGRkZGRkUwMDBGRkZGRkZGRkZGODAwMEZGRkZGRkZGRkYwMDAwRkZGRkZGRkZGQwotMDAwMEZGRkZGRkZGRTAwMDAwRkZGRkZGRkUwMDAwMDAzMjQ1NzdDNDQxPkk8MDAwMDAwM0ZGRTAwMDAwMDAwMDNGRkZGRjAKLTAwMDAwMDBGRkZGRkZFMDAwMDAwM0ZGRkZGRkY4MDAwMDBGRkZGRkZGRjgwMDAwMUZGRkZGRkZGODAwMDAzRkZFMDA3RkYwMAotMDAwRkZGMDAwMEZGMDAwMDFGRkMwMDAwMUYwMDAwM0ZGODAwMDAwNzAwMDA3RkUwMDAwMDAzMDAwMDdGQzAwMDAwMDAwMDAwCi1GRjgwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAzRkYwMDAwMDAwMDAwMDNGRTAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDA3RkMKLTAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDNGRTAwMAotMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDNGRTAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDdGQzAwMDAwCi0wMDAwMDA3RkMwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAKLTAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMAotMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwCi03RkMwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwM0YKLUUwMDAwMDAwMDAwMDNGRTAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDFGRjAwMDAwMDAwMDAwMEZGOAotMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDNGRjAwCi0wMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDBGRjgwMDAwMDAwODAwMDdGQzAwMDAwMDE4MDAwN0ZFMDAwMDAwMzgwMDAzRkY4MDAKLTAwMEY4MDAwMUZGQzAwMDAxRkMwMDAwRkZGMDAwMDdGQzAwMDAzRkZFMDAzRkZDMDAwMDFGRkZGRkZGRjgwMDAwMEZGRkZGRgotRkUwMDAwMDAzRkZGRkZGQzAwMDAwMDBGRkZGRkYwMDAwMDAwMDNGRkZGQzAwMDAwMDAwMDNGRkMwMDAwMzI0OTdBQzYzRT4KLUk8RkZGRkZGRkZGRkUwRkZGRkZGRkZGRkUwRkZGRkZGRkZGRkUwRkZGRkZGRkZGRkUwRkZGRkZGRkZGRkUwRkZGRkZGRkZGRgotRTBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwCi0wMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAKLTAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMAotMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwCi0wMEZGRkZGRkZGRkYwMEZGRkZGRkZGRkYwMEZGRkZGRkZGRkYwMEZGRkZGRkZGRkYwMEZGRkZGRkZGRkYwMEZGRkZGRkZGRkYKLTAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMAotMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwCi0wMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAKLTAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMAotMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRkZGRkZGRkZGRjBGRkZGRkZGRkZGRjBGRkZGRkZGRkZGRjBGRkZGRkZGRkZGCi1GMEZGRkZGRkZGRkZGMEZGRkZGRkZGRkZGMEZGRkZGRkZGRkZGMDJDNDU3N0M0M0E+NjkgRDwwMDAwMDAzRkZDMDAwMDAwMDAKLTAxRkZGRkUwMDAwMDAwMEZGRkZGRjgwMDAwMDAzRkZGRkZGRjAwMDAwMEZGRkZGRkZGQzAwMDAxRkZGRkZGRkZFMDAwMDNGRgotRTAwN0ZGRTAwMDA3RkYwMDAwN0ZFMDAwMUZGQzAwMDAxRkMwMDAzRkY4MDAwMDA3QzAwMDNGRjAwMDAwMDNDMDAwN0ZDMDAwCi0wMDAxQzAwMEZGODAwMDAwMDBDMDAxRkY4MDAwMDAwMDAwMDNGRjAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDA3RkMwMDAwMDAKLTAwMDAwN0ZDMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDFGRjAwMDAwMDAwMAotMDAzRkUwMDAwMDAwMDAwMDNGRTAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwCi03RkMwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkYKLTgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MAotMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMUZGRkZGMEZGODAwMDAxRkZGRkYwRkY4MDAwCi0wMUZGRkZGMDdGQzAwMDAxRkZGRkYwN0ZDMDAwMDFGRkZGRjA3RkMwMDAwMUZGRkZGMDdGQzAwMDAwMDAwRkYwN0ZDMDAwMDAKLTAwMEZGMDNGRTAwMDAwMDAwRkYwM0ZFMDAwMDAwMDBGRjAzRkUwMDAwMDAwMEZGMDFGRjAwMDAwMDAwRkYwMUZGMDAwMDAwMAotMEZGMDBGRjgwMDAwMDAwRkYwMEZGODAwMDAwMDBGRjAwN0ZDMDAwMDAwMEZGMDA3RkMwMDAwMDAwRkYwMDNGRTAwMDAwMDBGCi1GMDAzRkYwMDAwMDAwRkYwMDFGRjgwMDAwMDBGRjAwMEZGODAwMDAwMEZGMDAwN0ZDMDAwMDAwRkYwMDAzRkYwMDAwMDBGRjAKLTAwM0ZGODAwMDAwRkYwMDAxRkZDMDAwMDBGRjAwMDA3RkYwMDAwM0ZGMDAwMDNGRkUwMDdGRkYwMDAwMUZGRkZGRkZGRjAwMAotMDBGRkZGRkZGRkUwMDAwMDNGRkZGRkZGMDAwMDAwMEZGRkZGRkMwMDAwMDAwMUZGRkZFMDAwMDAwMDAwM0ZGQzAwMDAzNDQ5Ci03QUM2NDE+NzEgRDxGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDAKLUZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRgotMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwCi0wMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAKLTAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMAotMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwCi1GRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYKLTAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMAotMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkZGRkZGCi1GRkZFRkZGRkZGRkZGRUZGRkZGRkZGRkVGRkZGRkZGRkZFRkZGRkZGRkZGRUZGRkZGRkZGRkUyNzQ1NzdDNDM1Pjc2Ci1EPEZGRTAwMDAwMDAwMDAzRkZDMEZGRjAwMDAwMDAwMDA3RkZDMEZGRjAwMDAwMDAwMDA3RkZDMEZGRjAwMDAwMDAwMDA3RkYKLUMwRkZGODAwMDAwMDAwMEZGRkMwRkZGODAwMDAwMDAwMEZGRkMwRkZGODAwMDAwMDAwMEZGRkMwRkY3QzAwMDAwMDAwMUZCRgotQzBGRjdDMDAwMDAwMDAxRkJGQzBGRjdFMDAwMDAwMDAzRkJGQzBGRjdFMDAwMDAwMDAzRkJGQzBGRjNFMDAwMDAwMDAzRjNGCi1DMEZGM0YwMDAwMDAwMDdGM0ZDMEZGM0YwMDAwMDAwMDdGM0ZDMEZGMUYwMDAwMDAwMDdFM0ZDMEZGMUY4MDAwMDAwMEZFM0YKLUMwRkYxRjgwMDAwMDAwRkUzRkMwRkYxRkMwMDAwMDAxRkUzRkMwRkYwRkMwMDAwMDAxRkMzRkMwRkYwRkMwMDAwMDAxRkMzRgotQzBGRjBGRTAwMDAwMDNGQzNGQzBGRjA3RTAwMDAwMDNGODNGQzBGRjA3RTAwMDAwMDNGODNGQzBGRjA3RjAwMDAwMDdGODNGCi1DMEZGMDNGMDAwMDAwN0YwM0ZDMEZGMDNGMDAwMDAwN0YwM0ZDMEZGMDNGODAwMDAwRkYwM0ZDMEZGMDFGODAwMDAwRkUwM0YKLUMwRkYwMUZDMDAwMDFGRTAzRkMwRkYwMUZDMDAwMDFGRTAzRkMwRkYwMEZDMDAwMDFGQzAzRkMwRkYwMEZFMDAwMDNGQzAzRgotQzBGRjAwRkUwMDAwM0ZDMDNGQzBGRjAwN0UwMDAwM0Y4MDNGQzBGRjAwN0YwMDAwN0Y4MDNGQzBGRjAwN0YwMDAwN0Y4MDNGCi1DMEZGMDAzRjAwMDA3RjAwM0ZDMEZGMDAzRjgwMDBGRjAwM0ZDMEZGMDAxRjgwMDBGRTAwM0ZDMEZGMDAxRkMwMDFGRTAwM0YKLUMwRkYwMDFGQzAwMUZFMDAzRkMwRkYwMDBGQzAwMUZDMDAzRkMwRkYwMDBGRTAwM0ZDMDAzRkMwRkYwMDBGRTAwM0ZDMDAzRgotQzBGRjAwMDdFMDAzRjgwMDNGQzBGRjAwMDdGMDA3RjgwMDNGQzBGRjAwMDdGMDA3RjgwMDNGQzBGRjAwMDNGMDA3RjAwMDNGCi1DMEZGMDAwM0Y4MEZGMDAwM0ZDMEZGMDAwMUY4MEZFMDAwM0ZDMEZGMDAwMUY4MEZFMDAwM0ZDMEZGMDAwMUZDMUZFMDAwM0YKLUMwRkYwMDAwRkMxRkMwMDAzRkMwRkYwMDAwRkMxRkMwMDAzRkMwRkYwMDAwRkUzRkMwMDAzRkMwRkYwMDAwN0UzRjgwMDAzRgotQzBGRjAwMDA3RTNGODAwMDNGQzBGRjAwMDA3RjdGODAwMDNGQzBGRjAwMDAzRjdGMDAwMDNGQzBGRjAwMDAzRjdGMDAwMDNGCi1DMEZGMDAwMDFGRkUwMDAwM0ZDMEZGMDAwMDFGRkUwMDAwM0ZDMEZGMDAwMDFGRkUwMDAwM0ZDMEZGMDAwMDBGRkMwMDAwM0YKLUMwRkYwMDAwMEZGQzAwMDAzRkMwRkYwMDAwMEZGQzAwMDAzRkMwRkYwMDAwMDdGODAwMDAzRkMwRkYwMDAwMDAwMDAwMDAzRgotQzBGRjAwMDAwMDAwMDAwMDNGQzA0MjQ1NzdDNDU1Pkk8MDAwMDAwM0ZFMDAwMDAwMDAwMDAwM0ZGRkUwMDAwMDAwMDAwMUYKLUZGRkZDMDAwMDAwMDAwM0ZGRkZGRTAwMDAwMDAwMEZGRkZGRkY4MDAwMDAwMDNGRkZGRkZGRTAwMDAwMDA3RkZDMDFGRkYwMAotMDAwMDBGRkYwMDA3RkY4MDAwMDAxRkZDMDAwMUZGQzAwMDAwM0ZGMDAwMDA3RkUwMDAwMDdGRTAwMDAwM0ZGMDAwMDBGRkMwCi0wMDAwMUZGODAwMDBGRjgwMDAwMDBGRjgwMDAxRkYwMDAwMDAwN0ZDMDAwM0ZFMDAwMDAwMDNGRTAwMDNGQzAwMDAwMDAxRkUKLTAwMDdGQzAwMDAwMDAxRkYwMDBGRjgwMDAwMDAwMEZGODAwRkY4MDAwMDAwMDBGRjgwMEZGMDAwMDAwMDAwN0Y4MDFGRjAwMAotMDAwMDAwN0ZDMDFGRTAwMDAwMDAwMDNGQzAzRkUwMDAwMDAwMDAzRkUwM0ZFMDAwMDAwMDAwM0ZFMDNGQzAwMDAwMDAwMDFGCi1FMDdGQzAwMDAwMDAwMDFGRjA3RkMwMDAwMDAwMDAxRkYwN0ZDMDAwMDAwMDAwMUZGMDdGQzAwMDAwMDAwMDFGRjA3RjgwMDAKLTAwMDAwMDBGRjBGRjgwMDAwMDAwMDAwRkY4RkY4MDAwMDAwMDAwMEZGOEZGODAwMDAwMDAwMDBGRjhGRjgwMDAwMDAwMDAwRgotRjhGRjgwMDAwMDAwMDAwRkY4RkY4MDAwMDAwMDAwMEZGOEZGODAwMDAwMDAwMDBGRjhGRjgwMDAwMDAwMDAwRkY4RkY4MDAwCi0wMDAwMDAwRkY4RkY4MDAwMDAwMDAwMEZGOEZGODAwMDAwMDAwMDBGRjhGRjgwMDAwMDAwMDAwRkY4RkZDMDAwMDAwMDAwMUYKLUY4N0ZDMDAwMDAwMDAwMUZGMDdGQzAwMDAwMDAwMDFGRjA3RkMwMDAwMDAwMDAxRkYwN0ZDMDAwMDAwMDAwMUZGMDdGRTAwMAotMDAwMDAwM0ZGMDNGRTAwMDAwMDAwMDNGRTAzRkUwMDAwMDAwMDAzRkUwM0ZFMDAwMDAwMDAwM0ZFMDFGRjAwMDAwMDAwMDdGCi1DMDFGRjAwMDAwMDAwMDdGQzAxRkY4MDAwMDAwMDBGRkMwMEZGODAwMDAwMDAwRkY4MDBGRkMwMDAwMDAwMUZGODAwN0ZDMDAKLTAwMDAwMUZGMDAwN0ZFMDAwMDAwMDNGRjAwMDNGRjAwMDAwMDA3RkUwMDAxRkYwMDAwMDAwN0ZDMDAwMUZGODAwMDAwMEZGQwotMDAwMEZGQzAwMDAwMUZGODAwMDA3RkUwMDAwMDNGRjAwMDAwM0ZGODAwMDBGRkUwMDAwMDFGRkMwMDAxRkZDMDAwMDAwRkZGCi0wMDA3RkY4MDAwMDAwN0ZGRTAzRkZGMDAwMDAwMDNGRkZGRkZGRTAwMDAwMDAwRkZGRkZGRjgwMDAwMDAwMDdGRkZGRkYwMDAKLTAwMDAwMDFGRkZGRkMwMDAwMDAwMDAwM0ZGRkUwMDAwMDAwMDAwMDA3RkYwMDAwMDAwM0Q0OTdCQzY0OD43OQotRDwwMDAwM0ZGODAwMDAwMDAzRkZGRjgwMDAwMDBGRkZGRkUwMDAwMDNGRkZGRkY4MDAwMDdGRkZGRkZFMDAwMEZGRkZGRkZGCi0wMDAxRkZDMDBGRkYwMDAzRkUwMDAxRkYwMDA3RjgwMDAwN0UwMDBGRjAwMDAwM0UwMDBGRTAwMDAwMUUwMDFGQzAwMDAwMDYKLTAwM0ZDMDAwMDAwNjAwM0Y4MDAwMDAwMDAwM0Y4MDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMAotMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RkMwMDAwMDAwCi0wMDNGQzAwMDAwMDAwMDNGRTAwMDAwMDAwMDNGRjAwMDAwMDAwMDFGRkMwMDAwMDAwMDBGRkYwMDAwMDAwMDBGRkZFMDAwMDAKLTAwMDdGRkZDMDAwMDAwMDNGRkZGQzAwMDAwMDFGRkZGRkMwMDAwMDBGRkZGRkYwMDAwMDA3RkZGRkZDMDAwMDAzRkZGRkZFMAotMDAwMDBGRkZGRkY4MDAwMDAzRkZGRkZDMDAwMDAwM0ZGRkZFMDAwMDAwMDNGRkZFMDAwMDAwMDA3RkZGMDAwMDAwMDAwN0ZGCi04MDAwMDAwMDAxRkZDMDAwMDAwMDAwRkZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUYKLUUwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwNwotRjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDBGRTA2MDAwMDAwMDBGRTA3MDAwMDAwMDBGCi1FMDc4MDAwMDAwMUZDMDdDMDAwMDAwM0ZDMDdFMDAwMDAwM0Y4MEZGODAwMDAwRkYwMEZGRTAwMDAxRkYwMEZGRkMwMDA3RkUKLTAwN0ZGRjgwMUZGQzAwMUZGRkZGRkZGODAwMDdGRkZGRkZGMDAwMDFGRkZGRkZDMDAwMDA3RkZGRkY4MDAwMDAwRkZGRkMwMAotMDAwMDAwRkZFMDAwMDAyQzQ5N0NDNjM2PjgzIEQ8RkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwCi0wMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAKLTAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMAotMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwCi0wMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAKLTAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMAotMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwMDAwMUZFRkYwMDAwCi0wMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAwMDAxRkVGRjAwMDAKLTAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRTdGODAwMAotMDAwM0ZDN0Y4MDAwMDAwM0ZDN0Y4MDAwMDAwM0ZDN0Y4MDAwMDAwM0ZDM0ZDMDAwMDAwN0Y4M0ZDMDAwMDAwN0Y4MUZFMDAwCi0wMDBGRjAxRkUwMDAwMDBGRjAwRkYwMDAwMDFGRTAwRkY4MDAwMDNGRTAwN0ZDMDAwMDdGQzAwM0ZFMDAwMEZGODAwMUZGODAKLTAzRkYwMDAwRkZGMDFGRkUwMDAwN0ZGRkZGRkMwMDAwM0ZGRkZGRjgwMDAwMEZGRkZGRTAwMDAwMDdGRkZGQzAwMDAwMDFGRgotRkYwMDAwMDAwMDFGRjAwMDAwMkY0Nzc3QzQ0Mj44NSBEPEZGODAwMDAwMDFGRkMwMDAwMDAwN0Y4MDdGODAwMDAwMDFGRkMwCi0wMDAwMDBGRjAwN0Y4MDAwMDAwMUZGQzAwMDAwMDBGRjAwN0Y4MDAwMDAwM0ZGQzAwMDAwMDBGRjAwM0ZDMDAwMDAwM0ZGRTAKLTAwMDAwMEZFMDAzRkMwMDAwMDAzRkZFMDAwMDAwMUZFMDAzRkMwMDAwMDAzRkZFMDAwMDAwMUZFMDAzRkMwMDAwMDA3RjdFMAotMDAwMDAxRkUwMDFGRTAwMDAwMDdGN0YwMDAwMDAxRkMwMDFGRTAwMDAwMDdFN0YwMDAwMDAzRkMwMDFGRTAwMDAwMEZFN0YwCi0wMDAwMDNGQzAwMUZGMDAwMDAwRkUzRjgwMDAwMDNGQzAwMEZGMDAwMDAwRkUzRjgwMDAwMDdGODAwMEZGMDAwMDAwRkUzRjgKLTAwMDAwN0Y4MDAwRkYwMDAwMDFGQzNGODAwMDAwN0Y4MDAwN0Y4MDAwMDFGQzNGQzAwMDAwN0YwMDAwN0Y4MDAwMDFGQzFGQwotMDAwMDBGRjAwMDA3RjgwMDAwMUZDMUZDMDAwMDBGRjAwMDA3RjgwMDAwM0Y4MUZDMDAwMDBGRjAwMDAzRkMwMDAwM0Y4MUZFCi0wMDAwMEZFMDAwMDNGQzAwMDAzRjgwRkUwMDAwMUZFMDAwMDNGQzAwMDAzRjgwRkUwMDAwMUZFMDAwMDNGQzAwMDA3RjAwRkUKLTAwMDAxRkUwMDAwMUZFMDAwMDdGMDBGRjAwMDAzRkMwMDAwMUZFMDAwMDdGMDA3RjAwMDAzRkMwMDAwMUZFMDAwMEZGMDA3RgotMDAwMDNGQzAwMDAwRkYwMDAwRkUwMDdGODAwMDNGODAwMDAwRkYwMDAwRkUwMDdGODAwMDdGODAwMDAwRkYwMDAwRkUwMDNGCi04MDAwN0Y4MDAwMDBGRjAwMDFGRTAwM0Y4MDAwN0Y4MDAwMDA3RjgwMDFGQzAwM0ZDMDAwN0YwMDAwMDA3RjgwMDFGQzAwMUYKLUMwMDBGRjAwMDAwMDdGODAwMUZDMDAxRkMwMDBGRjAwMDAwMDdGODAwM0Y4MDAxRkMwMDBGRjAwMDAwMDNGQzAwM0Y4MDAxRgotRTAwMEZFMDAwMDAwM0ZDMDAzRjgwMDBGRTAwMUZFMDAwMDAwM0ZDMDAzRjgwMDBGRTAwMUZFMDAwMDAwMUZDMDA3RjAwMDBGCi1FMDAxRkMwMDAwMDAxRkUwMDdGMDAwMEZGMDAxRkMwMDAwMDAxRkUwMDdGMDAwMDdGMDAzRkMwMDAwMDAxRkUwMDdGMDAwMDcKLUYwMDNGQzAwMDAwMDBGRTAwRkUwMDAwN0YwMDNGODAwMDAwMDBGRjAwRkUwMDAwN0Y4MDNGODAwMDAwMDBGRjAwRkUwMDAwMwotRjgwN0Y4MDAwMDAwMEZGMDBGRTAwMDAzRjgwN0Y4MDAwMDAwMDdGMDFGQzAwMDAzRjgwN0YwMDAwMDAwMDdGODFGQzAwMDAxCi1GQzA3RjAwMDAwMDAwN0Y4MUZDMDAwMDFGQzBGRjAwMDAwMDAwM0Y4MUY4MDAwMDFGQzBGRTAwMDAwMDAwM0Y4M0Y4MDAwMDEKLUZDMEZFMDAwMDAwMDAzRjgzRjgwMDAwMEZFMEZFMDAwMDAwMDAzRkMzRjgwMDAwMEZFMUZFMDAwMDAwMDAxRkMzRjAwMDAwMAotRkUxRkMwMDAwMDAwMDFGQzNGMDAwMDAwRkUxRkMwMDAwMDAwMDFGQzdGMDAwMDAwN0UxRkMwMDAwMDAwMDFGRTdGMDAwMDAwCi03RjFGQzAwMDAwMDAwMEZFN0UwMDAwMDA3RjNGODAwMDAwMDAwMEZFN0UwMDAwMDAzRjNGODAwMDAwMDAwMEZFN0UwMDAwMDAKLTNGM0Y4MDAwMDAwMDAwN0U3QzAwMDAwMDNGM0YwMDAwMDAwMDAwN0VGQzAwMDAwMDNGQkYwMDAwMDAwMDAwN0VGQzAwMDAwMAotMUZCRjAwMDAwMDAwMDA3RkZDMDAwMDAwMUZGRjAwMDAwMDAwMDAzRkY4MDAwMDAwMUZGRTAwMDAwMDAwMDAzRkY4MDAwMDAwCi0xRkZFMDAwMDAwMDAwMDNGRjgwMDAwMDAwRkZFMDAwMDAwMDAwMDNGRjgwMDAwMDAwRkZFMDAwMDAwMDAwMDFGRjAwMDAwMDAKLTBGRkMwMDAwMDAwMDAwMUZGMDAwMDAwMDA3RkMwMDAwMDA1OTQ1N0ZDNDVDPjg3IEQ8MDAwN0ZFMDAwMDAwN0ZGRkMwMDAwMwotRkZGRkUwMDAwRkZGRkZGODAwMUZGRkZGRkMwMDFGRkZGRkZFMDAxRkY4MDNGRjAwMUY4MDAxRkYwMDFFMDAwMEZGODAxODAwCi0wMDdGODAxMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAKLTFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDdGRkZFMDAwMEZGRkZGRTAwMDNGRkZGRgotRTAwMUZGRkZGRkUwMDNGRkZGRkZFMDBGRkZFMDFGRTAxRkZFMDAxRkUwM0ZGMDAwMUZFMDdGQzAwMDFGRTA3RjgwMDAxRkUwCi1GRjAwMDAxRkUwRkUwMDAwMUZFMEZFMDAwMDFGRTBGRTAwMDAxRkUwRkUwMDAwMUZFMEZFMDAwMDNGRTBGRjAwMDAzRkUwN0YKLTgwMDA3RkUwN0ZDMDAxRkZFMDdGRjAwRkZGRTAzRkZGRkZGRkUwMUZGRkZGRkZFMDFGRkZGRkRGRTAwRkZGRkYxRkUwMDNGRgotRjgxRkUwMDBGRjgwMDAwMDIzMkY3Q0FEMkY+OTcgRDxGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwCi1GRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYKLTAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMAotMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwCi0wMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwM0ZDMDAwRkYwM0ZGRjAwMEZGMEZGRkY4MDBGRjNGRkZGRTAwRkY3RkZGRkYKLTAwRkZGRkZGRkYwMEZGRkUwN0ZGODBGRkYwMDBGRkMwRkZFMDAwN0ZDMEZGQzAwMDFGRTBGRjgwMDAxRkYwRkYwMDAwMEZGMAotRkYwMDAwMDdGMEZGMDAwMDA3RjhGRjAwMDAwM0Y4RkYwMDAwMDNGOEZGMDAwMDAzRjhGRjAwMDAwM0ZDRkYwMDAwMDFGQ0ZGCi0wMDAwMDFGQ0ZGMDAwMDAxRkNGRjAwMDAwMUZDRkYwMDAwMDFGQ0ZGMDAwMDAxRkNGRjAwMDAwMUZDRkYwMDAwMDFGQ0ZGMDAKLTAwMDFGQ0ZGMDAwMDAxRkNGRjAwMDAwM0Y4RkYwMDAwMDNGOEZGMDAwMDAzRjhGRjAwMDAwN0Y4RkYwMDAwMDdGMEZGMDAwMAotMEZGMEZGMDAwMDBGRjBGRjgwMDAxRkUwRkZDMDAwM0ZFMEZGRTAwMDdGQzBGRkYwMDFGRjgwRkZGQzA3RkY4MEZGRkZGRkZGCi0wMEZGN0ZGRkZFMDBGRjNGRkZGQzAwRkYxRkZGRjAwMEZGMDdGRkMwMDAwMDAwRkYwMDAwMjY0QTc5QzgzMj5JPDAwMDBGRgotQzAwMDAwMDdGRkZDMDAwMDFGRkZGRjAwMDAzRkZGRkZDMDAwRkZGRkZGRTAwMUZGRkZGRkUwMDNGRjAwM0ZFMDAzRkMwMDA3Ci1DMDA3RjgwMDAxQzAwRkYwMDAwMEMwMUZFMDAwMDAwMDFGQzAwMDAwMDAzRkMwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAKLTdGMDAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRQotMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDA3RjAwCi0wMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMDdGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDFGQzAwMDAwMjAxRkUwMDAKLTAwNjAwRkYwMDAwMUUwMEZGODAwMDNFMDA3RkMwMDBGRTAwM0ZGMDA3RkUwMDFGRkZGRkZFMDAwRkZGRkZGQzAwMDdGRkZGRgotMDAwMDFGRkZGRTAwMDAwN0ZGRjAwMDAwMDBGRjgwMDAyMzJGN0NBRDJCPkk8MDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAKLTAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwMwotRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDCi0wMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAKLTAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwN0Y4MDNGQzAwMUZGRjgzRkMwMDdGRkZFM0ZDMDBGRgotRkZGM0ZDMDFGRkZGRkZGQzAzRkZGRkZGRkMwN0ZGODBGRkZDMEZGRTAwM0ZGQzBGRjgwMDBGRkMxRkYwMDAwN0ZDMUZFMDAwCi0wN0ZDM0ZDMDAwMDNGQzNGQzAwMDAzRkM3RjgwMDAwM0ZDN0Y4MDAwMDNGQzdGMDAwMDAzRkM3RjAwMDAwM0ZDRkYwMDAwMDMKLUZDRkUwMDAwMDNGQ0ZFMDAwMDAzRkNGRTAwMDAwM0ZDRkUwMDAwMDNGQ0ZFMDAwMDAzRkNGRTAwMDAwM0ZDRkUwMDAwMDNGQwotRkUwMDAwMDNGQ0ZFMDAwMDAzRkNGRTAwMDAwM0ZDRkYwMDAwMDNGQzdGMDAwMDAzRkM3RjAwMDAwM0ZDN0YwMDAwMDNGQzdGCi04MDAwMDNGQzNGODAwMDAzRkMzRkMwMDAwN0ZDMUZFMDAwMDdGQzFGRTAwMDBGRkMwRkY4MDAxRkZDMEZGQzAwN0ZGQzA3RkYKLTgxRkZGQzAzRkZGRkZGRkMwMUZGRkZGQkZDMDBGRkZGRTNGQzAwN0ZGRkMzRkMwMDFGRkYwM0ZDMDAwN0Y4MDAwMDI2NEE3QwotQzgzMj5JPDAwMDFGRTAwMDAwMDA3RkZDMDAwMDAxRkZGRjAwMDAwN0ZGRkY4MDAwMEZGRkZGQzAwMDFGRkZGRkUwMDAzRkYKLTAzRkYwMDA3RkMwMDdGMDAwRkY4MDAzRjgwMEZGMDAwMUY4MDFGRTAwMDBGQzAxRkMwMDAwRkMwM0Y4MDAwMDdFMDNGODAwMAotMDdFMDdGMDAwMDAzRTA3RjAwMDAwM0UwN0UwMDAwMDNFMDdFMDAwMDAxRjBGRkZGRkZGRkYwRkZGRkZGRkZGMEZGRkZGRkZGCi1GMEZGRkZGRkZGRjBGRkZGRkZGRkYwRkZGRkZGRkZGMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDAKLUZFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdGMDAwMDAwMDAzRjAwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAxRgotQzAwMDAwMDAxRkUwMDAwMDEwMEZGMDAwMDA3MDA3RjgwMDAxRjAwM0ZFMDAwN0YwMDNGRjgwM0ZGMDAxRkZGRkZGRjAwMEZGCi1GRkZGRTAwMDNGRkZGRjgwMDAxRkZGRkUwMDAwMDdGRkY4MDAwMDAwRkZDMDAwMjQyRjdEQUQyQj5JPDAwMDAxRkYwMDAwMAotN0ZGRTAwMDFGRkZFMDAwM0ZGRkUwMDA3RkZGRTAwMEZGRkZFMDAxRkYwMUUwMDNGQzAwMjAwM0Y4MDAwMDA3RjAwMDAwMDdGCi0wMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUKLTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRQotMDAwMDAxRkUwMDAwRkZGRkZGODBGRkZGRkY4MEZGRkZGRjgwRkZGRkZGODBGRkZGRkY4MEZGRkZGRjgwMDFGRTAwMDAwMUZFCi0wMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUKLTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRQotMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFCi0wMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUKLTAwMDAxRjRBN0VDOTFFPkk8MDAwM0ZDMDAwRkUwMDAwRkZGMDBGRkUwMDAzRkZGQzdGRkUwMDA3RkZGRkZGRkYwMDBGRkZGCi1GRkZGRjAwMUZGRkZGRkZGRjAwM0ZFMDdGRjgwMDAwN0Y4MDFGRTAwMDAwN0YwMDBGRTAwMDAwRkUwMDA3RjAwMDAwRkMwMDAKLTNGMDAwMDBGQzAwMDNGMDAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMAotMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMEZDMDAwM0YwMDAwMEZDMDAwM0YwMDAwMEZFMDAwCi03RjAwMDAwN0YwMDBGRTAwMDAwN0Y4MDFGRTAwMDAwM0ZFMDdGQzAwMDAwN0ZGRkZGODAwMDAwN0ZGRkZGMDAwMDAwRkZGRkYKLUUwMDAwMDBGQkZGRkMwMDAwMDFGOEZGRjAwMDAwMDFGODNGQzAwMDAwMDFGMDAwMDAwMDAwMDFGODAwMDAwMDAwMDFGODAwMAotMDAwMDAwMUY4MDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZGRkZGRjgwMDAwMEZGRkZGRkY4MDAwMEZGRkZGCi1GRkUwMDAwN0ZGRkZGRkY4MDAwM0ZGRkZGRkZDMDAwN0ZGRkZGRkZFMDAxRkZGRkZGRkZGMDAxRkZGRkZGRkZGMDAzRkMwMDAKLTBGRkY4MDdGODAwMDAwRkY4MDdGMDAwMDAwN0Y4MEZGMDAwMDAwM0ZDMEZFMDAwMDAwMUZDMEZFMDAwMDAwMUZDMEZFMDAwMAotMDAxRkMwRkUwMDAwMDAxRkMwRkUwMDAwMDAxRkMwN0YwMDAwMDAzRjgwN0Y4MDAwMDA3RjgwM0ZDMDAwMDBGRjAwM0ZGODAwCi0wN0ZGMDAxRkZGMDAzRkZFMDAwRkZGRkZGRkZDMDAwN0ZGRkZGRkY4MDAwMUZGRkZGRkUwMDAwMDdGRkZGRjgwMDAwMDFGRkYKLUZFMDAwMDAwMDFGRkUwMDAwMDJDNDI3REFDMzE+STxGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwCi1GRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYKLTAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMAotMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwCi0wMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwN0ZDMDAwRkYwMUZGRjgwMEZGMDdGRkZDMDBGRjFGRkZGRTAwRkYzRkZGRkYKLTAwRkY3RkZGRkY4MEZGRkUwM0ZGODBGRkY4MDBGRkMwRkZGMDAwN0ZDMEZGRTAwMDNGQzBGRkMwMDAzRkUwRkZDMDAwMUZFMAotRkY4MDAwMUZFMEZGODAwMDFGRTBGRjgwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGCi0wMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAKLTAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMAotMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGCi1FMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTAyMzQ5NzlDODMyPkk8RkY4MEZGODBGRjgwRkY4MAotRkY4MEZGODBGRjgwRkY4MEZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODAKLTdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MAotN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODAwOTQ1N0FDNDE3Pkk8RkYwMDAwMDAwMEZGMDAKLTAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMAotMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwCi0wMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDAKLUZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDdGRTBGRgotMDAwMEZGQzBGRjAwMDFGRjgwRkYwMDAzRkYwMEZGMDAwN0ZFMDBGRjAwMEZGQzAwRkYwMDFGRjgwMEZGMDAxRkYwMDBGRjAwCi0zRkUwMDBGRjAwN0ZDMDAwRkYwMEZGODAwMEZGMDFGRjAwMDBGRjAzRkUwMDAwRkYwN0ZFMDAwMEZGMEZGQzAwMDBGRjFGRjgKLTAwMDBGRjNGRjAwMDAwRkY3RkYwMDAwMEZGRkZGMDAwMDBGRkZGRjgwMDAwRkZGRkZDMDAwMEZGRkZGQzAwMDBGRkZERkUwMAotMDBGRkY5RkYwMDAwRkZGMEZGMDAwMEZGRTA3RjgwMDBGRkMwN0ZDMDAwRkZDMDNGQzAwMEZGODAzRkUwMDBGRjAwMUZGMDAwCi1GRjAwMEZGMDAwRkYwMDBGRjgwMEZGMDAwN0Y4MDBGRjAwMDNGQzAwRkYwMDAzRkUwMEZGMDAwMUZFMDBGRjAwMDBGRjAwRkYKLTAwMDBGRjgwRkYwMDAwN0Y4MEZGMDAwMDNGQzBGRjAwMDAzRkUwRkYwMDAwMUZFMEZGMDAwMDBGRjBGRjAwMDAwRkY4MjU0OQotNzlDODJGPjEwNyBEPEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKLUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgotRkZGRkZGRkZGRkZGRkZGRjA4NDk3OUM4MTc+STwwMDAwN0ZDMDAwMEZGODAwRkYwMUZGRjgwMDNGRkYwMEZGMDdGRkZDMDAKLUZGRkY4MEZGMUZGRkZFMDNGRkZGQzBGRjNGRkZGRjA3RkZGRkUwRkY3RkZGRkY4RkZGRkZGMEZGRkUwM0ZGOUZDMDdGRjBGRgotRjgwMEZGRkYwMDFGRjhGRkYwMDA3RkZFMDAwRkY4RkZFMDAwM0ZGQzAwMDdGOEZGQzAwMDNGRjgwMDA3RkNGRkMwMDAxRkY4Ci0wMDAzRkNGRjgwMDAxRkYwMDAwM0ZDRkY4MDAwMUZGMDAwMDNGQ0ZGODAwMDFGRjAwMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYKLTAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQ0ZGMDAwMDFGRTAwMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMAotMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQ0ZGMDAwMDFGRTAwMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQ0ZGCi0wMDAwMUZFMDAwMDNGQ0ZGMDAwMDFGRTAwMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQ0ZGMDAwMDFGRTAKLTAwMDNGQ0ZGMDAwMDFGRTAwMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQ0ZGMDAwMDFGRTAwMDAzRkNGRgotMDAwMDFGRTAwMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQ0ZGMDAwMDFGRTAwMDAzRkNGRjAwMDAxRkUwCi0wMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQ0ZGMDAwMDFGRTAwMDAzRkNGRjAwMDAxRkUwMDAwM0ZDRkYKLTAwMDAxRkUwMDAwM0ZDRkYwMDAwMUZFMDAwMDNGQzNFMkQ3OUFDNEQ+STwwMDAwN0ZDMDAwRkYwMUZGRjgwMEZGMDdGRkZDCi0wMEZGMUZGRkZFMDBGRjNGRkZGRjAwRkY3RkZGRkY4MEZGRkUwM0ZGODBGRkY4MDBGRkMwRkZGMDAwN0ZDMEZGRTAwMDNGQzAKLUZGQzAwMDNGRTBGRkMwMDAxRkUwRkY4MDAwMUZFMEZGODAwMDFGRTBGRjgwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRgotMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwCi0wMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAKLTFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRgotRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTAyMzJENzlBQzMyCi0+STwwMDAwN0Y4MDAwMDAwMDAzRkZGMDAwMDAwMDBGRkZGQzAwMDAwMDNGRkZGRjAwMDAwMDdGRkZGRjgwMDAwMEZGRkZGRgotQzAwMDAxRkY4MDdGRTAwMDAzRkUwMDFGRjAwMDA3RjgwMDA3RjgwMDBGRjAwMDAzRkMwMDBGRTAwMDAxRkMwMDFGQzAwMDAwCi1GRTAwMUZDMDAwMDBGRTAwM0Y4MDAwMDA3RjAwM0Y4MDAwMDA3RjAwN0YwMDAwMDAzRjgwN0YwMDAwMDAzRjgwN0YwMDAwMDAKLTNGODA3RTAwMDAwMDFGODBGRTAwMDAwMDFGQzBGRTAwMDAwMDFGQzBGRTAwMDAwMDFGQzBGRTAwMDAwMDFGQzBGRTAwMDAwMAotMUZDMEZFMDAwMDAwMUZDMEZFMDAwMDAwMUZDMEZFMDAwMDAwMUZDMEZFMDAwMDAwMUZDMEZGMDAwMDAwM0ZDMDdGMDAwMDAwCi0zRjgwN0YwMDAwMDAzRjgwN0YwMDAwMDAzRjgwN0Y4MDAwMDA3RjgwM0Y4MDAwMDA3RjAwM0ZDMDAwMDBGRjAwMUZDMDAwMDAKLUZFMDAxRkUwMDAwMUZFMDAwRkYwMDAwM0ZDMDAwN0Y4MDAwN0Y4MDAwN0ZFMDAxRkY4MDAwM0ZGODA3RkYwMDAwMUZGRkZGRgotRTAwMDAwRkZGRkZGQzAwMDAwM0ZGRkZGMDAwMDAwMUZGRkZFMDAwMDAwMDNGRkYwMDAwMDAwMDA3RjgwMDAwMDJBMkY3REFECi0zMT5JPDAwMDAzRkMwMDBGRjAzRkZGMDAwRkYwRkZGRjgwMEZGM0ZGRkZFMDBGRjdGRkZGRjAwRkZGRkZGRkYwMEZGRkUwNwotRkY4MEZGRjAwMEZGQzBGRkUwMDA3RkMwRkZDMDAwM0ZFMEZGODAwMDFGRjBGRjAwMDAwRkYwRkYwMDAwMEZGMEZGMDAwMDA3Ci1GOEZGMDAwMDA3RjhGRjAwMDAwM0Y4RkYwMDAwMDNGOEZGMDAwMDAzRkNGRjAwMDAwMUZDRkYwMDAwMDFGQ0ZGMDAwMDAxRkMKLUZGMDAwMDAxRkNGRjAwMDAwMUZDRkYwMDAwMDFGQ0ZGMDAwMDAxRkNGRjAwMDAwMUZDRkYwMDAwMDFGQ0ZGMDAwMDAxRkNGRgotMDAwMDAzRjhGRjAwMDAwM0Y4RkYwMDAwMDNGOEZGMDAwMDA3RjhGRjAwMDAwN0YwRkYwMDAwMEZGMEZGMDAwMDFGRjBGRjgwCi0wMDFGRTBGRkMwMDAzRkUwRkZFMDAwRkZDMEZGRjAwMUZGODBGRkZDMEZGRjgwRkZGRkZGRkYwMEZGN0ZGRkZFMDBGRjNGRkYKLUZDMDBGRjFGRkZGMDAwRkYwN0ZGQzAwMEZGMDBGRjAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMAotMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwCi1GRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwMjYKLTQwNzlBQzMyPkk8MDAwMDFGRkUwMEZGRkUwM0ZGRkUwN0ZGRkUxRkZGRkUzRkZGRkU3RkZGRkVGRkYwRkVGRjgwRkZGRTAwCi1GRkZDMDBGRkY4MDBGRkYwMDBGRkUwMDBGRkMwMDBGRkMwMDBGRjgwMDBGRjgwMDBGRjgwMDBGRjAwMDBGRjAwMDBGRjAwMDAKLUZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMEZGMDAwMAotRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwMTgyRDc5Ci1BQzIxPjExNCBEPDAwM0ZGODAwMDFGRkZGMDAwM0ZGRkZDMDBGRkZGRkYwMUZGRkZGRjgzRkZGRkZGODNGRTAwRkY4N0Y4MAotMDFGMDdGMDAwMDcwRkUwMDAwMzBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkYwMDAwMDBGRjgwCi0wMDAwN0ZFMDAwMDA3RkZDMDAwMDNGRkZFMDAwMUZGRkZDMDAxRkZGRkYwMDA3RkZGRjgwMDNGRkZGRTAwMUZGRkZGMDAwN0YKLUZGRjAwMDA3RkZGODAwMDAzRkZDMDAwMDA3RkMwMDAwMDNGQzAwMDAwMUZFMDAwMDAxRkUwMDAwMDBGRTAwMDAwMEZFMDAwMAotMDBGRTAwMDAwMEZFNDAwMDAwRkU3MDAwMDFGQzc4MDAwMUZDN0UwMDAzRkNGRkUwMUZGOEZGRkZGRkYwRkZGRkZGRjA3RkZGCi1GRkUwMUZGRkZGODAwM0ZGRkUwMDAwM0ZGMDAwMUYyRjdEQUQyNT5JPDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMAotMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwCi0wMEZGRkZGRkYwRkZGRkZGRjBGRkZGRkZGMEZGRkZGRkYwRkZGRkZGRjBGRkZGRkZGMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAKLTAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMAotMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwCi0wMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZFMDAwMDAxRkUwMDAwMDFGRTAwMDAwMUZGMDAKLTAwMDFGRjAwMDgwMUZGMDAzODAwRkY4MUY4MDBGRkZGRkMwMDdGRkZGQzAwN0ZGRkZDMDAzRkZGRjAwMDFGRkY4MDAwMEZGOAotMDAxRTNBN0VCODIzPkk8RkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAKLTFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRgotRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwCi1GRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYKLTAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDNGRTBGRjAwMDAzRkUwRkYwMAotMDA3RkUwRkYwMDAwN0ZFMEZGODAwMEZGRTBGRjgwMDNGRkUwN0ZFMDBGRkZFMDdGRkZGRkZGRTAzRkZGRkZERkUwM0ZGRkZGCi0xRkUwMUZGRkZDMUZFMDA3RkZGMDFGRTAwMUZGMDAwMDAwMjMyRDc5QUIzMj5JPEZGODAwMDFGRTAwMDAxRkU3RjgwMDAxRgotRjAwMDAzRkM3RjgwMDAxRkYwMDAwM0ZDN0Y4MDAwM0ZGMDAwMDNGQzNGQzAwMDNGRjgwMDA3RjgzRkMwMDAzREY4MDAwN0Y4Ci0zRkMwMDA3REY4MDAwN0Y4MUZFMDAwN0RGODAwMDdGMDFGRTAwMDdDRkMwMDBGRjAxRkUwMDA3Q0ZDMDAwRkYwMUZFMDAwRkMKLUZDMDAwRkYwMEZGMDAwRkNGRTAwMUZFMDBGRjAwMEY4RkUwMDFGRTAwRkYwMDFGOEZFMDAxRkUwMDdGODAxRjg3RTAwMUZDMAotMDdGODAxRjg3RjAwM0ZDMDA3RjgwMUYwN0YwMDNGQzAwN0Y4MDNGMDdGMDAzRkMwMDNGQzAzRjAzRjAwM0Y4MDAzRkMwM0YwCi0zRjgwN0Y4MDAzRkMwM0UwM0Y4MDdGODAwMUZDMDdFMDNGODA3RjAwMDFGRTA3RTAxRjgwN0YwMDAxRkUwN0UwMUZDMEZGMDAKLTAxRkUwN0MwMUZDMEZGMDAwMEZFMEZDMDFGQzBGRTAwMDBGRjBGQzAwRkMwRkUwMDAwRkYwRkMwMEZFMUZFMDAwMDdGMEY4MAotMEZFMUZDMDAwMDdGMEY4MDBGRTFGQzAwMDA3RjFGODAwN0UxRkMwMDAwM0Y5RjgwMDdGM0Y4MDAwMDNGOUYwMDA3RjNGODAwCi0wMDNGOUYwMDAzRjNGODAwMDAzRjlGMDAwM0YzRjgwMDAwMUY5RTAwMDNGM0YwMDAwMDFGQkUwMDAzRjNGMDAwMDAxRkJFMDAKLTAxRjNGMDAwMDAwRkJFMDAwMUYzRTAwMDAwMEZGQzAwMDFGRkUwMDAwMDBGRkMwMDAwRkZFMDAwMDAwRkZDMDAwMEZGRTAwMAotMDAwN0Y4MDAwMEZGQzAwMDAwMDdGODAwMDBGRkMwMDAzRjJDN0ZBQjQyPjExOSBEPDdGQzAwMDAwN0ZDMDNGRTAwMDAwRkYKLTgwMUZFMDAwMDBGRjAwMUZGMDAwMDFGRjAwMEZGODAwMDNGRTAwMDdGQzAwMDdGQzAwMDNGRTAwMDdGODAwMDFGRTAwMEZGMAotMDAwMEZGMDAxRkYwMDAwMEZGODAzRkUwMDAwMDdGQzAzRkMwMDAwMDNGRTA3RjgwMDAwMDFGRTBGRjAwMDAwMDBGRjFGRjAwCi0wMDAwMDdGQkZFMDAwMDAwMDdGRkZDMDAwMDAwMDNGRkY4MDAwMDAwMDFGRkYwMDAwMDAwMDBGRkYwMDAwMDAwMDA3RkUwMDAKLTAwMDAwMDdGQzAwMDAwMDAwMDNGODAwMDAwMDAwMDdGQzAwMDAwMDAwMEZGRTAwMDAwMDAwMEZGRjAwMDAwMDAwMUZGRjgwMAotMDAwMDAzRkJGQzAwMDAwMDA3RjlGQzAwMDAwMDBGRjBGRTAwMDAwMDBGRTBGRjAwMDAwMDFGRTA3RjgwMDAwMDNGQzAzRkMwCi0wMDAwN0Y4MDFGRTAwMDAwRkYwMDFGRTAwMDAwRkYwMDBGRjAwMDAxRkUwMDA3RjgwMDAzRkMwMDA3RkMwMDA3RkMwMDAzRkUKLTAwMEZGODAwMDFGRTAwMEZGMDAwMDBGRjAwMUZFMDAwMDBGRjgwM0ZFMDAwMDA3RkMwN0ZDMDAwMDAzRkUwRkY4MDAwMDAxRgotRjAyQzJDODBBQjJEPkk8RkYwMDAwMDBGRkZGMDAwMDAwRkZGRjgwMDAwMEZGN0Y4MDAwMDFGRTdGQzAwMDAxRkUzRkMwMDAKLTAxRkUzRkMwMDAwM0ZDM0ZFMDAwMDNGQzFGRTAwMDA3RjgxRkYwMDAwN0Y4MEZGMDAwMDdGODBGRjAwMDBGRjAwRkY4MDAwRgotRjAwN0Y4MDAwRkYwMDdGQzAwMUZFMDAzRkMwMDFGRTAwM0ZDMDAxRkMwMDFGRTAwM0ZDMDAxRkUwMDNGQzAwMUZFMDAzRjgwCi0wMEZGMDA3RjgwMDBGRjAwN0Y4MDAwN0YwMDdGMDAwMDdGODBGRjAwMDA3RjgwRkUwMDAwM0Y4MEZFMDAwMDNGQzFGRTAwMDAKLTFGQzFGQzAwMDAxRkMxRkMwMDAwMUZFMUY4MDAwMDBGRTNGODAwMDAwRkUzRjgwMDAwMDdFM0YwMDAwMDA3RjNGMDAwMDAwNwotRjNGMDAwMDAwM0Y3RTAwMDAwMDNGN0UwMDAwMDAxRjdDMDAwMDAwMUY3QzAwMDAwMDBGRkMwMDAwMDAwRkY4MDAwMDAwMEZGCi04MDAwMDAwMDdGODAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMDdFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZDMDAKLTAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDAwMDAwM0Y4MDAwMDAwMDNGMDAwMDAwMDA3RjAwMDAwMDAwN0UwMDAwMAotNDAwRkUwMDAwMDc4MUZDMDAwMDA3RkZGQzAwMDAwN0ZGRjgwMDAwMDdGRkYwMDAwMDA3RkZFMDAwMDAwN0ZGQzAwMDAwMDBGCi1GMDAwMDAwMDI4NDA3RUFCMkQ+SSBFCi0lRW5kRFZJUFNCaXRtYXBGb250Ci0lRFZJUFNCaXRtYXBGb250OiBGayBlY3JtMDcwMCA3IDMKLS9GayAzIDUyIGRmPDAwMzgwMDAwNzgwMDAxRjgwMDFGRjgwMEZFRjgwMEUwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMAotMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwCi0wMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAKLTAwRjgwMDAxRkMwMEZGRkZGOEZGRkZGODE1MjY3QkE1MjE+NDkgRDwwMEZGMDAwMDAzRkZFMDAwMEUwM0YwMDAxODAwRjgwMAotMzAwMDdDMDA2MDAwN0UwMDc4MDAzRjAwRkMwMDNGMDBGRTAwMUY4MEZFMDAxRjgwRkUwMDFGODBGRTAwMUY4MDdDMDAxRjgwCi0wMDAwMUY4MDAwMDAxRjAwMDAwMDNGMDAwMDAwM0UwMDAwMDA3RTAwMDAwMDdDMDAwMDAwRjgwMDAwMDFGMDAwMDAwM0UwMDAKLTAwMDNDMDAwMDAwNzgwMDAwMDBFMDAwMDAwMUMwMDAwMDAzODAwMDAwMDcwMDE4MDAwRTAwMTgwMDE4MDAxODAwMzAwMDMwMAotMDYwMDAzMDAwQzAwMDMwMDFGRkZGRjAwM0ZGRkZGMDA3RkZGRkUwMEZGRkZGRTAwRkZGRkZFMDAxOTI2N0RBNTIxPkk8MDAKLUZGMDAwMDAzRkZFMDAwMEYwMUY4MDAxQzAwN0MwMDMwMDA3RTAwM0MwMDNFMDA3RTAwM0YwMDdFMDAzRjAwN0UwMDNGMDA3RQotMDAzRjAwM0MwMDNGMDAwMDAwM0UwMDAwMDA3RTAwMDAwMDdDMDAwMDAwRjgwMDAwMDFGMDAwMDAwN0UwMDAwMUZGODAwMDAxCi1GRjAwMDAwMDAxRTAwMDAwMDBGMDAwMDAwMDdDMDAwMDAwM0UwMDAwMDAzRjAwMDAwMDFGMDAwMDAwMUY4MDAwMDAxRjgwMzgKLTAwMUY4MDdDMDAxRjgwRkUwMDFGODBGRTAwMUY4MEZFMDAxRjAwRkMwMDNGMDA3ODAwM0UwMDcwMDA3QzAwMzgwMEY4MDAxRgotMDFGMDAwMDdGRkMwMDAwMEZGMDAwMDE5Mjc3REE1MjE+SSBFCi0lRW5kRFZJUFNCaXRtYXBGb250Ci0lRFZJUFNCaXRtYXBGb250OiBGbCBlY3R0MTAwMCAxMCA3MQotL0ZsIDcxIDEyMyBkZjwwMDcwMDAwMDFDMDFGODAwMDA3RTAzRjgwMDAwRkUwN0Y4MDAwMUZFMEZGMDAwMDNGQzFGQzAwMDA3Ci1GMDNGODAwMDBGRTAzRjAwMDAwRkMwN0UwMDAwMUY4MDdDMDAwMDFGMDBGQzAwMDAzRjAwRjgwMDAwM0UwMEZGQzAwMDNGRjAKLUZGRTAwMDNGRjhGRkYwMDAzRkZDRkZGODAwM0ZGRUZGRjgwMDNGRkVGRkY4MDAzRkZFN0ZGODAwMUZGRTdGRjgwMDFGRkUzRgotRjAwMDBGRkMxRkUwMDAwN0Y4MDdDMDAwMDFGMDI3MTc3RkIyMkM+MTYgRDwxRjAwMDAwN0MwM0ZDMDAwMEZGMDdGRTAwMDFGCi1GOEZGRjAwMDNGRkNGRkYwMDAzRkZDRkZGODAwM0ZGRUZGRjgwMDNGRkVGRkY4MDAzRkZFN0ZGODAwMUZGRTNGRjgwMDBGRkUKLTFGRjgwMDA3RkUwMEY4MDAwMDNFMDFGODAwMDA3RTAxRjAwMDAwN0MwM0YwMDAwMEZDMDdFMDAwMDFGODBGRTAwMDAzRjgxRgotQzAwMDA3RjA3RjgwMDAxRkUwRkYwMDAwM0ZDMEZFMDAwMDNGODBGQzAwMDAzRjAwNzAwMDAwMUMwMDI3MTc3REIyMkM+STwKLTNDMDAxRTAwN0YwMDdGMDBGRjAwN0Y4MEZGMDA3RjgwRkYwMDdGODBGRjAwN0Y4MEZGMDA3RjgwRkYwMDdGODA3RjAwN0YwMAotN0YwMDdGMDA3RjAwN0YwMDdGMDA3RjAwN0YwMDdGMDA3RjAwN0YwMDdFMDAzRjAwN0UwMDNGMDA3RTAwM0YwMDdFMDAzRjAwCi03RTAwM0YwMDdFMDAzRjAwM0UwMDNFMDAzRTAwM0UwMDNFMDAzRTAwM0MwMDFFMDAxQzAwMUMwMDE5MTk3N0IzMkM+MzQKLUQ8MDAwMDM4MDAwMEZDMDAwMUZDMDAwM0ZDMDAwN0Y4MDAwRkYwMDAxRkMwMDAzRjgwMDA3RjAwMDBGRTAwMDFGQzAwMDNGOAotMDAwM0YwMDAwN0YwMDAwN0UwMDAwRkUwMDAwRkMwMDAxRjgwMDAxRjgwMDAzRjgwMDAzRjAwMDAzRjAwMDA3RjAwMDA3RTAwCi0wMDdFMDAwMDdFMDAwMEZFMDAwMEZDMDAwMEZDMDAwMEZDMDAwMEZDMDAwMEZDMDAwMEZDMDAwMEZDMDAwMEZDMDAwMEZDMDAKLTAwRkMwMDAwRkMwMDAwRkMwMDAwRkUwMDAwN0UwMDAwN0UwMDAwN0UwMDAwN0YwMDAwM0YwMDAwM0YwMDAwM0Y4MDAwMUY4MAotMDAxRjgwMDAwRkMwMDAwRkUwMDAwN0UwMDAwN0YwMDAwM0YwMDAwM0Y4MDAwMUZDMDAwMEZFMDAwMDdGMDAwMDNGODAwMDFGCi1DMDAwMEZGMDAwMDdGODAwMDNGQzAwMDFGQzAwMDBGQzAwMDAzODE2NDI3MkI5MkM+NDAgRDw3MDAwMDBGQzAwMDBGRTAwMDAKLUZGMDAwMDdGODAwMDNGQzAwMDBGRTAwMDA3RjAwMDAzRjgwMDAxRkMwMDAwRkUwMDAwN0YwMDAwM0YwMDAwM0Y4MDAwMUY4MAotMDAxRkMwMDAwRkMwMDAwN0UwMDAwN0UwMDAwN0YwMDAwM0YwMDAwM0YwMDAwM0Y4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUZDCi0wMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMKLTAwMDFGQzAwMDFGODAwMDFGODAwMDFGODAwMDNGODAwMDNGMDAwMDNGMDAwMDdGMDAwMDdFMDAwMDdFMDAwMEZDMDAwMUZDMAotMDAxRjgwMDAzRjgwMDAzRjAwMDA3RjAwMDBGRTAwMDFGQzAwMDNGODAwMDdGMDAwMEZFMDAwM0ZDMDAwN0Y4MDAwRkYwMDAwCi1GRTAwMDBGQzAwMDA3MDAwMDAxNjQyNzlCOTJDPkk8MDAwMzgwMDAwMDA3QzAwMDAwMDdDMDAwMDAwN0MwMDAwMDA3QzAwMAotMDAwN0MwMDAwMDA3QzAwMDIwMDdDMDA4RjgwN0MwM0VGRTA3QzBGRUZGMDdDMUZFRkZDN0M3RkVGRkU3Q0ZGRTNGRkZGRkY4Ci0wRkZGRkZFMDAzRkZGRjgwMDFGRkZGMDAwMDdGRkMwMDAwN0ZGQzAwMDFGRkZGMDAwM0ZGRkY4MDBGRkZGRkUwM0ZGRkZGRjgKLUZGRTdDRkZFRkZDN0M3RkVGRjA3QzFGRUZFMDdDMEZFRjgwN0MwM0UyMDA3QzAwODAwMDdDMDAwMDAwN0MwMDAwMDA3QzAwMAotMDAwN0MwMDAwMDA3QzAwMDAwMDdDMDAwMDAwMzgwMDAxRjI0N0FBQTJDPkk8MEY4MDFGRTAzRkYwN0ZGODdGRjg3RkZDN0YKLUZDN0ZGQzNGRkMxRkZDMEZGQzAwRkMwMEY4MDBGODAxRjgwM0YwMDdGMDFGRTA3RkMwRkY4MEZGMDBGQzAwNzAwMDBFMTc3MQotOEEyQz40NCBEPDdGRkZGRkYwRkZGRkZGRjhGRkZGRkZGOEZGRkZGRkY4N0ZGRkZGRjAxRDA1Nzk5NDJDPkk8MUYwMDNGODAKLTdGQzBGRkUwRkZFMEZGRTBGRkUwRkZFMDdGQzAzRjgwMUYwMDBCMEI3MDhBMkM+STwwMDAwMDAwNzAwMDAwMDAwMEY4MDAwCi0wMDAwMEY4MDAwMDAwMDFGODAwMDAwMDAxRjAwMDAwMDAwM0YwMDAwMDAwMDNFMDAwMDAwMDA3RTAwMDAwMDAwN0MwMDAwMDAKLTAwN0MwMDAwMDAwMEZDMDAwMDAwMDBGODAwMDAwMDAxRjgwMDAwMDAwMUYwMDAwMDAwMDNGMDAwMDAwMDAzRTAwMDAwMDAwNwotRTAwMDAwMDAwN0MwMDAwMDAwMEZDMDAwMDAwMDBGODAwMDAwMDAxRjgwMDAwMDAwMUYwMDAwMDAwMDNGMDAwMDAwMDAzRTAwCi0wMDAwMDAzRTAwMDAwMDAwN0UwMDAwMDAwMDdDMDAwMDAwMDBGQzAwMDAwMDAwRjgwMDAwMDAwMUY4MDAwMDAwMDFGMDAwMDAKLTAwMDNGMDAwMDAwMDAzRTAwMDAwMDAwN0UwMDAwMDAwMDdDMDAwMDAwMDBGQzAwMDAwMDAwRjgwMDAwMDAwMUY4MDAwMDAwMAotMUYwMDAwMDAwMDNGMDAwMDAwMDAzRTAwMDAwMDAwM0UwMDAwMDAwMDdFMDAwMDAwMDA3QzAwMDAwMDAwRkMwMDAwMDAwMEY4Ci0wMDAwMDAwMUY4MDAwMDAwMDFGMDAwMDAwMDAzRjAwMDAwMDAwM0UwMDAwMDAwMDdFMDAwMDAwMDA3QzAwMDAwMDAwRkMwMDAKLTAwMDAwRjgwMDAwMDAwMUY4MDAwMDAwMDFGMDAwMDAwMDAxRjAwMDAwMDAwM0YwMDAwMDAwMDNFMDAwMDAwMDA3RTAwMDAwMAotMDA3QzAwMDAwMDAwRkMwMDAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwNzAwMDAwMDAwMDIxNDE3QkI5MkM+STwwMDAzRjgKLTAwMDAwMDBGRkUwMDAwMDAzRkZGODAwMDAwN0ZGRkMwMDAwMEZGRkZFMDAwMDFGRTBGRjAwMDAzRjgwM0Y4MDAwN0YwMDFGQwotMDAwN0UwMDBGQzAwMEZDMDAwN0UwMDBGQzAwMDdFMDAxRjgwMDAzRjAwMUY4MDAwM0YwMDNGMDAwMDFGODAzRjAwMDAxRjgwCi0zRTAwMDAwRjgwN0UwMDAwMEZDMDdFMDAwMDBGQzA3RTAwMDAwRkMwN0MwMDAwMDdDMEZDMDAwMDA3RTBGQzAwMDAwN0UwRkMKLTAwMDAwN0UwRkMwMDAwMDdFMEZDMDAwMDA3RTBGQzAwMDAwN0UwRkMwMDAwMDdFMEZDMDAwMDA3RTBGQzAwMDAwN0UwRkMwMAotMDAwN0UwRkMwMDAwMDdFMEZDMDAwMDA3RTBGRTAwMDAwRkUwN0UwMDAwMEZDMDdFMDAwMDBGQzA3RTAwMDAwRkMwN0UwMDAwCi0wRkMwM0YwMDAwMUY4MDNGMDAwMDFGODAzRjAwMDAxRjgwMUY4MDAwM0YwMDFGODAwMDNGMDAwRkMwMDA3RTAwMEZFMDAwRkUKLTAwMDdFMDAwRkMwMDA3RjAwMUZDMDAwM0Y4MDNGODAwMDFGRTBGRjAwMDAwRkZGRkUwMDAwMDdGRkZDMDAwMDAzRkZGODAwMAotMDAwRkZFMDAwMDAwMDNGODAwMDAyMzM1N0NCMzJDPkk8MDAwNzAwMDAwMDBGODAwMDAwMEY4MDAwMDAxRjgwMDAwMDFGODAKLTAwMDAzRjgwMDAwMDdGODAwMDAwRkY4MDAwMDFGRjgwMDAwN0ZGODAwMDdGRkY4MDAwRkZGRjgwMDBGRkRGODAwMEZGOUY4MAotMDA3QzFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwCi0wMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAKLTAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MAotMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDA3RkZGRkZFMEZGRkZGRkYwRkZGRkZGCi1GMEZGRkZGRkYwN0ZGRkZGRTAxQzM0NzdCMzJDPkk8MDAwRkY4MDAwMDAwN0ZGRjgwMDAwMUZGRkZFMDAwMDdGRkZGRjAwMAotMEZGRkZGRkMwMDFGRjgwRkZFMDAzRkUwMDFGRjAwM0Y4MDAwN0YwMDdGMDAwMDNGODA3RTAwMDAxRjgwRkUwMDAwMUZDMEZFCi0wMDAwMEZDMEZGMDAwMDBGRTBGRjAwMDAwN0UwRkYwMDAwMDdFMEZGMDAwMDA3RTA3RTAwMDAwN0UwM0MwMDAwMDdFMDAwMDAKLTAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwRkUwMDAwMDAwMEZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDAwMDAwM0Y4MDAwMDAwMAotM0YwMDAwMDAwMDdGMDAwMDAwMDBGRTAwMDAwMDAxRkMwMDAwMDAwM0ZDMDAwMDAwMDdGODAwMDAwMDBGRjAwMDAwMDAxRkUwCi0wMDAwMDAzRkMwMDAwMDAwRkY4MDAwMDAwMUZFMDAwMDAwMDNGQzAwMDAwMDA3RjgwMDAwMDAwRkYwMDAwMDAwM0ZFMDAwMDAKLTAwN0Y4MDAwMDAwMEZGMDAwMDAwMDFGRTAwMDAwMDAzRkMwMDAzQzAwN0Y4MDAwN0UwMUZFMDAwMDdFMDNGQzAwMDA3RTA3RgotRkZGRkZGRTBGRkZGRkZGRkUwRkZGRkZGRkZFMEZGRkZGRkZGRTA3RkZGRkZGRkMwMjMzNDdDQjMyQz5JPDAwMEZGQzAwMDAKLTAwN0ZGRjgwMDAwMUZGRkZFMDAwMDdGRkZGRjgwMDBGRkZGRkZDMDAxRkY4MDdGRTAwMUZDMDAwRkUwMDNGODAwMDdGMDAzRgotQzAwMDNGMDAzRkMwMDAzRjgwM0ZDMDAwMUY4MDNGQzAwMDFGODAxRjgwMDAxRjgwMEYwMDAwMUY4MDAwMDAwMDFGODAwMDAwCi0wMDNGODAwMDAwMDAzRjAwMDAwMDAwN0YwMDAwMDAwMEZFMDAwMDAwMDFGRTAwMDAwMDAzRkMwMDAwMDAxRkY4MDAwMDFGRkYKLUYwMDAwMDNGRkZFMDAwMDAzRkZGRTAwMDAwM0ZGRkY4MDAwMDFGRkZGQzAwMDAwMDA3RkUwMDAwMDAwMEZGMDAwMDAwMDA3RgotMDAwMDAwMDAzRjgwMDAwMDAwMUZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZFMDAwMDAwMDA3RTAwMDAwMDAwN0UwCi0zQzAwMDAwN0UwN0UwMDAwMDdFMEZGMDAwMDA3RTBGRjAwMDAwRkUwRkYwMDAwMEZDMEZGMDAwMDBGQzBGRTAwMDAxRkMwN0YKLTAwMDAzRjgwN0Y4MDAwN0YwMDNGQzAwMEZGMDAxRkY4MDdGRTAwMEZGRkZGRkMwMDA3RkZGRkY4MDAwM0ZGRkZFMDAwMDA3RgotRkY4MDAwMDAwRkZDMDAwMDIzMzU3Q0IzMkM+STwwMDAwMDdGMDAwMDAwMDBGRjgwMDAwMDAxRkY4MDAwMDAwM0ZGODAwMDAKLTAwM0ZGODAwMDAwMDdFRjgwMDAwMDA3RUY4MDAwMDAwRkNGODAwMDAwMUY4RjgwMDAwMDFGOEY4MDAwMDAzRjBGODAwMDAwNwotRTBGODAwMDAwN0UwRjgwMDAwMEZDMEY4MDAwMDFGODBGODAwMDAxRjgwRjgwMDAwM0YwMEY4MDAwMDdFMDBGODAwMDA3RTAwCi1GODAwMDBGQzAwRjgwMDAxRjgwMEY4MDAwMUY4MDBGODAwMDNGMDAwRjgwMDAzRTAwMEY4MDAwN0UwMDBGODAwMEZDMDAwRjgKLTAwMEZDMDAwRjgwMDFGODAwMEY4MDAzRjAwMDBGODAwM0YwMDAwRjgwMDdFMDAwMEY4MDBGQzAwMDBGODAwRkZGRkZGRkZGQwotRkZGRkZGRkZGRUZGRkZGRkZGRkVGRkZGRkZGRkZFN0ZGRkZGRkZGQzAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwCi0wMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAKLTdGRkZGMDAwMDBGRkZGRjgwMDAwRkZGRkY4MDAwMEZGRkZGODAwMDA3RkZGRjAyNzM0N0VCMzJDPkk8MEZGRkZGRkUwMDFGCi1GRkZGRkYwMDFGRkZGRkZGMDAxRkZGRkZGRjAwMUZGRkZGRkUwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAKLTAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMAotMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4M0ZFMDAwMDFGOUZGRjgwMDAxRkZGRkZFMDAwMUZGRkZGRjgwMDFGRkZGRkZDCi0wMDFGRkUwM0ZFMDAxRkYwMDBGRjAwMUZDMDAwN0YwMDFGODAwMDNGODAxRjAwMDAxRjgwMEYwMDAwMUZDMDAwMDAwMDBGQzAKLTAwMDAwMDBGQzAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwM0MwMDAwMDdFMDdFMDAwMDA3RTBGRgotMDAwMDA3RTBGRjAwMDAwRkUwRkYwMDAwMEZDMEZGMDAwMDBGQzBGRTAwMDAxRkMwN0UwMDAwM0Y4MDdGMDAwMDdGMDAzRjgwCi0wMEZGMDAzRkMwMDFGRTAwMUZGODBGRkMwMDBGRkZGRkY4MDAwN0ZGRkZGMDAwMDFGRkZGQzAwMDAwN0ZGRjAwMDAwMDBGRjgKLTAwMDAyMzM0N0NCMjJDPkk8MDAwMDNGQzAwMDAwMDFGRkY4MDAwMDA3RkZGQzAwMDAxRkZGRkUwMDAwM0ZGRkZGMDAwMDdGCi1FMDdGMDAwMEZGMDAzRjgwMDFGRTAwN0Y4MDAzRjgwMDdGODAwN0YwMDA3RjgwMDdFMDAwN0Y4MDBGRTAwMDNGMDAxRkMwMDAKLTFFMDAxRjgwMDAwMDAwM0Y4MDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwN0YwMDAwMDAwMDdFMDAwMDAwMDA3RTAzRkUwMAotMDA3RTFGRkY4MDAwRkM3RkZGRTAwMEZERkZGRkYwMDBGRkZGRkZGODAwRkZGRTA3RkMwMEZGRjAwMUZFMDBGRkMwMDA3RjAwCi1GRjgwMDAzRjgwRkYwMDAwMUY4MEZGMDAwMDFGQzBGRTAwMDAwRkMwRkUwMDAwMEZFMEZFMDAwMDA3RTBGRTAwMDAwN0UwRkUKLTAwMDAwN0UwN0UwMDAwMDdFMDdFMDAwMDA3RTA3RTAwMDAwN0UwN0UwMDAwMDdFMDNGMDAwMDA3RTAzRjAwMDAwRkUwM0Y4MAotMDAwRkMwMUY4MDAwMUZDMDFGQzAwMDFGODAwRkMwMDAzRjgwMEZFMDAwN0YwMDA3RjgwMUZFMDAwM0ZFMDdGQzAwMDFGRkZGCi1GODAwMDBGRkZGRjAwMDAwN0ZGRkUwMDAwMDFGRkY4MDAwMDAwN0ZDMDAwMDIzMzU3Q0IzMkM+STw3ODAwMDAwMDAwRkZGRgotRkZGRkMwRkZGRkZGRkZFMEZGRkZGRkZGRTBGRkZGRkZGRkUwRkZGRkZGRkZDMEZDMDAwMDNGODBGQzAwMDA3RjAwRkMwMDAwCi1GRTAwNzgwMDAwRkMwMDAwMDAwMUZDMDAwMDAwMDNGODAwMDAwMDA3RjAwMDAwMDAwN0UwMDAwMDAwMEZFMDAwMDAwMDBGQzAKLTAwMDAwMDFGODAwMDAwMDAzRjgwMDAwMDAwM0YwMDAwMDAwMDdGMDAwMDAwMDA3RTAwMDAwMDAwRkUwMDAwMDAwMEZDMDAwMAotMDAwMUZDMDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDA3RjAwMDAwMDAwN0UwMDAwMDAwCi0wN0UwMDAwMDAwMDdFMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAxRjgwMDAwMDAwMUYKLTgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwM0Y4MDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMAotMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwCi0wMDAwMUUwMDAwMDAyMzM1N0NCMzJDPkk8MDAwN0ZDMDAwMDAwM0ZGRjAwMDAwMEZGRkZDMDAwMDFGRkZGRTAwMDAzRkZGRgotRjAwMDA3RkMwN0Y4MDAwRkYwMDFGQzAwMUZFMDAwRkUwMDNGODAwMDdFMDAzRjgwMDA3RjAwN0YwMDAwM0YwMDdFMDAwMDFGCi04MEZFMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMEZDMEZDMDAwMDBGQzBGQzAwMDAwRkMwRkMwMDAwMEZDMEZDMDAwMDBGRTAKLUZDMDAwMDBGRTBGQzAwMDAwRkUwRkUwMDAwMEZFMDdFMDAwMDBGRTA3RjAwMDAxRkUwM0YwMDAwMUZFMDNGODAwMDNGRTAxRgotQzAwMDdGRTAwRkYwMDFGRkUwMDdGQzBGRkZFMDAzRkZGRkZGRTAwMUZGRkZGN0UwMDBGRkZGQzdFMDAwM0ZGRjBGRTAwMDBGCi1GODBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDFGQzAwMDAwMDAxRjgwMDAwMDAwM0Y4MDAwMDAwMDNGMDAwRjAwMDAKLTdGMDAxRjgwMDA3RTAwM0ZDMDAwRkUwMDNGQzAwMUZDMDAzRkMwMDNGODAwM0ZDMDA3RjgwMDNGODAxRkYwMDAxRkUwN0ZFMAotMDAxRkZGRkZDMDAwMEZGRkZGMDAwMDA3RkZGRTAwMDAwMUZGRjgwMDAwMDA3RkMwMDAwMDIzMzU3Q0IzMkM+NTcKLUQ8MDAwMEZFMDAwMDAwMDFGRjAwMDAwMDAxRkYwMDAwMDAwMUZGMDAwMDAwMDFGRjAwMDAwMDAzRkY4MDAwMDAwM0ZGODAwMAotMDAwM0VGODAwMDAwMDNFRjgwMDAwMDA3RUY4MDAwMDAwN0VGQzAwMDAwMDdFRkMwMDAwMDA3QzdDMDAwMDAwN0M3QzAwMDAwCi0wRkM3RTAwMDAwMEZDN0UwMDAwMDBGQzdFMDAwMDAwRkMzRTAwMDAwMUY4M0YwMDAwMDFGODNGMDAwMDAxRjgzRjAwMDAwMUYKLTgzRjAwMDAwMUY4M0YwMDAwMDNGMDFGODAwMDAzRjAxRjgwMDAwM0YwMUY4MDAwMDNGMDFGODAwMDA3RTAwRkMwMDAwN0UwMAotRkMwMDAwN0UwMEZDMDAwMDdFMDBGQzAwMDA3RTAwRkMwMDAwRkMwMDdFMDAwMEZGRkZGRTAwMDBGRkZGRkUwMDAwRkZGRkZFCi0wMDAxRkZGRkZGMDAwMUZGRkZGRjAwMDFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDNGMDAwMUY4MDAzRjAwMDFGODAKLTAzRjAwMDFGODAwM0YwMDAxRjgwMDdGMDAwMUZDMDA3RTAwMDBGQzA3RkZFMDBGRkZDN0ZGRjAxRkZGQ0ZGRkYwMUZGRkU3RgotRkYwMUZGRkM3RkZFMDBGRkZDMjczNDdFQjMyQz42NSBEPDdGRkZGRkUwMDA3RkZGRkZGODAwRkZGRkZGRkUwMDdGRkZGRkZGCi0wMDdGRkZGRkZGQzAwM0YwMDAzRkMwMDNGMDAwMEZFMDAzRjAwMDA3RjAwM0YwMDAwM0YwMDNGMDAwMDNGMDAzRjAwMDAxRjgKLTAzRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDNGMDAzRjAwMDAzRjAwMwotRjAwMDA3RjAwM0YwMDAwRkUwMDNGMDAwMUZDMDAzRjAwMEZGODAwM0ZGRkZGRjAwMDNGRkZGRkUwMDAzRkZGRkZDMDAwM0ZGCi1GRkZGMDAwM0ZGRkZGRkMwMDNGMDAwMUZFMDAzRjAwMDA3RjAwM0YwMDAwM0Y4MDNGMDAwMDFGODAzRjAwMDAwRkMwM0YwMDAKLTAwRkMwM0YwMDAwMEZFMDNGMDAwMDA3RTAzRjAwMDAwN0UwM0YwMDAwMDdFMDNGMDAwMDA3RTAzRjAwMDAwN0UwM0YwMDAwMAotN0UwM0YwMDAwMEZFMDNGMDAwMDBGQzAzRjAwMDAxRkMwM0YwMDAwM0Y4MDNGMDAwMEZGODAzRjAwMDNGRjA3RkZGRkZGRkUwCi03RkZGRkZGRkMwRkZGRkZGRkY4MDdGRkZGRkZFMDA3RkZGRkZGMDAwMjczMzdGQjIyQz5JPDAwMDBGRjAwNzAwMDA3RkZFMAotRjgwMDBGRkZGOUY4MDAzRkZGRkRGODAwN0ZGRkZGRjgwMEZGODFGRkY4MDFGRTAwN0ZGODAzRkMwMDFGRjgwN0YwMDAwRkY4Ci0wN0YwMDAwN0Y4MEZFMDAwMDdGODBGQzAwMDAzRjgxRjgwMDAwM0Y4MUY4MDAwMDFGODNGMDAwMDAxRjgzRjAwMDAwMUY4N0YKLTAwMDAwMUY4N0UwMDAwMDBGMDdFMDAwMDAwMDA3RTAwMDAwMDAwRkUwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMAotMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwCi0wMDAwRkMwMDAwMDAwMEZFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RjAwMDAwMEYwM0YwMDAwMDEKLUY4M0YwMDAwMDFGODFGODAwMDAxRjgxRjgwMDAwMUY4MEZDMDAwMDNGODBGRTAwMDAzRjAwN0YwMDAwN0YwMDdGMDAwMDdFMAotMDNGQzAwMUZFMDAxRkUwMDNGQzAwMEZGODFGRjgwMDA3RkZGRkYwMDAwM0ZGRkZFMDAwMDBGRkZGQzAwMDAwN0ZGRjAwMDAwCi0wMEZGODAwMDI1MzU3REIzMkM+STw3RkZGRkYwMDAwRkZGRkZGQzAwMEZGRkZGRkYwMDBGRkZGRkZGODAwN0ZGRkZGRkMwMAotMDdFMDAzRkUwMDA3RTAwMEZGMDAwN0UwMDA3RjgwMDdFMDAwM0Y4MDA3RTAwMDFGQzAwN0UwMDAwRkUwMDdFMDAwMEZFMDA3Ci1FMDAwMDdFMDA3RTAwMDA3RjAwN0UwMDAwM0YwMDdFMDAwMDNGODA3RTAwMDAxRjgwN0UwMDAwMUY4MDdFMDAwMDFGODA3RTAKLTAwMDFGODA3RTAwMDAwRkMwN0UwMDAwMEZDMDdFMDAwMDBGQzA3RTAwMDAwRkMwN0UwMDAwMEZDMDdFMDAwMDBGQzA3RTAwMAotMDBGQzA3RTAwMDAwRkMwN0UwMDAwMEZDMDdFMDAwMDBGQzA3RTAwMDAwRkMwN0UwMDAwMEZDMDdFMDAwMDFGODA3RTAwMDAxCi1GODA3RTAwMDAxRjgwN0UwMDAwM0Y4MDdFMDAwMDNGMDA3RTAwMDAzRjAwN0UwMDAwN0YwMDdFMDAwMDdFMDA3RTAwMDBGRTAKLTA3RTAwMDFGQzAwN0UwMDAzRkMwMDdFMDAwN0Y4MDA3RTAwMEZGMDAwN0UwMDNGRTAwN0ZGRkZGRkMwMEZGRkZGRkY4MDBGRgotRkZGRkYwMDBGRkZGRkZDMDAwN0ZGRkZGMDAwMDI2MzM3RUIyMkM+STw3RkZGRkZGRkYwRkZGRkZGRkZGOEZGRkZGRkZGRjgKLUZGRkZGRkZGRjg3RkZGRkZGRkY4MDNGMDAwMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDFGODAzRjAwMDAxRjgwMwotRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDBGMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwCi0wMUUwMDAwM0YwMDNGMDAwMDNGMDAzRjAwMDAzRjAwM0YwMDAwM0YwMDNGMDAwMDNGRkZGRjAwMDAzRkZGRkYwMDAwM0ZGRkYKLUYwMDAwM0ZGRkZGMDAwMDNGRkZGRjAwMDAzRjAwM0YwMDAwM0YwMDNGMDAwMDNGMDAzRjAwMDAzRjAwM0YwMDAwM0YwMDFFMAotMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwM0MwM0YwMDAwMDdFCi0wM0YwMDAwMDdFMDNGMDAwMDA3RTAzRjAwMDAwN0UwM0YwMDAwMDdFMDNGMDAwMDA3RTAzRjAwMDAwN0UwM0YwMDAwMDdFN0YKLUZGRkZGRkZFRkZGRkZGRkZGRUZGRkZGRkZGRkVGRkZGRkZGRkZFN0ZGRkZGRkZGQzI3MzM3RUIyMkM+STw3RkZGRkZGRkY4Ci1GRkZGRkZGRkZDRkZGRkZGRkZGQ0ZGRkZGRkZGRkM3RkZGRkZGRkZDMDNGMDAwMDBGQzAzRjAwMDAwRkMwM0YwMDAwMEZDMDMKLUYwMDAwMEZDMDNGMDAwMDBGQzAzRjAwMDAwRkMwM0YwMDAwMEZDMDNGMDAwMDA3ODAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMAotMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDBGMDAwMDNGMDAxRjgwMDAzRjAwMUY4MDAwM0YwMDFGODAwMDNGMDAxCi1GODAwMDNGRkZGRjgwMDAzRkZGRkY4MDAwM0ZGRkZGODAwMDNGRkZGRjgwMDAzRkZGRkY4MDAwM0YwMDFGODAwMDNGMDAxRjgKLTAwMDNGMDAxRjgwMDAzRjAwMUY4MDAwM0YwMDBGMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMAotMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzCi1GMDAwMDAwMDAzRjAwMDAwMDA3RkZGRTAwMDAwRkZGRkUwMDAwMEZGRkZGMDAwMDBGRkZGRTAwMDAwN0ZGRkUwMDAwMDI2MzMKLTdFQjIyQz5JPDAwMDFGQzAzODAwMDBGRkY4N0MwMDAxRkZGRUZDMDAwN0ZGRkZGQzAwMEZGRkZGRkMwMDFGRjA3RkZDMDAzCi1GQzAxRkZDMDAzRjgwMEZGQzAwN0YwMDA3RkMwMEZFMDAwM0ZDMDBGQzAwMDFGQzAxRkMwMDAxRkMwMUY4MDAwMUZDMDNGODAKLTAwMEZDMDNGMDAwMDBGQzAzRjAwMDAwRkMwN0UwMDAwMEZDMDdFMDAwMDA3ODA3RTAwMDAwMDAwN0UwMDAwMDAwMEZFMDAwMAotMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwCi0wMEZDMDAwMDAwMDBGQzAwMDNGRkY4RkMwMDA3RkZGQ0ZDMDAwN0ZGRkNGRTAwMDdGRkZDN0UwMDAzRkZGODdFMDAwMDBGQzAKLTdFMDAwMDBGQzA3RTAwMDAwRkMwM0YwMDAwMUZDMDNGMDAwMDFGQzAzRjgwMDAxRkMwMUY4MDAwMUZDMDFGQzAwMDNGQzAwRgotQzAwMDNGQzAwRkUwMDA3RkMwMDdGMDAwN0ZDMDAzRjgwMEZGQzAwM0ZDMDFGRkMwMDFGRjA3RkZDMDAwRkZGRkZGQzAwMDdGCi1GRkVGQzAwMDFGRkZDRkMwMDAwRkZGMDc4MDAwMDFGQzAwMDAyNjM1N0RCMzJDPkk8N0ZGRTAwRkZGQ0ZGRkYwMUZGRkVGRgotRkYwMUZGRkVGRkZGMDFGRkZFN0ZGRTAwRkZGQzA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwCi0wMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAKLTBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RkZGRkZGQzAwN0ZGRkZGRgotQzAwN0ZGRkZGRkMwMDdGRkZGRkZDMDA3RkZGRkZGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwCi0wN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDcKLUUwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMAotMDAwRkMwN0ZGRTAwRkZGQ0ZGRkYwMUZGRkVGRkZGMDFGRkZFRkZGRjAxRkZGRTdGRkUwMEZGRkMyNzMzN0VCMjJDPkk8N0YKLUZGRkZGOEZGRkZGRkZDRkZGRkZGRkNGRkZGRkZGQzdGRkZGRkY4MDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMAotMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwCi0wRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAKLTBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMAotMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwCi0wRkMwMDA3RkZGRkZGOEZGRkZGRkZDRkZGRkZGRkNGRkZGRkZGQzdGRkZGRkY4MUUzMzc5QjIyQz5JPDdGRkMwMDdGRjhGRgotRkUwMEZGRkNGRkZFMDBGRkZDRkZGRTAwRkZGQzdGRkMwMDdGRjgwN0MwMDAxRjgwMDdDMDAwM0Y4MDA3QzAwMDdGMDAwN0MwCi0wMDdFMDAwN0MwMDBGQzAwMDdDMDAxRjgwMDA3QzAwM0Y4MDAwN0MwMDdGMDAwMDdDMDA3RTAwMDA3QzAwRkMwMDAwN0MwMUYKLTgwMDAwN0MwM0Y4MDAwMDdDMDdGMDAwMDA3QzA3RTAwMDAwN0MwRkMwMDAwMDdDMUY4MDAwMDA3QzNGODAwMDAwN0M3RkMwMAotMDAwN0M3RkMwMDAwMDdDRkZFMDAwMDA3REZCRTAwMDAwN0ZGQkYwMDAwMDdGRjFGMDAwMDA3RkUxRjgwMDAwN0ZDMEZDMDAwCi0wN0Y4MEZDMDAwMDdGODA3RTAwMDA3RjAwM0UwMDAwN0UwMDNGMDAwMDdDMDAxRjAwMDA3QzAwMUY4MDAwN0MwMDBGQzAwMDcKLUMwMDBGQzAwMDdDMDAwN0UwMDA3QzAwMDNFMDAwN0MwMDAzRjAwMDdDMDAwMUYwMDA3QzAwMDFGODAwN0MwMDAwRkMwMDdDMAotMDAwRkMwMDdDMDAwMDdFMDdGRkMwMDFGRkNGRkZFMDAzRkZFRkZGRTAwM0ZGRUZGRkUwMDNGRkU3RkZDMDAxRkZDMjczMzdFCi1CMjJDPjc1IEQ8N0ZGRkUwMDAwMEZGRkZGMDAwMDBGRkZGRjAwMDAwRkZGRkYwMDAwMDdGRkZFMDAwMDAwM0YwMDAwMDAwMDMKLUYwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMAotMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwCi0wMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAKLTAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMAotMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMEYwMDNGMDAwMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDFGODAzCi1GMDAwMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDFGODdGRkZGRkZGRjhGRkZGRkZGRkY4RkZGRkZGRkZGOEZGRkYKLUZGRkZGODdGRkZGRkZGRjAyNTMzN0RCMjJDPkk8N0ZFMDAwMEZGQ0ZGRjAwMDFGRkVGRkYwMDAxRkZFRkZGODAwM0ZGRTdGCi1GODAwM0ZGQzBGRjgwMDNGRTAwRkJDMDA3QkUwMEZCQzAwN0JFMDBGQkMwMDdCRTAwRkJDMDA3QkUwMEY5RTAwRjNFMDBGOUUKLTAwRjNFMDBGOUUwMEYzRTAwRjlGMDFGM0UwMEY5RjAxRjNFMDBGOEYwMUUzRTAwRjhGMDFFM0UwMEY4RjgzRTNFMDBGOEY4MwotRTNFMDBGODc4M0MzRTAwRjg3QzdDM0UwMEY4N0M3QzNFMDBGODNDNzgzRTAwRjgzQzc4M0UwMEY4M0VGODNFMDBGODNFRjgzCi1FMDBGODFFRjAzRTAwRjgxRUYwM0UwMEY4MUZGMDNFMDBGODBGRTAzRTAwRjgwRkUwM0UwMEY4MEZFMDNFMDBGODA3QzAzRTAKLTBGODAzODAzRTAwRjgwMDAwM0UwMEY4MDAwMDNFMDBGODAwMDAzRTAwRjgwMDAwM0UwMEY4MDAwMDNFMDBGODAwMDAzRTAwRgotODAwMDAzRTAwRjgwMDAwM0UwMEY4MDAwMDNFMDBGODAwMDAzRTAwRjgwMDAwM0UwMEY4MDAwMDNFMDdGRjAwMDFGRkNGRkY4Ci0wMDNGRkVGRkY4MDAzRkZFRkZGODAwM0ZGRTdGRjAwMDFGRkMyNzMzN0VCMjJDPkk8N0ZGMDAwN0ZGQ0ZGRjgwMEZGRkVGRgotRjgwMEZGRkVGRkZDMDBGRkZFN0ZGQzAwN0ZGQzA3RkUwMDA3QzAwN0RFMDAwN0MwMDdERTAwMDdDMDA3REYwMDA3QzAwN0NGCi0wMDA3QzAwN0NGMDAwN0MwMDdDRjgwMDdDMDA3Qzc4MDA3QzAwN0M3QzAwN0MwMDdDN0MwMDdDMDA3QzNDMDA3QzAwN0MzRTAKLTA3QzAwN0MzRTAwN0MwMDdDMUUwMDdDMDA3QzFGMDA3QzAwN0MxRjAwN0MwMDdDMEYwMDdDMDA3QzBGODA3QzAwN0MwRjgwNwotQzAwN0MwN0MwN0MwMDdDMDdDMDdDMDA3QzA3QzA3QzAwN0MwM0UwN0MwMDdDMDNFMDdDMDA3QzAxRTA3QzAwN0MwMUYwN0MwCi0wN0MwMUYwN0MwMDdDMDBGMDdDMDA3QzAwRjg3QzAwN0MwMEY4N0MwMDdDMDA3ODdDMDA3QzAwN0M3QzAwN0MwMDdDN0MwMDcKLUMwMDNDN0MwMDdDMDAzRTdDMDA3QzAwMUU3QzAwN0MwMDFFN0MwMDdDMDAxRjdDMDA3QzAwMEY3QzAwN0MwMDBGN0MwMDdDMAotMDBGRkMwN0ZGQzAwN0ZDMEZGRkUwMDdGQzBGRkZFMDAzRkMwRkZGRTAwM0ZDMDdGRkMwMDFGODAyNzMzN0VCMjJDPkk8MDAKLTdGRkYwMDAwMDNGRkZGRTAwMDBGRkZGRkY4MDAxRkZGRkZGQzAwM0ZGRkZGRkUwMDNGRTAwM0ZFMDAzRjgwMDBGRTAwN0YwMAotMDA3RjAwN0YwMDAwN0YwMDdFMDAwMDNGMDA3RTAwMDAzRjAwN0UwMDAwM0YwMEZFMDAwMDNGODBGQzAwMDAxRjgwRkMwMDAwCi0xRjgwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUYKLTgwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MAotRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZDCi0wMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODA3RTAwMDAzRjAwN0UwMDAwM0YwMDdFMDAKLTAwM0YwMDdGMDAwMDdGMDA3RjAwMDA3RjAwM0Y4MDAwRkUwMDNGRjAwN0ZFMDAzRkZGRkZGRTAwMUZGRkZGRkMwMDBGRkZGRgotRjgwMDAzRkZGRkUwMDAwMDdGRkYwMDAwMjEzNTdCQjMyQz5JPDdGRkZGRkMwMDBGRkZGRkZGODAwRkZGRkZGRkMwMEZGRkYKLUZGRkYwMDdGRkZGRkZGODAwM0YwMDBGRkMwMDNGMDAwM0ZDMDAzRjAwMDBGRTAwM0YwMDAwN0YwMDNGMDAwMDdGMDAzRjAwMAotMDNGMDAzRjAwMDAzRjgwM0YwMDAwMUY4MDNGMDAwMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDFGODAzRjAwMDAxCi1GODAzRjAwMDAzRjgwM0YwMDAwM0YwMDNGMDAwMDdGMDAzRjAwMDA3RjAwM0YwMDAwRkUwMDNGMDAwM0ZDMDAzRjAwMEZGQzAKLTAzRkZGRkZGODAwM0ZGRkZGRjAwMDNGRkZGRkMwMDAzRkZGRkY4MDAwM0ZGRkZDMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwMwotRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwCi0wMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDA3RkZGODAKLTAwMDBGRkZGQzAwMDAwRkZGRkMwMDAwMEZGRkZDMDAwMDA3RkZGODAwMDAwMjUzMzdFQjIyQz5JPDdGRkZGQzAwMDAwMEZGCi1GRkZGODAwMDAwRkZGRkZGRTAwMDAwRkZGRkZGRjgwMDAwN0ZGRkZGRkMwMDAwMDdFMDA3RkUwMDAwMDdFMDAxRkUwMDAwMDcKLUUwMDA3RjAwMDAwN0UwMDAzRjgwMDAwN0UwMDAxRjgwMDAwN0UwMDAxRjgwMDAwN0UwMDAwRkMwMDAwN0UwMDAwRkMwMDAwNwotRTAwMDBGQzAwMDA3RTAwMDBGQzAwMDA3RTAwMDBGQzAwMDA3RTAwMDBGQzAwMDA3RTAwMDFGODAwMDA3RTAwMDFGODAwMDA3Ci1FMDAwM0Y4MDAwMDdFMDAwN0YwMDAwMDdFMDAxRkUwMDAwMDdFMDA3RkUwMDAwMDdGRkZGRkMwMDAwMDdGRkZGRjgwMDAwMDcKLUZGRkZFMDAwMDAwN0ZGRkZGMDAwMDAwN0ZGRkZGODAwMDAwN0UwMDdGQzAwMDAwN0UwMDFGRTAwMDAwN0UwMDBGRTAwMDAwNwotRTAwMDdGMDAwMDA3RTAwMDNGMDAwMDA3RTAwMDNGMDAwMDA3RTAwMDNGMDAwMDA3RTAwMDNGMDAwMDA3RTAwMDNGMDAwMDA3Ci1FMDAwM0YwMDAwMDdFMDAwM0YwMDAwMDdFMDAwM0YwMDAwMDdFMDAwM0YwRjAwMDdFMDAwM0YxRjgwMDdFMDAwM0YxRjgwMDcKLUUwMDAzRjFGODAwN0UwMDAzRjFGODAwN0UwMDAzRjFGODA3RkZFMDAxRkJGODBGRkZGMDAxRkZGMDBGRkZGMDAwRkZGMDBGRgotRkYwMDBGRkUwMDdGRkUwMDA3RkMwMDAwMDAwMDAxRjAwMDI5MzQ3RUIyMkM+ODIgRDwwMDFGRjgwNzAwMDBGRkZGMEY4MDAxCi1GRkZGQ0Y4MDA3RkZGRkZGODAwRkZGRkZGRjgwMUZGMDFGRkY4MDNGQzAwM0ZGODAzRjgwMDFGRjgwN0YwMDAwRkY4MDdFMDAKLTAwN0Y4MEZFMDAwMDNGODBGQzAwMDAzRjgwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZFMDAwMAotMEYwMDdFMDAwMDAwMDA3RjAwMDAwMDAwN0Y4MDAwMDAwMDNGRTAwMDAwMDAxRkZDMDAwMDAwMUZGRkMwMDAwMDBGRkZGQzAwCi0wMDAzRkZGRkMwMDAwMUZGRkZGMDAwMDA3RkZGRjgwMDAwMDdGRkZDMDAwMDAwN0ZGRTAwMDAwMDA3RkYwMDAwMDAwMEZGODAKLTAwMDAwMDNGODAwMDAwMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDBGRTAwMDAwMDAwRkUwNzgwMDAwMDdFMEZDMDAwMDA3RTBGQwotMDAwMDA3RTBGQzAwMDAwN0UwRkMwMDAwMDdFMEZDMDAwMDA3RTBGRTAwMDAwRkMwRkUwMDAwMEZDMEZGMDAwMDFGODBGRjgwCi0wMDNGODBGRkUwMDA3RjAwRkZGRTAxRkYwMEZGRkZGRkZFMDBGRkZGRkZGQzAwRjlGRkZGRjAwMEY4M0ZGRkMwMDA3MDA3RkYKLTAwMDAyMzM1N0NCMzJDPkk8N0ZGRkZGRkZGQ0ZGRkZGRkZGRkVGRkZGRkZGRkZFRkZGRkZGRkZGRUZGRkZGRkZGRkVGQzAwCi03RTAwN0VGQzAwN0UwMDdFRkMwMDdFMDA3RUZDMDA3RTAwN0VGQzAwN0UwMDdFRkMwMDdFMDA3RUZDMDA3RTAwN0U3ODAwN0UKLTAwM0MwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMAotMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwCi0wMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAKLTAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMAotN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwM0ZGRkZDMDAwMDNGRkZGQzAwMDA3RkZGCi1GRTAwMDAzRkZGRkMwMDAwM0ZGRkZDMDAyNzMzN0VCMjJDPkk8N0ZGRjgwM0ZGRkMwRkZGRkMwN0ZGRkUwRkZGRkMwN0ZGRgotRTBGRkZGQzA3RkZGRTA3RkZGODAzRkZGQzAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4Ci0wMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgKLTAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGOAotMDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4Ci0wMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgKLTAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGODAwMDNGOAotMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUZDMDAwN0YwMDAwMEZDMDAwN0UwMDAwMEZFMDAwRkUwMDAwMDdGMDAxRkMwCi0wMDAwM0Y4MDNGODAwMDAwM0ZFMEZGODAwMDAwMUZGRkZGMDAwMDAwMEZGRkZFMDAwMDAwMDNGRkY4MDAwMDAwMDFGRkYwMDAKLTAwMDAwMDNGODAwMDAwMkIzNDgwQjIyQz5JPDdGRkMwMDdGRkNGRkZFMDBGRkZFRkZGRTAwRkZGRUZGRkUwMEZGRkU3RkZDCi0wMDdGRkMwRkMwMDAwN0UwMEZFMDAwMEZFMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RjAwMDFGQzAwM0YwMDAKLTFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjgwMDNGODAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRjgwMDNGMDAwMUZDMDA3RgotMDAwMEZDMDA3RTAwMDBGQzAwN0UwMDAwRkMwMDdFMDAwMEZDMDA3RTAwMDA3RTAwRkMwMDAwN0UwMEZDMDAwMDdFMDBGQzAwCi0wMDdFMDBGQzAwMDAzRjAxRjgwMDAwM0YwMUY4MDAwMDNGMDFGODAwMDAzRjAxRjgwMDAwMUY4M0YwMDAwMDFGODNGMDAwMDAKLTFGODNGMDAwMDAxRjgzRjAwMDAwMEY4M0UwMDAwMDBGQzdFMDAwMDAwRkM3RTAwMDAwMEZDN0UwMDAwMDA3QzdDMDAwMDAwNwotQzdDMDAwMDAwN0VGQzAwMDAwMDdFRkMwMDAwMDAzRUY4MDAwMDAwM0VGODAwMDAwMDNGRjgwMDAwMDAzRkY4MDAwMDAwMUZGCi0wMDAwMDAwMUZGMDAwMDAwMDFGRjAwMDAwMDAxRkYwMDAwMDAwMEZFMDAwMDI3MzQ3RUIyMkM+STw3RkYwMDAwN0ZGMDBGRgotRjgwMDBGRkY4MEZGRjgwMDBGRkY4MEZGRjgwMDBGRkY4MDdGRjAwMDA3RkYwMDFGMDAwMDAwN0MwMDFGMDAwMDAwN0MwMDFGCi0wMDAwMDA3QzAwMUYwMDAwMDA3QzAwMEY4MDAwMDBGODAwMEY4MDAwMDBGODAwMEY4MDAwMDBGODAwMEY4MDAwMDBGODAwMEYKLTgwMDAwMEY4MDAwRjgwMDAwMEY4MDAwRjgwMDAwMEY4MDAwN0MwMDAwMUYwMDAwN0MwMDAwMUYwMDAwN0MwMDAwMUYwMDAwNwotQzAwMDAxRjAwMDA3QzAzRTAxRjAwMDA3QzA3RjAxRjAwMDA3QzA3RjAxRjAwMDA3QzA3RjAxRjAwMDAzRTBGRjgzRTAwMDAzCi1FMEZGODNFMDAwMDNFMEY3ODNFMDAwMDNFMEY3ODNFMDAwMDNFMUY3QzNFMDAwMDNFMUY3QzNFMDAwMDNFMUY3QzNFMDAwMDEKLUUxRTNDM0MwMDAwMUUxRTNDM0MwMDAwMUYxRTNDN0MwMDAwMUYzRTNFN0MwMDAwMUYzRTNFN0MwMDAwMUYzRTNFN0MwMDAwMQotRjNDMUU3QzAwMDAxRjNDMUU3QzAwMDAwRjNDMUU3ODAwMDAwRjNDMUU3ODAwMDAwRjdDMUY3ODAwMDAwRjc4MEY3ODAwMDAwCi1GNzgwRjc4MDAwMDBGNzgwRjc4MDAwMDBGRjgwRkY4MDAwMDA3RjgwRkYwMDAwMDA3RjAwN0YwMDAwMDA3RjAwN0YwMDAwMDAKLTdGMDA3RjAwMDAwMDdGMDA3RjAwMDAwMDNFMDAzRTAwMDAyOTM0N0ZCMjJDPkk8M0ZGRjAzRkZFMDdGRkYwN0ZGRjA3RkZGCi04N0ZGRjA3RkZGMDdGRkYwM0ZGRjAzRkZFMDAxRjgwMEZFMDAwMUZDMDBGRTAwMDBGQzAxRkMwMDAwRkUwMUZDMDAwMDdFMDEKLUY4MDAwMDdGMDNGODAwMDAzRjAzRjAwMDAwM0Y4N0YwMDAwMDFGODdFMDAwMDAxRkNGRTAwMDAwMEZDRkMwMDAwMDBGRkZDMAotMDAwMDA3RkY4MDAwMDAwN0ZGODAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAwRkMwMDAwCi0wMDAwRkMwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDdGRjgwMDAwMDA3RkZDMDAwMDAKLTBGQ0ZDMDAwMDAwRkNGRTAwMDAwMUZDN0UwMDAwMDFGODdGMDAwMDAzRjgzRjAwMDAwM0YwM0Y4MDAwMDdGMDFGODAwMDA3RQotMDFGQzAwMDBGRTAwRkMwMDAwRkMwMEZFMDAwMUZDMDA3RTAwMDFGODAwN0YwMDAzRjgwMDNGMDAwM0YwMDAzRjgwMDNGMDAwCi0xRjgwN0ZGRTAwRkZGQzdGRkYwMUZGRkNGRkZGMDFGRkZFN0ZGRjAxRkZGQzdGRkUwMEZGRkMyNzMzN0VCMjJDPkk8N0ZGQwotMDA3RkZDRkZGRTAwRkZGRUZGRkUwMEZGRkVGRkZFMDBGRkZFN0ZGQzAwN0ZGQzA3RjAwMDBGQzAwN0YwMDAxRkMwMDNGMDAwCi0xRjgwMDNGODAwM0Y4MDAxRjgwMDNGODAwMUZDMDA3RjAwMDBGQzAwN0YwMDAwRkUwMDdFMDAwMDdFMDBGRTAwMDA3RjAwRkMKLTAwMDAzRjAxRkMwMDAwM0Y4MUY4MDAwMDFGODFGODAwMDAxRjgzRjAwMDAwMEZDM0YwMDAwMDBGQzdGMDAwMDAwN0U3RTAwMAotMDAwN0U3RTAwMDAwMDNFN0MwMDAwMDAzRUZDMDAwMDAwMUZGODAwMDAwMDFGRjgwMDAwMDAxRkYwMDAwMDAwMEZGMDAwMDAwCi0wMEZFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDAKLTdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RQotMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwN0ZGRTAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMDdGRkUwCi0wMDI3MzM3RUIyMkM+STwzRkZGRkZGRkMwN0ZGRkZGRkZFMDdGRkZGRkZGRTA3RkZGRkZGRkUwN0ZGRkZGRkZFMDdFMDAwMAotMUZDMDdFMDAwMDNGODA3RTAwMDAzRjgwN0UwMDAwN0YwMDdFMDAwMDdFMDA3RTAwMDBGRTAwN0UwMDAxRkMwMDNDMDAwMUY4Ci0wMDAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwRkUwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAzRjgwMDAKLTAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMEZFMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMAotMDdGMDAwMDAwMDBGRTAwMDAwMDAxRkMwMDAwMDAwMUZDMDAwMDAwMDNGODAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMEZFCi0wMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAzRjgwMDAzQzAwM0YwMDAwN0UwMDdGMDAwMDdFMDBGRTAwMDA3RTAwRkMwMDAKLTA3RTAxRkMwMDAwN0UwM0Y4MDAwMDdFMDNGODAwMDA3RTA3RjAwMDAwN0UwRkZGRkZGRkZFMEZGRkZGRkZGRTBGRkZGRkZGRgotRTBGRkZGRkZGRkUwN0ZGRkZGRkZDMDIzMzM3Q0IyMkM+STw3MDAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGQzAwMDAKLTAwMDA3QzAwMDAwMDAwN0UwMDAwMDAwMDNFMDAwMDAwMDAzRjAwMDAwMDAwMUYwMDAwMDAwMDFGMDAwMDAwMDAxRjgwMDAwMAotMDAwRjgwMDAwMDAwMEZDMDAwMDAwMDA3QzAwMDAwMDAwN0UwMDAwMDAwMDNFMDAwMDAwMDAzRjAwMDAwMDAwMUYwMDAwMDAwCi0wMUY4MDAwMDAwMDBGODAwMDAwMDAwRkMwMDAwMDAwMDdDMDAwMDAwMDA3RTAwMDAwMDAwM0UwMDAwMDAwMDNFMDAwMDAwMDAKLTNGMDAwMDAwMDAxRjAwMDAwMDAwMUY4MDAwMDAwMDBGODAwMDAwMDAwRkMwMDAwMDAwMDdDMDAwMDAwMDA3RTAwMDAwMDAwMwotRTAwMDAwMDAwM0YwMDAwMDAwMDFGMDAwMDAwMDAxRjgwMDAwMDAwMEY4MDAwMDAwMDBGQzAwMDAwMDAwN0MwMDAwMDAwMDdFCi0wMDAwMDAwMDNFMDAwMDAwMDAzRTAwMDAwMDAwM0YwMDAwMDAwMDFGMDAwMDAwMDAxRjgwMDAwMDAwMEY4MDAwMDAwMDBGQzAKLTAwMDAwMDA3QzAwMDAwMDAwN0UwMDAwMDAwMDNFMDAwMDAwMDAzRjAwMDAwMDAwMUYwMDAwMDAwMDFGODAwMDAwMDAwRjgwMAotMDAwMDAwRkMwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0UwMDAwMDAwMDNFMDAwMDAwMDAzRjAwMDAwMDAwMUYwMDAwCi0wMDAwMUY4MDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMDcwMDIxNDE3QkI5MkM+OTIgRDw3RkZGRkZGRjAwRkZGRkZGRkYKLTgwRkZGRkZGRkY4MEZGRkZGRkZGODBGRkZGRkZGRjgwN0ZGRkZGRkYwMDIxMDY3QjdEMkM+OTUKLUQ8MDFGRkYwMDAwMDA3RkZGRTAwMDAxRkZGRkY4MDAwMUZGRkZGRTAwMDNGRkZGRkYwMDAzRkMwMUZGODAwM0ZDMDA3RjgwMAotM0ZDMDAxRkMwMDFGODAwMEZDMDAwNjAwMDBGRTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMEZGRkUwMDAwCi0xRkZGRkUwMDAwRkZGRkZFMDAwM0ZGRkZGRTAwMEZGRkZGRkUwMDFGRkY4MDdFMDAzRkY4MDA3RTAwN0ZDMDAwN0UwMDdGMDAKLTAwN0UwMEZFMDAwMDdFMDBGQzAwMDA3RTAwRkMwMDAwN0UwMEZDMDAwMDdFMDBGQzAwMDA3RTAwRkUwMDAwN0UwMDdGMDAwMAotRkUwMDdGODAwM0ZFMDAzRkUwMUZGRTAwMUZGRkZGRkZGQzBGRkZGRkZGRkUwN0ZGRkZCRkZFMDFGRkZFMUZGRTAwM0ZGMDA3Ci1GQzI3MjQ3Q0EzMkM+OTcgRDw3RkYwMDAwMDAwRkZGODAwMDAwMEZGRjgwMDAwMDBGRkY4MDAwMDAwN0ZGODAwMDAwMDAxRjgKLTAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMAotMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODFGRTAwMDAxRjhGRkY4MDAwMUZCRkZGRTAwMDFGRkZGRkYwMDAxRkZGRkZGCi04MDAxRkZGMDdGQzAwMUZGODAxRkUwMDFGRjAwMDdGMDAxRkUwMDAzRjgwMUZDMDAwM0Y4MDFGQzAwMDFGQzAxRjgwMDAwRkMKLTAxRjgwMDAwRkMwMUY4MDAwMEZFMDFGODAwMDA3RTAxRjgwMDAwN0UwMUY4MDAwMDdFMDFGODAwMDA3RTAxRjgwMDAwN0UwMQotRjgwMDAwN0UwMUY4MDAwMDdFMDFGODAwMDA3RTAxRjgwMDAwRkUwMUZDMDAwMEZDMDFGQzAwMDBGQzAxRkMwMDAxRjgwMUZFCi0wMDAzRjgwMUZGMDAwN0YwMDFGRjAwMEZGMDAxRkY4MDFGRTAwMUZGRTA3RkMwMDFGRkZGRkY4MDAxRkZGRkZGMDAwMUZCRkYKLUZFMDAwMUY4RkZGODAwMDBGMDNGQzAwMDI3MzM3RkIyMkM+STwwMDAzRkZFMDAwMDAxRkZGRjgwMDAwN0ZGRkZFMDAwMUZGCi1GRkZFMDAwM0ZGRkZGRjAwMDdGRTAwRkYwMDBGRjAwMEZGMDAxRkUwMDBGRjAwMUZDMDAwN0UwMDNGODAwMDE4MDAzRjAwMDAKLTAwMDA3RjAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMAotMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RjAwMDAwMDAwCi0zRjAwMDAwRjAwM0Y4MDAwMUY4MDFGQzAwMDFGODAxRkUwMDAzRjgwMEZGMDAwN0YwMDA3RkUwM0ZGMDAwM0ZGRkZGRTAwMDEKLUZGRkZGQzAwMDA3RkZGRjgwMDAwMUZGRkUwMDAwMDAzRkYwMDAwMjEyNDdBQTMyQz5JPDAwMDAwRkZFMDAwMDAwMUZGRjAwCi0wMDAwMUZGRjAwMDAwMDFGRkYwMDAwMDAwRkZGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAKLTAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDA3RjgzRjAwMDAzRgotRkUzRjAwMDBGRkZGQkYwMDAxRkZGRkZGMDAwM0ZGRkZGRjAwMDdGQzBGRkYwMDBGRjAwM0ZGMDAxRkUwMDFGRjAwMUZDMDAwCi1GRjAwM0Y4MDAwN0YwMDNGMDAwMDdGMDA3RTAwMDAzRjAwN0UwMDAwM0YwMEZFMDAwMDNGMDBGQzAwMDAzRjAwRkMwMDAwM0YKLTAwRkMwMDAwM0YwMEZDMDAwMDNGMDBGQzAwMDAzRjAwRkMwMDAwM0YwMEZDMDAwMDNGMDBGQzAwMDAzRjAwRkUwMDAwM0YwMAotN0UwMDAwN0YwMDdFMDAwMDdGMDA3RjAwMDBGRjAwM0Y4MDAwRkYwMDNGODAwMUZGMDAxRkMwMDNGRjAwMEZGMDA3RkYwMDA3Ci1GQzFGRkYwMDAzRkZGRkZGRkMwMUZGRkZCRkZFMDBGRkZGM0ZGRTAwM0ZGQzNGRkUwMDBGRjAxRkZDMjczMzdEQjIyQz5JPAotMDAwM0ZFMDAwMDAwMUZGRkMwMDAwMDdGRkZGMDAwMDFGRkZGRjgwMDAzRkZGRkZDMDAwN0ZFMDNGRTAwMEZGODAwRkYwMDFGCi1FMDAwM0Y4MDFGQzAwMDNGODAzRjgwMDAxRkMwM0YwMDAwMEZDMDdGMDAwMDBGQzA3RTAwMDAwRkUwN0UwMDAwMDdFMEZDMDAKLTAwMDdFMEZGRkZGRkZGRTBGRkZGRkZGRkUwRkZGRkZGRkZFMEZGRkZGRkZGRTBGRkZGRkZGRkMwRkMwMDAwMDAwMEZFMDAwMAotMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0YwMDAwMDAwMDNGMDAwMDAzQzAzRjgwMDAwN0UwMUZDMDAwMDdFMDBGRjAwMDBGCi1FMDA3RjgwMDNGQzAwN0ZGMDBGRkMwMDFGRkZGRkY4MDAwRkZGRkZGMDAwMDNGRkZGQzAwMDAwRkZGRjAwMDAwMDFGRjgwMDAKLTIzMjQ3Q0EzMkM+STwwMDAwMEZGODAwMDAwMDNGRkUwMDAwMDBGRkZGMDAwMDAxRkZGRjgwMDAwM0ZGRkY4MDAwMDdGQzdGCi04MDAwMDdGMDdGODAwMDBGRTAzRjAwMDAwRkMwM0YwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAKLTAwMEZDMDAwMDAwMDBGQzAwMDAwN0ZGRkZGRkUwMEZGRkZGRkZGMDBGRkZGRkZGRjAwRkZGRkZGRkYwMDdGRkZGRkZFMDAwMAotMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGCi1DMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAKLTAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMAotMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwM0ZGRkZGRjAwMDdGRkZGRkY4MDA3RkZGRkZGODAwCi03RkZGRkZGODAwM0ZGRkZGRjAwMDIxMzM3REIyMkM+STwwMDAwMDAwM0Y4MDAwN0Y4MEZGQzAwMUZGRTNGRkUwMDdGRkZGRgotRkYwMUZGRkZGRkZGMDNGRkZGRkU3RjAzRkMwRkY4N0YwN0YwMDNGODNFMEZFMDAxRkMxQzBGQzAwMEZDMDAxRkMwMDBGRTAwCi0xRjgwMDA3RTAwMUY4MDAwN0UwMDFGODAwMDdFMDAxRjgwMDA3RTAwMUY4MDAwN0UwMDFGODAwMDdFMDAxRkMwMDBGRTAwMEYKLUMwMDBGQzAwMEZFMDAxRkMwMDA3RjAwM0Y4MDAwM0ZDMEZGMDAwMDdGRkZGRjAwMDA3RkZGRkUwMDAwRkZGRkY4MDAwMEY5RgotRkUwMDAwMEY4N0Y4MDAwMDBGODAwMDAwMDAwRjgwMDAwMDAwMEY4MDAwMDAwMDBGQzAwMDAwMDAwN0UwMDAwMDAwMDdGRkZGCi1GMDAwMDNGRkZGRkUwMDA3RkZGRkZGODAwRkZGRkZGRkUwMUZGRkZGRkZGMDNGQzAwMDFGRjg3RjAwMDAwM0ZDN0UwMDAwMDAKLUZDN0MwMDAwMDA3Q0ZDMDAwMDAwN0VGODAwMDAwMDNFRjgwMDAwMDAzRUY4MDAwMDAwM0VGODAwMDAwMDNFRkMwMDAwMDA3RQotN0UwMDAwMDBGQzdGODAwMDAzRkMzRkUwMDAwRkY4MUZGQzAwN0ZGMDBGRkZGRkZGRTAwM0ZGRkZGRjgwMDFGRkZGRkYwMDAwCi0zRkZGRjgwMDAwMDdGRkMwMDAyODM4N0VBNDJDPkk8N0ZGMDAwMDAwMDAwRkZGODAwMDAwMDAwRkZGODAwMDAwMDAwRkZGOAotMDAwMDAwMDA3RkY4MDAwMDAwMDAwMUY4MDAwMDAwMDAwMUY4MDAwMDAwMDAwMUY4MDAwMDAwMDAwMUY4MDAwMDAwMDAwMUY4Ci0wMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgKLTFGRTAwMDAwMDFGODdGRkMwMDAwMDFGOUZGRkUwMDAwMDFGQkZGRkYwMDAwMDFGRkZGRkYwMDAwMDFGRkYwM0Y4MDAwMDFGRgotQzAxRjgwMDAwMUZGODAxRkMwMDAwMUZGMDAwRkMwMDAwMUZFMDAwRkMwMDAwMUZDMDAwRkMwMDAwMUZDMDAwRkMwMDAwMUY4Ci0wMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgKLTAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGOAotMDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4Ci0wMDBGQzAwMDdGRkZFMEZGRkYwMEZGRkZGMUZGRkY4MEZGRkZGMUZGRkY4MEZGRkZGMUZGRkY4MDdGRkZFMEZGRkYwMDI5MzMKLTdGQjIyQz5JPDAwMDcwMDAwMDAxRkMwMDAwMDFGQzAwMDAwM0ZFMDAwMDAzRkUwMDAwMDNGRTAwMDAwMUZDMDAwMDAxRkMwCi0wMDAwMDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkZGQzAKLTAwN0ZGRkUwMDBGRkZGRTAwMDdGRkZFMDAwN0ZGRkUwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMAotMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwCi0wMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAKLTAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwN0ZGRkZGRkNGRkZGRkZGRUZGRkZGRkZFRkZGRkZGRkU3RkZGRkZGQzFGMzQ3OQotQjMyQz5JPDAwMDAwRTAwMDAwMDNGODAwMDAwM0Y4MDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDAzRjgwMDAwMDNGODAKLTAwMDAwRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUZGRkY4MAotMDNGRkZGQzAwM0ZGRkZDMDAzRkZGRkMwMDFGRkZGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwCi0wMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAKLTAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMAotMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwCi0wMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMUZDMDNDMDAxRjgwN0UwMDNGODAKLUZGMDAzRjAwRkYwMDdGMDBGRjAxRkUwMEZGRkZGQzAwN0ZGRkY4MDA3RkZGRjAwMDFGRkZFMDAwMDdGRjAwMDAxQTQ2N0NCMwotMkM+STw3RkUwMDAwMDAwRkZGMDAwMDAwMEZGRjAwMDAwMDBGRkYwMDAwMDAwN0ZGMDAwMDAwMDAxRjAwMDAwMDAwMUYwMDAKLTAwMDAwMUYwMDAwMDAwMDFGMDAwMDAwMDAxRjAwMDAwMDAwMUYwMDAwMDAwMDFGMDAwMDAwMDAxRjAwMDAwMDAwMUYwMDAwMAotMDAwMUYwMDAwMDAwMDFGMDFGRkZGMDAxRjAzRkZGRjgwMUYwM0ZGRkY4MDFGMDNGRkZGODAxRjAxRkZGRjAwMUYwMDBGRTAwCi0wMUYwMDFGQzAwMDFGMDAzRjgwMDAxRjAwN0YwMDAwMUYwMEZFMDAwMDFGMDFGQzAwMDAxRjAzRjgwMDAwMUYwN0YwMDAwMDEKLUYwRkUwMDAwMDFGMUZDMDAwMDAxRjNGQzAwMDAwMUY3RkUwMDAwMDFGRkZGMDAwMDAxRkZGRjAwMDAwMUZGOUY4MDAwMDFGRgotMEZDMDAwMDFGRTBGRTAwMDAxRkMwN0UwMDAwMUY4MDNGMDAwMDFGMDAxRjgwMDAxRjAwMUZDMDAwMUYwMDBGQzAwMDFGMDAwCi03RTAwMDFGMDAwM0YwMDAxRjAwMDNGODAwMUYwMDAxRjgwN0ZGRkMwRkZGQ0ZGRkZFMUZGRkVGRkZGRTFGRkZFRkZGRkUxRkYKLUZFN0ZGRkMwRkZGQzI3MzM3RUIyMkM+STw3RkZGRTAwMDAwRkZGRkYwMDAwMEZGRkZGMDAwMDBGRkZGRjAwMDAwN0ZGRkYwCi0wMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAKLTAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMAotMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwCi0wM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDMKLUYwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMAotMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwN0ZGRkZGRkY4MEZGRkZGRkZGCi1DMEZGRkZGRkZGQzBGRkZGRkZGRkMwN0ZGRkZGRkY4MDIyMzM3QkIyMkM+STw3RjgzRjAwN0UwMDA3RkNGRkMxRkY4MDBGRgotREZGRTNGRkMwMDdGRkZGRUZGRkMwMDdGRkZGRkZGRkUwMDA3RkUxRkZDM0UwMDA3RkMxRkY4M0YwMDA3RjgwRkYwMUYwMDA3Ci1GMDBGRTAxRjAwMDdFMDBGQzAxRjAwMDdFMDBGQzAxRjAwMDdFMDBGQzAxRjAwMDdDMDBGODAxRjAwMDdDMDBGODAxRjAwMDcKLUMwMEY4MDFGMDAwN0MwMEY4MDFGMDAwN0MwMEY4MDFGMDAwN0MwMEY4MDFGMDAwN0MwMEY4MDFGMDAwN0MwMEY4MDFGMDAwNwotQzAwRjgwMUYwMDA3QzAwRjgwMUYwMDA3QzAwRjgwMUYwMDA3QzAwRjgwMUYwMDA3QzAwRjgwMUYwMDA3QzAwRjgwMUYwMDA3Ci1DMDBGODAxRjAwMDdDMDBGODAxRjAwMDdDMDBGODAxRjAwMDdDMDBGODAxRjAwMDdDMDBGODAxRjAwN0ZGQzNGRjg3RkYwN0YKLUZDN0ZGOEZGRjBGRkZFN0ZGQ0ZGRjg3RkZDN0ZGOEZGRjA3RkZDM0ZGODdGRjAyRDI0ODFBMzJDPkk8N0ZGMDFGRTAwMDAwCi1GRkY4N0ZGQzAwMDBGRkY5RkZGRTAwMDBGRkZCRkZGRjAwMDA3RkZGRkZGRjAwMDAwMUZGRjAzRjgwMDAwMUZGQzAxRjgwMDAKLTAxRkY4MDFGQzAwMDAxRkYwMDBGQzAwMDAxRkUwMDBGQzAwMDAxRkMwMDBGQzAwMDAxRkMwMDBGQzAwMDAxRjgwMDBGQzAwMAotMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwCi0wMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAKLTAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMAotN0ZGRkUwRkZGRjAwRkZGRkYxRkZGRjgwRkZGRkYxRkZGRjgwRkZGRkYxRkZGRjgwN0ZGRkUwRkZGRjAwMjkyNDdGQTMyQz4KLUk8MDAwN0ZDMDAwMDAwMUZGRjAwMDAwMDdGRkZDMDAwMDFGRkZGRjAwMDAzRkZGRkY4MDAwN0ZDMDdGQzAwMEZGMDAxRkUwMAotMUZFMDAwRkYwMDFGODAwMDNGMDAzRjgwMDAzRjgwM0YwMDAwMUY4MDdFMDAwMDBGQzA3RTAwMDAwRkMwN0UwMDAwMEZDMEZDCi0wMDAwMDdFMEZDMDAwMDA3RTBGQzAwMDAwN0UwRkMwMDAwMDdFMEZDMDAwMDA3RTBGQzAwMDAwN0UwRkMwMDAwMDdFMEZFMDAKLTAwMEZFMDdFMDAwMDBGQzA3RTAwMDAwRkMwN0YwMDAwMUZDMDNGMDAwMDFGODAzRjgwMDAzRjgwMUZDMDAwN0YwMDFGRTAwMAotRkYwMDBGRjAwMUZFMDAwN0ZDMDdGQzAwMDNGRkZGRjgwMDAxRkZGRkYwMDAwMDdGRkZDMDAwMDAxRkZGMDAwMDAwMDdGQzAwCi0wMDIzMjQ3Q0EzMkM+STw3RkYwMUZFMDAwRkZGOEZGRjgwMEZGRkJGRkZFMDBGRkZGRkZGRjAwN0ZGRkZGRkY4MDAxRkZGMAotN0ZDMDAxRkY4MDFGRTAwMUZGMDAwN0YwMDFGRTAwMDNGODAxRkMwMDAzRjgwMUZDMDAwMUZDMDFGODAwMDBGQzAxRjgwMDAwCi1GQzAxRjgwMDAwRkUwMUY4MDAwMDdFMDFGODAwMDA3RTAxRjgwMDAwN0UwMUY4MDAwMDdFMDFGODAwMDA3RTAxRjgwMDAwN0UKLTAxRjgwMDAwN0UwMUY4MDAwMDdFMDFGODAwMDBGRTAxRkMwMDAwRkMwMUZDMDAwMEZDMDFGQzAwMDFGODAxRkUwMDAzRjgwMQotRkYwMDA3RjAwMUZGMDAwRkYwMDFGRjgwMUZFMDAxRkZFMDdGQzAwMUZGRkZGRjgwMDFGRkZGRkYwMDAxRkJGRkZFMDAwMUY4Ci1GRkY4MDAwMUY4M0ZDMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAKLTAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAxRjgwMDAwMDAwMUY4MDAwMAotMDA3RkZGRTAwMDAwRkZGRkYwMDAwMEZGRkZGMDAwMDBGRkZGRjAwMDAwN0ZGRkUwMDAwMDI3MzY3RkEzMkM+STwwMDAzRkMKLTA3ODAwMDAwMUZGRjBGQzAwMDAwN0ZGRkNGQzAwMDAxRkZGRkVGQzAwMDAzRkZGRkZGQzAwMDA3RkUwN0ZGQzAwMDBGRjAwMQotRkZDMDAwMUZFMDAwRkZDMDAwMUZDMDAwN0ZDMDAwM0Y4MDAwM0ZDMDAwM0YwMDAwM0ZDMDAwN0YwMDAwMUZDMDAwN0UwMDAwCi0xRkMwMDA3RTAwMDAwRkMwMDBGQzAwMDAwRkMwMDBGQzAwMDAwRkMwMDBGQzAwMDAwRkMwMDBGQzAwMDAwRkMwMDBGQzAwMDAKLTBGQzAwMEZDMDAwMDBGQzAwMEZDMDAwMDBGQzAwMEZDMDAwMDBGQzAwMEZFMDAwMDBGQzAwMDdFMDAwMDFGQzAwMDdFMDAwMAotMUZDMDAwM0YwMDAwM0ZDMDAwM0Y4MDAwM0ZDMDAwMUZDMDAwN0ZDMDAwMUZFMDAwRkZDMDAwMEZGMDAzRkZDMDAwMDdGQzBGCi1GRkMwMDAwM0ZGRkZGRkMwMDAwMUZGRkZFRkMwMDAwMDdGRkY4RkMwMDAwMDNGRkYwRkMwMDAwMDA3RjgwRkMwMDAwMDAwMDAKLTBGQzAwMDAwMDAwMDBGQzAwMDAwMDAwMDBGQzAwMDAwMDAwMDBGQzAwMDAwMDAwMDBGQzAwMDAwMDAwMDBGQzAwMDAwMDAwMAotMEZDMDAwMDAwMDAwMEZDMDAwMDAwMDAwMEZDMDAwMDAwMDAwMEZDMDAwMDAwMDAwMEZDMDAwMDAwMDAwMEZDMDAwMDAwMDAwCi0wRkMwMDAwMDAwMDNGRkZGMDAwMDAwMDdGRkZGODAwMDAwMDdGRkZGODAwMDAwMDdGRkZGODAwMDAwMDNGRkZGMDAyOTM2N0QKLUEzMkM+STw3RkZFMDAzRkMwRkZGRjAxRkZGMEZGRkYwN0ZGRjhGRkZGMUZGRkZDN0ZGRjNGRkZGQzAwM0Y3RkUxRkMwMDNGCi1GRjAxRkMwMDNGRkMwMEY4MDAzRkY4MDA3MDAwM0ZGMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZDMDAwMDAwMDNGODAKLTAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMAotMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwCi0wMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDA3RkZGRkZFMDAwRkZGRkZGRjAwMEZGRkZGRkYwMDBGRkZGRkZGMDAwN0YKLUZGRkZFMDAwMjYyNDdFQTMyQz5JPDAwN0ZGODcwMDNGRkZGRjgwRkZGRkZGODFGRkZGRkY4M0ZGRkZGRjg3RkMwMEZGODdFCi0wMDAzRjhGQzAwMDFGOEY4MDAwMUY4RjgwMDAxRjhGODAwMDFGOEZDMDAwMEYwN0YwMDAwMDA3RkYwMDAwMDNGRkZDMDAwMUYKLUZGRkUwMDBGRkZGRjgwMDNGRkZGRTAwMDdGRkZGODAwMDFGRkZDMDAwMDA3RkMwMDAwMDBGRTc4MDAwMDdGRkMwMDAwM0ZGQwotMDAwMDFGRkUwMDAwMUZGRTAwMDAxRkZGMDAwMDNGRkY4MDAwM0VGRkMwMDBGRUZGRjAwN0ZDRkZGRkZGRkNGRkZGRkZGOEZGCi1GRkZGRTBGOEZGRkY4MDcwMUZGQzAwMjAyNDdBQTMyQz5JPDAwMUUwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMAotMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDdGRkZGRkZGCi0wMEZGRkZGRkZGODBGRkZGRkZGRjgwRkZGRkZGRkY4MDdGRkZGRkZGMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAKLTAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMAotM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGCi0wMDAzQzAwMDNGMDAwN0UwMDAzRjAwMDdFMDAwM0YwMDA3RTAwMDNGMDAwN0UwMDAzRjAwMDdFMDAwM0Y4MDBGRTAwMDFGODAKLTFGQzAwMDFGRTA3RkMwMDAwRkZGRkY4MDAwMEZGRkZGMDAwMDAzRkZGRTAwMDAwMUZGRjgwMDAwMDAzRkUwMDAyMzJFN0VBRAotMkM+STw3RkYwMDNGRjgwMDBGRkY4MDdGRkMwMDBGRkY4MDdGRkMwMDBGRkY4MDdGRkMwMDA3RkY4MDNGRkMwMDAwMUY4MDAKLTBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMAotMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwMEZDMDAwMDFGODAwCi0wRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAwRkMwMDAwMUY4MDAKLTBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDBGQzAwMDAxRjgwMDFGQzAwMDAxRjgwMDFGQzAwMDAxRjgwMDNGQzAwMDAxRkMwMAotN0ZDMDAwMDBGRTAzRkZDMDAwMDBGRkZGRkZGRjAwMDA3RkZGRkZGRjgwMDAzRkZGRkZGRjgwMDAxRkZGQ0ZGRjgwMDAwM0ZFCi0wN0ZGMDAyOTI0N0ZBMzJDPkk8N0ZGRjAxRkZGQ0ZGRkYwMUZGRkVGRkZGODNGRkZFRkZGRjAxRkZGRTdGRkYwMUZGRkMwMwotRTAwMDBGODAwM0UwMDAwRjgwMDNGMDAwMUY4MDAxRjAwMDFGMDAwMUYwMDAxRjAwMDFGODAwM0YwMDAwRjgwMDNFMDAwMEY4Ci0wMDNFMDAwMEZDMDA3RTAwMDA3QzAwN0MwMDAwN0MwMDdDMDAwMDdFMDBGQzAwMDAzRTAwRjgwMDAwM0UwMEY4MDAwMDNGMDEKLUY4MDAwMDFGMDFGMDAwMDAxRjAxRjAwMDAwMUY4M0YwMDAwMDBGODNFMDAwMDAwRjgzRTAwMDAwMEZDN0UwMDAwMDA3QzdDMAotMDAwMDA3QzdDMDAwMDAwN0VGQzAwMDAwMDNFRjgwMDAwMDAzRUY4MDAwMDAwM0ZGODAwMDAwMDFGRjAwMDAwMDAxRkYwMDAwCi0wMDAwRkUwMDAwMDAwMDdDMDAwMDI3MjQ3RUEzMkM+STw3RkZGMDA3RkZGMDA3RkZGODBGRkZGMDBGRkZGODBGRkZGODA3RgotRkY4MEZGRkYwMDdGRkYwMDdGRkYwMDA3QzAwMDAxRjAwMDA3QzAwMDAxRjAwMDA3QzAwMDAxRjAwMDA3QzAwMDAxRjAwMDA3Ci1DMDAwMDFGMDAwMDdDMDAwMDFGMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDNFMDNFMDAwMDMKLUUwN0YwM0UwMDAwM0UwN0YwM0UwMDAwMUYwN0YwN0MwMDAwMUYwRkY4N0MwMDAwMUYwRkY4N0MwMDAwMUYwRjc4N0MwMDAwMQotRjBGNzg3QzAwMDAxRjFGN0M3QzAwMDAwRjFGN0M3ODAwMDAwRjlFM0NGODAwMDAwRjlFM0NGODAwMDAwRkJFM0VGODAwMDAwCi1GQkUzRUY4MDAwMDBGQkUzRUY4MDAwMDA3QkMxRUYwMDAwMDA3RkMxRkYwMDAwMDA3RkMxRkYwMDAwMDA3RjgwRkYwMDAwMDAKLTdGODBGRjAwMDAwMDNGODBGRTAwMDAwMDFGMDA3QzAwMDAyOTI0N0ZBMzJDPkk8M0ZGRjAzRkZGMDdGRkY4N0ZGRjg3RkZGCi04N0ZGRjg3RkZGODdGRkY4M0ZGRjAzRkZGMDAwRkMwMDdFMDAwMEZDMDBGQzAwMDA3RTAxRjgwMDAwM0YwMUYwMDAwMDFGODMKLUYwMDAwMDFGODdFMDAwMDAwRkNGQzAwMDAwMDdFRjgwMDAwMDAzRkY4MDAwMDAwMUZGMDAwMDAwMDFGRTAwMDAwMDAwRkMwMAotMDAwMDAwN0MwMDAwMDAwMEZFMDAwMDAwMDFGRTAwMDAwMDAxRkYwMDAwMDAwM0VGODAwMDAwMDdDRkMwMDAwMDBGQzdDMDAwCi0wMDBGODNFMDAwMDAxRjAxRjAwMDAwM0YwMUY4MDAwMDdFMDBGODAwMDA3QzAwN0MwMDAwRjgwMDdFMDAwMUY4MDAzRjAwN0YKLUZGMDFGRkZDN0ZGRjgzRkZGQ0ZGRkY4M0ZGRkU3RkZGODNGRkZDN0ZGRjAxRkZGQzI3MjQ3RUEzMkM+STw3RkZGMDFGRkZDCi1GRkZGODFGRkZFRkZGRjgzRkZGRUZGRkY4MUZGRkU3RkZGMDFGRkZDMDNFMDAwMEY4MDAxRjAwMDBGODAwMUYwMDAxRjgwMDEKLUY4MDAxRjAwMDBGODAwMUYwMDAwRjgwMDNGMDAwMEZDMDAzRTAwMDA3QzAwM0UwMDAwN0UwMDdFMDAwMDNFMDA3QzAwMDAzRQotMDA3QzAwMDAzRjAwRkMwMDAwMUYwMEY4MDAwMDFGMDBGODAwMDAwRjgxRjgwMDAwMEY4MUYwMDAwMDBGODFGMDAwMDAwN0MxCi1GMDAwMDAwN0MzRTAwMDAwMDdDM0UwMDAwMDAzRTNFMDAwMDAwM0U3QzAwMDAwMDFFN0MwMDAwMDAxRjdDMDAwMDAwMUY3ODAKLTAwMDAwMEZGODAwMDAwMDBGRjgwMDAwMDAwRkYwMDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwM0UwMDAwMDAwMDNFMDAwMAotMDAwMDdFMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMEZDMDAwMDAwMDBGODAwMDAwMDAwRjgwMDAwMEMwMUY4MDAwMDNGCi0wMUYwMDAwMDdGODNGMDAwMDA3Rjg3RTAwMDAwN0UwRkUwMDAwMDdFMUZDMDAwMDA3RkZGODAwMDAwM0ZGRjAwMDAwMDFGRkUKLTAwMDAwMDBGRkMwMDAwMDAwN0UwMDAwMDAwMjczNjdFQTMyQz5JPDNGRkZGRkZGRTA3RkZGRkZGRkYwN0ZGRkZGRkZGMDdGCi1GRkZGRkZGMDdGRkZGRkZGRjA3RTAwMDAxRkUwN0UwMDAwM0ZDMDdFMDAwMDdGODA3RTAwMDBGRjAwN0UwMDAxRkUwMDNDMDAKLTAzRkMwMDAwMDAwN0Y4MDAwMDAwMEZGMDAwMDAwMDFGRTAwMDAwMDAzRkMwMDAwMDAwN0Y4MDAwMDAwMEZGMDAwMDAwMDFGQwotMDAwMDAwMDNGODAwMDAwMDBGRjAwMDAwMDAxRkUwMDAwMDAwM0ZDMDAwMDAwMDdGODAwMDAwMDBGRjAwMDAwMDAxRkUwMDAxCi1FMDAzRkMwMDAzRjAwN0Y4MDAwM0YwMEZGMDAwMDNGMDFGRTAwMDAzRjAzRkMwMDAwM0YwN0Y4MDAwMDNGMEZGRkZGRkZGRjAKLUZGRkZGRkZGRjBGRkZGRkZGRkYwRkZGRkZGRkZGMDdGRkZGRkZGRTAyNDI0N0RBMzJDPkkKLUUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZtIGVjYngxMDAwIDEwIDMwCi0vRm0gMzAgMTIyIGRmPEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ0ZGRkZGRkZGRkYKLUZGRkZGRkZGRkZGRkZDNUUwMzgwOTc1Rj4yMiBEPDAwMDAxRTAwMDAwMDAwM0UwMDAwMDAwMEZFMDAwMDAwMDdGRTAwMDAwMAotN0ZGRTAwMDBGRkZGRkUwMDAwRkZGRkZFMDAwMEZGRkZGRTAwMDBGRjhGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGCi1GRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUKLTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMAotMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwCi0wMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAKLTBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAwRgotRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDA3RkZGRkZGRjgwN0ZGRkZGRkY4MDdGRkZGRkZGODA3RkZGRkZGRjgwMjEzNjc5Ci1CNTMwPjQ5IEQ8MDAwRkZFMDAwMDAwN0ZGRkMwMDAwMUZGRkZGMDAwMDdGRkZGRkMwMDBGRTAzRkZGMDAxRjgwMEZGRjgwM0YKLTAwMDNGRkMwN0Y4MDAzRkZFMDdGRTAwMUZGRTBGRkUwMDBGRkYwRkZGMDAwRkZGMEZGRjAwMEZGRjBGRkYwMDA3RkY4RkZGMAotMDA3RkY4RkZGMDAwN0ZGOEZGRjAwMDdGRjg3RkUwMDA3RkY4M0ZDMDAwN0ZGODA2MDAwMDdGRjgwMDAwMDA3RkY4MDAwMDAwCi1GRkYwMDAwMDAwRkZGMDAwMDAwMEZGRTAwMDAwMDFGRkUwMDAwMDAxRkZDMDAwMDAwM0ZGODAwMDAwMDNGRjAwMDAwMDA3RkUKLTAwMDAwMDBGRkMwMDAwMDAxRkYwMDAwMDAwMUZFMDAwMDAwMDNGQzAwMDAwMDA3RjAwMDAwMDAwRkUwMDAwMDAwMUZDMDAwMAotMDAwM0YwMDA3ODAwMDdFMDAwNzgwMDBGQzAwMDc4MDAxRjgwMDA3ODAwM0YwMDAwRjgwMDdDMDAwMEYwMDBGODAwMDBGMDAwCi1GMDAwMDFGMDAxRkZGRkZGRjAwM0ZGRkZGRkYwMDdGRkZGRkZGMDBGRkZGRkZGRjAxRkZGRkZGRkYwM0ZGRkZGRkZGMDdGRkYKLUZGRkZFMEZGRkZGRkZGRTBGRkZGRkZGRkUwRkZGRkZGRkZFMEZGRkZGRkZGRTAyNTM2N0JCNTMwPkk8MDAwM0ZGMDAwMDAwCi0xRkZGRjAwMDAwN0ZGRkZDMDAwMUZDMDdGRjAwMDNGMDAzRkY4MDA3RTAwMUZGQzAwN0MwMDBGRkUwMEZGODAwRkZFMDBGRkMKLTAwRkZGMDFGRkUwMEZGRjAxRkZFMDBGRkYwMUZGRTAwRkZGMDFGRkUwMEZGRjAxRkZFMDBGRkYwMUZGRTAwRkZGMDBGRkMwMAotRkZFMDA3RjgwMEZGRTAwM0YwMDFGRkUwMDAwMDAxRkZDMDAwMDAwM0ZGODAwMDAwMDNGRjAwMDAwMDA3RkUwMDAwMDAwRkZDCi0wMDAwMDAzRkYwMDAwMDBGRkZDMDAwMDAwRkZGODAwMDAwMEZGRkYwMDAwMDAwMDdGRTAwMDAwMDAxRkY4MDAwMDAwMEZGQzAKLTAwMDAwMEZGRTAwMDAwMDA3RkYwMDAwMDAwN0ZGODAwMDAwMDNGRkMwMDAwMDAzRkZDMDAwMDAwM0ZGRTFGQzAwMDNGRkUzRgotRTAwMDNGRkU3RkYwMDAzRkZFRkZGODAwM0ZGRUZGRjgwMDNGRkVGRkY4MDAzRkZFRkZGODAwM0ZGRUZGRjgwMDNGRkNGRkY4Ci0wMDNGRkNGRkYwMDA3RkZDN0ZGMDAwN0ZGODdGQzAwMEZGRjAzRjgwMDBGRkYwMUZDMDAxRkZFMDBGRkMwN0ZGODAwN0ZGRkYKLUZGMDAwMUZGRkZGQzAwMDA3RkZGRjAwMDAwMDdGRjAwMDAyNzM3N0NCNTMwPkk8MDAwMDAwMDdDMDAwMDAwMDAwMEZDMDAwCi0wMDAwMDAwRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAzRkMwMDAwMDAwMDA3RkMwMDAwMDAwMDBGRkMwMDAwMDAwMDFGRkMwMDAKLTAwMDAwMUZGQzAwMDAwMDAwM0ZGQzAwMDAwMDAwN0ZGQzAwMDAwMDAwRkZGQzAwMDAwMDAxRkZGQzAwMDAwMDAzRUZGQzAwMAotMDAwMDNDRkZDMDAwMDAwMDc4RkZDMDAwMDAwMEYwRkZDMDAwMDAwMUYwRkZDMDAwMDAwM0UwRkZDMDAwMDAwM0MwRkZDMDAwCi0wMDA3ODBGRkMwMDAwMDBGMDBGRkMwMDAwMDFGMDBGRkMwMDAwMDNFMDBGRkMwMDAwMDdDMDBGRkMwMDAwMDc4MDBGRkMwMDAKLTAwRjAwMEZGQzAwMDAxRTAwMEZGQzAwMDAzRTAwMEZGQzAwMDA3QzAwMEZGQzAwMDA3ODAwMEZGQzAwMDBGMDAwMEZGQzAwMAotMUUwMDAwRkZDMDAwM0MwMDAwRkZDMDAwN0MwMDAwRkZDMDAwRjgwMDAwRkZDMDAwRkZGRkZGRkZGRjgwRkZGRkZGRkZGRjgwCi1GRkZGRkZGRkZGODBGRkZGRkZGRkZGODAwMDAwMDFGRkMwMDAwMDAwMDFGRkMwMDAwMDAwMDFGRkMwMDAwMDAwMDFGRkMwMDAKLTAwMDAwMUZGQzAwMDAwMDAwMUZGQzAwMDAwMDAwMUZGQzAwMDAwMDAwMUZGQzAwMDAwMDAwMUZGQzAwMDAwMDAwMUZGQzAwMAotMDAwM0ZGRkZGRjgwMDAwM0ZGRkZGRjgwMDAwM0ZGRkZGRjgwMDAwM0ZGRkZGRjgwMjkzNjdEQjUzMD5JPDAwMDFGRjgwMDAKLTAwMEZGRkYwMDAwMDNGRkZGQzAwMDBGRTAxRkYwMDAxRjgwMDdGODAwM0YwMDAzRkMwMDdFMDAwMUZFMDA3RTAwMDBGRTAwRgotQzAwMDBGRjAwRkMwMDAwN0YwMUZDMDAwMDdGMDFGQzAwMDA3RjAxRkUwMDAwN0YwMUZGMDAwMDdGMDFGRjgwMDA3RjAxRkZDCi0wMDBGRjAxRkZGMDAwRkUwMUZGRkMwMEZFMDFGRkZFMDFGQzAwRkZGRjgzRkMwMEZGRkZFN0Y4MDA3RkZGRkZFMDAwN0ZGRkYKLUZDMDAwM0ZGRkZGMDAwMDFGRkZGRkMwMDAwRkZGRkZGMDAwMDdGRkZGRjgwMDAzRkZGRkZDMDAwRkZGRkZGRTAwM0ZERkZGRgotRjAwN0YwN0ZGRkY4MEZFMDNGRkZGODFGQzAwRkZGRkMzRjgwMDNGRkZDN0Y4MDAwRkZGRTdGMDAwMDdGRkU3RjAwMDAxRkZFCi1GRTAwMDAwN0ZFRkUwMDAwMDNGRUZFMDAwMDAxRkVGRTAwMDAwMUZFRkUwMDAwMDBGRUZFMDAwMDAwRkVGRTAwMDAwMEZDRkYKLTAwMDAwMEZDN0YwMDAwMDFGQzdGODAwMDAxRjgzRkMwMDAwM0Y4M0ZFMDAwMDdGMDFGRjAwMDBGRTAwRkZFMDA3RkMwMDNGRgotRkZGRjAwMDBGRkZGRkMwMDAwM0ZGRkYwMDAwMDAzRkY4MDAwMjczNzdDQjUzMD41NiBEPEZGRkZGRkZGRkZDMDAwMDBGRkZGCi1GRkZGRkZGQzAwMDBGRkZGRkZGRkZGRkYwMDAwRkZGRkZGRkZGRkZGQzAwMDAwN0ZGMDAwMDNGRkUwMDAwMDdGRjAwMDAwRkYKLUYwMDAwMDdGRjAwMDAwN0ZGODAwMDA3RkYwMDAwMDNGRkMwMDAwN0ZGMDAwMDAxRkZDMDAwMDdGRjAwMDAwMUZGRTAwMDA3RgotRjAwMDAwMUZGRTAwMDA3RkYwMDAwMDBGRkYwMDAwN0ZGMDAwMDAwRkZGMDAwMDdGRjAwMDAwMEZGRjAwMDA3RkYwMDAwMDBGCi1GRjAwMDA3RkYwMDAwMDBGRkYwMDAwN0ZGMDAwMDAwRkZGMDAwMDdGRjAwMDAwMEZGRjAwMDA3RkYwMDAwMDFGRkUwMDAwN0YKLUYwMDAwMDFGRkUwMDAwN0ZGMDAwMDAxRkZDMDAwMDdGRjAwMDAwM0ZGQzAwMDA3RkYwMDAwMDdGRjgwMDAwN0ZGMDAwMDBGRgotRjAwMDAwN0ZGMDAwMDFGRkMwMDAwMDdGRjAwMDBGRkY4MDAwMDA3RkZGRkZGRkZDMDAwMDAwN0ZGRkZGRkZGQzAwMDAwMDdGCi1GRkZGRkZGRjgwMDAwMDdGRjAwMDAwRkZGMDAwMDA3RkYwMDAwMDNGRjgwMDAwN0ZGMDAwMDAxRkZDMDAwMDdGRjAwMDAwMEYKLUZFMDAwMDdGRjAwMDAwMDdGRjAwMDA3RkYwMDAwMDA3RkY4MDAwN0ZGMDAwMDAwM0ZGQzAwMDdGRjAwMDAwMDNGRkMwMDA3RgotRjAwMDAwMDNGRkMwMDA3RkYwMDAwMDAzRkZFMDAwN0ZGMDAwMDAwM0ZGRTAwMDdGRjAwMDAwMDNGRkUwMDA3RkYwMDAwMDAzCi1GRkUwMDA3RkYwMDAwMDAzRkZFMDAwN0ZGMDAwMDAwM0ZGRTAwMDdGRjAwMDAwMDNGRkUwMDA3RkYwMDAwMDAzRkZDMDAwN0YKLUYwMDAwMDAzRkZDMDAwN0ZGMDAwMDAwN0ZGQzAwMDdGRjAwMDAwMEZGRjgwMDA3RkYwMDAwMDBGRkYwMDAwN0ZGMDAwMDAxRgotRkYwMDAwN0ZGMDAwMDA3RkZFMDAwMDdGRjAwMDAxRkZGQzAwRkZGRkZGRkZGRkZGRjAwMEZGRkZGRkZGRkZGRkMwMDBGRkZGCi1GRkZGRkZGRjAwMDBGRkZGRkZGRkZGRjAwMDAwM0IzOTdEQjg0ND42NiBEPEZGRkZGRkZDRkZGRkZGRkNGRkZGRkZGQ0ZGRkYKLUZGRkMwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RgotRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGCi1GODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0YKLUY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RgotRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDAwMDdGCi1GODAwMDA3RkY4MDAwMDdGRjgwMDAwN0ZGODAwMDA3RkY4MDBGRkZGRkZGQ0ZGRkZGRkZDRkZGRkZGRkNGRkZGRkZGQzFFMzkKLTdEQjgyND43MyBEPEZGRkZGRkZGMDAwMDAwRkZGRkZGRkYwMDAwMDBGRkZGRkZGRjAwMDAwMEZGRkZGRkZGMDAwMDAwMDA3RgotRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4Ci0wMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAKLTAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMAotMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwCi0wMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAKLTAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDA3ODAwMAotN0ZGODAwMDAwNzgwMDA3RkY4MDAwMDA3ODAwMDdGRjgwMDAwMDc4MDAwN0ZGODAwMDAwNzgwMDA3RkY4MDAwMDBGODAwMDdGCi1GODAwMDAwRjAwMDA3RkY4MDAwMDBGMDAwMDdGRjgwMDAwMEYwMDAwN0ZGODAwMDAxRjAwMDA3RkY4MDAwMDFGMDAwMDdGRjgKLTAwMDAzRjAwMDA3RkY4MDAwMDNGMDAwMDdGRjgwMDAwN0YwMDAwN0ZGODAwMDBGRjAwMDA3RkY4MDAwMUZGMDAwMDdGRjgwMAotMDNGRjAwMDA3RkY4MDAwRkZFMDAwMDdGRjgwMDdGRkUwMEZGRkZGRkZGRkZGRTAwRkZGRkZGRkZGRkZFMDBGRkZGRkZGRkZGCi1GRTAwRkZGRkZGRkZGRkZFMDAzMTM5N0RCODM5Pjc2IEQ8MDAwMDAwRkZGODAwMDAwMDAwMDAwRkZGRkY4MDAwMDAwMDAwN0YKLUZGRkZGMDAwMDAwMDAxRkZDMDFGRkMwMDAwMDAwN0ZGMDAwN0ZGMDAwMDAwMUZGQzAwMDFGRkMwMDAwMDNGRjAwMDAwN0ZFMAotMDAwMDdGRTAwMDAwM0ZGMDAwMDBGRkMwMDAwMDFGRjgwMDAxRkY4MDAwMDAwRkZDMDAwM0ZGODAwMDAwMEZGRTAwMDdGRjAwCi0wMDAwMDdGRjAwMDdGRjAwMDAwMDA3RkYwMDBGRkUwMDAwMDAwM0ZGODAwRkZFMDAwMDAwMDNGRjgwMUZGQzAwMDAwMDAxRkYKLUMwMUZGQzAwMDAwMDAxRkZDMDNGRkMwMDAwMDAwMUZGRTAzRkZDMDAwMDAwMDFGRkUwM0ZGQzAwMDAwMDAxRkZFMDdGRjgwMAotMDAwMDAwRkZGMDdGRjgwMDAwMDAwMEZGRjA3RkY4MDAwMDAwMDBGRkYwN0ZGODAwMDAwMDAwRkZGMEZGRjgwMDAwMDAwMEZGCi1GOEZGRjgwMDAwMDAwMEZGRjhGRkY4MDAwMDAwMDBGRkY4RkZGODAwMDAwMDAwRkZGOEZGRjgwMDAwMDAwMEZGRjhGRkY4MDAKLTAwMDAwMEZGRjhGRkY4MDAwMDAwMDBGRkY4RkZGODAwMDAwMDAwRkZGOEZGRjgwMDAwMDAwMEZGRjhGRkY4MDAwMDAwMDBGRgotRjhGRkY4MDAwMDAwMDBGRkY4RkZGODAwMDAwMDAwRkZGODdGRjgwMDAwMDAwMEZGRjA3RkZDMDAwMDAwMDFGRkYwN0ZGQzAwCi0wMDAwMDFGRkYwN0ZGQzAwMDAwMDAxRkZGMDNGRkMwMDAwMDAwMUZGRTAzRkZDMDAwMDAwMDFGRkUwM0ZGRTAwMDAwMDAzRkYKLUUwMUZGRTAwMDAwMDAzRkZDMDFGRkUwMDAwMDAwM0ZGQzAwRkZGMDAwMDAwMDdGRjgwMDdGRjAwMDAwMDA3RkYwMDA3RkY4MAotMDAwMDBGRkYwMDAzRkZDMDAwMDAxRkZFMDAwMUZGQzAwMDAwMUZGQzAwMDBGRkUwMDAwMDNGRjgwMDAwN0ZGMDAwMDA3RkYwCi0wMDAwM0ZGQzAwMDFGRkUwMDAwMDFGRkYwMDA3RkZDMDAwMDAwN0ZGQzAxRkZGMDAwMDAwMDFGRkZGRkZGQzAwMDAwMDAwN0YKLUZGRkZGMDAwMDAwMDAwMEZGRkZGODAwMDAwMDAwMDAwRkZGODAwMDAwMDNEM0I3QkI5NDg+NzkKLUQ8RkZGRkZGRkZGRjAwMDBGRkZGRkZGRkZGRjAwMEZGRkZGRkZGRkZGRTAwRkZGRkZGRkZGRkZGODAwMDdGRjgwMDBGRkZDMAotMDA3RkY4MDAwMUZGRTAwMDdGRjgwMDAwRkZGMDAwN0ZGODAwMDA3RkY4MDA3RkY4MDAwMDNGRkMwMDdGRjgwMDAwM0ZGQzAwCi03RkY4MDAwMDFGRkUwMDdGRjgwMDAwMUZGRTAwN0ZGODAwMDAxRkZGMDA3RkY4MDAwMDFGRkYwMDdGRjgwMDAwMUZGRjAwN0YKLUY4MDAwMDFGRkYwMDdGRjgwMDAwMUZGRjAwN0ZGODAwMDAxRkZGMDA3RkY4MDAwMDFGRkYwMDdGRjgwMDAwMUZGRjAwN0ZGOAotMDAwMDFGRkUwMDdGRjgwMDAwMUZGRTAwN0ZGODAwMDAzRkZDMDA3RkY4MDAwMDNGRkMwMDdGRjgwMDAwN0ZGODAwN0ZGODAwCi0wMEZGRjAwMDdGRjgwMDAxRkZFMDAwN0ZGODAwMEZGRkMwMDA3RkZGRkZGRkZGMDAwMDdGRkZGRkZGRkMwMDAwN0ZGRkZGRkYKLUUwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMAotMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwCi0wMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDAKLTdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDA3RgotRjgwMDAwMDAwMDAwN0ZGODAwMDAwMDAwRkZGRkZGRkMwMDAwMDBGRkZGRkZGQzAwMDAwMEZGRkZGRkZDMDAwMDAwRkZGRkZGCi1GQzAwMDAwMDM4Mzk3REI4NDE+STwwMDA3RkYwMDBFMDAwMDNGRkZFMDFFMDAwMEZGRkZGODNFMDAwM0ZGRkZGRTdFMDAwNwotRkMwMUZGRkUwMDBGRjAwMDFGRkUwMDFGRTAwMDBGRkUwMDNGQzAwMDAzRkUwMDNGODAwMDAxRkUwMDdGODAwMDAwRkUwMDdGCi0wMDAwMDBGRTAwN0YwMDAwMDA3RTAwRkYwMDAwMDA3RTAwRkYwMDAwMDAzRTAwRkYwMDAwMDAzRTAwRkY4MDAwMDAzRTAwRkYKLTgwMDAwMDFFMDBGRkMwMDAwMDFFMDBGRkUwMDAwMDFFMDBGRkYwMDAwMDAwMDBGRkZDMDAwMDAwMDA3RkZGRTAwMDAwMDA3RgotRkZGRTAwMDAwMDdGRkZGRkYwMDAwMDNGRkZGRkZFMDAwMDNGRkZGRkZGODAwMDFGRkZGRkZGQzAwMDBGRkZGRkZGRjAwMDA3Ci1GRkZGRkZGODAwMDNGRkZGRkZGQzAwMDBGRkZGRkZGRTAwMDAzRkZGRkZGRTAwMDAwRkZGRkZGRjAwMDAwMUZGRkZGRjAwMDAKLTAwMEZGRkZGODAwMDAwMDA3RkZGODAwMDAwMDAwRkZGQzAwMDAwMDAwM0ZGQzAwMDAwMDAwMUZGQzAwMDAwMDAwMEZGQzBGMAotMDAwMDAwN0ZDMEYwMDAwMDAwN0ZDMEYwMDAwMDAwN0ZDMEYwMDAwMDAwM0ZDMEYwMDAwMDAwM0ZDMEY4MDAwMDAwM0ZDMEY4Ci0wMDAwMDAzRjgwRkMwMDAwMDAzRjgwRkMwMDAwMDA3RjgwRkUwMDAwMDA3RjAwRkYwMDAwMDA3RjAwRkY4MDAwMDBGRTAwRkYKLUUwMDAwMUZDMDBGRkY4MDAwM0ZDMDBGRkZGODAxRkY4MDBGQ0ZGRkZGRkUwMDBGODNGRkZGRkMwMDBGMDA3RkZGRTAwMDBFMAotMDA3RkYwMDAwMDJBM0I3QkI5MzU+ODMgRDwwMDNGRkUwMDAwMDAwM0ZGRkZFMDAwMDAwRkZGRkZGODAwMDAxRkYwMEZGRTAwCi0wMDNGRjAwM0ZGMDAwMDNGRjgwMUZGODAwMDNGRjgwMEZGQzAwMDNGRjgwMEZGQzAwMDNGRjgwMDdGRTAwMDNGRjgwMDdGRTAKLTAwMUZGMDAwN0ZFMDAwMEZFMDAwN0ZFMDAwMDM4MDAwN0ZFMDAwMDAwMDAwN0ZFMDAwMDAwMDAwN0ZFMDAwMDAwMDNGRkZFMAotMDAwMDBGRkZGRkUwMDAwMDdGRkZGRkUwMDAwMUZGRjg3RkUwMDAwN0ZGODA3RkUwMDAwRkZFMDA3RkUwMDAzRkY4MDA3RkUwCi0wMDNGRjAwMDdGRTAwMDdGRTAwMDdGRTAwMEZGRTAwMDdGRTAwMEZGQzAwMDdGRTAwMEZGQzAwMDdGRTAwMEZGQzAwMDdGRTAKLTAwRkZDMDAwN0ZFMDAwRkZDMDAwRkZFMDAwRkZFMDAxRkZFMDAwN0ZFMDAxRkZFMDAwM0ZGMDA3RkZGODAwMUZGQzFGQkZGRgotQzAwRkZGRkUxRkZGQzAwM0ZGRjgwRkZGQzAwMDNGRTAwM0ZGQzAyQTI1N0RBNDJFPjk3IEQ8MDAwMUZGQzAwMDAwMEZGRkZDCi0wMDAwN0ZGRkZGMDAwMEZGODBGRjgwMDNGRTAwRkZDMDA3RkMwMUZGQzAwRkY4MDFGRkMwMUZGODAxRkZDMDFGRjAwMUZGQzAKLTNGRjAwMUZGQzAzRkYwMDBGRjgwN0ZFMDAwN0YwMDdGRTAwMDFDMDA3RkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRgotRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAwMEZGRTAwMDAwMDA3RkUwCi0wMDAwMDA3RkUwMDAwMDAwN0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMUUwMUZGODAwMDFFMDFGRjgwMDAzRTAwRkZDMDAKLTA3QzAwN0ZFMDAwNzgwMDNGRjAwMUY4MDAwRkZDMDdFMDAwMDdGRkZGQzAwMDAwRkZGRjAwMDAwMDFGRjgwMDAyMzI1N0RBNAotMkE+OTkgRDwwMDAwMDAwMDdGODAwMDAwMDA3RkZGODAwMDAwMDA3RkZGODAwMDAwMDA3RkZGODAwMDAwMDA3RkZGODAwMDAwCi0wMDAzRkY4MDAwMDAwMDAxRkY4MDAwMDAwMDAxRkY4MDAwMDAwMDAxRkY4MDAwMDAwMDAxRkY4MDAwMDAwMDAxRkY4MDAwMDAKLTAwMDFGRjgwMDAwMDAwMDFGRjgwMDAwMDAwMDFGRjgwMDAwMDAwMDFGRjgwMDAwMDAwMDFGRjgwMDAwMDAwMDFGRjgwMDAwMAotMDAwMUZGODAwMDAwMDAwMUZGODAwMDAwMDAwMUZGODAwMDAwMDAwMUZGODAwMDAxRkY4MUZGODAwMDBGRkZGMUZGODAwMDNGCi1GRkZERkY4MDAwRkZDMDdGRkY4MDAzRkYwMDFGRkY4MDA3RkMwMDA3RkY4MDBGRkMwMDAzRkY4MDFGRjgwMDAxRkY4MDFGRjAKLTAwMDFGRjgwM0ZGMDAwMDFGRjgwM0ZGMDAwMDFGRjgwN0ZFMDAwMDFGRjgwN0ZFMDAwMDFGRjgwN0ZFMDAwMDFGRjgwRkZFMAotMDAwMUZGODBGRkUwMDAwMUZGODBGRkUwMDAwMUZGODBGRkUwMDAwMUZGODBGRkUwMDAwMUZGODBGRkUwMDAwMUZGODBGRkUwCi0wMDAxRkY4MEZGRTAwMDAxRkY4MEZGRTAwMDAxRkY4MEZGRTAwMDAxRkY4MDdGRTAwMDAxRkY4MDdGRTAwMDAxRkY4MDdGRjAKLTAwMDFGRjgwM0ZGMDAwMDFGRjgwM0ZGMDAwMDFGRjgwMUZGODAwMDNGRjgwMEZGODAwMDdGRjgwMDdGQzAwMEZGRjgwMDNGRQotMDAxRkZGQzAwMUZGODBGREZGRkUwMDdGRkZGOUZGRkUwMDFGRkZFMUZGRkUwMDAxRkYwMUZGRkUyRjNBN0RCOTM1Pkk8MDAKLTAzRkY4MDAwMDAxRkZGRjAwMDAwN0ZGRkZDMDAwMUZGODNGRTAwMDNGRTAwN0Y4MDA3RkMwMDNGODAwRkY4MDAzRkMwMUZGOAotMDAxRkUwMUZGMDAwMUZFMDNGRjAwMDBGRjAzRkYwMDAwRkYwN0ZFMDAwMEZGMDdGRTAwMDBGRjg3RkUwMDAwN0Y4RkZFMDAwCi0wN0Y4RkZFMDAwMDdGOEZGRkZGRkZGRjhGRkZGRkZGRkY4RkZGRkZGRkZGOEZGRTAwMDAwMDBGRkUwMDAwMDAwRkZFMDAwMDAKLTAwRkZFMDAwMDAwMDdGRTAwMDAwMDA3RkUwMDAwMDAwN0ZFMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDc4MUZGMDAwMDA3OAotMEZGODAwMDBGODBGRkMwMDAwRjAwN0ZDMDAwM0YwMDFGRjAwMEZFMDAwRkZDMDdGQzAwMDdGRkZGRjAwMDAwRkZGRkMwMDAwCi0wMUZGRTAwMDI1MjU3REE0MkM+STwwMDAwMUZGMDAwMDAwMUZGRkMwMDAwMDdGRkZGMDAwMDFGRjg3RjgwMDAzRkUwRkY4MAotMDBGRkMxRkZDMDAwRkZDMUZGQzAwMUZGODFGRkMwMDFGRjgxRkZDMDAzRkYwMUZGQzAwM0ZGMDBGRjgwMDNGRjAwRkY4MDAzCi1GRjAwM0UwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYKLTAwMDAwMDAzRkYwMDAwMDBGRkZGRkYwMDAwRkZGRkZGMDAwMEZGRkZGRjAwMDBGRkZGRkYwMDAwMDNGRjAwMDAwMDAzRkYwMAotMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwCi0wMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAKLTAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwMwotRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMEZGRkZGRTAwMDBGRkZGCi1GRTAwMDBGRkZGRkUwMDAwRkZGRkZFMDAwMDIyM0E3REI5MUQ+STwwMDAwMDAwMDFGMDAwMDA3RkUwMEZGQzAwMDdGRkZFMwotRkZDMDAxRkZGRkZGRUZFMDA3RkUwN0ZGOEZFMDBGRjgwMUZGMUZFMDFGRjAwMEZGOEZFMDNGRjAwMEZGQ0ZFMDNGRTAwMDdGCi1DN0MwM0ZFMDAwN0ZDMDAwN0ZFMDAwN0ZFMDAwN0ZFMDAwN0ZFMDAwN0ZFMDAwN0ZFMDAwN0ZFMDAwN0ZFMDAwN0ZFMDAwN0YKLUUwMDA3RkUwMDA3RkUwMDAzRkUwMDA3RkMwMDAzRkUwMDA3RkMwMDAzRkYwMDBGRkMwMDAxRkYwMDBGRjgwMDAwRkY4MDFGRgotMDAwMDA3RkUwN0ZFMDAwMDBGRkZGRkY4MDAwMDBGN0ZGRkUwMDAwMDFFMDdGRTAwMDAwMDFFMDAwMDAwMDAwMDFFMDAwMDAwCi0wMDAwM0UwMDAwMDAwMDAwM0YwMDAwMDAwMDAwM0Y4MDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZGRkZGRjgwMDAwMUZGRkZGRkYKLTgwMDAxRkZGRkZGRkUwMDAwRkZGRkZGRkY4MDAwN0ZGRkZGRkZDMDAwM0ZGRkZGRkZFMDAwN0ZGRkZGRkZFMDAxRkZGRkZGRgotRkYwMDNGQzAwMDBGRkYwMDdGMDAwMDAwRkY4MEZGMDAwMDAwN0Y4MEZFMDAwMDAwN0Y4MEZFMDAwMDAwM0Y4MEZFMDAwMDAwCi0zRjgwRkUwMDAwMDAzRjgwRkYwMDAwMDA3RjgwN0YwMDAwMDA3RjAwN0Y4MDAwMDBGRjAwM0ZDMDAwMDFGRTAwMUZGMDAwMDcKLUZDMDAwN0ZFMDAzRkYwMDAwMUZGRkZGRkMwMDAwMDdGRkZGRjAwMDAwMDA3RkZGMDAwMDAyQjM3N0RBNTMwPkk8MDBGRjAwCi0wMDAwMDBGRkZGMDAwMDAwMDBGRkZGMDAwMDAwMDBGRkZGMDAwMDAwMDBGRkZGMDAwMDAwMDAwN0ZGMDAwMDAwMDAwM0ZGMDAKLTAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMAotMDAwMDAwMDNGRjAwMDAwMDAwMDNGRjAwMDAwMDAwMDNGRjAwMDAwMDAwMDNGRjAwMDAwMDAwMDNGRjAwMDAwMDAwMDNGRjAwCi0wMDAwMDAwM0ZGMDAwMDAwMDAwM0ZGMDAwMDAwMDAwM0ZGMDA3RkMwMDAwM0ZGMDNGRkY4MDAwM0ZGMEZGRkZFMDAwM0ZGMUYKLTAzRkYwMDAzRkYzQzAxRkY4MDAzRkY3ODAxRkY4MDAzRkZGMDAwRkY4MDAzRkZFMDAwRkZDMDAzRkZDMDAwRkZDMDAzRkZDMAotMDBGRkMwMDNGRjgwMDBGRkMwMDNGRjgwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwCi0wMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAKLTAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMAotMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwRkZGRkZDCi0zRkZGRkZGRkZGRkMzRkZGRkZGRkZGRkMzRkZGRkZGRkZGRkMzRkZGRkYzMDNBN0RCOTM1Pkk8MDFGMDAwMDdGQzAwMEZGRQotMDAwRkZFMDAxRkZGMDAxRkZGMDAxRkZGMDAxRkZGMDAxRkZGMDAwRkZFMDAwRkZFMDAwN0ZDMDAwMUYwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYwMDdGRkYwMDdGRkYwMDdGRkYwMDdGRkYKLTAwMDdGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRgotMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGCi0wMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMEZGRkZGOEZGRkZGOEZGRkZGOEZGRkZGODE1M0I3REJBMUI+STwwMEZGMDBGRgotRkYwMEZGRkYwMEZGRkYwMEZGRkYwMDA3RkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzCi1GRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDMKLUZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwM0ZGMDAwMwotRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzRkYwMDAzCi1GRjAwMDNGRjAwMDNGRjAwMDNGRjAwMDNGRjAwRkZGRkZDRkZGRkZDRkZGRkZDRkZGRkZDMTYzQTdEQjkxQj4xMDgKLUQ8MDBGRTAwN0ZDMDAwRkZGRTAzRkZGODAwRkZGRTBGRkZGRTAwRkZGRTFGMDNGRjAwRkZGRTNDMDFGRjgwMDdGRTc4MDFGRgotODAwM0ZFRjAwMEZGODAwM0ZGRTAwMEZGQzAwM0ZGQzAwMEZGQzAwM0ZGQzAwMEZGQzAwM0ZGODAwMEZGQzAwM0ZGODAwMEZGCi1DMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkYKLUMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRgotQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGCi1DMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMEZGRkZGQzNGRkZGRkZGRkZGQzNGRkZGRkZGRkZGQzNGRkYKLUZGRkZGRkZDM0ZGRkZGMzAyNTdEQTQzNT4xMTAgRDwwMDAxRkZDMDAwMDAwMDBGRkZGODAwMDAwMDdGRkZGRjAwMDAwMEZGCi04MEZGODAwMDAzRkUwMDNGRTAwMDA3RkMwMDFGRjAwMDBGRjgwMDBGRjgwMDFGRjAwMDA3RkMwMDFGRjAwMDA3RkMwMDNGRjAKLTAwMDdGRTAwM0ZFMDAwMDNGRTAwN0ZFMDAwMDNGRjAwN0ZFMDAwMDNGRjAwN0ZFMDAwMDNGRjAwRkZFMDAwMDNGRjgwRkZFMAotMDAwM0ZGODBGRkUwMDAwM0ZGODBGRkUwMDAwM0ZGODBGRkUwMDAwM0ZGODBGRkUwMDAwM0ZGODBGRkUwMDAwM0ZGODBGRkUwCi0wMDAzRkY4MEZGRTAwMDAzRkY4MDdGRTAwMDAzRkYwMDdGRTAwMDAzRkYwMDdGRTAwMDAzRkYwMDNGRTAwMDAzRkUwMDNGRjAKLTAwMDdGRTAwMUZGMDAwMDdGQzAwMUZGMDAwMDdGQzAwMEZGODAwMEZGODAwMDdGQzAwMUZGMDAwMDNGRTAwM0ZFMDAwMDFGRgotODBGRkMwMDAwMDdGRkZGRjAwMDAwMDFGRkZGQzAwMDAwMDAxRkZDMDAwMDAyOTI1N0RBNDMwPkk8MDBGRjAxRkY4MDAwRkYKLUZGMEZGRkYwMDBGRkZGM0ZGRkZDMDBGRkZGRkUwN0ZGMDBGRkZGRjAwMUZGODAwM0ZGRTAwMEZGQzAwM0ZGODAwMDdGRTAwMwotRkYwMDAwN0ZGMDAzRkYwMDAwM0ZGODAzRkYwMDAwM0ZGODAzRkYwMDAwMUZGQzAzRkYwMDAwMUZGQzAzRkYwMDAwMUZGQzAzCi1GRjAwMDAwRkZFMDNGRjAwMDAwRkZFMDNGRjAwMDAwRkZFMDNGRjAwMDAwRkZFMDNGRjAwMDAwRkZFMDNGRjAwMDAwRkZFMDMKLUZGMDAwMDBGRkUwM0ZGMDAwMDBGRkUwM0ZGMDAwMDBGRkUwM0ZGMDAwMDBGRkUwM0ZGMDAwMDBGRkMwM0ZGMDAwMDFGRkMwMwotRkYwMDAwMUZGQzAzRkYwMDAwMUZGODAzRkYwMDAwM0ZGODAzRkYwMDAwM0ZGMDAzRkY4MDAwN0ZGMDAzRkZDMDAwN0ZFMDAzCi1GRkUwMDBGRkMwMDNGRkYwMDNGRjgwMDNGRkZDMDdGRTAwMDNGRjNGRkZGODAwMDNGRjBGRkZFMDAwMDNGRjAzRkYwMDAwMDMKLUZGMDAwMDAwMDAwM0ZGMDAwMDAwMDAwM0ZGMDAwMDAwMDAwM0ZGMDAwMDAwMDAwM0ZGMDAwMDAwMDAwM0ZGMDAwMDAwMDAwMwotRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMDAzRkYwMDAwMDAwMEZGCi1GRkZDMDAwMDAwRkZGRkZDMDAwMDAwRkZGRkZDMDAwMDAwRkZGRkZDMDAwMDAwMkYzNTdFQTQzNT5JPDAwRkUwM0YwMDBGRgotRkUwRkZFMDBGRkZFM0ZGRjAwRkZGRTdDN0Y4MEZGRkVGOEZGQzAwN0ZFRjBGRkMwMDNGRkUwRkZDMDAzRkZDMEZGQzAwM0ZGCi1DMEZGQzAwM0ZGODA3RjgwMDNGRjgwM0YwMDAzRkY4MDBDMDAwM0ZGODAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAKLTAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMAotMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDAwM0ZGMDAwMDAwCi0wM0ZGMDAwMDAwMDNGRjAwMDAwMDAzRkYwMDAwMDBGRkZGRkUwMDAwRkZGRkZFMDAwMEZGRkZGRTAwMDBGRkZGRkUwMDAwMjIKLTI1N0VBNDI3PjExNCBEPDAwM0ZGMDM4MDNGRkZFRjgwRkZGRkZGODFGQzAwRkY4M0YwMDAzRjg3RTAwMDFGODdDMDAwMEY4Ci1GQzAwMDBGOEZDMDAwMDc4RkUwMDAwNzhGRjAwMDA3OEZGODAwMDAwRkZGQzAwMDBGRkZGRTAwMDdGRkZGQzAwN0ZGRkZGODAKLTNGRkZGRkMwMUZGRkZGRjAwRkZGRkZGODAzRkZGRkY4MDBGRkZGRkMwMDFGRkZGQzAwMDA3RkZFMDAwMDA3RkVGMDAwMDFGRQotRjAwMDAwRkVGODAwMDBGRUY4MDAwMDdFRkMwMDAwN0VGQzAwMDA3Q0ZFMDAwMEZDRkYwMDAwRjhGRjgwMDFGOEZGRjAwN0YwCi1GRkZGRkZDMEY4RkZGRjAwRTAxRkY4MDAxRjI1N0RBNDI2Pkk8MDAwRjAwMDAwMDBGMDAwMDAwMEYwMDAwMDAwRjAwMDAwMAotMEYwMDAwMDAxRjAwMDAwMDFGMDAwMDAwMUYwMDAwMDAxRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDA3RjAwMDAwMEZGMDAwMDAwCi1GRjAwMDAwMUZGMDAwMDA3RkYwMDAwMUZGRkZGRTBGRkZGRkZFMEZGRkZGRkUwRkZGRkZGRTAwM0ZGMDAwMDAzRkYwMDAwMDMKLUZGMDAwMDAzRkYwMDAwMDNGRjAwMDAwM0ZGMDAwMDAzRkYwMDAwMDNGRjAwMDAwM0ZGMDAwMDAzRkYwMDAwMDNGRjAwMDAwMwotRkYwMDAwMDNGRjAwMDAwM0ZGMDAwMDAzRkYwMDAwMDNGRjAwMDAwM0ZGMDAwMDAzRkYwMDAwMDNGRjAwNzgwM0ZGMDA3ODAzCi1GRjAwNzgwM0ZGMDA3ODAzRkYwMDc4MDNGRjAwNzgwM0ZGMDA3ODAzRkYwMDc4MDNGRjAwRjgwMUZGODBGMDAxRkY4MUYwMDAKLUZGQzNFMDAwM0ZGRkMwMDAxRkZGODAwMDAzRkUwMDFEMzU3RUI0MjU+STwwMEZGMDAwMDNGQzBGRkZGMDAzRkZGQzBGRkZGCi0wMDNGRkZDMEZGRkYwMDNGRkZDMEZGRkYwMDNGRkZDMDA3RkYwMDAxRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYKLTAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRjAwMDBGRkMwMDNGRgotMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGMDAwMEZGQzAwM0ZGCi0wMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYwMDAwRkZDMDAzRkYKLTAwMDBGRkMwMDNGRjAwMDFGRkMwMDNGRjAwMDFGRkMwMDNGRjAwMDNGRkMwMDNGRjAwMDNGRkMwMDFGRjAwMDdGRkMwMDFGRgotODAwRkZGRTAwMEZGQzAzRUZGRkYwMDdGRkZGQ0ZGRkYwMDFGRkZGMEZGRkYwMDAzRkY4MEZGRkYzMDI1N0RBNDM1Pkk8RkYKLUZGRjAxRkZGRjBGRkZGRjAxRkZGRjBGRkZGRjAxRkZGRjBGRkZGRjAxRkZGRjAwM0ZGODAwM0Y4MDAwMUZGQzAwM0UwMDAwMAotRkZDMDA3RTAwMDAwN0ZFMDA3QzAwMDAwM0ZGMDBGODAwMDAwM0ZGODFGMDAwMDAwMUZGQzNFMDAwMDAwMEZGQzdDMDAwMDAwCi0wN0ZFRkMwMDAwMDAwM0ZGRjgwMDAwMDAwM0ZGRjAwMDAwMDAwMUZGRTAwMDAwMDAwMEZGQzAwMDAwMDAwMDdGRTAwMDAwMDAKLTAwM0ZGMDAwMDAwMDAwM0ZGODAwMDAwMDAwN0ZGQzAwMDAwMDAwN0ZGQzAwMDAwMDAwRkZGRTAwMDAwMDAxRjNGRjAwMDAwMAotMDNFM0ZGODAwMDAwMDdDMUZGQzAwMDAwMEZDMEZGQzAwMDAwMUY4MDdGRTAwMDAwMUYwMDNGRjAwMDAwM0UwMDNGRjgwMDAwCi03QzAwMUZGQzAwMDBGODAwMEZGQzAwMDFGODAwMDdGRTAwRkZGRjAwM0ZGRkY4RkZGRjAwM0ZGRkY4RkZGRjAwM0ZGRkY4RkYKLUZGMDAzRkZGRjgyRDI1N0VBNDMyPjEyMCBEPEZGRkZGMDAxRkZGOEZGRkZGMDAxRkZGOEZGRkZGMDAxRkZGOEZGRkZGMDAxCi1GRkY4MDNGRjAwMDAxRjAwMDNGRjAwMDAxRTAwMDNGRjgwMDAzRTAwMDFGRjgwMDAzQzAwMDFGRkMwMDA3QzAwMDBGRkMwMDAKLTc4MDAwMEZGRTAwMEY4MDAwMDdGRTAwMEYwMDAwMDdGRjAwMUYwMDAwMDNGRjAwMUUwMDAwMDNGRjgwMUUwMDAwMDFGRjgwMwotQzAwMDAwMUZGODAzQzAwMDAwMUZGQzA3QzAwMDAwMEZGQzA3ODAwMDAwMEZGRTBGODAwMDAwMDdGRTBGMDAwMDAwMDdGRjFGCi0wMDAwMDAwM0ZGMUUwMDAwMDAwM0ZGQkUwMDAwMDAwMUZGQkMwMDAwMDAwMUZGRkMwMDAwMDAwMEZGRjgwMDAwMDAwMEZGRjgKLTAwMDAwMDAwRkZGODAwMDAwMDAwN0ZGMDAwMDAwMDAwN0ZGMDAwMDAwMDAwM0ZFMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMUZDMAotMDAwMDAwMDAxRkMwMDAwMDAwMDAwRjgwMDAwMDAwMDAwRjgwMDAwMDAwMDAwRjAwMDAwMDAwMDAwRjAwMDAwMDAwMDAxRjAwCi0wMDAwMDAwMDFFMDAwMDAwM0YwMDNFMDAwMDAwN0Y4MDNDMDAwMDAwRkZDMDdDMDAwMDAwRkZDMDc4MDAwMDAwRkZDMEY4MDAKLTAwMDBGRkMxRjAwMDAwMDBGRkMzRTAwMDAwMDA3Rjg3QzAwMDAwMDA3RDFGODAwMDAwMDAzRkZGMDAwMDAwMDAxRkZDMDAwMAotMDAwMDA3RjAwMDAwMDAwMDJEMzU3RUE0MzI+SSBFCi0lRW5kRFZJUFNCaXRtYXBGb250Ci0lRFZJUFNCaXRtYXBGb250OiBGbiBlY3JtMDkwMCA5IDMwCi0vRm4gMzAgMTIyIGRmPDAwMDBDMDAwMDFDMDAwMDM4MDAwMEYwMDAwMEUwMDAwMUMwMDAwM0MwMDAwNzgwMDAwRjAwMDAwRjAKLTAwMDFFMDAwMDNDMDAwMDNDMDAwMDdDMDAwMDc4MDAwMEY4MDAwMEYwMDAwMUYwMDAwMUYwMDAwMUUwMDAwM0UwMDAwM0UwMAotMDAzRTAwMDAzQzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwMDBGODAwCi0wMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMDdDMDAKLTAwN0MwMDAwN0MwMDAwN0MwMDAwN0MwMDAwM0MwMDAwM0UwMDAwM0UwMDAwM0UwMDAwMUUwMDAwMUYwMDAwMUYwMDAwMEYwMAotMDAwRjgwMDAwNzgwMDAwN0MwMDAwM0MwMDAwM0MwMDAwMUUwMDAwMEYwMDAwMEYwMDAwMDc4MDAwMDNDMDAwMDFDMDAwMDBFCi0wMDAwMEYwMDAwMDM4MDAwMDFDMDAwMDBDMDEyNEE3OUI3MUU+NDAgRDxDMDAwMDBFMDAwMDA3MDAwMDAzQzAwMDAxQzAwMDAKLTBFMDAwMDBGMDAwMDA3ODAwMDAzQzAwMDAzQzAwMDAxRTAwMDAwRjAwMDAwRjAwMDAwRjgwMDAwNzgwMDAwN0MwMDAwM0MwMAotMDAzRTAwMDAzRTAwMDAxRTAwMDAxRjAwMDAxRjAwMDAxRjAwMDAwRjAwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwCi0wMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAwMDA3QzAKLTAwMDdDMDAwMDdDMDAwMDdDMDAwMDdDMDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEYwMDAwMUYwMDAwMUYwMAotMDAxRjAwMDAxRTAwMDAzRTAwMDAzRTAwMDAzQzAwMDA3QzAwMDA3ODAwMDBGODAwMDBGMDAwMDBGMDAwMDFFMDAwMDNDMDAwCi0wM0MwMDAwNzgwMDAwRjAwMDAwRTAwMDAxQzAwMDAzQzAwMDA3MDAwMDBFMDAwMDBDMDAwMDAxMjRBN0NCNzFFPkk8M0M3RQotRkZGRkZGRkY3RTNDMDgwODdBODcxNT40NiBEPEZGRkZGRUZGRkZGRUZGRkZGRTAxRkYwMDAwRkUwMDAwRkUwMDAwRkUwMDAwCi1GRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDAKLUZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZFMDAwMAotRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwRkUwMDAwCi1GRTAwMDBGRTAwMDBGRTAwMDBGRTAwMDFGRjAwRkZGRkZFRkZGRkZFRkZGRkZFMTczMzdFQjIxQz43MwotRDxGRkZGRkUwMDAwMDBGRkZGRkUwMDAwMDBGRkZGRkUwMDAwMDAwM0ZFMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwCi0wMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAKLTAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMAotMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwCi0wMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAKLTAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMTgwMDFGQzAwMDAwMTgwMDFGQzAwMDAwMTgwMDFGQzAwMDAwMTgwMDFGQzAwMDAwMwotODAwMUZDMDAwMDAzMDAwMUZDMDAwMDAzMDAwMUZDMDAwMDAzMDAwMUZDMDAwMDAzMDAwMUZDMDAwMDA3MDAwMUZDMDAwMDA3Ci0wMDAxRkMwMDAwMEYwMDAxRkMwMDAwMUYwMDAxRkMwMDAwM0YwMDAxRkMwMDAwN0YwMDAxRkMwMDAwRkUwMDAzRkMwMDA3RkUKLTAwRkZGRkZGRkZGRTAwRkZGRkZGRkZGRTAwRkZGRkZGRkZGRTAwMjkzMzdEQjIzMD43NiBEPDAwMDAwN0ZDMDAwMDAwMDAwMAotN0ZGRkMwMDAwMDAwMDFGQzA3RjAwMDAwMDAwN0UwMDBGQzAwMDAwMDBGODAwMDNFMDAwMDAwM0YwMDAwMUY4MDAwMDA3RTAwCi0wMDBGQzAwMDAwRkMwMDAwMDdFMDAwMDFGODAwMDAwM0YwMDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDdFMDAwMDAKLTAwRkMwMDBGRTAwMDAwMDBGRTAwMEZDMDAwMDAwMDdFMDAxRkMwMDAwMDAwN0YwMDFGQzAwMDAwMDA3RjAwM0Y4MDAwMDAwMAotM0Y4MDNGODAwMDAwMDAzRjgwN0Y4MDAwMDAwMDNGQzA3RjgwMDAwMDAwM0ZDMDdGMDAwMDAwMDAxRkMwN0YwMDAwMDAwMDFGCi1DMEZGMDAwMDAwMDAxRkUwRkYwMDAwMDAwMDFGRTBGRjAwMDAwMDAwMUZFMEZGMDAwMDAwMDAxRkUwRkYwMDAwMDAwMDFGRTAKLUZGMDAwMDAwMDAxRkUwRkYwMDAwMDAwMDFGRTBGRjAwMDAwMDAwMUZFMEZGMDAwMDAwMDAxRkUwRkYwMDAwMDAwMDFGRTBGRgotMDAwMDAwMDAxRkUwN0YwMDAwMDAwMDFGQzA3RjgwMDAwMDAwM0ZDMDdGODAwMDAwMDAzRkMwN0Y4MDAwMDAwMDNGQzAzRjgwCi0wMDAwMDAzRjgwM0ZDMDAwMDAwMDdGODAzRkMwMDAwMDAwN0Y4MDFGQzAwMDAwMDA3RjAwMUZFMDAwMDAwMEZGMDAwRkUwMDAKLTAwMDBGRTAwMDdGMDAwMDAwMUZDMDAwN0YwMDAwMDAxRkMwMDAzRjgwMDAwMDNGODAwMDFGODAwMDAwM0YwMDAwMEZDMDAwMAotMDdFMDAwMDA3RTAwMDAwRkMwMDAwMDNGMDAwMDFGODAwMDAwMUZDMDAwN0YwMDAwMDAwN0UwMDBGQzAwMDAwMDAxRkMwN0YwCi0wMDAwMDAwMDdGRkZDMDAwMDAwMDAwMDdGQzAwMDAwMDMzMzc3Q0I0M0M+NzkgRDwwMDFGRTAwMzAwMDA3RkZDMDcwMDAxRkYKLUZGMDcwMDA3RjAxRkNGMDAwRjgwMDNGRjAwMUYwMDAwRkYwMDNFMDAwMDdGMDAzRTAwMDAzRjAwN0MwMDAwMUYwMDdDMDAwMAotMUYwMDc4MDAwMDBGMDBGODAwMDAwNzAwRjgwMDAwMDcwMEY4MDAwMDA3MDBGODAwMDAwNzAwRkMwMDAwMDMwMEZDMDAwMDAzCi0wMEZFMDAwMDAzMDBGRTAwMDAwMDAwN0YwMDAwMDAwMDdGQzAwMDAwMDAzRkYwMDAwMDAwM0ZGRjAwMDAwMDFGRkZGMDAwMDAKLTBGRkZGRjAwMDAwN0ZGRkZDMDAwMDNGRkZGRjAwMDAwRkZGRkY4MDAwMDNGRkZGQzAwMDAwM0ZGRkUwMDAwMDAzRkZGMDAwMAotMDAwM0ZGMDAwMDAwMDBGRjgwMDAwMDAwN0Y4MDAwMDAwMDNGODAwMDAwMDAxRkMwMDAwMDAwMEZDMEMwMDAwMDBGQzBDMDAwCi0wMDBGQzBDMDAwMDAwN0MwQzAwMDAwMDdDMEMwMDAwMDA3QzBFMDAwMDAwN0MwRTAwMDAwMDdDMEYwMDAwMDBGODBGMDAwMDAKLTBGODBGODAwMDAwRjAwRkMwMDAwMUYwMEZFMDAwMDNFMDBGRjAwMDA3RTAwRkZDMDAwRkMwMEYxRkMwM0Y4MDBFMEZGRkZFMAotMDBFMDFGRkY4MDAwQzAwM0ZFMDAwMDIyMzc3Q0I0MkI+ODMgRDw3RkZGRkZGRkZGRkU3RkZGRkZGRkZGRkU3RkZGRkZGRkZGCi1GRTdGODAwN0YwMDFGRTdDMDAwN0YwMDAzRTc4MDAwN0YwMDAxRTcwMDAwN0YwMDAwRTcwMDAwN0YwMDAwRTYwMDAwN0YwMDAKLTA2RTAwMDA3RjAwMDA3RTAwMDA3RjAwMDA3RTAwMDA3RjAwMDA3QzAwMDA3RjAwMDAzQzAwMDA3RjAwMDAzQzAwMDA3RjAwMAotMDNDMDAwMDdGMDAwMDNDMDAwMDdGMDAwMDNDMDAwMDdGMDAwMDMwMDAwMDdGMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDdGMDAwCi0wMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAKLTAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMAotMDAwMDAwMDdGMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDdGMDAwCi0wMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAKLTAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDBGRjgwMDAwMDAxRkZGRkZGQzAwMDAxRkZGRkZGQzAwMDAxRkZGRkZGQwotMDAzMDMzN0RCMjM3Pkk8RkZGRkYwMDdGRkZGODAwRkZGRjBGRkZGRjAwN0ZGRkY4MDBGRkZGMEZGRkZGMDA3RkZGRjgwMEYKLUZGRjAwM0ZGMDAwMDNGRjAwMDAxRkYwMDAxRkMwMDAwMUZFMDAwMDA3QzAwMDFGQzAwMDAxRkUwMDAwMDM4MDAwMUZFMDAwMAotMEZFMDAwMDAzODAwMDBGRTAwMDAwRkUwMDAwMDMwMDAwMEZFMDAwMDBGRjAwMDAwMzAwMDAwRkYwMDAwMDdGMDAwMDA3MDAwCi0wMDdGMDAwMDA3RjAwMDAwNjAwMDAwN0YwMDAwMDdGMDAwMDA2MDAwMDA3RjgwMDAwRkY4MDAwMEUwMDAwMDNGODAwMDBGRjgKLTAwMDBDMDAwMDAzRjgwMDAwRkY4MDAwMEMwMDAwMDNGQzAwMDE5RkMwMDAxQzAwMDAwMUZDMDAwMTlGQzAwMDE4MDAwMDAxRgotQzAwMDE5RkMwMDAxODAwMDAwMUZFMDAwMzBGRTAwMDM4MDAwMDAwRkUwMDAzMEZFMDAwMzAwMDAwMDBGRTAwMDMwRkUwMDAzCi0wMDAwMDAwRkYwMDA2MDdGMDAwNzAwMDAwMDA3RjAwMDYwN0YwMDA2MDAwMDAwMDdGMDAwNjA3RjAwMDYwMDAwMDAwN0Y4MDAKLUMwM0Y4MDBFMDAwMDAwMDNGODAwQzAzRjgwMEMwMDAwMDAwM0Y4MDBDMDNGODAwQzAwMDAwMDAzRkMwMTgwMUZDMDFDMDAwMAotMDAwMUZDMDE4MDFGQzAxODAwMDAwMDAxRkMwMTgwMUZDMDE4MDAwMDAwMDFGRTAzMDAwRkUwMzgwMDAwMDAwMEZFMDMwMDBGCi1FMDMwMDAwMDAwMDBGRTAzMDAwRkUwMzAwMDAwMDAwMEZGMDYwMDA3RjAzMDAwMDAwMDAwN0YwNjAwMDdGMDYwMDAwMDAwMDAKLTdGMDYwMDA3RjA2MDAwMDAwMDAwN0Y4QzAwMDNGODYwMDAwMDAwMDAzRjhDMDAwM0Y4QzAwMDAwMDAwMDNGOEMwMDAzRjhDMAotMDAwMDAwMDAzRkQ4MDAwMUZDQzAwMDAwMDAwMDFGRDgwMDAxRkQ4MDAwMDAwMDAwMUZEODAwMDFGRDgwMDAwMDAwMDAxRkYwCi0wMDAwRkY4MDAwMDAwMDAwMEZGMDAwMDBGRjAwMDAwMDAwMDAwRkYwMDAwMEZGMDAwMDAwMDAwMDBGRTAwMDAwN0YwMDAwMDAKLTAwMDAwN0UwMDAwMDdFMDAwMDAwMDAwMDA3RTAwMDAwN0UwMDAwMDAwMDAwMDdDMDAwMDAzRTAwMDAwMDAwMDAwM0MwMDAwMAotM0MwMDAwMDAwMDAwMDNDMDAwMDAzQzAwMDAwMDAwMDAwMzgwMDAwMDFDMDAwMDAwMDAwMDAxODAwMDAwMTgwMDAwMDA0QzM1Ci03RkIyNEY+ODcgRDwwMDdGODAwMDAwMDNGRkYwMDAwMDBGODBGQzAwMDAxQzAwM0UwMDAwM0YwMDNGMDAwMDNGODAxRjgwMDAKLTNGODAwRkMwMDAzRjgwMEZDMDAwM0Y4MDA3RTAwMDFGMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMAotMDAwN0UwMDAwMDAxRkZFMDAwMDAxRkZGRTAwMDAwRkY4N0UwMDAwM0ZDMDdFMDAwMEZGMDA3RTAwMDFGQzAwN0UwMDAzRjgwCi0wN0UwMDA3RjgwMDdFMDAwN0YwMDA3RTAwMEZGMDAwN0UwQzBGRTAwMDdFMEMwRkUwMDA3RTBDMEZFMDAwN0UwQzBGRTAwMEYKLUUwQzBGRTAwMEZFMEMwRkYwMDFGRTBDMDdGMDAzQkUwQzAzRjgwNzFGMTgwMUZDMUUxRkY4MDA3RkZDMEZGMDAwMEZFMDAzQwotMDAyMjIzN0RBMTI2Pjk3IEQ8MDNGMDAwMDAwMEZGRjAwMDAwMDBGRkYwMDAwMDAwRkZGMDAwMDAwMDA3RjAwMDAwMDAwM0YwCi0wMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAKLTAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwM0Y4MAotMDAwM0YwRkZFMDAwMDNGM0MwRjgwMDAzRjcwMDdFMDAwM0ZFMDAzRjAwMDNGQzAwMUY4MDAzRjgwMDBGQzAwM0YwMDAwRkMwCi0wM0YwMDAwN0UwMDNGMDAwMDdGMDAzRjAwMDA3RjAwM0YwMDAwM0YwMDNGMDAwMDNGODAzRjAwMDAzRjgwM0YwMDAwM0Y4MDMKLUYwMDAwM0Y4MDNGMDAwMDNGODAzRjAwMDAzRjgwM0YwMDAwM0Y4MDNGMDAwMDNGODAzRjAwMDAzRjgwM0YwMDAwM0Y4MDNGMAotMDAwM0YwMDNGMDAwMDdGMDAzRjAwMDA3RTAwM0YwMDAwN0UwMDNGMDAwMEZDMDAzRjgwMDBGQzAwM0ZDMDAxRjgwMDNFQzAwCi0zRjAwMDNDRjAwN0MwMDAzODM4MUY4MDAwMzAxRkZFMDAwMDAwMDdGMDAwMDI1MzU3RUIzMkI+STwwMDA3RjgwMDAwM0ZGRgotMDAwMEZDMDdDMDAxRjAwMEUwMDNFMDAzRjAwN0MwMDdGMDBGQzAwN0YwMUY4MDA3RjAzRjgwMDdGMDNGMDAwM0UwN0YwMDAwCi0wMDdGMDAwMDAwN0UwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAKLTAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwN0YwMDAwMDA3RjAwMDAwMDNGMDAwMDE4M0Y4MDAwMTgxRjgwMDAzODFGQzAwMAotMzAwRkMwMDA3MDA3RTAwMEUwMDNGMDAxQzAwMEZDMEY4MDAwM0ZGRTAwMDAwN0YwMDAxRDIzN0VBMTIyPkk8MDAwMDAwM0YKLTAwMDAwMDBGRkYwMDAwMDAwRkZGMDAwMDAwMEZGRjAwMDAwMDAwN0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMAotMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwCi0wMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDdGMDNGMDAwMDNGRkMzRjAwMDBGQzBGM0YwMDAxRjAKLTAzQkYwMDA3RTAwMUZGMDAwRkMwMDBGRjAwMUY4MDAwN0YwMDFGODAwMDNGMDAzRjAwMDAzRjAwM0YwMDAwM0YwMDdGMDAwMAotM0YwMDdFMDAwMDNGMDBGRTAwMDAzRjAwRkUwMDAwM0YwMEZFMDAwMDNGMDBGRTAwMDAzRjAwRkUwMDAwM0YwMEZFMDAwMDNGCi0wMEZFMDAwMDNGMDBGRTAwMDAzRjAwRkUwMDAwM0YwMEZFMDAwMDNGMDA3RTAwMDAzRjAwN0YwMDAwM0YwMDdGMDAwMDNGMDAKLTNGMDAwMDNGMDAxRjgwMDA3RjAwMUY4MDAwN0YwMDBGQzAwMEZGMDAwN0UwMDFGRjgwMDNGMDA3QkZGQzAwRjgxRTNGRkMwMAotM0ZGQzNGRkMwMDBGRTAzRjAwMjYzNTdEQjMyQj5JPDAwMEZFMDAwMDA3RkZDMDAwMEY4M0YwMDAzRjAwRjgwMDdFMDBGQzAKLTBGQzAwN0UwMUY4MDAzRTAxRjgwMDNGMDNGMDAwM0YwM0YwMDAxRjA3RjAwMDFGODdFMDAwMUY4N0UwMDAxRjhGRTAwMDFGOAotRkUwMDAxRjhGRkZGRkZGOEZGRkZGRkY4RkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMDdFMDAwMDAwCi03RjAwMDAwMDdGMDAwMDAwM0YwMDAwMTgzRjAwMDAxODFGODAwMDM4MEY4MDAwMzAwRkMwMDA3MDA3RTAwMEUwMDFGMDAzQzAKLTAwRkMwRjAwMDAzRkZFMDAwMDA3RjAwMDFEMjM3RUExMjI+STwwMDAxRkMwMDAwMDdGRjAwMDAxRjA3ODAwMDNFMEZDMDAwCi03QzFGQzAwMEZDMUZDMDAxRjgxRkMwMDFGODFGQzAwM0Y4MDcwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDMKLUYwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwRkZGRkYwMDBGRgotRkZGMDAwRkZGRkYwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzCi1GMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDMKLUYwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwNwotRjgwMDAwN0ZGRkUwMDA3RkZGRTAwMDdGRkZFMDAwMUEzNTdGQjQxNz5JPDAwMDAwMDFGMDAwMDFGQzA3RjgwMDBGRkY4RTMKLUMwMDFGMDdGQzdDMDA3RTAzRjAzQzAwRkMwMUY4MzgwMEY4MDBGODAwMDFGODAwRkMwMDAxRjAwMDdDMDAwM0YwMDA3RTAwMAotM0YwMDA3RTAwMDNGMDAwN0UwMDAzRjAwMDdFMDAwM0YwMDA3RTAwMDNGMDAwN0UwMDAxRjAwMDdDMDAwMUY4MDBGQzAwMDBGCi04MDBGODAwMDBGQzAxRjgwMDAwN0UwM0YwMDAwMDdGMDdDMDAwMDBFRkZGODAwMDAwQzFGQzAwMDAwMUMwMDAwMDAwMDFDMDAKLTAwMDAwMDFDMDAwMDAwMDAxRTAwMDAwMDAwMUUwMDAwMDAwMDFGMDAwMDAwMDAwRkZGRkUwMDAwMEZGRkZGQzAwMDA3RkZGRgotRjAwMDAzRkZGRkZDMDAwN0ZGRkZGRTAwMUYwMDAxRkUwMDNFMDAwMDdGMDA3QzAwMDAzRjAwN0MwMDAwMUY4MEY4MDAwMDBGCi04MEY4MDAwMDBGODBGODAwMDAwRjgwRjgwMDAwMEY4MEY4MDAwMDBGODBGQzAwMDAxRjgwN0MwMDAwMUYwMDNFMDAwMDNFMDAKLTFGMDAwMDdDMDAwRkMwMDFGODAwMDNGMDA3RTAwMDAwRkZGRjgwMDAwMDFGRkMwMDAwMjIzMzdFQTEyNj5JPDAzRjAwMDAwCi0wMEZGRjAwMDAwMDBGRkYwMDAwMDAwRkZGMDAwMDAwMDA3RjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAKLTAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwMwotRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMUZDMDAwMDNGMDdGRjAwMDAzRjFFMEZDMDAwM0YzCi04MDdDMDAwM0Y3MDA3RTAwMDNGRTAwN0UwMDAzRkMwMDNGMDAwM0ZDMDAzRjAwMDNGODAwM0YwMDAzRjgwMDNGMDAwM0YwMDAKLTNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRgotMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwCi0wM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDdGODAwN0Y4MEZGRkZDN0ZGRkNGRkZGQzdGRkZDRkYKLUZGQzdGRkZDMjYzNDdFQjMyQj5JPDA3ODAwRkMwMUZFMDFGRTAxRkUwMUZFMDBGQzAwNzgwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdFMEZGRTBGRkUwRkZFMDBGRTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDcKLUUwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDBGRjBGRgotRkZGRkZGRkZGRjEwMzM3RUIyMTU+STwwMDAzQzAwMDA3RTAwMDBGRjAwMDBGRjAwMDBGRjAwMDBGRjAwMDA3RTAwMDAzQzAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGMDAwRkZGMAotMDBGRkYwMDBGRkYwMDAwN0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwCi0wMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAKLTAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMAotMDAwM0YwMzgwM0YwN0MwM0YwRkUwM0UwRkUwN0UwRkUwN0MwRkUwRkMwN0MwRjgwMzgxRjAwMUZGQzAwMDdGMDAwMTQ0Mzg0Ci1CMjE3Pkk8MDdFMEZGRTBGRkUwRkZFMDBGRTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMAotMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwCi0wN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDA3RTAwN0UwMDdFMDBGRjBGRkZGRkZGRkZGRkYKLTEwMzQ3RUIzMTU+MTA4IEQ8MDNGMDFGRTAwMEZGMDAwMEZGRjA3RkY4MDNGRkMwMDBGRkYxRTA3QzBGMDNFMDAwRkZGMzgwCi0zRTFDMDFGMDAwMDdGNzAwM0YzODAxRjgwMDAzRkUwMDNGNzAwMUY4MDAwM0ZDMDAxRkUwMDBGQzAwMDNGQzAwMUZFMDAwRkMKLTAwMDNGODAwMUZDMDAwRkMwMDAzRjgwMDFGQzAwMEZDMDAwM0YwMDAxRjgwMDBGQzAwMDNGMDAwMUY4MDAwRkMwMDAzRjAwMAotMUY4MDAwRkMwMDAzRjAwMDFGODAwMEZDMDAwM0YwMDAxRjgwMDBGQzAwMDNGMDAwMUY4MDAwRkMwMDAzRjAwMDFGODAwMEZDCi0wMDAzRjAwMDFGODAwMEZDMDAwM0YwMDAxRjgwMDBGQzAwMDNGMDAwMUY4MDAwRkMwMDAzRjAwMDFGODAwMEZDMDAwM0YwMDAKLTFGODAwMEZDMDAwM0YwMDAxRjgwMDBGQzAwMDNGMDAwMUY4MDAwRkMwMDAzRjAwMDFGODAwMEZDMDAwM0YwMDAxRjgwMDBGQwotMDAwM0YwMDAxRjgwMDBGQzAwMDNGMDAwMUY4MDAwRkMwMDAzRjAwMDFGODAwMEZDMDAwN0Y4MDAzRkMwMDFGRTAwRkZGRkM3Ci1GRkZFM0ZGRkYwRkZGRkM3RkZGRTNGRkZGMEZGRkZDN0ZGRkUzRkZGRjAzQzIxN0VBMDQxPkk8MDNGMDFGQzAwMEZGRjA3RgotRjAwMEZGRjFFMEZDMDBGRkYzODA3QzAwMDdGNzAwN0UwMDAzRkUwMDdFMDAwM0ZDMDAzRjAwMDNGQzAwM0YwMDAzRjgwMDNGCi0wMDAzRjgwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAKLTAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwMwotRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDA3RjgwMDdGODBGRkZGCi1DN0ZGRkNGRkZGQzdGRkZDRkZGRkM3RkZGQzI2MjE3RUEwMkI+STwwMDA3RjAwMDAwMDAzRkZFMDAwMDAwRkMxRjgwMDAwMQotRjAwN0MwMDAwM0MwMDFFMDAwMDdDMDAxRjAwMDBGODAwMEY4MDAxRjAwMDA3QzAwMUYwMDAwN0MwMDNGMDAwMDdFMDAzRTAwCi0wMDNFMDA3RTAwMDAzRjAwN0UwMDAwM0YwMDdFMDAwMDNGMDBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAKLTNGODBGRTAwMDAzRjgwRkUwMDAwM0Y4MEZFMDAwMDNGODBGRTAwMDAzRjgwN0UwMDAwM0YwMDdFMDAwMDNGMDA3RTAwMDAzRgotMDAzRjAwMDA3RTAwM0YwMDAwN0UwMDFGMDAwMDdDMDAxRjgwMDBGQzAwMEZDMDAxRjgwMDA3QzAwMUYwMDAwM0YwMDdFMDAwCi0wMEZDMUY4MDAwMDAzRkZFMDAwMDAwMDdGMDAwMDAyMTIzN0VBMTI2Pkk8MDNGMDNGODAwMEZGRjBGRkUwMDBGRkYzQzBGOAotMDBGRkY3MDA3RTAwMDdGRTAwM0YwMDAzRkMwMDFGODAwM0Y4MDAxRkMwMDNGMDAwMEZDMDAzRjAwMDBGRTAwM0YwMDAwN0YwCi0wM0YwMDAwN0YwMDNGMDAwMDdGMDAzRjAwMDAzRjgwM0YwMDAwM0Y4MDNGMDAwMDNGODAzRjAwMDAzRjgwM0YwMDAwM0Y4MDMKLUYwMDAwM0Y4MDNGMDAwMDNGODAzRjAwMDAzRjgwM0YwMDAwM0Y4MDNGMDAwMDdGODAzRjAwMDA3RjAwM0YwMDAwN0YwMDNGMAotMDAwN0UwMDNGMDAwMEZFMDAzRjAwMDBGQzAwM0Y4MDAxRkMwMDNGQzAwM0Y4MDAzRkMwMDNGMDAwM0ZGMDBGQzAwMDNGMzgxCi1GODAwMDNGMUZGRTAwMDAzRjA3RjAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAKLTAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwN0Y4MDAwMDAwRkZGRkMwMDAwMAotRkZGRkMwMDAwMEZGRkZDMDAwMDAyNTMwN0VBMDJCPkk8MDNFMDdDMDBGRkUxRkYwMEZGRTM4RjgwRkZFNzFGQzAwN0VFMUYKLUMwMDNFQzFGQzAwM0VDMUZDMDAzRkMwRjgwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMAotMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwCi0wMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDA3RjgwMDAwRkZGRkUwMDBGRkZGRTAKLTAwRkZGRkUwMDAxQTIxN0ZBMDFFPjExNCBEPDAwRkYwNjAwMDdGRkNFMDAxRjAwRkUwMDNDMDAzRTAwNzgwMDFFMDA3ODAwCi0wRTAwRjAwMDBFMDBGMDAwMDYwMEYwMDAwNjAwRjgwMDA2MDBGODAwMDYwMEZFMDAwMDAwRkY4MDAwMDA3RkZDMDAwMDNGRkYKLUMwMDAzRkZGRjAwMDBGRkZGODAwMDdGRkZDMDAwMEZGRkUwMDAwMEZGRjAwMDAwMEZGMDAwMDAwM0Y4MEMwMDAxRjgwQzAwMAotMEY4MEUwMDAwNzgwRTAwMDA3ODBFMDAwMDc4MEYwMDAwNzgwRjAwMDA3MDBGODAwMEYwMEZDMDAwRTAwRkUwMDFDMDBGNzgwCi03ODAwRTFGRkUwMDBDMDdGODAwMDE5MjM3RUExMUU+STwwMDMwMDAwMDMwMDAwMDMwMDAwMDMwMDAwMDMwMDAwMDcwMDAwMAotNzAwMDAwNzAwMDAwRjAwMDAwRjAwMDAxRjAwMDAxRjAwMDAzRjAwMDA3RjAwMDFGRkZGRUZGRkZGRUZGRkZGRTAzRjAwMDAzCi1GMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDMKLUYwMDAwM0YwMDAwM0YwMDMwM0YwMDMwM0YwMDMwM0YwMDMwM0YwMDMwM0YwMDMwM0YwMDMwM0YwMDMwM0YwMDcwMUY4MDYwMQotRjgwNjAwRkMwRTAwN0UxQzAwMUZGODAwMDdFMDE4MkY3RkFEMUU+STwwM0YwMDAzRjAwRkZGMDBGRkYwMEZGRjAwRkZGMDAKLUZGRjAwRkZGMDAwN0YwMDA3RjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwMwotRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwCi0wMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAzRjAwMDNGMDAwM0YwMDAKLTdGMDAwM0YwMDA3RjAwMDNGMDAwN0YwMDAzRjAwMEZGMDAwMUYwMDBGRjAwMDFGODAxRkY4MDAwRjgwM0JGRkMwMDdFMDczRgotRkMwMDFGRkUzRkZDMDAwN0Y4M0YwMDI2MjI3RUEwMkI+STxGRkZGMUZGRjgxRkZGMEZGRkYxRkZGODFGRkYwRkZGRjFGRkYKLTgxRkZGMDA3RjgwMUZDMDAzRjgwMDdGMDAxRjgwMDFFMDAwM0YwMDBGODAwMUMwMDAzRjAwMEZDMDAxQzAwMDFGODAwN0MwMAotMTgwMDAxRjgwMDdDMDAxODAwMDFGQzAwN0UwMDM4MDAwMEZDMDBGRTAwMzAwMDAwRkMwMEZFMDAzMDAwMDA3RTAxRkYwMDYwCi0wMDAwN0UwMTlGMDA2MDAwMDA3RTAxOUY4MDYwMDAwMDNGMDMwRjgwQzAwMDAwM0YwMzBGODBDMDAwMDAzRjAzMEZDMEMwMDAKLTAwMUY4NjA3QzE4MDAwMDAxRjg2MDdDMTgwMDAwMDFGQzYwN0UzODAwMDAwMEZDQzAzRTMwMDAwMDAwRkNDMDNFMzAwMDAwMAotMDdGQzAzRjYwMDAwMDAwN0Y4MDFGNjAwMDAwMDA3RjgwMUZFMDAwMDAwMDNGMDAwRkMwMDAwMDAwM0YwMDBGQzAwMDAwMDAzCi1GMDAwRkMwMDAwMDAwMUUwMDA3ODAwMDAwMDAxRTAwMDc4MDAwMDAwMDFFMDAwNzgwMDAwMDAwMEMwMDAzMDAwMDAzNDIxN0YKLTlGMzc+MTE5IEQ8N0ZGRjgwN0ZGODdGRkY4MDdGRjg3RkZGODA3RkY4MDdGODAwMUZDMDAzRjgwMDBGODAwMUY4MDAwNzAwCi0wMUY4MDAwNjAwMDBGQzAwMEMwMDAwRkMwMDBDMDAwMEZFMDAxQzAwMDA3RTAwMTgwMDAwN0UwMDE4MDAwMDNGMDAzMDAwMDAKLTNGMDAzMDAwMDAzRjgwNzAwMDAwMUY4MDYwMDAwMDFGQzBFMDAwMDAwRkMwQzAwMDAwMEZDMEMwMDAwMDA3RTE4MDAwMDAwNwotRTE4MDAwMDAwN0YzODAwMDAwMDNGMzAwMDAwMDAzRkIwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAwRkMwMDAwMDAwMEZDCi0wMDAwMDAwMEZDMDAwMDAwMDA3ODAwMDAwMDAwNzgwMDAwMDAwMDMwMDAwMDAwMDAzMDAwMDAwMDAwNjAwMDAwMDAwMDYwMDAKLTAwMDAwMEUwMDAwMDAwMDBDMDAwMDAwMDAwQzAwMDAwMDAwMTgwMDAwMDc4MDE4MDAwMDBGQzAzMDAwMDAwRkMwMzAwMDAwMAotRkMwNjAwMDAwMEZDMEUwMDAwMDA3MDFDMDAwMDAwNzgzODAwMDAwMDFGRjAwMDAwMDAwRkMwMDAwMDAwMjUzMDdGOUYyOT4KLTEyMSBEIEUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZvIGVjYngwOTAwIDkgNwotL0ZvIDcgMTE3IGRmPDAwMDAwMDFGODAwMDAwMDAwMDAwMDAxRjgwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDNGQzAKLTAwMDAwMDAwMDAwMDdGRTAwMDAwMDAwMDAwMDA3RkUwMDAwMDAwMDAwMDAwN0ZFMDAwMDAwMDAwMDAwMEZGRjAwMDAwMDAwMAotMDAwMEZGRjAwMDAwMDAwMDAwMDFGRkY4MDAwMDAwMDAwMDAxRkZGODAwMDAwMDAwMDAwMUZGRjgwMDAwMDAwMDAwMDNGRkZDCi0wMDAwMDAwMDAwMDNGRkZDMDAwMDAwMDAwMDA3RkZGRTAwMDAwMDAwMDAwN0NGRkUwMDAwMDAwMDAwMDdDRkZFMDAwMDAwMDAKLTAwMEZDRkZGMDAwMDAwMDAwMDBGODdGRjAwMDAwMDAwMDAxRjg3RkY4MDAwMDAwMDAwMUYwM0ZGODAwMDAwMDAwMDNGMDNGRgotQzAwMDAwMDAwMDNFMDFGRkMwMDAwMDAwMDAzRTAxRkZDMDAwMDAwMDAwN0UwMUZGRTAwMDAwMDAwMDdDMDBGRkUwMDAwMDAwCi0wMEZDMDBGRkYwMDAwMDAwMDBGODAwN0ZGMDAwMDAwMDAwRjgwMDdGRjAwMDAwMDAwMUY4MDA3RkY4MDAwMDAwMDFGMDAwM0YKLUY4MDAwMDAwMDNGMDAwM0ZGQzAwMDAwMDAzRTAwMDFGRkMwMDAwMDAwM0UwMDAxRkZDMDAwMDAwMDdGRkZGRkZGRTAwMDAwMAotMDdGRkZGRkZGRTAwMDAwMDBGRkZGRkZGRkYwMDAwMDAwRkZGRkZGRkZGMDAwMDAwMUY4MDAwMDdGRjgwMDAwMDFGMDAwMDAzCi1GRjgwMDAwMDFGMDAwMDAzRkY4MDAwMDAzRjAwMDAwM0ZGQzAwMDAwM0UwMDAwMDFGRkMwMDAwMDdFMDAwMDAxRkZFMDAwMDAKLTdDMDAwMDAwRkZFMDAwMDA3QzAwMDAwMEZGRTAwMDAwRkMwMDAwMDBGRkYwMDAwMEY4MDAwMDAwN0ZGMDAwRkZGRkYwMDAzRgotRkZGRkYwRkZGRkYwMDAzRkZGRkZGMEZGRkZGMDAwM0ZGRkZGRjBGRkZGRjAwMDNGRkZGRkYwM0MzNDdEQjM0Mz42NQotRDwwMDdGRkUwMDAwMDNGRkZGRTAwMDA3RkZGRkY4MDAwRkYwMEZGQzAwMUZGODAzRkYwMDFGRjgwMUZGMDAxRkY4MDBGRjgwCi0xRkY4MDBGRkMwMUZGODAwN0ZDMDBGRjAwMDdGQzAwN0UwMDA3RkMwMDE4MDAwN0ZDMDAwMDAwMDdGQzAwMDAwN0ZGRkMwMDAKLTBGRkZGRkMwMDBGRkZGRkZDMDAzRkZGMDdGQzAwRkZGMDA3RkMwMUZGODAwN0ZDMDNGRjAwMDdGQzA3RkUwMDA3RkMwRkZDMAotMDA3RkMwRkY4MDAwN0ZDMEZGODAwMDdGQzBGRjgwMDA3RkMwRkY4MDAwRkZDMEZGQzAwMEZGQzA3RkMwMDFGRkMwN0ZFMDAzCi1GRkUwM0ZGODBGQkZGRjBGRkZGRjFGRkYwM0ZGRkMwRkZGMDA3RkUwMDdGRjI4MjE3RUEwMkI+OTcKLUQ8MDFGQzAwMDAwMDAwRkZGQzAwMDAwMDAwRkZGQzAwMDAwMDAwRkZGQzAwMDAwMDAwRkZGQzAwMDAwMDAwMEZGQzAwMDAwMAotMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwCi0wMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAKLTAwMDdGQzAwMDAwMDAwMDdGQzBGRjgwMDAwMDdGQzdGRkYwMDAwMDdGREZGRkZDMDAwMDdGRkYwMUZGMDAwMDdGRjgwMEZGOAotMDAwN0ZGMDAwN0ZDMDAwN0ZFMDAwM0ZFMDAwN0ZDMDAwMUZGMDAwN0ZDMDAwMUZGMDAwN0ZDMDAwMUZGODAwN0ZDMDAwMEZGCi04MDA3RkMwMDAwRkY4MDA3RkMwMDAwRkZDMDA3RkMwMDAwRkZDMDA3RkMwMDAwRkZDMDA3RkMwMDAwRkZDMDA3RkMwMDAwRkYKLUMwMDdGQzAwMDBGRkMwMDdGQzAwMDBGRkMwMDdGQzAwMDBGRkMwMDdGQzAwMDBGRkMwMDdGQzAwMDBGRjgwMDdGQzAwMDBGRgotODAwN0ZDMDAwMUZGODAwN0ZDMDAwMUZGMDAwN0ZDMDAwMUZGMDAwN0ZFMDAwM0ZFMDAwN0ZGMDAwN0ZDMDAwN0ZGODAwRkY4Ci0wMDA3RjdFMDNGRjAwMDA3RTFGRkZGQzAwMDA3QzA3RkZGMDAwMDA3ODAxRkYwMDAwMDJBMzQ3REIzMzE+STwwMDA3RkY4MAotMDAwMDNGRkZGMDAwMDBGRkZGRkMwMDAzRkUwMUZFMDAwN0ZDMDNGRjAwMEZGODAzRkYwMDFGRjAwM0ZGMDAzRkUwMDNGRjAwCi0zRkUwMDNGRjAwN0ZFMDAxRkUwMDdGQzAwMEZDMDA3RkMwMDAzMDAwRkZDMDAwMDAwMEZGQzAwMDAwMDBGRkMwMDAwMDAwRkYKLUMwMDAwMDAwRkZDMDAwMDAwMEZGQzAwMDAwMDBGRkMwMDAwMDAwRkZDMDAwMDAwMEZGQzAwMDAwMDA3RkMwMDAwMDAwN0ZFMAotMDAwMDAwN0ZFMDAwMDAwMDNGRTAwMDA3ODAzRkYwMDAwNzgwMUZGODAwMEY4MDBGRjgwMDFGMDAwN0ZFMDAzRTAwMDNGRjgwCi1GQzAwMDBGRkZGRjgwMDAwM0ZGRkUwMDAwMDA3RkYwMDAwMjEyMTdEQTAyNz5JPDAxRjgxRjgwRkZGODdGRjBGRkY4RkZGOAotRkZGOUUzRkNGRkZCQzdGRTBGRkY4N0ZFMDdGRjA3RkUwN0ZGMDdGRTA3RkUwN0ZFMDdGRTAzRkMwN0ZFMDFGODA3RkUwMDYwCi0wN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAKLTA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDBGRkZGRjAwMAotRkZGRkYwMDBGRkZGRjAwMEZGRkZGMDAwMUYyMTdFQTAyND4xMTQgRDwwMEZGRTFDMDA3RkZGRkMwMEZGRkZGQzAzRjgwM0YKLUMwN0UwMDBGQzA3RTAwMDdDMEZDMDAwN0MwRkMwMDAzQzBGRTAwMDNDMEZFMDAwM0MwRkY4MDAwMDBGRkZDMDAwMEZGRkZFMAotMDA3RkZGRkMwMDdGRkZGRTAwM0ZGRkZGODAwRkZGRkZDMDA3RkZGRkUwMDBGRkZGRTAwMDBGRkZGMDAwMDA3RkYwMDAwMDBGCi1GMEYwMDAwN0YwRjAwMDAzRjBGODAwMDNGMEY4MDAwM0YwRkMwMDAzRTBGRTAwMDdFMEZGMDAwRkMwRkZDMDFGODBGRkZGRkYKLTAwRjlGRkZDMDBFMDNGRTAwMDFDMjE3REEwMjM+STwwMDNDMDAwMDAwM0MwMDAwMDAzQzAwMDAwMDNDMDAwMDAwM0MwMDAwCi0wMDdDMDAwMDAwN0MwMDAwMDA3QzAwMDAwMEZDMDAwMDAwRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAzRkMwMDAwMDdGQzAwMDAKLTFGRkZGRjgwRkZGRkZGODBGRkZGRkY4MEZGRkZGRjgwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMAotMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwCi0wN0ZDMDAwMDA3RkMwMDAwMDdGQzAzQzAwN0ZDMDNDMDA3RkMwM0MwMDdGQzAzQzAwN0ZDMDNDMDA3RkMwM0MwMDdGQzAzQzAKLTA3RkUwNzgwMDNGRTA3ODAwMUZGMEYwMDAwRkZGRTAwMDAzRkZDMDAwMDBGRjAwMDFBMkY3RUFFMjI+SQotRQotJUVuZERWSVBTQml0bWFwRm9udAotJURWSVBTQml0bWFwRm9udDogRnAgZWNzczA5MDAgOSA0NgotL0ZwIDQ2IDEyMiBkZjwwMDA3RTAzRjgwMDAwRkY4M0Y4MDAwM0ZGODNGODAwMDdGRjgzRjgwMDA3RkY4M0Y4MDAwRkMxODNGCi04MDAwRjgwODNGODAwMUY4MDAwMDAwMDFGMDAwMDAwMDAxRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAKLTAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwMwotRjAwMDAwMDAwM0YwMDAwMDAwRkZGRkY4MUY4MEZGRkZGODFGODBGRkZGRjgxRjgwRkZGRkY4MUY4MEZGRkZGODFGODAwM0YwCi0wMDFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAwM0YwMDAKLTFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRgotODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRjgwCi0wM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAwM0YwMDAxRjgwMDNGMDAwMUY4MDAzRjAwMDFGODAyMTM3N0ZCNjI5PgotMjggRDwwMDAwMDAzODAwMzgwMDAwMDAwMDdDMDA3QzAwMDAwMDAwN0MwMDdDMDAwMDAwMDA3QzAwN0MwMDAwMDAwMEZDMDAKLUZDMDAwMDAwMDBGODAwRjgwMDAwMDAwMEY4MDBGODAwMDAwMDAwRjgwMEY4MDAwMDAwMDBGODAwRjgwMDAwMDAwMUY4MDFGOAotMDAwMDAwMDFGMDAxRjAwMDAwMDAwMUYwMDFGMDAwMDAwMDAxRjAwMUYwMDAwMDAwMDFGMDAxRjAwMDAwMDAwM0YwMDNGMDAwCi0wMDAwMDNFMDAzRTAwMDAwMDAwM0UwMDNFMDAwMDAwMDAzRTAwM0UwMDAwMDAwMDNFMDAzRTAwMDAwMDAwN0UwMDdFMDAwMDAKLTAwMDdDMDA3QzAwMDAwMDAwN0MwMDdDMDAwMDAwMDA3QzAwN0MwMDAwMDAwMDdDMDA3QzAwMDNGRkZGRkZGRkZGRkY4RkZGRgotRkZGRkZGRkZGRUZGRkZGRkZGRkZGRkZFRkZGRkZGRkZGRkZGRkVGRkZGRkZGRkZGRkZGRTAwMDAzRjAwM0YwMDAwMDAwMDNFCi0wMDNFMDAwMDAwMDAzRTAwM0UwMDAwMDAwMDNFMDAzRTAwMDAwMDAwM0UwMDNFMDAwMDAwMDAzRTAwM0UwMDAwMDAwMDdFMDAKLTdFMDAwMDAwMDA3QzAwN0MwMDAwMDAwMDdDMDA3QzAwMDAwMDAwN0MwMDdDMDAwMDAwMDA3QzAwN0MwMDAwMDAwMEZDMDBGQwotMDAwMEZGRkZGRkZGRkZGRkZFRkZGRkZGRkZGRkZGRkVGRkZGRkZGRkZGRkZGRUZGRkZGRkZGRkZGRkZFM0ZGRkZGRkZGRkZGCi1GODAwMDNFMDAzRTAwMDAwMDAwM0UwMDNFMDAwMDAwMDAzRTAwM0UwMDAwMDAwMDdFMDA3RTAwMDAwMDAwN0MwMDdDMDAwMDAKLTAwMDdDMDA3QzAwMDAwMDAwN0MwMDdDMDAwMDAwMDBGQzAwRkMwMDAwMDAwMEY4MDBGODAwMDAwMDAwRjgwMEY4MDAwMDAwMAotMEY4MDBGODAwMDAwMDAxRjgwMUY4MDAwMDAwMDFGMDAxRjAwMDAwMDAwMUYwMDFGMDAwMDAwMDAxRjAwMUYwMDAwMDAwMDFGCi0wMDFGMDAwMDAwMDAzRjAwM0YwMDAwMDAwMDNFMDAzRTAwMDAwMDAwM0UwMDNFMDAwMDAwMDAzRTAwM0UwMDAwMDAwMDdFMDAKLTdFMDAwMDAwMDA3QzAwN0MwMDAwMDAwMDdDMDA3QzAwMDAwMDAwN0MwMDdDMDAwMDAwMDAzODAwMzgwMDAwMDAzNzQ3N0NCNQotNDA+MzUgRDxGRUZFRkVGRUZFRkVGRTA3MDc3OTg2MTU+NDYgRDwwMDAwMDA3MDAwMDAwMEY4MDAwMDAwRjgwMDAwMDFGODAwCi0wMDAxRjAwMDAwMDFGMDAwMDAwM0YwMDAwMDAzRTAwMDAwMDNFMDAwMDAwN0UwMDAwMDA3QzAwMDAwMDdDMDAwMDAwRkMwMDAKLTAwMEY4MDAwMDAwRjgwMDAwMDFGODAwMDAwMUYwMDAwMDAxRjAwMDAwMDNGMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDdFMDAwMAotMDA3QzAwMDAwMDdDMDAwMDAwRkMwMDAwMDBGODAwMDAwMEY4MDAwMDAxRjgwMDAwMDFGMDAwMDAwMUYwMDAwMDAzRjAwMDAwCi0wM0UwMDAwMDAzRTAwMDAwMDdFMDAwMDAwN0MwMDAwMDA3QzAwMDAwMEZDMDAwMDAwRjgwMDAwMDFGODAwMDAwMUYwMDAwMDAKLTFGMDAwMDAwM0YwMDAwMDAzRTAwMDAwMDNFMDAwMDAwN0UwMDAwMDA3QzAwMDAwMDdDMDAwMDAwRkMwMDAwMDBGODAwMDAwMAotRjgwMDAwMDFGODAwMDAwMUYwMDAwMDAxRjAwMDAwMDNGMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDdFMDAwMDAwN0MwMDAwMDA3Ci1DMDAwMDAwRkMwMDAwMDBGODAwMDAwMEY4MDAwMDAxRjgwMDAwMDFGMDAwMDAwMUYwMDAwMDAzRjAwMDAwMDNFMDAwMDAwM0UKLTAwMDAwMDdFMDAwMDAwN0MwMDAwMDA3QzAwMDAwMEZDMDAwMDAwRjgwMDAwMDBGODAwMDAwMDcwMDAwMDAwMUQ0QjdDQjcyNgotPkk8MDAwRkUwMDAwMDdGRkMwMDAwRkZGRTAwMDFGRkZGMDAwM0ZGRkY4MDA3RjgzRkMwMEZFMDBGRTAxRkMwMDdGMDFGODAKLTAzRjAxRjAwMDFGMDNGMDAwMUY4M0YwMDAxRjgzRTAwMDBGODdFMDAwMEZDN0UwMDAwRkM3RTAwMDBGQzdDMDAwMDdDRkMwMAotMDA3RUZDMDAwMDdFRkMwMDAwN0VGQzAwMDA3RUZDMDAwMDdFRkMwMDAwN0VGQzAwMDA3RUZDMDAwMDdFRkMwMDAwN0VGQzAwCi0wMDdFRkMwMDAwN0VGQzAwMDA3RUZDMDAwMDdFRkMwMDAwN0VGQzAwMDA3RUZDMDAwMDdFRkMwMDAwN0VGQzAwMDA3RUZDMDAKLTAwN0U3RTAwMDBGQzdFMDAwMEZDN0UwMDAwRkM3RTAwMDBGQzdFMDAwMEZDM0YwMDAxRjgzRjAwMDFGODNGODAwM0Y4MUY4MAotMDNGMDFGQzAwN0YwMEZFMDBGRTAwN0Y4M0ZDMDA3RkZGRkMwMDNGRkZGODAwMEZGRkUwMDAwN0ZGQzAwMDAwRkUwMDAxRjM1Ci03REIyMjY+STwwMDFGRTAwMDAwRkZGQzAwMDNGRkZGMDAwN0ZGRkY4MDBGRkZGRkMwMUZGMDNGRTAzRkMwMEZGMDdGMDAwNwotRjAzRTAwMDNGMDFDMDAwM0Y4MUMwMDAxRjgwODAwMDFGODAwMDAwMUY4MDAwMDAzRjgwMDAwMDNGODAwMDAwM0YwMDAwMDAzCi1GMDAwMDAwN0YwMDAwMDBGRTAwMDAwMUZFMDAwMDAzRkMwMDAwMUZGODAwMDdGRkYwMDAwN0ZGRTAwMDA3RkY4MDAwMDdGRkMKLTAwMDA3RkZGMDAwMDAwM0ZDMDAwMDAwRkUwMDAwMDA3RjAwMDAwMDNGODAwMDAwMUY4MDAwMDAxRkMwMDAwMDFGQzAwMDAwMAotRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkU0MDAwMDFGQzYwMDAwMUZDNzAwMDAxCi1GQ0Y4MDAwM0Y4RkMwMDA3Rjg3RjAwMEZGMDNGRTAzRkUwMUZGRkZGQzAwRkZGRkY4MDAzRkZGRjAwMDBGRkZDMDAwMDFGRTAKLTAwMUYzNTdEQjIyNj41MSBEPDFGRkZGRkYwMUZGRkZGRjAxRkZGRkZGMDFGRkZGRkYwMUZGRkZGRjAxRjgwMDAwMDFGODAwMAotMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwCi0wMDFGODAwMDAwMUY4N0UwMDAxRkJGRkMwMDFGRkZGRTAwMUZGRkZGMDAxRkZGRkY4MDFGRjgzRkMwMUZFMDBGRTAxRkMwMDcKLUYwMUY4MDA3RjAxRjgwMDNGODFGMDAwM0Y4MDAwMDAzRjgwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMQotRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwM0Y4MjAwMDAzRjgzMDAwMDNGODcwMDAwN0YwNzgwMDA3Ci1GMEZDMDAwRkUwN0YwMDFGQzAzRkMwN0ZDMDFGRkZGRjgwMEZGRkZFMDAwN0ZGRkMwMDAxRkZGMDAwMDAzRkMwMDAxRTMzN0QKLUIwMjY+NTMgRDwwMDBGRTAwMDAwN0ZGODAwMDBGRkZFMDAwMUZGRkYwMDAzRkZGRjgwMDdGODNGQzAwRkUwMEZFMDFGQzAwNwotRTAxRjgwMDNGMDNGMDAwMUYwN0UwMDAxRjg3RTAwMDFGODdFMDAwMEY4RkMwMDAwRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMDAwCi03Q0ZDMDAwMDdDRkMwMDAwN0VGQzAwMDA3RUZDMDAwMDdFRkMwMDAwN0VGQzAwMDA3RUZDMDAwMEZFN0UwMDAwRkU3RTAwMDAKLUZFN0UwMDAxRkU3RjAwMDFGRTNGMDAwM0ZFM0Y4MDA3RkUxRkMwMEZGRTBGRjAzRjdFMEZGRkZFN0UwN0ZGRkNGQzAzRkZGOAotRkMwMUZGRTBGQzAwN0YwMEZDMDAwMDAwRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAzRjAwMDAwMDNGMDAwMDAwN0UwMDAwMDA3Ci1FMDAwMDAwRkMwMDgwMDFGODAwQzAwN0YwMDFGODFGRjAwMUZGRkZFMDAzRkZGRjgwMDFGRkZGMDAwMDdGRkMwMDAwMEZGMDAKLTAwMUYzNTdEQjIyNj41NyBEPEZFRkVGRUZFRkVGRUZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRQotRkVGRUZFRkVGRUZFMDcyMTc5QTAxNT5JPDAwMDAwN0Y4MDAwMDAwMDA3RkZGMDAwMDAwMDFGRkZGQzAwMDAwMDdGRkZGRTAKLTAwMDAwRkZGRkZGMDAwMDAxRkY4MEZGODAwMDA3RkMwMDNGQzAwMDBGRjgwMDBGQzAwMDFGRTAwMDBGRTAwMDFGQzAwMDA3RQotMDAwM0Y4MDA3RTdGMDAwN0YwMDFGRkJGMDAwRkUwMDdGRkZGMDAwRkMwMEZGRkZGODAxRkMwMUZGRkZGODAxRjgwM0ZDM0ZGCi04MDNGODA3RjAwRkY4MDNGMDA3RTAwN0Y4MDNGMDBGQzAwM0ZDMDdFMDBGQzAwM0ZDMDdFMDFGODAwMUZDMDdFMDFGODAwMUYKLUMwRkUwMUY4MDAxRkMwRkMwM0YwMDAwRkMwRkMwM0YwMDAwRkMwRkMwM0YwMDAwRkMwRkMwM0YwMDAwRkMwRkMwM0YwMDAwRgotQzBGQzAzRjAwMDBGQzBGQzAzRjAwMDBGQzBGQzAzRjAwMDBGQzBGQzAzRjAwMDBGQzBGQzAzRjAwMDBGQzBGRTAxRjgwMDFGCi04MDdFMDFGODAwMUY4MDdFMDFGODAwMUY4MDdFMDBGQzAwM0YwMDNGMDBGQzAwM0YwMDNGMDA3RTAwN0UwMDNGODA3RjAwRkUKLTAwMUY4MDNGQzNGQzAwMUZDMDFGRkZGODAwMEZDMDBGRkZGMDAwMEZFMDA3RkZFMDAwMDdGMDAxRkY4MDAwMDNGODAwN0UwMAotMDAwMUZDMDAwMDAwMDAwMUZFMDAwMDAwMDAwMEZGODAwMDBGQzAwMDdGQzAwMDNGODAwMDFGRjgwM0ZGMDAwMDBGRkZGRkZFCi0wMDAwMDdGRkZGRjgwMDAwMDFGRkZGRjAwMDAwMDA3RkZGODAwMDAwMDAwN0ZDMDAwMDJBMzg3Q0I2MzM+NjQKLUQ8MDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDNGRjAwMDAwMDAwMDNGRjAwMDAwMDAwMDNGRjAwMAotMDAwMDAwN0RGODAwMDAwMDAwNzlGODAwMDAwMDAwRjlGQzAwMDAwMDAwRjhGQzAwMDAwMDAwRjhGQzAwMDAwMDAxRjBGRTAwCi0wMDAwMDFGMEZFMDAwMDAwMDFGMDdFMDAwMDAwMDNFMDdGMDAwMDAwMDNFMDdGMDAwMDAwMDdFMDNGODAwMDAwMDdDMDNGODAKLTAwMDAwN0MwM0Y4MDAwMDAwRkMwMUZDMDAwMDAwRjgwMUZDMDAwMDAwRjgwMUZDMDAwMDAxRjgwMEZFMDAwMDAxRjAwMEZFMAotMDAwMDNGMDAwN0YwMDAwMDNGMDAwN0YwMDAwMDNFMDAwN0YwMDAwMDdFMDAwM0Y4MDAwMDdDMDAwM0Y4MDAwMDdDMDAwM0Y4Ci0wMDAwRkMwMDAxRkMwMDAwRjgwMDAxRkMwMDAxRjgwMDAxRkUwMDAxRkZGRkZGRkUwMDAxRkZGRkZGRkUwMDAzRkZGRkZGRkYKLTAwMDNGRkZGRkZGRjAwMDNGRkZGRkZGRjAwMDdFMDAwMDAzRjgwMDdDMDAwMDAzRjgwMEZDMDAwMDAzRkMwMEZDMDAwMDAxRgotQzAwRjgwMDAwMDFGQzAxRjgwMDAwMDFGRTAxRjgwMDAwMDBGRTAxRjAwMDAwMDBGRTAzRjAwMDAwMDA3RjAzRTAwMDAwMDA3Ci1GMDdFMDAwMDAwMDdGODdFMDAwMDAwMDNGODdDMDAwMDAwMDNGOEZDMDAwMDAwMDFGQzJFMzQ3RUIzMzM+STwwMDAwMEZGQwotMDAwMDAwN0ZGRkMwMDAwM0ZGRkZGMDAwMDdGRkZGRkMwMDFGRkZGRkZDMDAzRkY4MDdGQzAwN0ZDMDAwRjgwMEZGMDAwMDc4Ci0wMUZFMDAwMDE4MDNGQzAwMDAwODA3RjgwMDAwMDAwN0YwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAxRkMwMDAwMDAwMUYKLUMwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwRkUwMAotMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwCi0wMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAKLTAwN0YwMDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMAotMDdGMDAwMDAwMDA3RjgwMDAwMDAwM0ZDMDAwMDAyMDFGRTAwMDAwNjAwRkYwMDAwMUUwMDdGQzAwMDdFMDAzRkY4MDNGRTAwCi0xRkZGRkZGRTAwMDdGRkZGRkMwMDAzRkZGRkYwMDAwMDdGRkZDMDAwMDAwRkZFMDAyNzM4N0JCNTMxPjY3Ci1EPEZGRkZGRjgwMDAwMEZGRkZGRkYwMDAwMEZGRkZGRkZDMDAwMEZGRkZGRkZGMDAwMEZGRkZGRkZGQzAwMEZFMDAwMUZGRTAKLTAwRkUwMDAwM0ZGMDAwRkUwMDAwMEZGODAwRkUwMDAwMDdGQzAwRkUwMDAwMDFGRTAwRkUwMDAwMDBGRTAwRkUwMDAwMDBGRgotMDBGRTAwMDAwMDdGMDBGRTAwMDAwMDNGODBGRTAwMDAwMDNGODBGRTAwMDAwMDFGQzBGRTAwMDAwMDFGQzBGRTAwMDAwMDBGCi1FMEZFMDAwMDAwMEZFMEZFMDAwMDAwMEZFMEZFMDAwMDAwMDdFMEZFMDAwMDAwMDdGMEZFMDAwMDAwMDdGMEZFMDAwMDAwMDcKLUYwRkUwMDAwMDAwN0YwRkUwMDAwMDAwN0YwRkUwMDAwMDAwN0YwRkUwMDAwMDAwN0YwRkUwMDAwMDAwN0YwRkUwMDAwMDAwNwotRjBGRTAwMDAwMDA3RjBGRTAwMDAwMDA3RjBGRTAwMDAwMDA3RTBGRTAwMDAwMDBGRTBGRTAwMDAwMDBGRTBGRTAwMDAwMDBGCi1DMEZFMDAwMDAwMUZDMEZFMDAwMDAwMUZDMEZFMDAwMDAwM0Y4MEZFMDAwMDAwN0Y4MEZFMDAwMDAwN0YwMEZFMDAwMDAwRkYKLTAwRkUwMDAwMDFGRTAwRkUwMDAwMDNGQzAwRkUwMDAwMEZGODAwRkUwMDAwM0ZGMDAwRkUwMDAxRkZFMDAwRkZGRkZGRkZDMAotMDBGRkZGRkZGRjAwMDBGRkZGRkZGRTAwMDBGRkZGRkZGMDAwMDBGRkZGRkY4MDAwMDAyQzM0NzlCMzM4Pkk8RkZGRkZGRkYKLUMwRkZGRkZGRkZDMEZGRkZGRkZGQzBGRkZGRkZGRkMwRkZGRkZGRkZDMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMAotRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFCi0wMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZGRkYKLUZGRkYwMEZGRkZGRkZGMDBGRkZGRkZGRjAwRkZGRkZGRkYwMEZGRkZGRkZGMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMAotMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwCi0wMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDAKLUZFMDAwMDAwMDBGRTAwMDAwMDAwRkZGRkZGRkZFMEZGRkZGRkZGRTBGRkZGRkZGRkUwRkZGRkZGRkZFMEZGRkZGRkZGRTBGRgotRkZGRkZGRTAyMzM0NzlCMzJFPkk8RkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkUKLUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRUZFRkVGRTA3MzQ3OUIzMTU+NzMKLUQ8RkY4MDAwMDAwMDdGQzBGRkMwMDAwMDAwRkZDMEZGQzAwMDAwMDBGRkMwRkZDMDAwMDAwMEZGQzBGRkUwMDAwMDAxRkZDMAotRkZFMDAwMDAwMUZGQzBGREUwMDAwMDAxRUZDMEZERjAwMDAwMDNFRkMwRkRGMDAwMDAwM0VGQzBGQ0Y4MDAwMDA3Q0ZDMEZDCi1GODAwMDAwN0NGQzBGQ0Y4MDAwMDA3Q0ZDMEZDN0MwMDAwMEY4RkMwRkM3QzAwMDAwRjhGQzBGQzdDMDAwMDBGOEZDMEZDN0UKLTAwMDAxRjhGQzBGQzNFMDAwMDFGMEZDMEZDM0YwMDAwM0YwRkMwRkMzRjAwMDAzRjBGQzBGQzFGMDAwMDNFMEZDMEZDMUY4MAotMDA3RTBGQzBGQzFGODAwMDdFMEZDMEZDMEY4MDAwN0MwRkMwRkMwRkMwMDBGQzBGQzBGQzA3QzAwMEY4MEZDMEZDMDdFMDAxCi1GODBGQzBGQzA3RTAwMUY4MEZDMEZDMDNFMDAxRjAwRkMwRkMwM0YwMDNGMDBGQzBGQzAzRjAwM0YwMEZDMEZDMDFGMDAzRTAKLTBGQzBGQzAxRjgwN0UwMEZDMEZDMDFGODA3RTAwRkMwRkMwMEY4MDdDMDBGQzBGQzAwRkMwRkMwMEZDMEZDMDA3QzBGODAwRgotQzBGQzAwN0MwRjgwMEZDMEZDMDA3RTFGODAwRkMwRkMwMDNFMUYwMDBGQzBGQzAwM0UxRjAwMEZDMEZDMDAzRjNGMDAwRkMwCi1GQzAwMUYzRTAwMEZDMEZDMDAxRjNFMDAwRkMwRkMwMDBGM0MwMDBGQzBGQzAwMEZGQzAwMEZDMEZDMDAwRkZDMDAwRkMwRkMKLTAwMDdGODAwMEZDMEZDMDAwN0Y4MDAwRkMwRkMwMDA3RjgwMDBGQzBGQzAwMDNGMDAwMEZDMEZDMDAwMDAwMDAwRkMwRkMwMAotMDAwMDAwMEZDMDMyMzQ3OEIzNDM+NzcgRDxGRkMwMDAwMDdFRkZFMDAwMDA3RUZGRTAwMDAwN0VGRkYwMDAwMDdFRkZGMDAwCi0wMDdFRkZGODAwMDA3RUZERjgwMDAwN0VGQ0ZDMDAwMDdFRkNGQzAwMDA3RUZDRkUwMDAwN0VGQzdFMDAwMDdFRkM3RjAwMDAKLTdFRkMzRjAwMDA3RUZDM0Y4MDAwN0VGQzFGODAwMDdFRkMxRkMwMDA3RUZDMEZDMDAwN0VGQzBGRTAwMDdFRkMwRkUwMDA3RQotRkMwN0YwMDA3RUZDMDdGMDAwN0VGQzAzRjgwMDdFRkMwM0Y4MDA3RUZDMDFGQzAwN0VGQzAxRkMwMDdFRkMwMEZFMDA3RUZDCi0wMEZFMDA3RUZDMDA3RjAwN0VGQzAwN0YwMDdFRkMwMDNGODA3RUZDMDAzRjgwN0VGQzAwMUZDMDdFRkMwMDFGQzA3RUZDMDAKLTBGRTA3RUZDMDAwRkUwN0VGQzAwMDdFMDdFRkMwMDA3RjA3RUZDMDAwM0YwN0VGQzAwMDNGODdFRkMwMDAxRjg3RUZDMDAwMQotRkM3RUZDMDAwMEZDN0VGQzAwMDBGRTdFRkMwMDAwN0U3RUZDMDAwMDdFN0VGQzAwMDAzRjdFRkMwMDAwM0ZGRUZDMDAwMDFGCi1GRUZDMDAwMDFGRkVGQzAwMDAwRkZFRkMwMDAwMEZGRUZDMDAwMDA3RkUyNzM0NzlCMzM2Pkk8MDAwMDBGRjAwMDAwMDAwMAotRkZGRjAwMDAwMDAzRkZGRkMwMDAwMDBGRkZGRkYwMDAwMDFGRkZGRkY4MDAwMDNGRjAwRkZDMDAwMDdGQzAwM0ZFMDAwMEZGCi0wMDAwRkYwMDAxRkUwMDAwN0Y4MDAzRkMwMDAwM0ZDMDA3RjgwMDAwMUZFMDA3RjAwMDAwMEZFMDBGRTAwMDAwMDdGMDBGQzAKLTAwMDAwM0YwMUZDMDAwMDAwM0Y4MUY4MDAwMDAwMUY4M0Y4MDAwMDAwMUZDM0Y4MDAwMDAwMUZDN0YwMDAwMDAwMEZFN0YwMAotMDAwMDAwRkU3RjAwMDAwMDAwRkU3RTAwMDAwMDAwN0VGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwCi0wMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAKLTAwMDAwMDdGRkUwMDAwMDAwMDdGRkYwMDAwMDAwMEZGN0YwMDAwMDAwMEZFN0YwMDAwMDAwMEZFN0YwMDAwMDAwMEZFN0Y4MAotMDAwMDAxRkUzRjgwMDAwMDAxRkMzRjgwMDAwMDAxRkMzRkMwMDAwMDAzRkMxRkMwMDAwMDAzRjgxRkUwMDAwMDA3RjgwRkUwCi0wMDAwMDdGMDA3RjAwMDAwMEZFMDA3RjgwMDAwMUZFMDAzRkMwMDAwM0ZDMDAxRkUwMDAwN0Y4MDAwRkYwMDAwRkYwMDAwN0YKLUMwMDNGRTAwMDAzRkYwMEZGQzAwMDAxRkZGRkZGODAwMDAwRkZGRkZGMDAwMDAwM0ZGRkZDMDAwMDAwMEZGRkYwMDAwMDAwMAotMUZGODAwMDAzMDM4N0NCNTM5Pkk8RkZGRkZGMDAwMEZGRkZGRkUwMDBGRkZGRkZGODAwRkZGRkZGRkMwMEZGRkZGRkZGMDAKLUZFMDAwM0ZGODBGRTAwMDA3RkMwRkUwMDAwMUZDMEZFMDAwMDBGRTBGRTAwMDAwN0YwRkUwMDAwMDdGMEZFMDAwMDAzRjBGRQotMDAwMDAzRjhGRTAwMDAwM0Y4RkUwMDAwMDFGOEZFMDAwMDAxRjhGRTAwMDAwMUY4RkUwMDAwMDNGOEZFMDAwMDAzRjhGRTAwCi0wMDAzRjBGRTAwMDAwN0YwRkUwMDAwMDdGMEZFMDAwMDBGRTBGRTAwMDAxRkMwRkUwMDAwN0ZDMEZFMDAwM0ZGODBGRkZGRkYKLUZGMDBGRkZGRkZGQzAwRkZGRkZGRjgwMEZGRkZGRkUwMDBGRkZGRkYwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMAotMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwCi1GRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUKLTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwMjUzNDc5QjMzMT5JPEZGRkZGRjAwMDBGRkZGRkZFMDAwCi1GRkZGRkZGQzAwRkZGRkZGRkUwMEZGRkZGRkZGODBGRTAwMDFGRkMwRkUwMDAwM0ZFMEZFMDAwMDBGRjBGRTAwMDAwN0YwRkUKLTAwMDAwM0Y4RkUwMDAwMDFGOEZFMDAwMDAxRkNGRTAwMDAwMEZDRkUwMDAwMDBGQ0ZFMDAwMDAwRkNGRTAwMDAwMEZDRkUwMAotMDAwMUZDRkUwMDAwMDFGOEZFMDAwMDAzRjhGRTAwMDAwN0YwRkUwMDAwMEZGMEZFMDAwMDNGRTBGRTAwMDFGRkMwRkZGRkZGCi1GRjgwRkZGRkZGRkUwMEZGRkZGRkZDMDBGRkZGRkZFMDAwRkZGRkZGODAwMEZFMDAxRkMwMDBGRTAwMEZDMDAwRkUwMDBGRTAKLTAwRkUwMDA3RjAwMEZFMDAwM0YwMDBGRTAwMDNGODAwRkUwMDAxRjgwMEZFMDAwMUZDMDBGRTAwMDBGRTAwRkUwMDAwRkUwMAotRkUwMDAwN0YwMEZFMDAwMDNGMDBGRTAwMDAzRjgwRkUwMDAwMUZDMEZFMDAwMDFGQzBGRTAwMDAwRkUwRkUwMDAwMDdFMEZFCi0wMDAwMDdGMEZFMDAwMDAzRjhGRTAwMDAwM0Y4RkUwMDAwMDFGQ0ZFMDAwMDAwRkNGRTAwMDAwMEZFRkUwMDAwMDA3RjI4MzQKLTc5QjMzMj44MiBEPDAwMDNGRTAwMDAwMDFGRkZFMDAwMDA3RkZGRjgwMDAxRkZGRkZFMDAwM0ZGRkZGRjAwMDdGQzAzRkYwMAotMEZGMDAwN0YwMDFGQzAwMDFFMDAxRjgwMDAwRTAwM0YwMDAwMDYwMDNGMDAwMDAyMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFCi0wMDAwMDAwMDdFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwM0Y4MDAwMDAwMDNGQzAKLTAwMDAwMDFGRjAwMDAwMDAxRkZDMDAwMDAwMEZGRkUwMDAwMDA3RkZGRTAwMDAwM0ZGRkY4MDAwMDFGRkZGRTAwMDAwN0ZGRgotRjgwMDAwMUZGRkZDMDAwMDAzRkZGRTAwMDAwMDNGRkYwMDAwMDAwM0ZGMDAwMDAwMDBGRjgwMDAwMDAwM0ZDMDAwMDAwMDFGCi1DMDAwMDAwMDFGQzAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDA3RTAwMDAwMDAwN0UwMDAwMDAwMDdFMDAwMDAwMDA3RTAKLTAwMDAwMDA3RTAwMDAwMDAwN0UwNDAwMDAwMEZDMDYwMDAwMDBGQzA3MDAwMDAxRjgwN0MwMDAwMUY4MEZGMDAwMDdGMDBGRgotQzAwMEZGMDBGRkY4MDNGRTAwN0ZGRkZGRkMwMDFGRkZGRkYwMDAwN0ZGRkZFMDAwMDBGRkZGODAwMDAwMEZGQzAwMDAyMzM4Ci03REI1MkI+STxGRkZGRkZGRkZGRjhGRkZGRkZGRkZGRjhGRkZGRkZGRkZGRjhGRkZGRkZGRkZGRjhGRkZGRkZGRkZGRjgwMAotMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwCi0wMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAKLTAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMAotMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwCi0wMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAKLTAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMDAwMUZDMDAwMDAwMAotMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkMwMDAwMDAwCi0wMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMkQzNDdEQjMzND5JPAotN0ZDMDAwMDAwN0YwM0ZDMDAwMDAwRkYwMUZFMDAwMDAwRkUwMEZGMDAwMDAxRkMwMDdGODAwMDAzRkMwMDdGODAwMDA3RjgwCi0wM0ZDMDAwMDdGMDAwMUZFMDAwMEZFMDAwMEZFMDAwMUZFMDAwMEZGMDAwMUZDMDAwMDdGODAwM0Y4MDAwMDNGQzAwN0YwMDAKLTAwMUZDMDBGRjAwMDAwMEZFMDBGRTAwMDAwMEZGMDFGQzAwMDAwMDdGODNGODAwMDAwMDNGODNGODAwMDAwMDFGQzdGMDAwMAotMDAwMUZFRkUwMDAwMDAwMEZGRkUwMDAwMDAwMDdGRkMwMDAwMDAwMDNGRjgwMDAwMDAwMDFGRjAwMDAwMDAwMDFGRjAwMDAwCi0wMDAwMEZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZGMDAwMDAwMDAwM0ZGODAwMDAwMDAwN0ZGQzAwMDAwMDAwN0VGRTAwMDAKLTAwMDBGRUZFMDAwMDAwMDFGQzdGMDAwMDAwMDNGODNGODAwMDAwMDNGMDFGQzAwMDAwMDdGMDFGQzAwMDAwMEZFMDBGRTAwMAotMDAxRkMwMDdGMDAwMDAxRkMwMDdGODAwMDAzRjgwMDNGQzAwMDA3RjAwMDFGQzAwMDBGRjAwMDBGRTAwMDBGRTAwMDBGRjAwCi0wMUZDMDAwMDdGODAwM0Y4MDAwMDNGODAwM0Y4MDAwMDNGQzAwN0YwMDAwMDFGRTAwRkUwMDAwMDBGRjAxRkUwMDAwMDA3RjAKLTFGQzAwMDAwMDdGODNGODAwMDAwMDNGQzdGMDAwMDAwMDFGRUZGMDAwMDAwMDFGRjMwMzQ3RkIzMzM+ODgKLUQ8N0ZGRkZGRkZGRkZDRkZGRkZGRkZGRkZFRkZGRkZGRkZGRkZFN0ZGRkZGRkZGRkZDMkYwNDdBNkYzQz45NQotRDwwMDNGQzAwMDAzRkZGMDAwMEZGRkZDMDAxRkZGRkUwMDFGRkZGRjAwMUZDMDdGODAxRTAwMUY4MDE4MDAxRkMwMTAwMDBGCi1DMDAwMDAwRkUwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwM0ZGRTAwMDNGRkYKLUUwMDFGRkZGRTAwN0ZGRkZFMDFGRkZDN0UwM0ZGMDA3RTA3RjgwMDdFMDdFMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwNwotRTBGQzAwMEZFMEZFMDAwRkUwN0YwMDNGRTA3RkMwRkZFMDdGRkZGRkUwM0ZGRkZGRTAxRkZGRTdFMDBGRkY4N0UwMDNGQzAwCi0wMDFCMjQ3REEyMjU+OTcgRDwwMDBGRjgwMDAwM0ZGRjAwMDBGRkZGRTAwMUZGRkZGMDAzRkZGRkYwMDdGODA3RjAwRkUwMDEKLUUwMUZDMDAwNjAxRjgwMDAwMDNGMDAwMDAwM0YwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0UwMDAwMDBGQzAwMDAwMEZDMDAwMAotMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMDdFMDAwMDAwN0UwMDAwCi0wMDdFMDAwMDAwM0YwMDAwMTAzRjgwMDAzMDFGODAwMEYwMEZFMDAxRjAwRkY4MEZGMDA3RkZGRkYwMDNGRkZGRTAwMEZGRkYKLTgwMDA3RkZFMDAwMDBGRjAwMDFDMjQ3REEyMjI+OTkgRDwwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMAotRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwCi1GQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwM0Y4MEZDMDBGRkYwRkMwM0ZGRkMKLUZDMDdGRkZFRkMwRkZGRkZGQzBGRjgxRkZDMUZFMDA3RkMzRkMwMDFGQzNGODAwMUZDN0YwMDAwRkM3RTAwMDBGQzdFMDAwMAotRkM3RTAwMDBGQ0ZDMDAwMEZDRkMwMDAwRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMDAwRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMDAwCi1GQ0ZDMDAwMEZDN0UwMDAwRkM3RTAwMDBGQzdFMDAwMEZDN0YwMDAxRkMzRjgwMDFGQzNGODAwM0ZDMUZFMDA3RkMwRkY4MUYKLUZDMEZGRkZGRkMwN0ZGRkNGQzAzRkZGOEZDMDBGRkUwRkMwMDNGODAwMDFFMzc3REI1Mjg+STwwMDFGQzAwMDAwN0ZGODAwCi0wMUZGRkMwMDAzRkZGRTAwMDdGRkZGMDAwRkYwN0Y4MDFGQzAxRjgwMUY4MDA3QzAzRjAwMDdDMDNGMDAwM0UwN0UwMDAxRTAKLTdFMDAwMUUwN0MwMDAxRTBGQzAwMDBGMEZGRkZGRkYwRkZGRkZGRjBGRkZGRkZGMEZGRkZGRkYwRkZGRkZGRjBGODAwMDAwMAotRjgwMDAwMDBGQzAwMDAwMEZDMDAwMDAwN0MwMDAwMDA3RTAwMDAwMDdFMDAwMDAwM0YwMDAwMDAzRjgwMDAxMDFGQzAwMDcwCi0wRkUwMDFGMDBGRjgwRkYwMDdGRkZGRjAwM0ZGRkZFMDAwRkZGRjgwMDA3RkZFMDAwMDBGRjAwMDFDMjQ3REEyMjI+STwwMAotMUZDMDBGODAwMDdGRjBGRjgwMDBGRkZGRkZDMDAxRkZGRkZGQzAwM0ZGRkZGRkMwMDdGMDdGMDAwMDBGQzAxRjgwMDAwRjgwCi0wRjgwMDAwRjgwMEY4MDAwMUYwMDA3QzAwMDFGMDAwN0MwMDAxRjAwMDdDMDAwMUYwMDA3QzAwMDFGMDAwN0MwMDAxRjAwMDcKLUMwMDAxRjAwMDdDMDAwMEY4MDBGODAwMDBGODAwRjgwMDAwRkMwMUY4MDAwMDdGMDdGMDAwMDA3RkZGRTAwMDAwRkZGRkMwMAotMDAwRkZGRjgwMDAwMUY3RkYwMDAwMDFGMUZDMDAwMDAxRjAwMDAwMDAwMUYwMDAwMDAwMDFGMDAwMDAwMDAxRjgwMDAwMDAwCi0wRkZGRkUwMDAwMEZGRkZGRTAwMDA3RkZGRkYwMDAwRkZGRkZGQzAwMUZGRkZGRkUwMDNGRkZGRkZFMDA3RjgwMDNGRjAwN0UKLTAwMDA3RjAwRkUwMDAwM0Y4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZDMDAwMDFGODBGRTAwMDAzRjgwN0YwMAotMDA3RjAwN0Y4MDAwRkYwMDNGRjAwN0ZFMDAxRkZGRkZGQzAwMEZGRkZGRjgwMDAzRkZGRkUwMDAwMEZGRkY4MDAwMDAxRkZDCi0wMDAwMjIzMzdFQTEyNj4xMDMgRDxGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQwotMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDCi0wMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDdGMDAwRkMzRkZFMDBGQzdGRkYwMEZDRkZGRjgwRkYKLUZGRkY4MEZGRTA3RkMwRkY4MDFGQzBGRjAwMEZFMEZGMDAwRkUwRkUwMDA3RTBGRTAwMDdFMEZFMDAwN0UwRkMwMDA3RTBGQwotMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDCi0wMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMKLTAwMDdFMEZDMDAwN0UwRkMwMDA3RTAxQjM2N0FCNTI4Pkk8RkVGRUZFRkVGRUZFRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTdFN0U3RTA3MzQKLTdCQjMxMz5JPDAwM0Y4MDAwM0Y4MDAwM0Y4MDAwM0Y4MDAwM0Y4MDAwM0Y4MDAwM0Y4MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRjgwMDAxRjgwMDAxRjgwMDAKLTFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMAotMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwCi0xRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAKLTFGODAwMDFGODA0MDNGODA2MDNGMDBGOEZGMDBGRkZFMDBGRkZFMDA3RkZDMDAxRkY4MDAwN0UwMDAxMTQ0ODRCMzE0Pkk8Ci1GQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDAKLUZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMAotRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDBGRjBGQzAwMUZFMEZDMDAzRkMwRkMwMDdGODBGQzAwRkYwMEZDMDFGRTAwCi1GQzAzRkMwMEZDMDdGODAwRkMwRkYwMDBGQzFGRTAwMEZDM0ZDMDAwRkM3RjgwMDBGQ0ZGMDAwMEZERkYwMDAwRkZGRjgwMDAKLUZGRkY4MDAwRkZGRkMwMDBGRkU3RTAwMEZGQzdFMDAwRkY4M0YwMDBGRjAxRjgwMEZFMDFGQzAwRkMwMEZDMDBGQzAwN0UwMAotRkMwMDNGMDBGQzAwM0Y4MEZDMDAxRjgwRkMwMDBGQzBGQzAwMDdFMEZDMDAwN0UwRkMwMDAzRjBGQzAwMDFGOEZDMDAwMUZDCi0xRTM2N0FCNTI2Pkk8RkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQwotRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkNGQ0ZDRkMwNjM2N0FCNTEzPkk8MDAwN0YwMDAKLTNGODBGQzNGRkUwMUZGRjBGQzdGRkYwM0ZGRjhGQ0ZGRkY4N0ZGRkNGRkZGRkY5RkZGRkNGRkUwN0ZERjAzRkVGRjgwMUZGQwotMDBGRUZGMDAwRkY4MDA3RkZGMDAwRkY4MDA3RkZFMDAwN0YwMDAzRkZFMDAwN0YwMDAzRkZFMDAwN0YwMDAzRkZDMDAwN0UwCi0wMDNGRkMwMDA3RTAwMDNGRkMwMDA3RTAwMDNGRkMwMDA3RTAwMDNGRkMwMDA3RTAwMDNGRkMwMDA3RTAwMDNGRkMwMDA3RTAKLTAwM0ZGQzAwMDdFMDAwM0ZGQzAwMDdFMDAwM0ZGQzAwMDdFMDAwM0ZGQzAwMDdFMDAwM0ZGQzAwMDdFMDAwM0ZGQzAwMDdFMAotMDAzRkZDMDAwN0UwMDAzRkZDMDAwN0UwMDAzRkZDMDAwN0UwMDAzRkZDMDAwN0UwMDAzRkZDMDAwN0UwMDAzRkZDMDAwN0UwCi0wMDNGRkMwMDA3RTAwMDNGRkMwMDA3RTAwMDNGRkMwMDA3RTAwMDNGMzAyMjdBQTEzRD5JPDAwMDdGMDAwRkMzRkZFMDBGQwotN0ZGRjAwRkNGRkZGODBGRkZGRkY4MEZGRTA3RkMwRkY4MDFGQzBGRjAwMEZFMEZGMDAwRkUwRkUwMDA3RTBGRTAwMDdFMEZFCi0wMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMKLTAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQwotMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTAxQjIyN0FBMTI4Pkk8MDAwN0YwMDAwMDAwM0ZGRTAwMDAKLTAwRkZGRjgwMDAwMUZGRkZDMDAwMDNGRkZGRTAwMDA3RjgwRkYwMDAwRkUwMDNGODAwMUZDMDAxRkMwMDFGODAwMEZDMDAzRgotMDAwMDdFMDAzRjAwMDA3RTAwN0UwMDAwM0YwMDdFMDAwMDNGMDA3QzAwMDAxRjAwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwCi0wMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZDMDAwMDFGODBGQzAwMDAxRjgwRkMwMDAwMUY4MEZFMDAwMDNGODA3RTAwMDAKLTNGMDA3RTAwMDAzRjAwN0YwMDAwN0YwMDNGMDAwMDdFMDAzRjgwMDBGRTAwMUZDMDAxRkMwMDBGRTAwM0Y4MDAwRkY4MEZGOAotMDAwN0ZGRkZGMDAwMDFGRkZGQzAwMDAwRkZGRjgwMDAwMDNGRkUwMDAwMDAwN0YwMDAwMDIxMjQ3RUEyMjY+STwwMDAzRjgKLTAwRkMxRkZFMDBGQzdGRkYwMEZERkZGRjgwRkZGRkZGQzBGRkUwN0ZFMEZGODAxRkUwRkYwMDBGRjBGRTAwMDdGMEZDMDAwMwotRjhGQzAwMDNGOEZDMDAwMUY4RkMwMDAxRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMDAwRkNGQzAwMDBGQ0ZDMDAwMEZDRkMwMDAwCi1GQ0ZDMDAwMEZDRkMwMDAwRkNGQzAwMDFGQ0ZDMDAwMUY4RkMwMDAxRjhGQzAwMDNGOEZDMDAwM0YwRkUwMDA3RjBGRjAwMEYKLUUwRkY4MDFGRTBGRkUwN0ZDMEZGRkZGRjgwRkRGRkZGMDBGQ0ZGRkUwMEZDM0ZGQzAwRkMwN0UwMDBGQzAwMDAwMEZDMDAwMAotMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkMwMDAwCi0wMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMDFFMzE3QUExMjg+STwwMDAzQzBGODFGQzBGODNGQzBGOEZGQzBGOUZGQzBGQgotRkZDMEZCRkMwMEZGRjAwMEZGQzAwMEZGODAwMEZGMDAwMEZGMDAwMEZFMDAwMEZFMDAwMEZFMDAwMEZDMDAwMEZDMDAwMEZDCi0wMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMwMDAwRkMKLTAwMDBGQzAwMDBGQzAwMDBGQzAwMDBGQzAwMDAxMjIyN0FBMTFBPjExNCBEPDAwRkY4MDAwMDdGRkYwMDAwRkZGRkMwMDFGCi1GRkZFMDAzRkZGRkUwMDdGMDBGRTAwN0UwMDFDMDBGQzAwMEMwMEZDMDAwMDAwRkMwMDAwMDBGQzAwMDAwMEZDMDAwMDAwRkUKLTAwMDAwMDdGODAwMDAwN0ZGODAwMDAzRkZGODAwMDFGRkZFMDAwMEZGRkY4MDAwM0ZGRkMwMDAwRkZGRTAwMDAwRkZGMDAwMAotMDBGRjAwMDAwMDNGODAwMDAwM0Y4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDQwMDAxRjgwNjAwMDNGODA3ODAwM0YwMEZGCi0wMEZGMDBGRkZGRkUwMEZGRkZGQzAwN0ZGRkY4MDAwRkZGRjAwMDAxRkY4MDAwMTkyNDdFQTIxRD5JPDAzRjAwMDAzRjAwMAotMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwRkZGRkZFRkZGRkZFRkZGRkZFRkZGRkZFCi1GRkZGRkUwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAKLTAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjgwMDAzRjgwMgotMDFGQzFFMDFGRkZGMDFGRkZGMDBGRkZGMDA3RkZDMDAzRkMwMTgyQzdGQUExQz5JPEZDMDAwN0UwRkMwMDA3RTBGQzAwMDcKLUUwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwNwotRTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDA3Ci1FMEZDMDAwN0UwRkMwMDA3RTBGQzAwMDdFMEZDMDAwN0UwRkMwMDBGRTBGQzAwMUZFMEZFMDAzRkUwRkYwMEZGRTA3RkZGRkYKLUUwN0ZGRkY3RTAzRkZGRTdFMDFGRkYwN0UwMDdGODAwMDAxQjIyN0FBMDI4Pkk8RkMwMDAwM0Y3RTAwMDAzRTdFMDAwMDdFCi03RjAwMDA3RTNGMDAwMEZDM0YwMDAwRkMzRjgwMDBGQzFGODAwMUY4MUY4MDAxRjgwRkMwMDNGMDBGQzAwM0YwMEZDMDAzRjAKLTA3RTAwN0UwMDdFMDA3RTAwM0YwMDdDMDAzRjAwRkMwMDNGMDBGQzAwMUY4MEY4MDAxRjgxRjgwMDFGODFGODAwMEZDMUYwMAotMDBGQzNGMDAwMDdDM0UwMDAwN0UzRTAwMDA3RTdFMDAwMDNFN0MwMDAwM0U3QzAwMDAzRTdDMDAwMDFGNzgwMDAwMUZGODAwCi0wMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAyMDIxN0ZBMDIzPkk8RkMwMDA3RjAwMDFGODBGRTAwMDdGMDAwMUY4MDdFMDAwRgotRjAwMDNGMDA3RTAwMEZGODAwM0YwMDdFMDAwRjc4MDAzRjAwM0YwMDFGNzgwMDNFMDAzRjAwMUY3ODAwN0UwMDNGMDAxRTdDCi0wMDdFMDAxRjgwM0U3QzAwN0MwMDFGODAzRTNDMDBGQzAwMUY4MDNFM0UwMEZDMDAwRjgwM0MzRTAwRjgwMDBGQzA3QzNFMDEKLUY4MDAwRkMwN0MxRTAxRjgwMDBGQzA3QzFGMDFGODAwMDdFMDc4MUYwMUYwMDAwN0UwRjgxRjAzRjAwMDA3RTBGODBGODNGMAotMDAwM0UwRjgwRjgzRTAwMDAzRjBGMDBGODNFMDAwMDNGMUYwMEY4N0UwMDAwMUYxRjAwN0M3QzAwMDAxRjFFMDA3QzdDMDAwCi0wMUYxRTAwN0M3QzAwMDAxRkJFMDAzQ0ZDMDAwMDBGQkUwMDNDRjgwMDAwMEZCQzAwM0VGODAwMDAwRkJDMDAxRUY4MDAwMDAKLTdCQzAwMUVGMDAwMDAwN0Y4MDAxRkYwMDAwMDA3RjgwMDFGRjAwMDAwMDNGODAwMEZFMDAwMDAwM0YwMDAwRkUwMDAwMzEyMQotN0ZBMDM0Pkk8N0UwMDAwM0YwMDNGMDAwMDdGMDAxRjgwMDBGRTAwMUZDMDAwRkMwMDBGRTAwMUY4MDAwN0UwMDNGMDAwMDMKLUYwMDdFMDAwMDFGODBGRTAwMDAwRkMwRkMwMDAwMDdFMUY4MDAwMDA3RjNGMDAwMDAwM0Y3RTAwMDAwMDFGRkMwMDAwMDAwRgotRjgwMDAwMDAwN0Y4MDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwN0Y4MDAwMDAwMEZGQzAwMDAwMDFGRkMwMDAwMDAzRjNFCi0wMDAwMDAzRTFGMDAwMDAwN0MxRjgwMDAwMEZDMEZDMDAwMDFGODA3RTAwMDAzRjAwM0YwMDAwN0UwMDNGMDAwMDdFMDAxRjgKLTAwMEZDMDAwRkMwMDFGODAwMDdFMDAzRjAwMDA3RjAwN0YwMDAwM0Y4MEZFMDAwMDFGQzAyMjIxODBBMDIzPkk8RkUwMDAwCi0zRjdFMDAwMDdFN0UwMDAwN0UzRjAwMDA3RTNGMDAwMEZDM0Y4MDAwRkMxRjgwMDFGODFGQzAwMUY4MEZDMDAxRjgwRkMwMDMKLUYwMDdFMDAzRjAwN0UwMDNFMDA3RjAwN0UwMDNGMDA3RTAwM0YwMDdDMDAxRjgwRkMwMDFGODBGODAwMEY4MEY4MDAwRkMxRgotODAwMEZDMUYwMDAwN0MxRjAwMDA3RTNFMDAwMDNFM0UwMDAwM0UzRTAwMDAxRjNDMDAwMDFGN0MwMDAwMEY3ODAwMDAwRjc4Ci0wMDAwMEY3ODAwMDAwN0YwMDAwMDA3RjAwMDAwMDNFMDAwMDAwM0UwMDAwMDAzRTAwMDAwMDNDMDAwMDAwN0MwMDAwMDA3ODAKLTAwMDAwNzgwMDAwMDBGODAwMDAwMEYwMDAwMDAxRjAwMDAwMDFFMDAwMDIwM0UwMDAwMzg3QzAwMDAzRkZDMDAwMDNGRjgwMAotMDAzRkY4MDAwMDNGRjAwMDAwMEZDMDAwMDAyMDMxN0ZBMDIzPkkgRQotJUVuZERWSVBTQml0bWFwRm9udAotJURWSVBTQml0bWFwRm9udDogRnEgZWNybTEwMDAgMTAgODMKLS9GcSA4MyAxODQgZGY8MDE4MDAwNjAwMzgwMDBFMDA3MDAwMUMwMEUwMDAzODAxQzAwMDcwMDE4MDAwNjAwMzgwMDBFMDAzMAotMDAwQzAwNzAwMDFDMDA2MDAwMTgwMDYwMDAxODAwRTAwMDM4MDBDMDAwMzAwMEMwMDAzMDAwQzAwMDMwMDBDMDAwMzAwMENFCi0wMDMzODBGRjgwM0ZFMEZGQzAzRkYwRkZDMDNGRjBGRkMwM0ZGMDdGQzAxRkYwN0ZDMDFGRjAzRjgwMEZFMDBFMDAwMzgwMUMKLTE5ODFCOTFDPjE2IEQ8MUMwMDA3MDA3RjAwMUZDMEZGODAzRkUwRkY4MDNGRTBGRkMwM0ZGMEZGQzAzRkYwRkZDMDNGRjA3RgotQzAxRkYwMUNDMDA3MzAwMEMwMDAzMDAwQzAwMDMwMDBDMDAwMzAwMEMwMDAzMDAxQzAwMDcwMDE4MDAwNjAwMTgwMDA2MDAzCi04MDAwRTAwMzAwMDBDMDA3MDAwMUMwMDYwMDAxODAwRTAwMDM4MDFDMDAwNzAwMzgwMDBFMDA3MDAwMUMwMDYwMDAxODAwMUMKLTE5ODBCOTFDPkk8RkZGRkZGRkZGRkZGRkZGRkZGRkZDMEZGRkZGRkZGRkZGRkZGRkZGRkZGQzA1MjAyODA5NjUzPjIyCi1EPDAwMDAwRkY4MDBGQzAwMDAwMDdGRkYwN0ZGMDAwMDAxRjgwN0RGODNDMDAwMDdFMDAxRkYwRkMwMDAxRjgwMDdGRTFGRTAKLTAwM0YwMDBGRkMxRkUwMDA3RTAwMEZGQzFGRTAwMDdFMDAwRkY4MUZFMDAwRkMwMDBGRjgxRkUwMDBGQzAwMEZGMDA3ODAwMQotRjgwMDA3RjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4Ci0wMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAKLTAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMEZGRkZGRkZGRkZGODAwRkZGRkZGRkZGRkY4MDBGRkZGRkZGRgotRkZGODAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwCi0wMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAKLTAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMAotMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxCi1GODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgKLTAwMDNGMDAwMDAwMUY4MDAwM0YwMDAwMDAxRjgwMDAzRjAwMDAwMDFGODAwMDNGMDAwMDAwM0ZDMDAwN0Y4MDAwMDdGRkZFMAotRkZGRkYwMDA3RkZGRTBGRkZGRjAwMDdGRkZFMEZGRkZGMDAwMzMzQjdGQkEzMD4yNyBEPDAwMDAwRkY4MDAwMDAwMDA3RkZFCi0wMDAwMDAwMUY4MDc4MDAwMDAwN0UwMDFDMDAwMDAxRjgwMDBFMDAwMDAzRjAwMDdFMDAwMDA3RTAwMEZGMDAwMDA3RTAwMEYKLUYwMDAwMEZDMDAwRkYwMDAwMEZDMDAwRkYwMDAwMUY4MDAwRkYwMDAwMUY4MDAwN0UwMDAwMUY4MDAwMTgwMDAwMUY4MDAwMAotMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwCi0wMDAwMDFGODAwMDAwMDAwMDFGODAwMDAwMDAwMDFGODAwMDNGMDAwRkZGRkZGRkZGMDAwRkZGRkZGRkZGMDAwRkZGRkZGRkYKLUYwMDAwMUY4MDAwRkYwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwMwotRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzCi1GMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDMKLUYwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwMwotRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAzRkMwMDA3Ci1GODAwN0ZGRkUwRkZGRkMwN0ZGRkUwRkZGRkMwN0ZGRkUwRkZGRkMwMkEzQjdGQkEyRT5JPDAwMDAwRkZDMDAwMDAwMDA3RgotRkY3MDAwMDAwMUY4MDNGMDAwMDAwN0UwMDdGMDAwMDAxRjgwMEZGMDAwMDAzRjAwMEZGMDAwMDA3RTAwMEZGMDAwMDA3RTAwCi0wRkYwMDAwMEZDMDAwRkYwMDAwMEZDMDAwN0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAKLTAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMAotMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwRkZGRkZGRkZGMDAwRkZGRkZGRkZGMDAwRkZGRkZGCi1GRkYwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAKLTAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMAotMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwMDNGMDAwMDFGODAwCi0wM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAwM0YwMDAwMUY4MDAKLTAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAxRjgwMDAzRjAwMDAzRkMwMAotMDdGODAwN0ZGRkUwRkZGRkMwN0ZGRkUwRkZGRkMwN0ZGRkUwRkZGRkMwMkEzQjdGQkEyRT5JPDAwMDAwRkYwMDAxRkYwMDAKLTAwMDAwMDdGRkUwMEZGRkMwMDAwMDAwMUY4MEY4M0YwMEYwMDAwMDAwN0UwMDFDRkMwMDM4MDAwMDAxRjgwMDBGRjAwMDFDMAotMDAwMDNGMDAwN0ZFMDAwRkMwMDAwMDdFMDAwRkZDMDAxRkUwMDAwMDdFMDAwRkZDMDAxRkUwMDAwMEZDMDAwRkY4MDAxRkUwCi0wMDAwRkMwMDBGRjgwMDFGRTAwMDAxRjgwMDBGRjAwMDFGRTAwMDAxRjgwMDA3RjAwMDBGQzAwMDAxRjgwMDAzRjAwMDAzMDAKLTAwMDFGODAwMDNGMDAwMDAwMDAwMDFGODAwMDNGMDAwMDAwMDAwMDFGODAwMDNGMDAwMDAwMDAwMDFGODAwMDNGMDAwMDAwMAotMDAwMUY4MDAwM0YwMDAwMDAwMDAwMUY4MDAwM0YwMDAwMDAwMDAwMUY4MDAwM0YwMDAwMDAwMDAwMUY4MDAwM0YwMDAwMDAwCi0wMDAxRjgwMDAzRjAwMDAwMDAwMDAxRjgwMDAzRjAwMDA3RTAwMEZGRkZGRkZGRkZGRkZGRTAwMEZGRkZGRkZGRkZGRkZGRTAKLTAwRkZGRkZGRkZGRkZGRkZFMDAwMDFGODAwMDNGMDAwMUZFMDAwMDFGODAwMDNGMDAwMDdFMDAwMDFGODAwMDNGMDAwMDdFMAotMDAwMUY4MDAwM0YwMDAwN0UwMDAwMUY4MDAwM0YwMDAwN0UwMDAwMUY4MDAwM0YwMDAwN0UwMDAwMUY4MDAwM0YwMDAwN0UwCi0wMDAxRjgwMDAzRjAwMDA3RTAwMDAxRjgwMDAzRjAwMDA3RTAwMDAxRjgwMDAzRjAwMDA3RTAwMDAxRjgwMDAzRjAwMDA3RTAKLTAwMDFGODAwMDNGMDAwMDdFMDAwMDFGODAwMDNGMDAwMDdFMDAwMDFGODAwMDNGMDAwMDdFMDAwMDFGODAwMDNGMDAwMDdFMAotMDAwMUY4MDAwM0YwMDAwN0UwMDAwMUY4MDAwM0YwMDAwN0UwMDAwMUY4MDAwM0YwMDAwN0UwMDAwMUY4MDAwM0YwMDAwN0UwCi0wMDAxRjgwMDAzRjAwMDA3RTAwMDAxRjgwMDAzRjAwMDA3RTAwMDAxRjgwMDAzRjAwMDA3RTAwMDAxRjgwMDAzRjAwMDA3RTAKLTAwMDFGODAwMDNGMDAwMDdFMDAwMDFGODAwMDNGMDAwMDdFMDAwMDFGODAwMDNGMDAwMDdFMDAwMDFGODAwMDNGMDAwMDdFMAotMDAwMUY4MDAwM0YwMDAwN0UwMDAwMUY4MDAwM0YwMDAwN0UwMDAwM0ZDMDAwN0Y4MDAwRkYwMDA3RkZGRTBGRkZGQzFGRkZGCi04MDdGRkZFMEZGRkZDMUZGRkY4MDdGRkZFMEZGRkZDMUZGRkY4MDQxM0I3RkJBNDU+STwxQzAwN0YwMEZGODBGRjgwRkY4MAotRkY4MEZGODBGRjgwRkY4MEZGODA3RjAwN0YwMDdGMDA3RjAwN0YwMDdGMDA3RjAwN0YwMDdGMDA3RjAwN0YwMDNFMDAzRTAwCi0zRTAwM0UwMDNFMDAzRTAwM0UwMDNFMDAzRTAwM0UwMDNFMDAxQzAwMUMwMDFDMDAxQzAwMUMwMDFDMDAxQzAwMUMwMDFDMDAKLTFDMDAxQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQzAwN0YwMEZGODBGRjgwRkY4MEZGODBGRjgwN0YwMAotMUMwMDA5M0M3OUJCMTc+MzMgRDw3QzAwN0NGRTAwRkVGRjAxRkVGRjAxRkVGRjAxRkVGRTAwRkVGRTAwRkVGRTAwRkVGRTAwCi1GRUZFMDBGRUZFMDBGRUZFMDBGRTdFMDBGQzdDMDA3QzdDMDA3QzdDMDA3QzdDMDA3QzdDMDA3QzdDMDA3QzdDMDA3QzdDMDAKLTdDM0MwMDc4MzgwMDM4MzgwMDM4MzgwMDM4MzgwMDM4MzgwMDM4MzgwMDM4MzgwMDM4MTgwMDMwMTcxRTc3QkEyQT5JPDFDCi0wMDdGMDBGRjgwRkY4MEZGQzBGRkMwRkZDMDdGQzAxQ0MwMDBDMDAwQzAwMEMwMDBDMDAxQzAwMTgwMDE4MDAzODAwMzAwMDcKLTAwMDYwMDBFMDAxQzAwMzgwMDcwMDA2MDAwMEExOTc5QjkxNz4zOSBEPDAwMDA2MDAwMDBFMDAwMDFDMDAwMDM4MDAwMDcwMAotMDAwRTAwMDAxRTAwMDAzQzAwMDA3ODAwMDA3ODAwMDBGMDAwMDFFMDAwMDFFMDAwMDNDMDAwMDNDMDAwMDdDMDAwMDc4MDAwCi0wRjgwMDAwRjAwMDAwRjAwMDAxRjAwMDAxRTAwMDAxRTAwMDAzRTAwMDAzRTAwMDAzRTAwMDA3QzAwMDA3QzAwMDA3QzAwMDAKLTdDMDAwMDdDMDAwMDdDMDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMEY4MDAwMAotRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwRjgwMDAwN0MwMDAwN0MwMDAwN0MwMDAwCi03QzAwMDA3QzAwMDA3QzAwMDAzRTAwMDAzRTAwMDAzRTAwMDAxRTAwMDAxRTAwMDAxRjAwMDAwRjAwMDAwRjAwMDAwRjgwMDAKLTA3ODAwMDA3QzAwMDAzQzAwMDAzQzAwMDAxRTAwMDAxRTAwMDAwRjAwMDAwNzgwMDAwNzgwMDAwM0MwMDAwMUUwMDAwMEUwMAotMDAwNzAwMDAwMzgwMDAwMUMwMDAwMEUwMDAwMDYwMTM1Mjc4QkQyMD5JPEMwMDAwMEUwMDAwMDcwMDAwMDM4MDAwMDFDMDAKLTAwMEUwMDAwMEYwMDAwMDc4MDAwMDNDMDAwMDNDMDAwMDFFMDAwMDBGMDAwMDBGMDAwMDA3ODAwMDA3ODAwMDA3QzAwMDAzQwotMDAwMDNFMDAwMDFFMDAwMDFFMDAwMDFGMDAwMDBGMDAwMDBGMDAwMDBGODAwMDBGODAwMDBGODAwMDA3QzAwMDA3QzAwMDA3Ci1DMDAwMDdDMDAwMDdDMDAwMDdDMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDNFMDAwMDMKLUUwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwM0UwMDAwN0MwMDAwN0MwMDAwNwotQzAwMDA3QzAwMDA3QzAwMDA3QzAwMDBGODAwMDBGODAwMDBGODAwMDBGMDAwMDBGMDAwMDFGMDAwMDFFMDAwMDFFMDAwMDNFCi0wMDAwM0MwMDAwN0MwMDAwNzgwMDAwNzgwMDAwRjAwMDAwRjAwMDAxRTAwMDAzQzAwMDAzQzAwMDA3ODAwMDBGMDAwMDBFMDAKLTAwMUMwMDAwMzgwMDAwNzAwMDAwRTAwMDAwQzAwMDAwMTM1MjdDQkQyMD5JPDFDMDA3RjAwRkY4MEZGODBGRkMwRkZDMEZGCi1DMDdGQzAxQ0MwMDBDMDAwQzAwMEMwMDBDMDAxQzAwMTgwMDE4MDAzODAwMzAwMDcwMDA2MDAwRTAwMUMwMDM4MDA3MDAwNjAKLTAwMEExOTc5ODgxNz40NCBEPEZGRkZGQ0ZGRkZGQ0ZGRkZGQ0ZGRkZGQ0ZGRkZGQzE2MDU3Rjk0MUM+STwxQzAwN0YwMEZGCi04MEZGODBGRjgwRkY4MEZGODA3RjAwMUMwMDA5MDk3OTg4MTc+STwwMDAwMDAwNjAwMDAwMDA2MDAwMDAwMEUwMDAwMDAwQwotMDAwMDAwMEMwMDAwMDAxQzAwMDAwMDE4MDAwMDAwMzgwMDAwMDAzMDAwMDAwMDMwMDAwMDAwNzAwMDAwMDA2MDAwMDAwMDYwCi0wMDAwMDBFMDAwMDAwMEMwMDAwMDAwQzAwMDAwMDFDMDAwMDAwMTgwMDAwMDAxODAwMDAwMDM4MDAwMDAwMzAwMDAwMDA3MDAKLTAwMDAwNjAwMDAwMDA2MDAwMDAwMEUwMDAwMDAwQzAwMDAwMDBDMDAwMDAwMUMwMDAwMDAxODAwMDAwMDE4MDAwMDAwMzgwMAotMDAwMDMwMDAwMDAwMzAwMDAwMDA3MDAwMDAwMDYwMDAwMDAwRTAwMDAwMDBDMDAwMDAwMEMwMDAwMDAxQzAwMDAwMDE4MDAwCi0wMDAxODAwMDAwMDM4MDAwMDAwMzAwMDAwMDAzMDAwMDAwMDcwMDAwMDAwNjAwMDAwMDA2MDAwMDAwMEUwMDAwMDAwQzAwMDAKLTAwMUMwMDAwMDAxODAwMDAwMDE4MDAwMDAwMzgwMDAwMDAzMDAwMDAwMDMwMDAwMDAwNzAwMDAwMDA2MDAwMDAwMDYwMDAwMAotMDBFMDAwMDAwMEMwMDAwMDAwQzAwMDAwMDFDMDAwMDAwMTgwMDAwMDAzODAwMDAwMDMwMDAwMDAwMzAwMDAwMDA3MDAwMDAwCi0wNjAwMDAwMDA2MDAwMDAwMEUwMDAwMDAwQzAwMDAwMDBDMDAwMDAwMUMwMDAwMDAxODAwMDAwMDE4MDAwMDAwMzgwMDAwMDAKLTMwMDAwMDAwNzAwMDAwMDA2MDAwMDAwMDYwMDAwMDAwRTAwMDAwMDBDMDAwMDAwMEMwMDAwMDAwMUY1MzdCQkQyQT5JPDAwCi0wM0Y4MDAwMDAwMUZGRjAwMDAwMDdFMEZDMDAwMDBGODAzRTAwMDAxRTAwMEYwMDAwM0MwMDA3ODAwMDdDMDAwN0MwMDBGODAKLTAwM0UwMDBGODAwMDNFMDAxRjAwMDAxRjAwMUYwMDAwMUYwMDNGMDAwMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDdFMDAwMAotMEZDMDdFMDAwMDBGQzA3RTAwMDAwRkMwN0UwMDAwMEZDMDdFMDAwMDBGQzBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGCi1FMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTAKLUZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRTAwMDAwRkUwRkUwMDAwMEZFMEZFMDAwMDBGRTBGRQotMDAwMDBGRTBGRTAwMDAwRkUwN0UwMDAwMEZDMDdFMDAwMDBGQzA3RTAwMDAwRkMwN0UwMDAwMEZDMDdGMDAwMDFGQzAzRjAwCi0wMDFGODAzRjAwMDAxRjgwM0YwMDAwMUY4MDFGMDAwMDFGMDAxRjAwMDAxRjAwMEY4MDAwM0UwMDBGODAwMDNFMDAwN0MwMDAKLTdDMDAwM0UwMDBGODAwMDNGMDAxRjgwMDAwRjgwM0UwMDAwMDdFMEZDMDAwMDAxRkZGMDAwMDAwMDNGODAwMDAyMzM5N0RCNgotMkE+STwwMDAxQzAwMDAwMDNDMDAwMDAwN0MwMDAwMDFGQzAwMDAwRkZDMDAwRkZGRkMwMDBGRkZGQzAwMEZGMUZDMDAwMDAKLTFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMAotMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwCi0xRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAKLTFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMAotMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAxRkMwMDAwMDFGQzAwMDAwMUZDMDAwMDAzRkUwMDA3RkZGRkZGMDdGCi1GRkZGRjA3RkZGRkZGMDFDMzc3OUI2MkE+STwwMDBGRjAwMDAwMDA3RkZFMDAwMDAxRkZGRjgwMDAwM0UwM0ZFMDAwMEYwMAotMEZGMDAwMUUwMDA3RjgwMDFDMDAwM0ZDMDAzODAwMDFGRTAwNzAwMDAxRkUwMDcwMDAwMEZGMDA2MDAwMDBGRjAwRkUwMDAwCi1GRjAwRkYwMDAwN0Y4MEZGODAwMDdGODBGRjgwMDA3RjgwRkY4MDAwN0Y4MEZGODAwMDdGODBGRjgwMDA3RjgwN0YwMDAwN0YKLTgwMUMwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZFMDAwMDAwMDFGRTAwMDAwMDAxRkMwMAotMDAwMDAzRkMwMDAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMDBGRTAwMDAwMDAwRkMwMDAwMDAwMUY4MDAwMDAwMDNGMDAwMDAwCi0wMDdFMDAwMDAwMDBGQzAwMDAwMDAxRjgwMDAwMDAwMUUwMDAwMDAwMDNDMDAwMDAwMDA3ODAwMDAwMDAwRjAwMDAwMDAwMUUKLTAwMDE4MDAwM0MwMDAxODAwMDc4MDAwMTgwMDBGMDAwMDM4MDAxRTAwMDAzMDAwM0MwMDAwMzAwMDc4MDAwMDMwMDA3MDAwMAotMDcwMDBGRkZGRkZGMDAxRkZGRkZGRjAwM0ZGRkZGRkYwMDdGRkZGRkZFMDBGRkZGRkZGRTAwRkZGRkZGRkUwMEZGRkZGRkZFCi0wMDIxMzc3Q0I2MkE+STwwMDA3RjgwMDAwMDAzRkZGMDAwMDAwRkZGRkMwMDAwMUY4MEZGMDAwMDNDMDA3RjgwMDA3ODAwMwotRkMwMDBFMDAwMUZFMDAwRjgwMDFGRTAwMUZFMDAwRkYwMDFGRjAwMEZGMDAxRkYwMDBGRjAwMUZGMDAwRkYwMDFGRjAwMEZGCi0wMDFGRjAwMEZGMDAwRkUwMDBGRjAwMDdDMDAwRkYwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkMwMDAwMDAwM0ZDMDAKLTAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMDA3RTAwMDAwMDAwRjgwMDAwMDAwN0YwMDAwMDAxRkZDMDAwMDAwMUZGRjgwMDAwMAotMDAwRkUwMDAwMDAwMDdGMDAwMDAwMDAxRkMwMDAwMDAwMUZFMDAwMDAwMDBGRjAwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwCi0wMDdGQzAwMDAwMDA3RkMwMDAwMDAwM0ZDMDAwMDAwMDNGRTAwMDAwMDAzRkUwMUUwMDAwM0ZFMDdGODAwMDNGRTA3RjgwMDAKLTNGRTBGRkMwMDAzRkUwRkZDMDAwM0ZFMEZGQzAwMDNGRTBGRkMwMDAzRkMwRkZDMDAwN0ZDMEZGODAwMDdGODA3RTAwMDA3RgotODA3MDAwMDBGRjAwMzgwMDAxRkUwMDFFMDAwMUZFMDAwRjgwMDNGODAwMDdGMDBGRjAwMDAxRkZGRkMwMDAwMDdGRkYwMDAwCi0wMDBGRjgwMDAwMjMzOTdEQjYyQT5JPDAwMDAwMDM4MDAwMDAwMDAzODAwMDAwMDAwNzgwMDAwMDAwMEY4MDAwMDAwMDBGOAotMDAwMDAwMDFGODAwMDAwMDAzRjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDBGRjgwMDAwMDAxRkY4MDAwMDAwMUJGODAwCi0wMDAwMzNGODAwMDAwMDczRjgwMDAwMDA2M0Y4MDAwMDAwQzNGODAwMDAwMUMzRjgwMDAwMDE4M0Y4MDAwMDAzMDNGODAwMDAKLTA3MDNGODAwMDAwNjAzRjgwMDAwMEMwM0Y4MDAwMDFDMDNGODAwMDAxODAzRjgwMDAwMzAwM0Y4MDAwMDcwMDNGODAwMDA2MAotMDNGODAwMDBDMDAzRjgwMDAxQzAwM0Y4MDAwMzgwMDNGODAwMDMwMDAzRjgwMDA3MDAwM0Y4MDAwRTAwMDNGODAwMEMwMDAzCi1GODAwMTgwMDAzRjgwMDM4MDAwM0Y4MDAzMDAwMDNGODAwNjAwMDAzRjgwMEUwMDAwM0Y4MDBGRkZGRkZGRkY4RkZGRkZGRkYKLUY4RkZGRkZGRkZGODAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMAotMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwN0ZDMDAwMDAzRkZGRkY4MDAwM0ZGRkZGODAwCi0wM0ZGRkZGODI1Mzg3RUI3MkE+STwwNjAwMDAwQzAwMDc4MDAwM0MwMDA3RjAwM0Y4MDAwN0ZGRkZGODAwMDdGRkZGRjAwMAotMDdGRkZGRTAwMDA3RkZGRjgwMDAwN0ZGRkYwMDAwMDdGRkZDMDAwMDA2N0ZFMDAwMDAwNjAwMDAwMDAwMDYwMDAwMDAwMDA2Ci0wMDAwMDAwMDA2MDAwMDAwMDAwNjAwMDAwMDAwMDYwMDAwMDAwMDA2MDAwMDAwMDAwNjAwMDAwMDAwMDYwMDAwMDAwMDA2MDAKLTAwMDAwMDA2MDdGODAwMDAwNjFGRkUwMDAwMDY3ODBGODAwMDA2RTAwN0UwMDAwN0MwMDNGMDAwMDc4MDAxRjgwMDA3MDAwMQotRjgwMDA2MDAwMEZDMDAwNjAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZGMDAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMDdGCi04MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDFDMDAwMDdGODA3RjAwMDA3RjgwRkYwMDAwN0Y4MEZGODAwMDdGODAKLUZGODAwMDdGODBGRjgwMDA3RjgwRkYwMDAwN0YwMEZGMDAwMEZGMDBGQzAwMDBGRjAwNjAwMDAwRkUwMDcwMDAwMEZFMDA3MAotMDAwMUZDMDAzODAwMDFGODAwMUMwMDAzRjgwMDFFMDAwN0YwMDAwRjgwMEZFMDAwMDdFMDNGODAwMDAxRkZGRjAwMDAwMDdGCi1GQzAwMDAwMDFGRTAwMDAwMjEzOTdDQjYyQT5JPDAwMDAzRkMwMDAwMDAxRkZGMDAwMDAwN0ZGRkMwMDAwMEZFMDNFMDAwMAotM0Y4MDA3MDAwMDdFMDAxRjAwMDBGQzAwM0Y4MDAxRjgwMDdGODAwM0YwMDA3RjgwMDdGMDAwN0Y4MDA3RTAwMDdGODAwRkUwCi0wMDNGMDAwRkMwMDAxRTAwMUZDMDAwMDAwMDFGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDA3RjgwMDAKLTAwMDA3RjAwMDAwMDAwN0YwMUZDMDAwMDdGMDdGRjgwMDBGRjFFMDdFMDAwRkYzODAxRjAwMEZGNzAwMEY4MDBGRjYwMDBGQwotMDBGRkUwMDA3RTAwRkZDMDAwM0YwMEZGQzAwMDNGODBGRjgwMDAzRjgwRkY4MDAwMUZDMEZGODAwMDFGQzBGRjgwMDAxRkMwCi1GRjAwMDAxRkUwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMDAwMUZFMDdGMDAwMDFGRTA3RjAwMDAxRkUwN0YKLTAwMDAxRkUwN0YwMDAwMUZFMDdGODAwMDFGRTAzRjgwMDAxRkUwM0Y4MDAwMUZDMDNGODAwMDFGQzAxRjgwMDAzRjgwMUZDMAotMDAzRjgwMEZDMDAwM0YwMDBGRTAwMDdGMDAwN0UwMDBGRTAwMDNGMDAwRkMwMDAxRjgwMUY4MDAwMEZFMDdGMDAwMDA3RkZGCi1DMDAwMDAxRkZGMDAwMDAwMDNGQzAwMDAyMzM5N0RCNjJBPkk8MzAwMDAwMDAwMDM4MDAwMDAwMDAzRTAwMDAwMDAwM0ZGRgotRkZGRkUwM0ZGRkZGRkZFMDNGRkZGRkZGRTAzRkZGRkZGRkMwN0ZGRkZGRkZDMDdGRkZGRkZGODA3RkZGRkZGRjAwNzAwMDAwCi0wNjAwNjAwMDAwMEUwMDYwMDAwMDFDMDA2MDAwMDAzODAwRTAwMDAwMzAwMEMwMDAwMDcwMDBDMDAwMDBFMDAwQzAwMDAwQzAKLTAwMDAwMDAxQzAwMDAwMDAwMzgwMDAwMDAwMDcwMDAwMDAwMDA2MDAwMDAwMDAwRTAwMDAwMDAwMUMwMDAwMDAwMDFDMDAwMAotMDAwMDM4MDAwMDAwMDA3ODAwMDAwMDAwNzAwMDAwMDAwMEYwMDAwMDAwMDBFMDAwMDAwMDAxRTAwMDAwMDAwMUUwMDAwMDAwCi0wM0UwMDAwMDAwMDNDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMUYKLUMwMDAwMDAwMUY4MDAwMDAwMDFGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MAotMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwCi0wMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDAzRjAwMDAwMDAwMUUwMDAwMDAyMzNBN0JCNzJBPkk8MDAwM0Y4MDAwMDAwMUZGRgotMDAwMDAwN0ZGRkMwMDAwMEZDMDdGMDAwMDFFMDAxRjgwMDAzQzAwMDdDMDAwNzgwMDAzQzAwMDcwMDAwM0UwMDBGMDAwMDFFCi0wMDBFMDAwMDFGMDAxRTAwMDAwRjAwMUUwMDAwMEYwMDFFMDAwMDBGMDAxRjAwMDAwRjAwMUYwMDAwMEYwMDFGODAwMDFGMDAKLTFGQzAwMDFFMDAxRkUwMDAxRTAwMEZGODAwM0MwMDBGRkMwMDdDMDAwRkZGMDA3ODAwMDdGRjgwRjAwMDAzRkZFM0UwMDAwMwotRkZGNzgwMDAwMEZGRkYwMDAwMDA3RkZFMDAwMDAwM0ZGRjgwMDAwMDBGRkZFMDAwMDAzRkZGRjAwMDAwRjlGRkY4MDAwMUUwCi03RkZFMDAwM0MwM0ZGRjAwMEY4MDBGRkYwMDFGMDAwN0ZGODAxRTAwMDFGRkMwM0MwMDAwRkZDMDdDMDAwMDNGQzA3ODAwMDAKLTFGRTA3ODAwMDAwRkUwRjgwMDAwMDdFMEYwMDAwMDAzRTBGMDAwMDAwM0UwRjAwMDAwMDFFMEYwMDAwMDAxRTBGMDAwMDAwMQotRTBGODAwMDAwMUMwRjgwMDAwMDFDMDc4MDAwMDAzQzA3QzAwMDAwMzgwM0UwMDAwMDc4MDFGMDAwMDBGMDAwRjgwMDAxRTAwCi0wN0UwMDA3QzAwMDNGODAzRjAwMDAwRkZGRkUwMDAwMDNGRkY4MDAwMDAwN0ZDMDAwMDIzMzk3REI2MkE+STwwMDAzRjgwMAotMDAwMDFGRkYwMDAwMDA3RkZGQzAwMDAxRkMwN0UwMDAwM0Y4MDNGMDAwMDdFMDAxRjgwMDBGRTAwMEZDMDAxRkMwMDA3RTAwCi0xRjgwMDA3RTAwM0Y4MDAwM0YwMDNGODAwMDNGMDA3RjAwMDAzRjgwN0YwMDAwM0Y4MEZGMDAwMDNGODBGRjAwMDAxRkMwRkYKLTAwMDAxRkMwRkYwMDAwMUZDMEZGMDAwMDFGQzBGRjAwMDAxRkMwRkYwMDAwMUZFMEZGMDAwMDFGRTBGRjAwMDAxRkUwRkYwMAotMDAxRkUwRkYwMDAwMUZFMDdGMDAwMDNGRTA3RjAwMDAzRkUwN0YwMDAwM0ZFMDNGODAwMDNGRTAzRjgwMDA3RkUwMUY4MDAwCi03RkUwMEZDMDAwRkZFMDA3RTAwMERGRTAwM0UwMDFERkUwMDFGMDAzOUZFMDAwRkMwRjFGRTAwMDNGRkMxRkMwMDAwN0YwMUYKLUMwMDAwMDAwMUZDMDAwMDAwMDFGQzAwMDAwMDAzRkMwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjAwMDAwMDAwN0YwMAotMEYwMDAwN0YwMDFGODAwMDdFMDAzRkMwMDBGQzAwM0ZDMDAwRkMwMDNGQzAwMUY4MDAzRkMwMDNGMDAwM0Y4MDA3RTAwMDFGCi0wMDBGRTAwMDFDMDAxRjgwMDAwRjgwN0YwMDAwMDdGRkZFMDAwMDAxRkZGODAwMDAwMDNGQzAwMDAwMjMzOTdEQjYyQT5JPAotMUMwMDdGMDBGRjgwRkY4MEZGODBGRjgwRkY4MDdGMDAxQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQzAwN0YwMEZGODBGRjgwRkY4MEZGODBGRjgwN0YwMDFDMDAKLTA5MjQ3OUEzMTc+STwxQzAwN0YwMEZGODBGRjgwRkY4MEZGODBGRjgwN0YwMDFDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFDMDA3RjAwRkY4MEZGODBGRkMwRkYKLUMwRkZDMDdGQzAxQ0MwMDBDMDAwQzAwMEMwMDBDMDAxQzAwMTgwMDE4MDAzODAwMzAwMDcwMDA2MDAwRTAwMUMwMDM4MDA3MAotMDA2MDAwMEEzNDc5QTMxNz5JPDAwM0ZFMDAwMDFGRkZFMDAwN0MwM0Y4MDBFMDAwRkMwM0MwMDA3RjAzMDAwMDNGMDcwMDAKLTAzRjg3QzAwMDFGOEZFMDAwMUZDRkYwMDAxRkNGRjAwMDFGQ0ZGMDAwMUZDRkYwMDAxRkM3RTAwMDFGQzNDMDAwM0Y4MDAwMAotMDNGODAwMDAwN0YwMDAwMDA3RjAwMDAwMEZFMDAwMDAxRjgwMDAwMDNGMDAwMDAwN0UwMDAwMDA3QzAwMDAwMEY4MDAwMDAxCi1GMDAwMDAwMUUwMDAwMDAzQzAwMDAwMDM4MDAwMDAwMzgwMDAwMDA3MDAwMDAwMDcwMDAwMDAwNzAwMDAwMDA2MDAwMDAwMDYKLTAwMDAwMDA2MDAwMDAwMDYwMDAwMDAwNjAwMDAwMDA2MDAwMDAwMDYwMDAwMDAwNjAwMDAwMDA2MDAwMDAwMDYwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTAwMDAwMDNGCi04MDAwMDA3RkMwMDAwMDdGQzAwMDAwN0ZDMDAwMDA3RkMwMDAwMDdGQzAwMDAwM0Y4MDAwMDAwRTAwMDAxRTNCN0NCQTI3PgotNjMgRDwwMDAwMDAzODAwMDAwMDAwMDAwMDM4MDAwMDAwMDAwMDAwMzgwMDAwMDAwMDAwMDA3QzAwMDAwMDAwMDAwMDdDMDAKLTAwMDAwMDAwMDA3QzAwMDAwMDAwMDAwMEZFMDAwMDAwMDAwMDAwRkUwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMUZGMDAwMAotMDAwMDAwMDFGRjAwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAzN0Y4MDAwMDAwMDAwMDM3RjgwMDAwMDAwMDAwNzdGQzAwMDAwCi0wMDAwMDYzRkMwMDAwMDAwMDAwNjNGQzAwMDAwMDAwMDBFM0ZFMDAwMDAwMDAwMEMxRkUwMDAwMDAwMDAwQzFGRTAwMDAwMDAKLTAwMUMxRkYwMDAwMDAwMDAxODBGRjAwMDAwMDAwMDE4MEZGMDAwMDAwMDAwMzgwRkY4MDAwMDAwMDAzMDA3RjgwMDAwMDAwMAotMzAwN0Y4MDAwMDAwMDA3MDA3RkMwMDAwMDAwMDYwMDNGQzAwMDAwMDAwNjAwM0ZDMDAwMDAwMDBDMDAzRkUwMDAwMDAwMEMwCi0wMUZFMDAwMDAwMDBDMDAxRkUwMDAwMDAwMTgwMDFGRjAwMDAwMDAxODAwMEZGMDAwMDAwMDE4MDAwRkYwMDAwMDAwMzAwMDAKLUZGODAwMDAwMDMwMDAwN0Y4MDAwMDAwMzAwMDA3RjgwMDAwMDA2MDAwMDdGQzAwMDAwMDdGRkZGRkZDMDAwMDAwN0ZGRkZGRgotQzAwMDAwMEZGRkZGRkZFMDAwMDAwQzAwMDAxRkUwMDAwMDBDMDAwMDFGRTAwMDAwMTgwMDAwMEZGMDAwMDAxODAwMDAwRkYwCi0wMDAwMTgwMDAwMEZGMDAwMDAzMDAwMDAwN0Y4MDAwMDMwMDAwMDA3RjgwMDAwMzAwMDAwMDdGODAwMDA2MDAwMDAwM0ZDMDAKLTAwNjAwMDAwMDNGQzAwMDBFMDAwMDAwM0ZDMDAwMEUwMDAwMDAxRkUwMDAxRTAwMDAwMDFGRTAwMDNGMDAwMDAwMUZGMDAwRgotRkMwMDAwMDdGRjgwRkZGRjgwMDBGRkZGRkVGRkZGODAwMEZGRkZGRUZGRkY4MDAwRkZGRkZFMzczQzdEQkIzRT42NQotRDxGRkZGRkZGRkUwMDAwMEZGRkZGRkZGRkMwMDAwRkZGRkZGRkZGRjAwMDAwMUZGODAwMDdGQzAwMDAwRkYwMDAwMUZFMDAwCi0wMEZGMDAwMDBGRjAwMDAwRkYwMDAwMDdGODAwMDBGRjAwMDAwM0ZDMDAwMEZGMDAwMDAzRkMwMDAwRkYwMDAwMDFGRTAwMDAKLUZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRjAwMDBGRjAwMDAwMUZGMDAwMEZGMDAwMDAxRkYwMDAwRkYwMDAwMDFGRjAwMDBGRgotMDAwMDAxRkYwMDAwRkYwMDAwMDFGRjAwMDBGRjAwMDAwMUZGMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDNGRTAwMDBGRjAwCi0wMDAzRkMwMDAwRkYwMDAwMDdGODAwMDBGRjAwMDAwRkYwMDAwMEZGMDAwMDFGRTAwMDAwRkYwMDAwM0ZDMDAwMDBGRjAwMDAKLUZGODAwMDAwRkZGRkZGRkMwMDAwMDBGRkZGRkZGQzAwMDAwMEZGMDAwMDdGODAwMDAwRkYwMDAwMUZFMDAwMDBGRjAwMDAwNwotRjAwMDAwRkYwMDAwMDNGODAwMDBGRjAwMDAwMUZDMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDBGRjAwMDBGRjAwMDAwMEZGCi0wMDAwRkYwMDAwMDBGRjgwMDBGRjAwMDAwMDdGODAwMEZGMDAwMDAwN0ZDMDAwRkYwMDAwMDA3RkMwMDBGRjAwMDAwMDdGQzAKLTAwRkYwMDAwMDA3RkMwMDBGRjAwMDAwMDdGQzAwMEZGMDAwMDAwN0ZDMDAwRkYwMDAwMDA3RkMwMDBGRjAwMDAwMDdGODAwMAotRkYwMDAwMDBGRjgwMDBGRjAwMDAwMEZGODAwMEZGMDAwMDAxRkYwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwM0ZFMDAwMEZGCi0wMDAwMDdGQzAwMDBGRjAwMDAxRkY4MDAwMUZGODAwMDdGRjAwMEZGRkZGRkZGRkZDMDAwRkZGRkZGRkZGRjAwMDBGRkZGRkYKLUZGRjgwMDAwMzIzOTdEQjgzQj5JPDAwMDAwMUZGODAwMTgwMDAwMDBGRkZFMDAzODAwMDAwN0ZGRkY4MDM4MDAwMDFGRjgwCi03RTA3ODAwMDAzRkMwMDBGMEY4MDAwMEZGMDAwMDM5RjgwMDAxRkUwMDAwMURGODAwMDNGODAwMDAwRkY4MDAwN0YwMDAwMDAKLTdGODAwMEZFMDAwMDAwM0Y4MDAxRkUwMDAwMDAzRjgwMDNGQzAwMDAwMDFGODAwN0Y4MDAwMDAwMEY4MDA3RjgwMDAwMDAwRgotODAwRkYwMDAwMDAwMDc4MDBGRjAwMDAwMDAwNzgwMUZFMDAwMDAwMDA3ODAxRkUwMDAwMDAwMDM4MDNGRTAwMDAwMDAwMzgwCi0zRkMwMDAwMDAwMDM4MDdGQzAwMDAwMDAwMTgwN0ZDMDAwMDAwMDAxODA3RkMwMDAwMDAwMDE4MDdGODAwMDAwMDAwMTgwRkYKLTgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MAotMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwCi0wMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDA3RjgwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMTgwN0ZDMDAwMDAKLTAwMDE4MDdGQzAwMDAwMDAwMTgwM0ZDMDAwMDAwMDAxODAzRkUwMDAwMDAwMDE4MDFGRTAwMDAwMDAwMzgwMUZFMDAwMDAwMAotMDMwMDBGRjAwMDAwMDAwMzAwMEZGMDAwMDAwMDA3MDAwN0Y4MDAwMDAwMDcwMDA3RjgwMDAwMDAwNjAwMDNGQzAwMDAwMDBFCi0wMDAxRkUwMDAwMDAxQzAwMDBGRTAwMDAwMDE4MDAwMDdGMDAwMDAwMzgwMDAwM0Y4MDAwMDA3MDAwMDAxRkUwMDAwMEUwMDAKLTAwMEZGMDAwMDNDMDAwMDAwM0ZDMDAwRjgwMDAwMDAxRkY4MDNGMDAwMDAwMDA3RkZGRkMwMDAwMDAwMDBGRkZGMDAwMDAwMAotMDAwMUZGODAwMDAwMzEzRDdCQkEzQz5JPEZGRkZGRkZGQzAwMDAwRkZGRkZGRkZGODAwMDBGRkZGRkZGRkZFMDAwMDAxRkYKLTgwMDFGRjgwMDAwMEZGMDAwMDNGRTAwMDAwRkYwMDAwMEZGMDAwMDBGRjAwMDAwM0Y4MDAwMEZGMDAwMDAxRkMwMDAwRkYwMAotMDAwMEZFMDAwMEZGMDAwMDAwN0YwMDAwRkYwMDAwMDA3RjAwMDBGRjAwMDAwMDNGODAwMEZGMDAwMDAwM0ZDMDAwRkYwMDAwCi0wMDFGQzAwMEZGMDAwMDAwMUZFMDAwRkYwMDAwMDAwRkUwMDBGRjAwMDAwMDBGRjAwMEZGMDAwMDAwMEZGMDAwRkYwMDAwMDAKLTBGRjAwMEZGMDAwMDAwMDdGODAwRkYwMDAwMDAwN0Y4MDBGRjAwMDAwMDA3RjgwMEZGMDAwMDAwMDdGODAwRkYwMDAwMDAwNwotRkMwMEZGMDAwMDAwMDdGQzAwRkYwMDAwMDAwN0ZDMDBGRjAwMDAwMDA3RkMwMEZGMDAwMDAwMDdGQzAwRkYwMDAwMDAwN0ZDCi0wMEZGMDAwMDAwMDdGQzAwRkYwMDAwMDAwN0ZDMDBGRjAwMDAwMDA3RkMwMEZGMDAwMDAwMDdGQzAwRkYwMDAwMDAwN0ZDMDAKLUZGMDAwMDAwMDdGQzAwRkYwMDAwMDAwN0Y4MDBGRjAwMDAwMDA3RjgwMEZGMDAwMDAwMDdGODAwRkYwMDAwMDAwN0Y4MDBGRgotMDAwMDAwMEZGMDAwRkYwMDAwMDAwRkYwMDBGRjAwMDAwMDBGRTAwMEZGMDAwMDAwMEZFMDAwRkYwMDAwMDAxRkUwMDBGRjAwCi0wMDAwMUZDMDAwRkYwMDAwMDAzRjgwMDBGRjAwMDAwMDNGODAwMEZGMDAwMDAwN0YwMDAwRkYwMDAwMDBGRTAwMDBGRjAwMDAKLTAxRkMwMDAwRkYwMDAwMDNGODAwMDBGRjAwMDAwRkYwMDAwMEZGMDAwMDNGRTAwMDAxRkY4MDAwRkY4MDAwRkZGRkZGRkZGRgotMDAwMEZGRkZGRkZGRjgwMDAwRkZGRkZGRkZDMDAwMDAzNjM5N0RCODNGPkk8RkZGRkZGRkZGRkZFMDBGRkZGRkZGRkZGRkUKLTAwRkZGRkZGRkZGRkZFMDAwMUZGODAwMDA3RkUwMDAwRkYwMDAwMDBGRTAwMDBGRjAwMDAwMDNGMDAwMEZGMDAwMDAwMUYwMAotMDBGRjAwMDAwMDBGMDAwMEZGMDAwMDAwMDcwMDAwRkYwMDAwMDAwNzAwMDBGRjAwMDAwMDA3MDAwMEZGMDAwMDAwMDMwMDAwCi1GRjAwMDAwMDAzMDAwMEZGMDAwMDAwMDMwMDAwRkYwMDAwMDAwMzgwMDBGRjAwMDAwMDAxODAwMEZGMDAwMEMwMDE4MDAwRkYKLTAwMDBDMDAxODAwMEZGMDAwMEMwMDE4MDAwRkYwMDAwQzAwMDAwMDBGRjAwMDBDMDAwMDAwMEZGMDAwMEMwMDAwMDAwRkYwMAotMDFDMDAwMDAwMEZGMDAwMUMwMDAwMDAwRkYwMDAzQzAwMDAwMDBGRjAwMEZDMDAwMDAwMEZGRkZGRkMwMDAwMDAwRkZGRkZGCi1DMDAwMDAwMEZGRkZGRkMwMDAwMDAwRkYwMDBGQzAwMDAwMDBGRjAwMDNDMDAwMDAwMEZGMDAwMUMwMDAwMDAwRkYwMDAxQzAKLTAwMDAwMEZGMDAwMEMwMDAwMDAwRkYwMDAwQzAwMDAwMDBGRjAwMDBDMDAwNjAwMEZGMDAwMEMwMDA2MDAwRkYwMDAwQzAwMAotNjAwMEZGMDAwMEMwMDBFMDAwRkYwMDAwMDAwMEMwMDBGRjAwMDAwMDAwQzAwMEZGMDAwMDAwMDBDMDAwRkYwMDAwMDAwMEMwCi0wMEZGMDAwMDAwMDFDMDAwRkYwMDAwMDAwMUMwMDBGRjAwMDAwMDAxQzAwMEZGMDAwMDAwMDM4MDAwRkYwMDAwMDAwMzgwMDAKLUZGMDAwMDAwMDc4MDAwRkYwMDAwMDAwNzgwMDBGRjAwMDAwMDBGODAwMEZGMDAwMDAwM0Y4MDAwRkYwMDAwMDA3RjgwMDFGRgotODAwMDA3RkYwMEZGRkZGRkZGRkZGRjAwRkZGRkZGRkZGRkZGMDBGRkZGRkZGRkZGRkYwMDMzMzk3RUI4Mzg+STxGRkZGRkYKLUZGRkZGOEZGRkZGRkZGRkZGOEZGRkZGRkZGRkZGODAxRkY4MDAwMUZGODAwRkYwMDAwMDFGODAwRkYwMDAwMDBGQzAwRkYwMAotMDAwMDdDMDBGRjAwMDAwMDNDMDBGRjAwMDAwMDFDMDBGRjAwMDAwMDFDMDBGRjAwMDAwMDBDMDBGRjAwMDAwMDBDMDBGRjAwCi0wMDAwMEMwMEZGMDAwMDAwMEMwMEZGMDAwMDAwMEUwMEZGMDAwMDAwMDYwMEZGMDAwMDAwMDYwMEZGMDAwMTgwMDYwMEZGMDAKLTAxODAwNjAwRkYwMDAxODAwMDAwRkYwMDAxODAwMDAwRkYwMDAxODAwMDAwRkYwMDAxODAwMDAwRkYwMDAzODAwMDAwRkYwMAotMDM4MDAwMDBGRjAwMDc4MDAwMDBGRjAwMUY4MDAwMDBGRkZGRkY4MDAwMDBGRkZGRkY4MDAwMDBGRkZGRkY4MDAwMDBGRjAwCi0xRjgwMDAwMEZGMDAwNzgwMDAwMEZGMDAwMzgwMDAwMEZGMDAwMzgwMDAwMEZGMDAwMTgwMDAwMEZGMDAwMTgwMDAwMEZGMDAKLTAxODAwMDAwRkYwMDAxODAwMDAwRkYwMDAxODAwMDAwRkYwMDAxODAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMAotMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwCi0wMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMUZGQzAwMDAwMDBGRkZGRkYKLUMwMDAwMEZGRkZGRkMwMDAwMEZGRkZGRkMwMDAwMDJGMzk3REI4MzY+STwwMDAwMDBGRjgwMDBDMDAwMDAwRkZGRjAwMUMwCi0wMDAwM0ZGRkZDMDFDMDAwMDBGRjgwM0YwM0MwMDAwM0ZDMDAwNzg3QzAwMDBGRjAwMDAzQ0ZDMDAwMUZFMDAwMDBFRkMwMDAKLTNGQzAwMDAwN0ZDMDAwN0Y4MDAwMDAzRkMwMDBGRjAwMDAwMDFGQzAwMUZFMDAwMDAwMUZDMDAzRkMwMDAwMDAwRkMwMDdGOAotMDAwMDAwMDdDMDA3RjgwMDAwMDAwN0MwMEZGMDAwMDAwMDAzQzAwRkYwMDAwMDAwMDNDMDFGRTAwMDAwMDAwM0MwMUZFMDAwCi0wMDAwMDFDMDNGRTAwMDAwMDAwMUMwM0ZDMDAwMDAwMDAxQzA3RkMwMDAwMDAwMDBDMDdGQzAwMDAwMDAwMEMwN0ZDMDAwMDAKLTAwMDBDMDdGQzAwMDAwMDAwMEMwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMAotMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwCi0wMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMEZGRkZGRkZGODAwMDAwRkZGRkZGN0ZDMDAwMDBGRkZGRkYKLTdGQzAwMDAwMDA3RkUwN0ZDMDAwMDAwMDNGQzA3RkMwMDAwMDAwM0ZDMDNGQzAwMDAwMDAzRkMwM0ZFMDAwMDAwMDNGQzAxRgotRTAwMDAwMDAzRkMwMUZFMDAwMDAwMDNGQzAwRkYwMDAwMDAwM0ZDMDBGRjAwMDAwMDAzRkMwMDdGODAwMDAwMDNGQzAwN0Y4Ci0wMDAwMDAzRkMwMDNGQzAwMDAwMDNGQzAwMUZFMDAwMDAwM0ZDMDAwRkYwMDAwMDA3RkMwMDA3RjgwMDAwMDdGQzAwMDNGQzAKLTAwMDBGRkMwMDAxRkUwMDAwMEVGQzAwMDBGRjgwMDAzQzdDMDAwMDNGRTAwMDc4M0MwMDAwMEZGQzAzRjAxQzAwMDAwM0ZGRgotRkMwMEMwMDAwMDBGRkZGMDAwMDAwMDAwMDBGRjgwMDAwMDM4M0Q3Q0JBNDE+STxGRkZGRkYwMUZGRkZGRUZGRkZGRjAxRkYKLUZGRkVGRkZGRkYwMUZGRkZGRTAxRkY4MDAwMDNGRjAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRQotMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwCi0wMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDAKLUZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRgotMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkZGRkZGRkZGRTAwMDBGRkZGCi1GRkZGRkUwMDAwRkZGRkZGRkZGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAKLTAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMQotRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFCi0wMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAKLTAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMQotRkY4MDAwMDNGRjAwRkZGRkZGMDFGRkZGRkVGRkZGRkYwMUZGRkZGRUZGRkZGRjAxRkZGRkZFMzczOTdEQjgzRT5JPEZGRkYKLUZGQzBGRkZGRkZDMEZGRkZGRkMwMDBGRkMwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RgotODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGCi04MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0YKLTgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RgotODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGCi04MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMDdGODAwMDAwN0Y4MDAwMDA3RjgwMDAwMEZGQzAwMEZGRkYKLUZGQzBGRkZGRkZDMEZGRkZGRkMwMUEzOTdFQjgxRT5JPEZGRkZGRjAwMDFGRkZGMDBGRkZGRkYwMDAxRkZGRjAwRkZGRkZGCi0wMDAxRkZGRjAwMDFGRjgwMDAwMDdGRjAwMDAwRkYwMDAwMDAzRjgwMDAwMEZGMDAwMDAwM0UwMDAwMDBGRjAwMDAwMDNDMDAKLTAwMDBGRjAwMDAwMDM4MDAwMDAwRkYwMDAwMDA3MDAwMDAwMEZGMDAwMDAwRTAwMDAwMDBGRjAwMDAwMUMwMDAwMDAwRkYwMAotMDAwMzgwMDAwMDAwRkYwMDAwMDcwMDAwMDAwMEZGMDAwMDBFMDAwMDAwMDBGRjAwMDAxQzAwMDAwMDAwRkYwMDAwMzgwMDAwCi0wMDAwRkYwMDAwNzAwMDAwMDAwMEZGMDAwMEUwMDAwMDAwMDBGRjAwMDFDMDAwMDAwMDAwRkYwMDA3ODAwMDAwMDAwMEZGMDAKLTBFMDAwMDAwMDAwMEZGMDAxQzAwMDAwMDAwMDBGRjAwM0UwMDAwMDAwMDAwRkYwMDdFMDAwMDAwMDAwMEZGMDBGRjAwMDAwMAotMDAwMEZGMDFGRjAwMDAwMDAwMDBGRjAzRkY4MDAwMDAwMDAwRkYwNzdGQzAwMDAwMDAwMEZGMEU3RkMwMDAwMDAwMDBGRjFDCi0zRkUwMDAwMDAwMDBGRjM4MUZGMDAwMDAwMDAwRkY3MDFGRjAwMDAwMDAwMEZGRTAwRkY4MDAwMDAwMDBGRkMwMDdGQzAwMDAKLTAwMDBGRjgwMDdGQzAwMDAwMDAwRkYwMDAzRkUwMDAwMDAwMEZGMDAwMUZGMDAwMDAwMDBGRjAwMDFGRjAwMDAwMDAwRkYwMAotMDBGRjgwMDAwMDAwRkYwMDAwN0ZDMDAwMDAwMEZGMDAwMDdGQzAwMDAwMDBGRjAwMDAzRkUwMDAwMDAwRkYwMDAwMUZGMDAwCi0wMDAwRkYwMDAwMUZGMDAwMDAwMEZGMDAwMDBGRjgwMDAwMDBGRjAwMDAwRkY4MDAwMDAwRkYwMDAwMDdGQzAwMDAwMEZGMDAKLTAwMDNGRTAwMDAwMEZGMDAwMDAzRkUwMDAwMDBGRjAwMDAwMUZGMDAwMDAwRkYwMDAwMDBGRjgwMDAwMEZGMDAwMDAwRkZDMAotMDAwMEZGMDAwMDAwRkZFMDAwMDFGRjgwMDAwMUZGRjAwMEZGRkZGRjAwMUZGRkZGODBGRkZGRkYwMDFGRkZGRjgwRkZGRkZGCi0wMDFGRkZGRjgwMzkzOTdEQjg0MT43NSBEPEZGRkZGRkUwMDAwMEZGRkZGRkUwMDAwMEZGRkZGRkUwMDAwMDAxRkZDMDAwMDAKLTAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMAotMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwCi0wMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAKLTAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMAotMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwCi0wMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAxODAwRkYwMDAwMDAxODAwRkYwMDAwMDAxODAwRkYwMDAwMDAxODAwRkYwMDAwMDAKLTE4MDBGRjAwMDAwMDM4MDBGRjAwMDAwMDMwMDBGRjAwMDAwMDMwMDBGRjAwMDAwMDMwMDBGRjAwMDAwMDcwMDBGRjAwMDAwMAotNzAwMEZGMDAwMDAwNzAwMEZGMDAwMDAwRjAwMEZGMDAwMDAwRjAwMEZGMDAwMDAxRjAwMEZGMDAwMDAzRjAwMEZGMDAwMDBGCi1GMDAwRkYwMDAwMUZFMDAxRkY4MDAwRkZFMEZGRkZGRkZGRkZFMEZGRkZGRkZGRkZFMEZGRkZGRkZGRkZFMDJEMzk3REI4MzQKLT5JPEZGRkYwMDAwMDAwMDA3RkZGOEZGRkY4MDAwMDAwMDBGRkZGOEZGRkY4MDAwMDAwMDBGRkZGODAxRkY4MDAwMDAwMDBGCi1GQzAwMDBERkMwMDAwMDAwMUJGODAwMDBERkMwMDAwMDAwMUJGODAwMDBDRkUwMDAwMDAwMzNGODAwMDBDRkUwMDAwMDAwMzMKLUY4MDAwMENGRTAwMDAwMDAzM0Y4MDAwMEM3RjAwMDAwMDA2M0Y4MDAwMEM3RjAwMDAwMDA2M0Y4MDAwMEM3RjAwMDAwMDA2MwotRjgwMDAwQzNGODAwMDAwMEMzRjgwMDAwQzNGODAwMDAwMEMzRjgwMDAwQzFGQzAwMDAwMTgzRjgwMDAwQzFGQzAwMDAwMTgzCi1GODAwMDBDMUZDMDAwMDAxODNGODAwMDBDMEZFMDAwMDAzMDNGODAwMDBDMEZFMDAwMDAzMDNGODAwMDBDMDdGMDAwMDA2MDMKLUY4MDAwMEMwN0YwMDAwMDYwM0Y4MDAwMEMwN0YwMDAwMDYwM0Y4MDAwMEMwM0Y4MDAwMEMwM0Y4MDAwMEMwM0Y4MDAwMEMwMwotRjgwMDAwQzAzRjgwMDAwQzAzRjgwMDAwQzAxRkMwMDAxODAzRjgwMDAwQzAxRkMwMDAxODAzRjgwMDAwQzAwRkUwMDAzMDAzCi1GODAwMDBDMDBGRTAwMDMwMDNGODAwMDBDMDBGRTAwMDMwMDNGODAwMDBDMDA3RjAwMDYwMDNGODAwMDBDMDA3RjAwMDYwMDMKLUY4MDAwMEMwMDNGODAwQzAwM0Y4MDAwMEMwMDNGODAwQzAwM0Y4MDAwMEMwMDNGODAwQzAwM0Y4MDAwMEMwMDFGQzAxODAwMwotRjgwMDAwQzAwMUZDMDE4MDAzRjgwMDAwQzAwMUZDMDE4MDAzRjgwMDAwQzAwMEZFMDMwMDAzRjgwMDAwQzAwMEZFMDMwMDAzCi1GODAwMDBDMDAwN0YwNjAwMDNGODAwMDBDMDAwN0YwNjAwMDNGODAwMDBDMDAwN0YwNjAwMDNGODAwMDBDMDAwM0Y4QzAwMDMKLUY4MDAwMEMwMDAzRjhDMDAwM0Y4MDAwMEMwMDAxRkQ4MDAwM0Y4MDAwMEMwMDAxRkQ4MDAwM0Y4MDAwMEMwMDAxRkQ4MDAwMwotRjgwMDAwQzAwMDBGRjAwMDAzRjgwMDAwQzAwMDBGRjAwMDAzRjgwMDAwQzAwMDBGRjAwMDAzRjgwMDAxRTAwMDA3RTAwMDAzCi1GODAwMDNGMDAwMDdFMDAwMDNGODAwMEZGQzAwMDNDMDAwMDdGQzAwRkZGRkMwMDNDMDAzRkZGRkY4RkZGRkMwMDNDMDAzRkYKLUZGRjhGRkZGQzAwMTgwMDNGRkZGRjg0NTM5N0RCODRDPkk8RkZGRjAwMDAwN0ZGRkVGRkZGODAwMDA3RkZGRUZGRkZDMDAwCi0wN0ZGRkUwMEZGQzAwMDAwN0ZFMDAwRkZFMDAwMDAxRjgwMDBERkYwMDAwMDBGMDAwMERGRjAwMDAwMDYwMDAwQ0ZGODAwMDAKLTA2MDAwMEM3RkMwMDAwMDYwMDAwQzdGQzAwMDAwNjAwMDBDM0ZFMDAwMDA2MDAwMEMxRkYwMDAwMDYwMDAwQzFGRjAwMDAwNgotMDAwMEMwRkY4MDAwMDYwMDAwQzA3RkMwMDAwNjAwMDBDMDdGQzAwMDA2MDAwMEMwM0ZFMDAwMDYwMDAwQzAxRkYwMDAwNjAwCi0wMEMwMUZGODAwMDYwMDAwQzAwRkY4MDAwNjAwMDBDMDA3RkMwMDA2MDAwMEMwMDdGRTAwMDYwMDAwQzAwM0ZFMDAwNjAwMDAKLUMwMDFGRjAwMDYwMDAwQzAwMUZGODAwNjAwMDBDMDAwRkY4MDA2MDAwMEMwMDA3RkMwMDYwMDAwQzAwMDdGRTAwNjAwMDBDMAotMDAzRkUwMDYwMDAwQzAwMDFGRjAwNjAwMDBDMDAwMEZGODA2MDAwMEMwMDAwRkY4MDYwMDAwQzAwMDA3RkMwNjAwMDBDMDAwCi0wM0ZFMDYwMDAwQzAwMDAzRkUwNjAwMDBDMDAwMDFGRjA2MDAwMEMwMDAwMEZGODYwMDAwQzAwMDAwRkY4NjAwMDBDMDAwMDAKLTdGQzYwMDAwQzAwMDAwM0ZFNjAwMDBDMDAwMDAzRkU2MDAwMEMwMDAwMDFGRjYwMDAwQzAwMDAwMEZGRTAwMDBDMDAwMDAwRgotRkUwMDAwQzAwMDAwMDdGRTAwMDBDMDAwMDAwM0ZFMDAwMEMwMDAwMDAzRkUwMDAwQzAwMDAwMDFGRTAwMDBDMDAwMDAwMEZFCi0wMDAwQzAwMDAwMDBGRTAwMDBDMDAwMDAwMDdFMDAwMUUwMDAwMDAwM0UwMDAzRjAwMDAwMDAzRTAwMEZGQzAwMDAwMDFFMDAKLUZGRkZDMDAwMDAwRTAwRkZGRkMwMDAwMDBFMDBGRkZGQzAwMDAwMDYwMDM3Mzk3REI4M0U+STwwMDAwMDNGRjAwMDAwMDAwCi0wMDFGRkZFMDAwMDAwMDAwRkUwMUZDMDAwMDAwMDFGODAwN0UwMDAwMDAwN0UwMDAxRjgwMDAwMDBGQzAwMDBGQzAwMDAwM0YKLTgwMDAwN0YwMDAwMDdGMDAwMDAzRjgwMDAwRkUwMDAwMDFGQzAwMDFGQzAwMDAwMEZFMDAwMUY4MDAwMDAwN0UwMDAzRjgwMAotMDAwMDdGMDAwN0YwMDAwMDAwM0Y4MDA3RjAwMDAwMDAzRjgwMEZFMDAwMDAwMDFGQzAwRkUwMDAwMDAwMUZDMDFGRTAwMDAwCi0wMDFGRTAxRkMwMDAwMDAwMEZFMDNGQzAwMDAwMDAwRkYwM0ZDMDAwMDAwMDBGRjAzRkMwMDAwMDAwMEZGMDdGQzAwMDAwMDAKLTBGRjg3RjgwMDAwMDAwMDdGODdGODAwMDAwMDAwN0Y4N0Y4MDAwMDAwMDA3RjhGRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwNwotRkNGRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwN0ZDRkY4MDAwMDAwMDA3RkNGRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwN0ZDCi1GRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwN0ZDRkY4MDAwMDAwMDA3RkNGRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwN0ZDN0YKLTgwMDAwMDAwMDdGODdGQzAwMDAwMDAwRkY4N0ZDMDAwMDAwMDBGRjg3RkMwMDAwMDAwMEZGODNGQzAwMDAwMDAwRkYwM0ZDMAotMDAwMDAwMEZGMDFGRTAwMDAwMDAxRkUwMUZFMDAwMDAwMDFGRTAxRkUwMDAwMDAwMUZFMDBGRjAwMDAwMDAzRkMwMDdGMDAwCi0wMDAwM0Y4MDA3RjgwMDAwMDA3RjgwMDNGODAwMDAwMDdGMDAwMUZDMDAwMDAwRkUwMDAxRkMwMDAwMDBGRTAwMDBGRTAwMDAKLTAxRkMwMDAwN0YwMDAwMDNGODAwMDAzRjgwMDAwN0YwMDAwMDFGQzAwMDBGRTAwMDAwMDdFMDAwMUY4MDAwMDAwM0Y4MDA3RgotMDAwMDAwMDBGRTAxRkMwMDAwMDAwMDFGRkZFMDAwMDAwMDAwMDNGRjAwMDAwMDM2M0Q3QkJBNDE+STxGRkZGRkZGRkMwMDAKLTAwRkZGRkZGRkZGQzAwMDBGRkZGRkZGRkZGMDAwMDAxRkY4MDAwRkZDMDAwMDBGRjAwMDAxRkUwMDAwMEZGMDAwMDBGRjAwMAotMDBGRjAwMDAwM0Y4MDAwMEZGMDAwMDAzRkMwMDAwRkYwMDAwMDFGRTAwMDBGRjAwMDAwMUZFMDAwMEZGMDAwMDAwRkYwMDAwCi1GRjAwMDAwMEZGMDAwMEZGMDAwMDAwRkY4MDAwRkYwMDAwMDBGRjgwMDBGRjAwMDAwMEZGODAwMEZGMDAwMDAwRkY4MDAwRkYKLTAwMDAwMEZGODAwMEZGMDAwMDAwRkY4MDAwRkYwMDAwMDBGRjgwMDBGRjAwMDAwMEZGMDAwMEZGMDAwMDAwRkYwMDAwRkYwMAotMDAwMUZFMDAwMEZGMDAwMDAxRkUwMDAwRkYwMDAwMDNGQzAwMDBGRjAwMDAwM0Y4MDAwMEZGMDAwMDBGRjAwMDAwRkYwMDAwCi0xRkUwMDAwMEZGMDAwMEZGODAwMDAwRkZGRkZGRkUwMDAwMDBGRkZGRkZGMDAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAKLTAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMAotMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwCi0wMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDAKLUZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDBGRgotMDAwMDAwMDAwMDAxRkY4MDAwMDAwMDAwRkZGRkZGMDAwMDAwMDBGRkZGRkYwMDAwMDAwMEZGRkZGRjAwMDAwMDAwMzEzOTdFCi1CODM4Pkk8MDAwMDAzRkYwMDAwMDAwMDAwMUZGRkUwMDAwMDAwMDBGRTAxRkMwMDAwMDAwMUY4MDA3RTAwMDAwMDA3RTAwMAotMUY4MDAwMDAwRkMwMDAwRkMwMDAwMDNGODAwMDA3RjAwMDAwN0YwMDAwMDNGODAwMDBGRTAwMDAwMUZDMDAwMUZDMDAwMDAwCi1GRTAwMDFGQzAwMDAwMEZFMDAwM0Y4MDAwMDAwN0YwMDA3RjgwMDAwMDA3RjgwMDdGMDAwMDAwMDNGODAwRkYwMDAwMDAwM0YKLUMwMEZFMDAwMDAwMDFGQzAxRkUwMDAwMDAwMUZFMDFGRTAwMDAwMDAxRkUwM0ZDMDAwMDAwMDBGRjAzRkMwMDAwMDAwMEZGMAotM0ZDMDAwMDAwMDBGRjA3RkMwMDAwMDAwMEZGODdGQzAwMDAwMDAwRkY4N0Y4MDAwMDAwMDA3Rjg3RjgwMDAwMDAwMDdGOEZGCi04MDAwMDAwMDA3RkNGRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwN0ZDRkY4MDAwMDAwMDA3RkNGRjgwMDAwMDAwMDdGQ0ZGODAKLTAwMDAwMDA3RkNGRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwN0ZDRkY4MDAwMDAwMDA3RkNGRjgwMDAwMDAwMDdGQ0ZGODAwMAotMDAwMDA3RkNGRjgwMDAwMDAwMDdGQzdGODAwMDAwMDAwN0Y4N0Y4MDAwMDAwMDA3Rjg3RkMwMDAwMDAwMEZGODdGQzAwMDAwCi0wMDBGRjgzRkMwMDAwMDAwMEZGMDNGQzAwMDAwMDAwRkYwMUZFMDAwMDAwMDFGRTAxRkUwMDAwMDAwMUZFMDFGRTAwMDAwMDAKLTFGRTAwRkYwMDAwMDAwM0ZDMDA3RjAwMDdDMDAzRjgwMDdGMDAxRkYwMDNGODAwM0Y4MDM4MzgwN0YwMDAxRkMwNzAxQzBGRQotMDAwMUZDMEUwMEMwRkUwMDAwRkUwQzAwRTFGQzAwMDA3RjBDMDA2M0Y4MDAwMDNGOEMwMDc3RjAwMDAwMUZDQzAwM0ZFMDAwCi0wMDA3RUUwMDNGODAwMDAwMDNGRjAwN0YwMDAwMDAwMEZGODFGQzAwMEMwMDAwMUZGRkZDMDAwQzAwMDAwM0ZGMUMwMDBDMDAKLTAwMDAwMDFFMDAxQzAwMDAwMDAwMUYwMDFDMDAwMDAwMDAxRjAwM0MwMDAwMDAwMDFGODA3QzAwMDAwMDAwMUZDMEY4MDAwMAotMDAwMDBGRkZGODAwMDAwMDAwMEZGRkY4MDAwMDAwMDAwRkZGRjgwMDAwMDAwMDBGRkZGMDAwMDAwMDAwMDdGRkYwMDAwMDAwCi0wMDA3RkZFMDAwMDAwMDAwMDNGRkMwMDAwMDAwMDAwMUZGODAwMDAwMDAwMDAwN0UwMDM2NEI3QkJBNDE+STxGRkZGRkZGRQotMDAwMDAwMDBGRkZGRkZGRkUwMDAwMDAwRkZGRkZGRkZGODAwMDAwMDAxRkY4MDA3RkUwMDAwMDAwMEZGMDAwMEZGODAwMDAwCi0wMEZGMDAwMDNGQzAwMDAwMDBGRjAwMDAxRkUwMDAwMDAwRkYwMDAwMEZGMDAwMDAwMEZGMDAwMDA3RjgwMDAwMDBGRjAwMDAKLTA3RjgwMDAwMDBGRjAwMDAwM0ZDMDAwMDAwRkYwMDAwMDNGQzAwMDAwMEZGMDAwMDAzRkUwMDAwMDBGRjAwMDAwM0ZFMDAwMAotMDBGRjAwMDAwM0ZFMDAwMDAwRkYwMDAwMDNGRTAwMDAwMEZGMDAwMDAzRkUwMDAwMDBGRjAwMDAwM0ZFMDAwMDAwRkYwMDAwCi0wM0ZDMDAwMDAwRkYwMDAwMDNGQzAwMDAwMEZGMDAwMDA3RjgwMDAwMDBGRjAwMDAwN0Y4MDAwMDAwRkYwMDAwMEZGMDAwMDAKLTAwRkYwMDAwMUZFMDAwMDAwMEZGMDAwMDNGODAwMDAwMDBGRjAwMDBGRjAwMDAwMDAwRkYwMDA3RkMwMDAwMDAwMEZGRkZGRgotRTAwMDAwMDAwMEZGRkZGRkMwMDAwMDAwMDBGRjAwMEZGMDAwMDAwMDAwRkYwMDAzRjgwMDAwMDAwMEZGMDAwMEZFMDAwMDAwCi0wMEZGMDAwMEZGMDAwMDAwMDBGRjAwMDA3RjgwMDAwMDAwRkYwMDAwM0ZDMDAwMDAwMEZGMDAwMDNGQzAwMDAwMDBGRjAwMDAKLTFGQzAwMDAwMDBGRjAwMDAxRkUwMDAwMDAwRkYwMDAwMUZFMDAwMDAwMEZGMDAwMDFGRTAwMDAwMDBGRjAwMDAxRkUwMDAwMAotMDBGRjAwMDAxRkUwMDAwMDAwRkYwMDAwMUZGMDAwMDAwMEZGMDAwMDFGRjAwMDAwMDBGRjAwMDAxRkYwMDAwMDAwRkYwMDAwCi0xRkYwMDAwMDAwRkYwMDAwMUZGMDAwMDAwMEZGMDAwMDFGRjAwMDAwMDBGRjAwMDAxRkYwMDE4MDAwRkYwMDAwMUZGMDAxODAKLTAwRkYwMDAwMUZGODAxODAwMEZGMDAwMDBGRjgwMTgwMDBGRjAwMDAwRkY4MDM4MDAxRkY4MDAwMDdGODAzMDBGRkZGRkYwMAotMDNGQzA3MDBGRkZGRkYwMDAxRkMwNjAwRkZGRkZGMDAwMEZFMEUwMDAwMDAwMDAwMDAzRkZDMDAwMDAwMDAwMDAwMDdGMDAwCi0zOTNCN0RCODNEPkk8MDAwRkY4MDBDMDAwM0ZGRTAxQzAwMEZGRkY4MUMwMDNGODA3RTNDMDA3RTAwMEY3QzAwRkMwMDA3RgotQzAxRjgwMDAzRkMwM0YwMDAwMUZDMDNFMDAwMDBGQzA3RTAwMDAwN0MwN0UwMDAwMDdDMDdDMDAwMDAzQzBGQzAwMDAwM0MwCi1GQzAwMDAwMUMwRkMwMDAwMDFDMEZDMDAwMDAxQzBGRTAwMDAwMEMwRkUwMDAwMDBDMEZFMDAwMDAwQzBGRjAwMDAwMEMwRkYKLTgwMDAwMDAwN0ZDMDAwMDAwMDdGRTAwMDAwMDA3RkY4MDAwMDAwM0ZGRjgwMDAwMDFGRkZGODAwMDAxRkZGRkY4MDAwMEZGRgotRkZFMDAwMDdGRkZGRjgwMDAzRkZGRkZFMDAwMEZGRkZGRjAwMDAzRkZGRkY4MDAwMDdGRkZGQzAwMDAwN0ZGRkMwMDAwMDA3Ci1GRkUwMDAwMDAwN0ZFMDAwMDAwMDNGRjAwMDAwMDAxRkYwMDAwMDAwMEZGMDAwMDAwMDA3RjgwMDAwMDAwN0Y4QzAwMDAwMDMKLUY4QzAwMDAwMDNGOEMwMDAwMDAxRjhDMDAwMDAwMUY4QzAwMDAwMDFGOEUwMDAwMDAxRjhFMDAwMDAwMUY4RTAwMDAwMDFGMAotRjAwMDAwMDFGMEYwMDAwMDAzRjBGODAwMDAwM0UwRkMwMDAwMDdFMEZFMDAwMDA3QzBGRjAwMDAwRkMwRkY4MDAwMUY4MEZCCi1GMDAwM0YwMEYwRkUwMEZFMDBFMDNGRkZGODAwRTAwRkZGRTAwMEMwMDFGRjAwMDAyNTNEN0NCQTJFPkk8M0ZGRkZGRkZGRgotRkZFMDNGRkZGRkZGRkZGRkUwM0ZGRkZGRkZGRkZGRTAzRkMwMDNGRjAwMUZFMDNFMDAwMUZFMDAwM0UwN0MwMDAxRkUwMDAxCi1GMDc4MDAwMUZFMDAwMEYwNzAwMDAxRkUwMDAwNzA3MDAwMDFGRTAwMDA3MDcwMDAwMUZFMDAwMDcwNjAwMDAxRkUwMDAwMzAKLTYwMDAwMUZFMDAwMDMwNjAwMDAxRkUwMDAwMzA2MDAwMDFGRTAwMDAzMEUwMDAwMUZFMDAwMDM4QzAwMDAxRkUwMDAwMThDMAotMDAwMUZFMDAwMDE4QzAwMDAxRkUwMDAwMThDMDAwMDFGRTAwMDAxODAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwCi0wMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDEKLUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRQotMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwCi0wMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAKLTAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMAotMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwCi0wMDAxRkUwMDAwMDAwMDAwMDdGRjgwMDAwMDAwMUZGRkZGRkZFMDAwMDAxRkZGRkZGRkUwMDAwMDFGRkZGRkZGRTAwMDM1MzkKLTdEQjgzQz5JPEZGRkZGRjAwMDdGRkZFRkZGRkZGMDAwN0ZGRkVGRkZGRkYwMDA3RkZGRTAxRkY4MDAwMDA3RkUwMDBGRjAwCi0wMDAwMUY4MDAwRkYwMDAwMDAwRjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAKLTAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMAotMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2Ci0wMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAKLTAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMAotRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGCi0wMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMDYwMDAwRkYwMDAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAKLTAwMDAwNjAwMDBGRjAwMDAwMDA2MDAwMEZGMDAwMDAwMEUwMDAwN0YwMDAwMDAwQzAwMDA3RjgwMDAwMDBDMDAwMDdGODAwMAotMDAxQzAwMDAzRjgwMDAwMDFDMDAwMDNGODAwMDAwMTgwMDAwMUZDMDAwMDAzODAwMDAxRkMwMDAwMDcwMDAwMDBGRTAwMDAwCi1GMDAwMDAwN0YwMDAwMEUwMDAwMDAzRjgwMDAxQzAwMDAwMDFGQzAwMDc4MDAwMDAwMEZFMDAwRjAwMDAwMDAwN0Y4MDdFMDAKLTAwMDAwMDFGRkZGODAwMDAwMDAwMDdGRkUwMDAwMDAwMDAwMDdGODAwMDAwMzczQjdEQjgzRT5JPEZGRkZGQzAwMDA3RkZGCi04MEZGRkZGQzAwMDA3RkZGODBGRkZGRkMwMDAwN0ZGRjgwMDNGRjgwMDAwMDBGRkMwMDAxRkYwMDAwMDAwN0UwMDAwMUZGMDAKLTAwMDAwM0MwMDAwMEZGMDAwMDAwMDE4MDAwMDBGRjgwMDAwMDAzODAwMDAwN0Y4MDAwMDAwMzAwMDAwMDdGODAwMDAwMDMwMAotMDAwMDdGQzAwMDAwMDMwMDAwMDAzRkMwMDAwMDA2MDAwMDAwM0ZDMDAwMDAwNjAwMDAwMDNGRTAwMDAwMEUwMDAwMDAxRkUwCi0wMDAwMEMwMDAwMDAxRkYwMDAwMDBDMDAwMDAwMEZGMDAwMDAxODAwMDAwMDBGRjAwMDAwMTgwMDAwMDAwRkY4MDAwMDE4MDAKLTAwMDAwN0Y4MDAwMDMwMDAwMDAwMDdGODAwMDAzMDAwMDAwMDA3RkMwMDAwNzAwMDAwMDAwM0ZDMDAwMDYwMDAwMDAwMDNGQwotMDAwMDYwMDAwMDAwMDFGRTAwMDBDMDAwMDAwMDAxRkUwMDAwQzAwMDAwMDAwMUZGMDAwMEMwMDAwMDAwMDBGRjAwMDE4MDAwCi0wMDAwMDBGRjAwMDE4MDAwMDAwMDAwRkY4MDAzODAwMDAwMDAwMDdGODAwMzAwMDAwMDAwMDA3RjgwMDMwMDAwMDAwMDAwM0YKLUMwMDYwMDAwMDAwMDAwM0ZDMDA2MDAwMDAwMDAwMDNGRTAwNjAwMDAwMDAwMDAxRkUwMEMwMDAwMDAwMDAwMUZFMDBDMDAwMAotMDAwMDAwMUZGMDFDMDAwMDAwMDAwMDBGRjAxODAwMDAwMDAwMDAwRkYwMTgwMDAwMDAwMDAwMDdGODMwMDAwMDAwMDAwMDA3Ci1GODMwMDAwMDAwMDAwMDA3RkMzMDAwMDAwMDAwMDAwM0ZDNjAwMDAwMDAwMDAwMDNGQzYwMDAwMDAwMDAwMDAzRkVFMDAwMDAKLTAwMDAwMDAxRkVDMDAwMDAwMDAwMDAwMUZFQzAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMAotRkY4MDAwMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDAwMDA3RjAwMDAwMDAwMDAwMDAwN0YwMDAwMDAwMDAwMDAwMDNFMDAwMDAwCi0wMDAwMDAwMDNFMDAwMDAwMDAwMDAwMDAxQzAwMDAwMDAwMDAwMDAwMUMwMDAwMDAwMDAwMDAwMDFDMDAwMDAwMDAzOTNCN0UKLUI4M0U+STxGRkZGRkMwN0ZGRkZGMDAxRkZGRkZGRkZGQzA3RkZGRkYwMDFGRkZGRkZGRkZDMDdGRkZGRjAwMUZGRkYwN0ZGCi04MDAwMUZGRTAwMDAxRkY4MDNGRTAwMDAwRkY4MDAwMDA3RTAwMUZFMDAwMDA3RjgwMDAwMDNDMDAxRkUwMDAwMDdGODAwMDAKLTAzODAwMUZGMDAwMDA3RjgwMDAwMDM4MDAwRkYwMDAwMDNGQzAwMDAwMzAwMDBGRjAwMDAwM0ZDMDAwMDAzMDAwMEZGODAwMAotMDNGQzAwMDAwNzAwMDA3RjgwMDAwMUZFMDAwMDA2MDAwMDdGODAwMDAxRkUwMDAwMDYwMDAwN0ZDMDAwMDFGRTAwMDAwNjAwCi0wMDNGQzAwMDAzRkYwMDAwMEMwMDAwM0ZDMDAwMDNGRjAwMDAwQzAwMDAzRkUwMDAwM0ZGMDAwMDBDMDAwMDFGRTAwMDA3RkYKLTgwMDAxODAwMDAxRkUwMDAwNjdGODAwMDE4MDAwMDFGRTAwMDA2N0Y4MDAwMTgwMDAwMEZGMDAwMEU3RkMwMDAzMDAwMDAwRgotRjAwMDBDM0ZDMDAwMzAwMDAwMEZGMDAwMEMzRkMwMDAzMDAwMDAwN0Y4MDAxQzNGRTAwMDYwMDAwMDA3RjgwMDE4MUZFMDAwCi02MDAwMDAwN0Y4MDAxODFGRTAwMDYwMDAwMDAzRkMwMDE4MUZGMDAwQzAwMDAwMDNGQzAwMzAwRkYwMDBDMDAwMDAwM0ZDMDAKLTMwMEZGMDAwQzAwMDAwMDFGRTAwMzAwRkY4MDE4MDAwMDAwMUZFMDA2MDA3RjgwMTgwMDAwMDAxRkUwMDYwMDdGODAxODAwMAotMDAwMEZGMDA2MDA3RjgwMzAwMDAwMDAwRkYwMEMwMDNGQzAzMDAwMDAwMDBGRjAwQzAwM0ZDMDMwMDAwMDAwMEZGODBDMDAzCi1GQzA3MDAwMDAwMDA3RjgxODAwMUZFMDYwMDAwMDAwMDdGODE4MDAxRkUwNjAwMDAwMDAwN0ZDMTgwMDFGRTBFMDAwMDAwMDAKLTNGQzMwMDAwRkYwQzAwMDAwMDAwM0ZDMzAwMDBGRjBDMDAwMDAwMDAzRkUzMDAwMEZGMUMwMDAwMDAwMDFGRTYwMDAwN0Y5OAotMDAwMDAwMDAxRkU2MDAwMDdGOTgwMDAwMDAwMDFGRjYwMDAwN0Y5ODAwMDAwMDAwMEZGQzAwMDAzRkYwMDAwMDAwMDAwRkZDCi0wMDAwM0ZGMDAwMDAwMDAwMEZGQzAwMDAzRkYwMDAwMDAwMDAwN0ZDMDAwMDNGRTAwMDAwMDAwMDA3RjgwMDAwMUZFMDAwMDAKLTAwMDAwN0Y4MDAwMDFGRTAwMDAwMDAwMDAzRjgwMDAwMUZDMDAwMDAwMDAwMDNGMDAwMDAwRkMwMDAwMDAwMDAwM0YwMDAwMAotMEZDMDAwMDAwMDAwMDFGMDAwMDAwRjgwMDAwMDAwMDAwMUUwMDAwMDA3ODAwMDAwMDAwMDAxRTAwMDAwMDc4MDAwMDAwMDAwCi0wMEUwMDAwMDA3MDAwMDAwMDAwMDAwQzAwMDAwMDMwMDAwMDA1MDNCN0VCODU1Pkk8N0ZGRkZGMDAzRkZGRkMwMDdGRkZGRgotMDAzRkZGRkMwMDdGRkZGRjAwM0ZGRkZDMDAwMEZGRjgwMDA3RkY4MDAwMDA3RkUwMDAwM0ZDMDAwMDAwM0ZFMDAwMDFGMDAwCi0wMDAwMUZGMDAwMDFFMDAwMDAwMDFGRjAwMDAxQzAwMDAwMDAwRkY4MDAwMTgwMDAwMDAwMDdGQzAwMDM4MDAwMDAwMDA3RkMKLTAwMDcwMDAwMDAwMDAzRkUwMDA2MDAwMDAwMDAwM0ZFMDAwRTAwMDAwMDAwMDFGRjAwMUMwMDAwMDAwMDAwRkY4MDE4MDAwMAotMDAwMDAwRkY4MDM4MDAwMDAwMDAwMDdGQzAzMDAwMDAwMDAwMDAzRkUwNjAwMDAwMDAwMDAwM0ZFMEUwMDAwMDAwMDAwMDFGCi1GMEMwMDAwMDAwMDAwMDBGRjE4MDAwMDAwMDAwMDAwRkZCODAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkUwMDAwMDAKLTAwMDAwMDAzRkUwMDAwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAwMDFGRjAwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMAotN0ZDMDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwREZFMDAwMDAwMDAwMDAwMTlGRjAwMDAwCi0wMDAwMDAwMzhGRjgwMDAwMDAwMDAwMDMwRkY4MDAwMDAwMDAwMDA2MDdGQzAwMDAwMDAwMDAwRTAzRkUwMDAwMDAwMDAwMEMKLTAzRkUwMDAwMDAwMDAwMTgwMUZGMDAwMDAwMDAwMDM4MDBGRjAwMDAwMDAwMDAzMDAwRkY4MDAwMDAwMDAwNjAwMDdGQzAwMAotMDAwMDAwRTAwMDdGQzAwMDAwMDAwMEMwMDAzRkUwMDAwMDAwMDE4MDAwMUZGMDAwMDAwMDAzODAwMDFGRjAwMDAwMDAwMzAwCi0wMDBGRjgwMDAwMDAwNjAwMDAwN0ZDMDAwMDAwMEUwMDAwMDdGQzAwMDAwMDBDMDAwMDAzRkUwMDAwMDAxQzAwMDAwMUZFMDAKLTAwMDAzQzAwMDAwMUZGMDAwMDAwRkUwMDAwMDFGRjgwMDAwN0ZGODAwMDA3RkZFMDAwRkZGRkUwMDAzRkZGRkY4MEZGRkZFMAotMDAzRkZGRkY4MEZGRkZFMDAwM0ZGRkZGODAzOTM5N0VCODNFPkk8RkZGRkZFMDAwMDNGRkZFMEZGRkZGRTAwMDAzRkZGRTAKLUZGRkZGRTAwMDAzRkZGRTAwM0ZGRTAwMDAwMDdGRTAwMDBGRkMwMDAwMDAzRjAwMDAwN0ZDMDAwMDAwMUUwMDAwMDdGQzAwMAotMDAwMUMwMDAwMDNGRTAwMDAwMDE4MDAwMDAxRkYwMDAwMDAzODAwMDAwMUZGMDAwMDAwMzAwMDAwMDBGRjgwMDAwMDYwMDAwCi0wMDBGRjgwMDAwMDYwMDAwMDAwN0ZDMDAwMDBDMDAwMDAwMDNGRTAwMDAxQzAwMDAwMDAzRkUwMDAwMTgwMDAwMDAwMUZGMDAKLTAwMzgwMDAwMDAwMUZGMDAwMDMwMDAwMDAwMDBGRjgwMDA2MDAwMDAwMDAwN0ZDMDAwRTAwMDAwMDAwMDdGQzAwMEMwMDAwMAotMDAwMDNGRTAwMUMwMDAwMDAwMDAzRkUwMDE4MDAwMDAwMDAwMUZGMDAzODAwMDAwMDAwMDBGRjgwMzAwMDAwMDAwMDAwRkY4Ci0wNjAwMDAwMDAwMDAwN0ZDMEUwMDAwMDAwMDAwMDdGQzBDMDAwMDAwMDAwMDAzRkUxQzAwMDAwMDAwMDAwMUZGMTgwMDAwMDAKLTAwMDAwMUZGMzAwMDAwMDAwMDAwMDBGRkIwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDdGRTAwMDAwMDAwMDAwMDAzRgotQzAwMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwMDAzRkMwMDAwMDAwCi0wMDAwMDAzRkMwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDAwM0YKLUMwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMAotMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDNGCi1DMDAwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwMDA3RkUwMDAwMDAwMDAwMDNGRkZGRkMwMDAwMDAwMDAzRkZGRkZDMDAwMDAKLTAwMDAzRkZGRkZDMDAwMDAzQjM5N0ZCODNFPkk8M0ZGRkZGRkZGRjAwM0ZGRkZGRkZGRjAwM0ZGRkZGRkZGRjAwM0ZGQzAwCi0wMUZFMDAzRkMwMDAwM0ZFMDAzRjgwMDAwN0ZDMDAzRTAwMDAwN0ZDMDAzQzAwMDAwRkY4MDAzQzAwMDAwRkYwMDAzODAwMDAKLTFGRjAwMDc4MDAwMDNGRTAwMDcwMDAwMDNGRTAwMDcwMDAwMDdGQzAwMDcwMDAwMDdGODAwMDYwMDAwMEZGODAwMDYwMDAwMQotRkYwMDAwNjAwMDAxRkYwMDAwNjAwMDAzRkUwMDAwNjAwMDAzRkMwMDAwMDAwMDA3RkMwMDAwMDAwMDBGRjgwMDAwMDAwMDBGCi1GODAwMDAwMDAwMUZGMDAwMDAwMDAwMUZFMDAwMDAwMDAwM0ZFMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwRkYKLTgwMDAwMDAwMDBGRjAwMDAwMDAwMDFGRjAwMDAwMDAwMDNGRTAwMDAwMDAwMDNGRTAwMDAwMDAwMDdGQzAwMDAwMDAwMDdGOAotMDAwMDAwMDAwRkY4MDAwMDAwMDAxRkYwMDAwMTgwMDAxRkYwMDAwMTgwMDAzRkUwMDAwMTgwMDAzRkMwMDAwMTgwMDA3RkMwCi0wMDAxODAwMEZGODAwMDAxODAwMEZGODAwMDAzODAwMUZGMDAwMDAzODAwMUZFMDAwMDAzODAwM0ZFMDAwMDAzODAwN0ZDMDAKLTAwMDM4MDA3RkMwMDAwMDcwMDBGRjgwMDAwMDcwMDBGRjAwMDAwMEYwMDFGRjAwMDAwMUYwMDNGRTAwMDAwM0YwMDNGRTAwMAotMDA3RjAwN0ZDMDAwMDFGRjAwN0Y4MDAwMEZGRjAwRkZGRkZGRkZGRjAwRkZGRkZGRkZGRjAwRkZGRkZGRkZGRjAwMjkzOTdCCi1CODMzPkk8N0ZGRkZGRkZGRkZGODBGRkZGRkZGRkZGRkZDMEZGRkZGRkZGRkZGRkMwN0ZGRkZGRkZGRkZGODAzMjA0Nzk3MAotNDE+OTUgRDwwMTgwMDM4MDA3MDAwRTAwMUMwMDE4MDAzODAwMzAwMDcwMDA2MDAwNjAwMEUwMDBDMDAwQzAwMEMwMDBDMDAwCi1DRTAwRkY4MEZGQzBGRkMwRkZDMDdGQzA3RkMwM0Y4MDBFMDAwQTE5N0FCOTE3Pkk8MDAxRkUwMDAwMDAwRkZGQzAwMDAwMwotRTAzRjAwMDAwNzAwMEY4MDAwMEY4MDA3RTAwMDFGQzAwM0YwMDAxRkUwMDNGMDAwMUZFMDAxRjgwMDFGRTAwMUY4MDAxRkUwCi0wMEZDMDAwRkMwMDBGQzAwMDc4MDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwN0YKLUZDMDAwMDA3RkZGQzAwMDAzRkUwRkMwMDAwRkUwMEZDMDAwM0Y4MDBGQzAwMEZGMDAwRkMwMDFGQzAwMEZDMDAzRkMwMDBGQwotMDA3RjgwMDBGQzAwN0YwMDAwRkMwMDdGMDAwMEZDMENGRTAwMDBGQzBDRkUwMDAwRkMwQ0ZFMDAwMEZDMENGRTAwMDFGQzBDCi1GRTAwMDFGQzBDRkYwMDAzRkMwQzdGMDAwNzdDMEM3RjgwMDYzRTE4M0ZDMDFFM0UxODBGRTA3ODFGRjAwM0ZGRjAwRkUwMDAKLTdGODAwN0MwMjYyNzdEQTUyQT5JPDAzRjAwMDAwMDBGRkYwMDAwMDAwRkZGMDAwMDAwMEZGRjAwMDAwMDAwRkYwMDAwMDAwCi0wM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDMKLUYwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMAotMDAwMDAwMDNGMDAwMDAwMDAzRjAxRkUwMDAwM0YwN0ZGODAwMDNGMUUwM0UwMDAzRjM4MDFGODAwM0Y3MDAwRkMwMDNGRTAwCi0wN0UwMDNGQzAwMDNGMDAzRjgwMDAxRjgwM0YwMDAwMUY4MDNGMDAwMDBGQzAzRjAwMDAwRkMwM0YwMDAwMEZFMDNGMDAwMDAKLUZFMDNGMDAwMDA3RTAzRjAwMDAwN0YwM0YwMDAwMDdGMDNGMDAwMDA3RjAzRjAwMDAwN0YwM0YwMDAwMDdGMDNGMDAwMDA3RgotMDNGMDAwMDA3RjAzRjAwMDAwN0YwM0YwMDAwMDdGMDNGMDAwMDA3RjAzRjAwMDAwN0UwM0YwMDAwMEZFMDNGMDAwMDBGRTAzCi1GMDAwMDBGQzAzRjAwMDAxRkMwM0Y4MDAwMUY4MDNGODAwMDNGMDAzRkMwMDAzRjAwM0VFMDAwN0UwMDNDNjAwMEZDMDAzQzcKLTgwMUYwMDAzODFFMDdFMDAwMzAwRkZGODAwMDAwMDFGQzAwMDI4M0I3RUI5MkU+STwwMDAzRkMwMDAwMUZGRjgwMDA3RTAzCi1FMDAxRjgwMDcwMDNGMDAwRjgwN0UwMDFGQzBGQzAwM0ZDMEZDMDAzRkMxRjgwMDNGQzNGODAwM0ZDM0YwMDAxRjg3RjAwMDAKLUYwN0YwMDAwMDA3RjAwMDAwMDdFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMEZFMDAwMAotMDBGRTAwMDAwMEZFMDAwMDAwRkUwMDAwMDBGRTAwMDAwMDdFMDAwMDAwN0YwMDAwMDA3RjAwMDAwMDNGMDAwMDA2M0Y4MDAwCi0wNjFGODAwMDBFMUZDMDAwMEMwRkMwMDAxQzA3RTAwMDM4MDNGMDAwNzAwMUY4MDBFMDAwN0MwN0MwMDAxRkZGMDAwMDA3RjgKLTAwMUYyNzdEQTUyNT5JPDAwMDAwMDBGQzAwMDAwMDNGRkMwMDAwMDAzRkZDMDAwMDAwM0ZGQzAwMDAwMDAzRkMwMDAwMDAwCi0wRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEYKLUMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMAotMDAwMDAwMEZDMDAwMDNGODBGQzAwMDFGRkYwRkMwMDA3RTA3OEZDMDAwRjgwMUVGQzAwM0YwMDA3RkMwMDdFMDAwM0ZDMDBGCi1DMDAwMUZDMDBGQzAwMDFGQzAxRjgwMDAwRkMwM0Y4MDAwMEZDMDNGMDAwMDBGQzA3RjAwMDAwRkMwN0YwMDAwMEZDMDdFMDAKLTAwMEZDMEZFMDAwMDBGQzBGRTAwMDAwRkMwRkUwMDAwMEZDMEZFMDAwMDBGQzBGRTAwMDAwRkMwRkUwMDAwMEZDMEZFMDAwMAotMEZDMEZFMDAwMDBGQzBGRTAwMDAwRkMwRkUwMDAwMEZDMDdFMDAwMDBGQzA3RjAwMDAwRkMwN0YwMDAwMEZDMDNGMDAwMDBGCi1DMDNGMDAwMDBGQzAxRjgwMDAxRkMwMUY4MDAwMUZDMDBGQzAwMDNGQzAwN0UwMDA3RkMwMDNGMDAwRUZGMDAxRjgwMUNGRkYKLTAwN0MwNzhGRkYwMDFGRkUwRkZGMDAwN0Y4MEZDMDI4M0I3REI5MkU+STwwMDA3RjgwMDAwMUZGRjAwMDA3QzBGQzAwMUY4Ci0wM0UwMDNGMDAxRjAwN0UwMDFGODBGQzAwMEY4MUY4MDAwN0MxRjgwMDA3QzNGMDAwMDdFM0YwMDAwM0U3RjAwMDAzRTdGMDAKLTAwM0Y3RTAwMDAzRkZFMDAwMDNGRkUwMDAwM0ZGRTAwMDAzRkZGRkZGRkZGRkZGRkZGRkZGRTAwMDAwMEZFMDAwMDAwRkUwMAotMDAwMEZFMDAwMDAwRkUwMDAwMDA3RTAwMDAwMDdFMDAwMDAwN0YwMDAwMDA3RjAwMDAwMDNGMDAwMDAzM0Y4MDAwMDMxRjgwCi0wMDA3MEZDMDAwMDYwN0MwMDAwRTA3RTAwMDFDMDFGMDAwMzgwMEY4MDA3MDAwN0UwM0UwMDAxRkZGODAwMDAzRkMwMDIwMjcKLTdFQTUyNT5JPDAwMDA3RTAwMDAwM0ZGODAwMDBGQzFFMDAwMUY4N0UwMDAzRjBGRjAwMDdFMEZGMDAwN0UwRkYwMDBGQzBGCi1GMDAwRkMwRkYwMDFGODAzQzAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAKLTAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwRkZGRkZDMDBGRkZGRkMwMEZGRkZGQwotMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwCi0wMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAKLTAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMAotMDAwMUY4MDAwMDAxRjgwMDAwMDNGQzAwMDA3RkZGRjgwMDdGRkZGODAwN0ZGRkY4MDAxQzNCN0ZCQTE5Pkk8MDAwMDAwMDMKLUYwMDAwRkYwMEZGODAwM0ZGQzNDM0MwMEY4MUY3MDdDMDFGMDBGRTA3QzAzRTAwN0MwN0MwN0MwMDNFMDEwMEZDMDAzRjAwMAotMEZDMDAzRjAwMDFGODAwMUY4MDAxRjgwMDFGODAwMUY4MDAxRjgwMDFGODAwMUY4MDAxRjgwMDFGODAwMUY4MDAxRjgwMDFGCi04MDAxRjgwMDFGODAwMUY4MDAwRkMwMDNGMDAwMEZDMDAzRjAwMDA3QzAwM0UwMDAwM0UwMDdDMDAwMDNGMDBGODAwMDAzRjgKLTFGMDAwMDA3M0ZGQzAwMDAwNjBGRjAwMDAwMEUwMDAwMDAwMDBFMDAwMDAwMDAwRTAwMDAwMDAwMEUwMDAwMDAwMDBGMDAwMAotMDAwMDBGMDAwMDAwMDAwRkMwMDAwMDAwMDdGRkZGQzAwMDA3RkZGRkY4MDAwM0ZGRkZGRTAwMDFGRkZGRkY4MDAzRkZGRkZGCi1DMDBGODAwMDdGRTAxRjAwMDAwRkYwM0UwMDAwMDNGMDdDMDAwMDAxRjA3QzAwMDAwMUY4RjgwMDAwMDBGOEY4MDAwMDAwRjgKLUY4MDAwMDAwRjhGODAwMDAwMEY4RjgwMDAwMDBGOEZDMDAwMDAxRjg3QzAwMDAwMUYwM0UwMDAwMDNFMDNGMDAwMDA3RTAwRgotODAwMDBGODAwN0UwMDAzRjAwMDFGQzAxRkMwMDAwN0ZGRkYwMDAwMDA3RkYwMDAwMjYzODdFQTUyQT5JPDAzRjAwMDAwMDAKLTAwRkZGMDAwMDAwMDAwRkZGMDAwMDAwMDAwRkZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDNGMDAwMDAwMDAwMDNGMDAwMDAwMAotMDAwM0YwMDAwMDAwMDAwM0YwMDAwMDAwMDAwM0YwMDAwMDAwMDAwM0YwMDAwMDAwMDAwM0YwMDAwMDAwMDAwM0YwMDAwMDAwCi0wMDAzRjAwMDAwMDAwMDAzRjAwMDAwMDAwMDAzRjAwMDAwMDAwMDAzRjAwMDAwMDAwMDAzRjAwMDAwMDAwMDAzRjAwMDAwMDAKLTAwMDNGMDAwMDAwMDAwMDNGMDAwMDAwMDAwMDNGMDBGRjAwMDAwMDNGMDNGRkMwMDAwMDNGMEYwM0YwMDAwMDNGMUMwMUY4MAotMDAwM0YzODAwRkMwMDAwM0Y3MDAwRkMwMDAwM0ZFMDAwRkMwMDAwM0ZDMDAwN0UwMDAwM0ZDMDAwN0UwMDAwM0Y4MDAwN0UwCi0wMDAzRjgwMDA3RTAwMDAzRjgwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAKLTAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMAotMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwCi0wMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDA3RjgwMDBGRjAKLTAwRkZGRkMxRkZGRjgwRkZGRkMxRkZGRjgwRkZGRkMxRkZGRjgwMjkzQTdFQjkyRT5JPDAzODAwMDBGRTAwMDFGRjAwMDFGCi1GMDAwMUZGMDAwMUZGMDAwMUZGMDAwMEZFMDAwMDM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0YwMDBGRkYwMDBGRkYwMDBGRkYwMDAwN0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwMwotRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzCi1GMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDMKLUYwMDAwN0Y4MDBGRkZGQzBGRkZGQzBGRkZGQzAxMjM4N0VCNzE3Pkk8MDAwMUMwMDAwN0YwMDAwRkY4MDAwRkY4MDAwRkY4Ci0wMDBGRjgwMDBGRjgwMDA3RjAwMDAxQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDFGODAwRkZGODAwRkZGODAwRkZGODAwMDdGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGOAotMDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4MDAwMUY4Ci0wMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgwMDAxRjgKLTAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODAwMDFGODNDMDFGODdFMDFGOEZGMDFGMAotRkYwM0YwRkYwM0YwRkYwM0UwRkUwN0MwN0MwN0MwM0MwRjAwMEZGRTAwMDNGODAwMTU0OTg0QjcxOT5JPDAzRjAwMDAwMDAKLUZGRjAwMDAwMDBGRkYwMDAwMDAwRkZGMDAwMDAwMDBGRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwMwotRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwCi0wMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDEKLUZGRkMwM0YwMDFGRkZDMDNGMDAxRkZGQzAzRjAwMDdGQzAwM0YwMDA3RjAwMDNGMDAwN0MwMDAzRjAwMDcwMDAwM0YwMDBFMAotMDAwM0YwMDFDMDAwMDNGMDAzODAwMDAzRjAwNzAwMDAwM0YwMUUwMDAwMDNGMDM4MDAwMDAzRjA3ODAwMDAwM0YwRkMwMDAwCi0wM0YxRkMwMDAwMDNGM0ZFMDAwMDAzRjczRjAwMDAwM0ZFM0Y4MDAwMDNGODFGODAwMDAzRjAwRkMwMDAwM0YwMEZFMDAwMDMKLUYwMDdFMDAwMDNGMDAzRjAwMDAzRjAwMUY4MDAwM0YwMDFGQzAwMDNGMDAwRkMwMDAzRjAwMDdFMDAwM0YwMDA3RjAwMDNGMAotMDAzRjAwMDNGMDAwM0Y4MDAzRjAwMDFGQzAwN0Y4MDAzRkYwRkZGRkMwRkZGRkZGRkZDMEZGRkZGRkZGQzBGRkZGMjgzQTdFCi1COTJDPkk8MDNGMDAwRkZGMDAwRkZGMDAwRkZGMDAwMEZGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMAotMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwCi0wMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAwMDAzRjAKLTAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMDAwMDNGMAotMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwM0YwMDAwN0Y4MDBGRkZGQzBGRkZGQzBGRkZGQzAxMjNBCi03RUI5MTc+STwwM0YwMEZGMDAwMUZFMDAwRkZGMDNGRkMwMDdGRjgwMEZGRjBGMDNGMDFFMDdFMDBGRkYxQzAxRjgzODAzRgotMDAwRkYzODAwRkM3MDAxRjgwMDNGNzAwMEZDRTAwMUY4MDAzRkUwMDBGREMwMDFGODAwM0ZDMDAwN0Y4MDAwRkMwMDNGQzAwCi0wN0Y4MDAwRkMwMDNGODAwMDdGMDAwMEZDMDAzRjgwMDA3RjAwMDBGQzAwM0Y4MDAwN0YwMDAwRkMwMDNGMDAwMDdFMDAwMEYKLUMwMDNGMDAwMDdFMDAwMEZDMDAzRjAwMDA3RTAwMDBGQzAwM0YwMDAwN0UwMDAwRkMwMDNGMDAwMDdFMDAwMEZDMDAzRjAwMAotMDdFMDAwMEZDMDAzRjAwMDA3RTAwMDBGQzAwM0YwMDAwN0UwMDAwRkMwMDNGMDAwMDdFMDAwMEZDMDAzRjAwMDA3RTAwMDBGCi1DMDAzRjAwMDA3RTAwMDBGQzAwM0YwMDAwN0UwMDAwRkMwMDNGMDAwMDdFMDAwMEZDMDAzRjAwMDA3RTAwMDBGQzAwM0YwMDAKLTA3RTAwMDBGQzAwM0YwMDAwN0UwMDAwRkMwMDNGMDAwMDdFMDAwMEZDMDAzRjAwMDA3RTAwMDBGQzAwM0YwMDAwN0UwMDAwRgotQzAwM0YwMDAwN0UwMDAwRkMwMDNGMDAwMDdFMDAwMEZDMDA3RjgwMDBGRjAwMDFGRTBGRkZGQzFGRkZGODNGRkZGRkZGRkMxCi1GRkZGODNGRkZGRkZGRkMxRkZGRjgzRkZGRjQwMjU3RUE0NDU+STwwM0YwMEZGMDAwMDBGRkYwM0ZGQzAwMDBGRkYwRjAzRgotMDAwMEZGRjFDMDFGODAwMDBGRjM4MDBGQzAwMDAzRjcwMDBGQzAwMDAzRkUwMDBGQzAwMDAzRkMwMDA3RTAwMDAzRkMwMDA3Ci1FMDAwMDNGODAwMDdFMDAwMDNGODAwMDdFMDAwMDNGODAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDcKLUUwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwNwotRTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3Ci1FMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDcKLUUwMDAwN0Y4MDAwRkYwMDBGRkZGQzFGRkZGODBGRkZGQzFGRkZGODBGRkZGQzFGRkZGODAyOTI1N0VBNDJFPkk8MDAwM0ZFCi0wMDAwMDAwRkZGODAwMDAwM0UwM0UwMDAwMEY4MDBGODAwMDFGMDAwN0MwMDAzRTAwMDNFMDAwN0MwMDAxRjAwMEY4MDAwMEYKLTgwMUY4MDAwMEZDMDFGMDAwMDA3QzAzRjAwMDAwN0UwM0YwMDAwMDdFMDdFMDAwMDAzRjA3RTAwMDAwM0YwN0UwMDAwMDNGMAotN0UwMDAwMDNGMEZFMDAwMDAzRjhGRTAwMDAwM0Y4RkUwMDAwMDNGOEZFMDAwMDAzRjhGRTAwMDAwM0Y4RkUwMDAwMDNGOEZFCi0wMDAwMDNGOEZFMDAwMDAzRjhGRTAwMDAwM0Y4N0UwMDAwMDNGMDdFMDAwMDAzRjA3RjAwMDAwN0YwM0YwMDAwMDdFMDNGMDAKLTAwMDdFMDFGODAwMDBGQzAwRjgwMDAwRjgwMEZDMDAwMUY4MDA3RTAwMDNGMDAwM0YwMDA3RTAwMDBGODAwRjgwMDAwN0UwMwotRjAwMDAwMUZGRkMwMDAwMDAzRkUwMDAwMjUyNzdFQTUyQT5JPDAzRjAxRkUwMDBGRkYwN0ZGODAwRkZGMUUwN0UwMEZGRjMKLTgwMUY4MDA3RjcwMDBGQzAwM0ZFMDAwN0UwMDNGQzAwMDNGMDAzRjgwMDAzRjgwM0YwMDAwMUY4MDNGMDAwMDFGQzAzRjAwMAotMDBGQzAzRjAwMDAwRkUwM0YwMDAwMEZFMDNGMDAwMDBGRTAzRjAwMDAwN0YwM0YwMDAwMDdGMDNGMDAwMDA3RjAzRjAwMDAwCi03RjAzRjAwMDAwN0YwM0YwMDAwMDdGMDNGMDAwMDA3RjAzRjAwMDAwN0YwM0YwMDAwMDdGMDNGMDAwMDA3RjAzRjAwMDAwRkUKLTAzRjAwMDAwRkUwM0YwMDAwMEZFMDNGMDAwMDFGQzAzRjAwMDAxRkMwM0Y4MDAwM0Y4MDNGODAwMDNGMDAzRkMwMDA3RjAwMwotRkUwMDBGRTAwM0Y2MDAwRkMwMDNGNzgwM0YwMDAzRjFFMDdFMDAwM0YwRkZGODAwMDNGMDFGQzAwMDAzRjAwMDAwMDAwM0YwCi0wMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDAzRjAwMDAwMDAwM0YwMDAKLTAwMDAwM0YwMDAwMDAwMDNGMDAwMDAwMDA3RjgwMDAwMDBGRkZGQzAwMDAwRkZGRkMwMDAwMEZGRkZDMDAwMDAyODM1N0VBNAotMkU+STwwMDAzRjgwMEMwMDAxRkZFMDFDMDAwN0UwNzgxQzAwMEZDMDFDM0MwMDNGMDAwRTNDMDA3RjAwMDc3QzAwRkUwMDAKLTM3QzAwRkMwMDAzRkMwMUZDMDAwMUZDMDNGODAwMDFGQzAzRjgwMDAwRkMwN0YwMDAwMEZDMDdGMDAwMDBGQzA3RjAwMDAwRgotQzBGRTAwMDAwRkMwRkUwMDAwMEZDMEZFMDAwMDBGQzBGRTAwMDAwRkMwRkUwMDAwMEZDMEZFMDAwMDBGQzBGRTAwMDAwRkMwCi1GRTAwMDAwRkMwRkUwMDAwMEZDMEZFMDAwMDBGQzA3RjAwMDAwRkMwN0YwMDAwMEZDMDdGMDAwMDBGQzAzRjAwMDAwRkMwM0YKLTgwMDAxRkMwMUY4MDAwMUZDMDFGQzAwMDNGQzAwRkMwMDAzRkMwMDdFMDAwN0ZDMDAzRjAwMEVGQzAwMUY4MDFDRkMwMDA3RQotMDc4RkMwMDAxRkZFMEZDMDAwMDdGODBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwCi0wRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMEZDMDAwMDAwMDBGQzAwMDAwMDAwRkMwMDAwMDAwMUYKLUUwMDAwMDAzRkZGRjAwMDAwM0ZGRkYwMDAwMDNGRkZGMjgzNTdEQTQyQz5JPDA3RTAxRjAwRkZFMDdGQzBGRkUxRTNFMEZGCi1FMzg3RjAwRkU3MDdGMDAzRTYwN0YwMDNFRTA3RjAwM0VDMDNFMDAzRkMwMDgwMDNGODAwMDAwM0Y4MDAwMDAzRjgwMDAwMDMKLUY4MDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwMwotRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDNGMDAwMDAwM0YwMDAwMDAzCi1GMDAwMDAwM0YwMDAwMDAzRjAwMDAwMDdGODAwMDBGRkZGRjAwMEZGRkZGMDAwRkZGRkYwMDAxQzI1N0VBNDIxPkk8MDBGRgotMDMwMDAzRkZFNzAwMEY4MEZGMDAxRTAwM0YwMDNDMDAxRjAwNzgwMDBGMDA3MDAwMDcwMEYwMDAwNzAwRjAwMDA3MDBGMDAwCi0wMzAwRjgwMDAzMDBGODAwMDMwMEZDMDAwMzAwRkYwMDAwMDA3RkUwMDAwMDdGRkYwMDAwM0ZGRkUwMDAxRkZGRjgwMDBGRkYKLUZDMDAwM0ZGRkUwMDAwRkZGRjAwMDAwN0ZGODAwMDAwN0Y4MDAwMDAxRjgwQzAwMDBGQzBDMDAwMDdDMEMwMDAwN0MwRTAwMAotMDNDMEUwMDAwM0MwRTAwMDAzQzBGMDAwMDNDMEYwMDAwMzgwRjgwMDA3ODBGQzAwMDc4MEZDMDAwRjAwRkYwMDFFMDBGM0MwCi03QzAwRTFGRkYwMDBDMDNGODAwMDFBMjc3REE1MjE+STwwMDE4MDAwMDAwMTgwMDAwMDAxODAwMDAwMDE4MDAwMDAwMTgwMAotMDAwMDM4MDAwMDAwMzgwMDAwMDAzODAwMDAwMDc4MDAwMDAwNzgwMDAwMDA3ODAwMDAwMEY4MDAwMDAxRjgwMDAwMDNGODAwCi0wMDA3RjgwMDAwMUZGRkZGMDBGRkZGRkYwMEZGRkZGRjAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAKLTAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMAotMDAwMUY4MDAwMDAxRjgwMDAwMDFGODAwMDAwMUY4MDAwMDAxRjgwMEMwMDFGODAwQzAwMUY4MDBDMDAxRjgwMEMwMDFGODAwCi1DMDAxRjgwMEMwMDFGODAwQzAwMUY4MDBDMDAxRjgwMEMwMDBGQzAxQzAwMEZDMDE4MDAwN0MwMzgwMDA3RTAzMDAwMDNGMDcKLTAwMDAwRkZFMDAwMDAxRjgwMDFBMzQ3RkIyMjA+STwwM0YwMDAwN0UwMDBGRkYwMDFGRkUwMDBGRkYwMDFGRkUwMDBGRkYwCi0wMUZGRTAwMDBGRjAwMDFGRTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAKLTAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMAotMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwCi0wMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAKLTAwMEZFMDAwMDNGMDAwMEZFMDAwMDNGMDAwMEZFMDAwMDNGMDAwMUZFMDAwMDFGMDAwMUZFMDAwMDFGODAwM0ZFMDAwMDBGOAotMDA3N0Y4MDAwMEZDMDBFN0ZGODAwMDNGMDNDN0ZGODAwMDFGRkY4N0ZGODAwMDAzRkMwN0UwMDAyOTI2N0VBNDJFPkk8RkYKLUZGODAzRkZFRkZGRjgwM0ZGRUZGRkY4MDNGRkUwRkY4MDAwRkYwMDdGMDAwMDdFMDAzRjAwMDAzQzAwM0Y4MDAwMzgwMDFGOAotMDAwMzAwMDFGODAwMDMwMDAwRkMwMDA2MDAwMEZDMDAwNjAwMDBGRTAwMEUwMDAwN0UwMDBDMDAwMDdFMDAwQzAwMDAzRjAwCi0xODAwMDAzRjAwMTgwMDAwM0Y4MDM4MDAwMDFGODAzMDAwMDAxRjgwMzAwMDAwMEZDMDYwMDAwMDBGQzA2MDAwMDAwRkUwNjAKLTAwMDAwN0UwQzAwMDAwMDdFMEMwMDAwMDAzRjE4MDAwMDAwM0YxODAwMDAwMDNGMTgwMDAwMDAxRkIwMDAwMDAwMUZCMDAwMAotMDAwMUZGMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMDdDMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMDM4MDAwMDAwCi0wMDM4MDAwMDI3MjU3RUEzMkM+STxGRkZGMUZGRkUwM0ZGRUZGRkYxRkZGRTAzRkZFRkZGRjFGRkZFMDNGRkUwRkY4MDBGRgotMDAwRkY4MDdGMDAwN0UwMDAzRTAwN0YwMDA3RTAwMDNDMDAzRjAwMDNFMDAwMTgwMDNGMDAwM0UwMDAxODAwMUY4MDAzRjAwCi0wMzAwMDFGODAwM0YwMDAzMDAwMUY4MDAzRjAwMDMwMDAwRkMwMDNGODAwNjAwMDBGQzAwNkY4MDA2MDAwMEZDMDA2RjgwMDYKLTAwMDA3RTAwRUZDMDBDMDAwMDdFMDBDN0MwMEMwMDAwN0UwMEM3QzAxQzAwMDAzRjAxQzdFMDE4MDAwMDNGMDE4M0UwMTgwMAotMDAzRjgxODNGMDM4MDAwMDFGODM4M0YwMzAwMDAwMUY4MzAxRjAzMDAwMDAxRkMzMDFGODcwMDAwMDBGQzYwMEY4NjAwMDAwCi0wRkM2MDBGODYwMDAwMDA3RTYwMEZDQzAwMDAwMDdFQzAwN0NDMDAwMDAwN0VDMDA3Q0MwMDAwMDAzRkMwMDdGODAwMDAwMDMKLUY4MDAzRjgwMDAwMDAzRjgwMDNGODAwMDAwMDFGODAwM0YwMDAwMDAwMUYwMDAxRjAwMDAwMDAxRjAwMDFGMDAwMDAwMDBGMAotMDAxRTAwMDAwMDAwRTAwMDBFMDAwMDAwMDA2MDAwMEMwMDAwMzcyNTdFQTMzQz5JPEZGRkY4MDdGRkYwMEZGRkY4MDdGRkYKLTAwRkZGRjgwN0ZGRjAwMDNGRTAwM0ZGMDAwMDFGRTAwMUY4MDAwMDBGRTAwMUYwMDAwMDA3RTAwMUMwMDAwMDAzRjAwMTgwMAotMDAwMDFGODAzMDAwMDAwMDFGQzA3MDAwMDAwMDBGQzBFMDAwMDAwMDA3RTBDMDAwMDAwMDA3RjE4MDAwMDAwMDAzRkI4MDAwCi0wMDAwMDFGRjAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDA3RjAwMDAwMDAwMDAzRjAwMDAwMDAwMDA3RjgwMDAKLTAwMDAwMDdGQzAwMDAwMDAwMENGQzAwMDAwMDAwMUM3RTAwMDAwMDAwMzgzRjAwMDAwMDAwNzAzRjgwMDAwMDAwNjAxRjgwMAotMDAwMDBDMDBGQzAwMDAwMDFDMDA3RTAwMDAwMDM4MDA3RjAwMDAwMDc4MDAzRjAwMDAwMEYwMDAxRjgwMDAwMUY4MDAxRkMwCi0wMDBGRjgwMDNGRjAwMEZGRkUwMEZGRkY4MEZGRkUwMEZGRkY4MEZGRkUwMEZGRkY4MDI5MjQ3RkEzMkM+STxGRkZGODAzRgotRkVGRkZGODAzRkZFRkZGRjgwM0ZGRTBGRjgwMDBGRjAwN0YwMDAwN0MwMDNGMDAwMDM4MDAxRjgwMDAzODAwMUY4MDAwMzAwCi0wMUZDMDAwMzAwMDBGQzAwMDYwMDAwRkMwMDA2MDAwMDdFMDAwQzAwMDA3RTAwMEMwMDAwN0YwMDBDMDAwMDNGMDAxODAwMDAKLTNGMDAxODAwMDAxRjgwMzAwMDAwMUY4MDMwMDAwMDFGQzA3MDAwMDAwRkMwNjAwMDAwMEZDMDYwMDAwMDA3RTBDMDAwMDAwNwotRTBDMDAwMDAwN0YxQzAwMDAwMDNGMTgwMDAwMDAzRjE4MDAwMDAwMUZCMDAwMDAwMDFGQjAwMDAwMDAxRkYwMDAwMDAwMEZFCi0wMDAwMDAwMEZFMDAwMDAwMDA3QzAwMDAwMDAwN0MwMDAwMDAwMDdDMDAwMDAwMDAzODAwMDAwMDAwMzgwMDAwMDAwMDMwMDAKLTAwMDAwMDMwMDAwMDAwMDA3MDAwMDAwMDAwNjAwMDAwMDAwMDYwMDAwMDAwMDBDMDAwMDAwMDAwQzAwMDAwN0MwMUMwMDAwMAotRkUwMTgwMDAwMEZFMDM4MDAwMDBGRTAzMDAwMDAwRkUwNjAwMDAwMEZDMEUwMDAwMDA3MDFDMDAwMDAwMzgzODAwMDAwMDFGCi1GMDAwMDAwMDBGQzAwMDAwMDAyNzM1N0VBMzJDPkk8M0ZGRkZGRkMzRkZGRkZGQzNGODAwM0ZDM0UwMDAzRjgzQzAwMDdGMAotMzgwMDBGRTAzMDAwMEZFMDcwMDAxRkMwNzAwMDNGODA2MDAwN0Y4MDYwMDA3RjAwNjAwMEZFMDA2MDAxRkMwMDYwMDFGQzAwCi0wMDAzRjgwMDAwMDdGMDAwMDAwN0YwMDAwMDBGRTAwMDAwMUZDMDAwMDAzRjgwMDAwMDNGODAwMDAwN0YwMDA2MDBGRTAwMDYKLTAwRkUwMDA2MDFGQzAwMDYwM0Y4MDAwNjA3RjgwMDBFMDdGMDAwMEUwRkUwMDAwQzFGQzAwMDFDMUZDMDAwMUMzRjgwMDAzQwotN0YwMDAwN0NGRjAwMDNGQ0ZGRkZGRkZDRkZGRkZGRkMxRjI0N0VBMzI1Pkk8MDAwMDNFMDAwMDAwMDAwMEZGODAwMDAwMDAKLTAxODBDMDAwMDAwMDAzMDA2MDAwMDAwMDA2MDAzMDAwMDAwMDA2MDAzMDAwMDAwMDA2MDAzMDAwMDAwMDA2MDAzMDAwMDAwMAotMDYwMDMwMDAwMDAwMDMwMDYwMDAwMDAwMDE4MEMwMDAwMDAwMDBGRjgwMDAwMDAwMDAzRTAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGMDAwMDdFMDAwRkZGMDAxRkZFMDAwRkYKLUYwMDFGRkUwMDBGRkYwMDFGRkUwMDAwRkYwMDAxRkUwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwMwotRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzRjAwMDA3RTAwMDAzCi1GMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDNGMDAwMDdFMDAwMDMKLUYwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwM0YwMDAwN0UwMDAwMwotRjAwMDA3RTAwMDAzRjAwMDBGRTAwMDAzRjAwMDBGRTAwMDAzRjAwMDBGRTAwMDAzRjAwMDFGRTAwMDAxRjAwMDFGRTAwMDAxCi1GODAwM0ZFMDAwMDBGODAwNzdGODAwMDBGQzAwRTdGRjgwMDAzRjAzQzdGRjgwMDAxRkZGODdGRjgwMDAwM0ZDMDdFMDAwMjkKLTM4N0VCNjJFPjE4MyBEIEUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZyIGVjc3MxNDQwIDE0LjQgMzEKLS9GciAzMSAxMjIgZGY8RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjgwRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgotODBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGODBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGODBGRkZGRkZGRkZGCi1GRkZGRkZGRkZGRkZGRkZGRkY4MEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY4MDcxMDY4MEEyNzI+MjIKLUQ8RkZGRkZGRkNGRkZGRkZGQ0ZGRkZGRkZDRkZGRkZGRkNGRkZGRkZGQ0ZGRkZGRkZDMUUwNjdGOUMyNj40NQotRDwwMDAwMDYwMDAwMDAwMDBFMDAwMDAwMDAzRTAwMDAwMDAwN0UwMDAwMDAwMUZFMDAwMDAwMDdGRTAwMDAwMDNGRkUwMDAwCi0wN0ZGRkUwMDAwRkZGRkZFMDAwMEZGRkZGRTAwMDBGRkZGRkUwMDAwRkZGOUZFMDAwMEZGQzFGRTAwMDBGODAxRkUwMDAwMDAKLTAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMQotRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFCi0wMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAKLTAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMAotMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwCi0wMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDEKLUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRQotMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDFGRTAwCi0wMDAwMDFGRTAwMDAwMDAxRkUwMDAwN0ZGRkZGRkZGODdGRkZGRkZGRjg3RkZGRkZGRkY4N0ZGRkZGRkZGODdGRkZGRkZGRjgKLTdGRkZGRkZGRjgyNTUwNzZDRjM5PjQ5IEQ8MDAwMDdGRTAwMDAwMDAwN0ZGRkMwMDAwMDAxRkZGRkYwMDAwMDAzRkZGRkZDMAotMDAwMDdGRkZGRkYwMDAwMEZGRkZGRkY4MDAwMUZGRkZGRkZDMDAwM0ZGMDBGRkZFMDAwN0Y4MDAxRkZGMDAwRkYwMDAwN0ZGCi0wMDBGQzAwMDAxRkY4MDFGQzAwMDAwRkZDMDFGODAwMDAwN0ZDMDNGMDAwMDAwM0ZFMDNGMDAwMDAwM0ZFMDdFMDAwMDAwMUYKLUYwN0UwMDAwMDAwRkYwN0MwMDAwMDAwRkYwRkMwMDAwMDAwRkYwRjgwMDAwMDAwN0Y4NzgwMDAwMDAwN0Y4NzgwMDAwMDAwNwotRjgzMDAwMDAwMDA3RjgzMDAwMDAwMDA3RjgxMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3RjgwMDAwMDAwMDA3Ci1GODAwMDAwMDAwMDdGODAwMDAwMDAwMDdGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMUYKLUUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkMwMDAwMDAwMDAzRkMwMDAwMDAwMDAzRjgwMDAwMDAwMDA3RjgwMDAwMDAwMDBGRgotMDAwMDAwMDAwMEZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwM0ZDMDAwMDAwMDAwN0Y4MDAwMDAwMDAwN0YwMDAwMDAwMDAwRkUwCi0wMDAwMDAwMDFGQzAwMDAwMDAwMDNGODAwMDAwMDAwMDdGODAwMDAwMDAwMEZGMDAwMDAwMDAwMUZFMDAwMDAwMDAwM0ZDMDAKLTAwMDAwMDA3RjAwMDAwMDAwMDBGRTAwMDAwMDAwMDFGQzAwMDAwMDAwMDNGODAwMDAwMDAwMDdGMDAwMDAwMDAwMEZFMDAwMAotMDAwMDAxRkMwMDAwMDAwMDAzRjgwMDAwMDAwMDA3RjAwMDAwMDAwMDBGRTAwMDAwMDAwMDFGQzAwMDAwMDAwMDNGODAwMDAwCi0wMDAwM0YwMDAwMDAwMDAwN0UwMDAwMDAwMDAwRkMwMDAwMDAwMDAxRjgwMDAwMDAwMDAzRjAwMDAwMDAwMDA3RTAwMDAwMDAKLTAwMEZDMDAwMDAwMDAwMUY4MDAwMDAwMDAwM0YwMDAwMDAwMDAwN0ZGRkZGRkZGRkY4N0ZGRkZGRkZGRkY4N0ZGRkZGRkZGRgotRjg3RkZGRkZGRkZGRjg3RkZGRkZGRkZGRjg3RkZGRkZGRkZGRjg3RkZGRkZGRkZGRjgyRDUwN0JDRjM5Pkk8MDAwMDNGRjAKLTAwMDAwMDAxRkZGRTAwMDAwMDBGRkZGRjgwMDAwMDNGRkZGRkUwMDAwMDdGRkZGRkYwMDAwMEZGRkZGRkY4MDAwM0ZGRkZGRgotRkMwMDA3RkZDMDFGRkUwMDBGRkUwMDA3RkYwMDBGRjgwMDAxRkY4MDFGRjAwMDAwRkY4MDNGQzAwMDAwN0ZDMDNGODAwMDAwCi0zRkMwN0YwMDAwMDAzRkMwM0UwMDAwMDAzRkUwM0UwMDAwMDAxRkUwMUMwMDAwMDAxRkUwMTgwMDAwMDAxRkUwMDgwMDAwMDAKLTFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDNGRTAwMDAwMDAwMDNGQzAwMDAwMDAwMAotM0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0Y4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkYwMDAwMDAwMDAxRkYwMDAwMDAwMDAzCi1GRTAwMDAwMDAwMDdGQzAwMDAwMDAwMEZGODAwMDAwMDAwN0ZGMDAwMDAwMDBGRkZFMDAwMDAwM0ZGRkZDMDAwMDAwM0ZGRkYKLTgwMDAwMDAzRkZGRTAwMDAwMDAzRkZGRTAwMDAwMDAzRkZGRkMwMDAwMDAzRkZGRkYwMDAwMDAwMDAzRkY4MDAwMDAwMDAwNwotRkMwMDAwMDAwMDAxRkUwMDAwMDAwMDAwRkYwMDAwMDAwMDAwN0Y4MDAwMDAwMDAwM0ZDMDAwMDAwMDAwM0ZFMDAwMDAwMDAwCi0xRkUwMDAwMDAwMDAxRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwN0Y4MDAwMDAwMDAKLTA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMDA3RkMwMDAwMDAwMAotMDdGQzAwMDAwMDAwMDdGQzQwMDAwMDAwMDdGQzYwMDAwMDAwMEZGODYwMDAwMDAwMEZGODcwMDAwMDAwMEZGOEY4MDAwMDAwCi0xRkYwRjgwMDAwMDAxRkYwRkMwMDAwMDAzRkYwN0YwMDAwMDAzRkUwN0Y4MDAwMDA3RkUwM0ZDMDAwMDBGRkMwMUZGMDAwMDEKLUZGODAwRkZFMDAwN0ZGMDAwN0ZGQzAzRkZFMDAwM0ZGRkZGRkZFMDAwMUZGRkZGRkY4MDAwMEZGRkZGRkYwMDAwMDNGRkZGRgotRTAwMDAwMEZGRkZGODAwMDAwMDNGRkZFMDAwMDAwMDAzRkYwMDAwMDJFNTI3QkNGMzk+STwwMDAwMDAwN0ZDMDAwMDAwMDAKLTAwMEZGQzAwMDAwMDAwMDAwRkZDMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAzREZDMDAwMDAwMDAwMAotN0RGQzAwMDAwMDAwMDA3REZDMDAwMDAwMDAwMEY5RkMwMDAwMDAwMDAwRjlGQzAwMDAwMDAwMDFGMUZDMDAwMDAwMDAwM0YxCi1GQzAwMDAwMDAwMDNGMUZDMDAwMDAwMDAwN0UxRkMwMDAwMDAwMDA3RTFGQzAwMDAwMDAwMEZDMUZDMDAwMDAwMDAwRkMxRkMKLTAwMDAwMDAwMUY4MUZDMDAwMDAwMDAzRjgxRkMwMDAwMDAwMDNGMDFGQzAwMDAwMDAwN0YwMUZDMDAwMDAwMDA3RTAxRkMwMAotMDAwMDAwRkUwMUZDMDAwMDAwMDFGQzAxRkMwMDAwMDAwMUZDMDFGQzAwMDAwMDAzRjgwMUZDMDAwMDAwMDNGODAxRkMwMDAwCi0wMDA3RjAwMUZDMDAwMDAwMDdGMDAxRkMwMDAwMDAwRkUwMDFGQzAwMDAwMDFGRTAwMUZDMDAwMDAwMUZDMDAxRkMwMDAwMDAKLTNGODAwMUZDMDAwMDAwM0Y4MDAxRkMwMDAwMDA3RjAwMDFGQzAwMDAwMEZGMDAwMUZDMDAwMDAwRkUwMDAxRkMwMDAwMDFGRQotMDAwMUZDMDAwMDAxRkMwMDAxRkMwMDAwMDNGQzAwMDFGQzAwMDAwM0Y4MDAwMUZDMDAwMDA3RjAwMDAxRkMwMDAwMEZGMDAwCi0wMUZDMDAwMDBGRTAwMDAxRkMwMDAwMUZFMDAwMDFGQzAwMDAxRkMwMDAwMUZDMDAwMDNGODAwMDAxRkMwMDAwN0Y4MDAwMDEKLUZDMDAwMDdGMDAwMDAxRkMwMDAwRkYwMDAwMDFGQzAwMDBGRkZGRkZGRkZGRkZDMEZGRkZGRkZGRkZGRkMwRkZGRkZGRkZGRgotRkZDMEZGRkZGRkZGRkZGRkMwRkZGRkZGRkZGRkZGQzBGRkZGRkZGRkZGRkZDMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwCi0wMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMDAwMDAwMUZDMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAKLTAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMDAwMDAwMUZDMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMAotMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMDAwMDAwMUZDMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMDAwCi0wMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAwMDAwMDAwMUZDMDAwMDAwMDAwMDAxRkMwMDAwMDAwMDAwMDFGQzAwMDAzMjRFN0QKLUNEMzk+STxGRkZGRkZGRjgwMDAwMDAwRkZGRkZGRkZGODAwMDAwMEZGRkZGRkZGRkYwMDAwMDBGRkZGRkZGRkZGQzAwMDAwCi1GRkZGRkZGRkZGRjAwMDAwRkZGRkZGRkZGRkZDMDAwMEZGODAwMDAzRkZGRTAwMDBGRjgwMDAwMDNGRkYwMDAwRkY4MDAwMDAKLTA3RkZDMDAwRkY4MDAwMDAwMUZGQzAwMEZGODAwMDAwMDBGRkUwMDBGRjgwMDAwMDAwM0ZGMDAwRkY4MDAwMDAwMDFGRjgwMAotRkY4MDAwMDAwMDBGRjgwMEZGODAwMDAwMDAwN0ZDMDBGRjgwMDAwMDAwMDdGQzAwRkY4MDAwMDAwMDAzRkMwMEZGODAwMDAwCi0wMDAzRkUwMEZGODAwMDAwMDAwMUZFMDBGRjgwMDAwMDAwMDFGRTAwRkY4MDAwMDAwMDAxRkUwMEZGODAwMDAwMDAwMUZFMDAKLUZGODAwMDAwMDAwMUZFMDBGRjgwMDAwMDAwMDFGRTAwRkY4MDAwMDAwMDAzRkMwMEZGODAwMDAwMDAwM0ZDMDBGRjgwMDAwMAotMDAwN0ZDMDBGRjgwMDAwMDAwMDdGODAwRkY4MDAwMDAwMDBGRjgwMEZGODAwMDAwMDAxRkYwMDBGRjgwMDAwMDAwM0ZFMDAwCi1GRjgwMDAwMDAwRkZDMDAwRkY4MDAwMDAwMUZGODAwMEZGODAwMDAwMDdGRjAwMDBGRjgwMDAwMDFGRkUwMDAwRkY4MDAwMDEKLUZGRjgwMDAwRkZGRkZGRkZGRkYwMDAwMEZGRkZGRkZGRkZDMDAwMDBGRkZGRkZGRkZFMDAwMDAwRkZGRkZGRkZGRTAwMDAwMAotRkZGRkZGRkZGRkMwMDAwMEZGRkZGRkZGRkZGODAwMDBGRjgwMDAwRkZGRkUwMDAwRkY4MDAwMDAzRkZGMDAwMEZGODAwMDAwCi0wN0ZGQzAwMEZGODAwMDAwMDFGRkUwMDBGRjgwMDAwMDAwN0ZGMDAwRkY4MDAwMDAwMDFGRjgwMEZGODAwMDAwMDAwRkZDMDAKLUZGODAwMDAwMDAwN0ZFMDBGRjgwMDAwMDAwMDNGRTAwRkY4MDAwMDAwMDAxRkYwMEZGODAwMDAwMDAwMUZGMDBGRjgwMDAwMAotMDAwMEZGODBGRjgwMDAwMDAwMDA3RjgwRkY4MDAwMDAwMDAwN0Y4MEZGODAwMDAwMDAwMDdGQzBGRjgwMDAwMDAwMDA3RkMwCi1GRjgwMDAwMDAwMDAzRkMwRkY4MDAwMDAwMDAwM0ZDMEZGODAwMDAwMDAwMDNGQzBGRjgwMDAwMDAwMDAzRkMwRkY4MDAwMDAKLTAwMDA3RkMwRkY4MDAwMDAwMDAwN0ZDMEZGODAwMDAwMDAwMDdGODBGRjgwMDAwMDAwMDBGRjgwRkY4MDAwMDAwMDAwRkY4MAotRkY4MDAwMDAwMDAxRkYwMEZGODAwMDAwMDAwM0ZGMDBGRjgwMDAwMDAwMDdGRTAwRkY4MDAwMDAwMDBGRkMwMEZGODAwMDAwCi0wMDNGRkMwMEZGODAwMDAwMDA3RkY4MDBGRjgwMDAwMDAxRkZGMDAwRkY4MDAwMDAwRkZGRTAwMEZGODAwMDAwRkZGRkMwMDAKLUZGRkZGRkZGRkZGRjAwMDBGRkZGRkZGRkZGRkUwMDAwRkZGRkZGRkZGRkY4MDAwMEZGRkZGRkZGRkZFMDAwMDBGRkZGRkZGRgotRkYwMDAwMDBGRkZGRkZGRkYwMDAwMDAwM0E1Mjc1RDE0Qz42NiBEPDAwMDAwMDAzRkZGMDAwMDAwMDAwMDAxRkZGRkY4MDAwCi0wMDAwMDBGRkZGRkZGMDAwMDAwMDAzRkZGRkZGRkUwMDAwMDAwRkZGRkZGRkZGODAwMDAwM0ZGRkZGRkZGRjgwMDAwMDdGRkYKLUZGRkZGRjgwMDAwMEZGRkUwMDFGRkYwMDAwMDFGRkYwMDAwMUZGMDAwMDAzRkZDMDAwMDAzRjAwMDAwN0ZGMDAwMDAwMEYwMAotMDAwRkZFMDAwMDAwMDMwMDAwMUZGODAwMDAwMDAwMDAwMDNGRjAwMDAwMDAwMDAwMDA3RkUwMDAwMDAwMDAwMDAwRkZDMDAwCi0wMDAwMDAwMDAwRkZDMDAwMDAwMDAwMDAwMUZGODAwMDAwMDAwMDAwMDNGRjAwMDAwMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDAKLTA3RkUwMDAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDAwMEZGQzAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAxRkY4MDAwMAotMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAwMDNGRjAwMDAwMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDAwCi0zRkUwMDAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDAwN0ZDMDAwMDAKLTAwMDAwMDAwN0ZDMDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMAotRkY4MDAwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMEZGODAwMDAwCi0wMDAwMDAwMEZGODAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwMDAKLUZGODAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMDA3RkMwMDAwMAotMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDAwCi0zRkUwMDAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDAwMDNGRjAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwMUZGMDAwMDAKLTAwMDAwMDAwMUZGODAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwRkZDMDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMAotMDdGRTAwMDAwMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDAwM0ZGMDAwMDAwMDAwMDAwMDFGRjgwMDAwMDAwMDAwMDAwRkZDMDAwCi0wMDAwMDAwMDAwRkZDMDAwMDAwMDAwMDAwMDdGRTAwMDAwMDAwMDAwMDAzRkYwMDAwMDAwMDA4MDAwMUZGODAwMDAwMDAzODAKLTAwMEZGRTAwMDAwMDA3ODAwMDA3RkYwMDAwMDAxRjgwMDAwM0ZGQzAwMDAwM0ZDMDAwMDFGRkYwMDAwMUZGQzAwMDAwRkZGRQotMDAxRkZGQzAwMDAwN0ZGRkZGRkZGRjgwMDAwMDNGRkZGRkZGRkUwMDAwMDAwRkZGRkZGRkZDMDAwMDAwMDNGRkZGRkZGMDAwCi0wMDAwMDBGRkZGRkZDMDAwMDAwMDAwMUZGRkZGMDAwMDAwMDAwMDAzRkZGMDAwMDAzQTU2NzhEMzQ5Pkk8RkY4MEZGODBGRgotODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGCi04MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkYKLTgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRgotODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGCi04MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MEZGODAwOTUyNzVEMTIwPjczIEQ8MDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAKLTAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwMwotRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFCi0wMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAKLTAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMAotMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwCi0wM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDMKLUZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRQotMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwCi0wMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwM0ZFMDAwMDAwMDNGRTAwMDAKLTAwMDNGRTAwMDAwMDAzRkUwMDAwMDAwN0ZFMDAwMDAwMDdGQzAwMDAwMDA3RkM2MDAwMDAwRkZDNzAwMDAwMUZGODdDMDAwMAotM0ZGODdGMDAwMDdGRjBGRkMwMDFGRkYwRkZGRTFGRkZFMEZGRkZGRkZGQzA3RkZGRkZGRjgwMUZGRkZGRkYwMDAzRkZGRkZDCi0wMDAwN0ZGRkYwMDAwMDA3RkY4MDAwMjc1NDdCRDEzNj5JPEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMAotRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwCi1GRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDAKLUZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMAotRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwCi1GRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDAKLUZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMAotRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwCi1GRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDAKLUZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMAotRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMDAwCi1GRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDBGRjgwMDAwMDAwMDAKLUZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMEZGODAwMDAwMDAwMAotRkZGRkZGRkZGRkY4RkZGRkZGRkZGRkY4RkZGRkZGRkZGRkY4RkZGRkZGRkZGRkY4RkZGRkZGRkZGRkY4RkZGRkZGRkZGRkY4Ci1GRkZGRkZGRkZGRjgyRDUyNzVEMTNFPjc2IEQ8MDAwMDAwMDNGRjgwMDAwMDAwMDAwMDAwM0ZGRkY4MDAwMDAwMDAwMDAwRkYKLUZGRkUwMDAwMDAwMDAwMDNGRkZGRkY4MDAwMDAwMDAwMEZGRkZGRkZFMDAwMDAwMDAwM0ZGRkZGRkZGODAwMDAwMDAwN0ZGRQotMDBGRkZDMDAwMDAwMDBGRkYwMDAxRkZFMDAwMDAwMDNGRkMwMDAwN0ZGODAwMDAwMDdGRjAwMDAwMUZGQzAwMDAwMEZGQzAwCi0wMDAwN0ZFMDAwMDAxRkY4MDAwMDAwM0ZGMDAwMDAxRkYwMDAwMDAwMUZGMDAwMDAzRkUwMDAwMDAwMEZGODAwMDA3RkMwMDAKLTAwMDAwN0ZDMDAwMEZGODAwMDAwMDAwM0ZFMDAwMEZGMDAwMDAwMDAwMUZFMDAwMUZGMDAwMDAwMDAwMUZGMDAwM0ZFMDAwMAotMDAwMDAwRkY4MDAzRkMwMDAwMDAwMDAwN0Y4MDA3RkMwMDAwMDAwMDAwN0ZDMDA3RjgwMDAwMDAwMDAwM0ZDMDBGRjgwMDAwCi0wMDAwMDAzRkUwMEZGMDAwMDAwMDAwMDAxRkUwMUZGMDAwMDAwMDAwMDAxRkYwMUZGMDAwMDAwMDAwMDAxRkYwMUZFMDAwMDAKLTAwMDAwMDBGRjAzRkUwMDAwMDAwMDAwMDBGRjgzRkUwMDAwMDAwMDAwMDBGRjgzRkMwMDAwMDAwMDAwMDA3RjgzRkMwMDAwMAotMDAwMDAwMDdGODdGQzAwMDAwMDAwMDAwMDdGQzdGQzAwMDAwMDAwMDAwMDdGQzdGQzAwMDAwMDAwMDAwMDdGQzdGODAwMDAwCi0wMDAwMDAwM0ZDN0Y4MDAwMDAwMDAwMDAwM0ZDRkY4MDAwMDAwMDAwMDAwM0ZFRkY4MDAwMDAwMDAwMDAwM0ZFRkY4MDAwMDAKLTAwMDAwMDAzRkVGRjgwMDAwMDAwMDAwMDAzRkVGRjgwMDAwMDAwMDAwMDAzRkVGRjgwMDAwMDAwMDAwMDAzRkVGRjgwMDAwMAotMDAwMDAwMDNGRUZGODAwMDAwMDAwMDAwMDNGRUZGODAwMDAwMDAwMDAwMDNGRUZGODAwMDAwMDAwMDAwMDNGRUZGODAwMDAwCi0wMDAwMDAwM0ZFRkY4MDAwMDAwMDAwMDAwM0ZFRkY4MDAwMDAwMDAwMDAwM0ZFRkZDMDAwMDAwMDAwMDAwN0ZFN0ZDMDAwMDAKLTAwMDAwMDA3RkM3RkMwMDAwMDAwMDAwMDA3RkM3RkMwMDAwMDAwMDAwMDA3RkM3RkMwMDAwMDAwMDAwMDA3RkM3RkMwMDAwMAotMDAwMDAwMDdGQzdGRTAwMDAwMDAwMDAwMEZGQzNGRTAwMDAwMDAwMDAwMEZGODNGRTAwMDAwMDAwMDAwMEZGODNGRjAwMDAwCi0wMDAwMDAxRkY4MUZGMDAwMDAwMDAwMDAxRkYwMUZGMDAwMDAwMDAwMDAxRkYwMUZGODAwMDAwMDAwMDAzRkYwMEZGODAwMDAKLTAwMDAwMDNGRTAwRkZDMDAwMDAwMDAwMDdGRTAwN0ZDMDAwMDAwMDAwMDdGQzAwN0ZFMDAwMDAwMDAwMEZGQzAwM0ZFMDAwMAotMDAwMDAwRkY4MDAzRkYwMDAwMDAwMDAxRkY4MDAxRkYwMDAwMDAwMDAxRkYwMDAxRkY4MDAwMDAwMDAzRkYwMDAwRkZDMDAwCi0wMDAwMDdGRTAwMDA3RkUwMDAwMDAwMEZGQzAwMDAzRkYwMDAwMDAwMUZGODAwMDAzRkY4MDAwMDAwM0ZGODAwMDAxRkZDMDAKLTAwMDA3RkYwMDAwMDBGRkUwMDAwMDBGRkUwMDAwMDA3RkYwMDAwMDFGRkMwMDAwMDAzRkZDMDAwMDdGRjgwMDAwMDAxRkZGMAotMDAxRkZGMDAwMDAwMDA3RkZFMDBGRkZDMDAwMDAwMDAzRkZGRkZGRkY4MDAwMDAwMDAwRkZGRkZGRkUwMDAwMDAwMDAwN0ZGCi1GRkZGQzAwMDAwMDAwMDAwRkZGRkZFMDAwMDAwMDAwMDAwM0ZGRkY4MDAwMDAwMDAwMDAwMDNGRjgwMDAwMDAwNDc1NjdBRDMKLTU0Pjc5IEQ8RkZGRkZGRkZDMDAwMDBGRkZGRkZGRkZDMDAwMEZGRkZGRkZGRkYwMDAwRkZGRkZGRkZGRkMwMDBGRkZGRkZGRgotRkZGMDAwRkZGRkZGRkZGRkY4MDBGRjgwMDAwMUZGRkUwMEZGODAwMDAwMUZGRjAwRkY4MDAwMDAwN0ZGODBGRjgwMDAwMDAxCi1GRkMwRkY4MDAwMDAwMEZGRTBGRjgwMDAwMDAwM0ZFMEZGODAwMDAwMDAxRkYwRkY4MDAwMDAwMDFGRjBGRjgwMDAwMDAwMEYKLUY4RkY4MDAwMDAwMDA3RjhGRjgwMDAwMDAwMDdGQ0ZGODAwMDAwMDAwM0ZDRkY4MDAwMDAwMDAzRkNGRjgwMDAwMDAwMDNGRQotRkY4MDAwMDAwMDAzRkVGRjgwMDAwMDAwMDFGRUZGODAwMDAwMDAwMUZFRkY4MDAwMDAwMDAxRkVGRjgwMDAwMDAwMDFGRUZGCi04MDAwMDAwMDAxRkVGRjgwMDAwMDAwMDNGRUZGODAwMDAwMDAwM0ZFRkY4MDAwMDAwMDAzRkNGRjgwMDAwMDAwMDNGQ0ZGODAKLTAwMDAwMDA3RkNGRjgwMDAwMDAwMDdGOEZGODAwMDAwMDAwRkY4RkY4MDAwMDAwMDFGRjBGRjgwMDAwMDAwMUZGMEZGODAwMAotMDAwMDNGRTBGRjgwMDAwMDAwRkZFMEZGODAwMDAwMDFGRkMwRkY4MDAwMDAwN0ZGODBGRjgwMDAwMDFGRkYwMEZGODAwMDAxCi1GRkZFMDBGRkZGRkZGRkZGRjgwMEZGRkZGRkZGRkZGMDAwRkZGRkZGRkZGRkMwMDBGRkZGRkZGRkZGMDAwMEZGRkZGRkZGRkMKLTAwMDBGRkZGRkZGRkMwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMAotMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwCi1GRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkYKLTgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MAotMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwCi0wMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAKLTAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMAotMDAwMDM3NTI3NUQxNDk+STwwMDAwMDdGRjgwMDAwMDAwMDA3RkZGRjgwMDAwMDAwMUZGRkZGRjAwMDAwMDA3RkZGRkZGQzAKLTAwMDAxRkZGRkZGRkYwMDAwMDNGRkZGRkZGRkMwMDAwN0ZGRkZGRkZGRTAwMDBGRkY4MDBGRkZFMDAwMUZGQzAwMDBGRkUwMAotMDNGRjAwMDAwM0ZDMDAwN0ZFMDAwMDAwRkMwMDBGRjgwMDAwMDAzQzAwMEZGODAwMDAwMDFDMDAxRkYwMDAwMDAwMEMwMDFGCi1FMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDA3RjgwMDAwMDAwMDAwMDdGODAKLTAwMDAwMDAwMDA3RjgwMDAwMDAwMDAwMDdGODAwMDAwMDAwMDAwN0Y4MDAwMDAwMDAwMDA3RjgwMDAwMDAwMDAwMDdGODAwMAotMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDNGRjAwMDAwCi0wMDAwMDAxRkY4MDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwRkZGMDAwMDAwMDAwMDA3RkZDMDAwMDAKLTAwMDAwM0ZGRkMwMDAwMDAwMDAxRkZGRjgwMDAwMDAwMDFGRkZGRjgwMDAwMDAwMDdGRkZGRjgwMDAwMDAwM0ZGRkZGRjAwMAotMDAwMDFGRkZGRkZDMDAwMDAwMDdGRkZGRkYwMDAwMDAwM0ZGRkZGRjgwMDAwMDAwN0ZGRkZGQzAwMDAwMDAwRkZGRkZFMDAwCi0wMDAwMDBGRkZGRjAwMDAwMDAwMDBGRkZGODAwMDAwMDAwMDFGRkZDMDAwMDAwMDAwMDNGRkUwMDAwMDAwMDAwMEZGRTAwMDAKLTAwMDAwMDA3RkYwMDAwMDAwMDAwMDNGRjgwMDAwMDAwMDAwMUZGODAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDA3RkMwMDAwMAotMDAwMDAwN0ZDMDAwMDAwMDAwMDAzRkMwMDAwMDAwMDAwMDNGRTAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwCi0wMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDFGRTAwMDAwMDAwMDAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAKLTAwMUZFMDAwMDAwMDAwMDAxRkUwMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAzRkMwNjAwMDAwMDAwMAotN0Y4MDcwMDAwMDAwMDBGRjgwNzgwMDAwMDAwMEZGMDA3RTAwMDAwMDAxRkYwMDdGODAwMDAwMDNGRTAwRkZDMDAwMDAwN0ZDCi0wMEZGRjgwMDAwMUZGQzAwRkZGRjAwMDA3RkY4MDA3RkZGRjAwM0ZGRjAwMDFGRkZGRkZGRkZFMDAwMDdGRkZGRkZGRkMwMDAKLTAzRkZGRkZGRkYwMDAwMDA3RkZGRkZGRTAwMDAwMDFGRkZGRkY4MDAwMDAwMDFGRkZGRTAwMDAwMDAwMDFGRkUwMDAwMDAzMwotNTY3QkQzM0Y+ODMgRDwwMDAzRkY4MDAwMDAxRkZGRTAwMDAwRkZGRkY4MDAwM0ZGRkZGQzAwMEZGRkZGRkYwMDFGRkZGRkZGCi04MDFGRkMwMEZGQzAxRkUwMDA3RkMwMUY4MDAwM0ZFMDFFMDAwMDFGRjAxODAwMDAwRkYwMTAwMDAwMEZGMDAwMDAwMDA3RjgKLTAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMAotMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAzRkZGQzAwMDBGRkZGRkMwMDA3Ci1GRkZGRkMwMDNGRkZGRkZDMDBGRkZGRkZGQzAxRkZGRjgzRkMwN0ZGRTAwM0ZDMEZGRTAwMDNGQzFGRjgwMDAzRkMzRkUwMDAKLTAzRkMzRkMwMDAwM0ZDN0Y4MDAwMDNGQzdGMDAwMDAzRkNGRTAwMDAwM0ZDRkUwMDAwMDNGQ0ZFMDAwMDAzRkNGRTAwMDAwMwotRkNGRTAwMDAwM0ZDRkUwMDAwMDdGQ0ZGMDAwMDBGRkM3RjgwMDAwRkZDN0ZDMDAwM0ZGQzdGRTAwMDdGRkMzRkZDMDNGRkZDCi0zRkZGRkZGRkZDMUZGRkZGRkJGQzBGRkZGRkUzRkMwN0ZGRkY4M0ZDMDNGRkZDMDNGQzAwRkZDMDAwMDAyNjM3N0FCNTM3PgotOTcgRDwwMDAwMUZGQzAwMDAwMDAwRkZGRkMwMDAwMDAzRkZGRkYwMDAwMDBGRkZGRkZDMDAwMDFGRkZGRkZGMDAwMDNGRkYKLUZGRkY4MDAwN0ZGMDAzRkY4MDAwRkY4MDAwN0Y4MDAxRkUwMDAwMUYwMDAzRkMwMDAwMDcwMDA3RjgwMDAwMDMwMDA3RjAwMAotMDAwMDAwMEZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZDMDAwMDAwMDAwM0ZDMDAwMDAwMDAwM0Y4MDAwMDAwMDAwM0Y4MDAwCi0wMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDA3RjAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAKLTAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMDAwMDAwMEZFMDAwMAotMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkUwMDAwMDAwMDAwRkYwMDAwMDAwMDAwN0YwMDAwMDAwMDAwN0YwMDAwCi0wMDAwMDA3RjAwMDAwMDAwMDA3RjgwMDAwMDAwMDAzRjgwMDAwMDAwMDAzRjgwMDAwMDAwMDAxRkMwMDAwMDAwMDAxRkUwMDAKLTAwMDAwMDBGRTAwMDAwMDA0MDBGRjAwMDAwMDBDMDA3RjgwMDAwMDNDMDAzRkMwMDAwMDdDMDAzRkUwMDAwMUZDMDAxRkY4MAotMDBGRkMwMDBGRkUwMDdGRkMwMDA3RkZGRkZGRjgwMDAxRkZGRkZGRTAwMDAwRkZGRkZGQzAwMDAwM0ZGRkZGMDAwMDAwMEZGCi1GRjgwMDAwMDAwMUZGODAwMDAyQTM3N0JCNTMzPjk5IEQ8MDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAKLTAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMAotMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwCi0wMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAwMDAwMDAxRkUwMDAKLTAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDFGRTAwMAotMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDAwMDAwMUZFMDAwMDA3RjgwMUZFMDAwCi0wM0ZGRjAxRkUwMDAwRkZGRkMxRkUwMDAxRkZGRkYxRkUwMDA3RkZGRkY5RkUwMDBGRkZGRkZERkUwMDFGRkYwMEZGRkUwMDMKLUZGODAwM0ZGRTAwM0ZGMDAwMUZGRTAwN0ZDMDAwMEZGRTAwRkY4MDAwMDdGRTAwRkYwMDAwMDNGRTAxRkUwMDAwMDFGRTAxRgotRTAwMDAwMUZFMDNGQzAwMDAwMUZFMDNGODAwMDAwMUZFMDNGODAwMDAwMUZFMDdGODAwMDAwMUZFMDdGMDAwMDAwMUZFMDdGCi0wMDAwMDAxRkUwN0YwMDAwMDAxRkUwRkUwMDAwMDAxRkUwRkUwMDAwMDAxRkUwRkUwMDAwMDAxRkUwRkUwMDAwMDAxRkUwRkUKLTAwMDAwMDFGRTBGRTAwMDAwMDFGRTBGRTAwMDAwMDFGRTBGRTAwMDAwMDFGRTBGRTAwMDAwMDFGRTBGRTAwMDAwMDFGRTBGRQotMDAwMDAwMUZFMEZFMDAwMDAwMUZFMDdGMDAwMDAwMUZFMDdGMDAwMDAwMUZFMDdGMDAwMDAwMUZFMDdGMDAwMDAwMUZFMDNGCi04MDAwMDAxRkUwM0Y4MDAwMDAxRkUwM0ZDMDAwMDAxRkUwMUZDMDAwMDAzRkUwMUZFMDAwMDAzRkUwMEZGMDAwMDA3RkUwMEYKLUY4MDAwMEZGRTAwN0ZDMDAwMUZGRTAwN0ZFMDAwM0ZGRTAwM0ZGODAwN0ZGRTAwMUZGRTAzRkRGRTAwMEZGRkZGRjlGRTAwMAotN0ZGRkZGMUZFMDAwM0ZGRkZFMUZFMDAwMEZGRkY4MUZFMDAwMDdGRkUwMUZFMDAwMDBGRjAwMDAwMDJCNTY3QkQ0M0I+STwKLTAwMDA3RkMwMDAwMDAwMDFGRkY4MDAwMDAwMDdGRkZFMDAwMDAwMUZGRkZGMDAwMDAwM0ZGRkZGODAwMDAwN0ZGRkZGQzAwMAotMDBGRkMwN0ZFMDAwMDFGRjAwMEZGMDAwMDNGQzAwMDdGODAwMDdGODAwMDNGODAwMDdGMDAwMDFGQzAwMEZFMDAwMDBGQzAwCi0xRkUwMDAwMDdFMDAxRkMwMDAwMDdFMDAxRjgwMDAwMDNFMDAzRjgwMDAwMDNGMDAzRjAwMDAwMDFGMDA3RjAwMDAwMDFGMDAKLTdGMDAwMDAwMUYwMDdFMDAwMDAwMUYwMDdFMDAwMDAwMEY4MDdFMDAwMDAwMEY4MEZGRkZGRkZGRkY4MEZGRkZGRkZGRkY4MAotRkZGRkZGRkZGRjgwRkZGRkZGRkZGRjgwRkZGRkZGRkZGRjgwRkZGRkZGRkZGRjgwRkMwMDAwMDAwMDAwRkMwMDAwMDAwMDAwCi1GQzAwMDAwMDAwMDBGRTAwMDAwMDAwMDBGRTAwMDAwMDAwMDA3RTAwMDAwMDAwMDA3RTAwMDAwMDAwMDA3RTAwMDAwMDAwMDAKLTdGMDAwMDAwMDAwMDNGMDAwMDAwMDAwMDNGODAwMDAwMDAwMDNGODAwMDAwMDAwMDFGQzAwMDAwMDAwMDFGQzAwMDAwMDAwMAotMEZFMDAwMDAwMDAwMEZGMDAwMDAwMDgwMDdGODAwMDAwMzgwMDNGQzAwMDAwNzgwMDNGRTAwMDAxRjgwMDFGRjgwMDBGRjgwCi0wMEZGRjAwRkZGODAwMDdGRkZGRkZGMDAwMDNGRkZGRkZDMDAwMDBGRkZGRkY4MDAwMDAzRkZGRkUwMDAwMDAwRkZGRjAwMDAKLTAwMDAxRkYwMDAwMDI5Mzc3QkI1MzM+STwwMDAwMDFGRkMwMDAwMDBGRkZGODAwMDAxRkZGRjgwMDAwN0ZGRkY4MDAwMEZGCi1GRkY4MDAwMUZGRkZGODAwMDNGRjAwRjgwMDA3RkMwMDA4MDAwN0YwMDAwMDAwMEZFMDAwMDAwMDFGQzAwMDAwMDAxRkMwMDAKLTAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMAotMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwCi03RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0YKLTgwMDAwMEZGRkZGRkZDMDBGRkZGRkZGQzAwRkZGRkZGRkMwMEZGRkZGRkZDMDBGRkZGRkZGQzAwRkZGRkZGRkMwMDAwN0Y4MAotMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwCi0wMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAKLTAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMAotN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGCi04MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAKLTAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMAotMDAwMDdGODAwMDAwMDA3RjgwMDAwMDI1NTY3RUQ1MjM+STwwMDAwM0ZDMDAwMUZDMDAwMDBGRkYwMDFGRkMwMDAwM0ZGRkMKLTBGRkZDMDAwMEZGRkZGN0ZGRkUwMDAxRkZGRkZGRkZGRTAwMDNGRkZGRkZGRkZFMDAwN0ZFMDdGRkZGMDAwMDA3RjAwMEZGOAotMDAwMDAwRkUwMDA3RjAwMDAwMDFGQzAwMDNGODAwMDAwMUY4MDAwMUY4MDAwMDAzRjgwMDAxRkMwMDAwMDNGMDAwMDBGQzAwCi0wMDAzRjAwMDAwRkMwMDAwMDdGMDAwMDBGRTAwMDAwN0UwMDAwMDdFMDAwMDA3RTAwMDAwN0UwMDAwMDdFMDAwMDA3RTAwMDAKLTA3RTAwMDAwN0UwMDAwMDdFMDAwMDA3RTAwMDAwN0UwMDAwMDdFMDAwMDA3RTAwMDAwN0UwMDAwMDdFMDAwMDA3RTAwMDAwNwotRjAwMDAwRkUwMDAwMDNGMDAwMDBGQzAwMDAwM0YwMDAwMEZDMDAwMDAzRjgwMDAxRkMwMDAwMDFGODAwMDFGODAwMDAwMUZDCi0wMDAzRjgwMDAwMDBGRTAwMDdGMDAwMDAwMDdGMDAwRkUwMDAwMDAwRkZFMDdGRTAwMDAwMDFGRkZGRkZDMDAwMDAwMUZGRkYKLUZGODAwMDAwMDNGRkZGRkYwMDAwMDAwM0UzRkZGQzAwMDAwMDAzRTBGRkYwMDAwMDAwMDdFMDNGQzAwMDAwMDAwN0UwMDAwMAotMDAwMDAwMDdFMDAwMDAwMDAwMDAwN0UwMDAwMDAwMDAwMDA3RTAwMDAwMDAwMDAwMDdFMDAwMDAwMDAwMDAwN0YwMDAwMDAwCi0wMDAwMDNGMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAzRkZGRkZGQzAwMDAwMDFGRkZGRkZGRTAwMDAwMEZGRkZGRkZGODAKLTAwMDBGRkZGRkZGRkUwMDAwMUZGRkZGRkZGRjgwMDA3RkZGRkZGRkZGQzAwMEZGRkZGRkZGRkZFMDAxRkY4MDAwMDdGRkUwMAotMUZFMDAwMDAwN0ZGMDAzRkMwMDAwMDAxRkY4MDdGODAwMDAwMDA3RjgwN0YwMDAwMDAwMDNGODA3RjAwMDAwMDAwM0ZDMEZFCi0wMDAwMDAwMDFGQzBGRTAwMDAwMDAwMUZDMEZFMDAwMDAwMDAxRkMwRkUwMDAwMDAwMDFGQzBGRTAwMDAwMDAwMUZDMEZFMDAKLTAwMDAwMDFGQzA3RjAwMDAwMDAwM0Y4MDdGODAwMDAwMDA3RjgwN0ZDMDAwMDAwMEZGODAzRkUwMDAwMDAxRkYwMDFGRjgwMAotMDAwN0ZFMDAwRkZFMDAwMDFGRkMwMDA3RkZFMDAxRkZGODAwMDNGRkZGRkZGRkYwMDAwMEZGRkZGRkZGQzAwMDAwN0ZGRkZGCi1GRjgwMDAwMDFGRkZGRkZFMDAwMDAwMDNGRkZGRjAwMDAwMDAwMDFGRkUwMDAwMDAzMzRFN0RCNDM5Pkk8RkYwMDAwMDAwMAotRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGCi0wMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAKLTAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMAotMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwCi0wMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDBGRjgwMEZGMDA3RkZGMDBGRjAxRkZGRkMwRkYwN0ZGRkZFMEZGMEZGRkZGRjAKLUZGMUZGRkZGRjhGRjNGODA3RkY4RkY3RTAwMUZGQ0ZGRkMwMDA3RkNGRkY4MDAwM0ZFRkZGMDAwMDNGRUZGRTAwMDAxRkVGRgotRTAwMDAxRkZGRkMwMDAwMEZGRkZDMDAwMDBGRkZGODAwMDAwRkZGRjgwMDAwMEZGRkY4MDAwMDBGRkZGODAwMDAwRkZGRjAwCi0wMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAKLTAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMAotRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGCi1GRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYKLTAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRjI4NTU3N0Q0M0I+STxGRjgwRkY4MEZGCi04MEZGODBGRjgwRkY4MEZGODBGRjgwRkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RgotODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGCi04MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0Y4MDdGODA3RjgwN0YKLTgwN0Y4MDdGODA3RjgwN0Y4MDA5NEY3OENFMUI+STxGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCi1GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKLUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYwODU1NzdENDFCPgotMTA4IEQ8MDAwMDBGRjgwMEZGMDA3RkZGMDBGRjAxRkZGRkMwRkYwN0ZGRkZFMEZGMEZGRkZGRjBGRjFGRkZGRkY4RkYzRjgwCi03RkY4RkY3RTAwMUZGQ0ZGRkMwMDA3RkNGRkY4MDAwM0ZFRkZGMDAwMDNGRUZGRTAwMDAxRkVGRkUwMDAwMUZGRkZDMDAwMDAKLUZGRkZDMDAwMDBGRkZGODAwMDAwRkZGRjgwMDAwMEZGRkY4MDAwMDBGRkZGODAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRgotRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGCi0wMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAKLTAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMAotMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwCi1GRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRjI4MzU3N0I0M0I+MTEwIEQ8MDAwMDBGRjAwMDAwMDAwMEZGRkYwMAotMDAwMDAzRkZGRkMwMDAwMDBGRkZGRkYwMDAwMDFGRkZGRkY4MDAwMDNGRkZGRkZDMDAwMDdGRjAwRkZFMDAwMEZGODAwMUZGCi0wMDAxRkYwMDAwRkY4MDAzRkMwMDAwM0ZDMDA3RjgwMDAwMUZFMDA3RjAwMDAwMEZFMDBGRTAwMDAwMDdGMDBGRTAwMDAwMDcKLUYwMUZDMDAwMDAwM0Y4MUY4MDAwMDAwMUY4M0Y4MDAwMDAwMUZDM0Y4MDAwMDAwMUZDN0YwMDAwMDAwMEZFN0YwMDAwMDAwMAotRkU3RjAwMDAwMDAwRkU3RTAwMDAwMDAwN0VGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwN0ZGRTAwMDAwMDAwCi03RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDA3RkZFMDAwMDAwMDAKLTdGRkUwMDAwMDAwMDdGRkYwMDAwMDAwMEZGN0YwMDAwMDAwMEZFN0YwMDAwMDAwMEZFN0YwMDAwMDAwMEZFN0Y4MDAwMDAwMQotRkUzRjgwMDAwMDAxRkMzRkMwMDAwMDAzRkMxRkMwMDAwMDAzRjgxRkUwMDAwMDA3RjgwRkYwMDAwMDBGRjAwRkYwMDAwMDBGCi1GMDA3RjgwMDAwMUZFMDAzRkMwMDAwM0ZDMDAzRkYwMDAwRkZDMDAxRkZDMDAzRkY4MDAwRkZGMDBGRkYwMDAwN0ZGRkZGRkUKLTAwMDAxRkZGRkZGODAwMDAwRkZGRkZGMDAwMDAwM0ZGRkZDMDAwMDAwMEZGRkYwMDAwMDAwMDFGRjgwMDAwMzAzNzdDQjUzOQotPkk8MDAwMDFGRjAwMDAwRkYwMEZGRkMwMDAwRkYwM0ZGRkYwMDAwRkYwRkZGRkY4MDAwRkYxRkZGRkZDMDAwRkY3RkZGRkYKLUUwMDBGRkZGMDBGRkYwMDBGRkZDMDAzRkY4MDBGRkYwMDAwRkZDMDBGRkUwMDAwN0ZDMDBGRkMwMDAwM0ZFMDBGRjgwMDAwMQotRkYwMEZGODAwMDAwRkYwMEZGMDAwMDAwRkYwMEZGMDAwMDAwN0Y4MEZGMDAwMDAwN0Y4MEZGMDAwMDAwM0ZDMEZGMDAwMDAwCi0zRkMwRkYwMDAwMDAxRkMwRkYwMDAwMDAxRkMwRkYwMDAwMDAxRkMwRkYwMDAwMDAxRkUwRkYwMDAwMDAwRkUwRkYwMDAwMDAKLTBGRTBGRjAwMDAwMDBGRTBGRjAwMDAwMDBGRTBGRjAwMDAwMDBGRTBGRjAwMDAwMDBGRTBGRjAwMDAwMDBGRTBGRjAwMDAwMAotMEZFMEZGMDAwMDAwMEZFMEZGMDAwMDAwMEZFMEZGMDAwMDAwMUZFMEZGMDAwMDAwMUZDMEZGMDAwMDAwMUZDMEZGMDAwMDAwCi0xRkMwRkYwMDAwMDAzRkMwRkYwMDAwMDAzRjgwRkYwMDAwMDA3RjgwRkYwMDAwMDA3RjgwRkYwMDAwMDBGRjAwRkY4MDAwMDEKLUZGMDBGRjgwMDAwMUZFMDBGRkMwMDAwM0ZFMDBGRkUwMDAwRkZDMDBGRkYwMDAxRkY4MDBGRkY4MDA3RkYwMDBGRkZFMDFGRgotRTAwMEZGN0ZGRkZGQzAwMEZGM0ZGRkZGODAwMEZGMUZGRkZGMDAwMEZGMDdGRkZFMDAwMEZGMDFGRkY4MDAwMEZGMDAzRkMwCi0wMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAKLTAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjAwMDAwMAotMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwCi0wMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMkI0Qzc2QjQzQj5JPDAwMDAwMwotRTBGRTAwMUZFMEZFMDA3RkUwRkUwMUZGRTBGRTAzRkZFMEZFMEZGRkUwRkUxRkZGRTBGRTNGRkMwMEZFM0ZFMDAwRkU3RjgwCi0wMEZFRkYwMDAwRkZGRTAwMDBGRkZDMDAwMEZGRjgwMDAwRkZGMDAwMDBGRkUwMDAwMEZGRTAwMDAwRkZDMDAwMDBGRkMwMDAKLTAwRkY4MDAwMDBGRjgwMDAwMEZGODAwMDAwRkY4MDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAwMEZGMDAwMAotMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwCi0wMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAKLTAwRkYwMDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDAxQjM1NzdCNDI3PgotMTE0IEQ8MDAwN0ZGODAwMDAwM0ZGRkY4MDAwMEZGRkZGRjAwMDFGRkZGRkZDMDA3RkZGRkZGRTAwRkZGRkZGRkUwMEZGQzAwCi1GRkUwMUZFMDAwMEZDMDNGQzAwMDAzQzAzRjgwMDAwMEMwM0Y4MDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwN0YwMDAwMDAKLTAwN0YwMDAwMDAwMDdGMDAwMDAwMDA3RjAwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDAzRkMwMDAwMDAwM0ZGMDAwMDAwMAotMUZGQzAwMDAwMDFGRkZDMDAwMDAwRkZGRkUwMDAwMDdGRkZGQzAwMDAzRkZGRkYwMDAwMUZGRkZGQzAwMDA3RkZGRkUwMDAwCi0zRkZGRkYwMDAwMDdGRkZGODAwMDAwN0ZGRkMwMDAwMDAzRkZFMDAwMDAwMDdGRTAwMDAwMDAxRkYwMDAwMDAwMEZGMDAwMDAKLTAwMDdGODAwMDAwMDA3RjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGODAwMDAwMAotMDNGODQwMDAwMDA3RjA3MDAwMDAwN0YwNzgwMDAwMEZGMDdFMDAwMDBGRTBGRkMwMDAzRkUwRkZGQzAxRkZDMEZGRkZGRkZGCi04MDdGRkZGRkZGMDAxRkZGRkZGRTAwMDNGRkZGRkMwMDAwN0ZGRkYwMDAwMDA3RkYwMDAwMjUzNzdEQjUyQz5JPDAwN0Y4MAotMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwCi0wMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAKLUZGRkZGRkZGODBGRkZGRkZGRjgwRkZGRkZGRkY4MEZGRkZGRkZGODBGRkZGRkZGRjgwRkZGRkZGRkY4MDAwN0Y4MDAwMDAwMAotN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGCi04MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAKLTAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMAotMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwCi0wMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDAKLTdGQzAwMDQwMDA3RkMwMDFDMDAwM0ZFMDAzQzAwMDNGRjAxRkUwMDAzRkZGRkZFMDAwMUZGRkZGRTAwMDBGRkZGRjgwMDAwRgotRkZGRTAwMDAwM0ZGRjAwMDAwMDFGRjAwMDAyMzQ0N0VDMjI5Pkk8RkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYKLTAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMAotMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwCi0wMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDAKLUZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRgotRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDBGRkZGMDAwMDAwRkZGRjAwMDAwMEZGRkYwMDAwMDFGRkZGCi0wMDAwMDFGRkZGMDAwMDAzRkZGRjAwMDAwM0ZGRkYwMDAwMDdGRkZGODAwMDBGRkY3RjgwMDAxRkZGN0ZDMDAwN0ZGRjdGRjgKLTAzRkVGRjNGRkZGRkZDRkYzRkZGRkZGOEZGMUZGRkZGRTBGRjBGRkZGRjgwRkYwM0ZGRkUwMEZGMDBGRkUwMDAwMDI4MzU3NwotQjMzQj5JPEZFMDAwMDAwMDBGRUZGMDAwMDAwMDBGRTdGMDAwMDAwMDFGQzdGMDAwMDAwMDFGQzdGODAwMDAwMDFGQzNGODAKLTAwMDAwM0Y4M0ZDMDAwMDAwM0Y4MUZDMDAwMDAwN0Y4MUZDMDAwMDAwN0YwMEZFMDAwMDAwN0YwMEZFMDAwMDAwRkUwMEZGMAotMDAwMDBGRTAwN0YwMDAwMDBGRTAwN0Y4MDAwMDFGQzAwM0Y4MDAwMDFGQzAwM0Y4MDAwMDNGODAwM0ZDMDAwMDNGODAwMUZDCi0wMDAwM0Y4MDAxRkUwMDAwN0YwMDAwRkUwMDAwN0YwMDAwRkUwMDAwRkUwMDAwN0YwMDAwRkUwMDAwN0YwMDAwRkUwMDAwN0YKLTgwMDFGQzAwMDAzRjgwMDFGQzAwMDAzRjgwMDFGODAwMDAxRkMwMDNGODAwMDAxRkMwMDNGODAwMDAwRkMwMDNGMDAwMDAwRgotRTAwN0YwMDAwMDBGRTAwN0UwMDAwMDA3RjAwN0UwMDAwMDA3RjAwRkUwMDAwMDAzRjAwRkMwMDAwMDAzRjgwRkMwMDAwMDAzCi1GODFGODAwMDAwMDFGODFGODAwMDAwMDFGQzFGODAwMDAwMDBGQzNGMDAwMDAwMDBGQzNGMDAwMDAwMDA3RTNGMDAwMDAwMDAKLTdFN0UwMDAwMDAwMDdFN0UwMDAwMDAwMDNFN0MwMDAwMDAwMDNGN0MwMDAwMDAwMDFGN0MwMDAwMDAwMDFGRjgwMDAwMDAwMAotMEZGODAwMDAwMDAwMEZGMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDdGMDAwMDAwMDAwMDdFMDAwMDAwMDAwMDdFMDAwMDAwMDAwCi0wN0MwMDAwMDAwMDAwRkMwMDAwMDAwMDAwRkMwMDAwMDAwMDAwRjgwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjAwMDAwMDAwMDAKLTNGMDAwMDAwMDAwMDNGMDAwMDAwMDAwMDNFMDAwMDAwMDAwMDdFMDAwMDAwMDAwMDdDMDAwMDAwMDAwMEZDMDAwMDAwMDAwMAotRkMwMDAwMDAwMDAxRjgwMDAwMDAwMDAxRjgwMDAwMDAzMDAzRjAwMDAwMDAzRTA3RjAwMDAwMDAzRkZGRTAwMDAwMDAzRkZGCi1DMDAwMDAwMDNGRkZDMDAwMDAwMDNGRkY4MDAwMDAwMDNGRkYwMDAwMDAwMDA3RkMwMDAwMDAwMDJGNEM3RUIzMzQ+MTIxCi1EIEUKLSVFbmREVklQU0JpdG1hcEZvbnQKLSVEVklQU0JpdG1hcEZvbnQ6IEZzIGVjc2kxMjAwIDEyIDkKLS9GcyA5IDExNiBkZjwzRkMwN0Y4MDdGODA3RjgwN0Y4MDdGODBGRjAwRkYwMDBBMDg3Nzg3MUI+NDYKLUQ8MDAwMDAwN0Y4MDAwMDAwMDAzRkZGMDAwMDAwMDBGRkZGQzAwMDAwMDNGRkZGRTAwMDAwMDdGRkZGRjAwMDAwMEZGRkZGRgotODAwMDAzRkY4MUZGODAwMDA3RkMwMDdGQzAwMDA3RjgwMDNGQzAwMDBGRTAwMDFGRTAwMDFGQzAwMDBGRTAwMDNGODAwMDBGCi1FMDAwM0Y4MDAwMEZFMDAwN0YwMDAwMDdGMDAwN0UwMDAwMDdGMDAwRkUwMDAwMDdGMDAwRkMwMDAwMDdGMDAxRkMwMDAwMDcKLUYwMDFGODAwMDAwN0YwMDNGODAwMDAwN0YwMDNGODAwMDAwN0YwMDdGMDAwMDAwN0YwMDdGMDAwMDAwN0YwMDdGMDAwMDAwNwotRjAwRkUwMDAwMDA3RjAwRkUwMDAwMDA3RTAwRkUwMDAwMDA3RTAwRkMwMDAwMDBGRTAxRkMwMDAwMDBGRTAxRkMwMDAwMDBGCi1FMDFGQzAwMDAwMEZFMDFGQzAwMDAwMEZFMDNGODAwMDAwMUZDMDNGODAwMDAwMUZDMDNGODAwMDAwMUZDMDNGODAwMDAwMUYKLUMwN0YwMDAwMDAzRjgwN0YwMDAwMDAzRjgwN0YwMDAwMDAzRjgwN0YwMDAwMDAzRjgwN0YwMDAwMDAzRjgwN0YwMDAwMDA3RgotMDBGRTAwMDAwMDdGMDBGRTAwMDAwMDdGMDBGRTAwMDAwMEZFMDBGRTAwMDAwMEZFMDBGRTAwMDAwMEZFMDBGRTAwMDAwMUZDCi0wMEZFMDAwMDAxRkMwMEZFMDAwMDAxRkMwMEZFMDAwMDAzRjgwMEZFMDAwMDAzRjgwMEZFMDAwMDA3RjAwMEZFMDAwMDA3RjAKLTAwRkUwMDAwMEZFMDAwRkUwMDAwMEZFMDAwRkYwMDAwMUZDMDAwN0YwMDAwM0Y4MDAwN0YwMDAwN0Y4MDAwN0Y4MDAwRkYwMAotMDAzRkMwMDFGRTAwMDAzRkUwMDdGQzAwMDAzRkY4MUZGODAwMDAxRkZGRkZGMDAwMDAwRkZGRkZFMDAwMDAwN0ZGRkZDMDAwCi0wMDAzRkZGRjAwMDAwMDAwRkZGQzAwMDAwMDAwMUZFMDAwMDAwMDJDNDU3N0MyMzE+NDggRDwwMDAwMDAwMEMwMDAwMDAwMDMKLUMwMDAwMDAwMDdDMDAwMDAwMDFGODAwMDAwMDA3RjgwMDAwMDA3RkY4MDAwMEZGRkZGODAwMDBGRkZGRjgwMDAwRkZGRkYwMAotMDAwRkZGRkYwMDAwMUZGRUZGMDAwMDFGRjBGRjAwMDAwMDAwRkYwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwCi0wMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDA3RjgwMDAwMDAKLTA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRgotRjAwMDAwMDAwRkYwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDNGQzAwMDAwMDAzRkMwCi0wMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDA3RjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDA3RjgwMDAKLTAwMDA3RjgwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMEZGMDAwMDAwMDFGRTAwMDAwMAotMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZDMDAwMDAwMDNGQzAwMDAwMDAzCi1GQzAwMDAwMDA3RjgwMDAwN0ZGRkZGRkY4MDdGRkZGRkZGODA3RkZGRkZGRjgwN0ZGRkZGRkY4MEZGRkZGRkZGMDBGRkZGRkYKLUZGMDAyMjQzNzdDMjMxPkk8MDAwMDAwMUZGMDAwMDAwMDAwRkZGRTAwMDAwMDA3RkZGRjgwMDAwMDFGRkZGRkMwMDAwMDNGCi1GRkZGRTAwMDAwRkZGRkZGRjAwMDAxRkZFMDNGRjgwMDAzRkYwMDBGRjgwMDA3RkMwMDA3RkMwMDBGRjAwMDAzRkMwMDFGQzAKLTAwMDNGQzAwMUY4MDAwMDNGQzAwMEYwMDAwMDNGQzAwMEUwMDAwMDNGQzAwMDYwMDAwMDNGQzAwMDQwMDAwMDNGQzAwMDAwMAotMDAwM0ZDMDAwMDAwMDAwN0Y4MDAwMDAwMDAwN0Y4MDAwMDAwMDAwRkY4MDAwMDAwMDAwRkYwMDAwMDAwMDAxRkUwMDAwMDAwCi0wMDFGRTAwMDAwMDAwMDNGQzAwMDAwMDAwMDdGODAwMDAwMDAwMEZGODAwMDAwMDAwM0ZGMDAwMDAwMDAwRkZFMDAwMDAwMDAKLTdGRjgwMDAwMDAzRkZGRjAwMDAwMDAzRkZGRTAwMDAwMDAzRkZGODAwMDAwMDA3RkZGODAwMDAwMDA3RkZGRTAwMDAwMDA3RgotRkZGMDAwMDAwMDAwMEZGQzAwMDAwMDAwMDNGRTAwMDAwMDAwMDFGRTAwMDAwMDAwMDBGRjAwMDAwMDAwMDBGRjgwMDAwMDAwCi0wMDdGODAwMDAwMDAwMDdGQzAwMDAwMDAwMDdGQzAwMDAwMDAwMDdGQzAwMDAwMDAwMDdGQzAwMDAwMDAwMDdGQzAwMDAwMDAKLTAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwN0ZDMDAwMDAwMDAwRkY4MDAwMDAwMDAwRkY4MDAwMDAwMAotMDBGRjgwMjAwMDAwMDFGRjAwNjAwMDAwMDFGRjAwNzAwMDAwMDNGRTAwNzgwMDAwMDNGRTAwRjgwMDAwMDdGQzAwRkMwMDAwCi0wRkY4MDBGRTAwMDAxRkYwMDA3RjgwMDAzRkYwMDAzRkUwMDBGRkUwMDAxRkZDMDNGRkMwMDAxRkZGRkZGRjAwMDAwN0ZGRkYKLUZFMDAwMDAzRkZGRkY4MDAwMDAxRkZGRkYwMDAwMDAwN0ZGRjgwMDAwMDAwMDdGQzAwMDAwMDJFNDU3QUMyMzE+NTEKLUQ8MDAwMUZGRkZGRkYwMDAwMDAwMDNGRkZGRkZGRTAwMDAwMDAzRkZGRkZGRkZDMDAwMDAwM0ZGRkZGRkZGRjAwMDAwMDNGRgotRkZGRkZGRjgwMDAwMDdGRkZGRkZGRkZDMDAwMDA3RjgwMDAwN0ZGRTAwMDAwN0Y4MDAwMDBGRkYwMDAwMDdGODAwMDAwM0ZGCi04MDAwMDdGODAwMDAwMEZGODAwMDBGRjAwMDAwMDA3RkMwMDAwRkYwMDAwMDAwN0ZDMDAwMEZGMDAwMDAwMDNGRTAwMDBGRjAKLTAwMDAwMDNGRTAwMDBGRjAwMDAwMDAzRkUwMDAxRkUwMDAwMDAwMUZFMDAwMUZFMDAwMDAwMDFGRTAwMDFGRTAwMDAwMDAxRgotRTAwMDFGRTAwMDAwMDAzRkUwMDAxRkUwMDAwMDAwM0ZDMDAwM0ZDMDAwMDAwMDNGQzAwMDNGQzAwMDAwMDA3RkMwMDAzRkMwCi0wMDAwMDA3RjgwMDAzRkMwMDAwMDAwRkY4MDAwN0Y4MDAwMDAwMUZGMDAwMDdGODAwMDAwMDNGRTAwMDA3RjgwMDAwMDA3RkUKLTAwMDA3RjgwMDAwMDBGRkMwMDAwN0Y4MDAwMDAzRkY4MDAwMEZGMDAwMDAwRkZGMDAwMDBGRjAwMDAwRkZGQzAwMDAwRkZGRgotRkZGRkZGODAwMDAwRkZGRkZGRkZGRTAwMDAwMEZGRkZGRkZGRjgwMDAwMDFGRkZGRkZGRkUwMDAwMDAxRkZGRkZGRkYwMDAwCi0wMDAxRkZGRkZGRkMwMDAwMDAwMUZFMDAwMUZDMDAwMDAwMDNGQzAwMDFGRTAwMDAwMDAzRkMwMDAxRkUwMDAwMDAwM0ZDMDAKLTAwRkUwMDAwMDAwM0ZDMDAwMEZGMDAwMDAwMDNGQzAwMDA3RjAwMDAwMDA3RjgwMDAwN0Y4MDAwMDAwN0Y4MDAwMDdGODAwMAotMDAwN0Y4MDAwMDNGODAwMDAwMDdGODAwMDAzRkMwMDAwMDA3RjgwMDAwM0ZDMDAwMDAwRkYwMDAwMDFGQzAwMDAwMEZGMDAwCi0wMDFGRTAwMDAwMEZGMDAwMDAxRkUwMDAwMDBGRjAwMDAwMEZGMDAwMDAwRkYwMDAwMDBGRjAwMDAwMUZFMDAwMDAwRkYwMDAKLTAwMUZFMDAwMDAwN0Y4MDAwMDFGRTAwMDAwMDdGODAwMDAxRkUwMDAwMDAzRjgwMDAwM0ZDMDAwMDAwM0ZDMDAwMDNGQzAwMAotMDAwM0ZDMDAwMDNGQzAwMDAwMDFGQzAwMDAzRkMwMDAwMDAxRkUwMDAwM0ZDMDAwMDAwMUZFMDAwMDdGODAwMDAwMDBGRjAwCi0wMDdGODAwMDAwMDBGRjAwMDA3RjgwMDAwMDAwRkYwMDAwN0Y4MDAwMDAwMDdGODAwMDdGODAwMDAwMDA3RjgwMDBGRjAwMDAKLTAwMDA3RjgwMDBGRjAwMDAwMDAwM0ZDMDAwM0I0NTc3QzQzRj44MiBEPDAwMDAwRkZDMDAwMDAwRkZGRjgwMDAwM0ZGRkZDMAotMDAxRkZGRkZGMDAwM0ZGRkZGRjgwMDNGRkZGRkY4MDA3RkUwMEZGQzAwN0YwMDAzRkUwMDc4MDAwM0ZFMDA2MDAwMDFGRTAwCi0wMDAwMDFGRTAwMDAwMDAxRkYwMDAwMDAwMEZGMDAwMDAwMDBGRjAwMDAwMDAwRkYwMDAwMDAwMUZFMDAwMDAwMDFGRTAwMDAKLTAwMDFGRTAwMDAwMDAxRkUwMDAwMDAwMUZFMDAwMDAwMDNGQzAwMDAwRkZGRkMwMDAxRkZGRkZDMDAwRkZGRkZGQzAwM0ZGRgotRkZGQzAwRkZGRkZGRjgwM0ZGRkMwN0Y4MDdGRjgwMDdGODBGRkMwMDA3RjgxRkYwMDAwN0Y4M0ZDMDAwMEZGMDNGODAwMDBGCi1GMDdGMDAwMDBGRjA3RjAwMDAwRkYwRkUwMDAwMUZFMEZFMDAwMDFGRTBGRTAwMDAzRkUwRkYwMDAwM0ZFMEZGMDAwMEZGRTAKLUZGODAwM0ZGQzA3RkYwMUZGRkMwN0ZGRkZGRkZDMDdGRkZGRkZGQzAzRkZGRkYzRkMwMUZGRkZDN0Y4MDBGRkZFMDdGODAwMwotRkUwMDAwMDAyODJGN0FBRDJGPjk3IEQ8MDAwMDA3RjgwMDAwMDAzRkZFMDAwMDAwRkZGRjgwMDAwM0ZGRkZDMDAwMDdGRkZGCi1FMDAwMEZGRkZGRjAwMDNGRjgxRkYwMDA3RkMwMDdGODAwRkY4MDAzRjgwMEZFMDAwMUY4MDFGQzAwMDFGODAzRjgwMDAwRkMKLTA3RjAwMDAwRkMwN0YwMDAwMEZDMEZFMDAwMDBGQzBGQzAwMDAwN0MxRkMwMDAwMDdDMUY4MDAwMDA3QzNGRkZGRkZGRkMzRgotRkZGRkZGRjgzRkZGRkZGRkY4N0ZGRkZGRkZGODdGRkZGRkZGRjg3RkZGRkZGRkY4N0UwMDAwMDAwMEZFMDAwMDAwMDBGRTAwCi0wMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDBGRTAwMDAwMDAwRkUwMDAwMDAwMEZFMDAwMDAwMDA3RjAwMDAKLTAwMDA3RjAwMDAwMDAwN0YwMDAwMDAwMDdGODAwMDAwNDAzRkMwMDAwMUMwM0ZFMDAwMDdDMDFGRjAwMDNGODAwRkZDMDFGRgotODAwRkZGRkZGRjgwMDdGRkZGRkYwMDAzRkZGRkZDMDAwMEZGRkZGMDAwMDAzRkZGODAwMDAwMEZGQzAwMDAyNjJGNzlBRDJCCi0+MTAxIEQ8MDAwMUZFMDAwMUZFMDAwMUZFMDAwMUZFMDAwMUZFMDAwM0ZDMDAwM0ZDMDAwM0ZDMDAwM0ZDMDAwN0Y4MDAwNwotRjgwMDA3RjgwMDA3RjgwMDA3RjgwMDBGRjAwMDBGRjAwMDBGRjAwMDBGRjAwMDBGRjAwMDFGRTAwMDFGRTAwMDFGRTAwMDFGCi1FMDAwMUZFMDAwM0ZDMDAwM0ZDMDAwM0ZDMDAwM0ZDMDAwN0Y4MDAwN0Y4MDAwN0Y4MDAwN0Y4MDAwN0Y4MDAwRkYwMDAwRkYKLTAwMDBGRjAwMDBGRjAwMDBGRjAwMDFGRTAwMDFGRTAwMDFGRTAwMDFGRTAwMDNGQzAwMDNGQzAwMDNGQzAwMDNGQzAwMDNGQwotMDAwN0Y4MDAwN0Y4MDAwN0Y4MDAwN0Y4MDAwN0Y4MDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAwRkYwMDAxRkUwMDAxRkUwCi0wMDFGRTAwMDFGRTAwMDNGQzAwMDNGQzAwMDNGQzAwMDNGQzAwMDNGQzAwMDdGODAwMDdGODAwMDdGODAwMDdGODAwMDdGODAKLTAwRkYwMDAwRkYwMDAwMTc0OTc5QzgxNz4xMDggRDwwMDAwMUZGODAwMDAwMEZGRkYwMDAwMDNGRkZGQzAwMDBGRkZGRkYwCi0wMDFGRkZGRkY4MDAzRkZGRkZGMDAwN0ZDMDFGRjAwMEZGMDAwM0YwMDBGRTAwMDBFMDAxRkMwMDAwNjAwMUZDMDAwMDAwMDMKLUY4MDAwMDAwMDNGODAwMDAwMDAzRjgwMDAwMDAwM0Y4MDAwMDAwMDNGQzAwMDAwMDAzRkMwMDAwMDAwM0ZFMDAwMDAwMDNGRgotRTAwMDAwMDFGRkZFMDAwMDAxRkZGRkMwMDAwMEZGRkZGMDAwMDA3RkZGRjgwMDAwM0ZGRkZDMDAwMDFGRkZGRTAwMDAwN0ZGCi1GRjAwMDAwMEZGRkYwMDAwMDAwN0ZGODAwMDAwMDFGRjgwMDAwMDAwN0Y4MDAwMDAwMDdGODAwMDAwMDAzRjgwMDAwMDAwM0YKLTgwMDAwMDAwM0Y4MDAwMDAwMDdGMDAwMDAwMDA3RjAwMjAwMDAwN0YwMDMwMDAwMEZFMDA3QzAwMDFGRTAwN0YwMDAzRkMwMAotN0ZFMDFGRjgwMEZGRkZGRkYwMDBGRkZGRkZFMDAwN0ZGRkZGQzAwMDFGRkZGRjgwMDAwN0ZGRkUwMDAwMDA3RkUwMDAwMDI1Ci0yRjdDQUQyNT4xMTUgRCBFCi0lRW5kRFZJUFNCaXRtYXBGb250Ci0lRFZJUFNCaXRtYXBGb250OiBGdCBlY3NzMjQ4OCAyNC44OCAxNQotL0Z0IDE1IDEyMiBkZls8RkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAKLTAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMAotMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwCi1GRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMAotMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwCi0wMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAKLTAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMAotRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAKLTAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMAotMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwCi0wMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAKLUZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwCi0wMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAKLTAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMAotMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwCi1GRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMAotMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwCi0wMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAKLTAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMAotRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAKLTAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMAotMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwCi0wMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAKLUZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwCi0wMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAKLTAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMAotMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwCi1GRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMAotMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwCi0wMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkY4MEZGRkZGRkZGRkZGRkZGRkZGRjgwRkZGRkZGRkYKLUZGRkZGRkZGRkY4MEZGRkZGRkZGRkZGRkZGRkZGRjgwRkZGRkZGRkZGRkZGRkZGRkZGODBGRkZGRkZGRkZGRkZGRkZGRkY4MAotRkZGRkZGRkZGRkZGRkZGRkZGODBGRkZGRkZGRkZGRkZGRkZGRkY4MEZGRkZGRkZGRkZGRkZGRkZGRjgwRkZGRkZGRkZGRkZGCi1GRkZGRkY4MD43MyAxNDAgMTA4IDI2NyAxMDIgNzYgRFs8RkZGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRkZGQzBGRkZGMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGRkMwRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRkZGQzBGRkZGMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwM0ZGRkMwRkZGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkZGQzBGRkZGODAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwN0ZGRkMwRkZGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkZGQzBGRkZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkYKLUMwRkZGRkMwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGQzBGRkZGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMUZGRkZDMEZGRkZFMAotMDAwMDAwMDAwMDAwMDAwMDAwMDFGRkZGQzBGRkRGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMUZFRkZDMEZGREZGMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDNGRUZGQzBGRkNGRjAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZDRkZDMEZGQ0ZGMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDNGQ0ZGQzBGRkNGRjgwMDAwMDAwMDAwMDAwMDAwMDAwN0ZDRkZDMEZGQ0ZGODAwMDAwMDAwMDAwMDAwMDAwMDA3RkNGRgotQzBGRkM3RkMwMDAwMDAwMDAwMDAwMDAwMDAwRkY4RkZDMEZGQzdGQzAwMDAwMDAwMDAwMDAwMDAwMDBGRjhGRkMwRkZDN0ZDCi0wMDAwMDAwMDAwMDAwMDAwMDAwRkY4RkZDMEZGQzNGRTAwMDAwMDAwMDAwMDAwMDAwMDFGRjBGRkMwRkZDM0ZFMDAwMDAwMDAKLTAwMDAwMDAwMDAxRkYwRkZDMEZGQzNGRTAwMDAwMDAwMDAwMDAwMDAwMDFGRjBGRkMwRkZDMUZGMDAwMDAwMDAwMDAwMDAwMAotMDAzRkUwRkZDMEZGQzFGRjAwMDAwMDAwMDAwMDAwMDAwMDNGRTBGRkMwRkZDMUZGMDAwMDAwMDAwMDAwMDAwMDAwM0ZFMEZGCi1DMEZGQzBGRjgwMDAwMDAwMDAwMDAwMDAwMDdGQzBGRkMwRkZDMEZGODAwMDAwMDAwMDAwMDAwMDAwN0ZDMEZGQzBGRkMwRkYKLUMwMDAwMDAwMDAwMDAwMDAwMEZGQzBGRkMwRkZDMDdGQzAwMDAwMDAwMDAwMDAwMDAwRkY4MEZGQzBGRkMwN0ZDMDAwMDAwMAotMDAwMDAwMDAwMEZGODBGRkMwRkZDMDdGRTAwMDAwMDAwMDAwMDAwMDAxRkY4MEZGQzBGRkMwM0ZFMDAwMDAwMDAwMDAwMDAwCi0wMUZGMDBGRkMwRkZDMDNGRTAwMDAwMDAwMDAwMDAwMDAxRkYwMEZGQzBGRkMwM0ZGMDAwMDAwMDAwMDAwMDAwMDNGRjAwRkYKLUMwRkZDMDFGRjAwMDAwMDAwMDAwMDAwMDAzRkUwMEZGQzBGRkMwMUZGODAwMDAwMDAwMDAwMDAwMDdGRTAwRkZDMEZGQzAwRgotRjgwMDAwMDAwMDAwMDAwMDA3RkMwMEZGQzBGRkMwMEZGODAwMDAwMDAwMDAwMDAwMDdGQzAwRkZDMEZGQzAwRkZDMDAwMDAwCi0wMDAwMDAwMDBGRkMwMEZGQzBGRkMwMDdGQzAwMDAwMDAwMDAwMDAwMEZGODAwRkZDMEZGQzAwN0ZDMDAwMDAwMDAwMDAwMDAKLTBGRjgwMEZGQzBGRkMwMDdGRTAwMDAwMDAwMDAwMDAwMUZGODAwRkZDMEZGQzAwM0ZFMDAwMDAwMDAwMDAwMDAxRkYwMDBGRgotQzBGRkMwMDNGRjAwMDAwMDAwMDAwMDAwM0ZGMDAwRkZDMEZGQzAwM0ZGMDAwMDAwMDAwMDAwMDAzRkYwMDBGRkMwRkZDMDAxCi1GRjAwMDAwMDAwMDAwMDAwM0ZFMDAwRkZDMEZGQzAwMUZGODAwMDAwMDAwMDAwMDA3RkUwMDBGRkMwRkZDMDAxRkY4MDAwMDAKLTAwMDAwMDAwN0ZFMDAwRkZDMEZGQzAwMEZGODAwMDAwMDAwMDAwMDA3RkMwMDBGRkMwRkZDMDAwRkZDMDAwMDAwMDAwMDAwMAotRkZDMDAwRkZDMEZGQzAwMDdGQzAwMDAwMDAwMDAwMDBGRjgwMDBGRkMwRkZDMDAwN0ZDMDAwMDAwMDAwMDAwMEZGODAwMEZGCi1DMEZGQzAwMDdGRTAwMDAwMDAwMDAwMDFGRjgwMDBGRkMwRkZDMDAwM0ZFMDAwMDAwMDAwMDAwMUZGMDAwMEZGQzBGRkMwMDAKLTNGRjAwMDAwMDAwMDAwMDNGRjAwMDBGRkMwRkZDMDAwM0ZGMDAwMDAwMDAwMDAwM0ZGMDAwMEZGQzBGRkMwMDAxRkYwMDAwMAotMDAwMDAwMDNGRTAwMDBGRkMwRkZDMDAwMUZGODAwMDAwMDAwMDAwN0ZFMDAwMEZGQzBGRkMwMDAxRkY4MDAwMDAwMDAwMDA3Ci1GRTAwMDBGRkMwRkZDMDAwMEZGODAwMDAwMDAwMDAwN0ZDMDAwMEZGQzBGRkMwMDAwRkZDMDAwMDAwMDAwMDBGRkMwMDAwRkYKLUMwRkZDMDAwMEZGQzAwMDAwMDAwMDAwRkZDMDAwMEZGQzBGRkMwMDAwN0ZFMDAwMDAwMDAwMDFGRjgwMDAwRkZDMEZGQzAwMAotMDdGRTAwMDAwMDAwMDAxRkY4MDAwMEZGQzBGRkMwMDAwM0ZFMDAwMDAwMDAwMDFGRjAwMDAwRkZDMEZGQzAwMDAzRkYwMDAwCi0wMDAwMDAzRkYwMDAwMEZGQzBGRkMwMDAwM0ZGMDAwMDAwMDAwMDNGRjAwMDAwRkZDMEZGQzAwMDAxRkYwMDAwMDAwMDAwM0YKLUUwMDAwMEZGQzBGRkMwMDAwMUZGODAwMDAwMDAwMDdGRTAwMDAwRkZDMEZGQzAwMDAxRkY4MDAwMDAwMDAwN0ZFMDAwMDBGRgotQzBGRkMwMDAwMEZGODAwMDAwMDAwMDdGQzAwMDAwRkZDMEZGQzAwMDAwRkZDMDAwMDAwMDAwRkZDMDAwMDBGRkMwRkZDMDAwCi0wMDdGQzAwMDAwMDAwMEZGODAwMDAwRkZDMEZGQzAwMDAwN0ZFMDAwMDAwMDAxRkY4MDAwMDBGRkMwRkZDMDAwMDA3RkUwMDAKLTAwMDAwMUZGODAwMDAwRkZDMEZGQzAwMDAwM0ZFMDAwMDAwMDAxRkYwMDAwMDBGRkMwRkZDMDAwMDAzRkYwMDAwMDAwMDNGRgotMDAwMDAwRkZDMEZGQzAwMDAwM0ZGMDAwMDAwMDAzRkYwMDAwMDBGRkMwRkZDMDAwMDAxRkYwMDAwMDAwMDNGRTAwMDAwMEZGCi1DMEZGQzAwMDAwMUZGODAwMDAwMDA3RkUwMDAwMDBGRkMwRkZDMDAwMDAxRkY4MDAwMDAwMDdGRTAwMDAwMEZGQzBGRkMwMDAKLTAwMEZGODAwMDAwMDA3RkMwMDAwMDBGRkMwRkZDMDAwMDAwRkZDMDAwMDAwMEZGQzAwMDAwMEZGQzBGRkMwMDAwMDA3RkMwMAotMDAwMDBGRjgwMDAwMDBGRkMwRkZDMDAwMDAwN0ZFMDAwMDAwMUZGODAwMDAwMEZGQzBGRkMwMDAwMDA3RkUwMDAwMDAxRkY4Ci0wMDAwMDBGRkMwRkZDMDAwMDAwM0ZFMDAwMDAwMUZGMDAwMDAwMEZGQzBGRkMwMDAwMDAzRkYwMDAwMDAzRkYwMDAwMDAwRkYKLUMwRkZDMDAwMDAwM0ZGMDAwMDAwM0ZGMDAwMDAwMEZGQzBGRkMwMDAwMDAxRkYwMDAwMDAzRkUwMDAwMDAwRkZDMEZGQzAwMAotMDAwMUZGODAwMDAwN0ZFMDAwMDAwMEZGQzBGRkMwMDAwMDAxRkY4MDAwMDA3RkUwMDAwMDAwRkZDMEZGQzAwMDAwMDBGRjgwCi0wMDAwN0ZDMDAwMDAwMEZGQzBGRkMwMDAwMDAwRkZDMDAwMDBGRkMwMDAwMDAwRkZDMEZGQzAwMDAwMDA3RkMwMDAwMEZGODAKLTAwMDAwMEZGQzBGRkMwMDAwMDAwN0ZFMDAwMDFGRjgwMDAwMDAwRkZDMEZGQzAwMDAwMDA3RkUwMDAwMUZGODAwMDAwMDBGRgotQzBGRkMwMDAwMDAwM0ZFMDAwMDFGRjAwMDAwMDAwRkZDMEZGQzAwMDAwMDAzRkYwMDAwM0ZGMDAwMDAwMDBGRkMwRkZDMDAwCi0wMDAwM0ZGMDAwMDNGRjAwMDAwMDAwRkZDMEZGQzAwMDAwMDAxRkYwMDAwM0ZFMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDFGRjgKLTAwMDdGRTAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwRkY4MDAwN0ZDMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDBGRjgwMDA3RkMwMAotMDAwMDAwRkZDMEZGQzAwMDAwMDAwRkZDMDAwRkZDMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDA3RkMwMDBGRjgwMDAwMDAwMEZGCi1DMEZGQzAwMDAwMDAwN0ZDMDAwRkY4MDAwMDAwMDBGRkMwRkZDMDAwMDAwMDA3RkUwMDFGRjgwMDAwMDAwMEZGQzBGRkMwMDAKLTAwMDAwM0ZFMDAxRkYwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAzRkYwMDNGRjAwMDAwMDAwMEZGQzBGRkMwMDAwMDAwMDFGRgotMDAzRkUwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAxRkYwMDNGRTAwMDAwMDAwMEZGQzBGRkMwMDAwMDAwMDFGRjgwN0ZFMDAwCi0wMDAwMDBGRkMwRkZDMDAwMDAwMDAwRkY4MDdGQzAwMDAwMDAwMEZGQzBGRkMwMDAwMDAwMDBGRjgwN0ZDMDAwMDAwMDAwRkYKLUMwRkZDMDAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwMEZGQzBGRkMwMDAwMDAwMDA3RkMwRkY4MDAwMDAwMDAwRkZDMEZGQzAwMAotMDAwMDAwN0ZDMEZGODAwMDAwMDAwMEZGQzBGRkMwMDAwMDAwMDA3RkUxRkY4MDAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwMDNGCi1FMUZGMDAwMDAwMDAwMEZGQzBGRkMwMDAwMDAwMDAzRkUxRkYwMDAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwMDFGRjNGRTAwMDAKLTAwMDAwMEZGQzBGRkMwMDAwMDAwMDAxRkYzRkUwMDAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwMDFGRjNGRTAwMDAwMDAwMDBGRgotQzBGRkMwMDAwMDAwMDAwRkYzRkMwMDAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwMDBGRkZGQzAwMDAwMDAwMDBGRkMwRkZDMDAwCi0wMDAwMDAwRkZGRkMwMDAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwMDA3RkZGODAwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAwMDcKLUZGRjgwMDAwMDAwMDAwRkZDMEZGQzAwMDAwMDAwMDAzRkZGMDAwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAwMDNGRkYwMDAwMAotMDAwMDAwRkZDMEZGQzAwMDAwMDAwMDAzRkZGMDAwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAwMDFGRkUwMDAwMDAwMDAwMEZGCi1DMEZGQzAwMDAwMDAwMDAxRkZFMDAwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAwMDFGRkUwMDAwMDAwMDAwMEZGQzBGRkMwMDAKLTAwMDAwMDAwRkZDMDAwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGQzBGRkMwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDBGRkMwRkZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGQzA+MTIyCi0xNDAgMTA3IDI2NyAxNjUgSVs8MDAwMDAwMDAwMDAwMEZGRkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRkZGRkZFMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0ZGRkZGRkZGODAwMDAwMDAwMDAwMDAwCi0wMDAwMDFGRkZGRkZGRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDdGRkZGRkZGRkZGODAwMDAwMDAwMDAwMDAwMDAwMUZGRkZGRkYKLUZGRkZFMDAwMDAwMDAwMDAwMDAwMDA3RkZGRkZGRkZGRkZGODAwMDAwMDAwMDAwMDAwMDFGRkZGRkZGRkZGRkZGRTAwMDAwMAotMDAwMDAwMDAwM0ZGRkZGODAwN0ZGRkZGMDAwMDAwMDAwMDAwMDAwN0ZGRkY4MDAwMDdGRkZGODAwMDAwMDAwMDAwMDAxRkZGCi1GQzAwMDAwMEZGRkZFMDAwMDAwMDAwMDAwMDNGRkZFMDAwMDAwMDFGRkZGMDAwMDAwMDAwMDAwMDdGRkY4MDAwMDAwMDA3RkYKLUY4MDAwMDAwMDAwMDAwRkZGRTAwMDAwMDAwMDFGRkZDMDAwMDAwMDAwMDAxRkZGQzAwMDAwMDAwMDBGRkZFMDAwMDAwMDAwMAotMDNGRkYwMDAwMDAwMDAwMDNGRkYwMDAwMDAwMDAwMDdGRkUwMDAwMDAwMDAwMDFGRkY4MDAwMDAwMDAwMEZGRkMwMDAwMDAwCi0wMDAwMEZGRkMwMDAwMDAwMDAxRkZGMDAwMDAwMDAwMDAwMDNGRkUwMDAwMDAwMDAzRkZFMDAwMDAwMDAwMDAwMDFGRkYwMDAKLTAwMDAwMDdGRkMwMDAwMDAwMDAwMDAwMEZGRjgwMDAwMDAwMEZGRjgwMDAwMDAwMDAwMDAwMDdGRkMwMDAwMDAwMEZGRjAwMAotMDAwMDAwMDAwMDAwM0ZGQzAwMDAwMDAxRkZFMDAwMDAwMDAwMDAwMDAwMUZGRTAwMDAwMDAzRkZFMDAwMDAwMDAwMDAwMDAwCi0xRkZGMDAwMDAwMDNGRkMwMDAwMDAwMDAwMDAwMDAwRkZGMDAwMDAwMDdGRjgwMDAwMDAwMDAwMDAwMDAwN0ZGODAwMDAwMEYKLUZGMDAwMDAwMDAwMDAwMDAwMDAzRkZDMDAwMDAwRkZGMDAwMDAwMDAwMDAwMDAwMDAzRkZDMDAwMDAxRkZFMDAwMDAwMDAwMAotMDAwMDAwMDFGRkUwMDAwMDNGRkMwMDAwMDAwMDAwMDAwMDAwMDBGRkYwMDAwMDNGRkMwMDAwMDAwMDAwMDAwMDAwMDBGRkYwCi0wMDAwN0ZGODAwMDAwMDAwMDAwMDAwMDAwMDdGRjgwMDAwN0ZGODAwMDAwMDAwMDAwMDAwMDAwMDdGRjgwMDAwRkZGMDAwMDAKLTAwMDAwMDAwMDAwMDAwM0ZGQzAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwMUZGQzAwMDFGRkUwMDAwMDAwMDAwMDAwMDAwMAotMDAxRkZFMDAwMUZGRTAwMDAwMDAwMDAwMDAwMDAwMDAxRkZFMDAwMUZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwM0ZGCi1DMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkYwMDAzRkY4MDAwMDAwMDAwMDAwMDAwMDAwMDA3RkYwMDA3RkY4MDAwMDAwMDAwMDAKLTAwMDAwMDAwMDdGRjgwMDdGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGRjgwMDdGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGRgotODAwRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGQzAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUZGQzAwRkZFMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAxRkZDMDFGRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRkZFMDFGRkUwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDFGRkUwMUZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMUZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwM0ZGQwotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRjAzRkZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRjAzRkY4MDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwN0ZGMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0ZGMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0YKLUYwN0ZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkY4N0ZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkY4N0ZGODAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDdGRjg3RkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdGRjg3RkYwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwM0ZGODdGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGODdGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGOEZGRjAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRkZDRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRkZDRkZGMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDNGRkNGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGRkNGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGCi1GQ0ZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGQ0ZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGQ0ZGRjAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAzRkZDRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRkZDRkZGMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDNGRkNGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGRkNGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGRkNGRkYwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGQ0ZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGQ0ZGRjAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAzRkZDRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRkZDRkZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RgotRkNGRkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdGRkNGRkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdGRkM3RkY4MDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwN0ZGODdGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0ZGODdGRjgwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDA3RkY4N0ZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkY4N0ZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkY4N0ZGQwotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRjg3RkZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRjgzRkZDMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwRkZGMDNGRkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGMDNGRkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYKLUYwM0ZGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGRkYwMUZGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGRkUwMUZGRTAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMUZGRTAxRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGRTAxRkZGMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAzRkZFMDBGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRkZDMDBGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRkZDMDBGRkYKLTgwMDAwMDAwMDAwMDAwMDAwMDAwMDdGRkMwMDdGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDdGRjgwMDdGRkMwMDAwMDAwMDAwMAotMDAwMDAwMDAwRkZGODAwN0ZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGODAwM0ZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGCi0wMDAzRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDFGRkYwMDAzRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDFGRkYwMDAxRkZGMDAwMDAKLTAwMDAwMDAwMDAwMDAwM0ZGRTAwMDFGRkYwMDAwMDAwMDAwMDAwMDAwMDAwM0ZGRTAwMDBGRkY4MDAwMDAwMDAwMDAwMDAwMAotMDA3RkZDMDAwMEZGRjgwMDAwMDAwMDAwMDAwMDAwMDA3RkZDMDAwMDdGRkMwMDAwMDAwMDAwMDAwMDAwMDBGRkY4MDAwMDdGCi1GQzAwMDAwMDAwMDAwMDAwMDAwMEZGRjgwMDAwM0ZGRTAwMDAwMDAwMDAwMDAwMDAwMUZGRjAwMDAwM0ZGRTAwMDAwMDAwMDAKLTAwMDAwMDAxRkZGMDAwMDAxRkZGMDAwMDAwMDAwMDAwMDAwMDAzRkZFMDAwMDAwRkZGODAwMDAwMDAwMDAwMDAwMDA3RkZDMAotMDAwMDBGRkY4MDAwMDAwMDAwMDAwMDAwMDdGRkMwMDAwMDA3RkZDMDAwMDAwMDAwMDAwMDAwMEZGRjgwMDAwMDA3RkZFMDAwCi0wMDAwMDAwMDAwMDAxRkZGODAwMDAwMDNGRkYwMDAwMDAwMDAwMDAwMDAzRkZGMDAwMDAwMDFGRkY4MDAwMDAwMDAwMDAwMDAKLTdGRkUwMDAwMDAwMEZGRjgwMDAwMDAwMDAwMDAwMDdGRkMwMDAwMDAwMEZGRkMwMDAwMDAwMDAwMDAwMEZGRkMwMDAwMDAwMAotN0ZGRTAwMDAwMDAwMDAwMDAxRkZGODAwMDAwMDAwM0ZGRjAwMDAwMDAwMDAwMDAzRkZGMDAwMDAwMDAwMUZGRjgwMDAwMDAwCi0wMDAwMDdGRkUwMDAwMDAwMDAwRkZGRTAwMDAwMDAwMDAwMUZGRkMwMDAwMDAwMDAwN0ZGRjAwMDAwMDAwMDAwM0ZGRjgwMDAKLTAwMDAwMDAzRkZGODAwMDAwMDAwMDA3RkZGMDAwMDAwMDAwMDAxRkZGRTAwMDAwMDAwMDFGRkZFMDAwMDAwMDAwMDAwRkZGRgotMDAwMDAwMDAwM0ZGRkMwMDAwMDAwMDAwMDA3RkZGQzAwMDAwMDAwRkZGRjgwMDAwMDAwMDAwMDAzRkZGRjAwMDAwMDAzRkZGCi1GMDAwMDAwMDAwMDAwMDFGRkZGQzAwMDAwMEZGRkZFMDAwMDAwMDAwMDAwMDA3RkZGRjgwMDAwN0ZGRkY4MDAwMDAwMDAwMDAKLTAwMDNGRkZGRjgwMDdGRkZGRjAwMDAwMDAwMDAwMDAwMDFGRkZGRkZGRkZGRkZGRTAwMDAwMDAwMDAwMDAwMDA3RkZGRkZGRgotRkZGRkY4MDAwMDAwMDAwMDAwMDAwMDFGRkZGRkZGRkZGRkUwMDAwMDAwMDAwMDAwMDAwMDA3RkZGRkZGRkZGRjgwMDAwMDAwCi0wMDAwMDAwMDAwMDFGRkZGRkZGRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkZGRkZGRkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAKLTBGRkZGRkZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRkZGRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkMwMDAwMAotMDAwMDAwMDA+MTE4IDE0NiAxMTggMjcwIDEzOSA3OSBEWzxGRkZGRkZGRkZGRkZFMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkYKLTAwMDAwMDAwRkZGRkZGRkZGRkZGRkZFMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkMwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMAotMDBGRkZGRkZGRkZGRkZGRkZGQzAwMDAwRkZGRkZGRkZGRkZGRkZGRkYwMDAwMEZGRkZGRkZGRkZGRkZGRkZGQzAwMDBGRkZGCi1GRkZGRkZGRkZGRkZGRTAwMDBGRkUwMDAwMDAwMDBGRkZGRkY4MDAwRkZFMDAwMDAwMDAwMDdGRkZGQzAwMEZGRTAwMDAwMDAKLTAwMDBGRkZGRTAwMEZGRTAwMDAwMDAwMDAwM0ZGRkYwMDBGRkUwMDAwMDAwMDAwMDBGRkZGODAwRkZFMDAwMDAwMDAwMDAwMwotRkZGQzAwRkZFMDAwMDAwMDAwMDAwMEZGRkUwMEZGRTAwMDAwMDAwMDAwMDA3RkZGMDBGRkUwMDAwMDAwMDAwMDAwM0ZGRjAwCi1GRkUwMDAwMDAwMDAwMDAwMEZGRjgwRkZFMDAwMDAwMDAwMDAwMDA3RkZDMEZGRTAwMDAwMDAwMDAwMDAwM0ZGRTBGRkUwMDAKLTAwMDAwMDAwMDAwM0ZGRTBGRkUwMDAwMDAwMDAwMDAwMDFGRkYwRkZFMDAwMDAwMDAwMDAwMDAwRkZGMEZGRTAwMDAwMDAwMAotMDAwMDAwRkZGOEZGRTAwMDAwMDAwMDAwMDAwMDdGRjhGRkUwMDAwMDAwMDAwMDAwMDAzRkZDRkZFMDAwMDAwMDAwMDAwMDAwCi0zRkZDRkZFMDAwMDAwMDAwMDAwMDAwMUZGQ0ZGRTAwMDAwMDAwMDAwMDAwMDFGRkVGRkUwMDAwMDAwMDAwMDAwMDAxRkZFRkYKLUUwMDAwMDAwMDAwMDAwMDAwRkZFRkZFMDAwMDAwMDAwMDAwMDAwMEZGRUZGRTAwMDAwMDAwMDAwMDAwMDBGRkVGRkUwMDAwMAotMDAwMDAwMDAwMDBGRkZGRkUwMDAwMDAwMDAwMDAwMDAwRkZGRkZFMDAwMDAwMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDAwCi0wMDAwMDdGRkZGRTAwMDAwMDAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDAwMDAwMDcKLUZGRkZFMDAwMDAwMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwMDAwMDAwRkZGRkZFMAotMDAwMDAwMDAwMDAwMDAwRkZGRkZFMDAwMDAwMDAwMDAwMDAwMEZGRUZGRTAwMDAwMDAwMDAwMDAwMDBGRkVGRkUwMDAwMDAwCi0wMDAwMDAwMDBGRkVGRkUwMDAwMDAwMDAwMDAwMDAxRkZFRkZFMDAwMDAwMDAwMDAwMDAwMUZGRUZGRTAwMDAwMDAwMDAwMDAKLTAwMUZGQ0ZGRTAwMDAwMDAwMDAwMDAwMDNGRkNGRkUwMDAwMDAwMDAwMDAwMDAzRkZDRkZFMDAwMDAwMDAwMDAwMDAwN0ZGOAotRkZFMDAwMDAwMDAwMDAwMDAwRkZGOEZGRTAwMDAwMDAwMDAwMDAwMEZGRjBGRkUwMDAwMDAwMDAwMDAwMDFGRkYwRkZFMDAwCi0wMDAwMDAwMDAwMDNGRkUwRkZFMDAwMDAwMDAwMDAwMDAzRkZFMEZGRTAwMDAwMDAwMDAwMDAwN0ZGQzBGRkUwMDAwMDAwMDAKLTAwMDAwRkZGODBGRkUwMDAwMDAwMDAwMDAwM0ZGRjAwRkZFMDAwMDAwMDAwMDAwMDdGRkYwMEZGRTAwMDAwMDAwMDAwMDBGRgotRkUwMEZGRTAwMDAwMDAwMDAwMDNGRkZDMDBGRkUwMDAwMDAwMDAwMDBGRkZGODAwRkZFMDAwMDAwMDAwMDAzRkZGRjAwMEZGCi1FMDAwMDAwMDAwMDBGRkZGRTAwMEZGRTAwMDAwMDAwMDA3RkZGRkMwMDBGRkUwMDAwMDAwMDBGRkZGRkY4MDAwRkZGRkZGRkYKLUZGRkZGRkZGRkUwMDAwRkZGRkZGRkZGRkZGRkZGRkZDMDAwMEZGRkZGRkZGRkZGRkZGRkZGMDAwMDBGRkZGRkZGRkZGRkZGRgotRkZDMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwRkZGRkZGRkZGRkZGRkZGQzAwMDAwMEZGRkZGRkZGRkZGRkZGRTAwMDAwCi0wMEZGRkZGRkZGRkZGRkZGMDAwMDAwMDBGRkZGRkZGRkZGRkZFMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAKLTAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMAotMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwCi0wMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDAKLUZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMAotMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAKLTAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRgotRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwCi0wMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAKLTAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMAotMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwCi0wMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAKLTAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMAotMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwCi1GRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAKLTAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwCi0wMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRkYKLUUwMDAwMDAwMDAwMDAwMDAwMDAwPjg4IDE0MCAxMDcgMjY3IDEyMCBJWzwwMDAwMDAwMDA3RkZGODAwMDAwMDAwMDAwMDAwCi0wMEZGRkZGRkUwMDAwMDAwMDAwMDAwMDdGRkZGRkZGRTAwMDAwMDAwMDAwMDNGRkZGRkZGRkZDMDAwMDAwMDAwMDBGRkZGRkYKLUZGRkZGMDAwMDAwMDAwMDNGRkZGRkZGRkZGRkMwMDAwMDAwMDBGRkZGRkZGRkZGRkZGMDAwMDAwMDAxRkZGRkZGRkZGRkZGRgotQzAwMDAwMDA3RkZGRkZGRkZGRkZGRkYwMDAwMDAwRkZGRkZGRkZGRkZGRkZGQzAwMDAwMUZGRkZGQzAwMDdGRkZGRkUwMDAwCi0wM0ZGRkZDMDAwMDAzRkZGRkUwMDAwMDdGRkZFMDAwMDAwMDNGRkZFMDAwMDBGRkZGMDAwMDAwMDAwRkZGQzAwMDAxRkZGRTAKLTAwMDAwMDAwMUZGQzAwMDAzRkZGODAwMDAwMDAwMDA3RkMwMDAwN0ZGRTAwMDAwMDAwMDAwM0ZDMDAwMDdGRkMwMDAwMDAwMAotMDAwMEZDMDAwMEZGRjgwMDAwMDAwMDAwMDAzQzAwMDFGRkYwMDAwMDAwMDAwMDAwMTgwMDAxRkZFMDAwMDAwMDAwMDAwMDAwCi0wMDAzRkZDMDAwMDAwMDAwMDAwMDAwMDAwM0ZGQzAwMDAwMDAwMDAwMDAwMDAwMDdGRjgwMDAwMDAwMDAwMDAwMDAwMDA3RkYKLTAwMDAwMDAwMDAwMDAwMDAwMDBGRkYwMDAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMAotMDAwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDAwCi0wMDAwMDAxRkZDMDAwMDAwMDAwMDAwMDAwMDAwM0ZGODAwMDAwMDAwMDAwMDAwMDAwMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAKLTNGRjgwMDAwMDAwMDAwMDAwMDAwMDAzRkY4MDAwMDAwMDAwMDAwMDAwMDAwM0ZGODAwMDAwMDAwMDAwMDAwMDAwMDNGRjgwMAotMDAwMDAwMDAwMDAwMDAwMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAzRkY4MDAwMDAwMDAwMDAwMDAwMDAwM0ZGODAwMDAwMDAwCi0wMDAwMDAwMDAwM0ZGQzAwMDAwMDAwMDAwMDAwMDAwMDNGRkMwMDAwMDAwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDAwMDAKLTAwMDAxRkZDMDAwMDAwMDAwMDAwMDAwMDAwMUZGRTAwMDAwMDAwMDAwMDAwMDAwMDFGRkUwMDAwMDAwMDAwMDAwMDAwMDAwRgotRkYwMDAwMDAwMDAwMDAwMDAwMDAwRkZGMDAwMDAwMDAwMDAwMDAwMDAwMEZGRjgwMDAwMDAwMDAwMDAwMDAwMDA3RkZDMDAwCi0wMDAwMDAwMDAwMDAwMDA3RkZDMDAwMDAwMDAwMDAwMDAwMDAwM0ZGRTAwMDAwMDAwMDAwMDAwMDAwMDNGRkYwMDAwMDAwMDAKLTAwMDAwMDAwMDFGRkY4MDAwMDAwMDAwMDAwMDAwMDAxRkZGRTAwMDAwMDAwMDAwMDAwMDAwMEZGRkYwMDAwMDAwMDAwMDAwMAotMDAwMDdGRkY4MDAwMDAwMDAwMDAwMDAwMDAzRkZGRTAwMDAwMDAwMDAwMDAwMDAwM0ZGRkY4MDAwMDAwMDAwMDAwMDAwMDFGCi1GRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkUwMDAwMDAwMDAwMDAwMDAwN0ZGRkZGQzAwMDAwMDAwMDAwMDAwMDNGRkZGRkYKLUMwMDAwMDAwMDAwMDAwMDFGRkZGRkZGQzAwMDAwMDAwMDAwMDAwN0ZGRkZGRkY4MDAwMDAwMDAwMDAwMDNGRkZGRkZGRjgwMAotMDAwMDAwMDAwMDFGRkZGRkZGRkY4MDAwMDAwMDAwMDAwN0ZGRkZGRkZGRjAwMDAwMDAwMDAwMDFGRkZGRkZGRkZDMDAwMDAwCi0wMDAwMDA3RkZGRkZGRkZGMDAwMDAwMDAwMDAwMUZGRkZGRkZGRkMwMDAwMDAwMDAwMDAzRkZGRkZGRkZFMDAwMDAwMDAwMDAKLTAwN0ZGRkZGRkZGODAwMDAwMDAwMDAwMDA3RkZGRkZGRkMwMDAwMDAwMDAwMDAwMDdGRkZGRkZFMDAwMDAwMDAwMDAwMDAwNwotRkZGRkZGODAwMDAwMDAwMDAwMDAwMEZGRkZGRkMwMDAwMDAwMDAwMDAwMDAwRkZGRkZFMDAwMDAwMDAwMDAwMDAwMDFGRkZGCi1GMDAwMDAwMDAwMDAwMDAwMDAzRkZGRjAwMDAwMDAwMDAwMDAwMDAwMEZGRkY4MDAwMDAwMDAwMDAwMDAwMDA3RkZGQzAwMDAKLTAwMDAwMDAwMDAwMDAxRkZGRTAwMDAwMDAwMDAwMDAwMDAwMEZGRkYwMDAwMDAwMDAwMDAwMDAwMDA3RkZGMDAwMDAwMDAwMAotMDAwMDAwMDAxRkZGODAwMDAwMDAwMDAwMDAwMDAwMUZGRjgwMDAwMDAwMDAwMDAwMDAwMDBGRkZDMDAwMDAwMDAwMDAwMDAwCi0wMDA3RkZDMDAwMDAwMDAwMDAwMDAwMDAwM0ZGRTAwMDAwMDAwMDAwMDAwMDAwMDFGRkUwMDAwMDAwMDAwMDAwMDAwMDAxRkYKLUYwMDAwMDAwMDAwMDAwMDAwMDAwRkZGMDAwMDAwMDAwMDAwMDAwMDAwMEZGRjAwMDAwMDAwMDAwMDAwMDAwMDA3RkY4MDAwMAotMDAwMDAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDAwMDAwMDAwMDNGRjgwMDAwMDAwMDAwCi0wMDAwMDAwMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAzRkZDMDAwMDAwMDAwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDAwMDAKLTAwMUZGQzAwMDAwMDAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDAwMDAwMDAwMUZGQwotMDAwMDAwMDAwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAwMDAwMDAxRkZDMDAwMDAwCi0wMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAKLTAwMDAwMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAzRkY4MDAwMDAwMDAwMDAwMDAwMDAwM0ZGODAwMDAwMDAwMDAwMDAwMDAwMAotM0ZGODAwMDAwMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwMDAwMDAwRkZGMDAwCi0wMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDAwMUZGRTAwMDAwMDAwMDAwMDAwMDAwMDFGRkUwMzAwMDAwMDAKLTAwMDAwMDAwMDNGRkMwNzgwMDAwMDAwMDAwMDAwMDAzRkZDMDdDMDAwMDAwMDAwMDAwMDAwN0ZGODA3RjAwMDAwMDAwMDAwMAotMDAwRkZGODA3RkMwMDAwMDAwMDAwMDAwMUZGRjAwN0ZFMDAwMDAwMDAwMDAwMDNGRkUwMDdGRjgwMDAwMDAwMDAwMDA3RkZFCi0wMEZGRkUwMDAwMDAwMDAwMDBGRkZDMDBGRkZGODAwMDAwMDAwMDAzRkZGODAwRkZGRkYwMDAwMDAwMDAwN0ZGRjAwMDdGRkYKLUZFMDAwMDAwMDAxRkZGRTAwMDFGRkZGRkMwMDAwMDAwN0ZGRkMwMDAwRkZGRkZGQzAwMDAwM0ZGRkY4MDAwMDNGRkZGRkZGMAotMDAzRkZGRkYwMDAwMDBGRkZGRkZGRkZGRkZGRkZFMDAwMDAwN0ZGRkZGRkZGRkZGRkZGQzAwMDAwMDFGRkZGRkZGRkZGRkZGCi1GMDAwMDAwMDAzRkZGRkZGRkZGRkZGRTAwMDAwMDAwMEZGRkZGRkZGRkZGRjgwMDAwMDAwMDAzRkZGRkZGRkZGRkUwMDAwMDAKLTAwMDAwN0ZGRkZGRkZGRjgwMDAwMDAwMDAwMDA3RkZGRkZGRkUwMDAwMDAwMDAwMDAwMDdGRkZGRkUwMDAwMDAwMDAwMDAwMAotMDAxRkZGRTAwMDAwMDAwMD44NiAxNDYgMTIwIDI3MCAxMDUgODMgRDwwMDAwMDA3RkZFMDAwMDAwMDAwMDFGRkZGRkUwMDAKLTAwMDAwMEZGRkZGRkY4MDAwMDAwMDdGRkZGRkZGRTAwMDAwMDNGRkZGRkZGRkYwMDAwMDBGRkZGRkZGRkZGQzAwMDAzRkZGRgotRkZGRkZGRTAwMDBGRkZGRkZGRkZGRkYwMDAxRkZGRkZGRkZGRkZGODAwMUZGRkZGMDAwM0ZGRkMwMDFGRkZFMDAwMDA3RkZFCi0wMDFGRkYwMDAwMDAzRkZGMDAwRkY4MDAwMDAwMEZGRjgwMEZFMDAwMDAwMDA3RkY4MDBGODAwMDAwMDAwM0ZGQzAwRTAwMDAKLTAwMDAwM0ZGQzAwODAwMDAwMDAwMDFGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRjAwMDAwMDAwMDAwMDA3RgotRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwM0ZGODAwMDAwMDAwMDAwMDNGRjgwMDAwMDAwMDAwMDAzRkY4MDAwMDAwCi0wMDAwMDAzRkY4MDAwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDAwMUYKLUZDMDAwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDAwMUZGQzAwMDAwMAotMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDAwMUZGQzAwMDAwMDAwMDAwMDFGCi1GQzAwMDAwMDAwMDAwMDFGRkMwMDAwMDAwMDAwMDAxRkZDMDAwMDAwMDAwMDNGRkZGQzAwMDAwMDAwM0ZGRkZGRkMwMDAwMDAKLTBGRkZGRkZGRkMwMDAwMDA3RkZGRkZGRkZDMDAwMDA3RkZGRkZGRkZGQzAwMDAxRkZGRkZGRkZGRkMwMDAwRkZGRkZGRkZGRgotRkMwMDAzRkZGRkZGRkZGRkZDMDAwRkZGRkZGQzAwMUZGQzAwMUZGRkZGMDAwMDFGRkMwMDNGRkZGMDAwMDAxRkZDMDBGRkZGCi04MDAwMDAxRkZDMDFGRkZDMDAwMDAwMUZGQzAzRkZGMDAwMDAwMDFGRkMwN0ZGQzAwMDAwMDAxRkZDMEZGRjAwMDAwMDAwMUYKLUZDMEZGRTAwMDAwMDAwMUZGQzFGRkMwMDAwMDAwMDFGRkMzRkY4MDAwMDAwMDAxRkZDM0ZGMDAwMDAwMDAwMUZGQzdGRTAwMAotMDAwMDAwMUZGQzdGQzAwMDAwMDAwMDFGRkM3RkMwMDAwMDAwMDAxRkZDRkZDMDAwMDAwMDAwMUZGQ0ZGODAwMDAwMDAwMDFGCi1GQ0ZGODAwMDAwMDAwMDFGRkNGRjgwMDAwMDAwMDAxRkZDRkY4MDAwMDAwMDAwMUZGQ0ZGODAwMDAwMDAwMDNGRkNGRjgwMDAKLTAwMDAwMDNGRkNGRjgwMDAwMDAwMDAzRkZDRkZDMDAwMDAwMDAwN0ZGQ0ZGQzAwMDAwMDAwMEZGRkM3RkUwMDAwMDAwMDBGRgotRkM3RkUwMDAwMDAwMDFGRkZDN0ZGMDAwMDAwMDAzRkZGQzdGRjgwMDAwMDAwRkZGRkMzRkZFMDAwMDAwMUZGRkZDM0ZGRjgwCi0wMDAwN0ZGRkZDMUZGRkUwMDAwM0ZGRkZGQzFGRkZGRTAwM0ZGRkRGRkMwRkZGRkZGRkZGRkY5RkZDMDdGRkZGRkZGRkZFMUYKLUZDMDdGRkZGRkZGRkZDMUZGQzAzRkZGRkZGRkZGMDFGRkMwMUZGRkZGRkZGQzAxRkZDMDBGRkZGRkZGRTAwMUZGQzAwM0ZGRgotRkZGMDAwMUZGQzAwMUZGRkZGMDAwMDFGRkMwMDAzRkZDMDAwMDAwMDAwM0U1QTc1RDg1Qj45NwotRDwwMDAwMDAwM0ZGODAwMDAwMDAwMDAwMDAzRkZGRjgwMDAwMDAwMDAwMDBGRkZGRkUwMDAwMDAwMDAwMDNGRkZGRkY4MDAwCi0wMDAwMDAwRkZGRkZGRkUwMDAwMDAwMDAzRkZGRkZGRkY4MDAwMDAwMDA3RkZGRkZGRkZDMDAwMDAwMDBGRkZGRkZGRkZFMDAKLTAwMDAwMUZGRkZGRkZGRkYwMDAwMDAwM0ZGRkUwMEZGRkY4MDAwMDAwN0ZGRTAwMDFGRkZDMDAwMDAwRkZGODAwMDAzRkZFMAotMDAwMDFGRkYwMDAwMDFGRkUwMDAwMDNGRkMwMDAwMDA3RkYwMDAwMDdGRjgwMDAwMDAzRkY4MDAwMDdGRjAwMDAwMDAxRkY4Ci0wMDAwRkZFMDAwMDAwMDBGRkMwMDAxRkZDMDAwMDAwMDA3RkMwMDAxRkY4MDAwMDAwMDAzRkUwMDAzRkYwMDAwMDAwMDAzRkUKLTAwMDNGRTAwMDAwMDAwMDFGRTAwMDdGRTAwMDAwMDAwMDBGRjAwMDdGQzAwMDAwMDAwMDBGRjAwMEZGQzAwMDAwMDAwMDA3RgotMDAwRkY4MDAwMDAwMDAwMDdGODAxRkY4MDAwMDAwMDAwMDdGODAxRkYwMDAwMDAwMDAwMDNGODAxRkYwMDAwMDAwMDAwMDNGCi04MDNGRTAwMDAwMDAwMDAwM0ZDMDNGRTAwMDAwMDAwMDAwMUZDMDNGRTAwMDAwMDAwMDAwMUZDMDNGQzAwMDAwMDAwMDAwMUYKLUMwN0ZDMDAwMDAwMDAwMDAxRkMwN0ZDMDAwMDAwMDAwMDAxRkMwN0Y4MDAwMDAwMDAwMDAwRkUwN0Y4MDAwMDAwMDAwMDAwRgotRTA3RkZGRkZGRkZGRkZGRkZGRTBGRkZGRkZGRkZGRkZGRkZGRTBGRkZGRkZGRkZGRkZGRkZGRTBGRkZGRkZGRkZGRkZGRkZGCi1FMEZGRkZGRkZGRkZGRkZGRkZFMEZGRkZGRkZGRkZGRkZGRkZFMEZGRkZGRkZGRkZGRkZGRkZFMEZGRkZGRkZGRkZGRkZGRkYKLUUwRkYwMDAwMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDAwMAotMDBGRjAwMDAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwCi0wMDdGODAwMDAwMDAwMDAwMDAwMDdGODAwMDAwMDAwMDAwMDAwMDdGODAwMDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMDAKLTAwN0ZDMDAwMDAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwMDAwMAotMDAzRkUwMDAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwCi0wMDBGRjgwMDAwMDAwMDAwMDAwMDBGRkMwMDAwMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDAwMDA3RkUwMDAwMDAwMDAwMDAKLTAwMDNGRTAwMDAwMDAwMDAwMDAwMDNGRjAwMDAwMDAwMDAwMDAwMDFGRjgwMDAwMDAwMDAwMDIwMDFGRkMwMDAwMDAwMDAwMAotNjAwMEZGRTAwMDAwMDAwMDAxRTAwMDdGRjAwMDAwMDAwMDAzRTAwMDdGRjgwMDAwMDAwMDBGRTAwMDNGRkMwMDAwMDAwMDFGCi1GMDAwMUZGRTAwMDAwMDAwN0ZGMDAwMEZGRjgwMDAwMDAxRkZGMDAwMDdGRkUwMDAwMDBGRkZGMDAwMDdGRkY4MDAwMDdGRkYKLUUwMDAwMUZGRkY4MDBGRkZGRkMwMDAwMEZGRkZGRkZGRkZGRjAwMDAwMDdGRkZGRkZGRkZGRTAwMDAwMDNGRkZGRkZGRkZGOAotMDAwMDAwMEZGRkZGRkZGRkUwMDAwMDAwMDdGRkZGRkZGRkMwMDAwMDAwMDFGRkZGRkZGRTAwMDAwMDAwMDA3RkZGRkZGODAwCi0wMDAwMDAwMDBGRkZGRjgwMDAwMDAwMDAwMDAwRkZGMDAwMDAwMDQ0NUE3N0Q4NTQ+MTAxCi1EWzxGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMAotMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAKLTAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwCi0wMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMAotMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAKLTAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwCi0wMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwRkZFMAotMDAwMEZGRjAwMDAwRkZFMDAwMEZGRkZGMDAwMEZGRTAwMDdGRkZGRkUwMDBGRkUwMDFGRkZGRkZGODAwRkZFMDAzRkZGRkZGCi1GQzAwRkZFMDBGRkZGRkZGRkYwMEZGRTAxRkZGRkZGRkZGODBGRkUwM0ZGRkZGRkZGRkMwRkZFMEZGRkZGRkZGRkZFMEZGRTEKLUZGRjAwM0ZGRkZFMEZGRTNGRjgwMDAzRkZGRjBGRkUzRkUwMDAwMDdGRkY4RkZFN0Y4MDAwMDAzRkZGOEZGRUZGMDAwMDAwMAotRkZGOEZGRkZFMDAwMDAwMDdGRkNGRkZGQzAwMDAwMDA3RkZDRkZGRjgwMDAwMDAwM0ZGRUZGRkY4MDAwMDAwMDFGRkVGRkZGCi0wMDAwMDAwMDFGRkVGRkZFMDAwMDAwMDAwRkZFRkZGRTAwMDAwMDAwMEZGRUZGRkMwMDAwMDAwMDBGRkZGRkZDMDAwMDAwMDAKLTBGRkZGRkZDMDAwMDAwMDAwN0ZGRkZGODAwMDAwMDAwMDdGRkZGRjgwMDAwMDAwMDA3RkZGRkY4MDAwMDAwMDAwN0ZGRkZGMAotMDAwMDAwMDAwN0ZGRkZGMDAwMDAwMDAwMDdGRkZGRjAwMDAwMDAwMDA3RkZGRkYwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwCi0wN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAKLTAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMAotMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwCi0wMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAKLTA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMAotMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwCi0wN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAKLTAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMAotMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwCi0wMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAKLTA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMAotMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwCi0wN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkY+NjQgMTQ2IDExMiAyNzMgOTcKLTEwNCBEWzxGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwCi1GRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTAKLUZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMAotRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwCi1GRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTAKLUZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMAotRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwCi1GRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTBGRkUwRkZFMEZGRTAKLUZGRTBGRkUwRkZFMEZGRTA+MTEgMTQ2IDExMiAyNzMgNDQgMTA4IEQ8MDAwMDAwMDBGRkYwMDAwMEZGRTAwMDBGRkZGRjAwCi0wMEZGRTAwMDdGRkZGRkUwMDBGRkUwMDFGRkZGRkZGODAwRkZFMDAzRkZGRkZGRkMwMEZGRTAwRkZGRkZGRkZGMDBGRkUwMUYKLUZGRkZGRkZGODBGRkUwM0ZGRkZGRkZGRkMwRkZFMEZGRkZGRkZGRkZFMEZGRTFGRkYwMDNGRkZGRTBGRkUzRkY4MDAwM0ZGRgotRjBGRkUzRkUwMDAwMDdGRkY4RkZFN0Y4MDAwMDAzRkZGOEZGRUZGMDAwMDAwMEZGRjhGRkZGRTAwMDAwMDA3RkZDRkZGRkMwCi0wMDAwMDA3RkZDRkZGRjgwMDAwMDAwM0ZGRUZGRkY4MDAwMDAwMDFGRkVGRkZGMDAwMDAwMDAxRkZFRkZGRTAwMDAwMDAwMEYKLUZFRkZGRTAwMDAwMDAwMEZGRUZGRkMwMDAwMDAwMDBGRkZGRkZDMDAwMDAwMDAwRkZGRkZGQzAwMDAwMDAwMDdGRkZGRjgwMAotMDAwMDAwMDdGRkZGRjgwMDAwMDAwMDA3RkZGRkY4MDAwMDAwMDAwN0ZGRkZGMDAwMDAwMDAwMDdGRkZGRjAwMDAwMDAwMDA3Ci1GRkZGRjAwMDAwMDAwMDA3RkZGRkYwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAKLTAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwNwotRkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwCi0wMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDcKLUZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMAotMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3Ci1GRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAKLTAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwNwotRkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwCi0wMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDcKLUZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMAotMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3Ci1GRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAKLTAwMDAwMDA3RkY0MDU4NzBENzYxPjExMCBEPDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDAwMDdGRkZGMDAwMDAwMDAwMDAwCi0wMDNGRkZGRkUwMDAwMDAwMDAwMDAwRkZGRkZGRjgwMDAwMDAwMDAwMDNGRkZGRkZGRTAwMDAwMDAwMDAwRkZGRkZGRkZGODAKLTAwMDAwMDAwMUZGRkZGRkZGRkMwMDAwMDAwMDA3RkZGRkZGRkZGRjAwMDAwMDAwMEZGRkZGRkZGRkZGODAwMDAwMDAxRkZGRgotODAwRkZGRkMwMDAwMDAwM0ZGRkMwMDAxRkZGRTAwMDAwMDA3RkZFMDAwMDAzRkZGMDAwMDAwMEZGRjgwMDAwMDBGRkY4MDAwCi0wMDFGRkUwMDAwMDAwM0ZGQzAwMDAwM0ZGQzAwMDAwMDAxRkZFMDAwMDAzRkY4MDAwMDAwMDBGRkUwMDAwMDdGRjAwMDAwMDAKLTAwN0ZGMDAwMDBGRkUwMDAwMDAwMDAzRkY4MDAwMEZGQzAwMDAwMDAwMDFGRjgwMDAxRkY4MDAwMDAwMDAwMEZGQzAwMDNGRgotMDAwMDAwMDAwMDA3RkUwMDAzRkUwMDAwMDAwMDAwMDNGRTAwMDdGRTAwMDAwMDAwMDAwM0ZGMDAwN0ZDMDAwMDAwMDAwMDAxCi1GRjAwMEZGQzAwMDAwMDAwMDAwMUZGODAwRkY4MDAwMDAwMDAwMDAwRkY4MDBGRjgwMDAwMDAwMDAwMDBGRjgwMUZGMDAwMDAKLTAwMDAwMDAwN0ZDMDFGRjAwMDAwMDAwMDAwMDA3RkMwM0ZFMDAwMDAwMDAwMDAwMDNGRTAzRkUwMDAwMDAwMDAwMDAwM0ZFMAotM0ZFMDAwMDAwMDAwMDAwMDNGRTAzRkMwMDAwMDAwMDAwMDAwMUZFMDdGQzAwMDAwMDAwMDAwMDAxRkYwN0ZDMDAwMDAwMDAwCi0wMDAwMUZGMDdGQzAwMDAwMDAwMDAwMDAxRkYwN0ZDMDAwMDAwMDAwMDAwMDFGRjA3RjgwMDAwMDAwMDAwMDAwMEZGMEZGODAKLTAwMDAwMDAwMDAwMDBGRjhGRjgwMDAwMDAwMDAwMDAwMEZGOEZGODAwMDAwMDAwMDAwMDAwRkY4RkY4MDAwMDAwMDAwMDAwMAotMEZGOEZGODAwMDAwMDAwMDAwMDAwRkY4RkY4MDAwMDAwMDAwMDAwMDBGRjhGRjgwMDAwMDAwMDAwMDAwMEZGOEZGODAwMDAwCi0wMDAwMDAwMDBGRjhGRjgwMDAwMDAwMDAwMDAwMEZGOEZGODAwMDAwMDAwMDAwMDAwRkY4RkY4MDAwMDAwMDAwMDAwMDBGRjgKLUZGODAwMDAwMDAwMDAwMDAwRkY4RkY4MDAwMDAwMDAwMDAwMDBGRjhGRkMwMDAwMDAwMDAwMDAwMUZGOEZGQzAwMDAwMDAwMAotMDAwMDFGRjg3RkMwMDAwMDAwMDAwMDAwMUZGMDdGQzAwMDAwMDAwMDAwMDAxRkYwN0ZDMDAwMDAwMDAwMDAwMDFGRjA3RkUwCi0wMDAwMDAwMDAwMDAzRkYwN0ZFMDAwMDAwMDAwMDAwMDNGRjAzRkUwMDAwMDAwMDAwMDAwM0ZFMDNGRTAwMDAwMDAwMDAwMDAKLTNGRTAzRkYwMDAwMDAwMDAwMDAwN0ZFMDNGRjAwMDAwMDAwMDAwMDA3RkUwMUZGODAwMDAwMDAwMDAwMEZGQzAxRkY4MDAwMAotMDAwMDAwMDBGRkMwMEZGQzAwMDAwMDAwMDAwMUZGODAwRkZDMDAwMDAwMDAwMDAxRkY4MDBGRkUwMDAwMDAwMDAwMDNGRjgwCi0wN0ZFMDAwMDAwMDAwMDAzRkYwMDA3RkYwMDAwMDAwMDAwMDdGRjAwMDNGRjgwMDAwMDAwMDAwRkZFMDAwMUZGODAwMDAwMDAKLTAwMEZGQzAwMDFGRkMwMDAwMDAwMDAxRkZDMDAwMEZGRTAwMDAwMDAwMDNGRjgwMDAwN0ZGMDAwMDAwMDAwN0ZGMDAwMDA3RgotRjgwMDAwMDAwMEZGRjAwMDAwM0ZGQzAwMDAwMDAxRkZFMDAwMDAxRkZGMDAwMDAwMDdGRkMwMDAwMDBGRkZDMDAwMDAxRkZGCi04MDAwMDAwN0ZGRTAwMDAwM0ZGRjAwMDAwMDAzRkZGQzAwMDFGRkZFMDAwMDAwMDFGRkZGODAwRkZGRkMwMDAwMDAwMEZGRkYKLUZGRkZGRkY4MDAwMDAwMDA3RkZGRkZGRkZGRjAwMDAwMDAwMDNGRkZGRkZGRkZFMDAwMDAwMDAwMEZGRkZGRkZGRjgwMDAwMAotMDAwMDAzRkZGRkZGRkUwMDAwMDAwMDAwMDBGRkZGRkZGODAwMDAwMDAwMDAwMDNGRkZGRkUwMDAwMDAwMDAwMDAwMDdGRkZGCi0wMDAwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwNEQ1QTc4RDg1RT5JPDAwMDAwMDAwM0ZGODAwMDAwMEZGRTAwMDA3RkZGRgotMDAwMDAwRkZFMDAwM0ZGRkZGQzAwMDAwRkZFMDAwRkZGRkZGRjAwMDAwRkZFMDAzRkZGRkZGRjgwMDAwRkZFMDBGRkZGRkZGCi1GQzAwMDBGRkUwM0ZGRkZGRkZGRjAwMDBGRkUwN0ZGRkZGRkZGRjgwMDBGRkUwRkZGRkZGRkZGRkMwMDBGRkUzRkZGMDAzRkYKLUZGQzAwMEZGRTdGRjgwMDA3RkZGRTAwMEZGRUZGRTAwMDAwRkZGRjAwMEZGRkZGODAwMDAwN0ZGRjgwMEZGRkZFMDAwMDAwMQotRkZGQzAwRkZGRkMwMDAwMDAwRkZGQzAwRkZGRjgwMDAwMDAwN0ZGRTAwRkZGRjAwMDAwMDAwMUZGRTAwRkZGRTAwMDAwMDAwCi0xRkZGMDBGRkZDMDAwMDAwMDAwRkZGMDBGRkY4MDAwMDAwMDAwN0ZGODBGRkY4MDAwMDAwMDAwM0ZGODBGRkYwMDAwMDAwMDAKLTAzRkZDMEZGRjAwMDAwMDAwMDAxRkZDMEZGRTAwMDAwMDAwMDAwRkZFMEZGRTAwMDAwMDAwMDAwRkZFMEZGRTAwMDAwMDAwMAotMDA3RkUwRkZFMDAwMDAwMDAwMDA3RkYwRkZFMDAwMDAwMDAwMDAzRkYwRkZFMDAwMDAwMDAwMDAzRkYwRkZFMDAwMDAwMDAwCi0wMDNGRjBGRkUwMDAwMDAwMDAwMDFGRjhGRkUwMDAwMDAwMDAwMDFGRjhGRkUwMDAwMDAwMDAwMDFGRjhGRkUwMDAwMDAwMDAKLTAwMEZGOEZGRTAwMDAwMDAwMDAwMEZGOEZGRTAwMDAwMDAwMDAwMEZGOEZGRTAwMDAwMDAwMDAwMEZGQ0ZGRTAwMDAwMDAwMAotMDAwRkZDRkZFMDAwMDAwMDAwMDAwN0ZDRkZFMDAwMDAwMDAwMDAwN0ZDRkZFMDAwMDAwMDAwMDAwN0ZDRkZFMDAwMDAwMDAwCi0wMDA3RkNGRkUwMDAwMDAwMDAwMDA3RkNGRkUwMDAwMDAwMDAwMDA3RkNGRkUwMDAwMDAwMDAwMDA3RkNGRkUwMDAwMDAwMDAKLTAwMDdGQ0ZGRTAwMDAwMDAwMDAwMDdGQ0ZGRTAwMDAwMDAwMDAwMDdGQ0ZGRTAwMDAwMDAwMDAwMDdGQ0ZGRTAwMDAwMDAwMAotMDAwN0ZDRkZFMDAwMDAwMDAwMDAwN0ZDRkZFMDAwMDAwMDAwMDAwRkZDRkZFMDAwMDAwMDAwMDAwRkY4RkZFMDAwMDAwMDAwCi0wMDBGRjhGRkUwMDAwMDAwMDAwMDBGRjhGRkUwMDAwMDAwMDAwMDBGRjhGRkUwMDAwMDAwMDAwMDFGRjhGRkUwMDAwMDAwMDAKLTAwMUZGOEZGRTAwMDAwMDAwMDAwMUZGMEZGRTAwMDAwMDAwMDAwM0ZGMEZGRTAwMDAwMDAwMDAwM0ZGMEZGRTAwMDAwMDAwMAotMDA3RkYwRkZFMDAwMDAwMDAwMDA3RkUwRkZFMDAwMDAwMDAwMDBGRkUwRkZFMDAwMDAwMDAwMDBGRkMwRkZGMDAwMDAwMDAwCi0wMUZGQzBGRkYwMDAwMDAwMDAwMUZGQzBGRkY4MDAwMDAwMDAwM0ZGODBGRkY4MDAwMDAwMDAwN0ZGODBGRkZDMDAwMDAwMDAKLTBGRkYwMEZGRkMwMDAwMDAwMDBGRkYwMEZGRkUwMDAwMDAwMDFGRkUwMEZGRkYwMDAwMDAwMDNGRkUwMEZGRkY4MDAwMDAwMAotN0ZGQzAwRkZGRkMwMDAwMDAxRkZGODAwRkZGRkUwMDAwMDAzRkZGMDAwRkZGRkYwMDAwMDBGRkZGMDAwRkZFRkZDMDAwMDNGCi1GRkUwMDBGRkU3RkYwMDAwRkZGRkMwMDBGRkUzRkZFMDBGRkZGRjgwMDBGRkUxRkZGRkZGRkZGRjAwMDBGRkUwRkZGRkZGRkYKLUZFMDAwMEZGRTAzRkZGRkZGRkZDMDAwMEZGRTAxRkZGRkZGRkY4MDAwMEZGRTAwN0ZGRkZGRkUwMDAwMEZGRTAwM0ZGRkZGRgotODAwMDAwRkZFMDAwRkZGRkZGMDAwMDAwRkZFMDAwMUZGRkY4MDAwMDAwRkZFMDAwMDFGRkMwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAKLTAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMDAwMDAwMEZGRTAwMDAwMDAwMAotMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwCi0wMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDBGRkUwMDAwMDAwMDAwMDAwMDA0NjgwNzBENzYxPkk8MDAwMDdGRjAwMDAwMDAwMAotMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwCi0wMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAKLTAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMAotMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwCi0wMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAKLTAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGMDBGRkZGRkZGRkZGRkZGRjAwRkZGRkZGRkZGRkZGRkYwMAotRkZGRkZGRkZGRkZGRkYwMEZGRkZGRkZGRkZGRkZGMDBGRkZGRkZGRkZGRkZGRjAwRkZGRkZGRkZGRkZGRkYwMEZGRkZGRkZGCi1GRkZGRkYwMEZGRkZGRkZGRkZGRkZGMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAKLTAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMAotMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwCi0wMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAKLTAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMAotMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwCi0wMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAKLTAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMAotMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwCi0wMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAKLTAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMAotMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwCi0wMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAKLTAwMDA3RkYwMDAwMDAwMDAwMDAwN0ZGMDAwMDAwMDAwMDAwMDdGRjAwMDAwMDAwMDAwMDA3RkY4MDAwMDAwMDAwMDAwN0ZGOAotMDAwMDAwMDAwMDAwN0ZGODAwMDAwMDAwMDAwMDNGRjgwMDAwMDA4MDAwMDAzRkZDMDAwMDAxODAwMDAwM0ZGQzAwMDAwN0MwCi0wMDAwM0ZGRTAwMDAxRkMwMDAwMDNGRkUwMDAwN0ZDMDAwMDAxRkZGODAwMUZGQzAwMDAwMUZGRkMwMUZGRkUwMDAwMDBGRkYKLUZGRkZGRkUwMDAwMDBGRkZGRkZGRkZFMDAwMDAwN0ZGRkZGRkZGODAwMDAwMDdGRkZGRkZGRTAwMDAwMDAzRkZGRkZGRjgwMAotMDAwMDAxRkZGRkZGRTAwMDAwMDAwMEZGRkZGRjAwMDAwMDAwMDAzRkZGRjAwMDAwMDAwMDAwMEZGRTAwMDAwMDNCNzE3REVGCi00ND4xMTYgRDxGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwNwotRkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwCi0wMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDcKLUZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMAotMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3Ci1GRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAKLTAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwNwotRkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwCi0wMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDcKLUZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMAotMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3Ci1GRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAKLTAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwNwotRkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwMDAwMDAwMDdGRkZGRTAwMDAwMDAwMDA3RkZGRkUwMDAwMDAwMDAwN0ZGRkZFMDAwCi0wMDAwMDAwRkZGRkZFMDAwMDAwMDAwMEZGRkZGRTAwMDAwMDAwMDBGRkZGRkUwMDAwMDAwMDAxRkZGRkZFMDAwMDAwMDAwMUYKLUZGRkZFMDAwMDAwMDAwM0ZGRkZGRTAwMDAwMDAwMDNGRkZGRkUwMDAwMDAwMDA3RkZGRkZGMDAwMDAwMDAwRkZGRkZGRjAwMAotMDAwMDAxRkZGRjdGRjAwMDAwMDAwM0ZGRkY3RkY4MDAwMDAwMDdGRkZGN0ZGODAwMDAwMDBGRkZGRjdGRkMwMDAwMDAzRkY3Ci1GRjNGRkYwMDAwMDBGRkU3RkYzRkZGQzAwMDAzRkZDN0ZGMUZGRkY4MDAzRkZGODdGRjFGRkZGRkZGRkZGRjA3RkYwRkZGRkYKLUZGRkZGRTA3RkYwN0ZGRkZGRkZGRjgwN0ZGMDdGRkZGRkZGRkUwMDdGRjAzRkZGRkZGRkY4MDA3RkYwMEZGRkZGRkZFMDAwNwotRkYwMDdGRkZGRkYwMDAwN0ZGMDAxRkZGRkY4MDAwMDdGRjAwMDFGRkYwMDAwMDAwMDA0MDU4NzBENjYxPkk8RkZDMDAwMDAKLTAwMDAwMDAwMDNGRkZGRTAwMDAwMDAwMDAwMDAwM0ZGN0ZFMDAwMDAwMDAwMDAwMDA3RkU3RkYwMDAwMDAwMDAwMDAwMDdGRQotM0ZGMDAwMDAwMDAwMDAwMDBGRkUzRkY4MDAwMDAwMDAwMDAwMEZGQzNGRjgwMDAwMDAwMDAwMDAwRkZDMUZGODAwMDAwMDAwCi0wMDAwMUZGODFGRkMwMDAwMDAwMDAwMDAxRkY4MEZGQzAwMDAwMDAwMDAwMDNGRjgwRkZFMDAwMDAwMDAwMDAwM0ZGMDA3RkUKLTAwMDAwMDAwMDAwMDNGRjAwN0ZGMDAwMDAwMDAwMDAwN0ZFMDA3RkYwMDAwMDAwMDAwMDA3RkUwMDNGRjAwMDAwMDAwMDAwMAotRkZFMDAzRkY4MDAwMDAwMDAwMDBGRkMwMDFGRjgwMDAwMDAwMDAwMEZGQzAwMUZGQzAwMDAwMDAwMDAxRkY4MDAwRkZDMDAwCi0wMDAwMDAwMUZGODAwMEZGRTAwMDAwMDAwMDAzRkY4MDAwRkZFMDAwMDAwMDAwMDNGRjAwMDA3RkUwMDAwMDAwMDAwM0ZGMDAKLTAwN0ZGMDAwMDAwMDAwMDdGRTAwMDAzRkYwMDAwMDAwMDAwN0ZFMDAwMDNGRjgwMDAwMDAwMDBGRkUwMDAwMUZGODAwMDAwMAotMDAwRkZDMDAwMDFGRkMwMDAwMDAwMDBGRkMwMDAwMUZGQzAwMDAwMDAwMUZGODAwMDAwRkZDMDAwMDAwMDAxRkY4MDAwMDBGCi1GRTAwMDAwMDAwM0ZGODAwMDAwN0ZFMDAwMDAwMDAzRkYwMDAwMDA3RkYwMDAwMDAwMDNGRjAwMDAwMDNGRjAwMDAwMDAwN0YKLUUwMDAwMDAzRkY4MDAwMDAwMDdGRTAwMDAwMDNGRjgwMDAwMDAwN0ZFMDAwMDAwMUZGODAwMDAwMDBGRkMwMDAwMDAxRkZDMAotMDAwMDAwRkZDMDAwMDAwMEZGQzAwMDAwMDFGRjgwMDAwMDAwRkZFMDAwMDAwMUZGODAwMDAwMDA3RkUwMDAwMDAxRkY4MDAwCi0wMDAwN0ZFMDAwMDAwM0ZGMDAwMDAwMDA3RkYwMDAwMDAzRkYwMDAwMDAwMDNGRjAwMDAwMDdGRjAwMDAwMDAwM0ZGODAwMDAKLTA3RkUwMDAwMDAwMDFGRjgwMDAwMDdGRTAwMDAwMDAwMUZGQzAwMDAwRkZDMDAwMDAwMDAwRkZDMDAwMDBGRkMwMDAwMDAwMAotMEZGQzAwMDAwRkZDMDAwMDAwMDAwRkZFMDAwMDFGRjgwMDAwMDAwMDA3RkUwMDAwMUZGODAwMDAwMDAwMDdGRjAwMDAzRkYwCi0wMDAwMDAwMDAzRkYwMDAwM0ZGMDAwMDAwMDAwMDNGRjAwMDAzRkYwMDAwMDAwMDAwMUZGODAwMDdGRTAwMDAwMDAwMDAxRkYKLTgwMDA3RkUwMDAwMDAwMDAwMUZGQzAwMDdGQzAwMDAwMDAwMDAwRkZDMDAwRkZDMDAwMDAwMDAwMDBGRkMwMDBGRkMwMDAwMAotMDAwMDAwN0ZFMDAxRkY4MDAwMDAwMDAwMDA3RkUwMDFGRjgwMDAwMDAwMDAwMDNGRjAwMUZGMDAwMDAwMDAwMDAwM0ZGMDAzCi1GRjAwMDAwMDAwMDAwMDFGRjAwM0ZGMDAwMDAwMDAwMDAwMUZGODAzRkUwMDAwMDAwMDAwMDAxRkY4MDdGRTAwMDAwMDAwMDAKLTAwMEZGQzA3RkMwMDAwMDAwMDAwMDAwRkZDMDdGQzAwMDAwMDAwMDAwMDA3RkMwRkZDMDAwMDAwMDAwMDAwMDdGRTBGRjgwMAotMDAwMDAwMDAwMDAzRkUwRkY4MDAwMDAwMDAwMDAwMDNGRTFGRjAwMDAwMDAwMDAwMDAwM0ZGMUZGMDAwMDAwMDAwMDAwMDAxCi1GRjFGRjAwMDAwMDAwMDAwMDAwMUZGM0ZFMDAwMDAwMDAwMDAwMDAwRkZCRkUwMDAwMDAwMDAwMDAwMDBGRkJGQzAwMDAwMDAKLTAwMDAwMDAwN0ZGRkMwMDAwMDAwMDAwMDAwMDA3RkZGQzAwMDAwMDAwMDAwMDAwMDdGRkY4MDAwMDAwMDAwMDAwMDAwM0ZGRgotODAwMDAwMDAwMDAwMDAwMDNGRkYwMDAwMDAwMDAwMDAwMDAwMUZGRjAwMDAwMDAwMDAwMDAwMDAxRkZGMDAwMDAwMDAwMDAwCi0wMDAwMEZGRTAwMDAwMDAwMDAwMDAwMDAwRkZFMDAwMDAwMDAwMDAwMDAwMDBGRkMwMDAwMDAwMDAwMDAwMDAwMDdGQzAwMDAKLTAwMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMDAwMAotMEZGMDAwMDAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwMDAwMDFGRjAwMDAwMDAwMDAwMDAwMDAwM0ZFMDAwMDAwMDAwCi0wMDAwMDAwMDNGRTAwMDAwMDAwMDAwMDAwMDAwM0ZDMDAwMDAwMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDAwMDAwMDdGQzAKLTAwMDAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwMDAwMDAwRkYwMDAwMDAwMDAwMDAwMAotMDAwMUZGMDAwMDAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwMDAwMDNGRTAwMDAwMDAwMDAwMDAwMDAwM0ZFMDAwMDAwCi0wMDAwMDAwMDAwMDNGQzAwMDAwMDAwMDAwMDAwMDAwN0ZDMDAwMDAwMDAwMDAwMDAwMDA3RkMwMDAwMDAwMDAwMDAwMDAwMEYKLUY4MDAwMDAwMDAwMDAwMDAwMDBGRjgwMDAwMDAwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMAotMDAwMDAwM0ZFMDAwMDAwMDAwMDAwMDAwMDAzRkUwMDAwMDAwMDAwMDAwMDAwMDdGQzAwMDAwMDAwMDAwMDAwMDAwN0ZDMDAwCi0wMDAwMDAwMDAwMDAwMEZGODAwMDAwMDAwMDAwMUMwMDAxRkY4MDAwMDAwMDAwMDAxRkUwMDdGRjAwMDAwMDAwMDAwMDFGRkYKLUZGRkYwMDAwMDAwMDAwMDAxRkZGRkZGRTAwMDAwMDAwMDAwMDFGRkZGRkZDMDAwMDAwMDAwMDAwMUZGRkZGRjgwMDAwMDAwMAotMDAwMDBGRkZGRkY4MDAwMDAwMDAwMDAwMEZGRkZGRTAwMDAwMDAwMDAwMDAwRkZGRkZDMDAwMDAwMDAwMDAwMDAzRkZGRjgwCi0wMDAwMDAwMDAwMDAwMDBGRkMwMDAwMDAwMDAwMDAwMDUwODA3REQ2NTc+MTIxIEQgRQotJUVuZERWSVBTQml0bWFwRm9udAotZW5kCi0lJUVuZFByb2xvZwotJSVCZWdpblNldHVwCi0lJUZlYXR1cmU6ICpSZXNvbHV0aW9uIDYwMGRwaQotVGVYRGljdCBiZWdpbgotJSVCZWdpblBhcGVyU2l6ZTogYTQKLS9zZXRwYWdlZGV2aWNlIHdoZXJlCi17IHBvcCA8PCAvUGFnZVNpemUgWzU5NSA4NDJdID4+IHNldHBhZ2VkZXZpY2UgfQoteyAvYTQgd2hlcmUgeyBwb3AgYTQgfSBpZiB9Ci1pZmVsc2UKLSUlRW5kUGFwZXJTaXplCi0gZW5kCi0lJUVuZFNldHVwCi0lJVBhZ2U6IDEgMQotVGVYRGljdCBiZWdpbiAxIDAgYm9wIDAgODMgMzkwMSA5IHYgMTg5MCA0NTEgYSBGdChQeXRob24pNjQKLWIoT3ApNSBiKGVuU1NMKTY0IGIoTWFudWFsKTMzOTQgNjE5IHkgRnMoUmVsZWFzZSkzNCBiKDAuMTMpMjkyNwotOTc0IHkgRnIoSmVhbi1QKW0oYXVsKWkoQ2FsZGVyb25lKTMyMzEgMTMyOCB5IEZxKFNlcHRlbSluKGIpcihlcikyOAotYigyLClmKDIwMTEpMzAxNCAxNDc1IHkgRnAoZXhhKW4ocmt1bkB0KW4od2lzdGVkbWF0cml4LmNvbSkxNzgxCi0xNjk3IHkgRm8oQWJzdHJhY3QpMjA4IDE4NDEgeSBGbihUaGlzKTMyIGIobW8pcihkdWxlKWYoaXMpaChhKWcocmF0aGVyKQotZyh0aGluKWYod3JhcHApcihlciloKGFyb3VuZClnKFwoYSlnKHN1YnNldClmKG9mKTYgYihcKSkzMgotYih0aGUpZyhPcClyKGVuU1NMKWUobGlicmFyeSktNiBiKC4pNTIgYihXaXRoKTMyIGIodGhpbilmKHdyYXBwKXIoZXIpCi0yMDggMTkzMiB5KEkpZChtZWFuKWgodGhhdClmKGEpaShsb3QpZihvZiloKHRoZSlmKG9iKXQoamVjdCloKG1ldGhvKXIKLShkcyllKGRvKWgobm90aGluZylnKG1vcmUpZyh0aGFuKWcoY2FsbGluZyloKGEpZyhjb3JyZXNwKXIob25kaW5nKWcKLShmdW5jdGlvbilmKGluKWcodGhlKTIwOCAyMDI0IHkoT3ApcihlblNTTCkyNCBiKGxpYnJhcnkpLTYKLWIoLikwIDIyOTggeSBGcihDb250ZW50cykwIDI0ODEgeSBGbSgxKTc3IGIoSW4pbSh0cm8pcyhkdWN0aW9uKTMyMDEKLWIoMikwIDI2NjMgeSgyKTc3IGIoQnVpbGRpbmcpMzAgYihhbmQpaShJbnN0YWxsaW5nKTI3NjUKLWIoMikxMjUgMjc2MyB5IEZxKDIuMSk4MyBiKEJ1aWxkaW5nKTI4IGIodGhlKWcoTW8pcihkdWxlKWcob24pZihhKWcKLShVbml4KWgoU3lzdGVtKTg3IGIoLik0MSBiKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYKLSguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pCi0xMzQgYigyKTEyNSAyODYzIHkoMi4yKTgzIGIoQnVpbGRpbmcpMjggYih0aGUpZyhNbylyKGR1bGUpZyhvbilmKGEpZwotKFdpbmRvKW4od3MpZyhTeXN0ZW0pNTkgYiguKTQxIGIoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLikKLWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pMTM0Ci1iKDMpMCAzMDQ1IHkgRm0oMyk3NyBiIEZsKE9wZW5TU0wpMjggYiBGbShcMDI2KTMzIGIoUHl0aG9uKWYoaW4pbQotKHRlcmZhY2UpaCh0byllKE9wKXMoZW5TU0wpMjAzMCBiKDMpMTI1IDMxNDUgeSBGcSgzLjEpODMKLWIgRmwoY3J5cHRvKTI2IGIgRnEoXDAyNiloKEdlbmVyaWMpZyhjcnlwdG9ncmFwaGljKWYobW8pcihkdWxlKTc5Ci1iKC4pNDIgYiguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKQotaCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pMTM0IGIoMykzMTUKLTMyNDQgeShYNTA5KTI3IGIob2IpNSBiKGplY3RzKTczIGIoLik0MiBiKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paAotKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLikKLWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZgotKC4paCguKTEzNCBiKDUpMzE1IDMzNDQgeShYNTA5TmFtZSkyNyBiKG9iKTUgYihqZWN0cyk1NwotYiguKTQxIGIoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLikKLWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilmKC4paAotKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKTEzNCBiKDcpMzE1IDM0NDQgeShYNTA5UmVxKTI3Ci1iKG9iKTUgYihqZWN0cyk2MCBiKC4pNDIgYiguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWYoLiloCi0oLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKQotZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKTEzNAotYig3KTMxNSAzNTQzIHkoWDUwOVN0b3JlKTI2IGIob2IpNSBiKGplY3RzKTc4IGIoLik0MQotYiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloCi0oLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKQotZiguKWgoLilmKC4paCguKWYoLiloKC4pMTM0IGIoOCkzMTUgMzY0MyB5KFBLZXkpMjggYihvYik1Ci1iKGplY3RzKTU4IGIoLik0MiBiKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilmKC4paAotKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLikKLWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLikxMzQKLWIoOCkzMTUgMzc0MyB5KFBLKW4oQ1M3KTI3IGIob2IpNSBiKGplY3RzKTU5IGIoLik0MSBiKC4paCguKWYoLiloKC4pZwotKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLikKLWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZgotKC4paCguKWYoLiloKC4pMTM0IGIoOCkzMTUgMzg0MiB5KFBLKW4oQ1MxMikyNyBiKG9iKTUKLWIoamVjdHMpODEgYiguKTQyIGIoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmCi0oLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKQotZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLikxMzQgYig5KTMxNQotMzk0MiB5KFg1MDlFeHRlbnNpb24pMjcgYihvYik1IGIoamVjdHMpMTAyIGIoLik0MSBiKC4paCguKWYoLiloKC4pZiguKWgKLSguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pCi1mKC4paCguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLikxMzQKLWIoOSkzMTUgNDA0MSB5KE5ldHNjYXApcihlU1BLSSkyOCBiKG9iKTUgYihqZWN0cyk1OCBiKC4pNDIKLWIoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZgotKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLikKLWYoLiloKC4pZiguKWgoLik5MyBiKDEwKTMxNSA0MTQxIHkoQ1JMKTI4IGIob2IpNSBiKGplY3RzKTg3Ci1iKC4pNDIgYiguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKQotaCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmCi0oLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pOTMgYigxMCkzMTUKLTQyNDEgeShSZXYpbihvayluKGVkKTI3IGIob2IpNSBiKGplY3RzKTgzIGIoLik0MiBiKC4pZiguKWgoLilnKC4pZiguKWgKLSguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4pCi1oKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYKLSguKWgoLik5MyBiKDEwKTEyNSA0MzQwIHkoMy4yKTgzIGIgRmwocmFuZCkyNiBiIEZxKFwwMjYpaShBbilnKGluKW4KLSh0ZXJmYWNlKWYodG8pZyh0aGUpaChPcClyKGVuU1NMKWcocHNldWRvKWYocmFuZG9tKWcobiluKHVtKW4oYilyKGVyKWcKLShnZW5lcmF0b3IpNTAgYiguKTQxIGIoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pOTMKLWIoMTEpMTI1IDQ0NDAgeSgzLjMpODMgYiBGbChTU0wpMjcgYiBGcShcMDI2KWcoQW4paShpbiluKHRlcmZhY2UpZCh0bylpCi0odGhlKWcoU1NMLXNwKXIoZWNpXDAzNGMpZihwYXJ0cylnKG9mKWgoT3ApcihlblNTTCk2NAotYiguKTQyIGIoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLikKLWgoLilmKC4paCguKTkzIGIoMTEpMzE1IDQ1NDAgeShDb24pbih0ZXh0KTI4IGIob2IpNSBiKGplY3RzKTk4Ci1iKC4pNDIgYiguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKQotaCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilmCi0oLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKTkzIGIoMTMpMzE1IDQ2MzkgeShDb25uZWN0aW9uKTI3Ci1iKG9iKTUgYihqZWN0cykxMDggYiguKTQyIGIoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZgotKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLikKLWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pOTMgYigxNSkwCi00ODIyIHkgRm0oNCk3NyBiKEluKW0odGVybmFscykzMzEwIGIoMTgpMTI1IDQ5MjEgeSBGcSg0LjEpODMKLWIoRXhjZXB0aW9ucylpKC4pNDEgYiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paAotKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWcoLikKLWYoLiloKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKTkzCi1iKDE4KTEyNSA1MDIxIHkoNC4yKTgzIGIoQ2FsbGJhYyluKGtzKTY4IGIoLik0MiBiKC4pZiguKWgoLilmKC4paCguKWYKLSguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pCi1nKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYKLSguKWgoLilmKC4paCguKWYoLiloKC4pOTMgYigxOCkxMjUgNTEyMSB5KDQuMyk4MyBiKEEpbihjZXNzaW5nKTI3Ci1iKFNvKXIoYyluKGspbihldClnKE1ldGhvKXIoZHMpODIgYiguKTQyIGIoLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnCi0oLilmKC4paCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pZyguKWYoLiloKC4pZiguKQotaCguKWYoLiloKC4pZiguKWgoLilnKC4pZiguKWgoLilmKC4paCguKWYoLiloKC4pOTMgYigxOSlwCi0wIDUyNjggViBlb3AgZW5kCi0lJVBhZ2U6IDIgMgotVGVYRGljdCBiZWdpbiAyIDEgYm9wIDAgODUgYSBGcigxKTExNCBiKEludHJvKXMoZHVjdGlvbikwCi0zMTQgeSBGcShUaGUpNDEgYihyZWFzb24pZShwKW4oeU9wKXIoZW5TU0wpaSh3KW4oYXMpZShjcmVhdGVkKWgoaXMpaAotKHRoYXQpZyh0aGUpZyhTU0wpZyhzdXBwKXIob3J0KWcoaW4pZyh0aGUpZyhzbylyKGMpbihrKW4oZXQpZihtbylyCi0oZHVsZSloKGluKWcoUHl0aG9uKWcoMi4xKWYoXCh0aGUpMCA0MTQgeShjb24pbih0ZW1wKXIob3JhcnkpZCh2KW4KLShlcnNpb24pZyhvZiloKFB5dGhvbiloKHdoZW4pZyh0aGUpZyhwKW4oeU9wKXIoZW5TU0wpZyhwcm8pNQotYihqZWN0KTM3IGIodyluKGFzKWgoYilyKGVndW5cKSloKHcpbihhcylmKHNldiluKGVyZWx5KWYobGltaXRlZC4pNzEKLWIoT3RoZXIpMCA1MTQgeShPcClyKGVuU1NMKTQwIGIod3JhcHApcihlcnMpZShmb3IpaChQeXRob24pZyhhdCloKHRoZSlmCi0odGltZSloKHcpbihlcmUpZihhbHNvKWYobGltaXRlZCwpNDMgYih0aG91Z2gpYyhpbiloKGRpXDAzM2VyZW4pbih0KWYKLSh3KW4oYSluKHlzLik3MSBiKFVuZm9ydHVuYXRlbHkpLTcgYigsKTAgNjEzIHkoUHl0aG9uJ3MpMzEKLWIoc3RhbmRhcmQpZihsaWJyYXJ5KWcoU1NMKWgoc3VwcClyKG9ydClnKGhhcylnKHJlbWFpbmVkKWYodyluKGVhaywpaAotKGFsdGhvdWdoKWcob3RoZXIpZihwYWMpbihrKS01IGIoYWdlcykyOSBiKFwoc3VjKW4oaClpKGFzKWcoTTJDcnlwdG8pCi0zODMyIDU4MyB5IEZrKDEpMzg2OCA2MTMgeSBGcShcKSkwIDcxMyB5KGhhKW4odiluKGUpMjYKLWIobWFkZSlpKGdyZWF0KWUoYWR2KS01IGIoYW5jZXMpMjcgYihhbmQpZyhubyluKHcpZyhlcXVhbClnKG9yKWcKLShleGNlZWQpZyhwKW4oeU9wKXIoZW5TU0wncylnKGZ1bmN0aW9uYWxpdCluKHkpLTcgYiguKTAKLTg2MCB5KFRoZSkyMiBiKHJlYXNvbilmKHApbih5T3ApcihlblNTTCloKGNvbiluKHRpbiluKHVlcylnKHRvKWcoYilyKGUpCi1oKG1haW4pbih0YWluZWQpZihpcylnKHRoYXQpaCh0aGVyZSlmKGlzKWcoYSlnKHNpZ25pXDAzNGNhbiluKHQpZyh1c2VyKQotZyhjb21tKW4odW5pdCluKHkpZyhhcm91bmQpZihpdCwpaihhcykwIDk1OSB5KHcpbihlbGwpaShhcylnKGEpZihsYXJnZSkKLWcoYW1vdW4pbih0KWgob2YpZyhzb2Z0KW4odyluKGFyZSlmKHdoaWMpbihoKWgoZGVwKXIoZW5kcylnKG9uKWcoaXQuKTM3Ci1iKEl0KTI3IGIoaXMpZihhKWcoZ3JlYXQpZihiKXIoZW5lXDAzNHQpaSh0bylmKG1hbiluKHkpZihwKXIoZW9wbGUpaQotKGZvcillKHApbih5T3ApcihlblNTTCkwIDEwNTkgeSh0bylpKGNvbiluKHRpbiluKHVlKWcodG8paChleGlzdClmKGFuZCkKLWgoYWR2KS01IGIoYW5jZS4pMCAxMzgxIHkgRnIoMikxMTQgYihCdWlsZGluZykzOCBiKGFuZClmKEluc3RhbGxpbmcpMAotMTYxMCB5IEZxKFRoZXNlKTI3IGIoaW5zdHJ1Y3Rpb25zKWcoY2FuKWcoYWxzbylnKGIpcihlKWgoZm91bmQpZyhpbilnCi0odGhlKWcoXDAzNGxlKWYgRmwoSU5TVEFMTClwIEZxKC4pMCAxNzU3IHkoSSlqKGhhKW4odiluKGUpZih0ZXN0ZWQpaAotKHRoaXMpaChvbilmKERlYmlhbilnKExpbiluKHV4KWcoc3lzdGVtcylmKFwodyluKG8pcihvKXIoZHkpaChhbmQpZwotKHNpZFwpLCloKFNvbGFyaXMpZSgyLjYpZyhhbmQpaCgyLjcuKTQzIGIoT3RoZXJzKTMwIGIoaGEpbih2KW4oZSlmCi0oc3VjY2Vzc2Z1bGx5KTAgMTg1NiB5KGNvbXBpbGVkKWUoaXQpaChvbilnKFdpbmRvKW4od3MpZihhbmQpZyhOVC4pMAotMjEzNiB5IEZqKDIuMSk5NyBiKEJ1aWxkaW5nKTMyIGIodGhlKWgoTW8pcyhkdWxlKWYob24pZyhhKWgoVW5peClmCi0oU3lzdGVtKTAgMjMzNiB5IEZxKHApbih5T3ApcihlblNTTCkyNyBiKHVzZXMpaChkaXN0dXRpbHMsKWcoc28pZgotKHRoZXJlKWcocmVhbGx5KWYoc2hvdWxkbid0KWkoYilyKGUpZyhhbiluKHkpZihwcm9ibGVtcy4pMzYKLWIoVCktNyBiKG8pMjcgYihidWlsZCloKHRoZSlnKGxpYnJhcnk6KTIzNiAyNTc1IHkgRmkocHl0aG9uKTQxCi1iKHNldHVwLnB5KWcoYnVpbGQpMCAyODYyIHkgRnEoSWYpMzAgYih5KW4ob3VyKWYoT3ApcihlblNTTCloKGhlYWRlcilmCi0oXDAzNGxlcyloKGFyZW4ndClmKGluKWggRmwoL3Vzci9pbmNsdWRlKXAgRnEoLCljKHkpbihvdSlqKG1hKW4oeSlnCi0obmVlZCloKHRvKWcoc3VwcGx5KWcodGhlKWcgRmwoLUkpZiBGcShcMDM1YWcpaCh0bylmKGxldClpKHRoZSlmKHNldHVwKQotMCAyOTYyIHkoc2NyaXB0KTI1IGIoa25vKW4odylnKHdoZXJlKWYodG8paShsbylyKG9rLikzNQotYihUaGUpMjUgYihzYW1lKWcoZ28pcihlcylnKGZvcilmKHRoZSlpKGxpYnJhcmllcyllKG9mKWgoY291cnNlLClnKHVzZSkKLWcodGhlKWggRmwoLUwpZiBGcShcMDM1YWcuKTM1IGIoTm90ZSkyNSBiKHRoYXQpaCBGbChidWlsZClkCi1GcSh3KW4ob24ndCkwIDMwNjEgeShhY2NlcHQpayh0aGVzZSloKFwwMzVhZ3MsKWUoc28paCh5KW4ob3UpZyhoYSluKHYpbgotKGUpZih0bylpKHJ1bilmKFwwMzRyc3QpaCBGbChidWlsZF9leHQpMjMgYiBGcShhbmQpMjgKLWIodGhlbilnIEZsKGJ1aWxkKXAgRnEoISkzNSBiKEV4YW1wbGU6KTIzNiAzMzAwIHkgRmkocHl0aG9uKTQxCi1iKHNldHVwLnB5KWcoYnVpbGRfZXh0KWcoLUkvdXNyL2xvY2FsL3NzbC9pbmNsdWRlKWoKLSgtTC91c3IvbG9jYWwvc3NsL2xpYikyMzYgMzM5MSB5KHB5dGhvbilkKHNldHVwLnB5KWcoYnVpbGQpMAotMzY3OCB5IEZxKE5vKW4odykyNyBiKHkpbihvdSlmKHNob3VsZCloKGhhKW4odiluKGUpZihhKWgoZGlyZWN0b3J5KWYKLShjYWxsZWQpaCBGbChPcGVuU1NMKWQgRnEodGhhdClrKGNvbiluKHRhaW5zKWUoZS5nLikzNgotYiBGbChTU0wuc28pMjUgYiBGcShhbmQpaSBGbChfX2luaXRfXy5weSljIEZxKHNvbWV3aGVyZSlqKGluKTAKLTM3NzggeSh0aGUpaShidWlsZClnKGRpY3JlY3RvcnkpLTcgYigsKTI2IGIoc28paChqdXN0OikyMzYKLTQwMTYgeSBGaShweXRob24pNDEgYihzZXR1cC5weSlnKGluc3RhbGwpMCA0MzAzIHkgRnEoSWYpMzIKLWIoeSluKG91LClmKGZvcilnKHNvbWUpZihhcmNhbmUpZyhyZWFzb24sKWcoZG9uJ3QpaSh3KW4oYW4pbih0KWUodGhlKWkKLShtbylyKGR1bGUpZih0bylnKGFwcClyKGVhcilmKGluKWkodGhlKWYgRmwoc2l0ZS1wYWNrYWdlcykyNgotYiBGcShkaXJlY3RvcnkpLTcgYigsKTMxIGIodXNlKWcodGhlKTAgNDQwMiB5IEZsKC0tcHJlZml4KTI0Ci1iIEZxKG9wdGlvbi4pMCA0NTQ5IHkoWSktNyBiKG91KTI4IGIoY2FuLClmKG9mKWcoY291cnNlLClnKGRvKTIzNgotNDc4NyB5IEZpKHB5dGhvbik0MSBiKHNldHVwLnB5KWcoLS1oZWxwKTAgNTA3NSB5IEZxKHRvKTI3Ci1iKFwwMzRuZCloKG91dClnKG1vcmUpZihhYilyKG91dClnKGhvKW4odylnKHRvKWgodXNlKWYodGhlKWgoc2NyaXB0LilwCi0wIDUxNDQgMTU2MCA0IHYgOTIgNTE5OCBhIEZoKDEpMTI3IDUyMjEgeSBGZyhTZWUpYyBGcChodHRwOi8vY2hhbmRsZXJwKQotbihyb2plY3QubyluKHJnL1Byb2plY3RzL01lVCktNiBiKG8pcihvQ3J5cHRvKXAgMCA1NTQ5Ci0zOTAxIDQgdiAwIDU2NDkgYSBGZigyKTI5MjggYigyKTgzIGIoQnVpbGRpbmcpMjcgYihhbmQpZyhJbnN0YWxsaW5nKXAKLWVvcCBlbmQKLSUlUGFnZTogMyAzCi1UZVhEaWN0IGJlZ2luIDMgMiBib3AgMCA4MyBhIEZqKDIuMik5NyBiKEJ1aWxkaW5nKTMyCi1iKHRoZSloKE1vKXMoZHVsZSlmKG9uKWcoYSloKFdpbmRvKW0od3MpZihTeXN0ZW0pMCAyODMKLXkgRnEoQmlnKTI2IGIodGhhbmtzKWcodG8paChJdGFtYXIpZShTaCluKHR1bGwtVCktNyBiKHJhdXJpbmcpMjUKLWIoYW5kKWkoT2xlZyllKE9ybG8pbih2KWcoZm9yKWgodGhlaXIpZyhoZWxwKWgod2l0aClnKFdpbmRvKW4od3MpZgotKGJ1aWxkKWgoaW5zdHJ1Y3Rpb25zLikzNiBiKFNhbWUpMCAzODMgeShhcykyNyBiKGZvcilnKFVuaXgpaChzeXN0ZW1zLCkKLWYodyluKGUpZyhoYSluKHYpbihlKWYodG8paShzZXBhcmF0ZSllKHRoZSlpIEZsKGJ1aWxkX2V4dCljCi1GcShhbmQpaih0aGUpaCBGbChidWlsZClwIEZxKC4pMCA1MzAgeShCdWlsZGluZylmKHRoZSloKGxpYnJhcnk6KTIzNgotNzY4IHkgRmkoc2V0dXAucHkpNDEgYihidWlsZF9leHQpZygtSSlmKC4uLlxcb3BlbnNzbFxcaW5jMzIpaigtTClkCi0oLi4uXFxvcGVuc3NsXFxvdXQzMmRsbCkyMzYgODYwIHkoc2V0dXAucHkpaChidWlsZCkwCi0xMTQ3IHkgRnEoV2hlcmUpMjcgYiBGbCguLi5cXG9wZW5zc2wpYyBGcShpcykyOCBiKG9mKWYoY291cnNlKWcodGhlKWgKLShsbylyKGNhdGlvbillKG9mKWkoeSluKG91cillKE9wKXIoZW5TU0wpaShpbnN0YWxsYXRpb24uKTAKLTEyOTQgeShJbnN0YWxsYXRpb24pZihpcylnKHRoZSloKHNhbWUpZihhcylnKGZvcilnKFVuaXgpaChzeXN0ZW1zOikyMzYKLTE1MzIgeSBGaShzZXR1cC5weSk0MSBiKGluc3RhbGwpMCAxODE5IHkgRnEoQW5kKTI4IGIoc2ltaWxhcmlseSktNwotYigsKTI3IGIoeSluKG91KWcoY2FuKWcoZG8pMjM2IDIwNTcgeSBGaShzZXR1cC5weSk0MQotYigtLWhlbHApMCAyMzQ0IHkgRnEodG8pMjcgYihnZXQpaChtb3JlKWYoaW5mb3JtYXRpb24uKTAKLTI2NjYgeSBGcigzKTExNCBiIEZlKE9wZW5TU0wpMzYgYiBGcihcMDI2KWgoUHl0aG9uKWgoaW50ZXJmYWNlKWYodG8paAotKE9wKXMoZW5TU0wpMCAyODk1IHkgRnEoVGhpcykyNSBiKHBhYyluKGspLTUgYihhZ2UpMjQKLWIocHJvKW4odmlkZXMpZyhhKWgoaGlnaC1sZXYpbihlbClnKGluKW4odGVyZmFjZSlmKHRvKWkodGhlKWcKLShmdW5jdGlvbnMpZihpbiloKHRoZSlnKE9wKXIoZW5TU0wpZihsaWJyYXJ5KS03IGIoLikzNQotYihUaGUpMjYgYihmb2xsbyluKHdpbmcpZShtbylyKGR1bGVzKTAgMjk5NSB5KGFyZSlqKGRlXDAzNG5lZDopMAotMzE0MiB5IEZsKGNyeXB0bykyMDggMzI0MSB5IEZxKEdlbmVyaWMpZyhjcnlwdG9ncmFwaGljKWUobW8pcihkdWxlLikzNwotYihOb3RlKTI4IGIodGhhdClnKGlmKWcoYW4pbih5dGhpbmcpZihpcylnKGluY29tcGxldGUsKWgodGhpcylnKG1vKXIKLShkdWxlKWYoaXMhKTAgMzM4OCB5IEZsKHJhbmQpMjA4IDM0ODggeSBGcShBbiloKGluKW4odGVyZmFjZSllKHRvKWkKLSh0aGUpZyhPcClyKGVuU1NMKWcocHNldWRvKWYocmFuZG9tKWYobiluKHVtKW4oYilyKGVyKWkoZ2VuZXJhdG9yLikwCi0zNjM1IHkgRmwoU1NMKTIwOCAzNzM0IHkgRnEoQW4pZyhpbiluKHRlcmZhY2UpZSh0bylpKHRoZSlnKFNTTC1zcClyCi0oZWNpXDAzNGMpZihwYXJ0cylnKG9mKWgoT3ApcihlblNTTC4pMCA0MDE0IHkgRmooMy4xKTk3Ci1iIEZkKGNyeXB0bykzNCBiIEZqKFwwMjYpZShHZW5lcmljKWkoY3J5cHRvZ3JhcGhpYyllKG1vKXMoZHVsZSkwCi00MjE0IHkgRmwoWDUwOVR5cGUpMjA4IDQzMTQgeSBGcShTZWUpMjcgYiBGbChYNTA5KXAgRnEoLikwCi00NDYxIHkgRm0oY2xhc3MpayBGbChYNTA5XChcKSkyMDggNDU2MSB5IEZxKEEpYyhjbGFzcylnKHJlcHJlc2VuKW4KLSh0aW5nKWYoWC41MDkpaChjZXJ0aVwwMzRjYXRlcy4pMCA0NzA3IHkgRmwoWDUwOU5hbWVUeXBlKTIwOAotNDgwNyB5IEZxKFNlZSlnIEZsKFg1MDlOYW1lKXAgRnEoLikwIDQ5NTQgeSBGbShjbGFzcylrCi1GbChYNTA5TmFtZVwoKXAgRmMoeDUwOW5hbWUpNiBiIEZsKFwpKTIwOCA1MDU0IHkgRnEoQSkyNwotYihjbGFzcylnKHJlcHJlc2VuKW4odGluZylmKFguNTA5KWgoRGlzdGluZ3Vpc2hlZClnKE5hbWVzLikyMDgKLTUxODYgeShUaGlzKWcoY29uc3RydWN0b3IpZihjcmVhdGVzKWcoYSlpKGNvcCluKHkpZShvZikzNAotYiBGYyh4NTA5bmFtZSloIEZxKHdoaWMpbihoKTI4IGIoc2hvdWxkKWYoYilyKGUpaChhbilmKGluc3RhbmNlKWcob2YpMzQKLWIgRmwoWDUwOU5hbWUpcCBGcSguKTAgNTMzMyB5IEZsKFg1MDlSZXFUeXBlKXAgMCA1NTQ5Ci0zOTAxIDQgdiAwIDU2NDkgYSBGZigyLjIpODIgYihCdWlsZGluZykyNyBiKHRoZSlnKE1vKXIoZHVsZSlnKG9uKWcoYSlnCi0oV2luZG8pbih3cylnKFN5c3RlbSkyMTY0IGIoMylwIGVvcCBlbmQKLSUlUGFnZTogNCA0Ci1UZVhEaWN0IGJlZ2luIDQgMyBib3AgMjA4IDgzIGEgRnEoU2VlKTI3IGIgRmwoWDUwOVJlcSlwCi1GcSguKTAgMjMwIHkgRm0oY2xhc3MpayBGbChYNTA5UmVxXChcKSkyMDggMzMwIHkgRnEoQSljKGNsYXNzKWcKLShyZXByZXNlbiluKHRpbmcpZihYLjUwOSloKGNlcnRpXDAzNGNhdGUpZihyZXF1ZXN0cy4pMAotNDc2IHkgRmwoWDUwOVN0b3JlVHlwZSkyMDggNTc2IHkgRnEoQSloKFB5dGhvbiloKHQpbih5cClyKGUpZyhvYik1Ci1iKGplY3QpMjggYihyZXByZXNlbiluKHRpbmcpZCh0aGUpaihYNTA5U3RvcmUpZShvYik1Ci1iKGplY3QpMjcgYih0KW4oeXApcihlLikwIDcyMyB5IEZsKFBLZXlUeXBlKTIwOCA4MjMgeQotRnEoU2VlKWcgRmwoUEtleSlwIEZxKC4pMCA5NjkgeSBGbShjbGFzcylrIEZsKFBLZXlcKFwpKTIwOAotMTA2OSB5IEZxKEEpYyhjbGFzcylnKHJlcHJlc2VuKW4odGluZylmKERTQSlpKG9yKWYoUlNBKWgoayluKGV5cy4pMAotMTIxNiB5IEZsKFBLQ1M3VHlwZSkyMDggMTMxNiB5IEZxKEEpZihQeXRob24paCh0KW4oeXApcihlKWcob2IpNQotYihqZWN0KTI4IGIocmVwcmVzZW4pbih0aW5nKWQodGhlKWooUEspbihDUzcpZihvYik1IGIoamVjdCkyOAotYih0KW4oeXApcihlLikwIDE0NjIgeSBGbChQS0NTMTJUeXBlKTIwOCAxNTYyIHkgRnEoQSlmKFB5dGhvbiloKHQpbih5cCkKLXIoZSlnKG9iKTUgYihqZWN0KTI4IGIocmVwcmVzZW4pbih0aW5nKWQodGhlKWooUEspbihDUzEyKWYob2IpNQotYihqZWN0KTI3IGIodCluKHlwKXIoZS4pMCAxNzA5IHkgRmwoWDUwOUV4dGVuc2lvblR5cClvKGUpMjA4Ci0xODA4IHkgRnEoU2VlKWcgRmwoWDUwOUV4dGVuc2lvbilwIEZxKC4pMCAxOTU1IHkgRm0oY2xhc3MpawotRmwoWDUwOUV4dGVuc2lvblwoKXAgRmModHlwKWwoZW5hbWUsKTI1IGIoY3JpdGljKWwoYWwsKTMxCi1iKHZhbHVlKTYgYiBGYihbKXAgRmMoLCkzMSBiKHN1YmplKWwoY3QpMTkgYiBGYihdWylwCi1GYygsKTMwIGIoaXNzdWVyKTIxIGIgRmIoXSlwIEZsKFwpKTIwOCAyMDU1IHkgRnEoQSkxODEKLWIoY2xhc3MpZyhyZXByZXNlbiluKHRpbmcpZShhbilqKFguNTA5KWUodjMpaChjZXJ0aVwwMzRjYXRlKWYKLShleHRlbnNpb25zLik0OTggYihTZWUpMjA4IDIxNTUgeSBGcChodHRwOi8vb3ApcihlbnNzbC5vKW4ocmcvZG8pcgotKGNzL2FwcHMveDUwOXYzX2NvblwwMzRnLmh0bWwjU1QpLTYgYihBTkQpbihBUkRfRVhURU5TSU9OUyk2NQotYiBGcShmb3IpNjAgYiBGYyh0eXApbChlbmFtZSk2NyBiIEZxKHN0cmluZ3MpNTkgYihhbmQpMjA4Ci0yMjU0IHkodGhlaXIpMjcgYihvcHRpb25zLikzNiBiKE9wdGlvbmFsKTI3IGIocGFyYW1ldGVycylmCi1GYyhzdWJqZSlsKGN0KTM1IGIgRnEoYW5kKTI4IGIgRmMoaXNzdWVyKTM2IGIgRnEobSluKHVzdCkyOAotYihiKXIoZSlnKFg1MDkpZShvYik1IGIoamVjdHMuKTAgMjQwMSB5IEZsKE5ldHNjYXBlU1BLSVR5cGUpMjA4Ci0yNTAxIHkgRnEoU2VlKTI3IGIgRmwoTmV0c2NhcGVTUEtJKXAgRnEoLikwIDI2NjQgeSBGbShjbGFzcylrCi1GbChOZXRzY2FwZVNQS0lcKClwIEZiKFspcCBGYyhlbmMpMTEgYiBGYihdKXAgRmwoXCkpMjA4Ci0yNzY0IHkgRnEoQSkyNyBiKGNsYXNzKWcocmVwcmVzZW4pbih0aW5nKWYoTmV0c2NhcClyKGUpaShTUEtJKWYob2IpNQotYihqZWN0cy4pMjA4IDI4OTAgeShJZikzNyBiKHRoZSlnIEZjKGVuYylrIEZxKGFyZ3VtZW4pbih0KTM1Ci1iKGlzKWkocHJlc2VuKW4odCwpaChpdClmKHNob3VsZClmKGIpcihlKWgoYSlnKGJhc2U2NC1lbmNvKXIoZGVkKWQKLShzdHJpbmcpaShyZXByZXNlbiluKHRpbmcpZihhKWgoTmV0c2NhcClyKGVTUEtJKTIwOCAyOTg5Ci15KG9iKTUgYihqZWN0LCkyNyBiKGFzKWcocmV0dXJuZWQpZyhiKW4oeSlnKHRoZSloIEZsKGI2NF9lbmNvZGUpYwotRnEobWV0aG8pcihkLikwIDMxMzYgeSBGbShjbGFzcykzMSBiIEZsKENSTFwoXCkpMjA4IDMyMzYKLXkgRnEoQSljKGNsYXNzKWcocmVwcmVzZW4pbih0aW5nKWYoQ2VydGlmY2F0ZSloKFJldiluKG8pcihjYXRpb24pZwotKExpc3QpZyhvYik1IGIoamVjdHMuKTAgMzM4MyB5IEZtKGNsYXNzKTMxIGIgRmwoUmV2b2tlZFwoXCkpMjA4Ci0zNDgyIHkgRnEoQSljKGNsYXNzKWcocmVwcmVzZW4pbih0aW5nKWYoUmV2KW4obylyKGNhdGlvbilnKG9iKTUKLWIoamVjdHMpMjcgYihvZiloKENSTC4pMCAzNjI5IHkgRmwoRklMRVRZUEVfUEVNKTAgMzcyOQoteShGSUxFVFlQRV9BU04xKTIwOCAzODI4IHkgRnEoRmlsZSlmKHQpbih5cClyKGUpaChjb25zdGFuKW4odHMuKTAKLTM5NzUgeSBGbChUWVBFX1JTQSkwIDQwNzUgeShUWVBFX0RTQSkyMDggNDE3NCB5IEZxKEtleSllKHQpbih5cClyKGUpaQotKGNvbnN0YW4pbih0cy4pMCA0MzIxIHkgRm0oZXhjZXB0aW9uKWsgRmwoRXJyb3IpMjA4IDQ0MjEKLXkgRnEoR2VuZXJpYykyNyBiKGV4Y2VwdGlvbilnKHVzZWQpZyhpbiloKHRoZSlnIEZsKGNyeXB0bylkCi1GcShtbylyKGR1bGUuKTAgNDU2OCB5IEZsKGR1bXBfY2VydGlmaWNhdGUpbyhcKClwIEZjKHQpbyh5cClsKGUsKWcoYylsCi0oZXJ0KTggYiBGbChcKSkyMDggNDY2NyB5IEZxKER1bXApMjggYih0aGUpZyhjZXJ0aVwwMzRjYXRlKWYKLUZjKGMpbChlcnQpMzUgYiBGcShpbiluKHRvKTI3IGIoYSloKGJ1XDAzM2VyKWYoc3RyaW5nKWcoZW5jbylyKGRlZCloCi0od2l0aClnKHRoZSlnKHQpbih5cClyKGUpZiBGYyh0eXApbChlKTYgYiBGcSguKTAgNDgxNAoteSBGbChkdW1wX2NlcnRpZmljYXRlKW8oX3IpbyhlcXUpbyhlcylvKHRcKClvIEZjKHR5cClsKGUsKTI1Ci1iKHIpbChlKWwocSk3IGIgRmwoXCkpMjA4IDQ5MTQgeSBGcShEdW1wKTI4IGIodGhlKWcoY2VydGlcMDM0Y2F0ZSlmCi0ocmVxdWVzdClnIEZjKHIpbChlKWwocSkzNSBiIEZxKGluKW4odG8pMjcgYihhKWcoYnVcMDMzZXIpaChzdHJpbmcpZgotKGVuY28pcihkZWQpZyh3aXRoKWgodGhlKWcodCluKHlwKXIoZSlnIEZjKHR5cClsKGUpNgotYiBGcSguKTAgNTA3NSB5IEZsKGR1bXBfcHJpdmF0ZWtleVwoKW8gRmModHlwKWwoZSwpMjUKLWIocGtleSk3IGIgRmIoWylwIEZjKCwpMzEgYihjaXBoZXIsKWgocClsKGFzc3BocilsKGFzZSkxOQotYiBGYihdKXAgRmwoXCkpMjA4IDUxNzUgeSBGcShEdW1wKTM5IGIodGhlKWYocHJpdiktNQotYihhdGUpMzggYihrKW4oZXkpaCBGYyhwa2V5KTQ2IGIgRnEoaW4pbih0bykzOCBiKGEpZyhidVwwMzNlcilnKHN0cmluZykKLWcoZW5jbylyKGRlZClnKHdpdGgpZyh0aGUpaCh0KW4oeXApcihlKWYgRmModHlwKWwoZSk2Ci1iIEZxKCwpNDIgYihvcHRpb25hbGx5KTM3IGIoXChpZik0NSBiIEZjKHR5cClsKGUpZyBGcShpcykyMDgKLTUyNzQgeSBGbChGSUxFVFlQRV9QRU0pcCBGcShcKSkyMiBiKGVuY3J5cHRpbmcpMjcgYihpdCloKHVzaW5nKWgKLUZjKGNpcGhlcikzOCBiIEZxKGFuZCkyNyBiIEZjKHApbChhc3NwaHIpbChhc2UpNiBiIEZxKC4pMjA4Ci01NDAwIHkgRmMocClsKGFzc3BocilsKGFzZSkzNSBiIEZxKG0pbih1c3QpMjggYihiKXIoZSlnKGVpdGhlcilmKGEpZwotKHN0cmluZylnKG9yKWcoYSlnKGNhbGxiYWMpbihrKWYoZm9yKWgocHJvKW4odmlkaW5nKWYodGhlKWkocGFzcylmCi0ocGhyYXNlLilwIDAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYSBGZig0KTIyMzkgYigzKTgzCi1iIEZsKE9wZW5TU0wpMjQgYiBGZihcMDI2KWsoUHl0aG9uKWYoaW50ZXJmYWNlKWgodG8pZihPcClyKGVuU1NMKXAKLWVvcCBlbmQKLSUlUGFnZTogNSA1Ci1UZVhEaWN0IGJlZ2luIDUgNCBib3AgMCA4MyBhIEZsKGxvYWRfY2VydGlmaWNhdGUpbyhcKClwCi1GYyh0KW8oeXApbChlLCkyNSBiKGJ1XDAzM2VyKTkgYiBGbChcKSkyMDggMTgzIHkgRnEoTG9hZCkyNgotYihhKWgoY2VydGlcMDM0Y2F0ZSlnKFwoWDUwOVwpKWcoZnJvbSloKHRoZSlmKHN0cmluZyloCi1GYyhidVwwMzNlcikzNyBiIEZxKGVuY28pcihkZWQpMjcgYih3aXRoKWgodGhlKWcodCluKHlwKXIoZSlnCi1GYyh0eXApbChlKTYgYiBGcSguKTAgMzMwIHkgRmwobG9hZF9jZXJ0aWZpY2F0ZSlvKF9yKW8oZXF1KW8oZXMpbyh0XCgpbwotRmModHlwKWwoZSwpMjUgYihidVwwMzNlcik5IGIgRmwoXCkpMjA4IDQyOSB5IEZxKExvYWQpMjYKLWIoYSloKGNlcnRpXDAzNGNhdGUpZyhyZXF1ZXN0KWcoXChYNTA5UmVxXCkpZyhmcm9tKWcodGhlKWgoc3RyaW5nKWcKLUZjKGJ1XDAzM2VyKTM3IGIgRnEoZW5jbylyKGRlZCkyNyBiKHdpdGgpaCh0aGUpZyh0KW4oeXApcihlKWcKLUZjKHR5cClsKGUpNiBiIEZxKC4pMCA1OTUgeSBGbChsb2FkX3ByaXZhdGVrZXlcKClvIEZjKHR5cClsKGUsKTI1Ci1iKGJ1XDAzM2VyKTkgYiBGYihbKXAgRmMoLCkyOSBiKHApbChhc3NwaHIpbChhc2UpMjAgYgotRmIoXSlwIEZsKFwpKTIwOCA2OTUgeSBGcShMb2FkKTQzIGIoYSloKHByaXYpLTUgYihhdGUpNDQKLWIoayluKGV5KWYoXChQS2V5XCkpaShmcm9tKWYodGhlKWgoc3RyaW5nKWcgRmMoYnVcMDMzZXIpNTMKLWIgRnEoZW5jbylyKGRlZCk0NCBiKHdpdGgpaCh0aGUpZih0KW4oeXApcihlKWggRmModHlwKWwoZSk1MQotYiBGcShcKG0pbih1c3QpNDUgYihiKXIoZSlmKG9uZSlnKG9mKTIwOCA3OTQgeSBGbChGSUxFVFlQRV9QRU0pMjIKLWIgRnEoYW5kKTI4IGIgRmwoRklMRVRZUEVfQVNOMSlwIEZxKFwpLikyMDggOTI3IHkgRmMocClsKGFzc3BocilsKGFzZSkKLTM1IGIgRnEobSluKHVzdCkyOCBiKGIpcihlKWcoZWl0aGVyKWYoYSlnKHN0cmluZylnKG9yKWcoYSlnKGNhbGxiYWMpbgotKGspZihmb3IpaChwcm8pbih2aWRpbmcpZih0aGUpaShwYXNzKWYocGhyYXNlLikwIDEwNzQKLXkgRmwobG9hZF9jcmxcKClwIEZjKHR5cClsKGUsKWcoYnVcMDMzZXIpOSBiIEZsKFwpKTIwOAotMTE3NCB5IEZxKExvYWQpMjUgYihDZXJ0aVwwMzRjYXRlKWkoUmV2KW4obylyKGNhdGlvbillKExpc3QpaShcKENSTFwpKWgKLShkYXRhKWUoZnJvbSlnKGEpaChzdHJpbmcpZyBGYyhidVwwMzNlcik5IGIgRnEoLikzNyBiCi1GYyhidVwwMzNlcillIEZxKGVuY28pcihkZWQpMjcgYih3aXRoKWcodGhlKWcodCluKHlwKXIoZSlnCi1GYyh0eXApbChlKTYgYiBGcSguKTIwOCAxMjczIHkoVGhlKTI3IGIodCluKHlwKXIoZSloCi1GYyh0eXApbChlKTM0IGIgRnEobSluKHVzdCkyOCBiKGVpdGhlcilmIEZsKEZJTEVUWVBFX1BFTSljCi1GcShvcilqIEZsKEZJTEVUWVBFX0FTTjEpcCBGcShcKS4pMCAxNDIwIHkgRmwobG9hZF9wa2NzN19kYXRhXCgpbwotRmModHlwKWwoZSwpZihidVwwMzNlcik5IGIgRmwoXCkpMjA4IDE1MjAgeSBGcShMb2FkKTI2Ci1iKHBrKW4oY3M3KWgoZGF0YSlnKGZyb20pZyh0aGUpaChzdHJpbmcpZyBGYyhidVwwMzNlcikzNgotYiBGcShlbmNvKXIoZGVkKTI4IGIod2l0aClnKHRoZSlnKHQpbih5cClyKGUpZyBGYyh0eXApbChlKTYKLWIgRnEoLikwIDE2ODEgeSBGbChsb2FkX3BrY3MxMlwoKXAgRmMoYnVcMDMzZXIpaiBGYihbKXAKLUZjKCwpMjQgYihwKWwoYXNzcGhyKWwoYXNlKWMgRmIoXSlwIEZsKFwpKTIwOCAxNzgxIHkKLUZxKExvYWQpMzAgYihwayluKGNzMTIpZihkYXRhKWgoZnJvbSloKHRoZSlnKHN0cmluZylnCi1GYyhidVwwMzNlcik5IGIgRnEoLik0NyBiKElmKTMxIGIodGhlKWgocGspbihjczEyKWQoc3RydWN0dXJlKWgoaXMpaAotKGVuY3J5cHRlZCwpZyhhKWcgRmMocClsKGFzc3BocilsKGFzZSkzOSBiIEZxKG0pbih1c3QpMzEKLWIoYilyKGUpMjA4IDE4ODAgeShpbmNsdWRlZC4pMzcgYihUaGUpMjcgYihNQSluKEMpaChpcylnKGFsdyluKGEpbih5cylkCi0oYyluKGhlYyluKGspbihlZClpKGFuZClnKHRoKW4odXMpaChyZXF1aXJlZC4pMjA4IDIwMTMKLXkoU2VlKWYoYWxzbylnKHRoZSloKG1hbilmKHBhZ2UpZyhmb3IpZyh0aGUpaChDKWYoZnVuY3Rpb24paAotRmwoUEtDUzEyX3BhcnNlKXAgRnEoLikwIDIxNjAgeSBGbChzaWduXCgpcCBGYyhrZXksKWgoZGF0YSwpaShkaWdlc3QpOAotYiBGbChcKSkyMDggMjI2MCB5IEZxKFNpZ24pMjcgYihhKWcoZGF0YSlnKHN0cmluZylnKHVzaW5nKWcodGhlKWgoZ2l2KW4KLShlbilmKGspbihleSlnKGFuZClnKG1lc3NhZ2UpZihkaWdlc3QuKTIwOCAyMzkyIHkgRmMoa2V5KTMxCi1iIEZxKGlzKTIzIGIoYSlnIEZsKFBLZXkpZiBGcShpbnN0YW5jZS4pMzUgYiBGYyhkYXRhKWMKLUZxKGlzKTIzIGIoYSlnIEZsKHN0cilnIEZxKGluc3RhbmNlLikzNSBiIEZjKGRpZ2VzdClkCi1GcShpcykyMyBiKGEpZyBGbChzdHIpZyBGcShuYW1pbmcpZyhhKWcoc3VwcClyKG9ydGVkKWcobWVzc2FnZSlmCi0oZGlnZXN0KWgodCluKHlwKXIoZSwpMjA4IDI0OTIgeShmb3IpayhleGFtcGxlKWcgRmwoXDAyMHNoYTFcMDIxKXAKLUZxKC4pNzEgYihOZXcpMjggYihpbilnKHYpbihlcnNpb24pZSgwLjExLikwIDI2MzkgeSBGbCh2ZXJpZnlcKClwCi1GYyhjKWwoZXJ0aVwwMzRjKWwoYXRlLCloKHNpZ25hdHVyKWwoZSwpaihkYXRhLCloKGRpZ2VzdCk4Ci1iIEZsKFwpKTIwOCAyNzM4IHkgRnEoViktNyBiKGVyaWZ5KTI3IGIodGhlKWgoc2lnbmF0dXJlKWUoZm9yKWkoYSlmCi0oZGF0YSlnKHN0cmluZy4pMjA4IDI4NzEgeSBGYyhjKWwoZXJ0aVwwMzRjKWwoYXRlKWkgRnEoaXMpMjQKLWIoYSlmIEZsKFg1MDkpZiBGcShpbnN0YW5jZSloKGNvcnJlc3ApcihvbmRpbmcpZSh0bylqKHRoZSlnKHByaXYpLTUKLWIoYXRlKTIzIGIoayluKGV5KWYod2hpYyluKGgpaShnZW5lcmF0ZWQpZSh0aGUpaShzaWduYXR1cmUuKTM0Ci1iIEZjKHNpZ25hdHVyKWwoZSkyMDggMjk3MSB5IEZxKGlzKTIyIGIoYSlnIEZjKHN0cikzMQotYiBGcShpbnN0YW5jZSkyMyBiKGdpdmluZyllKHRoZSlpKHNpZ25hdHVyZSlmKGl0c2VsZi4pMzUKLWIgRmMoZGF0YSkzMCBiIEZxKGlzKTIzIGIoYSlmIEZjKHN0cikzMSBiIEZxKGluc3RhbmNlKTIzCi1iKGdpdmluZyllKHRoZSlpKGRhdGEpZih0byloKHdoaWMpbihoKWYodGhlKWgoc2lnbmF0dXJlKTIwOAotMzA3MSB5KGFwcGxpZXMuKTM2IGIgRmMoZGlnZXN0KWYgRnEoaXMpMjcgYihhKWcgRmMoc3RyKTM1Ci1iIEZxKGluc3RhbmNlKTI3IGIobmFtaW5nKWcodGhlKWcobWVzc2FnZSllKGRpZ2VzdClpKHQpbih5cClyKGUpZyhvZilnCi0odGhlKWgoc2lnbmF0dXJlLCllKGZvcilnKGV4YW1wbGUpZyBGbChcMDIwc2hhMVwwMjEpcAotRnEoLikyMDggMzE3MCB5KE5ldyloKGluKWgodiluKGVyc2lvbillKDAuMTEuKTAgMzQzMwoteSBGZihYNTA5KWgob2JqZWN0cykwIDM2MzQgeSBGcShYNTA5KWYob2IpNSBiKGplY3RzKTI3Ci1iKGhhKW4odiluKGUpZyh0aGUpaChmb2xsbyluKHdpbmcpZShtZXRobylyKGRzOikwIDM3ODEKLXkgRmwoZ2V0X2lzc3VlclwoXCkpMjA4IDM4ODAgeSBGcShSZXR1cm4paChhbiloKFg1MDlOYW1lKWUob2IpNQotYihqZWN0KTI3IGIocmVwcmVzZW4pbih0aW5nKWYodGhlKWkoaXNzdWVyKWYob2YpZyh0aGUpaChjZXJ0aVwwMzRjYXRlLikKLTAgNDAyNyB5IEZsKGdldF9wdWJrZXlcKFwpKTIwOCA0MTI3IHkgRnEoUmV0dXJuKWYoYSlnKFBLZXkpaChvYik1Ci1iKGplY3QpMjcgYihyZXByZXNlbiluKHRpbmcpZih0aGUpaShwdWJsaWMpZyhrKW4oZXkpZihvZilnKHRoZSloCi0oY2VydGlcMDM0Y2F0ZS4pMCA0Mjc0IHkgRmwoZ2V0X3NlcmlhbF9udW1iZSlvKHJcKClvKFwpKTIwOAotNDM3MyB5IEZxKFJldHVybilmKHRoZSloKGNlcnRpXDAzNGNhdGUpZihzZXJpYWwpZyhuKW4odW0pbihiKXIoZXIuKTAKLTQ1MjAgeSBGbChnZXRfc2lnbmF0dXJlX2FsKW8oZ28pbyhyaXQpbyhobSlvKFwoXCkpMjA4Ci00NjIwIHkgRnEoUmV0dXJuKWModGhlKWcoc2lnbmF0dXJlKWYoYWxnb3JpdGhtKWcodXNlZCloKGluKWcodGhlKWgKLShjZXJ0aVwwMzRjYXRlLikzNSBiKElmKTIzIGIodGhlKWgoYWxnb3JpdGhtKWUoaXMpaCh1bmRlXDAzNG5lZCwpaAotKHJhaXNlKWUgRmwoVmFsdWVFcnJvcilwIEZxKC4pMCA0NzY3IHkgRmwoZ2V0X3N1YmplY3RcKFwpKTIwOAotNDg2NiB5IEZxKFJldHVybikyNyBiKGFuKWgoWDUwOU5hbWUpZShvYik1IGIoamVjdCkyNwotYihyZXByZXNlbiluKHRpbmcpZih0aGUpaShzdWIpNSBiKGplY3QpMjggYihvZilmKHRoZSloKGNlcnRpXDAzNGNhdGUuKTAKLTUwMTMgeSBGbChnZXRfdmVyc2lvblwoXCkpMjA4IDUxMTMgeSBGcShSZXR1cm4pZih0aGUpaChjZXJ0aVwwMzRjYXRlKWYKLSh2KW4oZXJzaW9uLikwIDUyNjAgeSBGbChnZXRfbm90QmVmb3JlXChcKSkyMDggNTM1OSB5Ci1GcShSZXR1cm4pZihhKWgoc3RyaW5nKWYoZ2l2aW5nKWYodGhlKWoodGltZSlmKGIpcihlZm9yZSlmKHdoaWMpbihoKWgKLSh0aGUpZyhjZXJ0aVwwMzRjYXRlKWYoaXMpZyhub3QpaCh2KS01IGIoYWxpZC4pMzcgYihUaGUpMjYKLWIoc3RyaW5nKWcoaXMpaChmb3JtYXR0ZWQpZihhcylnKGFuKXAgMCA1NTQ5IDM5MDEgNCB2Ci0wIDU2NDkgYSBGZigzLjEpODIgYiBGbChjcnlwdG8pMjUgYiBGZihcMDI2KWooR2VuZXJpYylnKGNyeXB0b2dyYXBoaWMpZQotKG1vKXIoZHVsZSkyMjM0IGIoNSlwIGVvcCBlbmQKLSUlUGFnZTogNiA2Ci1UZVhEaWN0IGJlZ2luIDYgNSBib3AgMjA4IDgzIGEgRnEoQVNOMSkyNyBiKEdFTkVSQUxJWkVEVElNRTopMTExMAotMzA3IHkgRmkoWVlZWU1NRERoaG1tc3NaKTExMTAgMzk5IHkoWVlZWU1NRERoaG1tc3MraGhtbSkxMTEwCi00OTAgeShZWVlZTU1ERGhobW1zcy1oaG1tKTIwOCA2NDcgeSBGcShJZiloKG5vKWYodiktNQotYihhbHVlKTI3IGIoZXhpc3RzKWcoZm9yKWcodGhpcyloKFwwMzRlbGQsKWcgRmwoTm9uZSllCi1GcShpcylpKHJldHVybmVkLikwIDc5NCB5IEZsKGdldF9ub3RBZnRlclwoXCkpMjA4IDg5MwoteSBGcShSZXR1cm4paChhKWcoc3RyaW5nKWcoZ2l2aW5nKWcodGhlKWcodGltZSloKGFmdGVyKWYod2hpYyluKGgpaAotKHRoZSlnKGNlcnRpXDAzNGNhdGUpZShpcylpKG5vdClmKHYpLTUgYihhbGlkLik0MyBiKFRoZSkyOQotYihzdHJpbmcpZyhpcylnKGZvcm1hdHRlZCloKGFzKWUoYW4pMjA4IDk5MyB5KEFTTjEpZihHRU5FUkFMSVpFRFRJTUU6KQotMTExMCAxMjE3IHkgRmkoWVlZWU1NRERoaG1tc3NaKTExMTAgMTMwOCB5KFlZWVlNTUREaGhtbXNzK2hobW0pMTExMAotMTQwMCB5KFlZWVlNTUREaGhtbXNzLWhobW0pMjA4IDE1NTYgeSBGcShJZiloKG5vKWYodiktNQotYihhbHVlKTI3IGIoZXhpc3RzKWcoZm9yKWcodGhpcyloKFwwMzRlbGQsKWcgRmwoTm9uZSllCi1GcShpcylpKHJldHVybmVkLikwIDE3MDMgeSBGbChzZXRfbm90QmVmb3JlXCgpcCBGYyh3aGVuKTYKLWIgRmwoXCkpMjA4IDE4MDMgeSBGcShDaGFuZ2UpMzUgYih0aGUpaSh0aW1lKWYoYilyKGVmb3JlKWcod2hpYyluKGgpZwotKHRoZSloKGNlcnRpXDAzNGNhdGUpZihpcylnKG5vdClnKHYpLTUgYihhbGlkLik2MyBiIEZjKHdoZW4pNDMKLWIgRnEoaXMpMzYgYihhKWcoc3RyaW5nKWYoZm9ybWF0dGVkKWgoYXMpZyhhbilnKEFTTjEpMjA4Ci0xOTAyIHkoR0VORVJBTElaRURUSU1FOikxMTEwIDIxMjcgeSBGaShZWVlZTU1ERGhobW1zc1opMTExMAotMjIxOCB5KFlZWVlNTUREaGhtbXNzK2hobW0pMTExMCAyMzA5IHkoWVlZWU1NRERoaG1tc3MtaGhtbSkwCi0yNTE0IHkgRmwoc2V0X25vdEFmdGVyXCgpcCBGYyh3aGVuKTYgYiBGbChcKSkyMDggMjYxMwoteSBGcShDaGFuZ2UpMzggYih0aGUpaCh0aW1lKWgoYWZ0ZXIpZSh3aGljKW4oaCloKHRoZSloKGNlcnRpXDAzNGNhdGUpZQotKGlzKWgobm90KWcodiktNSBiKGFsaWQuKTcxIGIgRmMod2hlbik0NiBiIEZxKGlzKTM5IGIoYSlnKHN0cmluZylmCi0oZm9ybWF0dGVkKWgoYXMpZihhbiloKEFTTjEpMjA4IDI3MTMgeShHRU5FUkFMSVpFRFRJTUU6KTExMTAKLTI5MzcgeSBGaShZWVlZTU1ERGhobW1zc1opMTExMCAzMDI5IHkoWVlZWU1NRERoaG1tc3MraGhtbSkxMTEwCi0zMTIwIHkoWVlZWU1NRERoaG1tc3MtaGhtbSkwIDMzMjQgeSBGbChnbXRpbWVfYWRqX25vdEJlKW8oZm8pbyhyZVwoKW8KLUZjKHRpbWUpNiBiIEZsKFwpKTIwOCAzNDI0IHkgRnEoQSluKGRqdXN0KTI4IGIodGhlKWcodGltZXN0YW1wKWcoXChpbilnCi0oR01UXCkpZyh3aGVuKWcodGhlKWYoY2VydGlcMDM0Y2F0ZSlnKHN0YXJ0cylnKGIpcihlaW5nKWgodiktNQotYihhbGlkLikwIDM1NzEgeSBGbChnbXRpbWVfYWRqX25vdEFmKW8odGUpbyhyXCgpcCBGYyh0KW8oaW1lKTYKLWIgRmwoXCkpMjA4IDM2NzEgeSBGcShBKW4oZGp1c3QpMjggYih0aGUpZyh0aW1lc3RhbXApZyhcKGluKWcoR01UXCkpZwotKHdoZW4pZyh0aGUpZihjZXJ0aVwwMzRjYXRlKWcoc3RvcHMpZyhiKXIoZWluZyloKHYpLTUKLWIoYWxpZC4pMCAzODE3IHkgRmwoaGFzX2V4cGlyZWRcKFwpKTIwOCAzOTE3IHkgRnEoQ2hlYyluKGtzKTMyCi1iKHRoZSloKGNlcnRpXDAzNGNhdGUncylmKHRpbWUpaShzdGFtcClmKGFnYWluc3QpZihjdXJyZW4pbih0KWcodGltZS4pCi01NCBiKFJldHVybnMpMzMgYih0cnVlKWcoaWYpZyh0aGUpaChjZXJ0aVwwMzRjYXRlKWUoaGFzKWgoZXhwaXJlZCkyMDgKLTQwMTcgeShhbmQpMjcgYihmYWxzZSlnKG90aGVyd2lzZS4pMCA0MTY0IHkgRmwoc2V0X2lzc3VlclwoKXAKLUZjKGlzc3Vlcik5IGIgRmwoXCkpMjA4IDQyNjMgeSBGcShTZXQpMjggYih0aGUpZihpc3N1ZXIpZyhvZiloKHRoZSlnCi0oY2VydGlcMDM0Y2F0ZSlmKHRvKWcgRmMoaXNzdWVyKTkgYiBGcSguKTAgNDQxMCB5IEZsKHNldF9wdWJrZXlcKClwCi1GYyhwa2V5KWUgRmwoXCkpMjA4IDQ1MTAgeSBGcShTZXQpMjggYih0aGUpZihwdWJsaWMpaChrKW4oZXkpZihvZiloCi0odGhlKWcoY2VydGlcMDM0Y2F0ZSlmKHRvKWcgRmMocGtleSk3IGIgRnEoLikwIDQ2NTYgeQotRmwoc2V0X3NlcmlhbF9udW1iZSlvKHJcKClvIEZjKHNlcmlhbG5vKWUgRmwoXCkpMjA4IDQ3NTYKLXkgRnEoU2V0KTI4IGIodGhlKWYoc2VyaWFsKWcobiluKHVtKW4oYilyKGVyKWcob2YpaCh0aGUpZwotKGNlcnRpXDAzNGNhdGUpZih0bylnIEZjKHNlcmlhbG5vKTUgYiBGcSguKTAgNDkwMyB5IEZsKHNldF9zdWJqZWN0XCgpcAotRmMoc3ViamUpbChjdClqIEZsKFwpKTIwOCA1MDAzIHkgRnEoU2V0KTI4IGIodGhlKWYoc3ViKTUKLWIoamVjdCkyOCBiKG9mKWcodGhlKWcoY2VydGlcMDM0Y2F0ZSlmKHRvKWcgRmMoc3ViamUpbChjdCk4Ci1iIEZxKC4pMCA1MTQ5IHkgRmwoc2V0X3ZlcnNpb25cKClwIEZjKHZlcnNpb24pZSBGbChcKSkyMDgKLTUyNDkgeSBGcShTZXQpMjggYih0aGUpZihjZXJ0aVwwMzRjYXRlKWcodiluKGVyc2lvbilmKHRvKWkKLUZjKHZlcnNpb24pNiBiIEZxKC4pMCA1Mzk2IHkgRmwoc2lnblwoKXAgRmMocGtleSwpMjkKLWIoZGlnZXN0KTggYiBGbChcKSlwIDAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYSBGZig2KTIyMzkKLWIoMyk4MyBiIEZsKE9wZW5TU0wpMjQgYiBGZihcMDI2KWsoUHl0aG9uKWYoaW50ZXJmYWNlKWgodG8pZihPcClyCi0oZW5TU0wpcCBlb3AgZW5kCi0lJVBhZ2U6IDcgNwotVGVYRGljdCBiZWdpbiA3IDYgYm9wIDIwOCA4MyBhIEZxKFNpZ24pMjIgYih0aGUpaChjZXJ0aVwwMzRjYXRlLClmCi0odXNpbmcpZyh0aGUpaChrKW4oZXkpZyBGYyhwa2V5KTMxIGIgRnEoYW5kKTIyIGIodGhlKWgobWVzc2FnZSllCi0oZGlnZXN0KWgoYWxnb3JpdGhtKWYoaWRlbiluKHRpXDAzNGVkKWkoYiluKHkpZih0aGUpaChzdHJpbmcpZgotRmMoZGlnZXN0KTggYiBGcSguKTAgMjMwIHkgRmwoc3ViamVjdF9uYW1lX2hhcylvKGhcKClvKFwpKTIwOAotMzMwIHkgRnEoUmV0dXJuKTI3IGIodGhlKWgoaGFzaClmKG9mKWgodGhlKWcoY2VydGlcMDM0Y2F0ZSlmKHN1Yik1Ci1iKGplY3QuKTAgNDc2IHkgRmwoZGlnZXN0XCgpcCBGYyhkaWdlc3RfbmFtZSloIEZsKFwpKTIwOAotNTc2IHkgRnEoUmV0dXJuKTM4IGIoYSlmKGRpZ2VzdCloKG9mKWcodGhlKWcoY2VydGlcMDM0Y2F0ZSwpaSh1c2luZyllCi0odGhlKWcgRmMoZGlnZXN0X25hbWUpNDUgYiBGcShtZXRobylyKGQuKTY5IGIgRmMoZGlnZXN0X25hbWUpNDUKLWIgRnEobSluKHVzdCkzOCBiKGIpcihlKWcoYSlnKHN0cmluZykyMDggNjc2IHkoZGVzY3JpYmluZykyOAotYihhKWkoZGlnZXN0KWYoYWxnb3JpdGhtKWYoc3VwcClyKG9ydGVkKWkoYiluKHkpZihPcClyKGVuU1NMKWgoXChiKW4oeSkKLWcoRVZQX2dldF9kaWdlc3RiKW4oeW5hbWUsKWYoc3ApcihlY2lcMDM0Y2FsbHlcKS4pNDMKLWIoRiktNyBiKG9yKTIwOCA3NzUgeShleGFtcGxlLCkyNyBiIEZsKCJtZDUiKWUgRnEob3IpaQotRmwoInNoYTEiKXAgRnEoLikwIDkyMiB5IEZsKGFkZF9leHRlbnNpb25zXCgpcCBGYyhleClvKHRlbnNpb25zKTcKLWIgRmwoXCkpMjA4IDEwMjIgeSBGcShBKW4oZGQpMjcgYih0aGUpaChleHRlbnNpb25zKWYoaW4paCh0aGUpZwotKHNlcXVlbmNlKWYgRmMoZXh0ZW5zaW9ucykzNCBiIEZxKHRvKTI3IGIodGhlKWgoY2VydGlcMDM0Y2F0ZS4pMAotMTE2OSB5IEZsKGdldF9leHRlbnNpb25fY28pbyh1bilvKHRcKFwpKTIwOCAxMjY4IHkgRnEoUmV0dXJuKWYodGhlKWgobikKLW4odW0pbihiKXIoZXIpZihvZiloKGV4dGVuc2lvbnMpZihvbilnKHRoaXMpaChjZXJ0aVwwMzRjYXRlLik3MwotYihOZXcpMjggYihpbilnKHYpbihlcnNpb24pZSgwLjEyLikwIDE0MTUgeSBGbChnZXRfZXh0ZW5zaW9uXCgpcAotRmMoaW5kZXgpMTAgYiBGbChcKSkyMDggMTUxNSB5IEZxKFJldHJpZXYpbihlKTI2IGIodGhlKWkoZXh0ZW5zaW9uKWYKLShvbiloKHRoaXMpZihjZXJ0aVwwMzRjYXRlKWcoYXQpaCh0aGUpZyhnaXYpbihlbilmKGluZGV4LikyMDgKLTE2NDggeShFeHRlbnNpb25zKTM1IGIob24paChhKWYoY2VydGlcMDM0Y2F0ZSlnKGFyZSlnKGspbihlcHQpaChpbilnCi0ob3JkZXIuKTYwIGIoVGhlKTM1IGIoaW5kZXgpaChwYXJhbWV0ZXIpZShzZWxlY3RzKWkod2hpYyluKGgpZgotKGV4dGVuc2lvbiloKHdpbGwpZyhiKXIoZSkyMDggMTc0NyB5KHJldHVybmVkLilnKFRoZSkyOAotYihyZXR1cm5lZClmKG9iKTUgYihqZWN0KTI3IGIod2lsbCloKGIpcihlKWcoYW4pZihYNTA5RXh0ZW5zaW9uKWYKLShpbnN0YW5jZS4pNzQgYihOZXcpMjggYihpbilmKHYpbihlcnNpb24pZigwLjEyLikwIDIwMTAKLXkgRmYoWDUwOU5hbWUpZyhvYmplY3RzKTAgMjIxMSB5IEZxKFg1MDlOYW1lKWcob2IpNSBiKGplY3RzKTI3Ci1iKGhhKW4odiluKGUpZyh0aGUpaChmb2xsbyluKHdpbmcpZShtZXRobylyKGRzOikwIDIzNTgKLXkgRmwoaGFzaFwoXCkpMjA4IDI0NTcgeSBGcShSZXR1cm4pZShhbilnKGluKW4odGVnZXIpZihnaXZpbmcpZyh0aGUpaQotKFwwMzRyc3QpZihmb3VyKWcoYiluKHl0ZXMpZihvZiloKHRoZSloKE1ENSlmKGRpZ2VzdClnKG9mKWcodGhlKWgoREVSKWcKLShyZXByZXNlbiluKHRhdGlvbillKG9mKWgodGhlKWcobmFtZS4pMCAyNjA0IHkgRmwoZGVyXChcKSkyMDgKLTI3MDQgeSBGcShSZXR1cm4paihhKWcoc3RyaW5nKWcoZ2l2aW5nKWcodGhlKWgoREVSKWgocmVwcmVzZW4pbih0YXRpb24pCi1jKG9mKWoodGhlKWcobmFtZS4pMCAyODUxIHkgRmwoZ2V0X2NvbXBvbmVudHNcKFwpKTIwOAotMjk1MCB5IEZxKFJldHVybilmKGEpZyhsaXN0KWgob2YpZyh0KW4odyluKG8tdHVwbGVzKWUob2YpaShzdHJpbmdzKWUKLShnaXZpbmcpaCh0aGUpaChjb21wKXIob25lbiluKHRzKWYob2YpaCh0aGUpZyhuYW1lLikwCi0zMDk3IHkoWDUwOU5hbWUpZShvYik1IGIoamVjdHMpMjcgYihoYSluKHYpbihlKWcodGhlKWgoZm9sbG8pbih3aW5nKWUKLShtZW0pbihiKXIoZXJzOikwIDMyNDQgeSBGbChjb3VudHJ5TmFtZSkyMDggMzM0NCB5IEZxKFRoZSloKGNvdW4pbih0cnkpCi1nKG9mKWcodGhlKWgoZW4pbih0aXQpbih5KS03IGIoLikzNyBiIEZsKEMpMjcgYiBGcShtYSluKHkpZyhiKXIoZSloCi0odXNlZClnKGFzKWYoYW4pZyhhbGlhcylmKGZvciloIEZsKGNvdW50cnlOYW1lKXAgRnEoLikwCi0zNDkwIHkgRmwoc3RhdGVPclByb3ZpbmNlTilvKGFtKW8oZSkyMDggMzU5MCB5IEZxKFRoZSlnKHN0YXRlKWgob3IpZQotKHBybyluKHZpbmNlKWcob2YpaSh0aGUpZyhlbiluKHRpdCluKHkpLTcgYiguKTM3IGIgRmwoU1QpMjcKLWIgRnEobWEpbih5KWYoYilyKGUpaSh1c2VkKWcoYXMpZihhbilnKGFsaWFzKWcoZm9yKWcKLUZsKHN0YXRlT3JQcm92aW5jZSlvKE5hKW8obWUpcCBGcShcMjY3KTAgMzczNyB5IEZsKGxvY2FsaXR5TmFtZSkyMDgKLTM4MzcgeSBGcShUaGUpZyhsbylyKGNhbGl0KW4oeSlnKG9mKWgodGhlKWYoZW4pbih0aXQpbih5KS03Ci1iKC4pMzcgYiBGbChMKTI4IGIgRnEobWEpbih5KWUoYilyKGUpaSh1c2VkKWcoYXMpZihhbilnKGFsaWFzKWcoZm9yKWcKLUZsKGxvY2FsaXR5TmFtZSlwIEZxKC4pMCAzOTgzIHkgRmwob3JnYW5pemF0aW9uTmFtZSkyMDgKLTQwODMgeSBGcShUaGUpZyhvcmdhbml6YXRpb24pZShuYW1lKWoob2YpZih0aGUpaChlbiluKHRpdCluKHkpLTcKLWIoLikzNyBiIEZsKE8pMjcgYiBGcShtYSluKHkpZyhiKXIoZSloKHVzZWQpZyhhcyllKGFuKWkoYWxpYXMpZShmb3IpaAotRmwob3JnYW5pemF0aW9uTmFtZSlwIEZxKC4pMCA0MjMwIHkgRmwob3JnYW5pemF0aW9uYWxVbilvKGl0KW8oTmFtKW8oZSkKLTIwOCA0MzMwIHkgRnEoVGhlKWcob3JnYW5pemF0aW9uYWwpZSh1bml0KWoob2YpZyh0aGUpZyhlbiluKHRpdCluKHkpLTcKLWIoLikzNiBiIEZsKE9VKTI3IGIgRnEobWEpbih5KWcoYilyKGUpaCh1c2VkKWcoYXMpZihhbilnKGFsaWFzKWYoZm9yKWgKLUZsKG9yZ2FuaXphdGlvbmFsVW5pKW8odE4pbyhhbSlvKGUpcCBGcSguKTAgNDQ3NiB5IEZsKGNvbW1vbk5hbWUpMjA4Ci00NTc2IHkgRnEoVGhlKWcoY29tbW9uKWcobmFtZSloKG9mKWYodGhlKWgoZW4pbih0aXQpbih5KS03Ci1iKC4pMzcgYiBGbChDTikyNyBiIEZxKG1hKW4oeSlmKGIpcihlKWkodXNlZClnKGFzKWYoYW4pZyhhbGlhcylnKGZvcilnCi1GbChjb21tb25OYW1lKXAgRnEoLikwIDQ3MjMgeSBGbChlbWFpbEFkZHJlc3MpMjA4IDQ4MjMKLXkgRnEoVGhlKWcoZS1tYWlsKWcoYWRkcmVzcylmKG9mKWkodGhlKWcoZW4pbih0aXQpbih5KS03Ci1iKC4pMCA1MDg2IHkgRmYoWDUwOVJlcSkyNiBiKG9iamVjdHMpMCA1Mjg2IHkgRnEoWDUwOVJlcSlnKG9iKTUKLWIoamVjdHMpMjcgYihoYSluKHYpbihlKWcodGhlKWgoZm9sbG8pbih3aW5nKWUobWV0aG8pcihkczopcAotMCA1NTQ5IDM5MDEgNCB2IDAgNTY0OSBhIEZmKDMuMSk4MiBiIEZsKGNyeXB0bykyNSBiIEZmKFwwMjYpaihHZW5lcmljKWcKLShjcnlwdG9ncmFwaGljKWUobW8pcihkdWxlKTIyMzQgYig3KXAgZW9wIGVuZAotJSVQYWdlOiA4IDgKLVRlWERpY3QgYmVnaW4gOCA3IGJvcCAwIDgzIGEgRmwoZ2V0X3B1YmtleVwoXCkpMjA4IDE4MwoteSBGcShSZXR1cm4pMjcgYihhKWcoUEtleSloKG9iKTUgYihqZWN0KTI3IGIocmVwcmVzZW4pbih0aW5nKWYodGhlKWkKLShwdWJsaWMpZyhrKW4oZXkpZihvZilnKHRoZSloKGNlcnRpXDAzNGNhdGUpZihyZXF1ZXN0LikwCi0zMzAgeSBGbChnZXRfc3ViamVjdFwoXCkpMjA4IDQyOSB5IEZxKFJldHVybilnKGFuKWgoWDUwOU5hbWUpZShvYik1Ci1iKGplY3QpMjcgYihyZXByZXNlbiluKHRpbmcpZih0aGUpaShzdWIpNSBiKGplY3QpMjggYihvZilmKHRoZSloCi0oY2VydGlcMDM0Y2F0ZS4pMCA1NzYgeSBGbChzZXRfcHVia2V5XCgpcCBGYyhwa2V5KTcgYgotRmwoXCkpMjA4IDY3NiB5IEZxKFNldCkyOCBiKHRoZSlmKHB1YmxpYyloKGspbihleSlmKG9mKWgodGhlKWcKLShjZXJ0aVwwMzRjYXRlKWYocmVxdWVzdClnKHRvKWcgRmMocGtleSk3IGIgRnEoLikwIDgyMwoteSBGbChzaWduXCgpcCBGYyhwa2V5LCkyOSBiKGRpZ2VzdCk4IGIgRmwoXCkpMjA4IDkyMgoteSBGcShTaWduKTM2IGIodGhlKWcoY2VydGlcMDM0Y2F0ZSlnKHJlcXVlc3QsKWgodXNpbmcpZih0aGUpZyhrKW4oZXkpaAotRmMocGtleSk0NSBiIEZxKGFuZCkzNiBiKHRoZSlnKG1lc3NhZ2UpZihkaWdlc3QpZyhhbGdvcml0aG0pZyhpZGVuKW4KLSh0aVwwMzRlZClpKGIpbih5KWYodGhlKTIwOCAxMDIyIHkoc3RyaW5nKTI4IGIgRmMoZGlnZXN0KTgKLWIgRnEoLikwIDExNjkgeSBGbCh2ZXJpZnlcKClwIEZjKHBrZXkpZiBGbChcKSkyMDggMTI2OAoteSBGcShWKS03IGIoZXJpZnkpMjcgYihhKWcoY2VydGlcMDM0Y2F0ZSlnKHJlcXVlc3QpZyh1c2luZylnKHRoZSloCi0ocHVibGljKWcoayluKGV5KWcgRmMocGtleSk3IGIgRnEoLikwIDE0MTUgeSBGbChzZXRfdmVyc2lvblwoKXAKLUZjKHZlcnNpb24pZiBGbChcKSkyMDggMTUxNSB5IEZxKFNldCkyOCBiKHRoZSlmKHYpbihlcnNpb24pZihcKFJGKW4oQylpCi0oMjQ1OSwpZSg0LjEuMi4xXCkpZyhvZilpKHRoZSlnKGNlcnRpXDAzNGNhdGUpZihyZXF1ZXN0KWYodG8paQotRmModmVyc2lvbik2IGIgRnEoLikwIDE2NjIgeSBGbChnZXRfdmVyc2lvblwoXCkpMjA4IDE3NjEKLXkgRnEoR2V0KTI4IGIodGhlKWYodiluKGVyc2lvbilmKFwoUkYpbihDKWkoMjQ1OSwpZSg0LjEuMi4xXCkpZyhvZilpCi0odGhlKWcoY2VydGlcMDM0Y2F0ZSlmKHJlcXVlc3QuKTAgMjAyNCB5IEZmKFg1MDlTdG8pbihyZSlmKG9iamVjdHMpMAotMjIyNSB5IEZxKFRoZSlpKFg1MDlTdG9yZSlkKG9iKTUgYihqZWN0KTI4IGIoaGFzKWYoY3VycmVuKW4odGx5KWYoanVzdCkKLWkob25lKWcobWV0aG8pcihkOikwIDIzNzIgeSBGbChhZGRfY2VydFwoKXAgRmMoYylsKGVydCk4Ci1iIEZsKFwpKTIwOCAyNDcxIHkgRnEoQSluKGRkKTI3IGIodGhlKWgoY2VydGlcMDM0Y2F0ZSlmCi1GYyhjKWwoZXJ0KTM2IGIgRnEodG8pMjcgYih0aGUpaChjZXJ0aVwwMzRjYXRlKWYoc3RvcmUuKTAKLTI3MzQgeSBGZihQS2V5KWcob2JqZWN0cykwIDI5MzUgeSBGcShUaGUpaChQS2V5KWYob2IpNQotYihqZWN0KTI3IGIoaGFzKWcodGhlKWgoZm9sbG8pbih3aW5nKWYobWV0aG8pcihkczopMAotMzA4MiB5IEZsKGJpdHNcKFwpKTIwOCAzMTgxIHkgRnEoUmV0dXJuKWcodGhlKWgobiluKHVtKW4oYilyKGVyKWYob2YpaAotKGJpdHMpZyhvZilmKHRoZSloKGspbihleSktNyBiKC4pMCAzMzI4IHkgRmwoZ2VuZXJhdGVfa2V5XCgpcAotRmModHlwKWwoZSwpMjUgYihiaXRzKTcgYiBGbChcKSkyMDggMzQyOCB5IEZxKEdlbmVyYXRlKTIyCi1iKGEpaChwdWJsaWMvcHJpdiktNSBiKGF0ZSkyMyBiKGspbihleSlmKHBhaXIpaChvZilnKHRoZSloKHQpbih5cClyKGUpZgotRmModHlwKWwoZSkzMCBiIEZxKFwob25lKTIzIGIob2YpMzAgYiBGbChUWVBFX1JTQSkxOQotYiBGcShhbmQpMjQgYiBGbChUWVBFX0RTQSlwIEZxKFwpKWMod2l0aClqKHRoZSloKHNpemUpZgotRmMoYml0cyk3IGIgRnEoLikwIDM1NzUgeSBGbCh0eXBlXChcKSkyMDggMzY3NCB5IEZxKFJldHVybikyNwotYih0aGUpaCh0KW4oeXApcihlKWcob2YpZih0aGUpaChrKW4oZXkpLTcgYiguKTAgMzgyMQoteSBGbChjaGVja1woXCkpMjA4IDM5MjEgeSBGcShDaGVjKW4oaykyNSBiKHRoZSloKGNvbnNpc3RlbmN5KWYob2YpZwotKHRoaXMpaChrKW4oZXkpLTcgYigsKTI2IGIocmV0dXJuaW5nKWYoVCktNyBiKHJ1ZSkyNQotYihpZiloKGl0KWgoaXMpZShjb25zaXN0ZW4pbih0KWcoYW5kKWgocmFpc2luZyllKGFuKWkoZXhjZXB0aW9uKWYKLShvdGhlcndpc2UuKTIwOCA0MDIwIHkoVGhpcylpKGlzKWcob25seSloKHYpLTUgYihhbGlkKTI3Ci1iKGZvcilnKFJTQSloKGspbihleXMuKTM2IGIoU2VlKTI4IGIodGhlKWcoT3ApcihlblNTTClmKFJTQV9jKW4oaGVjKW4KLShrX2spbihleSlmKG1hbiloKHBhZ2UpZyhmb3IpZyhmdXJ0aGVyKWcobGltaXRhdGlvbnMuKTAKLTQyODMgeSBGZihQSyluKENTNylnKG9iamVjdHMpMCA0NDg0IHkgRnEoUEspbihDUzcpZyhvYik1Ci1iKGplY3RzKTI3IGIoaGEpbih2KW4oZSlmKHRoZSlpKGZvbGxvKW4od2luZylmKG1ldGhvKXIoZHM6KTAKLTQ2MzEgeSBGbCh0eXBlX2lzX3NpZ25lZFwoXCkpMjA4IDQ3MzAgeSBGcShGSVhNRSkwIDQ4NzcKLXkgRmwodHlwZV9pc19lbnZlbG9wZSlvKGRcKClvKFwpKTIwOCA0OTc3IHkgRnEoRklYTUUpMAotNTEyNCB5IEZsKHR5cGVfaXNfc2lnbmVkQW4pbyhkRSlvKG52ZSlvKGxvKW8ocGUpbyhkXChcKSkyMDgKLTUyMjMgeSBGcShGSVhNRSlwIDAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYSBGZig4KTIyMzkKLWIoMyk4MyBiIEZsKE9wZW5TU0wpMjQgYiBGZihcMDI2KWsoUHl0aG9uKWYoaW50ZXJmYWNlKWgodG8pZihPcClyCi0oZW5TU0wpcCBlb3AgZW5kCi0lJVBhZ2U6IDkgOQotVGVYRGljdCBiZWdpbiA5IDggYm9wIDAgODMgYSBGbCh0eXBlX2lzX2RhdGFcKFwpKTIwOAotMTgzIHkgRnEoRklYTUUpMCAzMzAgeSBGbChnZXRfdHlwZV9uYW1lXChcKSkyMDggNDI5IHkKLUZxKEdldCkyOCBiKHRoZSlmKHQpbih5cClyKGUpaChuYW1lKWcob2YpZih0aGUpaChQSyluKENTNy4pMAotNjkyIHkgRmYoUEspbihDUzEyKWUob2JqZWN0cykwIDg5MyB5IEZxKFBLKW4oQ1MxMilnKG9iKTUKLWIoamVjdHMpMjggYihoYSluKHYpbihlKWUodGhlKWkoZm9sbG8pbih3aW5nKWUobWV0aG8pcihkczopMAotMTA1NCB5IEZsKGV4cG9ydFwoKXAgRmIoWylwIEZjKHApbChhc3NwaHIpbChhc2U9Tm9uZSkxNgotYiBGYihdWylwIEZjKCwpMjkgYihpdGVyPTIwNDgpYyBGYihdWylwIEZjKCwpayhtYWNpdGVyPTEpMjQKLWIgRmIoXSlwIEZsKFwpKTIwOCAxMTU0IHkgRnEoUmV0dXJucylqKGEpZyhQSyluKENTMTIpZyhvYik1Ci1iKGplY3QpMjcgYihhcylnKGEpZyhzdHJpbmcuKTIwOCAxMjg2IHkoVGhlKWcob3B0aW9uYWwpZwotRmMocClsKGFzc3BocilsKGFzZSkzNSBiIEZxKG0pbih1c3QpMjggYihiKXIoZSlnKGEpZihzdHJpbmcpZyhub3QpaChhKWYKLShjYWxsYmFjKW4oay4pMjA4IDE0MTkgeShTZWUpZyhhbHNvKWcodGhlKWgobWFuKWYocGFnZSlnKGZvcilnKHRoZSloKEMpCi1mKGZ1bmN0aW9uKWggRmwoUEtDUzEyX2NyZWF0ZSlwIEZxKC4pMCAxNTY2IHkgRmwoZ2V0X2NhX2NlcnRpZmljYSlvKHRlKQotbyhzXChcKSkyMDggMTY2NiB5IEZxKFJldHVybilpKENBKWgoY2VydGlcMDM0Y2F0ZXMpZih3aXRoaW4paCh0aGUpZyhQSykKLW4oQ1MxMilmKG9iKTUgYihqZWN0KTMwIGIoYXMpZyhhKWgodHVwbGUuKTQ2IGIoUmV0dXJucykzMQotYiBGbChOb25lKWUgRnEoaWYpaShubylmKENBKWgoY2VydGlcMDM0Y2F0ZXMpZihhcmUpMjA4Ci0xNzY1IHkocHJlc2VuKW4odC4pMCAxOTEyIHkgRmwoZ2V0X2NlcnRpZmljYXRlXCgpbyhcKSkyMDgKLTIwMTIgeSBGcShSZXR1cm4pZChjZXJ0aVwwMzRjYXRlKWcocClyKG9ydGlvbilnKG9mKWgodGhlKWcoUEspbihDUzEyKWUKLShzdHJ1Y3R1cmUuKTAgMjE1OSB5IEZsKGdldF9mcmllbmRseW5hbWUpbyhcKFwpKTIwOCAyMjU4Ci15IEZxKFJldHVybiloKGZyaWVuZGx5TmFtZSloKHApcihvcnRpb24pZihvZilnKHRoZSloKFBLKW4oQ1MxMilmCi0oc3RydWN0dXJlLikwIDI0MDUgeSBGbChnZXRfcHJpdmF0ZWtleVwoXCkpMjA4IDI1MDUgeQotRnEoUmV0dXJuKWcocHJpdiktNSBiKGF0ZSkyNyBiKGspbihleSlnKHApcihvcnRpb24pZyhvZiloKHRoZSlnKFBLKW4KLShDUzEyKWUoc3RydWN0dXJlKTAgMjY1MiB5IEZsKHNldF9jYV9jZXJ0aWZpY2Epbyh0ZSlvKHNcKClwCi1GYyhjKS01IGIoYWMpbChlcnRzKTcgYiBGbChcKSkyMDggMjc1MSB5IEZxKFJlcGxhY2UpMjcKLWIob3IpZihzZXQpaSh0aGUpZyhDQSlnKGNlcnRpXDAzNGNhdGVzKWUod2l0aGluKWoodGhlKWYoUEspbihDUzEyKWUob2IpCi01IGIoamVjdCkyNyBiKHdpdGgpaCh0aGUpZyhzZXF1ZW5jZSlmIEZjKGMpbChhYylsKGVydHMpNwotYiBGcSguKTIwOCAyODg0IHkoU2V0KTI4IGIgRmMoYylsKGFjKWwoZXJ0cykzNCBiIEZxKHRvKTI3Ci1iIEZsKE5vbmUpZiBGcSh0bylpKHJlbW8pbih2KW4oZSllKGFsbCloKENBKWgoY2VydGlcMDM0Y2F0ZXMuKTAKLTMwMzEgeSBGbChzZXRfY2VydGlmaWNhdGVcKClvIEZjKGMpbChlcnQpOCBiIEZsKFwpKTIwOAotMzEzMSB5IEZxKFJlcGxhY2UpMjcgYihvcilmKHNldClpKHRoZSlnKGNlcnRpXDAzNGNhdGUpZihwKXIob3J0aW9uKWcKLShvZilnKHRoZSloKFBLKW4oQ1MxMilmKHN0cnVjdHVyZS4pMCAzMjc3IHkgRmwoc2V0X2ZyaWVuZGx5bmFtZSlvKFwoKXAKLUZjKG4pbyhhbWUpNiBiIEZsKFwpKTIwOCAzMzc3IHkgRnEoUmVwbGFjZSkyNyBiKG9yKWYoc2V0KWkodGhlKWcKLShmcmllbmRseU5hbWUpZihwKXIob3J0aW9uKWcob2YpaCh0aGUpZyhQSyluKENTMTIpZShzdHJ1Y3R1cmUuKTAKLTM1MjQgeSBGbChzZXRfcHJpdmF0ZWtleVwoKXAgRmMocGtleSk3IGIgRmwoXCkpMjA4IDM2MjQKLXkgRnEoUmVwbGFjZSkyNyBiKG9yKWYoc2V0KWkocHJpdiktNSBiKGF0ZSkyNyBiKGspbihleSlnKHApcihvcnRpb24pZwotKG9mKWgodGhlKWcoUEspbihDUzEyKWUoc3RydWN0dXJlKTAgMzg4NyB5IEZmKFg1MDlFeHRlbnNpb24pZihvYmplY3RzKTAKLTQwODcgeSBGcShYNTA5RXh0ZW5zaW9uKWgob2IpNSBiKGplY3RzKTI3IGIoaGEpbih2KW4oZSlnKHNldiluKGVyYWwpZgotKG1ldGhvKXIoZHM6KTAgNDIzNCB5IEZsKGdldF9jcml0aWNhbFwoXCkpMjA4IDQzMzQgeQotRnEoUmV0dXJuKWgodGhlKWgoY3JpdGljYWwpZihcMDM0ZWxkKWgob2YpZih0aGUpaChleHRlbnNpb24pZihvYik1Ci1iKGplY3QuKTAgNDQ4MCB5IEZsKGdldF9zaG9ydF9uYW1lXChcKSkyMDggNDU4MCB5IEZxKFJldHJpZXYpbihlKTI2Ci1iKHRoZSlpKHNob3J0KWYoZGVzY3JpcHRpdiluKGUpZyhuYW1lKWcoZm9yKWcodGhpcyloKGV4dGVuc2lvbi4pMjA4Ci00NzEzIHkoVGhlKWYocmVzdWx0KWcoaXMpaChhKWYoYiluKHl0ZSloKHN0cmluZyllKGxpayluKGUpaQotRmwoXDAyMGJhc2ljQ29uc3RyYWluKW8odHMpbyhcMDIxKXAgRnEoLik2OCBiKE5ldykyNwotYihpbiloKHYpbihlcnNpb24pZSgwLjEyLikwIDQ4NjAgeSBGbChnZXRfZGF0YVwoXCkpMjA4Ci00OTU5IHkgRnEoUmV0cmlldiluKGUpZyh0aGUpaShkYXRhKWYoZm9yKWcodGhpcyloKGV4dGVuc2lvbi4pMjA4Ci01MDkyIHkoVGhlKWYocmVzdWx0KWcoaXMpaCh0aGUpZyhBU04uMSlnKGVuY28pcihkZWQpZihmb3JtKWcob2YpaCh0aGUpZwotKGV4dGVuc2lvbilmKGRhdGEpZyhhcylnKGEpZyhiKW4oeXRlKWcoc3RyaW5nLik3NCBiKE5ldykyNwotYihpbiloKHYpbihlcnNpb24pZSgwLjEyLilwIDAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYQotRmYoMy4xKTgyIGIgRmwoY3J5cHRvKTI1IGIgRmYoXDAyNilqKEdlbmVyaWMpZyhjcnlwdG9ncmFwaGljKWUobW8pcgotKGR1bGUpMjIzNCBiKDkpcCBlb3AgZW5kCi0lJVBhZ2U6IDEwIDEwCi1UZVhEaWN0IGJlZ2luIDEwIDkgYm9wIDAgODMgYSBGZihOZXRzY2FwKXIoZVNQS0kpMjcgYihvYmplY3RzKTAKLTI4MyB5IEZxKE5ldHNjYXApcihlU1BLSSloKG9iKTUgYihqZWN0cykyNyBiKGhhKW4odiluKGUpZih0aGUpaShmb2xsbyluCi0od2luZyllKG1ldGhvKXIoZHM6KTAgNDMwIHkgRmwoYjY0X2VuY29kZVwoXCkpMjA4IDUzMAoteSBGcShSZXR1cm4paChhKWcoYmFzZTY0LWVuY28pcihkZWQpZihzdHJpbmcpaChyZXByZXNlbiluKHRhdGlvbillKG9mKWoKLSh0aGUpZyhvYik1IGIoamVjdC4pMCA2NzcgeSBGbChnZXRfcHVia2V5XChcKSkyMDggNzc2Ci15IEZxKFJldHVybikyNyBiKHRoZSloKHB1YmxpYylnKGspbihleSlmKG9mKWgob2IpNSBiKGplY3QuKTAKLTkyMyB5IEZsKHNldF9wdWJrZXlcKClwIEZjKGtleSlpIEZsKFwpKTIwOCAxMDIzIHkgRnEoU2V0KTI4Ci1iKHRoZSlmKHB1YmxpYyloKGspbihleSlmKG9mKWgodGhlKWcob2IpNSBiKGplY3QpMjcgYih0byloCi1GYyhrZXkpNyBiIEZxKC4pMCAxMTcwIHkgRmwoc2lnblwoKXAgRmMoa2V5LCkyOSBiKGRpZ2VzdF9uYW1lKTYKLWIgRmwoXCkpMjA4IDEyNjkgeSBGcShTaWduKTMwIGIodGhlKWgoTmV0c2NhcClyKGVTUEtJKWYob2IpNQotYihqZWN0KTMwIGIodXNpbmcpZyh0aGUpaChnaXYpbihlbilmIEZjKGtleSkzOCBiIEZxKGFuZCkzMQotYiBGYyhkaWdlc3RfbmFtZSk2IGIgRnEoLik0NiBiIEZjKGRpZ2VzdF9uYW1lKTM3IGIgRnEobSluKHVzdCkzMQotYihiKXIoZSlnKGEpZihzdHJpbmcpMjA4IDEzNjkgeShkZXNjcmliaW5nKWUoYSlpKGRpZ2VzdClmKGFsZ29yaXRobSlmCi0oc3VwcClyKG9ydGVkKWkoYiluKHkpZihPcClyKGVuU1NMKWgoXChiKW4oeSlnKEVWUF9nZXRfZGlnZXN0YiluCi0oeW5hbWUsKWYoc3ApcihlY2lcMDM0Y2FsbHlcKS4pNDMgYihGKS03IGIob3IpMjA4IDE0NjkKLXkoZXhhbXBsZSwpMjcgYiBGbCgibWQ1IillIEZxKG9yKWkgRmwoInNoYTEiKXAgRnEoLikwCi0xNjE2IHkgRmwodmVyaWZ5XCgpcCBGYyhrZXkpNyBiIEZsKFwpKTIwOCAxNzE1IHkgRnEoViktNwotYihlcmlmeSkyNyBiKHRoZSloKE5ldHNjYXApcihlU1BLSSlnKG9iKTUgYihqZWN0KTI3IGIodXNpbmcpZyh0aGUpaAotKGdpdiluKGVuKWYgRmMoa2V5KTcgYiBGcSguKTAgMTk3OCB5IEZmKENSTCkyNyBiKG9iamVjdHMpMAotMjE3OSB5IEZxKENSTCloKG9iKTUgYihqZWN0cykyNyBiKGhhKW4odiluKGUpZih0aGUpaShmb2xsbyluKHdpbmcpZQotKG1ldGhvKXIoZHM6KTAgMjMyNiB5IEZsKGFkZF9yZXZva2VkXCgpcCBGYyhyKWwoZXZva2UpbChkKTkKLWIgRmwoXCkpMjA4IDI0MjUgeSBGcShBKW4oZGQpMjcgYihhKWgoUmV2KW4ob2spbihlZCllKG9iKTUKLWIoamVjdCkyNyBiKHRvKWcodGhlKWgoQ1JMLClnKGIpbih5KWYodiktNSBiKGFsdWUpMjgKLWIobm90KWYocmVmZXJlbmNlLikwIDI1ODYgeSBGbChleHBvcnRcKClwIEZjKGMpbChlcnQsKWcoa2V5KTcKLWIgRmIoWylwIEZjKCwpMzEgYih0eXApbChlPUZJTEVUWVBFX1BFTSljIEZiKF1bKXAgRmMoLClpKGRheXM9MTAwKWMKLUZiKF0pcCBGbChcKSkyMDggMjY4NiB5IEZxKFVzZSlpIEZjKGMpbChlcnQpMzYgYiBGcShhbmQpMjgKLWIgRmMoa2V5KTM2IGIgRnEodG8pMjcgYihzaWduKWgodGhlKWcoQ1JMKWcoYW5kKWcocmV0dXJuKWYodGhlKWgoQ1JMKWcKLShhcylnKGEpZihzdHJpbmcuKTM3IGIgRmMoZGF5cylmIEZxKGlzKTI4IGIodGhlKWcobiluKHVtKW4oYilyKGVyKWcob2YpCi1nKGRhKW4oeXMpZShiKXIoZWZvcmUpMjA4IDI3ODYgeSh0aGUpaShuZXh0KWYoQ1JMKWgoaXMpZihkdWUuKTAKLTI5MzMgeSBGbChnZXRfcmV2b2tlZFwoXCkpMjA4IDMwMzIgeSBGcShSZXR1cm4pZyhhKWcodHVwbGUpaShvZillKFJldiluCi0ob2spbihlZClmKG9iKTUgYihqZWN0cywpMjcgYihiKW4oeSloKHYpLTUgYihhbHVlKTI3Ci1iKG5vdCloKHJlZmVyZW5jZS4pMCAzMjk1IHkgRmYoUmV2b2spbihlZCllKG9iamVjdHMpMAotMzQ5NiB5IEZxKFJldiluKG9rKW4oZWQpZyhvYik1IGIoamVjdHMpMjcgYihoYSluKHYpbihlKWcodGhlKWgoZm9sbG8pbgotKHdpbmcpZShtZXRobylyKGRzOikwIDM2NDMgeSBGbChhbGxfcmVhc29uc1woXCkpMjA4IDM3NDIKLXkgRnEoUmV0dXJuKWgoYSlnKGxpc3QpaChvZilnKGFsbClmKHN1cHApcihvcnRlZClnKHJlYXNvbnMuKTAKLTM4ODkgeSBGbChnZXRfcmVhc29uXChcKSkyMDggMzk4OSB5IEZxKFJldHVybilnKHRoZSloKHJldiluKG8pcihjYXRpb24pCi1lKHJlYXNvbilnKGFzKWgoYSlnKHN0ci4pMzYgYihDYW4pMjggYihiKXIoZSlnKE5vbmUsKWYod2hpYyluKGgpaAotKGRpXDAzM2VycylmKGZyb20pZygiVW5zcClyKGVjaVwwMzRlZCIuKTAgNDEzNiB5IEZsKGdldF9yZXZfZGF0ZVwoXCkpCi0yMDggNDIzNSB5IEZxKFJldHVybilnKHRoZSloKHJldiluKG8pcihjYXRpb24pZShkYXRlKWgoYXMpZyhhKWcoc3RyLikzNwotYihUaGUpMjcgYihzdHJpbmcpZyhpcyloKGZvcm1hdHRlZClmKGFzKWcoYW4pZyhBU04xKWgoR0VORVJBTElaRURUSU1FLikKLTAgNDM4MiB5IEZsKGdldF9zZXJpYWxcKFwpKTIwOCA0NDgyIHkgRnEoUmV0dXJuKWYoYSlnKHN0ciloKGNvbiluCi0odGFpbmluZyllKGEpaChoZXgpaChuKW4odW0pbihiKXIoZXIpZihvZiloKHRoZSlmKHNlcmlhbClnKG9mKWcodGhlKWgKLShyZXYpbihvayluKGVkKWUoY2VydGlcMDM0Y2F0ZS4pMCA0NjI5IHkgRmwoc2V0X3JlYXNvblwoKXAKLUZjKHIpbChlKWwoYXNvbik2IGIgRmwoXCkpMjA4IDQ3MjggeSBGcShTZXQpMzIgYih0aGUpZyhyZXYpbihvKXIKLShjYXRpb24pZShyZWFzb24uKTQ3IGIgRmMocilsKGUpbChhc29uKTM5IGIgRnEobSluKHVzdCkzMgotYihiKXIoZSlnKE5vbmUpZihvcilnKGEpZyhzdHJpbmcsKWkoYnV0KWYodGhlKWcodiktNQotYihhbHVlcykzMSBiKGFyZSlnKGxpbWl0ZWQuKTUwIGIoU3BhY2VzKTMxIGIoYW5kKTIwOAotNDgyOCB5KGNhc2UpMjYgYihhcmUpaChpZ25vcmVkLikzNSBiKFNlZSkyOCBiIEZsKGFsbF9yZWFzb25zKXAKLUZxKC4pMCA0OTc1IHkgRmwoc2V0X3Jldl9kYXRlXCgpcCBGYyhkYXRlKTYgYiBGbChcKSkyMDgKLTUwNzQgeSBGcShTZXQpMjggYih0aGUpZihyZXYpbihvKXIoY2F0aW9uKWYoZGF0ZS4pMzcKLWIoVGhlKTI4IGIoc3RyaW5nKWUoaXMpaShmb3JtYXR0ZWQpZihhcylnKGFuKWcoQVNOMSloKEdFTkVSQUxJWkVEVElNRS4pCi0wIDUyMjEgeSBGbChzZXRfc2VyaWFsXCgpcCBGYyhzZXJpYWwpOSBiIEZsKFwpKTIwOCA1MzIxCi15IEZjKHNlcmlhbCkzNyBiIEZxKGlzKTI3IGIoYSloKHN0cmluZylmKGNvbiluKHRhaW5pbmcpZihhKWgoaGV4KWgobiluCi0odW0pbihiKXIoZXIpZihvZilnKHRoZSloKHNlcmlhbClmKG9mKWcodGhlKWgocmV2KW4ob2spbihlZCllCi0oY2VydGlcMDM0Y2F0ZS4pcCAwIDU1NDkgMzkwMSA0IHYgMCA1NjQ5IGEgRmYoMTApMjE5NwotYigzKTgzIGIgRmwoT3BlblNTTCkyNCBiIEZmKFwwMjYpayhQeXRob24pZihpbnRlcmZhY2UpaCh0bylmKE9wKXIKLShlblNTTClwIGVvcCBlbmQKLSUlUGFnZTogMTEgMTEKLVRlWERpY3QgYmVnaW4gMTEgMTAgYm9wIDAgODMgYSBGaigzLjIpOTcgYiBGZChyYW5kKTM0Ci1iIEZqKFwwMjYpZShBbiloKGludGVyZmFjZSlnKHRvKWcodGhlKWcoT3ApcyhlblNTTClmKHBzZXVkbyloKHJhbmRvbSlnCi0obnVtYilzKGVyKWcoZ2VuZXJhdG8pbShyKTAgMjgzIHkgRnEoVGhpcykyOCBiKG1vKXIoZHVsZSlmKGhhbmRsZXMpaAotKHRoZSlmKE9wKXIoZW5TU0wpaChwc2V1ZG8pZihyYW5kb20pZyhuKW4odW0pbihiKXIoZXIpZyhnZW5lcmF0b3IpZgotKFwoUFJOR1wpKWooYW5kKWUoZGVjbGFyZXMpZih0aGUpaShmb2xsbyluKHdpbmc6KTAgNDMwCi15IEZsKGFkZFwoKXAgRmMoc3RyaW5nLClnKGVudHIpbChvcHkpNyBiIEZsKFwpKTIwOCA1MzAKLXkgRnEoTWl4KTIyIGIoYiluKHl0ZXMpZyhmcm9tKWcgRmMoc3RyaW5nKTMwIGIgRnEoaW4pbih0bykyMgotYih0aGUpaChQUk5HKWgoc3RhdGUuKTM1IGIoVGhlKTIyIGIgRmMoZW50cilsKG9weSkzMAotYiBGcShhcmd1bWVuKW4odCkyMiBiKGlzKWcoXCh0aGUpaChsbyluKHcpbihlcillKGIpcihvdW5kKWkob2YpNgotYihcKSkyMyBiKGFuKWYoZXN0aW1hdGUpMjA4IDYzMCB5KG9mKWYoaG8pbih3KWcobSluKHVjKW4oaCloCi0ocmFuZG9tbmVzcyllKGlzKWgoY29uKW4odGFpbmVkKWcoaW4paCBGYyhzdHJpbmcpNyBiCi1GcSgsKTIzIGIobWVhc3VyZWQpZShpbiloKGIpbih5dGVzLikzNCBiKEYpLTcgYihvcikyMQotYihtb3JlKWcoaW5mb3JtYXRpb24sKWgoc2VlKWcoZS5nLikzNCBiKFJGKW4oQykyMDggNzI5Ci15KDE3NTAuKTAgODc2IHkgRmwoYnl0ZXNcKClwIEZjKG51bV9ieXRlcyk3IGIgRmwoXCkpMjA4Ci05NzYgeSBGcShHZXQpMjggYihzb21lKWUocmFuZG9tKWgoYiluKHl0ZXMpZyhmcm9tKWcodGhlKWgoUFJORyloKGFzKWUKLShhKWcoc3RyaW5nLikyMDggMTEwOSB5KFRoaXMpZyhpcyloKGEpZih3cmFwcClyKGVyKWYoZm9yKWgodGhlKWgoQylnCi0oZnVuY3Rpb24pZyBGbChSQU5EX2J5dGVzKXAgRnEoLikwIDEyNTUgeSBGbChjbGVhbnVwXChcKSkyMDgKLTEzNTUgeSBGcShFcmFzZSllKHRoZSlpKG1lbW9yeSlmKHVzZWQpaChiKW4oeSlmKHRoZSloKFBSTkcuKTIwOAotMTQ4OCB5KFRoaXMpZihpcyloKGEpZih3cmFwcClyKGVyKWYoZm9yKWgodGhlKWgoQylnKGZ1bmN0aW9uKWcKLUZsKFJBTkRfY2xlYW51cClwIEZxKC4pMCAxNjUxIHkgRmwoZWdkXCgpcCBGYyhwKWwoYXRoKTYKLWIgRmIoWylwIEZjKCwpMjkgYihieXRlcykxOSBiIEZiKF0pcCBGbChcKSkyMDggMTc1MSB5Ci1GcShRdWVyeSkyOSBiKHRoZSlqKEVuKW4odHJvcCluKHkpZShHYXRoZXJpbmcpZyhEYWVtb24pMTYyOQotMTcyMSB5IEZrKDIpMTY5NyAxNzUxIHkgRnEob24paChzbylyKGMpbihrKW4oZXQpZiBGYyhwKWwoYXRoKTM4Ci1iIEZxKGZvcikzMCBiIEZjKGJ5dGVzKTM4IGIgRnEoYiluKHl0ZXMpMzEgYihvZilnKHJhbmRvbSlmKGRhdGEpZyhhbmQpaAotKGFuZClnKHVzZXMpMjA4IDE4NTEgeSBGbChhZGQpMjYgYiBGcSh0byloKHNlZWQpaCh0aGUpZyhQUk5HLilnKFRoZSlnCi0oZGVmYXVsdClnKHYpLTUgYihhbHVlKTI3IGIob2YpMzQgYiBGYyhieXRlcyloIEZxKGlzKTI3Ci1iKDI1NS4pMCAyMDEyIHkgRmwobG9hZF9maWxlXCgpcCBGYyhwKWwoYXRoKTYgYiBGYihbKXAKLUZjKCwpMjYgYihieXRlcykxOSBiIEZiKF0pcCBGbChcKSkyMDggMjExMiB5IEZxKFJlYWQpMjkKLWIgRmMoYnl0ZXMpMzggYiBGcShiKW4oeXRlcykzMCBiKFwob3IpZihhbGwpaChvZilnKGl0LClpKGlmKTM3Ci1iIEZjKGJ5dGVzKWcgRnEoaXMpMzEgYihuZWdhdGl2KW4oZVwpKWUob2YpaChkYXRhKWcoZnJvbSlnKHRoZSlnCi0oXDAzNGxlKWggRmMocClsKGF0aCkzNyBiIEZxKHRvKTMwIGIoc2VlZClnKHRoZSloKFBSTkcuKWcoVGhlKTIwOAotMjIxMSB5KGRlZmF1bHQpZCh2KS01IGIoYWx1ZSkyNyBiKG9mKTM0IGIgRmMoYnl0ZXMpaAotRnEoaXMpMjcgYigtMS4pMCAyMzU4IHkgRmwoc2NyZWVuXChcKSkyMDggMjQ1OCB5IEZxKEEpbihkZClnKHRoZSloCi0oY3VycmVuKW4odClmKGNvbiluKHRlbiluKHRzKWcob2YpZyh0aGUpaChzY3JlZW4pZih0bylnKHRoZSloKFBSTkcpaAotKHN0YXRlLikzNyBiKEEpLTkgYih2KWsoYWlsYWJpbGl0KW4oeTopMzYgYihXaW5kbyluKHdzLikwCi0yNjA1IHkgRmwoc2VlZFwoKXAgRmMoc3RyaW5nKTcgYiBGbChcKSkyMDggMjcwNCB5IEZxKFRoaXMpMjcKLWIoaXMpaChlcXVpdiktNSBiKGFsZW4pbih0KTI3IGIodG8pZyhjYWxsaW5nKWggRmwoYWRkKWYKLUZxKHdpdGgpaCBGYyhlbnRyKWwob3B5KTM1IGIgRnEoYXMpMjcgYih0aGUpaChsZW5ndGgpZihvZiloKHRoZSlnCi0oc3RyaW5nLikwIDI4NTEgeSBGbChzdGF0dXNcKFwpKTIwOCAyOTUxIHkgRnEoUmV0dXJucylmKHRydWUpZyhpZilpCi0odGhlKWUoUFJORylpKGhhcyllKGIpcihlZW4paChzZWVkZWQpZih3aXRoKWgoZW5vdWdoKWYoZGF0YSwpZyhhbmQpaAotKGZhbHNlKWYob3RoZXJ3aXNlLikwIDMwOTggeSBGbCh3cml0ZV9maWxlXCgpcCBGYyhwKWwoYXRoKTYKLWIgRmwoXCkpMjA4IDMxOTcgeSBGcShXKS03IGIocml0ZSkzNCBiKGEpZyhuKW4odW0pbihiKXIoZXIpZyhvZiloCi0ocmFuZG9tKWUoYiluKHl0ZXMpaChcKGN1cnJlbiluKHRseSlnKDEwMjRcKSlmKHRvKWgodGhlKWgoXDAzNGxlKWYKLUZjKHApbChhdGgpNiBiIEZxKC4pNTkgYihUaGlzKTM0IGIoXDAzNGxlKWgoY2FuKWYodGhlbilnKGIpcihlKWgodXNlZClnCi0od2l0aCkyMDggMzI5NyB5IEZsKGxvYWRfZmlsZSkyMyBiIEZxKHRvKTI4IGIoc2VlZClmKHRoZSloKFBSTkcpaAotKGFnYWluLikwIDM0NDQgeSBGbShleGNlcHRpb24paiBGbChFcnJvcikyMDggMzU0MyB5IEZxKElmKWkodGhlKWcKLShjdXJyZW4pbih0KWYoUkFORClpKG1ldGhvKXIoZClmKHN1cHApcihvcnRzKWYoYW4pbih5KWcoZXJyb3JzLCloKHRoaXMpCi1nKGlzKWYocmFpc2VkKWcod2hlbiloKG5lZWRlZC4pNTYgYihUaGUpMzMgYihkZWZhdWx0KWkobWV0aG8pcihkKTIwOAotMzY0MyB5KGRvKXIoZXMpMjcgYihub3QpZyhyYWlzZSlnKHRoaXMpaCh3aGVuKWYodGhlKWgoZW4pbih0cm9wKW4oeSllCi0ocClyKG8pcihvbClpKGlzKWYoZGVwbGV0ZWQuKTIwOCAzNzc2IHkoV2hlbmV2KW4oZXIpMzYKLWIodGhpcyloKGV4Y2VwdGlvbilnKGlzKWcocmFpc2VkKWYoZGlyZWN0bHkpLTcgYigsKTQwCi1iKGl0KWQoaGFzKWcoYSlmKGxpc3QpaShvZilmKGVycm9yKWUobWVzc2FnZXMpZyhmcm9tKWkodGhlKWgoT3ApcgotKGVuU1NMKWYoZXJyb3IpMjA4IDM4NzUgeShxdWV1ZSwpayh3aGVyZSlkKGVhYyluKGgpZihpdGVtKWkoaXMpZyhhKWYKLSh0dXBsZSloIEZsKFwoKXAgRmMobGliKTUgYiBGbCgsKTQ0IGIgRmMoZnVuY3Rpb24pNiBiCi1GbCgsKTQzIGIgRmMocilsKGUpbChhc29uKTYgYiBGbChcKSlwIEZxKC4pNzAgYihIZXJlKTM4Ci1iIEZjKGxpYik1IGIgRnEoLCk0MyBiIEZjKGZ1bmN0aW9uKWggRnEoYW5kKTM5IGIgRmMocilsKGUpbChhc29uKTQ1Ci1iIEZxKGFyZSkzNyBiKGFsbCkyMDggMzk3NSB5KHN0cmluZ3MsKTI2IGIoZGVzY3JpYmluZyloKHdoZXJlKWcoYW5kKWcKLSh3aGF0KWgodGhlKWcocHJvYmxlbSlmKGlzLikzNiBiKFNlZSkyOCBiIEZjKGVycilwIEZxKFwoM1wpKWcoZm9yKWYKLShtb3JlKWcoaW5mb3JtYXRpb24uKTAgNDI1NSB5IEZqKDMuMyk5NyBiIEZkKFNTTCkzMyBiCi1GaihcMDI2KWYoQW4paChpbnRlcmZhY2UpaCh0byllKHRoZSloKFNTTC1zcClzKGVjaVwwMzRjKWgocGEpbShydHMpZgotKG9mKWYoT3ApcyhlblNTTCkwIDQ0NTUgeSBGcShUaGlzKWMobW8pcihkdWxlKWYoaGFuZGxlcyloKHRoaW5ncylmKHNwKXIKLShlY2lcMDM0YyloKHRvKWYoU1NMLiloKFRoZXJlKWYoYXJlKWYodCluKHcpbihvKWgob2IpNQotYihqZWN0cykyNyBiKGRlXDAzNG5lZDopMzggYihDb24pbih0ZXh0LCkyNyBiKENvbm5lY3Rpb24uKTAKLTQ2MDIgeSBGbChTU0x2Ml9NRVRIT0QpMCA0NzAyIHkoU1NMdjNfTUVUSE9EKTAgNDgwMSB5KFNTTHYyM19NRVRIT0QpMAotNDkwMSB5KFRMU3YxX01FVEhPRCkyMDggNTAwMSB5IEZxKFRoZXNlKWcoY29uc3RhbiluKHRzKWYocmVwcmVzZW4pbih0KWgKLSh0aGUpaChkaVwwMzNlcmVuKW4odClmKFNTTCloKG1ldGhvKXIoZHMpZyh0bylmKHVzZSloKHdoZW4pZihjcmVhdGluZylnCi0oYSlnKGNvbiluKHRleHQpZyhvYik1IGIoamVjdC4pMCA1MTQ3IHkgRmwoVkVSSUZZX05PTkUpMAotNTI0NyB5KFZFUklGWV9QRUVSKXAgMCA1MzA4IDE1NjAgNCB2IDkyIDUzNjIgYSBGaCgyKTEyNwotNTM4NSB5IEZnKFNlZSkyNCBiIEZwKGh0dHA6Ly93d3cubG90aGEpbihyLmNvbS90ZWNoL2NyeXB0by8pcAotMCA1NTQ5IDM5MDEgNCB2IDAgNTY0OSBhIEZmKDMuMik4MiBiIEZsKHJhbmQpMjYgYiBGZihcMDI2KWkoQW4pZwotKGludGVyZmFjZSlmKHRvKWcodGhlKWgoT3ApcihlblNTTClnKHBzZXVkbyllKHJhbmRvbSloKG51bWIpcihlciloCi0oZ2VuZXJhdG8pbihyKTExMDcgYigxMSlwIGVvcCBlbmQKLSUlUGFnZTogMTIgMTIKLVRlWERpY3QgYmVnaW4gMTIgMTEgYm9wIDAgODMgYSBGbChWRVJJRllfRkFJTF9JRl9OKW8oT18pbyhQRUUpbyhSXylvCi0oQ0UpbyhSVCkyMDggMTgzIHkgRnEoVGhlc2UpMjcgYihjb25zdGFuKW4odHMpZihyZXByZXNlbiluKHQpaCh0aGUpaCh2KQotbihlcmlcMDM0Y2F0aW9uKWUobW8pcihkZSloKHVzZWQpaChiKW4oeSlmKHRoZSloKENvbiluKHRleHQpZihvYik1Ci1iKGplY3QncykyNyBiIEZsKHNldF92ZXJpZnkpZCBGcShtZXRobylyKGQuKTAgMzMwIHkgRmwoRklMRVRZUEVfUEVNKTAKLTQyOSB5KEZJTEVUWVBFX0FTTjEpMjA4IDUyOSB5IEZxKEZpbGUpNDEgYih0KW4oeXApcihlKWcoY29uc3RhbiluKHRzKWYKLSh1c2VkKWgod2l0aClnKHRoZSloIEZsKHVzZV9jZXJ0aWZpY2F0ZSlvKF9mKW8oaWxlKTM0Ci1iIEZxKGFuZCk0MSBiIEZsKHVzZV9wcml2YXRla2V5X2YpbyhpbClvKGUpMzUgYiBGcShtZXRobylyKGRzKTQxCi1iKG9mKTIwOCA2MjggeShDb24pbih0ZXh0KTI3IGIob2IpNSBiKGplY3RzLikwIDc3NSB5Ci1GbChPUF9TSU5HTEVfREhfVVNFKTAgODc1IHkoT1BfRVBIRU1FUkFMX1JTQSkwIDk3NSB5KE9QX05PX1NTTHYyKTAKLTEwNzQgeShPUF9OT19TU0x2MykwIDExNzQgeShPUF9OT19UTFN2MSkyMDggMTI3MyB5IEZxKENvbnN0YW4pbih0cykzMAotYih1c2VkKWkod2l0aClnIEZsKHNldF9vcHRpb25zKTI2IGIgRnEob2YpMzIgYihDb24pbih0ZXh0KWYob2IpNQotYihqZWN0cy4pNDggYiBGbChPUF9TSU5HTEVfREhfVVNFKTI1IGIgRnEobWVhbnMpMzEgYih0bylnKGFsdyluKGEpbih5cykKLWYoY3JlYXRlKWcoYSkyMDggMTM3MyB5KG5ldykxOSBiKGspbihleSlmKHdoZW4paCh1c2luZylnKGVwaGVtZXJhbClmCi0oRGlcMDM2ZS1IZWxsbWFuLikzNCBiIEZsKE9QX0VQSEVNRVJBTF9SU0EpMTMgYiBGcShtZWFucykxOAotYih0byloKGFsdyluKGEpbih5cyllKHVzZSlpKGVwaGVtZXJhbClnKFJTQSkyMDggMTQ3MwoteShrKW4oZXlzKWYod2hlbiloKGRvaW5nKWYoUlNBKWkob3ApcihlcmF0aW9ucy4pMzMgYgotRmwoT1BfTk9fU1NMdjIpcCBGcSgsKTE2IGIgRmwoT1BfTk9fU1NMdjMpZiBGcShhbmQpawotRmwoT1BfTk9fVExTdjEpMTQgYiBGcShtZWFucykxOSBiKHRvKWcoZGlzYWJsZSlmKHRob3NlKTIwOAotMTU3MiB5KHNwKXIoZWNpXDAzNGMpMjkgYihwcm90bylyKGNvbHMuKTM5IGIoVGhpcykyOQotYihpcylnKGluKW4odGVyZXN0aW5nKWcoaWYpZyh5KW4ob3UncmUpZih1c2luZylnKGUuZy4pNDEKLWIgRmwoU1NMdjIzX01FVEhPRCkyNCBiIEZxKHRvKTI5IGIoZ2V0KWcoYW4pZihTU0x2Mi1jb21wYXRpYmxlKTIwOAotMTY3MiB5KGhhbmRzaGFrKW4oZSwpZShidXQpaShkb24ndClnKHcpbihhbiluKHQpZih0bylnKHVzZSloKFNTTHYyLikwCi0xODE5IHkgRmwoU1NMRUFZX1ZFUlNJT04pMCAxOTE4IHkoU1NMRUFZX0NGTEFHUykwIDIwMTgKLXkoU1NMRUFZX0JVSUxUX09OKTAgMjExOCB5KFNTTEVBWV9QTEFURk9STSkwIDIyMTcgeShTU0xFQVlfRElSKTIwOAotMjMxNyB5IEZxKENvbnN0YW4pbih0cylpKHVzZWQpaCh3aXRoKWcgRmwoU1NMZWF5X3ZlcnNpb24pMjUKLWIgRnEodG8pMzEgYihzcClyKGVjaWZ5KWcod2hhdClnKE9wKXIoZW5TU0wpaCh2KW4oZXJzaW9uKWQoaW5mb3JtYXRpb24pCi1oKHRvKWgocmV0cmlldiluKGUuKTQ2IGIoU2VlKTIwOCAyNDE3IHkodGhlKTI4IGIobWFuKWYocGFnZSlnKGZvcilnCi0odGhlKWggRmwoU1NMZWF5X3ZlcnNpb24pMjEgYiBGcShDKTI4IGIoQVBJKWcoZm9yKWYoZGV0YWlscy4pMAotMjU2MyB5IEZsKE9QRU5TU0xfVkVSU0lPTl8pbyhOVSlvKE1CRSlvKFIpMjA4IDI2NjMgeQotRnEoQW4pZChpbiluKHRlZ2VyKWYoZ2l2aW5nKWcodGhlKWgodiluKGVyc2lvbillKG4pbih1bSluKGIpcihlcilpKG9mKWYKLSh0aGUpaShPcClyKGVuU1NMKWYobGlicmFyeSllKHVzZWQpaSh0bylnKGJ1aWxkKWcodGhpcylnKHYpbihlcnNpb24pZQotKG9mKWkocCluKHlPcClyKGVuU1NMLikyMDggMjc2MyB5KFNlZSlqKHRoZSloKG1hbilnKHBhZ2UpZShmb3IpaCh0aGUpaAotRmwoU1NMZWF5X3ZlcnNpb24pMjIgYiBGcShDKTI4IGIoQVBJKWcoZm9yKWYoZGV0YWlscy4pMAotMjkxMCB5IEZsKFNTTGVheV92ZXJzaW9uXCgpcCBGYyh0KW8oeXApbChlKTYgYiBGbChcKSkyMDgKLTMwMDkgeSBGcShSZXRyaWV2KW4oZSkyMCBiKGEpaShzdHJpbmcpZihkZXNjcmliaW5nKWYoc29tZSlpKGFzcClyKGVjdClmCi0ob2YpaCh0aGUpZyh1bmRlcmx5aW5nKWYoT3ApcihlblNTTCloKHYpbihlcnNpb24uKTMzCi1iKFRoZSkyMiBiKHQpbih5cClyKGUpZyhwYXNzZWQpZShpbilpKHNob3VsZCkyMDggMzEwOQoteShiKXIoZSkyOCBiKG9uZSlmKG9mKWcodGhlKWggRmwoU1NMRUFZXyopYyBGcShjb25zdGFuKW4odHMpagotKGRlXDAzNG5lZCloKGluKWcodGhpcylnKG1vKXIoZHVsZS4pMCAzMjU2IHkgRmwoQ29udGV4dFR5cGUpMjA4Ci0zMzU1IHkgRnEoU2VlKWYgRmwoQ29udGV4dClwIEZxKC4pMCAzNTAyIHkgRm0oY2xhc3MpawotRmwoQ29udGV4dFwoKXAgRmMobWV0aG8pbChkKTkgYiBGbChcKSkyMDggMzYwMiB5IEZxKEEpMjcKLWIoY2xhc3MpZyhyZXByZXNlbiluKHRpbmcpZihTU0wpaShjb24pbih0ZXh0cy4pMzYgYihDb24pbih0ZXh0cykyNwotYihkZVwwMzRuZSloKHRoZSlnKHBhcmFtZXRlcnMpZChvZilqKG9uZSlmKG9yKWcobW9yZSlmKFNTTClpCi0oY29ubmVjdGlvbnMuKTIwOCAzNzM1IHkgRmMobWV0aG8pbChkKTM2IGIgRnEoc2hvdWxkKTI4Ci1iKGIpcihlKWcgRmwoU1NMdjJfTUVUSE9EKXAgRnEoLCkyMiBiIEZsKFNTTHYzX01FVEhPRClwCi1GcSgsKWggRmwoU1NMdjIzX01FVEhPRClmIEZxKG9yKTI3IGIgRmwoVExTdjFfTUVUSE9EKXAKLUZxKC4pMCAzODgxIHkgRmwoQ29ubmVjdGlvblR5cGUpMjA4IDM5ODEgeSBGcShTZWUpZyBGbChDb25uZWN0aW9uKXAKLUZxKC4pMCA0MTI4IHkgRm0oY2xhc3MpayBGbChDb25uZWN0aW9uXCgpcCBGYyhjKWwob250ZXh0LCkyNQotYihzbylsKGNrZXQpOCBiIEZsKFwpKTIwOCA0MjI4IHkgRnEoQSkyNyBiKGNsYXNzKWcocmVwcmVzZW4pbih0aW5nKWYKLShTU0wpaShjb25uZWN0aW9ucy4pMjA4IDQzNjAgeSBGYyhjKWwob250ZXh0KTQ0IGIgRnEoc2hvdWxkKTM3Ci1iKGIpcihlKWcoYW4pZyhpbnN0YW5jZSlnKG9mKTQ0IGIgRmwoQ29udGV4dCkzNCBiIEZxKGFuZClqCi1GYyhzbylsKGNrZXQpNDYgYiBGcShzaG91bGQpMzcgYihiKXIoZSlnKGEpZyhzbylyKGMpbihrKW4oZXQpMjk3OAotNDMzMCB5IEZrKDMpMzA1MyA0MzYwIHkgRnEob2IpNSBiKGplY3QuKTY2IGIgRmMoc28pbChja2V0KTQ1Ci1iIEZxKG1hKW4oeSkzNyBiKGIpcihlKTIwOCA0NDYwIHkgRmMoTm9uZSk2IGIgRnEoOykyNwotYihpbiloKHRoaXMpZyhjYXNlLCllKHRoZSlpKENvbm5lY3Rpb24pZihpcylnKGNyZWF0ZWQpZyh3aXRoKWgoYSlmCi0obWVtb3J5KWcoQklPOilmKHNlZSloKHRoZSloIEZsKGJpb19yZWFkKXAgRnEoLCljIEZsKGJpb193cml0ZSlwCi1GcSgsKWcoYW5kKTIwOCA0NTYwIHkgRmwoYmlvX3NodXRkb3duKWUgRnEobWV0aG8pcihkcy4pMAotNDcwNyB5IEZtKGV4Y2VwdGlvbikzMiBiIEZsKEVycm9yKTIwOCA0ODA2IHkgRnEoVGhpcylpKGV4Y2VwdGlvbilnKGlzKWgKLSh1c2VkKWYoYXMpZyhhKWgoYmFzZSllKGNsYXNzKWgoZm9yKWcodGhlKWgob3RoZXIpZihTU0wtcmVsYXRlZClnCi0oZXhjZXB0aW9ucywpaShidXQpZihtYSluKHkpZihhbHNvKWYoYilyKGUpaShyYWlzZWQpMjA4Ci00OTA2IHkoZGlyZWN0bHkpLTcgYiguKTIwOCA1MDM5IHkoV2hlbmV2KW4oZXIpMzYgYih0aGlzKWgoZXhjZXB0aW9uKWcKLShpcylnKHJhaXNlZClmKGRpcmVjdGx5KS03IGIoLCk0MCBiKGl0KWQoaGFzKWcoYSlmKGxpc3QpaShvZilmKGVycm9yKWUKLShtZXNzYWdlcylnKGZyb20paSh0aGUpaChPcClyKGVuU1NMKWYoZXJyb3IpMjA4IDUxMzgKLXkocXVldWUsKWsod2hlcmUpZChlYWMpbihoKWYoaXRlbSlpKGlzKWcoYSlmKHR1cGxlKWgKLUZsKFwoKXAgRmMobGliKTUgYiBGbCgsKTQ0IGIgRmMoZnVuY3Rpb24pNiBiIEZsKCwpNDMKLWIgRmMocilsKGUpbChhc29uKTYgYiBGbChcKSlwIEZxKC4pNzAgYihIZXJlKTM4IGIgRmMobGliKTUKLWIgRnEoLCk0MyBiIEZjKGZ1bmN0aW9uKWggRnEoYW5kKTM5IGIgRmMocilsKGUpbChhc29uKTQ1Ci1iIEZxKGFyZSkzNyBiKGFsbClwIDAgNTIwOCAxNTYwIDQgdiA5MiA1MjYxIGEgRmgoMykxMjcKLTUyODUgeSBGZyhBKW4oY3R1YWxseSktNiBiKCwpMjUgYihhbGwpZSh0aGF0KWooaXMpZChyZXF1aXJlZClqKGlzKWUoYW4pCi1nKG9iKXQoamVjdCloKHRoYXQpaCBGYShiKWwoZWhhdmVzKWUgRmcobGlrKW4oZSlnKGEpaChzbylyKGMpbihrKW4oZXQsKQotZyh5KW4ob3UpZyhjb3VsZClnKGV2KW4oZW4pZyh1c2UpZihcMDM0bGVzLClnKGV2KW4oZW4paSh0aG91Z2gpZihpdCdkKWYKLShiKXIoZSloKHRyaWMpbihreSlnKHRvKTAgNTM2MyB5KGdldClnKHRoZSlmKGhhbmRzaGFrKW4oZXMpaChyaWdoKW4odCEpCi1wIDAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYSBGZigxMikyMTk3IGIoMyk4MyBiIEZsKE9wZW5TU0wpMjQKLWIgRmYoXDAyNilrKFB5dGhvbilmKGludGVyZmFjZSloKHRvKWYoT3ApcihlblNTTClwIGVvcAotZW5kCi0lJVBhZ2U6IDEzIDEzCi1UZVhEaWN0IGJlZ2luIDEzIDEyIGJvcCAyMDggODMgYSBGcShzdHJpbmdzLCkyNiBiKGRlc2NyaWJpbmcpaCh3aGVyZSlnCi0oYW5kKWcod2hhdCloKHRoZSlnKHByb2JsZW0pZihpcy4pMzYgYihTZWUpMjggYiBGYyhlcnIpcAotRnEoXCgzXCkpZyhmb3IpZihtb3JlKWcoaW5mb3JtYXRpb24uKTAgMjMwIHkgRm0oZXhjZXB0aW9uKTMyCi1iIEZsKFplcm9SZXR1cm5FcnJvcikyMDggMzMwIHkgRnEoVGhpcylnKGV4Y2VwdGlvbilnKG1hdGMpbihoZXMpZyh0aGUpaAotKGVycm9yKWQocmV0dXJuKWkoY28pcihkZSloIEZsKFNTTF9FUlJPUl9aRVJPXylvKFJFKW8oVFVSKW8oTilwCi1GcSgsKTI2IGIoYW5kKTMzIGIoaXMpZihyYWlzZWQpZih3aGVuKWkodGhlKWcoU1NMKTIwOAotNDI5IHkoQ29ubmVjdGlvbiljKGhhcylnKGIpcihlZW4paChjbG9zZWQuKTQzIGIoSW4pMjkKLWIoU1NMKWgoMy4wKWYoYW5kKWgoVExTKWcoMS4wLClmKHRoaXMpaChvbmx5KWYobylyKGNjdXJzKWcoaWYpaChhKWcKLShjbG9zdXJlKWUoYWxlcnQpaChoYXMpZyhvKXIoY2N1cnJlZCkyMDggNTI5IHkoaW4pZyh0aGUpZyhwcm90bylyKGNvbCwpCi1mKGkuZS4pNDEgYih0aGUpMjkgYihjb25uZWN0aW9uKWYoaGFzKWcoYilyKGVlbilpKGNsb3NlZCllKGNsZWFubHkpLTcKLWIoLik0MCBiKE5vdGUpMjkgYih0aGF0KWcodGhpcylnKGRvKXIoZXMpZihub3QpaChuZWNlc3NhcmlseSllKG1lYW4pMjA4Ci02MjggeSh0aGF0KWcodGhlKWgodHJhbnNwKXIob3J0KWYobGEpbih5KW4oZXIpZihcKGUuZy4pMzYKLWIoYSkyOCBiKHNvKXIoYyluKGspbihldFwpKWUoaGFzKWgoYilyKGVlbiloKGNsb3NlZC4pMjA4Ci03NTggeShJdClrKG1hKW4oeSlmKHNlZW0paChhKWYobGl0dGxlKWkoc3RyYW5nZSllKHRoYXQpaCh0aGlzKWcoaXMpZwotKGFuKWcoZXhjZXB0aW9uLClnKGJ1dCloKGl0KWYoZG8pcihlcylnKG1hdGMpbihoKWcoYW4pZgotRmwoU1NMX0VSUk9SKWUgRnEoY28pcihkZSwpaihhbmQpZyhpcykyMDggODU4IHkodiluKGVyeSkyNgotYihjb24pbih2KW4oZW5pZW4pbih0LikwIDEwMDUgeSBGbShleGNlcHRpb24pMzIgYiBGbChXYW50UmVhZEVycm9yKTIwOAotMTEwNCB5IEZxKFRoZSlpKG9wKXIoZXJhdGlvbillKGRpZClqKG5vdClmKGNvbXBsZXRlOylqKHRoZSlkKHNhbWUpZwotKEkvTylmKG1ldGhvKXIoZCloKHNob3VsZClnKGIpcihlKWcoY2FsbGVkKWcoYWdhaW4pZihsYXRlciwpaSh3aXRoKWYKLSh0aGUpaChzYW1lKTIwOCAxMjA0IHkoYXJndW1lbiluKHRzLilnKEFuKW4oeSkyOCBiKEkvTyllKG1ldGhvKXIoZClpCi0oY2FuKWYobGVhZCloKHRvKWYodGhpcyloKHNpbmNlKWYobmV3KWgoaGFuZHNoYWspbihlcyllKGNhbiloKG8pcihjY3VyKQotZyhhdClnKGFuKW4oeSlnKHRpbWUuKTIwOCAxMzM0IHkoVGhlKTQ0IGIodyluKGFuKW4odGVkKWgocmVhZClmKGlzKWcKLShmb3IpaCBGYyhkaXJ0eSlnIEZxKGRhdGEpZyhzZW4pbih0KWYobyluKHYpbihlcilmKHRoZSlqKG5ldCluKHcpbgotKG9yaywpaChub3QpZSh0aGUpaCBGYyhjbGUpbChhbilmIEZxKGRhdGEpZihpbnNpZGUpaCh0aGUpZyh0dW5uZWwuKTIwOAotMTQzMyB5KEYpLTcgYihvcikzOSBiKGEpaShzbylyKGMpbihrKW4oZXQpZShiYXNlZCloKFNTTCloKGNvbm5lY3Rpb24sKWkKLUZjKHIpbChlKWwoYWQpZSBGcShtZWFucylmKGRhdGEpZyhjb21pbmcpZyhhdClnKHVzKWgobyluKHYpbihlcillKHRoZSlpCi0obmV0KW4odyluKG9yay4pNzQgYihVbiluKHRpbCk0MSBiKHRoYXQpMjA4IDE1MzMgeShyZWFkKWQoc3VjY2VlZHMsKWsKLSh0aGUpZChhdHRlbXB0ZWQpaCBGbChPcGVuU1NMLlNTTC5Db25uKW8oZWN0KW8oaW8pbyhuLilvKHJlYylvKHYpcAotRnEoLCljIEZsKE9wZW5TU0wuU1NMLkNvbm4pbyhlYylvKHRpbylvKG4uKW8oc2UpbyhuZClwCi1GcSgsKWcob3IpMjA4IDE2MzIgeSBGbChPcGVuU1NMLlNTTC5Db24pbyhuZSlvKGN0KW8oaW9uKW8oLmQpbyhvX2gpbwotKGFuKW8oZHMpbyhoYWspbyhlKTE1IGIgRnEoaXMpMjIgYihwcmV2KW4oZW4pbih0ZWQpZShvciloKGluY29tcGxldGUuKQotMzUgYihZKS03IGIob3UpMjIgYihwcm9iYWJseSllKHcpbihhbiluKHQpaCh0bylnIEZsKHNlbGVjdFwoXCkpMjA4Ci0xNzMyIHkgRnEob24pMjcgYih0aGUpaChzbylyKGMpbihrKW4oZXQpZShiKXIoZWZvcmUpaCh0cnlpbmcpZyhhZ2Fpbi4pMAotMTg3OSB5IEZtKGV4Y2VwdGlvbikzMiBiIEZsKFdhbnRXcml0ZUVycm9yKTIwOCAxOTc5IHkKLUZxKFNlZSkyNyBiIEZsKFdhbnRSZWFkRXJyb3IpcCBGcSguKTMyIGIoVGhlKTI3IGIoc28pcihjKW4oayluKGV0KWcKLShzZW5kKWcoYnVcMDMzZXIpaChtYSluKHkpZihiKXIoZSloKHRvKXIobylmKGZ1bGwpaCh0bylnKHdyaXRlKWYobW9yZSlnCi0oZGF0YS4pMCAyMTI1IHkgRm0oZXhjZXB0aW9uKTMyIGIgRmwoV2FudFg1MDlMb29rdXBFKW8ocnIpbyhvcikyMDgKLTIyMjUgeSBGcShUaGUpMjQgYihvcClyKGVyYXRpb24pZyhkaWQpaChub3QpZyhjb21wbGV0ZSlmKGIpcihlY2F1c2UpZwotKGFuKWgoYXBwbGljYXRpb24pZihjYWxsYmFjKW4oaylmKGhhcyloKGFzayluKGVkKWcodG8pZyhiKXIoZSloKGNhbGxlZCkKLWcoYWdhaW4uKTM0IGIoVGhlKTI1IGIoSS9PKTIwOCAyMzI1IHkobWV0aG8pcihkKWYoc2hvdWxkKWgoYilyKGUpZgotKGNhbGxlZClnKGFnYWluKWcobGF0ZXIsKWcod2l0aCloKHRoZSlnKHNhbWUpZShhcmd1bWVuKW4odHMuKTM1Ci1iKE5vdGU6KWcoVGhpcykyNCBiKHcpbihvbid0KWgobylyKGNjdXIpZShpbilpKHRoaXMpZyh2KW4oZXJzaW9uLCkyMDgKLTI0MjQgeShhcyloKHRoZXJlKWkoYXJlKWUobm8paShzdWMpbihoKWYoY2FsbGJhYyluKGtzKWYoaW4paSh0aGlzKWYodiluCi0oZXJzaW9uLikwIDI1NzEgeSBGbShleGNlcHRpb24pMzIgYiBGbChTeXNDYWxsRXJyb3IpMjA4Ci0yNjcxIHkgRnEoVGhlKTI1IGIgRmwoU3lzQ2FsbEVycm9yKTIwIGIgRnEobylyKGNjdXJzKWsod2hlbilpKHRoZXJlJ3MpZQotKGFuKWgoSS9PKWcoZXJyb3IpZShhbmQpaShPcClyKGVuU1NMJ3MpZyhlcnJvcillKHF1ZXVlKWkoZG8pcihlcylnKG5vdCkKLWcoY29uKW4odGFpbilnKGFuKW4oeSkyMDggMjc3MCB5KGluZm9ybWF0aW9uLik1OSBiKFRoaXMpMzYKLWIoY2FuKWYobWVhbilnKHQpbih3KW4obylnKHRoaW5nczopNTIgYihBbikzNiBiKGVycm9yKWQoaW4paih0aGUpZwotKHRyYW5zcClyKG9ydCllKHByb3RvKXIoY29sLClpKG9yKWYoYW4pZyhlbmQpaChvZilmKFwwMzRsZSloKHRoYXQpMjA4Ci0yODcwIHkodmlvbGF0ZXMpMjYgYih0aGUpaShwcm90bylyKGNvbC4pMzYgYihUaGUpMjcgYihwYXJhbWV0ZXIpZih0bylpCi0odGhlKWcoZXhjZXB0aW9uKWYoaXMpZyhhbHcpbihhKW4oeXMpZihhKWgocGFpcilnIEZsKFwoKXAKLUZjKGVycm51bSk2IGIgRmwoLCk0MiBiIEZjKGVycnN0cik5IGIgRmwoXCkpcCBGcSguKTAKLTMxMzAgeSBGZihDb250ZXh0KTI3IGIob2JqZWN0cykwIDMzMzEgeSBGcShDb24pbih0ZXh0KWcob2IpNQotYihqZWN0cykyNyBiKGhhKW4odiluKGUpZyh0aGUpaChmb2xsbyluKHdpbmcpZShtZXRobylyKGRzOikwCi0zNDc4IHkgRmwoY2hlY2tfcHJpdmF0ZWtleSlvKFwoXCkpMjA4IDM1OTQgeSBGcShDaGVjKW4oaylrKGlmKWkodGhlKWcKLShwcml2KS01IGIoYXRlKTMxIGIoayluKGV5KWYoXChsb2FkZWQpaCh3aXRoKWggRmwodXNlX3ByaXZhdGVrZXkpcAotRmIoWylwIEZsKF8pbyhmaSlvKGxlKTExIGIgRmIoXSlwIEZxKFwpKTI2IGIobWF0YyluKGhlcylrKHRoZSlpCi0oY2VydGlcMDM0Y2F0ZSlmKFwobG9hZGVkKWcod2l0aCkyMDggMzcyMiB5IEZsKHVzZV9jZXJ0aWZpY2F0ZSlvCi1GYihbKXAgRmwoXylvKGZpbClvKGUpMTEgYiBGYihdKXAgRnEoXCkuKTMxIGIoUmV0dXJucylkCi1GbChOb25lKWUgRnEoaWYpaSh0aGV5KWYobWF0YyluKGgsKWgocmFpc2VzKWUgRmwoRXJyb3IpZwotRnEob3RoZXJ3aXNlLikwIDM4NjkgeSBGbChnZXRfYXBwX2RhdGFcKFwpKTIwOCAzOTY4IHkKLUZxKFJldHJpZXYpbihlKWcoYXBwbGljYXRpb24paChkYXRhKWcoYXMpZyhzZXQpaChiKW4oeSlnCi1GbChzZXRfYXBwX2RhdGEpcCBGcSguKTAgNDExNSB5IEZsKGdldF9jZXJ0X3N0b3JlXChcKSkyMDgKLTQyMTUgeSBGcShSZXRyaWV2KW4oZSkzNCBiKHRoZSlpKGNlcnRpXDAzNGNhdGUpZihzdG9yZSlmKFwoYSloCi0oWDUwOVN0b3JlKWYob2IpNSBiKGplY3RcKSkzNSBiKHRoYXQpaCh0aGUpZihjb24pbih0ZXh0KWcodXNlcy4pNjAKLWIoVGhpcykzNSBiKGNhbilnKGIpcihlKWgodXNlZClmKHRvKWcoYWRkKTIwOCA0MzE0IHkoInRydXN0ZWQiKTI2Ci1iKGNlcnRpXDAzNGNhdGVzKWgod2l0aG91dCloKHVzaW5nKWYodGhlLikzNyBiIEZsKGxvYWRfdmVyaWZ5X2xvY2EpbwotKHRpbylvKG5zKW8oXChcKSkyMSBiIEZxKG1ldGhvKXIoZC4pMCA0NDYxIHkgRmwoZ2V0X3RpbWVvdXRcKFwpKTIwOAotNDU2MSB5IEZxKFJldHJpZXYpbihlKTI2IGIoc2Vzc2lvbiloKHRpbWVvdXQsKWgoYXMpZihzZXQpZyhiKW4oeSlpCi1GbChzZXRfdGltZW91dClwIEZxKC4paihUaGUpYyhkZWZhdWx0KWcoaXMpZigzMDApZihzZWNvbmRzLikwCi00NzA4IHkgRmwoZ2V0X3ZlcmlmeV9kZXB0aClvKFwoXCkpMjA4IDQ4MDcgeSBGcShSZXRyaWV2KW4oZSlnKHRoZSlpCi0oQ29uKW4odGV4dClmKG9iKTUgYihqZWN0J3MpMjggYih2KW4oZXJpZnkpZShkZXB0aCwpaihhcylkKHNldClpKGIpbih5KQotZyBGbChzZXRfdmVyaWZ5X2RlcHRoKXAgRnEoLikwIDQ5NTQgeSBGbChnZXRfdmVyaWZ5X21vZGVcKClvKFwpKTIwOAotNTA1NCB5IEZxKFJldHJpZXYpbihlKWUodGhlKWkoQ29uKW4odGV4dClmKG9iKTUgYihqZWN0J3MpMjgKLWIodiluKGVyaWZ5KWUobW8pcihkZSwpaShhcylmKHNldCloKGIpbih5KWcgRmwoc2V0X3ZlcmlmeSlwCi1GcSguKTAgNTIwMSB5IEZsKGxvYWRfY2xpZW50X2NhXCgpcCBGYyhwKWwoZW1cMDM0bGUpNgotYiBGbChcKSkyMDggNTMwMCB5IEZxKFJlYWQpMzMgYihhKWcoXDAzNGxlKWgod2l0aClnKFBFTS1mb3JtYXR0ZWQpZwotKGNlcnRpXDAzNGNhdGVzKWYodGhhdCloKHdpbGwpZyhiKXIoZSlnKHNlbiluKHQpZih0byloKHRoZSlnKGNsaWVuKW4odCkKLWYod2hlbiloKHJlcXVlc3RpbmcpZihhKWcoY2xpZW4pbih0KTIwOCA1NDAwIHkoY2VydGlcMDM0Y2F0ZS4pcAotMCA1NTQ5IDM5MDEgNCB2IDAgNTY0OSBhIEZmKDMuMyk4MiBiIEZsKFNTTCkyNiBiIEZmKFwwMjYpaShBbilnCi0oaW50ZXJmYWNlKWcodG8pZih0aGUpZyhTU0wtc3ApcihlY2lcMDM0YyloKHBhKW4ocnRzKWYob2YpaChPcClyKGVuU1NMKQotMTYxMSBiKDEzKXAgZW9wIGVuZAotJSVQYWdlOiAxNCAxNAotVGVYRGljdCBiZWdpbiAxNCAxMyBib3AgMCA4MyBhIEZsKHNldF9jbGllbnRfY2FfbGkpbyhzdClvKFwoKXAKLUZjKGMpbChlcnRpXDAzNGMpbChhdGVfYXUpbyh0aG9yaXRpZXMpNyBiIEZsKFwpKTIwOCAxODMKLXkgRnEoUmVwbGFjZSkyMyBiKHRoZSloKGN1cnJlbiluKHQpZyhsaXN0KWcob2YpZyhwcmVmZXJyZWQpZgotKGNlcnRpXDAzNGNhdGUpZyhzaWduZXJzKWcodGhhdCloKHcpbihvdWxkKWYoYilyKGUpaShzZW4pbih0KWYodG8pZwotKHRoZSlnKGNsaWVuKW4odClnKHdoZW4pZyhyZXF1ZXN0aW5nKTIwOCAyODIgeShhKWooY2xpZW4pbih0KWcKLShjZXJ0aVwwMzRjYXRlKWcod2l0aCloKHRoZSlnIEZjKGMpbChlcnRpXDAzNGMpbChhdGVfYXV0aG9yaXRpZXMpMzUKLWIgRnEoc2VxdWVuY2UpMjcgYihvZikzNCBiIEZsKE9wZW5TU0wuY3J5cHRvLlg1KW8oMDkpbyhOYSlvKG1lKXAKLUZxKHMpbyguKTIwOCA0MTUgeShOZXcpMjcgYihpbiloKHYpbihlcnNpb24pZSgwLjEwLikwCi01NjIgeSBGbChhZGRfY2xpZW50X2NhXCgpcCBGYyhjKWwoZXJ0aVwwMzRjKWwoYXRlX2F1dClvKGhvcml0eSk3Ci1iIEZsKFwpKTIwOCA2NjIgeSBGcShFeHRyYWN0KTIyIGIoYSlnIEZsKE9wZW5TU0wuY3J5cHRvLlgpbyg1MClvKDlOYSlvCi0obWUpMTYgYiBGcShmcm9tKTIyIGIodGhlKWggRmMoYylsKGVydGlcMDM0YylsKGF0ZV9hdXRob3JpdHkpMzAKLWIgRmwoT3BlblNTTC5jcnlwdG8uWClvKDUwOSkxNiBiIEZxKGNlcnRpXDAzNGNhdGUpMjA4Ci03NjEgeShhbmQpayhhZGQpZyhpdCloKHRvKWYodGhlKWgobGlzdClmKG9mKWgocHJlZmVycmVkKWUKLShjZXJ0aVwwMzRjYXRlKWgoc2lnbmVycylmKHNlbiluKHQpaCh0bylnKHRoZSloKGNsaWVuKW4odClmKHdoZW4paAotKHJlcXVlc3RpbmcpZShhKWgoY2xpZW4pbih0KWgoY2VydGlcMDM0Y2F0ZS4pMjA4IDg5NAoteShOZXcpMjcgYihpbiloKHYpbihlcnNpb24pZSgwLjEwLikwIDEwNDEgeSBGbChsb2FkX3ZlcmlmeV9sb2NhKW8odGkpbwotKG9ucylvKFwoKXAgRmMocClsKGVtXDAzNGxlLCllKGMpbChhcClsKGF0aCk2IGIgRmwoXCkpMjA4Ci0xMTQxIHkgRnEoU3ApcihlY2lmeSkyNCBiKHdoZXJlKWYoQ0EpZyhjZXJ0aVwwMzRjYXRlcylnKGZvcilnKHYpbgotKGVyaVwwMzRjYXRpb24pZihwdXJwKXIob3NlcyloKGFyZSlmKGxvKXIoY2F0ZWQuKTM1IGIoVGhlc2UpMjMKLWIoYXJlKWcodHJ1c3RlZClnKGNlcnRpXDAzNGNhdGVzLikzNSBiKE5vdGUpMjA4IDEyNDAKLXkodGhhdCljKHRoZSlnKGNlcnRpXDAzNGNhdGVzKWYoaGEpbih2KW4oZSlmKHRvKWkoYilyKGUpZyhpbilnKFBFTSloCi0oZm9ybWF0Lik0NiBiKElmKTMxIGIoY2FwYXRoKWYoaXMpaChwYXNzZWQsKWYoaXQpaShtKW4odXN0KWUoYilyKGUpaShhKQotZShkaXJlY3RvcnkpZihwcmVwYXJlZCkyMDggMTM0MCB5KHVzaW5nKWkodGhlKWggRmwoY19yZWhhc2gpYwotRnEodG8pcihvbClqKGluY2x1ZGVkKWgod2l0aClnKE9wKXIoZW5TU0wuKWcoRWl0aGVyLCloKGJ1dClmKG5vdClnKGIpcgotKG90aCwpaChvZikzOCBiIEZjKHApbChlbVwwMzRsZSlnIEZxKG9yKTMxIGIgRmMoYylsKGFwKWwoYXRoKTM5Ci1iIEZxKG1hKW4oeSkzMSBiKGIpcihlKTIwOCAxNDM5IHkgRmwoTm9uZSlwIEZxKC4pMCAxNTg2Ci15IEZsKHNldF9kZWZhdWx0X3ZlcmkpbyhmeSlvKF9wYSlvKHRoKW8oc1woKW8oXCkpMjA4Ci0xNjg2IHkgRnEoU3ApcihlY2lmeSkyMCBiKHRoYXQpaCh0aGUpZyhwbGF0Zm9ybSlmKHBybyluKHZpZGVkKWYoQ0EpaAotKGNlcnRpXDAzNGNhdGVzKWcoYXJlKWYodG8paChiKXIoZSloKHVzZWQpZihmb3IpZyh2KW4oZXJpXDAzNGNhdGlvbilmCi0ocHVycClyKG9zZXMuKTMzIGIoVGhpcykyMSBiKG1ldGhvKXIoZCkyMDggMTc4NiB5KG1hKW4oeSkyNgotYihub3QpaSh3KW4ob3JrKWUocHJvcClyKGVybHkpaChvbilnKE9TKWcoWC4pMCAxOTMyIHkKLUZsKGxvYWRfdG1wX2RoXCgpcCBGYyhkaFwwMzRsZSk2IGIgRmwoXCkpMjA4IDIwMzIgeSBGcShMb2FkKTI2Ci1iKHBhcmFtZXRlcnMpZyhmb3IpaChFcGhlbWVyYWwpZyhEaVwwMzZlLUhlbGxtYW4paChmcm9tKWcKLUZjKGRoXDAzNGxlKTYgYiBGcSguKTAgMjE3OSB5IEZsKHNldF9hcHBfZGF0YVwoKXAgRmMoZGF0YSlnCi1GbChcKSkyMDggMjI3OSB5IEZxKEFzc28pcihjaWF0ZSkyNSBiIEZjKGRhdGEpMzMgYiBGcSh3aXRoKTI3Ci1iKHRoaXMpZihDb24pbih0ZXh0KWYob2IpNSBiKGplY3QuKTM2IGIgRmMoZGF0YSllIEZxKGNhbikyNQotYihiKXIoZSlpKHJldHJpZXYpbihlZClkKGxhdGVyKWkodXNpbmcpZih0aGUpaSBGbChnZXRfYXBwX2RhdGEpMjEKLWIgRnEobWV0aG8pcihkLikwIDI0MjUgeSBGbChzZXRfY2lwaGVyX2xpc3RcKClvIEZjKGNpcGhlcnMpNwotYiBGbChcKSkyMDggMjUyNSB5IEZxKFNldCkyOCBiKHRoZSlnKGxpc3QpaChvZilmKGNpcGhlcnMpZih0byloKGIpcihlKWcKLSh1c2VkKWcoaW4pZyh0aGlzKWgoY29uKW4odGV4dC4pMzcgYihTZWUpMjggYih0aGUpaChPcClyKGVuU1NMKWYobWFuKW4KLSh1YWwpZihmb3IpaChtb3JlKWYoaW5mb3JtYXRpb24pZyhcKGUuZy4pMjA4IDI2MjUgeShjaXBoZXJzXCgxXClcKSkwCi0yNzcyIHkgRmwoc2V0X2luZm9fY2FsbGJhYylvKGtcKClvIEZjKGMpbChhbCl0KGxiKWwoYWNrKTkKLWIgRmwoXCkpMjA4IDI4NzEgeSBGcShTZXQpMzMgYih0aGUpZihpbmZvcm1hdGlvbilnKGNhbGxiYWMpbihrKWYodG8paQotRmMoYylsKGFsKXQobGIpbChhY2spOSBiIEZxKC4pNTQgYihUaGlzKTMyIGIoZnVuY3Rpb24paCh3aWxsKWcoYilyKGUpZwotKGNhbGxlZClmKGZyb20pZyh0aW1lKWgodG8pZyh0aW1lKWcoZHVyaW5nKWYoU1NMKTIwOAotMjk3MSB5KGhhbmRzaGFrKW4oZXMuKTQ5IGIgRmMoYylsKGFsKXQobGIpbChhY2spNDMgYgotRnEoc2hvdWxkKTMyIGIodGFrKW4oZSlnKHRocmVlKWcoYXJndW1lbiluKHRzOik0NSBiKGEpMzIKLWIoQ29ubmVjdGlvbilnKG9iKTUgYihqZWN0KTMyIGIoYW5kKWcodCluKHcpbihvKWcoaW4pbih0ZWdlcnMuKTUwCi1iKFRoZSkzMiBiKFwwMzRyc3QpMjA4IDMwNzAgeShpbiluKHRlZ2VyKWYoc3ApcihlY2lcMDM0ZXMpZyh3aGVyZSloKGluKQotZyh0aGUpZyhTU0wpZyhoYW5kc2hhayluKGUpZih0aGUpaChmdW5jdGlvbiloKHcpbihhcyllKGNhbGxlZCwpaChhbmQpZwotKHRoZSlnKG90aGVyKWcodGhlKWcocmV0dXJuKWYoY28pcihkZSkyMDggMzE3MCB5KGZyb20pYyhhKWcoXChwKXIKLShvc3NpYmx5KWcoZmFpbGVkXCkpaChpbiluKHRlcm5hbClmKGZ1bmN0aW9uKWgoY2FsbC4pMAotMzMxNyB5IEZsKHNldF9vcHRpb25zXCgpcCBGYyhvcHRpb25zKTcgYiBGbChcKSkyMDggMzQxNwoteSBGcShBKW4oZGQpMjggYihTU0wpaChvcHRpb25zLikzOCBiKE9wdGlvbnMpMjggYih5KW4ob3UpZihoYSluKHYpbihlKWcKLShzZXQpaShiKXIoZWZvcmUpZihhcmUpZihub3QpaChjbGVhcmVkISkzOCBiKFRoaXMpMjgKLWIobWV0aG8pcihkKWgoc2hvdWxkKWYoYilyKGUpaCh1c2VkKWYod2l0aCloKHRoZSkyMDgKLTM1MTYgeSBGbChPUF8qKWQgRnEoY29uc3RhbiluKHRzLikwIDM2NjMgeSBGbChzZXRfcGFzc3dkX2NiXCgpcAotRmMoYylsKGFsKXQobGIpbChhY2spOSBiIEZiKFspcCBGYygsKTI1IGIodXNlcilsKGRhdGEpMTkKLWIgRmIoXSlwIEZsKFwpKTIwOCAzNzYzIHkgRnEoU2V0KTQyIGIodGhlKWcocGFzc3BocmFzZSlmKGNhbGxiYWMpbihrKWYKLSh0bylpIEZjKGMpbChhbCl0KGxiKWwoYWNrKTkgYiBGcSguKTgyIGIoVGhpcyk0MiBiKGZ1bmN0aW9uKWgod2lsbClmKGIpCi1yKGUpZyhjYWxsZWQpZyh3aGVuKWcoYSlnKHByaXYpLTUgYihhdGUpNDIgYihrKW4oZXkpZih3aXRoKWgoYSkyMDgKLTM4NjIgeShwYXNzcGhyYXNlKTMyIGIoaXMpaShsb2FkZWQuKTU2IGIgRmMoYylsKGFsKXQobGIpbChhY2spNDUKLWIgRnEobSluKHVzdCkzNCBiKGFjY2VwdClnKHRocmVlKWcocClyKG9zaXRpb25hbClmKGFyZ3VtZW4pbih0cy4pNTYKLWIoRmlyc3QsKTM1IGIoYW4pZihpbiluKHRlZ2VyKWYoZ2l2aW5nKWgodGhlKTIwOCAzOTYyCi15KG1heGltKW4odW0pZShsZW5ndGgpaShvZilmKHRoZSlnKHBhc3NwaHJhc2UpZihpdCloKG1hKW4oeSlnKHJldHVybi4pCi01MyBiKElmKTMzIGIodGhlKWgocmV0dXJuZWQpZShwYXNzcGhyYXNlKWcoaXMpaChsb25nZXIpZih0aGFuKWgodGhpcywpaQotKGl0KTIwOCA0MDYyIHkod2lsbCkyOSBiKGIpcihlKWgodHJ1bmNhdGVkLik0MyBiKFNlY29uZCwpMzAKLWIoYSlmKGIpcihvKXIob2xlYW4pZyh2KS01IGIoYWx1ZSkyOSBiKHdoaWMpbihoKWgod2lsbClnKGIpcihlKWcodHJ1ZSlmCi0oaWYpaCh0aGUpZyh1c2VyKWYoc2hvdWxkKWcoYilyKGUpaChwcm9tcHRlZClnKGZvcilmKHRoZSkyMDgKLTQxNjEgeShwYXNzcGhyYXNlKWsodCluKHdpY2UpaChhbmQpaCh0aGUpZyhjYWxsYmFjKW4oaylmKHNob3VsZClnKHYpbgotKGVyaWZ5KWgodGhhdClnKHRoZSlnKHQpbih3KW4obylmKHYpLTUgYihhbHVlcykzNSBiKHN1cHBsaWVkKWcoYXJlKWYKLShlcXVhbC4pNTggYihUaGlyZCwpMzcgYih0aGUpMjA4IDQyNjEgeSh2KS01IGIoYWx1ZSkyNwotYihnaXYpbihlbilnKGFzKWcodGhlKWggRmModXNlcilsKGRhdGEpMzUgYiBGcShwYXJhbWV0ZXIpMjYKLWIodG8paCBGbChzZXRfcGFzc3dkX2NiKXAgRnEoLikzMiBiKElmKWMoYW4pZyhlcnJvcilkKG8pcihjY3VycywpaQotRmMoYylsKGFsKXQobGIpbChhY2spMzkgYiBGcShzaG91bGQpMjcgYihyZXR1cm4pZyhhKTIwOAotNDM2MCB5KGZhbHNlKWcodiktNSBiKGFsdWUpMjcgYihcKGUuZy4pMzcgYihhbikyNyBiKGVtcHQpbih5KWgKLShzdHJpbmdcKS4pMCA0NTA3IHkgRmwoc2V0X3Nlc3Npb25faWRcKClwIEZjKG4pbyhhbWUpNgotYiBGbChcKSkyMDggNDYwNyB5IEZxKFNldCkzMyBiKHRoZSloKGNvbiluKHRleHQpZiBGYyhuYW1lKTM5Ci1iIEZxKHdpdGhpbikzNCBiKHdoaWMpbihoKWYoYSlnKHNlc3Npb24pZihjYW4paChiKXIoZSloKHJldXNlZCllKGZvciloCi0odGhpcylnKENvbiluKHRleHQpZyhvYik1IGIoamVjdC4pNTQgYihUaGlzKTMzIGIoaXMpZyhuZWVkZWQpMjA4Ci00NzA3IHkod2hlbillKGRvaW5nKWcoc2Vzc2lvbilnKHJlc3VtcHRpb24sKWgoYilyKGVjYXVzZSlnKHRoZXJlKWYoaXMpaAotKG5vKWYodyluKGEpbih5KWcoZm9yKWcoYSlnKHN0b3JlZClnKHNlc3Npb24pZih0bylpKGtubyluKHcpZih3aGljKW4oaCkKLWcoQ29uKW4odGV4dCkyMDggNDgwNiB5KG9iKTUgYihqZWN0KTI3IGIoaXQpaChpcylmKGFzc28pcihjaWF0ZWQpZwotKHdpdGguKTM3IGIgRmMobmFtZSlkIEZxKG1hKW4oeSkyNyBiKGIpcihlKWgoYW4pbih5KWUoYmluYXJ5KWgoZGF0YS4pMAotNDk1MyB5IEZsKHNldF90aW1lb3V0XCgpcCBGYyh0aW1lKWwob3V0KTggYiBGbChcKSkyMDgKLTUwNTMgeSBGcShTZXQpMjkgYih0aGUpZyh0aW1lb3V0KWgoZm9yKWUobmV3bHkpaChjcmVhdGVkKWYoc2Vzc2lvbnMpZwotKGZvciloKHRoaXMpZyhDb24pbih0ZXh0KWcob2IpNSBiKGplY3QpMjggYih0byloIEZjKHRpbWUpbChvdXQpOAotYiBGcSguKTQxIGIgRmModGltZSlsKG91dCkzNiBiIEZxKG0pbih1c3QpMjkgYihiKXIoZSloKGdpdiluKGVuKTIwOAotNTE1MiB5KGluKWYoXCh3aG9sZVwpKWYoc2Vjb25kcy4pNDAgYihUaGUpMjkgYihkZWZhdWx0KWcodiktNQotYihhbHVlKTI4IGIoaXMpaCgzMDApZShzZWNvbmRzLik0MCBiKFNlZSkyOSBiKHRoZSlnKE9wKXIoZW5TU0wpZyhtYW4pbgotKHVhbClmKGZvcilnKG1vcmUpZyhpbmZvcm1hdGlvbikyMDggNTI1MiB5KFwoZS5nLikzNgotYihTU0xfQ1RYX3NldF90aW1lb3V0XCgzXClcKS4pMCA1Mzk5IHkgRmwoc2V0X3ZlcmlmeVwoKXAKLUZjKG1vKWwoZGUsKTI2IGIoYylsKGFsKXQobGIpbChhY2spOSBiIEZsKFwpKXAgMCA1NTQ5Ci0zOTAxIDQgdiAwIDU2NDkgYSBGZigxNCkyMTk3IGIoMyk4MyBiIEZsKE9wZW5TU0wpMjQgYgotRmYoXDAyNilrKFB5dGhvbilmKGludGVyZmFjZSloKHRvKWYoT3ApcihlblNTTClwIGVvcAotZW5kCi0lJVBhZ2U6IDE1IDE1Ci1UZVhEaWN0IGJlZ2luIDE1IDE0IGJvcCAyMDggODMgYSBGcShTZXQpMzYgYih0aGUpaCh2KW4oZXJpXDAzNGNhdGlvbillCi0oXDAzNWFncylnKGZvciloKHRoaXMpaChDb24pbih0ZXh0KWYob2IpNSBiKGplY3QpMzYgYih0bylnCi1GYyhtbylsKGRlKTQ0IGIgRnEoYW5kKTM2IGIoc3ApcihlY2lmeSlnKHRoYXQpaCBGYyhjKWwoYWwpdChsYilsKGFjayk0NwotYiBGcShzaG91bGQpMzYgYihiKXIoZSloKHVzZWQpMjA4IDE4MyB5KGZvcikzMCBiKHYpbihlcmlcMDM0Y2F0aW9uKWcKLShjYWxsYmFjKW4oa3MuKTQ1IGIgRmMobW8pbChkZSkzOCBiIEZxKHNob3VsZCkzMSBiKGIpcihlKWgob25lKWUob2YpMzgKLWIgRmwoVkVSSUZZX05PTkUpMjYgYiBGcShhbmQpMzEgYiBGbChWRVJJRllfUEVFUilwIEZxKC4pYyhJZikzOAotYiBGbChWRVJJRllfUEVFUikyNiBiIEZxKGlzKTIwOCAyODIgeSh1c2VkLClqIEZjKG1vKWwoZGUpMzYKLWIgRnEoY2FuKTI5IGIoYilyKGUpZyhPUjplZClnKHdpdGgpZyBGbChWRVJJRllfRkFJTF9JRl9OTylvKF9QKW8oRUUpbwotKFJfQylvKEVSKW8oVCkyMyBiIEZxKGFuZCkyOSBiIEZsKFZFUklGWV9DTElFTlRfTylvKE5DRSkyMgotYiBGcSh0bykyOSBiKGZ1cnRoZXIpMjA4IDM4MiB5KGNvbiluKHRyb2wpMjMgYih0aGUpaihiKXIoZWhhKW4odmlvdXIuKQotMzQgYiBGYyhjKWwoYWwpdChsYilsKGFjaylpIEZxKHNob3VsZCkyNSBiKHRhayluKGUpZihcMDM0diluKGUpaAotKGFyZ3VtZW4pbih0czopMzQgYihBKTI1IGIoQ29ubmVjdGlvbilnKG9iKTUgYihqZWN0LCkyNQotYihhbilnKFg1MDkpZihvYik1IGIoamVjdCwpMjUgYihhbmQpMjA4IDQ4MiB5KHRocmVlKWUoaW4pbih0ZWdlcilnKHYpLTUKLWIoYXJpYWJsZXMsKTIzIGIod2hpYyluKGgpaChhcmUpZihpbiloKHR1cm4pZyhwKXIob3RlbiluKHRpYWwpZyhlcnJvcilkCi0obiluKHVtKW4oYilyKGVyLClrKGVycm9yKWMoZGVwdGgpayhhbmQpZihyZXR1cm4pZihjbylyKGRlLikzNQotYiBGYyhjKWwoYWwpdChsYilsKGFjaykyMDggNTgxIHkgRnEoc2hvdWxkKTI3IGIocmV0dXJuKWcodHJ1ZSlnKGlmKWgodikKLW4oZXJpXDAzNGNhdGlvbilmKHBhc3NlcylmKGFuZCloKGZhbHNlKWgob3RoZXJ3aXNlLikwCi03MjggeSBGbChzZXRfdmVyaWZ5X2RlcHRoKW8oXCgpcCBGYyhkZXB0aCk2IGIgRmwoXCkpMjA4Ci04MjggeSBGcShTZXQpMzYgYih0aGUpZyhtYXhpbSluKHVtKWYoZGVwdGgpaChmb3IpZyh0aGUpZyhjZXJ0aVwwMzRjYXRlKQotZihjKW4oaGFpbilnKHYpbihlcmlcMDM0Y2F0aW9uKWYodGhhdClpKHNoYWxsKWYoYilyKGUpaChhbGxvKW4odyluKGVkKWUKLShmb3IpaSh0aGlzKWYoQ29uKW4odGV4dCkyMDggOTI3IHkob2IpNSBiKGplY3QuKTAgMTA3NAoteSBGbCh1c2VfY2VydGlmaWNhdGVcKClvIEZjKGMpbChlcnQpaiBGbChcKSkyMDggMTE3NAoteSBGcShVc2UpMjcgYih0aGUpaChjZXJ0aVwwMzRjYXRlKWYgRmMoYylsKGVydCkzNSBiIEZxKHdoaWMpbihoKTI4Ci1iKGhhcylmKHRvKWcoYilyKGUpaChhKWYoWDUwOSlnKG9iKTUgYihqZWN0LikwIDEzMjEgeQotRmwoYWRkX2V4dHJhX2NoYWluXylvKGNlKW8ocnRcKClvIEZjKGMpbChlcnQpaiBGbChcKSkyMDgKLTE0MjAgeSBGcShBKW4oZGRzKTMyIGIodGhlKWgoY2VydGlcMDM0Y2F0ZSlmIEZjKGMpbChlcnQpOAotYiBGcSgsKTM0IGIod2hpYyluKGgpZihoYXMpZih0bylnKGIpcihlKWkoYSllKFg1MDkpZihvYik1Ci1iKGplY3QsKTM0IGIodG8pZih0aGUpZyhjZXJ0aVwwMzRjYXRlKWYoYyluKGhhaW4pZyhwcmVzZW4pbih0ZWQpZwotKHRvZ2V0aGVyKTIwOCAxNTIwIHkod2l0aCljKHRoZSlnKGNlcnRpXDAzNGNhdGUuKTAgMTY2NwoteSBGbCh1c2VfY2VydGlmaWNhdGVfKW8oY2gpbyhhaW4pbyhfZilvKGlsKW8oZVwoKXAgRmMoXDAzNClvKGxlKTYKLWIgRmwoXCkpMjA4IDE3NjYgeSBGcShMb2FkKTI2IGIoYSloKGNlcnRpXDAzNGNhdGUpZyhjKW4oaGFpbilnKGZyb20paAotRmMoXDAzNGxlKTM0IGIgRnEod2hpYyluKGgpMjcgYihtKW4odXN0KWgoYilyKGUpZyhQRU0pZyhlbmNvKXIoZGVkLikwCi0xOTEzIHkgRmwodXNlX3ByaXZhdGVrZXlcKClwIEZjKHBrZXkpNyBiIEZsKFwpKTIwOCAyMDEzCi15IEZxKFVzZSkyNyBiKHRoZSloKHByaXYpLTUgYihhdGUpMjcgYihrKW4oZXkpaCBGYyhwa2V5KTM2Ci1iIEZxKHdoaWMpbihoKTI4IGIoaGFzKWYodG8pZyhiKXIoZSloKGEpZihQS2V5KWgob2IpNQotYihqZWN0LikwIDIxNzQgeSBGbCh1c2VfY2VydGlmaWNhdGVfKW8oZmkpbyhsZVwoKW8gRmMoXDAzNGxlKWgKLUZiKFspcCBGYygsKTI0IGIoZm9ybWF0KWQgRmIoXSlwIEZsKFwpKTIwOCAyMjc0IHkgRnEoTG9hZClpKHRoZSloCi0oXDAzNHJzdClnKGNlcnRpXDAzNGNhdGUpZihmb3VuZCloKGluKWggRmMoXDAzNGxlKTYgYgotRnEoLikzNiBiKFRoZSkyNCBiKGNlcnRpXDAzNGNhdGUpZihtKW4odXN0KWgoYilyKGUpaChpbilmKHRoZSlnKGZvcm1hdCkKLWcoc3ApcihlY2lcMDM0ZWQpZyhiKW4oeSloIEZjKGZvcm1hdCk4IGIgRnEoLCkyNSBiKHdoaWMpbihoKTIwOAotMjM3MyB5KGlzKWkoZWl0aGVyKWcgRmwoRklMRVRZUEVfUEVNKWMgRnEob3IpayBGbChGSUxFVFlQRV9BU04xKXAKLUZxKC4payhUaGUpZChkZWZhdWx0KWcoaXMpZiBGbChGSUxFVFlQRV9QRU0pcCBGcSguKTAKLTI1MjAgeSBGbCh1c2VfcHJpdmF0ZWtleV9mKW8oaWwpbyhlXCgpcCBGYyhcMDM0KW8obGUpNgotYiBGYihbKXAgRmMoLCkyNSBiKGZvcm1hdCkyMCBiIEZiKF0pcCBGbChcKSkyMDggMjYyMAoteSBGcShMb2FkKTMxIGIodGhlKWgoXDAzNHJzdClnKHByaXYpLTUgYihhdGUpMzEgYihrKW4oZXkpZyhmb3VuZClpKGluKWYKLUZjKFwwMzRsZSk2IGIgRnEoLik1MCBiKFRoZSkzMiBiKHByaXYpLTUgYihhdGUpMzIgYihrKW4oZXkpZihtKW4odXN0KWgKLShiKXIoZSlnKGluKWgodGhlKWYoZm9ybWF0KWYoc3ApcihlY2lcMDM0ZWQpaShiKW4oeSlmCi1GYyhmb3JtYXQpOCBiIEZxKCwpMjA4IDI3MjAgeSh3aGljKW4oaCkyNyBiKGlzKWcoZWl0aGVyKWgKLUZsKEZJTEVUWVBFX1BFTSkyMiBiIEZxKG9yKTI3IGIgRmwoRklMRVRZUEVfQVNOMSlwIEZxKC4pMzIKLWIoVGhlKTI3IGIoZGVmYXVsdCloKGlzKWcgRmwoRklMRVRZUEVfUEVNKXAgRnEoLikwIDI4NjYKLXkgRmwoc2V0X3Rsc2V4dF9zZXJ2ZSlvKHJuKW8oYW1lKW8oX2MpbyhhbClvKGxiYSlvKGNrKW8oXCgpcAotRmMoYylsKGFsKXQobGIpbChhY2spOSBiIEZsKFwpKTIwOCAyOTY2IHkgRnEoU3ApcihlY2lmeSkyNQotYihhKWYob25lLWFyZ3VtZW4pbih0KWYoY2FsbGFibGUpaCh0bylnKHVzZSloKGFzKWYodGhlKWgoVExTKWYKLShleHRlbnNpb24paChzZXJ2KW4oZXIpZChuYW1lKWooY2FsbGJhYyluKGsuKTM0IGIoV2hlbikyNQotYihhKWcoY29ubmVjdGlvbikyMDggMzA2NiB5KHVzaW5nKTM3IGIodGhlKWgoc2VydiluKGVyKWUobmFtZSloCi0oZXh0ZW5zaW9uKWcoaXMpaChtYWRlKWYodXNpbmcpZyh0aGlzKWgoY29uKW4odGV4dCwpaSh0aGUpZShjYWxsYmFjKW4KLShrKWYod2lsbClnKGIpcihlKWgoaW4pbih2KW4ob2spbihlZClmKHdpdGgpaCh0aGUpMjA4Ci0zMTY1IHkgRmwoQ29ubmVjdGlvbikyMyBiIEZxKGluc3RhbmNlLik3MyBiKE5ldykyOCBiKGluKWcodiluKGVyc2lvbillCi0oMC4xMy4pMCAzNDI4IHkgRmYoQ29ubmVjdGlvbilnKG9iamVjdHMpMCAzNjI5IHkgRnEoQ29ubmVjdGlvbiloKG9iKTUKLWIoamVjdHMpMjcgYihoYSluKHYpbihlKWYodGhlKWkoZm9sbG8pbih3aW5nKWYobWV0aG8pcihkczopMAotMzc3NiB5IEZsKGFjY2VwdFwoXCkpMjA4IDM4NzUgeSBGcShDYWxsKTMzIGIodGhlKWcgRmwoYWNjZXB0KWUKLUZxKG1ldGhvKXIoZClqKG9mKWYodGhlKWgodW5kZXJseWluZylmKHNvKXIoYyluKGspbihldClmKGFuZCloKHNldCloCi0odXApZyhTU0wpZihvbilnKHRoZSloKHJldHVybmVkKWYoc28pcihjKW4oayluKGV0LCloKHVzaW5nKWYodGhlKTIwOAotMzk3NSB5KENvbiluKHRleHQpMjIgYihvYik1IGIoamVjdCkyMiBiKHN1cHBsaWVkKWgodG8pZih0aGlzKWgKLShDb25uZWN0aW9uKWYob2IpNSBiKGplY3QpMjIgYihhdCloKGNyZWF0aW9uLikzNCBiKFJldHVybnMpMjIKLWIoYSlnKHBhaXIpZyBGbChcKClwIEZjKGMpbChvbm4pNiBiIEZsKCwpNDMgYiBGYyhhZGRyKWwoZXNzKTcKLWIgRmwoXCkpcCBGcSguKTM2IGIod2hlcmUpMjA4IDQwNzQgeSBGYyhjKWwob25uKWQgRnEoaXMpMjgKLWIodGhlKWcobmV3KWYoQ29ubmVjdGlvbilnKG9iKTUgYihqZWN0KTI4IGIoY3JlYXRlZCwpZShhbmQpaQotRmMoYWRkcilsKGVzcykzNSBiIEZxKGlzKTI4IGIoYXMpZihyZXR1cm5lZClnKGIpbih5KWcodGhlKWgoc28pcihjKW4oaykKLW4oZXQncyllIEZsKGFjY2VwdClwIEZxKC4pMCA0MjIxIHkgRmwoYmluZFwoKXAgRmMoYWRkcilsKGVzcyk3Ci1iIEZsKFwpKTIwOCA0MzIxIHkgRnEoQ2FsbCkyNyBiKHRoZSloIEZsKGJpbmQpZSBGcShtZXRobylyKGQpaShvZilmCi0odGhlKWgodW5kZXJseWluZylmKHNvKXIoYyluKGspbihldC4pMCA0NDY4IHkgRmwoY2xvc2VcKFwpKTIwOAotNDU2NyB5IEZxKENhbGwpaSh0aGUpaCBGbChjbG9zZSllIEZxKG1ldGhvKXIoZClpKG9mKWcodGhlKWcodW5kZXJseWluZykKLWYoc28pcihjKW4oayluKGV0Lik0MyBiKE5vdGU6KWUoSWYpMzEgYih5KW4ob3UpZSh3KW4oYW4pbih0KWcoY29ycmVjdClmCi0oU1NMKWkoY2xvc3VyZSwpZih5KW4ob3UpZyhuZWVkKWgodG8pMjA4IDQ2NjcgeShjYWxsKWQodGhlKWgKLUZsKHNodXRkb3duKWMgRnEobWV0aG8pcihkKWsoXDAzNHJzdC4pMCA0ODE0IHkgRmwoY29ubmVjdFwoKXAKLUZjKGFkZHIpbChlc3MpNyBiIEZsKFwpKTIwOCA0OTE0IHkgRnEoQ2FsbCkzMSBiKHRoZSloCi1GbChjb25uZWN0KWUgRnEobWV0aG8pcihkKWkob2YpZyh0aGUpZyh1bmRlcmx5aW5nKWcoc28pcihjKW4oayluKGV0KWUKLShhbmQpaShzZXQpZyh1cClnKFNTTCloKG9uKWUodGhlKWkoc28pcihjKW4oayluKGV0LClmKHVzaW5nKWYodGhlKWgKLShDb24pbih0ZXh0KTIwOCA1MDEzIHkob2IpNSBiKGplY3QpMjcgYihzdXBwbGllZCloKHRvKWYodGhpcyloCi0oQ29ubmVjdGlvbilmKG9iKTUgYihqZWN0KTI3IGIoYXQpaChjcmVhdGlvbi4pMCA1MTYwCi15IEZsKGNvbm5lY3RfZXhcKClwIEZjKGFkZHIpbChlc3MpNyBiIEZsKFwpKTIwOCA1MjYwCi15IEZxKENhbGwpMjQgYih0aGUpZyBGbChjb25uZWN0X2V4KWMgRnEobWV0aG8pcihkKTI1Ci1iKG9mKWYodGhlKWgodW5kZXJseWluZylmKHNvKXIoYyluKGspbihldClmKGFuZCloKHNldClnKHVwKWgoU1NMKWYob24pZwotKHRoZSloKHNvKXIoYyluKGspbihldCwpZih1c2luZylnKHRoZSlnKENvbiluKHRleHQpMjA4Ci01MzU5IHkob2IpNSBiKGplY3QpMzUgYihzdXBwbGllZClnKHRvKWgodGhpcylmKENvbm5lY3Rpb24pZyhvYik1Ci1iKGplY3QpMzYgYihhdClmKGNyZWF0aW9uLik1OSBiKE5vdGUpMzYgYih0aGF0KWYoaWYpaCh0aGUpZwotRmwoY29ubmVjdF9leCkzMSBiIEZxKG1ldGhvKXIoZCkzNiBiKG9mKWcodGhlKXAgMCA1NTQ5Ci0zOTAxIDQgdiAwIDU2NDkgYSBGZigzLjMpODIgYiBGbChTU0wpMjYgYiBGZihcMDI2KWkoQW4pZyhpbnRlcmZhY2UpZwotKHRvKWYodGhlKWcoU1NMLXNwKXIoZWNpXDAzNGMpaChwYSluKHJ0cylmKG9mKWgoT3ApcihlblNTTCkxNjExCi1iKDE1KXAgZW9wIGVuZAotJSVQYWdlOiAxNiAxNgotVGVYRGljdCBiZWdpbiAxNiAxNSBib3AgMjA4IDgzIGEgRnEoc28pcihjKW4oayluKGV0KTI2Ci1iKGRvKXIoZXNuJ3QpaShyZXR1cm4pZigwLClnKFNTTCloKHcpbihvbid0KWYoYilyKGUpaChpbml0aWFsaXplZC4pMAotMjMwIHkgRmwoZG9faGFuZHNoYWtlXChcKSkyMDggMzMwIHkgRnEoUCluKGVyZm9ybSk0OQotYihhbiloKFNTTClnKGhhbmRzaGFrKW4oZSlmKFwodXN1YWxseSloKGNhbGxlZClnKGFmdGVyKWYKLUZsKHJlbmVnb3RpYXRlKWQgRnEob3IpaihvbmUpaChvZik1NyBiIEZsKHNldF9hY2NlcHRfc3RhdClvKGUpNDQKLWIgRnEob3IpMjA4IDQyOSB5IEZsKHNldF9hY2NlcHRfc3RhdClvKGUpcCBGcShcKS4pMzEKLWIoVGhpcylkKGNhbilmKHJhaXNlKWYodGhlKWkoc2FtZSlmKGV4Y2VwdGlvbnMpZyhhcylnCi1GbChzZW5kKWYgRnEoYW5kKWggRmwocmVjdilwIEZxKC4pMCA1NzYgeSBGbChmaWxlbm9cKFwpKTIwOAotNjc2IHkgRnEoUmV0cmlldiluKGUpZih0aGUpaShcMDM0bGUpZyhkZXNjcmlwdG9yKWUobiluKHVtKW4oYilyKGVyKWkKLShmb3IpZih0aGUpaCh1bmRlcmx5aW5nKWUoc28pcihjKW4oayluKGV0LikwIDgyMyB5IEZsKGxpc3RlblwoKXAKLUZjKGIpbChhY2tsbylsKGcpNyBiIEZsKFwpKTIwOCA5MjIgeSBGcShDYWxsKTI3IGIodGhlKWgKLUZsKGxpc3RlbilkIEZxKG1ldGhvKXIoZClqKG9mKWYodGhlKWgodW5kZXJseWluZylmKHNvKXIoYyluKGspbihldC4pMAotMTA2OSB5IEZsKGdldF9hcHBfZGF0YVwoXCkpMjA4IDExNjkgeSBGcShSZXRyaWV2KW4oZSlmKGFwcGxpY2F0aW9uKWgKLShkYXRhKWcoYXMpZyhzZXQpaChiKW4oeSlnIEZsKHNldF9hcHBfZGF0YSlwIEZxKC4pMCAxMzE2Ci15IEZsKGdldF9jaXBoZXJfbGlzdFwoKW8oXCkpMjA4IDE0MTUgeSBGcShSZXRyaWV2KW4oZSkyMwotYih0aGUpaChsaXN0KWcob2YpZyhjaXBoZXJzKWcodXNlZClnKGIpbih5KWYodGhlKWkoQ29ubmVjdGlvbillKG9iKTUKLWIoamVjdC4pMzYgYihXKS05IGIoQVJOSU5HOikyNSBiKFRoaXMpZihBUEkpaChoYXMpZShjKW4oaGFuZ2VkLikzNQotYihJdCkyNCBiKHVzZWQpMjA4IDE1MTUgeSh0bylqKHRhayluKGUpZyhhbilnKG9wdGlvbmFsKWcocGFyYW1ldGVyKWYKLShhbmQpaChqdXN0KWgocmV0dXJuKWcoYSlmKHN0cmluZywpZyhidXQpaChub3QpZihpdCloKHJldHVybnMpZih0aGUpaAotKGVuKW4odGlyZSlmKGxpc3QpaChpbilnKG9uZSlmKGdvLikwIDE2NjIgeSBGbChnZXRfY2xpZW50X2NhX2xpKW8oc3QpbwotKFwoXCkpMjA4IDE3NjEgeSBGcShSZXRyaWV2KW4oZSllKHRoZSlpKGxpc3QpZyhvZilmKHByZWZlcnJlZClnKGNsaWVuKW4KLSh0KWcoY2VydGlcMDM0Y2F0ZSlnKGlzc3VlcnMpZyhzZW4pbih0KWcoYiluKHkpZyh0aGUpaChzZXJ2KW4oZXIpZShhcyloCi1GbChPcGVuU1NMLmNyeXB0by4pbyhYNTApbyg5TilvKGFtKW8oZSkyMDggMTg2MSB5IEZxKG9iKTUKLWIoamVjdHMuKTIwOCAxOTk0IHkoSWYpMjUgYih0aGlzKWcoaXMpZihhKWgoY2xpZW4pbih0KWYKLUZsKENvbm5lY3Rpb24pcCBGcSgsKWUodGhlKWoobGlzdClnKHdpbGwpZyhiKXIoZSlnKGVtcHQpbih5KWYodW4pbih0aWwpCi1oKHRoZSloKGNvbm5lY3Rpb24pZSh3aXRoKWgodGhlKWcoc2VydiluKGVyKWUoaXMpaChlc3RhYmxpc2hlZC4pMjA4Ci0yMTI3IHkoSWYpMzMgYih0aGlzKWcoaXMpZyhhKWYoc2VydiluKGVyKWcgRmwoQ29ubmVjdGlvbilwCi1GcSgsKWUocmV0dXJuKWkodGhlKWgobGlzdCloKG9mKWUoY2VydGlcMDM0Y2F0ZSloKGF1dGhvcml0aWVzKWYodGhhdCloCi0od2lsbClnKGIpcihlKWgoc2VuKW4odCllKG9yKWcoaGFzKWgoYilyKGVlbikyMDggMjIyNgoteShzZW4pbih0KTI3IGIodG8pZyh0aGUpaChjbGllbiluKHQsKWcoYXMpZihjb24pbih0cm9sbGVkKWYoYiluKHkpaAotKHRoaXMpaCBGbChDb25uZWN0aW9uKXAgRnEoJ3MpYyBGbChDb250ZXh0KXAgRnEoLikyMDgKLTIzNTkgeShOZXcpaihpbiloKHYpbihlcnNpb24pZSgwLjEwLikwIDI1MDYgeSBGbChnZXRfY29udGV4dFwoXCkpMjA4Ci0yNjA2IHkgRnEoUmV0cmlldiluKGUpZyh0aGUpaShDb24pbih0ZXh0KWYob2IpNSBiKGplY3QpMjgKLWIoYXNzbylyKGNpYXRlZCllKHdpdGgpaSh0aGlzKWcoQ29ubmVjdGlvbi4pMCAyNzUyIHkKLUZsKHNldF9jb250ZXh0XCgpcCBGYyhjKWwob250ZXh0KTggYiBGbChcKSkyMDggMjg1MiB5Ci1GcShTcClyKGVjaWZ5KTI4IGIoYSlmKHJlcGxhY2VtZW4pbih0KWcoQ29uKW4odGV4dClnKG9iKTUKLWIoamVjdCkyNyBiKGZvcilnKHRoaXMpaChDb25uZWN0aW9uLikwIDI5OTkgeSBGbChnZXRfcGVlcl9jZXJ0aWZpKW8oY2EpCi1vKHRlXCgpbyhcKSkyMDggMzA5OSB5IEZxKFJldHJpZXYpbihlKWUodGhlKWkob3RoZXIpZihzaWRlJ3MpZwotKGNlcnRpXDAzNGNhdGUpZyhcKGlmKWkoYW4pbih5XCkpMCAzMjQ1IHkgRmwoZ2V0X3BlZXJfY2VydF9jaClvKGFpKW8KLShuXChcKSkyMDggMzM0NSB5IEZxKFJldHJpZXYpbihlKWQodGhlKWkodHVwbGUpZyhvZilnKHRoZSlnKG90aGVyKWYKLShzaWRlJ3MpZyhjZXJ0aVwwMzRjYXRlKWcoYyluKGhhaW4pZyhcKGlmKWgoYW4pbih5XCkpMAotMzQ5MiB5IEZsKGdldHBlZXJuYW1lXChcKSkyMDggMzU5MSB5IEZxKENhbGwpZih0aGUpaAotRmwoZ2V0cGVlcm5hbWUpMjMgYiBGcShtZXRobylyKGQpMjggYihvZilmKHRoZSloKHVuZGVybHlpbmcpZihzbylyKGMpbgotKGspbihldC4pMCAzNzM4IHkgRmwoZ2V0c29ja25hbWVcKFwpKTIwOCAzODM4IHkgRnEoQ2FsbClnKHRoZSloCi1GbChnZXRzb2NrbmFtZSkyMyBiIEZxKG1ldGhvKXIoZCkyOCBiKG9mKWYodGhlKWgodW5kZXJseWluZylmKHNvKXIoYyluCi0oayluKGV0LikwIDQwMDIgeSBGbChnZXRzb2Nrb3B0XCgpcCBGYyhsZXZlbCwpZihvcHRuYW1lKTYKLWIgRmIoWylwIEZjKCwpMzEgYihidVwwMzVlbikxOCBiIEZiKF0pcCBGbChcKSkyMDggNDEwMQoteSBGcShDYWxsKTI3IGIodGhlKWggRmwoZ2V0c29ja29wdCkyMyBiIEZxKG1ldGhvKXIoZCkyOAotYihvZilnKHRoZSlnKHVuZGVybHlpbmcpZihzbylyKGMpbihrKW4oZXQuKTAgNDI0OCB5IEZsKHBlbmRpbmdcKFwpKTIwOAotNDM0OCB5IEZxKFJldHJpZXYpbihlKTIyIGIodGhlKWgobiluKHVtKW4oYilyKGVyKWcob2YpZyhiKW4oeXRlcylnCi0odGhhdCloKGNhbillKGIpcihlKWkoc2FmZWx5KWYocmVhZClmKGZyb20paCh0aGUpZyhTU0wpaChidVwwMzNlcilmKFwoKQotcCBGYyhub3QpZyBGcSh0aGUpaCh1bmRlcmx5aW5nKWUodHJhbnNwKXIob3J0KTIwOCA0NDQ3Ci15KGJ1XDAzM2VyXCkuKTAgNDU5NCB5IEZsKHJlY3ZcKClwIEZjKGJ1ZnNpemUpNiBiIEZsKFwpKTIwOAotNDY5NCB5IEZxKFJlY2VpdiluKGUpMzAgYihkYXRhKWgoZnJvbSlnKHRoZSloKENvbm5lY3Rpb24uKTQ3Ci1iKFRoZSkzMSBiKHJldHVybilnKHYpLTUgYihhbHVlKTMxIGIoaXMpaChhKWUoc3RyaW5nKWgocmVwcmVzZW4pbih0aW5nKQotZih0aGUpaChkYXRhKWcocmVjZWl2KW4oZWQuKTQ3IGIoVGhlKTIwOCA0NzkzIHkobWF4aW0pbih1bSkyNwotYihhbW91biluKHQpZyhvZilnKGRhdGEpaCh0bylmKGIpcihlKWgocmVjZWl2KW4oZWQpZShhdClpKG9uY2UsKWYoaXMpZwotKHNwKXIoZWNpXDAzNGVkKWgoYiluKHkpaCBGYyhidWZzaXplKTYgYiBGcSguKTAgNDk0MAoteSBGbChiaW9fd3JpdGVcKClwIEZjKGJ5dGVzKWggRmwoXCkpMjA4IDUwNDAgeSBGcShJZikyNwotYih0aGUpaChDb25uZWN0aW9uKWYodyluKGFzKWYoY3JlYXRlZCloKHdpdGgpZyhhKWcobWVtb3J5KWcoQklPLClnCi0odGhpcylnKG1ldGhvKXIoZCloKGNhbilmKGIpcihlKWgodXNlZClmKHRvKWcoYWRkKWcoYiluKHl0ZXMpZyh0bylnCi0odGhlKWgocmVhZCkyMDggNTE0MCB5KGVuZClnKG9mKWcodGhhdClnKG1lbW9yeSlmKEJJTy4pZyhUaGUpaAotKENvbm5lY3Rpb24pZyhjYW4pZih0aGVuKWkocmVhZCllKHRoZSloKGIpbih5dGVzKWcoXChmb3IpZihleGFtcGxlLCloCi0oaW4pZyhyZXNwKXIob25zZSlmKHRvKWgoYSlmKGNhbGwpMjA4IDUyMzkgeSh0bylnIEZsKHJlY3YpcAotRnEoXCkuKTAgNTM4NiB5IEZsKHJlbmVnb3RpYXRlXChcKSlwIDAgNTU0OSAzOTAxIDQgdgotMCA1NjQ5IGEgRmYoMTYpMjE5NyBiKDMpODMgYiBGbChPcGVuU1NMKTI0IGIgRmYoXDAyNilrKFB5dGhvbilmCi0oaW50ZXJmYWNlKWgodG8pZihPcClyKGVuU1NMKXAgZW9wIGVuZAotJSVQYWdlOiAxNyAxNwotVGVYRGljdCBiZWdpbiAxNyAxNiBib3AgMjA4IDgzIGEgRnEoUmVuZWdvdGlhdGUpMjYgYih0aGUpaShTU0wpZwotKHNlc3Npb24uKTM2IGIoQ2FsbCkyNyBiKHRoaXMpaChpZilnKHkpbihvdSlmKHdpc2gpZyh0byloKGMpbihoYW5nZSllCi0oY2lwaGVyKWgoc3VpdGVzKWgob3IpZShhbiluKHl0aGluZyloKGxpayluKGUpZyh0aGF0LikwCi0yMzAgeSBGbChzZW5kXCgpcCBGYyhzdHJpbmcpNyBiIEZsKFwpKTIwOCAzMzAgeSBGcShTZW5kKTI3Ci1iKHRoZSloIEZjKHN0cmluZykzNSBiIEZxKGRhdGEpMjcgYih0byloKHRoZSlnKENvbm5lY3Rpb24uKTAKLTQ3NiB5IEZsKGJpb19yZWFkXCgpcCBGYyhidWZzaXplKTYgYiBGbChcKSkyMDggNTc2IHkKLUZxKElmKTMxIGIodGhlKWcoQ29ubmVjdGlvbilnKHcpbihhcylmKGNyZWF0ZWQpZyh3aXRoKWkoYSllKG1lbW9yeSlnCi0oQklPLCloKHRoaXMpZyhtZXRobylyKGQpZyhjYW4pZyhiKXIoZSloKHVzZWQpZSh0byloKHJlYWQpZihiKW4oeXRlcyloCi0oZnJvbSlnKHRoZSkyMDggNjc2IHkod3JpdGUpZChlbmQpZyhvZilnKHRoYXQpaChtZW1vcnkpZShCSU8uKWgoTWFuKW4KLSh5KWYoQ29ubmVjdGlvbiloKG1ldGhvKXIoZHMpaCh3aWxsKWYoYWRkKWcoYiluKHl0ZXMpZyh3aGljKW4oaClnKG0pbgotKHVzdClnKGIpcihlKWgocmVhZCllKGluKWkodGhpcykyMDggNzc1IHkobWFubmVyKWMob3IpaCh0aGUpZyhidVwwMzNlcikKLWgod2lsbClmKGV2KW4oZW4pbih0dWFsbHkpZihcMDM0bGwpaSh1cClnKGFuZClmKHRoZSlnKENvbm5lY3Rpb24pZwotKHdpbGwpZyhiKXIoZSloKGFibGUpZih0bylnKHRhayluKGUpZyhubylnKGZ1cnRoZXIpZyhhY3Rpb25zLikwCi05MjIgeSBGbChzZW5kYWxsXCgpcCBGYyhzdHJpbmcpNyBiIEZsKFwpKTIwOCAxMDIyIHkgRnEoU2VuZCkzMAotYihhbGwpZihvZiloKHRoZSlnIEZjKHN0cmluZykzNyBiIEZxKGRhdGEpMjkgYih0bylnKHRoZSloKENvbm5lY3Rpb24uKQotNDMgYihUaGlzKTMwIGIoY2FsbHMpZiBGbChzZW5kKWYgRnEocmVwKXIoZWF0ZWRseSloKHVuKW4odGlsKWgoYWxsKWYKLShkYXRhKWgoaXMpZihzZW4pbih0Lik0MyBiKElmKTMwIGIoYW4pMjA4IDExMjEgeShlcnJvcikyNQotYihvKXIoY2N1cnMsKWkoaXQncyloKGltcClyKG9zc2libGUpZih0bylnKHRlbGwpaChobyluKHcpZihtKW4odWMpbihoKWgKLShkYXRhKWYoaGFzKWcoYilyKGVlbiloKHNlbiluKHQuKTAgMTI2OCB5IEZsKHNldF9hY2NlcHRfc3RhdGUpbyhcKFwpKQotMjA4IDEzNjggeSBGcShTZXQpMjAgYih0aGUpZyhjb25uZWN0aW9uKWYodG8paCh3KW4ob3JrKWUoaW4paShzZXJ2KW4KLShlcillKG1vKXIoZGUuKTM0IGIoVGhlKTIwIGIoaGFuZHNoYWspbihlKWYod2lsbCloKGIpcihlKWcoaGFuZGxlZClnCi0oYXV0b21hdGljYWxseSllKGIpbih5KWkocmVhZC93cml0ZS4pMCAxNTE1IHkgRmwoc2V0X2FwcF9kYXRhXCgpcAotRmMoZGF0YSk2IGIgRmwoXCkpMjA4IDE2MTQgeSBGcShBc3NvKXIoY2lhdGUpMzkgYiBGYyhkYXRhKTQ3Ci1iIEZxKHdpdGgpNDAgYih0aGlzKWcoQ29ubmVjdGlvbilnKG9iKTUgYihqZWN0Lik3MyBiCi1GYyhkYXRhKTQ3IGIgRnEoY2FuKTM5IGIoYilyKGUpaShyZXRyaWV2KW4oZWQpZChsYXRlciloKHVzaW5nKWgodGhlKWcKLUZsKGdldF9hcHBfZGF0YSkyMDggMTcxNCB5IEZxKG1ldGhvKXIoZC4pMCAxODYxIHkgRmwoc2V0X2Nvbm5lY3Rfc3RhdClvCi0oZVwoKW8oXCkpMjA4IDE5NjEgeSBGcShTZXQpMjEgYih0aGUpZyhjb25uZWN0aW9uKWcodG8pZyh3KW4ob3JrKWUoaW4paQotKGNsaWVuKW4odClnKG1vKXIoZGUuKTM1IGIoVGhlKTIxIGIoaGFuZHNoYWspbihlKWYod2lsbCloKGIpcihlKWcKLShoYW5kbGVkKWcoYXV0b21hdGljYWxseSlmKGIpbih5KWgocmVhZC93cml0ZS4pMCAyMTA3Ci15IEZsKHNldGJsb2NraW5nXCgpcCBGYyhcMDM1YWcpNyBiIEZsKFwpKTIwOCAyMjA3IHkgRnEoQ2FsbCkyNwotYih0aGUpaCBGbChzZXRibG9ja2luZykyMyBiIEZxKG1ldGhvKXIoZCkyOCBiKG9mKWYodGhlKWgodW5kZXJseWluZylmCi0oc28pcihjKW4oayluKGV0LikwIDIzNTQgeSBGbChzZXRzb2Nrb3B0XCgpcCBGYyhsZXZlbCwpZihvcHRuYW1lLCkzMQotYih2YWx1ZSk2IGIgRmwoXCkpMjA4IDI0NTQgeSBGcShDYWxsKTI3IGIodGhlKWggRmwoc2V0c29ja29wdCkyMwotYiBGcShtZXRobylyKGQpMjggYihvZilnKHRoZSlnKHVuZGVybHlpbmcpZihzbylyKGMpbihrKW4oZXQuKTAKLTI2MDAgeSBGbChzaHV0ZG93blwoXCkpMjA4IDI3MDAgeSBGcShTZW5kKTM1IGIodGhlKWgoc2gpbih1dGRvKW4od24pZgotKG1lc3NhZ2UpZih0byloKHRoZSloKENvbm5lY3Rpb24uKTYwIGIoUmV0dXJucykzNSBiKHRydWUpZyhpZiloKHRoZSlnCi0oc2gpbih1dGRvKW4od24pZShtZXNzYWdlKWcoZXhjKW4oaGFuZ2UpZyhpcykyMDggMjgwMAoteShjb21wbGV0ZWQpMjUgYihhbmQpZyhmYWxzZSloKG90aGVyd2lzZSllKFwoaW4paSh3aGljKW4oaClnKGNhc2UpZSh5KW4KLShvdSloKGNhbGwpZyBGbChyZWN2XChcKSllIEZxKG9yKWkgRmwoc2VuZFwoXCkpZSBGcSh3aGVuKWoodGhlKWcKLShjb25uZWN0aW9uKWYoYilyKGVjb21lcykyMDggMjg5OSB5KHJlYWRhYmxlL3dyaXRlYWJsZS4pMAotMzA0NiB5IEZsKGdldF9zaHV0ZG93blwoXCkpMjA4IDMxNDYgeSBGcShHZXQpNzAgYih0aGUpZyhzaCluKHV0ZG8pbih3bikKLWYoc3RhdGUpZyhvZiloKHRoZSlnKENvbm5lY3Rpb24uKTE2MiBiKFJldHVybnMpNjkgYihhKWgoYml0diluKGVjdG9yKWUKLShvZilpKGVpdGhlcilmKG9yKWcoYilyKG90aCloKG9mKTIwOCAzMjQ1IHkgRmMoU0VOVF9TSFVURE8pbihXTikzOQotYiBGcShhbmQpMjcgYiBGYyhSRUNFSVZFRF9TSFVURE8pbihXTikxNCBiIEZxKC4pMCAzMzkyCi15IEZsKHNldF9zaHV0ZG93blwoKXAgRmMoc3RhdGUpNiBiIEZsKFwpKTIwOCAzNDkyIHkgRnEoU2V0KTIxCi1iKHRoZSlnKHNoKW4odXRkbyluKHduKWcoc3RhdGUpZyhvZilnKHRoZSlnKENvbm5lY3Rpb24uKTM0Ci1iIEZjKHN0YXRlKTI3IGIgRnEoaXMpMjEgYihhKWcoYml0diluKGVjdG9yKWYob2YpaChlaXRoZXIpZyhvcilmKGIpcgotKG90aClpKG9mKTI3IGIgRmMoU0VOVF9TSFVURE8pbihXTikyMDggMzU5MSB5IEZxKGFuZClnCi1GYyhSRUNFSVZFRF9TSFVURE8pbihXTikxNCBiIEZxKC4pMCAzNzM4IHkgRmwoc29ja19zaHV0ZG93blwoKXAKLUZjKGhvdyk5IGIgRmwoXCkpMjA4IDM4MzggeSBGcShDYWxsKTI3IGIodGhlKWggRmwoc2h1dGRvd24pYwotRnEobWV0aG8pcihkKWsob2YpZyh0aGUpZyh1bmRlcmx5aW5nKWUoc28pcihjKW4oayluKGV0LikwCi0zOTg1IHkgRmwoYmlvX3NodXRkb3duXChcKSkyMDggNDA4NCB5IEZxKElmKWoodGhlKWgoQ29ubmVjdGlvbilmKHcpbgotKGFzKWYoY3JlYXRlZClnKHdpdGgpaShhKWYobWVtb3J5KWYoQklPLCloKHRoaXMpaChtZXRobylyKGQpZihjYW4pZyhiKXIKLShlKWgodXNlZClmKHRvKWcoaW5kaWNhdGUpZyh0aGF0KWgoXDAyMGVuZClmKG9mKTIwOCA0MTg0Ci15KFwwMzRsZVwwMjEpMzQgYihoYXMpMjcgYihiKXIoZWVuKWgocmVhYyluKGhlZCllKG9uKWgodGhlKWgocmVhZClmCi0oZW5kKWgob2YpZih0aGF0KWgobWVtb3J5KWYoQklPLikwIDQzMzEgeSBGbChzdGF0ZV9zdHJpbmdcKFwpKTIwOAotNDQzMSB5IEZxKFJldHJpZXYpbihlKWYoYSlpKHYpbihlcmIpcihvc2UpZShzdHJpbmcpZyhkZXRhaWxpbmcpaSh0aGUpZwotKHN0YXRlKWYob2YpaCh0aGUpZihDb25uZWN0aW9uLikwIDQ1NzcgeSBGbChjbGllbnRfcmFuZG9tXChcKSkyMDgKLTQ2NzcgeSBGcShSZXRyaWV2KW4oZSlmKHRoZSlpKHJhbmRvbSlmKHYpLTUgYihhbHVlKTI3Ci1iKHVzZWQpaCh3aXRoKWcodGhlKWcoY2xpZW4pbih0KWYoaGVsbG8paChtZXNzYWdlLikwCi00ODI0IHkgRmwoc2VydmVyX3JhbmRvbVwoXCkpMjA4IDQ5MjQgeSBGcShSZXRyaWV2KW4oZSllKHRoZSlpKHJhbmRvbSlmCi0odiktNSBiKGFsdWUpMjcgYih1c2VkKWgod2l0aClnKHRoZSlnKHNlcnYpbihlcillKGhlbGxvKWgobWVzc2FnZS4pMAotNTA3MCB5IEZsKG1hc3Rlcl9rZXlcKFwpKTIwOCA1MTcwIHkgRnEoUmV0cmlldiluKGUpZih0aGUpaSh2KS01Ci1iKGFsdWUpMjggYihvZilmKHRoZSloKG1hc3RlcilmKGspbihleSlnKGZvcilnKHRoaXMpaChzZXNzaW9uLikwCi01MzE3IHkgRmwod2FudF9yZWFkXChcKSlwIDAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYSBGZigzLjMpODIKLWIgRmwoU1NMKTI2IGIgRmYoXDAyNilpKEFuKWcoaW50ZXJmYWNlKWcodG8pZih0aGUpZyhTU0wtc3ApcihlY2lcMDM0YyloCi0ocGEpbihydHMpZihvZiloKE9wKXIoZW5TU0wpMTYxMSBiKDE3KXAgZW9wIGVuZAotJSVQYWdlOiAxOCAxOAotVGVYRGljdCBiZWdpbiAxOCAxNyBib3AgMjA4IDgzIGEgRnEoQ2hlYyluKGtzKTI2IGIoaWYpaShtb3JlKWYoZGF0YSlnCi0oaGFzKWcodG8paChiKXIoZSlnKHJlYWQpZShmcm9tKWkodGhlKWYodHJhbnNwKXIob3J0KWcobGEpbih5KW4oZXIpZgotKHRvKWgoY29tcGxldGUpaChhbilmKG9wKXIoZXJhdGlvbi4pMCAyMzAgeSBGbCh3YW50X3dyaXRlXChcKSkyMDgKLTMzMCB5IEZxKENoZWMpbihrcylmKGlmKWkodGhlcmUpZyhpcylmKGRhdGEpZyh0byloKHdyaXRlKWYodG8pZyh0aGUpaAotKHRyYW5zcClyKG9ydClmKGxhKW4oeSluKGVyKWYodG8paChjb21wbGV0ZSloKGFuKWYob3ApcihlcmF0aW9uLikwCi00NzYgeSBGbChzZXRfdGxzZXh0X2hvc3RfKW8obmEpbyhtZVwoKW8gRmMobmFtZSk2IGIgRmwoXCkpMjA4Ci01NzYgeSBGcShTcClyKGVjaWZ5KTI4IGIodGhlKWcoYiluKHl0ZSlmKHN0cmluZylnKHRvKWcoc2VuZCloKGFzKWYodGhlKQotaChzZXJ2KW4oZXIpZShuYW1lKWgoaW4paCh0aGUpZyhjbGllbiluKHQpZihoZWxsbyloKG1lc3NhZ2UuKTcyCi1iKE5ldykyOCBiKGluKWYodiluKGVyc2lvbilmKDAuMTMuKTAgNzIzIHkgRmwoZ2V0X3NlcnZlcm5hbWVcKFwpKTIwOAotODIzIHkgRnEoR2V0KWkodGhlKWYodiktNSBiKGFsdWUpMjggYihvZilmKHRoZSloKHNlcnYpbihlcillKG5hbWUpaAotKHJlY2VpdiluKGVkKWcoaW4paCh0aGUpZyhjbGllbiluKHQpZihoZWxsbyloKG1lc3NhZ2UuKTcyCi1iKE5ldykyOCBiKGluKWYodiluKGVyc2lvbilmKDAuMTMuKTAgMTE0NCB5IEZyKDQpMTE0Ci1iKEludGVybmFscykwIDEzNzMgeSBGcShXKS03IGIoZSkyNSBiKHJhbilnKGluKW4odG8pZih0aHJlZSloKG1haW4pZwotKHByb2JsZW1zKWYoZGV2KW4oZWxvcGluZylnKHRoaXM6KTM2IGIoRXhjZXB0aW9ucywpMjUKLWIoY2FsbGJhYyluKGtzKWYoYW5kKWgoYWNjZXNzaW5nKWUoc28pcihjKW4oayluKGV0KWgobWV0aG8pcihkcy4pMzYKLWIoVGhpcykwIDE0NzMgeShpcykyNyBiKHdoYXQpaCh0aGlzKWcoYyluKGhhcHRlcillKGlzKWkoYWIpcihvdXQuKTAKLTE3NTMgeSBGaig0LjEpOTcgYihFeGNlcHRpb25zKTAgMTk1MyB5IEZxKFcpLTcgYihlKTUyCi1iKHJlYWxpemVkKWYoZWFybHkpZyh0aGF0KWgobW9zdClnKG9mKWcodGhlKWcoZXhjZXB0aW9ucylmKHcpbihvdWxkKWgKLShiKXIoZSlnKHJhaXNlZClmKGIpbih5KWgodGhlKWcoSS9PKWYoZnVuY3Rpb25zKWgob2YpZyhPcClyKGVuU1NMLCkwCi0yMDUzIHkoc28pZChpdClpKGZlbHQpZihuYXR1cmFsKWYodG8paChtaW1pYylnKE9wKXIoZW5TU0wncylnKGVycm9yKWUKLShjbylyKGRlKWkoc3lzdGVtLCk1NSBiKHRyYW5zbGF0aW5nKTQ4IGIodGhlbSlqKGluKW4odG8pZShQeXRob24paQotKGV4Y2VwdGlvbnMuKTAgMjE1MiB5KFRoaXMpMzAgYihuYXR1cmFsbHkpZShnaXYpbihlcyloKHVzKWgodGhlKWcKLShleGNlcHRpb25zKWYgRmwoU1NMLlplcm9SZXR1cm5FcilvKHJvKW8ocilwIEZxKCwpMjQKLWIgRmwoU1NMLldhbnRSZWFkRXJyb3IpbyBGcSgsKWggRmwoU1NMLldhbnRXcml0ZUVyKW8ocm8pbyhyKXAKLUZxKCwpMCAyMjUyIHkgRmwoU1NMLldhbnRYNTA5TG9vaylvKHVwKW8oRXJyKW8ob3IpYyBGcShhbmQpMjcKLWIgRmwoU1NMLlN5c0NhbGxFcnJvcilwIEZxKC4pMCAyMzk5IHkoRiktNyBiKG9yKTI3IGIobW9yZSlnCi0oaW5mb3JtYXRpb24pZyhhYilyKG91dClnKHRoaXMsKWgoc2VlKWYoc2VjdGlvbilnKDMuMy4pMAotMjY3OCB5IEZqKDQuMik5NyBiKENhbGxiYWNrcykwIDI4NzkgeSBGcShUaGVyZSkzNCBiKGFyZSlmKGEpaChuKW4odW0pbgotKGIpcihlcilnKG9mKWgocHJvYmxlbXMpZSh3aXRoKWkoY2FsbGJhYyluKGtzLik1NiBiKEZpcnN0KTM0Ci1iKG9mKWcoYWxsLClpKE9wKXIoZW5TU0wpZihpcylmKHdyaXR0ZW4paChhcyllKGEpaChDKWgobGlicmFyeSktNwotYigsKTM0IGIoaXQncyloKG5vdCkwIDI5NzkgeShtZWFuKW4odCkyNiBiKHRvKWcoaGEpbih2KW4oZSllKFB5dGhvbilqCi0oY2FsbGJhYyluKGtzLClkKHNvKWkoYSlmKHcpbihhKW4oeSlnKGFyb3VuZClnKHRoYXQpaChpcylnKG5lZWRlZC4pMzYKLWIoQW5vdGhlcikyNiBiKHByb2JsZW0pZihpcyloKHRocmVhZClnKHN1cHApcihvcnQuKTM2Ci1iKEEpMjYgYihsb3QpMCAzMDc4IHkob2YpaCh0aGUpZyhPcClyKGVuU1NMKWcoSS9PKWUoZnVuY3Rpb25zKWkoY2FuKWcKLShibG8pcihjKW4oaylmKGlmKWgodGhlKWcoc28pcihjKW4oayluKGV0KWYoaXMpZyhpbiloKGJsbylyKGMpbihraW5nKWYKLShtbylyKGRlLCloKGFuZClnKHRoZW4pZyh5KW4ob3UpZih3KW4oYW4pbih0KWcob3RoZXIpZyhQeXRob24pMAotMzE3OCB5KHRocmVhZHMpaSh0bylnKGIpcihlKWgoYWJsZSlnKHRvKWYoZG8paChvdGhlcilmKHRoaW5ncy4pNDAKLWIoVGhlKTI4IGIocmVhbClnKHRyb3VibGUpZyhpcyloKGlmKWcoeSluKG91J3YpbihlKWUocmVsZWFzZWQpaCh0aGUpaAotKGdsb2JhbCllKENQeXRob24paShpbiluKHRlcnByZXRlcikwIDMyNzcgeShsbylyKGMpbihrKWUodG8paChkbylmKGEpaAotKHApcihvdGVuKW4odGlhbGx5KWYoYmxvKXIoYyluKGtpbmcpZyhvcClyKGVyYXRpb24sKWcoYW5kKWgodGhlKWcob3ApcgotKGVyYXRpb24pZihjYWxscylnKGEpZyhjYWxsYmFjKW4oay4pMzYgYihUaGVuKTI4IGIodyluKGUpZyhtKW4odXN0KWcKLSh0YWspbihlKWYodGhlKWgoR0lMKTAgMzM3NyB5KGJhYyluKGssKWYoc2luY2UpZyhjYWxsaW5nKWcoUHl0aG9uKWgKLShBUElzKWcod2l0aG91dClnKGhvbGRpbmcpZihpdCloKGlzKWcobm90KWYoYWxsbyluKHcpbihlZC4pMAotMzUyNCB5KFRoZXJlKWQoYXJlKWYodCluKHcpbihvKWcoc29sdXRpb25zKWgodG8pZyh0aGUpaChcMDM0cnN0KWYKLShwcm9ibGVtLClnKGIpcihvdGgpaChvZilmKHdoaWMpbihoKWcoYXJlKWYobmVjZXNzYXJ5KS03Ci1iKC4pMzQgYihUaGUpMjUgYihcMDM0cnN0KWYoc29sdXRpb24pZih0byloKHVzZSloKGlzKWYoaWYpZyh0aGUpaChDKTAKLTM2MjQgeShjYWxsYmFjKW4oaylpKGFsbG8pbih3cylmKFwwMjF1c2VyZGF0YVwwMjEpMzMKLWIodG8pMjggYihiKXIoZSloKHBhc3NlZCllKHRvKWgoaXQpZyhcKGFuKWcoYXJiaXRyYXJ5KWUocClyKG9pbiluKHRlcilpCi0obm9ybWFsbHlcKS4pMzcgYihUaGlzKTI4IGIoaXMpZyhncmVhdCEpMzcgYihXKS03IGIoZSkyOAotYihjYW4pZyhzZXQpZyhvdXIpMCAzNzIzIHkoUHl0aG9uKWkoZnVuY3Rpb24pZyhvYik1IGIoamVjdCkyOQotYihhcylmKHRoZSlpKHJlYWwpZih1c2VyZGF0YSlmKGFuZCloKGVtKW4odWxhdGUpZyh1c2VyZGF0YSlmKGZvciloKHRoZSkKLWgoUHl0aG9uKWYoZnVuY3Rpb24paChpbilnKGFub3RoZXIpZSh3KW4oYSluKHkpLTcgYiguKTAKLTM4MjMgeShUaGUpMjQgYihvdGhlcilnKHNvbHV0aW9uKWcoY2FuKWcoYilyKGUpaCh1c2VkKWcoaWYpZyhhbilmKG9iKTUKLWIoamVjdCkyNCBiKHdpdGgpaChhbilmKFwwMjFhcHBfZGF0YVwwMjEpMjkgYihzeXN0ZW0pYyhhbHcpbihhKW4oeXMpZAotKGlzKWoocGFzc2VkKWUodG8paCh0aGUpaChjYWxsYmFjKW4oay4pMzUgYihGKS03IGIob3IpMAotMzkyMiB5KGV4YW1wbGUsKTI2IGIodGhlKWgoU1NMKWYob2IpNSBiKGplY3QpMjYgYihpbiloKE9wKXIoZW5TU0wpZgotKGhhcylnKGFwcF9kYXRhKWYoZnVuY3Rpb25zKWkoYW5kKWYoaW4paChlLmcuKTM2IGIodGhlKTI2Ci1iKHYpbihlcmlcMDM0Y2F0aW9uKWYoY2FsbGJhYyluKGtzLClnKHkpbihvdSlnKGNhbikwCi00MDIyIHkocmV0cmlldiluKGUpaSh0aGUpaShyZWxhdGVkKWYoU1NMKWgob2IpNSBiKGplY3QuKTM5Ci1iKFdoYXQpMjkgYih3KW4oZSlnKGRvKWYoaXMpZyh0byloKHNldClmKG91cilnKHdyYXBwKXIoZXIpZwotRmwoQ29ubmVjdGlvbiljIEZxKG9iKTUgYihqZWN0KTI4IGIoYXMpZyhhcHBfZGF0YSlnKGZvcilnKHRoZSkwCi00MTIyIHkoU1NMKWcob2IpNSBiKGplY3QsKTI3IGIoYW5kKWgodyluKGUpZihjYW4pZyhlYXNpbHkpZyhcMDM0bmQpaAotKHRoZSlnKFB5dGhvbilnKGNhbGxiYWMpbihrLikwIDQyNjkgeShUaGUpMjMgYihvdGhlcilnKHByb2JsZW0pZyhpcylnCi0oc29sdiluKGVkKWYodXNpbmcpaCh0aHJlYWQpZyhsbylyKGNhbClnKHYpLTUgYihhcmlhYmxlcy4pMzQKLWIoV2hlbmV2KW4oZXIpMjIgYih0aGUpaShHSUwpZyhpcylmKHJlbGVhc2VkKWYoYilyKGVmb3JlKWgoY2FsbGluZylmCi0oaW4pbih0byloKGFuKTAgNDM2OCB5KE9wKXIoZW5TU0wpaihBUEksKWcodGhlKWcoUHlUaHJlYWRTdGF0ZSlmKHApcgotKG9pbiluKHRlcilnKHJldHVybmVkKWcoYiluKHkpaCBGbChQeUV2YWxfU2F2ZVN0YXRlKTE5Ci1iIEZxKGlzKTI1IGIoc3RvcmVkKWcoaW4pZyhhKWcoZ2xvYmFsKWcodGhyZWFkKWcobG8pcihjYWwpMAotNDQ2OCB5KHYpLTUgYihhcmlhYmxlKTI3IGIoXCh1c2luZylnKFB5dGhvbidzKWgobyluKHduKWYoVExTKWgoQVBJLClnCi1GbChQeVRocmVhZF9zZXRfa2V5XylvKHZhKW8obHVlKW8gRnEoXCkuKWsoV2hlbiljKGl0KWcoaXMpZyhuZWNlc3NhcnkpZQotKHRvKWgocmUtYWNxdWlyZSlmKHRoZSkwIDQ1NjcgeShHSUwsKWMoZWl0aGVyKWcoYWZ0ZXIpZyh0aGUpaChPcClyCi0oZW5TU0wpZihBUEkpaChyZXR1cm5zKWUob3IpaChpbilnKGEpZyhDKWcoY2FsbGJhYyluKGspZihpbiluKHYpbihvayluCi0oZWQpZihiKW4oeSlpKHRoYXQpaChPcClyKGVuU1NMKWYoQVBJLCloKHRoZSlnKHYpLTUgYihhbHVlKTIyCi1iKG9mKWcodGhlKTAgNDY2NyB5KHRocmVhZCkzMiBiKGxvKXIoY2FsKWYodiktNSBiKGFyaWFibGUpMzIKLWIoaXMpZyhyZXRyaWV2KW4oZWQpZihcKClwIEZsKFB5VGhyZWFkX2dldF9rZXkpbyhfdmEpbyhsdSlvKGUpcAotRnEoXCkpMjYgYihhbmQpMzMgYih1c2VkKWYodG8pZyhyZS1hY3F1aXJlKWUodGhlKWooR0lMLilmKFRoaXMpaChhbGxvKW4KLSh3cykwIDQ3NjcgeShQeXRob24pZih0aHJlYWRzKWUodG8paChleGVjdXRlKWgod2hpbGUpZihPcClyKGVuU1NMKWcKLShBUElzKWgoYXJlKWYocnVubmluZylmKGFuZClpKGFsbG8pbih3cyllKHVzZSloKG9mKWcoYW4pbih5KWYKLShwYXJ0aWN1bGFyKWcocCluKHlPcClyKGVuU1NMKTAgNDg2NiB5KG9iKTUgYihqZWN0KTI5Ci1iKGZyb20pZihhbiluKHkpZyhQeXRob24paSh0aHJlYWQsKWUoc2luY2UpaCh0aGVyZSlnKGlzKWcobm8pZihwKXIKLShlci10aHJlYWQpZyhzdGF0ZSloKGFzc28pcihjaWF0ZWQpZih3aXRoKWgoYW4pbih5KWYob2YpaCh0aGVzZSlnKG9iKTUKLWIoamVjdHMpMjggYihhbmQpMCA0OTY2IHkoc2luY2UpZihPcClyKGVuU1NMKWgoaXMpZyh0aHJlYWRzYWZlKWUoXChhcyloCi0obG9uZylnKGFzKWcocHJvcClyKGVybHkpZyhpbml0aWFsaXplZCwpZyhhcylnKHApbih5T3ApcihlblNTTCloCi0oaW5pdGlhbGl6ZXMpZihpdFwpLilwIDAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYSBGZigxOCkzMzY4Ci1iKDQpODMgYihJbnRlcm5hbHMpcCBlb3AgZW5kCi0lJVBhZ2U6IDE5IDE5Ci1UZVhEaWN0IGJlZ2luIDE5IDE4IGJvcCAwIDgzIGEgRmooNC4zKTk3IGIoQSltKGNlc3NpbmcpMzUKLWIoU28pcyhjayltKGV0KWUoTWV0aG8pcyhkcykwIDI4MyB5IEZxKFcpLTcgYihlKTI3IGIocXVpYyluKGtseSllKHNhKW4KLSh3KWgodGhlKWcoYilyKGVuZVwwMzR0KWgob2YpZyh3cmFwcGluZyllKHNvKXIoYyluKGspbihldClnKG1ldGhvKXIoZHMpCi1oKGluKWgodGhlKWcgRmwoU1NMLkNvbm5lY3Rpb24pMjAgYiBGcShjbGFzcywpMjYgYihmb3IpZyhhbilnKGVhc3kpZgotKHRyYW5zaXRpb24pMCAzODMgeShpbiluKHRvKWUodXNpbmcpZihTU0wuKWgoVGhlKWcocHJvYmxlbSlmKGhlcmUpaChpcykKLWYodGhhdCloKHRoZSloIEZsKHNvY2tldCljIEZxKG1vKXIoZHVsZSlqKGxhYyluKGtzKWYoYSlnKEMpaChBUEksKWgKLShhbmQpZShhbGwpaCh0aGUpZyhtZXRobylyKGRzKWcoYXJlKWYoZGVjbGFyZWQpMCA0ODMKLXkoc3RhdGljLikzNiBiKE9uZSkyNyBiKGFwcHJvYWMpbihoKWQodyluKG91bGQpaShiKXIoZSloKHRvKWYoaGEpbih2KW4KLShlKWcgRmwoT3BlblNTTClkIEZxKGFzKWooYSlnKHN1Ym1vKXIoZHVsZSloKHRvKWYodGhlKWgKLUZsKHNvY2tldClkIEZxKG1vKXIoZHVsZSwpaihwbGFjaW5nKWYoYWxsKWcodGhlKWgoY28pcihkZSkwCi01ODIgeShpbilqKGApcCBGcChzbylyKGNrKW4oZXRtbylyKGR1bGUuYylwIEZxKCcsKWgoYnV0KWYodGhpcylnKGlzKWcKLShvYiluKHZpb3VzbHkpZShub3QpaShhKWYoZ28pcihvKXIoZClnKHNvbHV0aW9uLCloKHNpbmNlKWcoeSluKG91KWYKLShtaWdoKW4odClnKG5vdCloKHcpbihhbiluKHQpZih0byloKGltcClyKG9ydClnKHRvbm5lcylmKG9mKTAKLTY4MiB5KGV4dHJhKWYoc3R1XDAzMyloKHkpbihvdSdyZSllKG5vdClpKGdvaW5nKWUodG8paSh1c2UpZih3aGVuKWgKLShpbXApcihvcnRpbmcpZih0aGUpaSBGbChzb2NrZXQpYyBGcShtbylyKGR1bGUuKTQwIGIoVGhlKTI5Ci1iKG90aGVyKWYoYXBwcm9hYyluKGgpZShpcylqKHRvKWYoc29tZWhvKW4odykwIDc4MiB5KGdldCkzMwotYihhKWcocClyKG9pbiluKHRlcilnKHRvKWgodGhlKWYobWV0aG8pcihkKWgodG8pZyhiKXIoZSlmKGNhbGxlZCwpaQotKGVpdGhlcillKHRoZSloKEMpZyhmdW5jdGlvbiwpaChvcillKGEpZyhjYWxsYWJsZSlmKFB5dGhvbilpKG9iKTUKLWIoamVjdC4pNTQgYihUaGlzKTM0IGIoaXMpZihub3QpMCA4ODEgeShyZWFsbHkpMjYgYihhKWkoZ28pcihvKXIoZClmCi0oc29sdXRpb24pZyhlaXRoZXIsKWcoc2luY2UpZyh0aGVyZSdzKWgoYSlmKGxvdClnKG9mKWgobG8pcihva3VwcylmKGluKQotbih2KW4ob2x2KW4oZWQuKTAgMTAyOCB5KFRoZSloKHcpbihhKW4oeSlmKGl0KWgodyluKG9ya3MpZShpcylpKHRoYXQpaAotKHkpbihvdSllKGhhKW4odiluKGUpZyh0bylnKHN1cHBseSloKGEpZyhcMDIwKTcgYiBGbChzb2NrZXQpcAotRnEoLWxpayluKGVcMDIxKTMxIGIodHJhbnNwKXIob3J0KWMob2IpNSBiKGplY3QpMjggYih0bylmKHRoZSlpCi1GbChTU0wuQ29ubmVjdGlvbilwIEZxKC4paihUaGUpMCAxMTI4IHkob25seSkyNCBiKHJlcXVpcmVtZW4pbih0KWYob2YpaQotKHRoaXMpZihvYik1IGIoamVjdCkyNCBiKGlzKWgodGhhdClmKGl0KWgoaGFzKWYoYSlnIEZsKGZpbGVub1woXCkpZAotRnEobWV0aG8pcihkKWsodGhhdClmKHJldHVybnMpZyhhKWcoXDAzNGxlKWcoZGVzY3JpcHRvcilmKHRoYXQncylpKHYpLTUKLWIoYWxpZCkyNCBiKGF0KTAgMTIyNyB5KHRoZSlnKEMpZyhsZXYpbihlbClmKFwoaS5lLikzNgotYih5KW4ob3UpMjMgYihjYW4paCh1c2UpZih0aGUpaShzeXN0ZW0pZShjYWxscylnKHJlYWQpZyhhbmQpaCh3cml0ZVwpLikKLTM1IGIoSWYpMjUgYih5KW4ob3UpZSh3KW4oYW4pbih0KWcodG8paCh1c2UpZih0aGUpaCBGbChjb25uZWN0XChcKSljCi1GcShvcilqIEZsKGFjY2VwdFwoXCkpMCAxMzI3IHkgRnEobWV0aG8pcihkcykyOSBiKG9mKWgodGhlKWYKLUZsKFNTTC5Db25uZWN0aW9uKTI0IGIgRnEob2IpNSBiKGplY3QsKTI5IGIodGhlKWgodHJhbnNwKXIob3J0KWUob2IpNQotYihqZWN0KTI5IGIoaGFzKWYodG8paChzdXBwbHkpaChzdWMpbihoKWYobWV0aG8pcihkcylnKHRvKXIoby4pNDEKLWIoQXBhcnQpMjkgYihmcm9tKTAgMTQyNyB5KHRoZW0sKWMoYW4pbih5KWUobWV0aG8pcihkKWgobG8pcihva3VwcylmCi0oaW4paCh0aGUpZiBGbChTU0wuQ29ubmVjdGlvbikxOCBiIEZxKG9iKTUgYihqZWN0KTI0Ci1iKHRoYXQpZihmYWlsKWgoYXJlKWYocGFzc2VkKWYob24paSh0bylmKHRoZSloKHVuZGVybHlpbmcpZih0cmFuc3ApcgotKG9ydCkwIDE1MjYgeShvYik1IGIoamVjdC4pMCAxNjczIHkoRiktNyBiKHV0dXJlKTI1IGIoYyluKGhhbmdlcylmCi0obWlnaCluKHQpaChiKXIoZSlnKHRvKWcoYWxsbyluKHcpZihQeXRob24tbGV2KW4oZWwpZyh0cmFuc3ApcihvcnQpZwotKG9iKTUgYihqZWN0cywpMjUgYih0aGF0KWcoaW5zdGVhZClnKG9mKWcoaGEpbih2aW5nKWcKLUZsKGZpbGVub1woXCkpZCBGcShtZXRobylyKGRzLCkwIDE3NzMgeShoYSluKHYpbihlKWgKLUZsKHJlYWRcKFwpKWcgRnEoYW5kKWggRmwod3JpdGVcKFwpKWUgRnEobWV0aG8pcihkcywpayhzbyllKG1vcmUpZihhZHYpCi0tNSBiKGFuY2VkKTI0IGIoZmVhdHVyZXMpaChvZilmKFB5dGhvbiloKGNhbilnKGIpcihlKWcodXNlZC4pMzUKLWIoVGhpcykyNSBiKHcpbihvdWxkKWYocHJvYmFibHkpMCAxODcyIHkoZW4pbih0YWlsKTM2Ci1iKHNvbWUpZyhzb3J0KWcob2YpZyhPcClyKGVuU1NMKWgoXDAyMEJJT3NcMDIxLClnKGJ1dClnKGNvbiluKHYpbgotKGVydGluZyllKFB5dGhvbilpKHN0cmluZ3MpZShiYWMpbihrKWgoYW5kKWcoZm9ydGgpZyhpcyloKGV4cClyKGVuc2l2KW4KLShlLCloKHNvKWUodGhpcykwIDE5NzIgeShzaG91bGRuJ3QpZihiKXIoZSloKHVzZWQpZih1bmxlc3MpZyhuZWNlc3NhcnkpCi0tNyBiKC4pNTcgYihPdGhlcikzNSBiKG5pY2UpZyh0aGluZ3MpZyh3KW4ob3VsZClnKGIpcihlKWcodG8pZyhiKXIoZSloCi0oYWJsZSllKHRvKWgocGFzcylnKGluKWcoZGlcMDMzZXJlbiluKHQpZyh0cmFuc3ApcihvcnQpMAotMjA3MiB5KG9iKTUgYihqZWN0cyk0MSBiKGZvcilnKHJlYWRpbmcpZihhbmQpaCh3cml0aW5nLClqKGJ1dCllKHRoZW4pZwotKHRoZSlnIEZsKGZpbGVub1woXCkpYyBGcShtZXRobylyKGQpayhvZik0NyBiIEZsKFNTTC5Db25uZWN0aW9uKTM2Ci1iIEZxKGIpcihlY29tZXMpNDEgYih2aXJ0dWFsbHkpMCAyMTcxIHkodXNlbGVzcy4pMzYgYihBbHNvLCkyNwotYihzaG91bGQpaCh0aGUpZyhtZXRobylyKGQpZyhyZXNvbHV0aW9uKWUoYilyKGUpaSh1c2VkKWcob24pZih0aGUpaAotKHJlYWQtdHJhbnNwKXIob3J0KWQob3IpaSh0aGUpaCh3cml0ZS10cmFuc3ApcihvcnQ/KXAKLTAgNTU0OSAzOTAxIDQgdiAwIDU2NDkgYSBGZig0LjMpODIgYihBKW4oY2Vzc2luZykyNiBiKFNvKXIoY2spbihldCloCi0oTWV0aG8pcihkcykyNzQ0IGIoMTkpcCBlb3AgZW5kCi0lJVRyYWlsZXIKLQotdXNlcmRpY3QgL2VuZC1ob29rIGtub3due2VuZC1ob29rfWlmCi0lJUVPRgpkaWZmIC0tZ2l0IGEvZG9jL3B5T3BlblNTTC50ZXggYi9kb2MvcHlPcGVuU1NMLnRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUwMDlhMi4uMDAwMDAwMAotLS0gYS9kb2MvcHlPcGVuU1NMLnRleAorKysgL2Rldi9udWxsCkBAIC0xLDE0NjMgKzAsMCBAQAotXGRvY3VtZW50Y2xhc3N7aG93dG99Ci0KLVx0aXRsZXtQeXRob24gT3BlblNTTCBNYW51YWx9Ci0KLVxyZWxlYXNlezAuMTN9Ci0KLVxhdXRob3J7SmVhbi1QYXVsIENhbGRlcm9uZX0KLVxhdXRob3JhZGRyZXNze1xlbWFpbHtleGFya3VuQHR3aXN0ZWRtYXRyaXguY29tfX0KLQotXHVzZXBhY2thZ2VbZW5nbGlzaF17YmFiZWx9Ci1cdXNlcGFja2FnZVtUMV17Zm9udGVuY30KLQotXGJlZ2lue2RvY3VtZW50fQotCi1cbWFrZXRpdGxlCi0KLVxiZWdpbnthYnN0cmFjdH0KLVxub2luZGVudAotVGhpcyBtb2R1bGUgaXMgYSByYXRoZXIgdGhpbiB3cmFwcGVyIGFyb3VuZCAoYSBzdWJzZXQgb2YpIHRoZSBPcGVuU1NMIGxpYnJhcnkuCi1XaXRoIHRoaW4gd3JhcHBlciBJIG1lYW4gdGhhdCBhIGxvdCBvZiB0aGUgb2JqZWN0IG1ldGhvZHMgZG8gbm90aGluZyBtb3JlIHRoYW4KLWNhbGxpbmcgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGluIHRoZSBPcGVuU1NMIGxpYnJhcnkuCi1cZW5ke2Fic3RyYWN0fQotCi1cdGFibGVvZmNvbnRlbnRzCi0KLQotXHNlY3Rpb257SW50cm9kdWN0aW9uIFxsYWJlbHtpbnRyb319Ci0KLVRoZSByZWFzb24gcHlPcGVuU1NMIHdhcyBjcmVhdGVkIGlzIHRoYXQgdGhlIFNTTCBzdXBwb3J0IGluIHRoZSBzb2NrZXQgbW9kdWxlCi1pbiBQeXRob24gMi4xICh0aGUgY29udGVtcG9yYXJ5IHZlcnNpb24gb2YgUHl0aG9uIHdoZW4gdGhlIHB5T3BlblNTTCBwcm9qZWN0Ci13YXMgYmVndW4pIHdhcyBzZXZlcmVseSBsaW1pdGVkLiAgT3RoZXIgT3BlblNTTCB3cmFwcGVycyBmb3IgUHl0aG9uIGF0IHRoZSB0aW1lCi13ZXJlIGFsc28gbGltaXRlZCwgdGhvdWdoIGluIGRpZmZlcmVudCB3YXlzLiAgVW5mb3J0dW5hdGVseSwgUHl0aG9uJ3Mgc3RhbmRhcmQKLWxpYnJhcnkgU1NMIHN1cHBvcnQgaGFzIHJlbWFpbmVkIHdlYWssIGFsdGhvdWdoIG90aGVyIHBhY2thZ2VzIChzdWNoIGFzCi1NMkNyeXB0b1xmb290bm90ZXtTZWUgXHVybHtodHRwOi8vY2hhbmRsZXJwcm9qZWN0Lm9yZy9Qcm9qZWN0cy9NZVRvb0NyeXB0b319KQotaGF2ZSBtYWRlIGdyZWF0IGFkdmFuY2VzIGFuZCBub3cgZXF1YWwgb3IgZXhjZWVkIHB5T3BlblNTTCdzIGZ1bmN0aW9uYWxpdHkuCi0KLVRoZSByZWFzb24gcHlPcGVuU1NMIGNvbnRpbnVlcyB0byBiZSBtYWludGFpbmVkIGlzIHRoYXQgdGhlcmUgaXMgYSBzaWduaWZpY2FudAotdXNlciBjb21tdW5pdHkgYXJvdW5kIGl0LCBhcyB3ZWxsIGFzIGEgbGFyZ2UgYW1vdW50IG9mIHNvZnR3YXJlIHdoaWNoIGRlcGVuZHMKLW9uIGl0LiAgSXQgaXMgYSBncmVhdCBiZW5lZml0IHRvIG1hbnkgcGVvcGxlIGZvciBweU9wZW5TU0wgdG8gY29udGludWUgdG8gZXhpc3QKLWFuZCBhZHZhbmNlLgotCi1cc2VjdGlvbntCdWlsZGluZyBhbmQgSW5zdGFsbGluZyBcbGFiZWx7YnVpbGRpbmd9fQotCi1UaGVzZSBpbnN0cnVjdGlvbnMgY2FuIGFsc28gYmUgZm91bmQgaW4gdGhlIGZpbGUgXHZlcmJ8SU5TVEFMTHwuCi0KLUkgaGF2ZSB0ZXN0ZWQgdGhpcyBvbiBEZWJpYW4gTGludXggc3lzdGVtcyAod29vZHkgYW5kIHNpZCksIFNvbGFyaXMgMi42IGFuZAotMi43LiBPdGhlcnMgaGF2ZSBzdWNjZXNzZnVsbHkgY29tcGlsZWQgaXQgb24gV2luZG93cyBhbmQgTlQuCi0KLVxzdWJzZWN0aW9ue0J1aWxkaW5nIHRoZSBNb2R1bGUgb24gYSBVbml4IFN5c3RlbSBcbGFiZWx7YnVpbGRpbmctdW5peH19Ci0KLXB5T3BlblNTTCB1c2VzIGRpc3R1dGlscywgc28gdGhlcmUgcmVhbGx5IHNob3VsZG4ndCBiZSBhbnkgcHJvYmxlbXMuIFRvIGJ1aWxkCi10aGUgbGlicmFyeToKLVxiZWdpbnt2ZXJiYXRpbX0KLXB5dGhvbiBzZXR1cC5weSBidWlsZAotXGVuZHt2ZXJiYXRpbX0KLQotSWYgeW91ciBPcGVuU1NMIGhlYWRlciBmaWxlcyBhcmVuJ3QgaW4gXHZlcmJ8L3Vzci9pbmNsdWRlfCwgeW91IG1heSBuZWVkIHRvCi1zdXBwbHkgdGhlIFx2ZXJifC1JfCBmbGFnIHRvIGxldCB0aGUgc2V0dXAgc2NyaXB0IGtub3cgd2hlcmUgdG8gbG9vay4gVGhlIHNhbWUKLWdvZXMgZm9yIHRoZSBsaWJyYXJpZXMgb2YgY291cnNlLCB1c2UgdGhlIFx2ZXJifC1MfCBmbGFnLiBOb3RlIHRoYXQKLVx2ZXJifGJ1aWxkfCB3b24ndCBhY2NlcHQgdGhlc2UgZmxhZ3MsIHNvIHlvdSBoYXZlIHRvIHJ1biBmaXJzdAotXHZlcmJ8YnVpbGRfZXh0fCBhbmQgdGhlbiBcdmVyYnxidWlsZHwhIEV4YW1wbGU6Ci1cYmVnaW57dmVyYmF0aW19Ci1weXRob24gc2V0dXAucHkgYnVpbGRfZXh0IC1JL3Vzci9sb2NhbC9zc2wvaW5jbHVkZSAtTC91c3IvbG9jYWwvc3NsL2xpYgotcHl0aG9uIHNldHVwLnB5IGJ1aWxkCi1cZW5ke3ZlcmJhdGltfQotCi1Ob3cgeW91IHNob3VsZCBoYXZlIGEgZGlyZWN0b3J5IGNhbGxlZCBcdmVyYnxPcGVuU1NMfCB0aGF0IGNvbnRhaW5zIGUuZy4KLVx2ZXJifFNTTC5zb3wgYW5kIFx2ZXJifF9faW5pdF9fLnB5fCBzb21ld2hlcmUgaW4gdGhlIGJ1aWxkIGRpY3JlY3RvcnksCi1zbyBqdXN0OgotXGJlZ2lue3ZlcmJhdGltfQotcHl0aG9uIHNldHVwLnB5IGluc3RhbGwKLVxlbmR7dmVyYmF0aW19Ci0KLUlmIHlvdSwgZm9yIHNvbWUgYXJjYW5lIHJlYXNvbiwgZG9uJ3Qgd2FudCB0aGUgbW9kdWxlIHRvIGFwcGVhciBpbiB0aGUKLVx2ZXJifHNpdGUtcGFja2FnZXN8IGRpcmVjdG9yeSwgdXNlIHRoZSBcdmVyYnwtLXByZWZpeHwgb3B0aW9uLgotCi1Zb3UgY2FuLCBvZiBjb3Vyc2UsIGRvCi1cYmVnaW57dmVyYmF0aW19Ci1weXRob24gc2V0dXAucHkgLS1oZWxwCi1cZW5ke3ZlcmJhdGltfQotCi10byBmaW5kIG91dCBtb3JlIGFib3V0IGhvdyB0byB1c2UgdGhlIHNjcmlwdC4KLQotXHN1YnNlY3Rpb257QnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFdpbmRvd3MgU3lzdGVtIFxsYWJlbHtidWlsZGluZy13aW5kb3dzfX0KLQotQmlnIHRoYW5rcyB0byBJdGFtYXIgU2h0dWxsLVRyYXVyaW5nIGFuZCBPbGVnIE9ybG92IGZvciB0aGVpciBoZWxwIHdpdGgKLVdpbmRvd3MgYnVpbGQgaW5zdHJ1Y3Rpb25zLiAgU2FtZSBhcyBmb3IgVW5peCBzeXN0ZW1zLCB3ZSBoYXZlIHRvIHNlcGFyYXRlCi10aGUgXHZlcmJ8YnVpbGRfZXh0fCBhbmQgdGhlIFx2ZXJifGJ1aWxkfC4KLQotQnVpbGRpbmcgdGhlIGxpYnJhcnk6Ci0KLVxiZWdpbnt2ZXJiYXRpbX0KLXNldHVwLnB5IGJ1aWxkX2V4dCAtSSAuLi5cb3BlbnNzbFxpbmMzMiAtTCAuLi5cb3BlbnNzbFxvdXQzMmRsbAotc2V0dXAucHkgYnVpbGQKLVxlbmR7dmVyYmF0aW19Ci0KLVdoZXJlIFx2ZXJifC4uLlxvcGVuc3NsfCBpcyBvZiBjb3Vyc2UgdGhlIGxvY2F0aW9uIG9mIHlvdXIgT3BlblNTTCBpbnN0YWxsYXRpb24uCi0KLUluc3RhbGxhdGlvbiBpcyB0aGUgc2FtZSBhcyBmb3IgVW5peCBzeXN0ZW1zOgotXGJlZ2lue3ZlcmJhdGltfQotc2V0dXAucHkgaW5zdGFsbAotXGVuZHt2ZXJiYXRpbX0KLQotQW5kIHNpbWlsYXJpbHksIHlvdSBjYW4gZG8KLVxiZWdpbnt2ZXJiYXRpbX0KLXNldHVwLnB5IC0taGVscAotXGVuZHt2ZXJiYXRpbX0KLQotdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24uCi0KLQotXHNlY3Rpb257XG1vZHVsZXtPcGVuU1NMfSAtLS0gUHl0aG9uIGludGVyZmFjZSB0byBPcGVuU1NMIFxsYWJlbHtvcGVuc3NsfX0KLQotXGRlY2xhcmVtb2R1bGV7ZXh0ZW5zaW9ufXtPcGVuU1NMfQotXG1vZHVsZXN5bm9wc2lze1B5dGhvbiBpbnRlcmZhY2UgdG8gT3BlblNTTH0KLQotVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgaGlnaC1sZXZlbCBpbnRlcmZhY2UgdG8gdGhlIGZ1bmN0aW9ucyBpbiB0aGUKLU9wZW5TU0wgbGlicmFyeS4gVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFyZSBkZWZpbmVkOgotCi1cYmVnaW57ZGF0YWRlc2N9e2NyeXB0b30KLUdlbmVyaWMgY3J5cHRvZ3JhcGhpYyBtb2R1bGUuIE5vdGUgdGhhdCBpZiBhbnl0aGluZyBpcyBpbmNvbXBsZXRlLCB0aGlzIG1vZHVsZSBpcyEKLVxlbmR7ZGF0YWRlc2N9Ci0KLVxiZWdpbntkYXRhZGVzY317cmFuZH0KLUFuIGludGVyZmFjZSB0byB0aGUgT3BlblNTTCBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e1NTTH0KLUFuIGludGVyZmFjZSB0byB0aGUgU1NMLXNwZWNpZmljIHBhcnRzIG9mIE9wZW5TU0wuCi1cZW5ke2RhdGFkZXNjfQotCi0KLSUgJSAlIGNyeXB0byBtb2R1bGVPcGVuU1NMCi0KLVxzdWJzZWN0aW9ue1xtb2R1bGV7Y3J5cHRvfSAtLS0gR2VuZXJpYyBjcnlwdG9ncmFwaGljIG1vZHVsZSBcbGFiZWx7b3BlbnNzbC1jcnlwdG99fQotCi1cZGVjbGFyZW1vZHVsZXtleHRlbnNpb259e2NyeXB0b30KLVxtb2R1bGVzeW5vcHNpc3tHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlfQotCi1cYmVnaW57ZGF0YWRlc2N9e1g1MDlUeXBlfQotU2VlIFxjbGFzc3tYNTA5fS4KLVxlbmR7ZGF0YWRlc2N9Ci0KLVxiZWdpbntjbGFzc2Rlc2N9e1g1MDl9e30KLUEgY2xhc3MgcmVwcmVzZW50aW5nIFguNTA5IGNlcnRpZmljYXRlcy4KLVxlbmR7Y2xhc3NkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e1g1MDlOYW1lVHlwZX0KLVNlZSBcY2xhc3N7WDUwOU5hbWV9LgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2NsYXNzZGVzY317WDUwOU5hbWV9e3g1MDluYW1lfQotQSBjbGFzcyByZXByZXNlbnRpbmcgWC41MDkgRGlzdGluZ3Vpc2hlZCBOYW1lcy4KLQotVGhpcyBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgY29weSBvZiBcdmFye3g1MDluYW1lfSB3aGljaCBzaG91bGQgYmUgYW4KLWluc3RhbmNlIG9mIFxjbGFzc3tYNTA5TmFtZX0uCi1cZW5ke2NsYXNzZGVzY30KLQotXGJlZ2lue2RhdGFkZXNjfXtYNTA5UmVxVHlwZX0KLVNlZSBcY2xhc3N7WDUwOVJlcX0uCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57Y2xhc3NkZXNjfXtYNTA5UmVxfXt9Ci1BIGNsYXNzIHJlcHJlc2VudGluZyBYLjUwOSBjZXJ0aWZpY2F0ZSByZXF1ZXN0cy4KLVxlbmR7Y2xhc3NkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e1g1MDlTdG9yZVR5cGV9Ci1BIFB5dGhvbiB0eXBlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFg1MDlTdG9yZSBvYmplY3QgdHlwZS4KLVxlbmR7ZGF0YWRlc2N9Ci0KLVxiZWdpbntkYXRhZGVzY317UEtleVR5cGV9Ci1TZWUgXGNsYXNze1BLZXl9LgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2NsYXNzZGVzY317UEtleX17fQotQSBjbGFzcyByZXByZXNlbnRpbmcgRFNBIG9yIFJTQSBrZXlzLgotXGVuZHtjbGFzc2Rlc2N9Ci0KLVxiZWdpbntkYXRhZGVzY317UEtDUzdUeXBlfQotQSBQeXRob24gdHlwZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBQS0NTNyBvYmplY3QgdHlwZS4KLVxlbmR7ZGF0YWRlc2N9Ci0KLVxiZWdpbntkYXRhZGVzY317UEtDUzEyVHlwZX0KLUEgUHl0aG9uIHR5cGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgUEtDUzEyIG9iamVjdCB0eXBlLgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2RhdGFkZXNjfXtYNTA5RXh0ZW5zaW9uVHlwZX0KLVNlZSBcY2xhc3N7WDUwOUV4dGVuc2lvbn0uCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57Y2xhc3NkZXNjfXtYNTA5RXh0ZW5zaW9ufXt0eXBlbmFtZSwgY3JpdGljYWwsIHZhbHVlXG9wdGlvbmFseywgc3ViamVjdH1cb3B0aW9uYWx7LCBpc3N1ZXJ9fQotQSBjbGFzcyByZXByZXNlbnRpbmcgYW4gWC41MDkgdjMgY2VydGlmaWNhdGUgZXh0ZW5zaW9ucy4KLVNlZSBcdXJse2h0dHA6Ly9vcGVuc3NsLm9yZy9kb2NzL2FwcHMveDUwOXYzX2NvbmZpZy5odG1sXCNTVEFOREFSRF9FWFRFTlNJT05TfQotZm9yIFx2YXJ7dHlwZW5hbWV9IHN0cmluZ3MgYW5kIHRoZWlyIG9wdGlvbnMuCi1PcHRpb25hbCBwYXJhbWV0ZXJzIFx2YXJ7c3ViamVjdH0gYW5kIFx2YXJ7aXNzdWVyfSBtdXN0IGJlIFg1MDkgb2JqZWN0cy4KLVxlbmR7Y2xhc3NkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e05ldHNjYXBlU1BLSVR5cGV9Ci1TZWUgXGNsYXNze05ldHNjYXBlU1BLSX0uCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57Y2xhc3NkZXNjfXtOZXRzY2FwZVNQS0l9e1xvcHRpb25hbHtlbmN9fQotQSBjbGFzcyByZXByZXNlbnRpbmcgTmV0c2NhcGUgU1BLSSBvYmplY3RzLgotCi1JZiB0aGUgXHZhcntlbmN9IGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IHNob3VsZCBiZSBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZwotcmVwcmVzZW50aW5nIGEgTmV0c2NhcGVTUEtJIG9iamVjdCwgYXMgcmV0dXJuZWQgYnkgdGhlIFxtZXRob2R7YjY0X2VuY29kZX0KLW1ldGhvZC4KLVxlbmR7Y2xhc3NkZXNjfQotCi1cYmVnaW57Y2xhc3NkZXNjfXtDUkx9e30KLUEgY2xhc3MgcmVwcmVzZW50aW5nIENlcnRpZmNhdGUgUmV2b2NhdGlvbiBMaXN0IG9iamVjdHMuCi1cZW5ke2NsYXNzZGVzY30KLQotXGJlZ2lue2NsYXNzZGVzY317UmV2b2tlZH17fQotQSBjbGFzcyByZXByZXNlbnRpbmcgUmV2b2NhdGlvbiBvYmplY3RzIG9mIENSTC4KLVxlbmR7Y2xhc3NkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e0ZJTEVUWVBFX1BFTX0KLVxkYXRhbGluZXtGSUxFVFlQRV9BU04xfQotRmlsZSB0eXBlIGNvbnN0YW50cy4KLVxlbmR7ZGF0YWRlc2N9Ci0KLVxiZWdpbntkYXRhZGVzY317VFlQRV9SU0F9Ci1cZGF0YWxpbmV7VFlQRV9EU0F9Ci1LZXkgdHlwZSBjb25zdGFudHMuCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57ZXhjZGVzY317RXJyb3J9Ci1HZW5lcmljIGV4Y2VwdGlvbiB1c2VkIGluIHRoZSBcbW9kdWxle2NyeXB0b30gbW9kdWxlLgotXGVuZHtleGNkZXNjfQotCi1cYmVnaW57ZnVuY2Rlc2N9e2R1bXBfY2VydGlmaWNhdGV9e3R5cGUsIGNlcnR9Ci1EdW1wIHRoZSBjZXJ0aWZpY2F0ZSBcdmFye2NlcnR9IGludG8gYSBidWZmZXIgc3RyaW5nIGVuY29kZWQgd2l0aCB0aGUgdHlwZQotXHZhcnt0eXBlfS4KLVxlbmR7ZnVuY2Rlc2N9Ci0KLVxiZWdpbntmdW5jZGVzY317ZHVtcF9jZXJ0aWZpY2F0ZV9yZXF1ZXN0fXt0eXBlLCByZXF9Ci1EdW1wIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IFx2YXJ7cmVxfSBpbnRvIGEgYnVmZmVyIHN0cmluZyBlbmNvZGVkIHdpdGggdGhlCi10eXBlIFx2YXJ7dHlwZX0uCi1cZW5ke2Z1bmNkZXNjfQotCi1cYmVnaW57ZnVuY2Rlc2N9e2R1bXBfcHJpdmF0ZWtleX17dHlwZSwgcGtleVxvcHRpb25hbHssIGNpcGhlciwgcGFzc3BocmFzZX19Ci1EdW1wIHRoZSBwcml2YXRlIGtleSBcdmFye3BrZXl9IGludG8gYSBidWZmZXIgc3RyaW5nIGVuY29kZWQgd2l0aCB0aGUgdHlwZQotXHZhcnt0eXBlfSwgb3B0aW9uYWxseSAoaWYgXHZhcnt0eXBlfSBpcyBcY29uc3RhbnR7RklMRVRZUEVfUEVNfSkgZW5jcnlwdGluZyBpdAotdXNpbmcgXHZhcntjaXBoZXJ9IGFuZCBcdmFye3Bhc3NwaHJhc2V9LgotCi1cdmFye3Bhc3NwaHJhc2V9IG11c3QgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgY2FsbGJhY2sgZm9yIHByb3ZpZGluZyB0aGUKLXBhc3MgcGhyYXNlLgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtsb2FkX2NlcnRpZmljYXRlfXt0eXBlLCBidWZmZXJ9Ci1Mb2FkIGEgY2VydGlmaWNhdGUgKFg1MDkpIGZyb20gdGhlIHN0cmluZyBcdmFye2J1ZmZlcn0gZW5jb2RlZCB3aXRoIHRoZQotdHlwZSBcdmFye3R5cGV9LgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtsb2FkX2NlcnRpZmljYXRlX3JlcXVlc3R9e3R5cGUsIGJ1ZmZlcn0KLUxvYWQgYSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IChYNTA5UmVxKSBmcm9tIHRoZSBzdHJpbmcgXHZhcntidWZmZXJ9IGVuY29kZWQgd2l0aAotdGhlIHR5cGUgXHZhcnt0eXBlfS4KLVxlbmR7ZnVuY2Rlc2N9Ci0KLVxiZWdpbntmdW5jZGVzY317bG9hZF9wcml2YXRla2V5fXt0eXBlLCBidWZmZXJcb3B0aW9uYWx7LCBwYXNzcGhyYXNlfX0KLUxvYWQgYSBwcml2YXRlIGtleSAoUEtleSkgZnJvbSB0aGUgc3RyaW5nIFx2YXJ7YnVmZmVyfSBlbmNvZGVkIHdpdGgKLXRoZSB0eXBlIFx2YXJ7dHlwZX0gKG11c3QgYmUgb25lIG9mIFxjb25zdGFudHtGSUxFVFlQRV9QRU19IGFuZAotXGNvbnN0YW50e0ZJTEVUWVBFX0FTTjF9KS4KLQotXHZhcntwYXNzcGhyYXNlfSBtdXN0IGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGNhbGxiYWNrIGZvciBwcm92aWRpbmcgdGhlCi1wYXNzIHBocmFzZS4KLVxlbmR7ZnVuY2Rlc2N9Ci0KLVxiZWdpbntmdW5jZGVzY317bG9hZF9jcmx9e3R5cGUsIGJ1ZmZlcn0KLUxvYWQgQ2VydGlmaWNhdGUgUmV2b2NhdGlvbiBMaXN0IChDUkwpIGRhdGEgZnJvbSBhIHN0cmluZyBcdmFye2J1ZmZlcn0uCi1cdmFye2J1ZmZlcn0gZW5jb2RlZCB3aXRoIHRoZSB0eXBlIFx2YXJ7dHlwZX0uICBUaGUgdHlwZSBcdmFye3R5cGV9Ci1tdXN0IGVpdGhlciBcY29uc3RhbnR7RklMRVRZUEVfUEVNfSBvciBcY29uc3RhbnR7RklMRVRZUEVfQVNOMX0pLgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtsb2FkX3BrY3M3X2RhdGF9e3R5cGUsIGJ1ZmZlcn0KLUxvYWQgcGtjczcgZGF0YSBmcm9tIHRoZSBzdHJpbmcgXHZhcntidWZmZXJ9IGVuY29kZWQgd2l0aCB0aGUgdHlwZSBcdmFye3R5cGV9LgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtsb2FkX3BrY3MxMn17YnVmZmVyXG9wdGlvbmFseywgcGFzc3BocmFzZX19Ci1Mb2FkIHBrY3MxMiBkYXRhIGZyb20gdGhlIHN0cmluZyBcdmFye2J1ZmZlcn0uIElmIHRoZSBwa2NzMTIgc3RydWN0dXJlIGlzCi1lbmNyeXB0ZWQsIGEgXHZhcntwYXNzcGhyYXNlfSBtdXN0IGJlIGluY2x1ZGVkLiAgVGhlIE1BQyBpcyBhbHdheXMKLWNoZWNrZWQgYW5kIHRodXMgcmVxdWlyZWQuCi0KLVNlZSBhbHNvIHRoZSBtYW4gcGFnZSBmb3IgdGhlIEMgZnVuY3Rpb24gXGZ1bmN0aW9ue1BLQ1MxMl9wYXJzZX0uCi1cZW5ke2Z1bmNkZXNjfQotCi1cYmVnaW57ZnVuY2Rlc2N9e3NpZ259e2tleSwgZGF0YSwgZGlnZXN0fQotU2lnbiBhIGRhdGEgc3RyaW5nIHVzaW5nIHRoZSBnaXZlbiBrZXkgYW5kIG1lc3NhZ2UgZGlnZXN0LgotCi1cdmFye2tleX0gaXMgYSBcY29kZXtQS2V5fSBpbnN0YW5jZS4gIFx2YXJ7ZGF0YX0gaXMgYSBcY29kZXtzdHJ9IGluc3RhbmNlLgotXHZhcntkaWdlc3R9IGlzIGEgXGNvZGV7c3RyfSBuYW1pbmcgYSBzdXBwb3J0ZWQgbWVzc2FnZSBkaWdlc3QgdHlwZSwgZm9yIGV4YW1wbGUKLVxjb2Rle2Bgc2hhMScnfS4KLVx2ZXJzaW9uYWRkZWR7MC4xMX0KLVxlbmR7ZnVuY2Rlc2N9Ci0KLVxiZWdpbntmdW5jZGVzY317dmVyaWZ5fXtjZXJ0aWZpY2F0ZSwgc2lnbmF0dXJlLCBkYXRhLCBkaWdlc3R9Ci1WZXJpZnkgdGhlIHNpZ25hdHVyZSBmb3IgYSBkYXRhIHN0cmluZy4KLQotXHZhcntjZXJ0aWZpY2F0ZX0gaXMgYSBcY29kZXtYNTA5fSBpbnN0YW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcml2YXRlIGtleQotd2hpY2ggZ2VuZXJhdGVkIHRoZSBzaWduYXR1cmUuICBcdmFye3NpZ25hdHVyZX0gaXMgYSBcdmFye3N0cn0gaW5zdGFuY2UgZ2l2aW5nCi10aGUgc2lnbmF0dXJlIGl0c2VsZi4gIFx2YXJ7ZGF0YX0gaXMgYSBcdmFye3N0cn0gaW5zdGFuY2UgZ2l2aW5nIHRoZSBkYXRhIHRvCi13aGljaCB0aGUgc2lnbmF0dXJlIGFwcGxpZXMuICBcdmFye2RpZ2VzdH0gaXMgYSBcdmFye3N0cn0gaW5zdGFuY2UgbmFtaW5nIHRoZQotbWVzc2FnZSBkaWdlc3QgdHlwZSBvZiB0aGUgc2lnbmF0dXJlLCBmb3IgZXhhbXBsZSBcY29kZXtgYHNoYTEnJ30uCi1cdmVyc2lvbmFkZGVkezAuMTF9Ci1cZW5ke2Z1bmNkZXNjfQotCi1cc3Vic3Vic2VjdGlvbntYNTA5IG9iamVjdHMgXGxhYmVse29wZW5zc2wteDUwOX19Ci0KLVg1MDkgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde2dldF9pc3N1ZXJ9e30KLVJldHVybiBhbiBYNTA5TmFtZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBpc3N1ZXIgb2YgdGhlIGNlcnRpZmljYXRlLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOV17Z2V0X3B1YmtleX17fQotUmV0dXJuIGEgUEtleSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZSBjZXJ0aWZpY2F0ZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde2dldF9zZXJpYWxfbnVtYmVyfXt9Ci1SZXR1cm4gdGhlIGNlcnRpZmljYXRlIHNlcmlhbCBudW1iZXIuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtnZXRfc2lnbmF0dXJlX2FsZ29yaXRobX17fQotUmV0dXJuIHRoZSBzaWduYXR1cmUgYWxnb3JpdGhtIHVzZWQgaW4gdGhlIGNlcnRpZmljYXRlLiAgSWYgdGhlIGFsZ29yaXRobSBpcwotdW5kZWZpbmVkLCByYWlzZSBcY29kZXtWYWx1ZUVycm9yfS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde2dldF9zdWJqZWN0fXt9Ci1SZXR1cm4gYW4gWDUwOU5hbWUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc3ViamVjdCBvZiB0aGUgY2VydGlmaWNhdGUuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtnZXRfdmVyc2lvbn17fQotUmV0dXJuIHRoZSBjZXJ0aWZpY2F0ZSB2ZXJzaW9uLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOV17Z2V0X25vdEJlZm9yZX17fQotUmV0dXJuIGEgc3RyaW5nIGdpdmluZyB0aGUgdGltZSBiZWZvcmUgd2hpY2ggdGhlIGNlcnRpZmljYXRlIGlzIG5vdCB2YWxpZC4gIFRoZQotc3RyaW5nIGlzIGZvcm1hdHRlZCBhcyBhbiBBU04xIEdFTkVSQUxJWkVEVElNRToKLVxiZWdpbnt2ZXJiYXRpbX0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotXGVuZHt2ZXJiYXRpbX0KLUlmIG5vIHZhbHVlIGV4aXN0cyBmb3IgdGhpcyBmaWVsZCwgXGNvZGV7Tm9uZX0gaXMgcmV0dXJuZWQuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtnZXRfbm90QWZ0ZXJ9e30KLVJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIHRpbWUgYWZ0ZXIgd2hpY2ggdGhlIGNlcnRpZmljYXRlIGlzIG5vdCB2YWxpZC4gIFRoZQotc3RyaW5nIGlzIGZvcm1hdHRlZCBhcyBhbiBBU04xIEdFTkVSQUxJWkVEVElNRToKLVxiZWdpbnt2ZXJiYXRpbX0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotXGVuZHt2ZXJiYXRpbX0KLUlmIG5vIHZhbHVlIGV4aXN0cyBmb3IgdGhpcyBmaWVsZCwgXGNvZGV7Tm9uZX0gaXMgcmV0dXJuZWQuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtzZXRfbm90QmVmb3JlfXt3aGVufQotQ2hhbmdlIHRoZSB0aW1lIGJlZm9yZSB3aGljaCB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHZhbGlkLiAgXHZhcnt3aGVufSBpcyBhCi1zdHJpbmcgZm9ybWF0dGVkIGFzIGFuIEFTTjEgR0VORVJBTElaRURUSU1FOgotXGJlZ2lue3ZlcmJhdGltfQotICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zc1oKLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbQotICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tCi1cZW5ke3ZlcmJhdGltfQotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOV17c2V0X25vdEFmdGVyfXt3aGVufQotQ2hhbmdlIHRoZSB0aW1lIGFmdGVyIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQuICBcdmFye3doZW59IGlzIGEKLXN0cmluZyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUU6Ci1cYmVnaW57dmVyYmF0aW19Ci0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzWgotICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcytoaG1tCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzLWhobW0KLVxlbmR7dmVyYmF0aW19Ci1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtnbXRpbWVfYWRqX25vdEJlZm9yZX17dGltZX0KLUFkanVzdCB0aGUgdGltZXN0YW1wIChpbiBHTVQpIHdoZW4gdGhlIGNlcnRpZmljYXRlIHN0YXJ0cyBiZWluZyB2YWxpZC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde2dtdGltZV9hZGpfbm90QWZ0ZXJ9e3RpbWV9Ci1BZGp1c3QgdGhlIHRpbWVzdGFtcCAoaW4gR01UKSB3aGVuIHRoZSBjZXJ0aWZpY2F0ZSBzdG9wcyBiZWluZyB2YWxpZC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde2hhc19leHBpcmVkfXt9Ci1DaGVja3MgdGhlIGNlcnRpZmljYXRlJ3MgdGltZSBzdGFtcCBhZ2FpbnN0IGN1cnJlbnQgdGltZS4gUmV0dXJucyB0cnVlIGlmIHRoZQotY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde3NldF9pc3N1ZXJ9e2lzc3Vlcn0KLVNldCB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byBcdmFye2lzc3Vlcn0uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtzZXRfcHVia2V5fXtwa2V5fQotU2V0IHRoZSBwdWJsaWMga2V5IG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byBcdmFye3BrZXl9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOV17c2V0X3NlcmlhbF9udW1iZXJ9e3NlcmlhbG5vfQotU2V0IHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byBcdmFye3NlcmlhbG5vfS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde3NldF9zdWJqZWN0fXtzdWJqZWN0fQotU2V0IHRoZSBzdWJqZWN0IG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byBcdmFye3N1YmplY3R9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOV17c2V0X3ZlcnNpb259e3ZlcnNpb259Ci1TZXQgdGhlIGNlcnRpZmljYXRlIHZlcnNpb24gdG8gXHZhcnt2ZXJzaW9ufS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlde3NpZ259e3BrZXksIGRpZ2VzdH0KLVNpZ24gdGhlIGNlcnRpZmljYXRlLCB1c2luZyB0aGUga2V5IFx2YXJ7cGtleX0gYW5kIHRoZSBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG0KLWlkZW50aWZpZWQgYnkgdGhlIHN0cmluZyBcdmFye2RpZ2VzdH0uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtzdWJqZWN0X25hbWVfaGFzaH17fQotUmV0dXJuIHRoZSBoYXNoIG9mIHRoZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOV17ZGlnZXN0fXtkaWdlc3RfbmFtZX0KLVJldHVybiBhIGRpZ2VzdCBvZiB0aGUgY2VydGlmaWNhdGUsIHVzaW5nIHRoZSBcdmFye2RpZ2VzdF9uYW1lfSBtZXRob2QuCi1cdmFye2RpZ2VzdF9uYW1lfSBtdXN0IGJlIGEgc3RyaW5nIGRlc2NyaWJpbmcgYSBkaWdlc3QgYWxnb3JpdGhtIHN1cHBvcnRlZAotYnkgT3BlblNTTCAoYnkgRVZQX2dldF9kaWdlc3RieW5hbWUsIHNwZWNpZmljYWxseSkuICBGb3IgZXhhbXBsZSwKLVxjb25zdGFudHsibWQ1In0gb3IgXGNvbnN0YW50eyJzaGExIn0uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXthZGRfZXh0ZW5zaW9uc317ZXh0ZW5zaW9uc30KLUFkZCB0aGUgZXh0ZW5zaW9ucyBpbiB0aGUgc2VxdWVuY2UgXHZhcntleHRlbnNpb25zfSB0byB0aGUgY2VydGlmaWNhdGUuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtnZXRfZXh0ZW5zaW9uX2NvdW50fXt9Ci1SZXR1cm4gdGhlIG51bWJlciBvZiBleHRlbnNpb25zIG9uIHRoaXMgY2VydGlmaWNhdGUuCi1cdmVyc2lvbmFkZGVkezAuMTJ9Ci1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5XXtnZXRfZXh0ZW5zaW9ufXtpbmRleH0KLVJldHJpZXZlIHRoZSBleHRlbnNpb24gb24gdGhpcyBjZXJ0aWZpY2F0ZSBhdCB0aGUgZ2l2ZW4gaW5kZXguCi0KLUV4dGVuc2lvbnMgb24gYSBjZXJ0aWZpY2F0ZSBhcmUga2VwdCBpbiBvcmRlci4gIFRoZSBpbmRleCBwYXJhbWV0ZXIgc2VsZWN0cwotd2hpY2ggZXh0ZW5zaW9uIHdpbGwgYmUgcmV0dXJuZWQuICBUaGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgYmUgYW4gWDUwOUV4dGVuc2lvbgotaW5zdGFuY2UuCi1cdmVyc2lvbmFkZGVkezAuMTJ9Ci1cZW5ke21ldGhvZGRlc2N9Ci0KLVxzdWJzdWJzZWN0aW9ue1g1MDlOYW1lIG9iamVjdHMgXGxhYmVse29wZW5zc2wteDUwOW5hbWV9fQotCi1YNTA5TmFtZSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOU5hbWVde2hhc2h9e30KLVJldHVybiBhbiBpbnRlZ2VyIGdpdmluZyB0aGUgZmlyc3QgZm91ciBieXRlcyBvZiB0aGUgTUQ1IGRpZ2VzdCBvZiB0aGUgREVSCi1yZXByZXNlbnRhdGlvbiBvZiB0aGUgbmFtZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlOYW1lXXtkZXJ9e30KLVJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIERFUiByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmFtZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlOYW1lXXtnZXRfY29tcG9uZW50c317fQotUmV0dXJuIGEgbGlzdCBvZiB0d28tdHVwbGVzIG9mIHN0cmluZ3MgZ2l2aW5nIHRoZSBjb21wb25lbnRzIG9mIHRoZSBuYW1lLgotXGVuZHttZXRob2RkZXNjfQotCi1YNTA5TmFtZSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgotCi1cYmVnaW57bWVtYmVyZGVzY31bWDUwOU5hbWVde2NvdW50cnlOYW1lfQotVGhlIGNvdW50cnkgb2YgdGhlIGVudGl0eS4gXGNvZGV7Q30gbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCi1cY29kZXtjb3VudHJ5TmFtZX0uCi1cZW5ke21lbWJlcmRlc2N9Ci0KLVxiZWdpbnttZW1iZXJkZXNjfVtYNTA5TmFtZV17c3RhdGVPclByb3ZpbmNlTmFtZX0KLVRoZSBzdGF0ZSBvciBwcm92aW5jZSBvZiB0aGUgZW50aXR5LiBcY29kZXtTVH0gbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCi1cY29kZXtzdGF0ZU9yUHJvdmluY2VOYW1lfbcKLVxlbmR7bWVtYmVyZGVzY30KLQotXGJlZ2lue21lbWJlcmRlc2N9W1g1MDlOYW1lXXtsb2NhbGl0eU5hbWV9Ci1UaGUgbG9jYWxpdHkgb2YgdGhlIGVudGl0eS4gXGNvZGV7TH0gbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCi1cY29kZXtsb2NhbGl0eU5hbWV9LgotXGVuZHttZW1iZXJkZXNjfQotCi1cYmVnaW57bWVtYmVyZGVzY31bWDUwOU5hbWVde29yZ2FuaXphdGlvbk5hbWV9Ci1UaGUgb3JnYW5pemF0aW9uIG5hbWUgb2YgdGhlIGVudGl0eS4gXGNvZGV7T30gbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCi1cY29kZXtvcmdhbml6YXRpb25OYW1lfS4KLVxlbmR7bWVtYmVyZGVzY30KLQotXGJlZ2lue21lbWJlcmRlc2N9W1g1MDlOYW1lXXtvcmdhbml6YXRpb25hbFVuaXROYW1lfQotVGhlIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgdGhlIGVudGl0eS4gXGNvZGV7T1V9IG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotXGNvZGV7b3JnYW5pemF0aW9uYWxVbml0TmFtZX0uCi1cZW5ke21lbWJlcmRlc2N9Ci0KLVxiZWdpbnttZW1iZXJkZXNjfVtYNTA5TmFtZV17Y29tbW9uTmFtZX0KLVRoZSBjb21tb24gbmFtZSBvZiB0aGUgZW50aXR5LiBcY29kZXtDTn0gbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCi1cY29kZXtjb21tb25OYW1lfS4KLVxlbmR7bWVtYmVyZGVzY30KLQotXGJlZ2lue21lbWJlcmRlc2N9W1g1MDlOYW1lXXtlbWFpbEFkZHJlc3N9Ci1UaGUgZS1tYWlsIGFkZHJlc3Mgb2YgdGhlIGVudGl0eS4KLVxlbmR7bWVtYmVyZGVzY30KLQotXHN1YnN1YnNlY3Rpb257WDUwOVJlcSBvYmplY3RzIFxsYWJlbHtvcGVuc3NsLXg1MDlyZXF9fQotCi1YNTA5UmVxIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5UmVxXXtnZXRfcHVia2V5fXt9Ci1SZXR1cm4gYSBQS2V5IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5UmVxXXtnZXRfc3ViamVjdH17fQotUmV0dXJuIGFuIFg1MDlOYW1lIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHN1YmplY3Qgb2YgdGhlIGNlcnRpZmljYXRlLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOVJlcV17c2V0X3B1YmtleX17cGtleX0KLVNldCB0aGUgcHVibGljIGtleSBvZiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCB0byBcdmFye3BrZXl9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOVJlcV17c2lnbn17cGtleSwgZGlnZXN0fQotU2lnbiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCwgdXNpbmcgdGhlIGtleSBcdmFye3BrZXl9IGFuZCB0aGUgbWVzc2FnZSBkaWdlc3QKLWFsZ29yaXRobSBpZGVudGlmaWVkIGJ5IHRoZSBzdHJpbmcgXHZhcntkaWdlc3R9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOVJlcV17dmVyaWZ5fXtwa2V5fQotVmVyaWZ5IGEgY2VydGlmaWNhdGUgcmVxdWVzdCB1c2luZyB0aGUgcHVibGljIGtleSBcdmFye3BrZXl9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bWDUwOVJlcV17c2V0X3ZlcnNpb259e3ZlcnNpb259Ci1TZXQgdGhlIHZlcnNpb24gKFJGQyAyNDU5LCA0LjEuMi4xKSBvZiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCB0bwotXHZhcnt2ZXJzaW9ufS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1g1MDlSZXFde2dldF92ZXJzaW9ufXt9Ci1HZXQgdGhlIHZlcnNpb24gKFJGQyAyNDU5LCA0LjEuMi4xKSBvZiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXHN1YnN1YnNlY3Rpb257WDUwOVN0b3JlIG9iamVjdHMgXGxhYmVse29wZW5zc2wteDUwOXN0b3JlfX0KLQotVGhlIFg1MDlTdG9yZSBvYmplY3QgaGFzIGN1cnJlbnRseSBqdXN0IG9uZSBtZXRob2Q6Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5U3RvcmVde2FkZF9jZXJ0fXtjZXJ0fQotQWRkIHRoZSBjZXJ0aWZpY2F0ZSBcdmFye2NlcnR9IHRvIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXHN1YnN1YnNlY3Rpb257UEtleSBvYmplY3RzIFxsYWJlbHtvcGVuc3NsLXBrZXl9fQotCi1UaGUgUEtleSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLZXlde2JpdHN9e30KLVJldHVybiB0aGUgbnVtYmVyIG9mIGJpdHMgb2YgdGhlIGtleS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLZXlde2dlbmVyYXRlX2tleX17dHlwZSwgYml0c30KLUdlbmVyYXRlIGEgcHVibGljL3ByaXZhdGUga2V5IHBhaXIgb2YgdGhlIHR5cGUgXHZhcnt0eXBlfSAob25lIG9mCi1cY29uc3RhbnR7VFlQRV9SU0F9IGFuZCBcY29uc3RhbnR7VFlQRV9EU0F9KSB3aXRoIHRoZSBzaXplIFx2YXJ7Yml0c30uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtQS2V5XXt0eXBlfXt9Ci1SZXR1cm4gdGhlIHR5cGUgb2YgdGhlIGtleS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLZXlde2NoZWNrfXt9Ci1DaGVjayB0aGUgY29uc2lzdGVuY3kgb2YgdGhpcyBrZXksIHJldHVybmluZyBUcnVlIGlmIGl0IGlzIGNvbnNpc3RlbnQgYW5kCi1yYWlzaW5nIGFuIGV4Y2VwdGlvbiBvdGhlcndpc2UuICBUaGlzIGlzIG9ubHkgdmFsaWQgZm9yIFJTQSBrZXlzLiAgU2VlIHRoZQotT3BlblNTTCBSU0FfY2hlY2tfa2V5IG1hbiBwYWdlIGZvciBmdXJ0aGVyIGxpbWl0YXRpb25zLgotXGVuZHttZXRob2RkZXNjfQotCi1cc3Vic3Vic2VjdGlvbntQS0NTNyBvYmplY3RzIFxsYWJlbHtvcGVuc3NsLXBrY3M3fX0KLQotUEtDUzcgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLQ1M3XXt0eXBlX2lzX3NpZ25lZH17fQotRklYTUUKLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLQ1M3XXt0eXBlX2lzX2VudmVsb3BlZH17fQotRklYTUUKLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLQ1M3XXt0eXBlX2lzX3NpZ25lZEFuZEVudmVsb3BlZH17fQotRklYTUUKLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLQ1M3XXt0eXBlX2lzX2RhdGF9e30KLUZJWE1FCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtQS0NTN117Z2V0X3R5cGVfbmFtZX17fQotR2V0IHRoZSB0eXBlIG5hbWUgb2YgdGhlIFBLQ1M3LgotXGVuZHttZXRob2RkZXNjfQotCi1cc3Vic3Vic2VjdGlvbntQS0NTMTIgb2JqZWN0cyBcbGFiZWx7b3BlbnNzbC1wa2NzMTJ9fQotCi1QS0NTMTIgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLQ1MxMl17ZXhwb3J0fXtcb3B0aW9uYWx7cGFzc3BocmFzZT1Ob25lfVxvcHRpb25hbHssIGl0ZXI9MjA0OH1cb3B0aW9uYWx7LCBtYWNpdGVyPTF9fQotUmV0dXJucyBhIFBLQ1MxMiBvYmplY3QgYXMgYSBzdHJpbmcuCi0KLVRoZSBvcHRpb25hbCBcdmFye3Bhc3NwaHJhc2V9IG11c3QgYmUgYSBzdHJpbmcgbm90IGEgY2FsbGJhY2suCi0KLVNlZSBhbHNvIHRoZSBtYW4gcGFnZSBmb3IgdGhlIEMgZnVuY3Rpb24gXGZ1bmN0aW9ue1BLQ1MxMl9jcmVhdGV9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bUEtDUzEyXXtnZXRfY2FfY2VydGlmaWNhdGVzfXt9Ci1SZXR1cm4gQ0EgY2VydGlmaWNhdGVzIHdpdGhpbiB0aGUgUEtDUzEyIG9iamVjdCBhcyBhIHR1cGxlLiBSZXR1cm5zCi1cY29uc3RhbnR7Tm9uZX0gaWYgbm8gQ0EgY2VydGlmaWNhdGVzIGFyZSBwcmVzZW50LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bUEtDUzEyXXtnZXRfY2VydGlmaWNhdGV9e30KLVJldHVybiBjZXJ0aWZpY2F0ZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bUEtDUzEyXXtnZXRfZnJpZW5kbHluYW1lfXt9Ci1SZXR1cm4gZnJpZW5kbHlOYW1lIHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmUuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtQS0NTMTJde2dldF9wcml2YXRla2V5fXt9Ci1SZXR1cm4gcHJpdmF0ZSBrZXkgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZQotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bUEtDUzEyXXtzZXRfY2FfY2VydGlmaWNhdGVzfXtjYWNlcnRzfQotUmVwbGFjZSBvciBzZXQgdGhlIENBIGNlcnRpZmljYXRlcyB3aXRoaW4gdGhlIFBLQ1MxMiBvYmplY3Qgd2l0aCB0aGUgc2VxdWVuY2UgXHZhcntjYWNlcnRzfS4KLQotU2V0IFx2YXJ7Y2FjZXJ0c30gdG8gXGNvbnN0YW50e05vbmV9IHRvIHJlbW92ZSBhbGwgQ0EgY2VydGlmaWNhdGVzLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bUEtDUzEyXXtzZXRfY2VydGlmaWNhdGV9e2NlcnR9Ci1SZXBsYWNlIG9yIHNldCB0aGUgY2VydGlmaWNhdGUgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLQ1MxMl17c2V0X2ZyaWVuZGx5bmFtZX17bmFtZX0KLVJlcGxhY2Ugb3Igc2V0IHRoZSBmcmllbmRseU5hbWUgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1BLQ1MxMl17c2V0X3ByaXZhdGVrZXl9e3BrZXl9Ci1SZXBsYWNlIG9yIHNldCBwcml2YXRlIGtleSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxzdWJzdWJzZWN0aW9ue1g1MDlFeHRlbnNpb24gb2JqZWN0cyBcbGFiZWx7b3BlbnNzbC01MDlleHR9fQotCi1YNTA5RXh0ZW5zaW9uIG9iamVjdHMgaGF2ZSBzZXZlcmFsIG1ldGhvZHM6Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5RXh0ZW5zaW9uXXtnZXRfY3JpdGljYWx9e30KLVJldHVybiB0aGUgY3JpdGljYWwgZmllbGQgb2YgdGhlIGV4dGVuc2lvbiBvYmplY3QuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5RXh0ZW5zaW9uXXtnZXRfc2hvcnRfbmFtZX17fQotUmV0cmlldmUgdGhlIHNob3J0IGRlc2NyaXB0aXZlIG5hbWUgZm9yIHRoaXMgZXh0ZW5zaW9uLgotCi1UaGUgcmVzdWx0IGlzIGEgYnl0ZSBzdHJpbmcgbGlrZSBcY29kZXtgYGJhc2ljQ29uc3RyYWludHMnJ30uCi1cdmVyc2lvbmFkZGVkezAuMTJ9Ci1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtYNTA5RXh0ZW5zaW9uXXtnZXRfZGF0YX17fQotUmV0cmlldmUgdGhlIGRhdGEgZm9yIHRoaXMgZXh0ZW5zaW9uLgotCi1UaGUgcmVzdWx0IGlzIHRoZSBBU04uMSBlbmNvZGVkIGZvcm0gb2YgdGhlIGV4dGVuc2lvbiBkYXRhIGFzIGEgYnl0ZSBzdHJpbmcuCi1cdmVyc2lvbmFkZGVkezAuMTJ9Ci1cZW5ke21ldGhvZGRlc2N9Ci0KLVxzdWJzdWJzZWN0aW9ue05ldHNjYXBlU1BLSSBvYmplY3RzIFxsYWJlbHtvcGVuc3NsLW5ldHNjYXBlLXNwa2l9fQotCi1OZXRzY2FwZVNQS0kgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotXGJlZ2lue21ldGhvZGRlc2N9W05ldHNjYXBlU1BLSV17YjY0X2VuY29kZX17fQotUmV0dXJuIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtOZXRzY2FwZVNQS0lde2dldF9wdWJrZXl9e30KLVJldHVybiB0aGUgcHVibGljIGtleSBvZiBvYmplY3QuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtOZXRzY2FwZVNQS0lde3NldF9wdWJrZXl9e2tleX0KLVNldCB0aGUgcHVibGljIGtleSBvZiB0aGUgb2JqZWN0IHRvIFx2YXJ7a2V5fS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W05ldHNjYXBlU1BLSV17c2lnbn17a2V5LCBkaWdlc3RfbmFtZX0KLVNpZ24gdGhlIE5ldHNjYXBlU1BLSSBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIFx2YXJ7a2V5fSBhbmQKLVx2YXJ7ZGlnZXN0X25hbWV9LiAgXHZhcntkaWdlc3RfbmFtZX0gbXVzdCBiZSBhIHN0cmluZyBkZXNjcmliaW5nIGEgZGlnZXN0Ci1hbGdvcml0aG0gc3VwcG9ydGVkIGJ5IE9wZW5TU0wgKGJ5IEVWUF9nZXRfZGlnZXN0YnluYW1lLCBzcGVjaWZpY2FsbHkpLiAgRm9yCi1leGFtcGxlLCBcY29uc3RhbnR7Im1kNSJ9IG9yIFxjb25zdGFudHsic2hhMSJ9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bTmV0c2NhcGVTUEtJXXt2ZXJpZnl9e2tleX0KLVZlcmlmeSB0aGUgTmV0c2NhcGVTUEtJIG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gXHZhcntrZXl9LgotXGVuZHttZXRob2RkZXNjfQotCi1cc3Vic3Vic2VjdGlvbntDUkwgb2JqZWN0cyBcbGFiZWx7Y3JsfX0KLQotQ1JMIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDUkxde2FkZF9yZXZva2VkfXtyZXZva2VkfQotQWRkIGEgUmV2b2tlZCBvYmplY3QgdG8gdGhlIENSTCwgYnkgdmFsdWUgbm90IHJlZmVyZW5jZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0NSTF17ZXhwb3J0fXtjZXJ0LCBrZXlcb3B0aW9uYWx7LCB0eXBlPUZJTEVUWVBFX1BFTX1cb3B0aW9uYWx7LCBkYXlzPTEwMH19Ci1Vc2UgXHZhcntjZXJ0fSBhbmQgXHZhcntrZXl9IHRvIHNpZ24gdGhlIENSTCBhbmQgcmV0dXJuIHRoZSBDUkwgYXMgYSBzdHJpbmcuCi1cdmFye2RheXN9IGlzIHRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIG5leHQgQ1JMIGlzIGR1ZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0NSTF17Z2V0X3Jldm9rZWR9e30KLVJldHVybiBhIHR1cGxlIG9mIFJldm9rZWQgb2JqZWN0cywgYnkgdmFsdWUgbm90IHJlZmVyZW5jZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXHN1YnN1YnNlY3Rpb257UmV2b2tlZCBvYmplY3RzIFxsYWJlbHtyZXZva2VkfX0KLQotUmV2b2tlZCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi1cYmVnaW57bWV0aG9kZGVzY31bUmV2b2tlZF17YWxsX3JlYXNvbnN9e30KLVJldHVybiBhIGxpc3Qgb2YgYWxsIHN1cHBvcnRlZCByZWFzb25zLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bUmV2b2tlZF17Z2V0X3JlYXNvbn17fQotUmV0dXJuIHRoZSByZXZvY2F0aW9uIHJlYXNvbiBhcyBhIHN0ci4gIENhbiBiZQotTm9uZSwgd2hpY2ggZGlmZmVycyBmcm9tICJVbnNwZWNpZmllZCIuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtSZXZva2VkXXtnZXRfcmV2X2RhdGV9e30KLVJldHVybiB0aGUgcmV2b2NhdGlvbiBkYXRlIGFzIGEgc3RyLgotVGhlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUUuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtSZXZva2VkXXtnZXRfc2VyaWFsfXt9Ci1SZXR1cm4gYSBzdHIgY29udGFpbmluZyBhIGhleCBudW1iZXIgb2YgdGhlIHNlcmlhbCBvZiB0aGUgcmV2b2tlZCBjZXJ0aWZpY2F0ZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1Jldm9rZWRde3NldF9yZWFzb259e3JlYXNvbn0KLVNldCB0aGUgcmV2b2NhdGlvbiByZWFzb24uICBcdmFye3JlYXNvbn0gbXVzdAotYmUgTm9uZSBvciBhIHN0cmluZywgYnV0IHRoZSB2YWx1ZXMgYXJlIGxpbWl0ZWQuICAKLVNwYWNlcyBhbmQgY2FzZSBhcmUgaWdub3JlZC4gIFNlZSBcbWV0aG9ke2FsbF9yZWFzb25zfS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W1Jldm9rZWRde3NldF9yZXZfZGF0ZX17ZGF0ZX0KLVNldCB0aGUgcmV2b2NhdGlvbiBkYXRlLgotVGhlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUUuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtSZXZva2VkXXtzZXRfc2VyaWFsfXtzZXJpYWx9Ci1cdmFye3NlcmlhbH0gaXMgYSBzdHJpbmcgY29udGFpbmluZyBhIGhleCBudW1iZXIgb2YgdGhlIHNlcmlhbCBvZiB0aGUgcmV2b2tlZCBjZXJ0aWZpY2F0ZS4KLVxlbmR7bWV0aG9kZGVzY30KLQotCi0lICUgJSByYW5kIG1vZHVsZQotCi1cc3Vic2VjdGlvbntcbW9kdWxle3JhbmR9IC0tLSBBbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5TU0wgcHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIFxsYWJlbHtvcGVuc3NsLXJhbmR9fQotCi1cZGVjbGFyZW1vZHVsZXtleHRlbnNpb259e3JhbmR9Ci1cbW9kdWxlc3lub3BzaXN7QW4gaW50ZXJmYWNlIHRvIHRoZSBPcGVuU1NMIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvcn0KLQotVGhpcyBtb2R1bGUgaGFuZGxlcyB0aGUgT3BlblNTTCBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKFBSTkcpIGFuZAotZGVjbGFyZXMgdGhlIGZvbGxvd2luZzoKLQotXGJlZ2lue2Z1bmNkZXNjfXthZGR9e3N0cmluZywgZW50cm9weX0KLU1peCBieXRlcyBmcm9tIFx2YXJ7c3RyaW5nfSBpbnRvIHRoZSBQUk5HIHN0YXRlLiBUaGUgXHZhcntlbnRyb3B5fSBhcmd1bWVudCBpcwotKHRoZSBsb3dlciBib3VuZCBvZikgYW4gZXN0aW1hdGUgb2YgaG93IG11Y2ggcmFuZG9tbmVzcyBpcyBjb250YWluZWQgaW4KLVx2YXJ7c3RyaW5nfSwgbWVhc3VyZWQgaW4gYnl0ZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgZS5nLiBccmZjezE3NTB9LgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtieXRlc317bnVtX2J5dGVzfQotR2V0IHNvbWUgcmFuZG9tIGJ5dGVzIGZyb20gdGhlIFBSTkcgYXMgYSBzdHJpbmcuCi0KLVRoaXMgaXMgYSB3cmFwcGVyIGZvciB0aGUgQyBmdW5jdGlvbiBcZnVuY3Rpb257UkFORF9ieXRlc30uCi1cZW5ke2Z1bmNkZXNjfQotCi1cYmVnaW57ZnVuY2Rlc2N9e2NsZWFudXB9e30KLUVyYXNlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgUFJORy4KLQotVGhpcyBpcyBhIHdyYXBwZXIgZm9yIHRoZSBDIGZ1bmN0aW9uIFxmdW5jdGlvbntSQU5EX2NsZWFudXB9LgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtlZ2R9e3BhdGhcb3B0aW9uYWx7LCBieXRlc319Ci1RdWVyeSB0aGUgRW50cm9weSBHYXRoZXJpbmcgRGFlbW9uXGZvb3Rub3Rle1NlZQotXHVybHtodHRwOi8vd3d3LmxvdGhhci5jb20vdGVjaC9jcnlwdG8vfX0gb24gc29ja2V0IFx2YXJ7cGF0aH0gZm9yIFx2YXJ7Ynl0ZXN9Ci1ieXRlcyBvZiByYW5kb20gZGF0YSBhbmQgYW5kIHVzZXMgXGZ1bmN0aW9ue2FkZH0gdG8gc2VlZCB0aGUgUFJORy4gVGhlIGRlZmF1bHQKLXZhbHVlIG9mIFx2YXJ7Ynl0ZXN9IGlzIDI1NS4KLVxlbmR7ZnVuY2Rlc2N9Ci0KLVxiZWdpbntmdW5jZGVzY317bG9hZF9maWxlfXtwYXRoXG9wdGlvbmFseywgYnl0ZXN9fQotUmVhZCBcdmFye2J5dGVzfSBieXRlcyAob3IgYWxsIG9mIGl0LCBpZiBcdmFye2J5dGVzfSBpcyBuZWdhdGl2ZSkgb2YgZGF0YSBmcm9tCi10aGUgZmlsZSBcdmFye3BhdGh9IHRvIHNlZWQgdGhlIFBSTkcuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIFx2YXJ7Ynl0ZXN9IGlzIC0xLgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtzY3JlZW59e30KLUFkZCB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgc2NyZWVuIHRvIHRoZSBQUk5HIHN0YXRlLgotQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtzZWVkfXtzdHJpbmd9Ci1UaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBcZnVuY3Rpb257YWRkfSB3aXRoIFx2YXJ7ZW50cm9weX0gYXMgdGhlIGxlbmd0aAotb2YgdGhlIHN0cmluZy4KLVxlbmR7ZnVuY2Rlc2N9Ci0KLVxiZWdpbntmdW5jZGVzY317c3RhdHVzfXt9Ci1SZXR1cm5zIHRydWUgaWYgdGhlIFBSTkcgaGFzIGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEsIGFuZCBmYWxzZSBvdGhlcndpc2UuCi1cZW5ke2Z1bmNkZXNjfQotCi1cYmVnaW57ZnVuY2Rlc2N9e3dyaXRlX2ZpbGV9e3BhdGh9Ci1Xcml0ZSBhIG51bWJlciBvZiByYW5kb20gYnl0ZXMgKGN1cnJlbnRseSAxMDI0KSB0byB0aGUgZmlsZSBcdmFye3BhdGh9LiBUaGlzCi1maWxlIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCBcZnVuY3Rpb257bG9hZF9maWxlfSB0byBzZWVkIHRoZSBQUk5HIGFnYWluLgotXGVuZHtmdW5jZGVzY30KLQotXGJlZ2lue2V4Y2Rlc2N9e0Vycm9yfQotSWYgdGhlIGN1cnJlbnQgUkFORCBtZXRob2Qgc3VwcG9ydHMgYW55IGVycm9ycywgdGhpcyBpcyByYWlzZWQgd2hlbiBuZWVkZWQuCi1UaGUgZGVmYXVsdCBtZXRob2QgZG9lcyBub3QgcmFpc2UgdGhpcyB3aGVuIHRoZSBlbnRyb3B5IHBvb2wgaXMgZGVwbGV0ZWQuCi0KLVdoZW5ldmVyIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBkaXJlY3RseSwgaXQgaGFzIGEgbGlzdCBvZiBlcnJvciBtZXNzYWdlcwotZnJvbSB0aGUgT3BlblNTTCBlcnJvciBxdWV1ZSwgd2hlcmUgZWFjaCBpdGVtIGlzIGEgdHVwbGUgXGNvZGV7KFx2YXJ7bGlifSwKLVx2YXJ7ZnVuY3Rpb259LCBcdmFye3JlYXNvbn0pfS4gSGVyZSBcdmFye2xpYn0sIFx2YXJ7ZnVuY3Rpb259IGFuZCBcdmFye3JlYXNvbn0KLWFyZSBhbGwgc3RyaW5ncywgZGVzY3JpYmluZyB3aGVyZSBhbmQgd2hhdCB0aGUgcHJvYmxlbSBpcy4gU2VlIFxtYW5wYWdle2Vycn17M30KLWZvciBtb3JlIGluZm9ybWF0aW9uLgotXGVuZHtleGNkZXNjfQotCi0KLSUgJSAlIFNTTCBtb2R1bGUKLQotXHN1YnNlY3Rpb257XG1vZHVsZXtTU0x9IC0tLSBBbiBpbnRlcmZhY2UgdG8gdGhlIFNTTC1zcGVjaWZpYyBwYXJ0cyBvZiBPcGVuU1NMIFxsYWJlbHtvcGVuc3NsLXNzbH19Ci0KLVxkZWNsYXJlbW9kdWxle2V4dGVuc2lvbn17U1NMfQotXG1vZHVsZXN5bm9wc2lze0FuIGludGVyZmFjZSB0byB0aGUgU1NMLXNwZWNpZmljIHBhcnRzIG9mIE9wZW5TU0x9Ci0KLVRoaXMgbW9kdWxlIGhhbmRsZXMgdGhpbmdzIHNwZWNpZmljIHRvIFNTTC4gVGhlcmUgYXJlIHR3byBvYmplY3RzIGRlZmluZWQ6Ci1Db250ZXh0LCBDb25uZWN0aW9uLgotCi1cYmVnaW57ZGF0YWRlc2N9e1NTTHYyX01FVEhPRH0KLVxkYXRhbGluZXtTU0x2M19NRVRIT0R9Ci1cZGF0YWxpbmV7U1NMdjIzX01FVEhPRH0KLVxkYXRhbGluZXtUTFN2MV9NRVRIT0R9Ci1UaGVzZSBjb25zdGFudHMgcmVwcmVzZW50IHRoZSBkaWZmZXJlbnQgU1NMIG1ldGhvZHMgdG8gdXNlIHdoZW4gY3JlYXRpbmcgYQotY29udGV4dCBvYmplY3QuCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e1ZFUklGWV9OT05FfQotXGRhdGFsaW5le1ZFUklGWV9QRUVSfQotXGRhdGFsaW5le1ZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVH0KLVRoZXNlIGNvbnN0YW50cyByZXByZXNlbnQgdGhlIHZlcmlmaWNhdGlvbiBtb2RlIHVzZWQgYnkgdGhlIENvbnRleHQKLW9iamVjdCdzIFxtZXRob2R7c2V0X3ZlcmlmeX0gbWV0aG9kLgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2RhdGFkZXNjfXtGSUxFVFlQRV9QRU19Ci1cZGF0YWxpbmV7RklMRVRZUEVfQVNOMX0KLUZpbGUgdHlwZSBjb25zdGFudHMgdXNlZCB3aXRoIHRoZSBcbWV0aG9ke3VzZV9jZXJ0aWZpY2F0ZV9maWxlfSBhbmQKLVxtZXRob2R7dXNlX3ByaXZhdGVrZXlfZmlsZX0gbWV0aG9kcyBvZiBDb250ZXh0IG9iamVjdHMuCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e09QX1NJTkdMRV9ESF9VU0V9Ci1cZGF0YWxpbmV7T1BfRVBIRU1FUkFMX1JTQX0KLVxkYXRhbGluZXtPUF9OT19TU0x2Mn0KLVxkYXRhbGluZXtPUF9OT19TU0x2M30KLVxkYXRhbGluZXtPUF9OT19UTFN2MX0KLVxkYXRhbGluZXtPUF9OT19USUNLRVR9Ci1cZGF0YWxpbmV7T1BfTk9fQ09NUFJFU1NJT059Ci1Db25zdGFudHMgdXNlZCB3aXRoIFxtZXRob2R7c2V0X29wdGlvbnN9IG9mIENvbnRleHQgb2JqZWN0cy4KLVxjb25zdGFudHtPUF9TSU5HTEVfREhfVVNFfSBtZWFucyB0byBhbHdheXMgY3JlYXRlIGEgbmV3IGtleSB3aGVuIHVzaW5nIGVwaGVtZXJhbAotRGlmZmllLUhlbGxtYW4uIFxjb25zdGFudHtPUF9FUEhFTUVSQUxfUlNBfSBtZWFucyB0byBhbHdheXMgdXNlIGVwaGVtZXJhbCBSU0Ega2V5cwotd2hlbiBkb2luZyBSU0Egb3BlcmF0aW9ucy4gXGNvbnN0YW50e09QX05PX1NTTHYyfSwgXGNvbnN0YW50e09QX05PX1NTTHYzfSBhbmQKLVxjb25zdGFudHtPUF9OT19UTFN2MX0gbWVhbnMgdG8gZGlzYWJsZSB0aG9zZSBzcGVjaWZpYyBwcm90b2NvbHMuIFRoaXMgaXMKLWludGVyZXN0aW5nIGlmIHlvdSdyZSB1c2luZyBlLmcuIFxjb25zdGFudHtTU0x2MjNfTUVUSE9EfSB0byBnZXQgYW4gU1NMdjItY29tcGF0aWJsZQotaGFuZHNoYWtlLCBidXQgZG9uJ3Qgd2FudCB0byB1c2UgU1NMdjIuCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e01PREVfTk9fQ09NUFJFU1NJT059Ci1Db25zdGFudCB1c2VkIHdpdGggXG1ldGhvZHtzZXRfbW9kZX0gb2YgQ29udGV4dCBvYmplY3RzIHRvIGRpc2FibGUgYXV0b21hdGljCi1jb21wcmVzc2lvbiBvZiBhcHBsaWNhdGlvbiB0cmFmZmljLgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2RhdGFkZXNjfXtTU0xFQVlfVkVSU0lPTn0KLVxkYXRhbGluZXtTU0xFQVlfQ0ZMQUdTfQotXGRhdGFsaW5le1NTTEVBWV9CVUlMVF9PTn0KLVxkYXRhbGluZXtTU0xFQVlfUExBVEZPUk19Ci1cZGF0YWxpbmV7U1NMRUFZX0RJUn0KLUNvbnN0YW50cyB1c2VkIHdpdGggXG1ldGhvZHtTU0xlYXlfdmVyc2lvbn0gdG8gc3BlY2lmeSB3aGF0IE9wZW5TU0wgdmVyc2lvbgotaW5mb3JtYXRpb24gdG8gcmV0cmlldmUuICBTZWUgdGhlIG1hbiBwYWdlIGZvciB0aGUgXGZ1bmN0aW9ue1NTTGVheV92ZXJzaW9ufSBDCi1BUEkgZm9yIGRldGFpbHMuCi1cZW5ke2RhdGFkZXNjfQotCi1cYmVnaW57ZGF0YWRlc2N9e09QRU5TU0xfVkVSU0lPTl9OVU1CRVJ9Ci1BbiBpbnRlZ2VyIGdpdmluZyB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIE9wZW5TU0wgbGlicmFyeSB1c2VkIHRvIGJ1aWxkIHRoaXMKLXZlcnNpb24gb2YgcHlPcGVuU1NMLiAgU2VlIHRoZSBtYW4gcGFnZSBmb3IgdGhlIFxmdW5jdGlvbntTU0xlYXlfdmVyc2lvbn0gQyBBUEkKLWZvciBkZXRhaWxzLgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2Z1bmNkZXNjfXtTU0xlYXlfdmVyc2lvbn17dHlwZX0KLVJldHJpZXZlIGEgc3RyaW5nIGRlc2NyaWJpbmcgc29tZSBhc3BlY3Qgb2YgdGhlIHVuZGVybHlpbmcgT3BlblNTTCB2ZXJzaW9uLiAgVGhlCi10eXBlIHBhc3NlZCBpbiBzaG91bGQgYmUgb25lIG9mIHRoZSBcY29uc3RhbnR7U1NMRUFZXyp9IGNvbnN0YW50cyBkZWZpbmVkIGluCi10aGlzIG1vZHVsZS4KLVxlbmR7ZnVuY2Rlc2N9Ci0KLVxiZWdpbntkYXRhZGVzY317Q29udGV4dFR5cGV9Ci1TZWUgXGNsYXNze0NvbnRleHR9LgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2NsYXNzZGVzY317Q29udGV4dH17bWV0aG9kfQotQSBjbGFzcyByZXByZXNlbnRpbmcgU1NMIGNvbnRleHRzLiAgQ29udGV4dHMgZGVmaW5lIHRoZSBwYXJhbWV0ZXJzIG9mIG9uZSBvcgotbW9yZSBTU0wgY29ubmVjdGlvbnMuCi0KLVx2YXJ7bWV0aG9kfSBzaG91bGQgYmUgXGNvbnN0YW50e1NTTHYyX01FVEhPRH0sIFxjb25zdGFudHtTU0x2M19NRVRIT0R9LAotXGNvbnN0YW50e1NTTHYyM19NRVRIT0R9IG9yIFxjb25zdGFudHtUTFN2MV9NRVRIT0R9LgotXGVuZHtjbGFzc2Rlc2N9Ci0KLVxiZWdpbntkYXRhZGVzY317Q29ubmVjdGlvblR5cGV9Ci1TZWUgXGNsYXNze0Nvbm5lY3Rpb259LgotXGVuZHtkYXRhZGVzY30KLQotXGJlZ2lue2NsYXNzZGVzY317Q29ubmVjdGlvbn17Y29udGV4dCwgc29ja2V0fQotQSBjbGFzcyByZXByZXNlbnRpbmcgU1NMIGNvbm5lY3Rpb25zLgotCi1cdmFye2NvbnRleHR9IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBcY2xhc3N7Q29udGV4dH0gYW5kIFx2YXJ7c29ja2V0fQotc2hvdWxkIGJlIGEgc29ja2V0IFxmb290bm90ZXtBY3R1YWxseSwgYWxsIHRoYXQgaXMgcmVxdWlyZWQgaXMgYW4gb2JqZWN0Ci10aGF0IFxlbXBoe2JlaGF2ZXN9IGxpa2UgYSBzb2NrZXQsIHlvdSBjb3VsZCBldmVuIHVzZSBmaWxlcywgZXZlbiB0aG91Z2gKLWl0J2QgYmUgdHJpY2t5IHRvIGdldCB0aGUgaGFuZHNoYWtlcyByaWdodCF9IG9iamVjdC4gIFx2YXJ7c29ja2V0fSBtYXkgYmUKLVx2YXJ7Tm9uZX07IGluIHRoaXMgY2FzZSwgdGhlIENvbm5lY3Rpb24gaXMgY3JlYXRlZCB3aXRoIGEgbWVtb3J5IEJJTzogc2VlCi10aGUgXG1ldGhvZHtiaW9fcmVhZH0sIFxtZXRob2R7YmlvX3dyaXRlfSwgYW5kIFxtZXRob2R7YmlvX3NodXRkb3dufQotbWV0aG9kcy4KLVxlbmR7Y2xhc3NkZXNjfQotCi1cYmVnaW57ZXhjZGVzY317RXJyb3J9Ci1UaGlzIGV4Y2VwdGlvbiBpcyB1c2VkIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlIG90aGVyIFNTTC1yZWxhdGVkCi1leGNlcHRpb25zLCBidXQgbWF5IGFsc28gYmUgcmFpc2VkIGRpcmVjdGx5LgotCi1XaGVuZXZlciB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZGlyZWN0bHksIGl0IGhhcyBhIGxpc3Qgb2YgZXJyb3IgbWVzc2FnZXMKLWZyb20gdGhlIE9wZW5TU0wgZXJyb3IgcXVldWUsIHdoZXJlIGVhY2ggaXRlbSBpcyBhIHR1cGxlIFxjb2RleyhcdmFye2xpYn0sCi1cdmFye2Z1bmN0aW9ufSwgXHZhcntyZWFzb259KX0uIEhlcmUgXHZhcntsaWJ9LCBcdmFye2Z1bmN0aW9ufSBhbmQgXHZhcntyZWFzb259Ci1hcmUgYWxsIHN0cmluZ3MsIGRlc2NyaWJpbmcgd2hlcmUgYW5kIHdoYXQgdGhlIHByb2JsZW0gaXMuIFNlZSBcbWFucGFnZXtlcnJ9ezN9Ci1mb3IgbW9yZSBpbmZvcm1hdGlvbi4KLVxlbmR7ZXhjZGVzY30KLQotXGJlZ2lue2V4Y2Rlc2N9e1plcm9SZXR1cm5FcnJvcn0KLVRoaXMgZXhjZXB0aW9uIG1hdGNoZXMgdGhlIGVycm9yIHJldHVybiBjb2RlIFxjb2Rle1NTTF9FUlJPUl9aRVJPX1JFVFVSTn0sIGFuZAotaXMgcmFpc2VkIHdoZW4gdGhlIFNTTCBDb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gSW4gU1NMIDMuMCBhbmQgVExTIDEuMCwgdGhpcwotb25seSBvY2N1cnMgaWYgYSBjbG9zdXJlIGFsZXJ0IGhhcyBvY2N1cnJlZCBpbiB0aGUgcHJvdG9jb2wsIGkuZS4gdGhlCi1jb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCBjbGVhbmx5LiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseQotbWVhbiB0aGF0IHRoZSB0cmFuc3BvcnQgbGF5ZXIgKGUuZy4gYSBzb2NrZXQpIGhhcyBiZWVuIGNsb3NlZC4KLQotSXQgbWF5IHNlZW0gYSBsaXR0bGUgc3RyYW5nZSB0aGF0IHRoaXMgaXMgYW4gZXhjZXB0aW9uLCBidXQgaXQgZG9lcyBtYXRjaCBhbgotXGNvZGV7U1NMX0VSUk9SfSBjb2RlLCBhbmQgaXMgdmVyeSBjb252ZW5pZW50LgotXGVuZHtleGNkZXNjfQotCi1cYmVnaW57ZXhjZGVzY317V2FudFJlYWRFcnJvcn0KLVRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZTsgdGhlIHNhbWUgSS9PIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGFnYWluCi1sYXRlciwgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMuIEFueSBJL08gbWV0aG9kIGNhbiBsZWFkIHRvIHRoaXMgc2luY2UgbmV3Ci1oYW5kc2hha2VzIGNhbiBvY2N1ciBhdCBhbnkgdGltZS4KLQotVGhlIHdhbnRlZCByZWFkIGlzIGZvciBcZW1waHtkaXJ0eX0gZGF0YSBzZW50IG92ZXIgdGhlIG5ldHdvcmssIG5vdCB0aGUKLVxlbXBoe2NsZWFufSBkYXRhIGluc2lkZSB0aGUgdHVubmVsLiAgRm9yIGEgc29ja2V0IGJhc2VkIFNTTCBjb25uZWN0aW9uLAotXGVtcGh7cmVhZH0gbWVhbnMgZGF0YSBjb21pbmcgYXQgdXMgb3ZlciB0aGUgbmV0d29yay4gIFVudGlsIHRoYXQgcmVhZAotc3VjY2VlZHMsIHRoZSBhdHRlbXB0ZWQgXG1ldGhvZHtPcGVuU1NMLlNTTC5Db25uZWN0aW9uLnJlY3Z9LAotXG1ldGhvZHtPcGVuU1NMLlNTTC5Db25uZWN0aW9uLnNlbmR9LCBvcgotXG1ldGhvZHtPcGVuU1NMLlNTTC5Db25uZWN0aW9uLmRvX2hhbmRzaGFrZX0gaXMgcHJldmVudGVkIG9yIGluY29tcGxldGUuIFlvdQotcHJvYmFibHkgd2FudCB0byBcbWV0aG9ke3NlbGVjdCgpfSBvbiB0aGUgc29ja2V0IGJlZm9yZSB0cnlpbmcgYWdhaW4uCi1cZW5ke2V4Y2Rlc2N9Ci0KLVxiZWdpbntleGNkZXNjfXtXYW50V3JpdGVFcnJvcn0KLVNlZSBcZXhjZXB0aW9ue1dhbnRSZWFkRXJyb3J9LiAgVGhlIHNvY2tldCBzZW5kIGJ1ZmZlciBtYXkgYmUgdG9vIGZ1bGwgdG8KLXdyaXRlIG1vcmUgZGF0YS4KLVxlbmR7ZXhjZGVzY30KLQotXGJlZ2lue2V4Y2Rlc2N9e1dhbnRYNTA5TG9va3VwRXJyb3J9Ci1UaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgYmVjYXVzZSBhbiBhcHBsaWNhdGlvbiBjYWxsYmFjayBoYXMgYXNrZWQgdG8gYmUKLWNhbGxlZCBhZ2Fpbi4gVGhlIEkvTyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBsYXRlciwgd2l0aCB0aGUgc2FtZQotYXJndW1lbnRzLiBOb3RlOiBUaGlzIHdvbid0IG9jY3VyIGluIHRoaXMgdmVyc2lvbiwgYXMgdGhlcmUgYXJlIG5vIHN1Y2gKLWNhbGxiYWNrcyBpbiB0aGlzIHZlcnNpb24uCi1cZW5ke2V4Y2Rlc2N9Ci0KLVxiZWdpbntleGNkZXNjfXtTeXNDYWxsRXJyb3J9Ci1UaGUgXGV4Y2VwdGlvbntTeXNDYWxsRXJyb3J9IG9jY3VycyB3aGVuIHRoZXJlJ3MgYW4gSS9PIGVycm9yIGFuZCBPcGVuU1NMJ3MKLWVycm9yIHF1ZXVlIGRvZXMgbm90IGNvbnRhaW4gYW55IGluZm9ybWF0aW9uLiBUaGlzIGNhbiBtZWFuIHR3byB0aGluZ3M6IEFuCi1lcnJvciBpbiB0aGUgdHJhbnNwb3J0IHByb3RvY29sLCBvciBhbiBlbmQgb2YgZmlsZSB0aGF0IHZpb2xhdGVzIHRoZSBwcm90b2NvbC4KLVRoZSBwYXJhbWV0ZXIgdG8gdGhlIGV4Y2VwdGlvbiBpcyBhbHdheXMgYSBwYWlyIFxjb2RleyhcdmFye2Vycm51bX0sCi1cdmFye2VycnN0cn0pfS4KLVxlbmR7ZXhjZGVzY30KLQotCi1cc3Vic3Vic2VjdGlvbntDb250ZXh0IG9iamVjdHMgXGxhYmVse29wZW5zc2wtY29udGV4dH19Ci0KLUNvbnRleHQgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotXGJlZ2lue21ldGhvZGRlc2N9W0NvbnRleHRde2NoZWNrX3ByaXZhdGVrZXl9e30KLUNoZWNrIGlmIHRoZSBwcml2YXRlIGtleSAobG9hZGVkIHdpdGggXG1ldGhvZHt1c2VfcHJpdmF0ZWtleVxvcHRpb25hbHtfZmlsZX19KQotbWF0Y2hlcyB0aGUgY2VydGlmaWNhdGUgKGxvYWRlZCB3aXRoIFxtZXRob2R7dXNlX2NlcnRpZmljYXRlXG9wdGlvbmFse19maWxlfX0pLgotUmV0dXJucyBcY29kZXtOb25lfSBpZiB0aGV5IG1hdGNoLCByYWlzZXMgXGV4Y2VwdGlvbntFcnJvcn0gb3RoZXJ3aXNlLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17Z2V0X2FwcF9kYXRhfXt9Ci1SZXRyaWV2ZSBhcHBsaWNhdGlvbiBkYXRhIGFzIHNldCBieSBcbWV0aG9ke3NldF9hcHBfZGF0YX0uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXtnZXRfY2VydF9zdG9yZX17fQotUmV0cmlldmUgdGhlIGNlcnRpZmljYXRlIHN0b3JlIChhIFg1MDlTdG9yZSBvYmplY3QpIHRoYXQgdGhlIGNvbnRleHQgdXNlcy4KLVRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkICJ0cnVzdGVkIiBjZXJ0aWZpY2F0ZXMgd2l0aG91dCB1c2luZyB0aGUuCi1cbWV0aG9ke2xvYWRfdmVyaWZ5X2xvY2F0aW9ucygpfSBtZXRob2QuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXtnZXRfdGltZW91dH17fQotUmV0cmlldmUgc2Vzc2lvbiB0aW1lb3V0LCBhcyBzZXQgYnkgXG1ldGhvZHtzZXRfdGltZW91dH0uIFRoZSBkZWZhdWx0IGlzIDMwMAotc2Vjb25kcy4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0NvbnRleHRde2dldF92ZXJpZnlfZGVwdGh9e30KLVJldHJpZXZlIHRoZSBDb250ZXh0IG9iamVjdCdzIHZlcmlmeSBkZXB0aCwgYXMgc2V0IGJ5Ci1cbWV0aG9ke3NldF92ZXJpZnlfZGVwdGh9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17Z2V0X3ZlcmlmeV9tb2RlfXt9Ci1SZXRyaWV2ZSB0aGUgQ29udGV4dCBvYmplY3QncyB2ZXJpZnkgbW9kZSwgYXMgc2V0IGJ5IFxtZXRob2R7c2V0X3ZlcmlmeX0uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXtsb2FkX2NsaWVudF9jYX17cGVtZmlsZX0KLVJlYWQgYSBmaWxlIHdpdGggUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZXMgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGNsaWVudAotd2hlbiByZXF1ZXN0aW5nIGEgY2xpZW50IGNlcnRpZmljYXRlLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17c2V0X2NsaWVudF9jYV9saXN0fXtjZXJ0aWZpY2F0ZV9hdXRob3JpdGllc30KLVJlcGxhY2UgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcmVmZXJyZWQgY2VydGlmaWNhdGUgc2lnbmVycyB0aGF0IHdvdWxkIGJlCi1zZW50IHRvIHRoZSBjbGllbnQgd2hlbiByZXF1ZXN0aW5nIGEgY2xpZW50IGNlcnRpZmljYXRlIHdpdGggdGhlCi1cdmFye2NlcnRpZmljYXRlX2F1dGhvcml0aWVzfSBzZXF1ZW5jZSBvZiBcY2xhc3N7T3BlblNTTC5jcnlwdG8uWDUwOU5hbWV9cy4KLQotXHZlcnNpb25hZGRlZHswLjEwfQotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17YWRkX2NsaWVudF9jYX17Y2VydGlmaWNhdGVfYXV0aG9yaXR5fQotRXh0cmFjdCBhIFxjbGFzc3tPcGVuU1NMLmNyeXB0by5YNTA5TmFtZX0gZnJvbSB0aGUgXHZhcntjZXJ0aWZpY2F0ZV9hdXRob3JpdHl9Ci1cY2xhc3N7T3BlblNTTC5jcnlwdG8uWDUwOX0gY2VydGlmaWNhdGUgYW5kIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBwcmVmZXJyZWQKLWNlcnRpZmljYXRlIHNpZ25lcnMgc2VudCB0byB0aGUgY2xpZW50IHdoZW4gcmVxdWVzdGluZyBhIGNsaWVudCBjZXJ0aWZpY2F0ZS4KLQotXHZlcnNpb25hZGRlZHswLjEwfQotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17bG9hZF92ZXJpZnlfbG9jYXRpb25zfXtwZW1maWxlLCBjYXBhdGh9Ci1TcGVjaWZ5IHdoZXJlIENBIGNlcnRpZmljYXRlcyBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzIGFyZSBsb2NhdGVkLiBUaGVzZQotYXJlIHRydXN0ZWQgY2VydGlmaWNhdGVzLiBOb3RlIHRoYXQgdGhlIGNlcnRpZmljYXRlcyBoYXZlIHRvIGJlIGluIFBFTQotZm9ybWF0LiAgSWYgY2FwYXRoIGlzIHBhc3NlZCwgaXQgbXVzdCBiZSBhIGRpcmVjdG9yeSBwcmVwYXJlZCB1c2luZyB0aGUKLVxjb2Rle2NfcmVoYXNofSB0b29sIGluY2x1ZGVkIHdpdGggT3BlblNTTC4gIEVpdGhlciwgYnV0IG5vdCBib3RoLCBvZgotXHZhcntwZW1maWxlfSBvciBcdmFye2NhcGF0aH0gbWF5IGJlIFxjb2Rle05vbmV9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17c2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzfXt9Ci1TcGVjaWZ5IHRoYXQgdGhlIHBsYXRmb3JtIHByb3ZpZGVkIENBIGNlcnRpZmljYXRlcyBhcmUgdG8gYmUgdXNlZCBmb3IKLXZlcmlmaWNhdGlvbiBwdXJwb3Nlcy4gIFRoaXMgbWV0aG9kIG1heSBub3Qgd29yayBwcm9wZXJseSBvbiBPUyBYLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17bG9hZF90bXBfZGh9e2RoZmlsZX0KLUxvYWQgcGFyYW1ldGVycyBmb3IgRXBoZW1lcmFsIERpZmZpZS1IZWxsbWFuIGZyb20gXHZhcntkaGZpbGV9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17c2V0X2FwcF9kYXRhfXtkYXRhfQotQXNzb2NpYXRlIFx2YXJ7ZGF0YX0gd2l0aCB0aGlzIENvbnRleHQgb2JqZWN0LiBcdmFye2RhdGF9IGNhbiBiZSByZXRyaWV2ZWQKLWxhdGVyIHVzaW5nIHRoZSBcbWV0aG9ke2dldF9hcHBfZGF0YX0gbWV0aG9kLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17c2V0X2NpcGhlcl9saXN0fXtjaXBoZXJzfQotU2V0IHRoZSBsaXN0IG9mIGNpcGhlcnMgdG8gYmUgdXNlZCBpbiB0aGlzIGNvbnRleHQuIFNlZSB0aGUgT3BlblNTTCBtYW51YWwgZm9yCi1tb3JlIGluZm9ybWF0aW9uIChlLmcuIGNpcGhlcnMoMSkpCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXtzZXRfaW5mb19jYWxsYmFja317Y2FsbGJhY2t9Ci1TZXQgdGhlIGluZm9ybWF0aW9uIGNhbGxiYWNrIHRvIFx2YXJ7Y2FsbGJhY2t9LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCi1mcm9tIHRpbWUgdG8gdGltZSBkdXJpbmcgU1NMIGhhbmRzaGFrZXMuCi1cdmFye2NhbGxiYWNrfSBzaG91bGQgdGFrZSB0aHJlZSBhcmd1bWVudHM6IGEgQ29ubmVjdGlvbiBvYmplY3QgYW5kIHR3bwotaW50ZWdlcnMuIFRoZSBmaXJzdCBpbnRlZ2VyIHNwZWNpZmllcyB3aGVyZSBpbiB0aGUgU1NMIGhhbmRzaGFrZSB0aGUgZnVuY3Rpb24KLXdhcyBjYWxsZWQsIGFuZCB0aGUgb3RoZXIgdGhlIHJldHVybiBjb2RlIGZyb20gYSAocG9zc2libHkgZmFpbGVkKSBpbnRlcm5hbAotZnVuY3Rpb24gY2FsbC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0NvbnRleHRde3NldF9vcHRpb25zfXtvcHRpb25zfQotQWRkIFNTTCBvcHRpb25zLiBPcHRpb25zIHlvdSBoYXZlIHNldCBiZWZvcmUgYXJlIG5vdCBjbGVhcmVkIQotVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGUgXGNvbnN0YW50e09QXyp9IGNvbnN0YW50cy4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0NvbnRleHRde3NldF9tb2RlfXttb2RlfQotQWRkIFNTTCBtb2RlLiBNb2RlcyB5b3UgaGF2ZSBzZXQgYmVmb3JlIGFyZSBub3QgY2xlYXJlZCEKLVRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIHdpdGggdGhlIFxjb25zdGFudHtNT0RFXyp9IGNvbnN0YW50cy4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0NvbnRleHRde3NldF9wYXNzd2RfY2J9e2NhbGxiYWNrXG9wdGlvbmFseywgdXNlcmRhdGF9fQotU2V0IHRoZSBwYXNzcGhyYXNlIGNhbGxiYWNrIHRvIFx2YXJ7Y2FsbGJhY2t9LiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCi13aGVuIGEgcHJpdmF0ZSBrZXkgd2l0aCBhIHBhc3NwaHJhc2UgaXMgbG9hZGVkLiBcdmFye2NhbGxiYWNrfSBtdXN0IGFjY2VwdAotdGhyZWUgcG9zaXRpb25hbCBhcmd1bWVudHMuICBGaXJzdCwgYW4gaW50ZWdlciBnaXZpbmcgdGhlIG1heGltdW0gbGVuZ3RoIG9mCi10aGUgcGFzc3BocmFzZSBpdCBtYXkgcmV0dXJuLiAgSWYgdGhlIHJldHVybmVkIHBhc3NwaHJhc2UgaXMgbG9uZ2VyIHRoYW4KLXRoaXMsIGl0IHdpbGwgYmUgdHJ1bmNhdGVkLiAgU2Vjb25kLCBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggd2lsbCBiZSB0cnVlIGlmCi10aGUgdXNlciBzaG91bGQgYmUgcHJvbXB0ZWQgZm9yIHRoZSBwYXNzcGhyYXNlIHR3aWNlIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxkCi12ZXJpZnkgdGhhdCB0aGUgdHdvIHZhbHVlcyBzdXBwbGllZCBhcmUgZXF1YWwuIFRoaXJkLCB0aGUgdmFsdWUgZ2l2ZW4gYXMgdGhlCi1cdmFye3VzZXJkYXRhfSBwYXJhbWV0ZXIgdG8gXG1ldGhvZHtzZXRfcGFzc3dkX2NifS4gIElmIGFuIGVycm9yIG9jY3VycywKLVx2YXJ7Y2FsbGJhY2t9IHNob3VsZCByZXR1cm4gYSBmYWxzZSB2YWx1ZSAoZS5nLiBhbiBlbXB0eSBzdHJpbmcpLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17c2V0X3Nlc3Npb25faWR9e25hbWV9Ci1TZXQgdGhlIGNvbnRleHQgXHZhcntuYW1lfSB3aXRoaW4gd2hpY2ggYSBzZXNzaW9uIGNhbiBiZSByZXVzZWQgZm9yIHRoaXMKLUNvbnRleHQgb2JqZWN0LiBUaGlzIGlzIG5lZWRlZCB3aGVuIGRvaW5nIHNlc3Npb24gcmVzdW1wdGlvbiwgYmVjYXVzZSB0aGVyZSBpcwotbm8gd2F5IGZvciBhIHN0b3JlZCBzZXNzaW9uIHRvIGtub3cgd2hpY2ggQ29udGV4dCBvYmplY3QgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLgotXHZhcntuYW1lfSBtYXkgYmUgYW55IGJpbmFyeSBkYXRhLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17c2V0X3RpbWVvdXR9e3RpbWVvdXR9Ci1TZXQgdGhlIHRpbWVvdXQgZm9yIG5ld2x5IGNyZWF0ZWQgc2Vzc2lvbnMgZm9yIHRoaXMgQ29udGV4dCBvYmplY3QgdG8KLVx2YXJ7dGltZW91dH0uIFx2YXJ7dGltZW91dH0gbXVzdCBiZSBnaXZlbiBpbiAod2hvbGUpIHNlY29uZHMuIFRoZSBkZWZhdWx0Ci12YWx1ZSBpcyAzMDAgc2Vjb25kcy4gU2VlIHRoZSBPcGVuU1NMIG1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbiAoZS5nLgotU1NMX0NUWF9zZXRfdGltZW91dCgzKSkuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXtzZXRfdmVyaWZ5fXttb2RlLCBjYWxsYmFja30KLVNldCB0aGUgdmVyaWZpY2F0aW9uIGZsYWdzIGZvciB0aGlzIENvbnRleHQgb2JqZWN0IHRvIFx2YXJ7bW9kZX0gYW5kIHNwZWNpZnkKLXRoYXQgXHZhcntjYWxsYmFja30gc2hvdWxkIGJlIHVzZWQgZm9yIHZlcmlmaWNhdGlvbiBjYWxsYmFja3MuIFx2YXJ7bW9kZX0KLXNob3VsZCBiZSBvbmUgb2YgXGNvbnN0YW50e1ZFUklGWV9OT05FfSBhbmQgXGNvbnN0YW50e1ZFUklGWV9QRUVSfS4gSWYKLVxjb25zdGFudHtWRVJJRllfUEVFUn0gaXMgdXNlZCwgXHZhcnttb2RlfSBjYW4gYmUgT1I6ZWQgd2l0aAotXGNvbnN0YW50e1ZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVH0gYW5kIFxjb25zdGFudHtWRVJJRllfQ0xJRU5UX09OQ0V9IHRvCi1mdXJ0aGVyIGNvbnRyb2wgdGhlIGJlaGF2aW91ci4KLVx2YXJ7Y2FsbGJhY2t9IHNob3VsZCB0YWtlIGZpdmUgYXJndW1lbnRzOiBBIENvbm5lY3Rpb24gb2JqZWN0LCBhbiBYNTA5IG9iamVjdCwKLWFuZCB0aHJlZSBpbnRlZ2VyIHZhcmlhYmxlcywgd2hpY2ggYXJlIGluIHR1cm4gcG90ZW50aWFsIGVycm9yIG51bWJlciwgZXJyb3IKLWRlcHRoIGFuZCByZXR1cm4gY29kZS4gXHZhcntjYWxsYmFja30gc2hvdWxkIHJldHVybiB0cnVlIGlmIHZlcmlmaWNhdGlvbiBwYXNzZXMKLWFuZCBmYWxzZSBvdGhlcndpc2UuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXtzZXRfdmVyaWZ5X2RlcHRofXtkZXB0aH0KLVNldCB0aGUgbWF4aW11bSBkZXB0aCBmb3IgdGhlIGNlcnRpZmljYXRlIGNoYWluIHZlcmlmaWNhdGlvbiB0aGF0IHNoYWxsIGJlCi1hbGxvd2VkIGZvciB0aGlzIENvbnRleHQgb2JqZWN0LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17dXNlX2NlcnRpZmljYXRlfXtjZXJ0fQotVXNlIHRoZSBjZXJ0aWZpY2F0ZSBcdmFye2NlcnR9IHdoaWNoIGhhcyB0byBiZSBhIFg1MDkgb2JqZWN0LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17YWRkX2V4dHJhX2NoYWluX2NlcnR9e2NlcnR9Ci1BZGRzIHRoZSBjZXJ0aWZpY2F0ZSBcdmFye2NlcnR9LCB3aGljaCBoYXMgdG8gYmUgYSBYNTA5IG9iamVjdCwgdG8gdGhlCi1jZXJ0aWZpY2F0ZSBjaGFpbiBwcmVzZW50ZWQgdG9nZXRoZXIgd2l0aCB0aGUgY2VydGlmaWNhdGUuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXt1c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZX17ZmlsZX0KLUxvYWQgYSBjZXJ0aWZpY2F0ZSBjaGFpbiBmcm9tIFx2YXJ7ZmlsZX0gd2hpY2ggbXVzdCBiZSBQRU0gZW5jb2RlZC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0NvbnRleHRde3VzZV9wcml2YXRla2V5fXtwa2V5fQotVXNlIHRoZSBwcml2YXRlIGtleSBcdmFye3BrZXl9IHdoaWNoIGhhcyB0byBiZSBhIFBLZXkgb2JqZWN0LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17dXNlX2NlcnRpZmljYXRlX2ZpbGV9e2ZpbGVcb3B0aW9uYWx7LCBmb3JtYXR9fQotTG9hZCB0aGUgZmlyc3QgY2VydGlmaWNhdGUgZm91bmQgaW4gXHZhcntmaWxlfS4gVGhlIGNlcnRpZmljYXRlIG11c3QgYmUgaW4gdGhlCi1mb3JtYXQgc3BlY2lmaWVkIGJ5IFx2YXJ7Zm9ybWF0fSwgd2hpY2ggaXMgZWl0aGVyIFxjb25zdGFudHtGSUxFVFlQRV9QRU19IG9yCi1cY29uc3RhbnR7RklMRVRZUEVfQVNOMX0uIFRoZSBkZWZhdWx0IGlzIFxjb25zdGFudHtGSUxFVFlQRV9QRU19LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29udGV4dF17dXNlX3ByaXZhdGVrZXlfZmlsZX17ZmlsZVxvcHRpb25hbHssIGZvcm1hdH19Ci1Mb2FkIHRoZSBmaXJzdCBwcml2YXRlIGtleSBmb3VuZCBpbiBcdmFye2ZpbGV9LiBUaGUgcHJpdmF0ZSBrZXkgbXVzdCBiZSBpbiB0aGUKLWZvcm1hdCBzcGVjaWZpZWQgYnkgXHZhcntmb3JtYXR9LCB3aGljaCBpcyBlaXRoZXIgXGNvbnN0YW50e0ZJTEVUWVBFX1BFTX0gb3IKLVxjb25zdGFudHtGSUxFVFlQRV9BU04xfS4gVGhlIGRlZmF1bHQgaXMgXGNvbnN0YW50e0ZJTEVUWVBFX1BFTX0uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb250ZXh0XXtzZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2t9e2NhbGxiYWNrfQotU3BlY2lmeSBhIG9uZS1hcmd1bWVudCBjYWxsYWJsZSB0byB1c2UgYXMgdGhlIFRMUyBleHRlbnNpb24gc2VydmVyIG5hbWUKLWNhbGxiYWNrLiAgV2hlbiBhIGNvbm5lY3Rpb24gdXNpbmcgdGhlIHNlcnZlciBuYW1lIGV4dGVuc2lvbiBpcyBtYWRlIHVzaW5nIHRoaXMKLWNvbnRleHQsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgXGNvZGV7Q29ubmVjdGlvbn0gaW5zdGFuY2UuCi1cdmVyc2lvbmFkZGVkezAuMTN9Ci1cZW5ke21ldGhvZGRlc2N9Ci0KLVxzdWJzdWJzZWN0aW9ue0Nvbm5lY3Rpb24gb2JqZWN0cyBcbGFiZWx7b3BlbnNzbC1jb25uZWN0aW9ufX0KLQotQ29ubmVjdGlvbiBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17YWNjZXB0fXt9Ci1DYWxsIHRoZSBcbWV0aG9ke2FjY2VwdH0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBhbmQgc2V0IHVwIFNTTCBvbiB0aGUKLXJldHVybmVkIHNvY2tldCwgdXNpbmcgdGhlIENvbnRleHQgb2JqZWN0IHN1cHBsaWVkIHRvIHRoaXMgQ29ubmVjdGlvbiBvYmplY3QgYXQKLWNyZWF0aW9uLiBSZXR1cm5zIGEgcGFpciBcY29kZXsoXHZhcntjb25ufSwgXHZhcnthZGRyZXNzfSl9LiB3aGVyZSBcdmFye2Nvbm59Ci1pcyB0aGUgbmV3IENvbm5lY3Rpb24gb2JqZWN0IGNyZWF0ZWQsIGFuZCBcdmFye2FkZHJlc3N9IGlzIGFzIHJldHVybmVkIGJ5IHRoZQotc29ja2V0J3MgXG1ldGhvZHthY2NlcHR9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17YmluZH17YWRkcmVzc30KLUNhbGwgdGhlIFxtZXRob2R7YmluZH0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de2Nsb3NlfXt9Ci1DYWxsIHRoZSBcbWV0aG9ke2Nsb3NlfSBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LiBOb3RlOiBJZiB5b3Ugd2FudAotY29ycmVjdCBTU0wgY2xvc3VyZSwgeW91IG5lZWQgdG8gY2FsbCB0aGUgXG1ldGhvZHtzaHV0ZG93bn0gbWV0aG9kIGZpcnN0LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17Y29ubmVjdH17YWRkcmVzc30KLUNhbGwgdGhlIFxtZXRob2R7Y29ubmVjdH0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBhbmQgc2V0IHVwIFNTTCBvbiB0aGUKLXNvY2tldCwgdXNpbmcgdGhlIENvbnRleHQgb2JqZWN0IHN1cHBsaWVkIHRvIHRoaXMgQ29ubmVjdGlvbiBvYmplY3QgYXQKLWNyZWF0aW9uLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17Y29ubmVjdF9leH17YWRkcmVzc30KLUNhbGwgdGhlIFxtZXRob2R7Y29ubmVjdF9leH0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBhbmQgc2V0IHVwIFNTTCBvbgotdGhlIHNvY2tldCwgdXNpbmcgdGhlIENvbnRleHQgb2JqZWN0IHN1cHBsaWVkIHRvIHRoaXMgQ29ubmVjdGlvbiBvYmplY3QgYXQKLWNyZWF0aW9uLiBOb3RlIHRoYXQgaWYgdGhlIFxtZXRob2R7Y29ubmVjdF9leH0gbWV0aG9kIG9mIHRoZSBzb2NrZXQgZG9lc24ndAotcmV0dXJuIDAsIFNTTCB3b24ndCBiZSBpbml0aWFsaXplZC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de2RvX2hhbmRzaGFrZX17fQotUGVyZm9ybSBhbiBTU0wgaGFuZHNoYWtlICh1c3VhbGx5IGNhbGxlZCBhZnRlciBcbWV0aG9ke3JlbmVnb3RpYXRlfSBvciBvbmUgb2YKLVxtZXRob2R7c2V0X2FjY2VwdF9zdGF0ZX0gb3IgXG1ldGhvZHtzZXRfYWNjZXB0X3N0YXRlfSkuIFRoaXMgY2FuIHJhaXNlIHRoZQotc2FtZSBleGNlcHRpb25zIGFzIFxtZXRob2R7c2VuZH0gYW5kIFxtZXRob2R7cmVjdn0uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtmaWxlbm99e30KLVJldHJpZXZlIHRoZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyIGZvciB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtsaXN0ZW59e2JhY2tsb2d9Ci1DYWxsIHRoZSBcbWV0aG9ke2xpc3Rlbn0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de2dldF9hcHBfZGF0YX17fQotUmV0cmlldmUgYXBwbGljYXRpb24gZGF0YSBhcyBzZXQgYnkgXG1ldGhvZHtzZXRfYXBwX2RhdGF9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17Z2V0X2NpcGhlcl9saXN0fXt9Ci1SZXRyaWV2ZSB0aGUgbGlzdCBvZiBjaXBoZXJzIHVzZWQgYnkgdGhlIENvbm5lY3Rpb24gb2JqZWN0LiBXQVJOSU5HOiBUaGlzIEFQSQotaGFzIGNoYW5nZWQuIEl0IHVzZWQgdG8gdGFrZSBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgYW5kIGp1c3QgcmV0dXJuIGEgc3RyaW5nLAotYnV0IG5vdCBpdCByZXR1cm5zIHRoZSBlbnRpcmUgbGlzdCBpbiBvbmUgZ28uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtnZXRfY2xpZW50X2NhX2xpc3R9e30KLVJldHJpZXZlIHRoZSBsaXN0IG9mIHByZWZlcnJlZCBjbGllbnQgY2VydGlmaWNhdGUgaXNzdWVycyBzZW50IGJ5IHRoZSBzZXJ2ZXIKLWFzIFxjbGFzc3tPcGVuU1NMLmNyeXB0by5YNTA5TmFtZX0gb2JqZWN0cy4KLQotSWYgdGhpcyBpcyBhIGNsaWVudCBcY2xhc3N7Q29ubmVjdGlvbn0sIHRoZSBsaXN0IHdpbGwgYmUgZW1wdHkgdW50aWwgdGhlCi1jb25uZWN0aW9uIHdpdGggdGhlIHNlcnZlciBpcyBlc3RhYmxpc2hlZC4KLQotSWYgdGhpcyBpcyBhIHNlcnZlciBcY2xhc3N7Q29ubmVjdGlvbn0sIHJldHVybiB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZQotYXV0aG9yaXRpZXMgdGhhdCB3aWxsIGJlIHNlbnQgb3IgaGFzIGJlZW4gc2VudCB0byB0aGUgY2xpZW50LCBhcyBjb250cm9sbGVkCi1ieSB0aGlzIFxjbGFzc3tDb25uZWN0aW9ufSdzIFxjbGFzc3tDb250ZXh0fS4KLQotXHZlcnNpb25hZGRlZHswLjEwfQotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17Z2V0X2NvbnRleHR9e30KLVJldHJpZXZlIHRoZSBDb250ZXh0IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBDb25uZWN0aW9uLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c2V0X2NvbnRleHR9e2NvbnRleHR9Ci1TcGVjaWZ5IGEgcmVwbGFjZW1lbnQgQ29udGV4dCBvYmplY3QgZm9yIHRoaXMgQ29ubmVjdGlvbi4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de2dldF9wZWVyX2NlcnRpZmljYXRlfXt9Ci1SZXRyaWV2ZSB0aGUgb3RoZXIgc2lkZSdzIGNlcnRpZmljYXRlIChpZiBhbnkpCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtnZXRfcGVlcl9jZXJ0X2NoYWlufXt9Ci1SZXRyaWV2ZSB0aGUgdHVwbGUgb2YgdGhlIG90aGVyIHNpZGUncyBjZXJ0aWZpY2F0ZSBjaGFpbiAoaWYgYW55KQotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17Z2V0cGVlcm5hbWV9e30KLUNhbGwgdGhlIFxtZXRob2R7Z2V0cGVlcm5hbWV9IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtnZXRzb2NrbmFtZX17fQotQ2FsbCB0aGUgXG1ldGhvZHtnZXRzb2NrbmFtZX0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de2dldHNvY2tvcHR9e2xldmVsLCBvcHRuYW1lXG9wdGlvbmFseywgYnVmbGVufX0KLUNhbGwgdGhlIFxtZXRob2R7Z2V0c29ja29wdH0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3BlbmRpbmd9e30KLVJldHJpZXZlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgc2FmZWx5IHJlYWQgZnJvbSB0aGUgU1NMIGJ1ZmZlcgotKFxlbXBoe25vdH0gdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IGJ1ZmZlcikuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtyZWN2fXtidWZzaXplfQotUmVjZWl2ZSBkYXRhIGZyb20gdGhlIENvbm5lY3Rpb24uIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQotZGF0YSByZWNlaXZlZC4gVGhlIG1heGltdW0gYW1vdW50IG9mIGRhdGEgdG8gYmUgcmVjZWl2ZWQgYXQgb25jZSwgaXMgc3BlY2lmaWVkCi1ieSBcdmFye2J1ZnNpemV9LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17YmlvX3dyaXRlfXtieXRlc30KLUlmIHRoZSBDb25uZWN0aW9uIHdhcyBjcmVhdGVkIHdpdGggYSBtZW1vcnkgQklPLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBhZGQKLWJ5dGVzIHRvIHRoZSByZWFkIGVuZCBvZiB0aGF0IG1lbW9yeSBCSU8uICBUaGUgQ29ubmVjdGlvbiBjYW4gdGhlbiByZWFkIHRoZQotYnl0ZXMgKGZvciBleGFtcGxlLCBpbiByZXNwb25zZSB0byBhIGNhbGwgdG8gXG1ldGhvZHtyZWN2fSkuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtyZW5lZ290aWF0ZX17fQotUmVuZWdvdGlhdGUgdGhlIFNTTCBzZXNzaW9uLiBDYWxsIHRoaXMgaWYgeW91IHdpc2ggdG8gY2hhbmdlIGNpcGhlciBzdWl0ZXMgb3IKLWFueXRoaW5nIGxpa2UgdGhhdC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3NlbmR9e3N0cmluZ30KLVNlbmQgdGhlIFx2YXJ7c3RyaW5nfSBkYXRhIHRvIHRoZSBDb25uZWN0aW9uLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17YmlvX3JlYWR9e2J1ZnNpemV9Ci1JZiB0aGUgQ29ubmVjdGlvbiB3YXMgY3JlYXRlZCB3aXRoIGEgbWVtb3J5IEJJTywgdGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8KLXJlYWQgYnl0ZXMgZnJvbSB0aGUgd3JpdGUgZW5kIG9mIHRoYXQgbWVtb3J5IEJJTy4gIE1hbnkgQ29ubmVjdGlvbiBtZXRob2RzIHdpbGwKLWFkZCBieXRlcyB3aGljaCBtdXN0IGJlIHJlYWQgaW4gdGhpcyBtYW5uZXIgb3IgdGhlIGJ1ZmZlciB3aWxsIGV2ZW50dWFsbHkgZmlsbAotdXAgYW5kIHRoZSBDb25uZWN0aW9uIHdpbGwgYmUgYWJsZSB0byB0YWtlIG5vIGZ1cnRoZXIgYWN0aW9ucy4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3NlbmRhbGx9e3N0cmluZ30KLVNlbmQgYWxsIG9mIHRoZSBcdmFye3N0cmluZ30gZGF0YSB0byB0aGUgQ29ubmVjdGlvbi4gVGhpcyBjYWxscyBcbWV0aG9ke3NlbmR9Ci1yZXBlYXRlZGx5IHVudGlsIGFsbCBkYXRhIGlzIHNlbnQuIElmIGFuIGVycm9yIG9jY3VycywgaXQncyBpbXBvc3NpYmxlIHRvIHRlbGwKLWhvdyBtdWNoIGRhdGEgaGFzIGJlZW4gc2VudC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3NldF9hY2NlcHRfc3RhdGV9e30KLVNldCB0aGUgY29ubmVjdGlvbiB0byB3b3JrIGluIHNlcnZlciBtb2RlLiBUaGUgaGFuZHNoYWtlIHdpbGwgYmUgaGFuZGxlZAotYXV0b21hdGljYWxseSBieSByZWFkL3dyaXRlLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c2V0X2FwcF9kYXRhfXtkYXRhfQotQXNzb2NpYXRlIFx2YXJ7ZGF0YX0gd2l0aCB0aGlzIENvbm5lY3Rpb24gb2JqZWN0LiBcdmFye2RhdGF9IGNhbiBiZSByZXRyaWV2ZWQKLWxhdGVyIHVzaW5nIHRoZSBcbWV0aG9ke2dldF9hcHBfZGF0YX0gbWV0aG9kLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c2V0X2Nvbm5lY3Rfc3RhdGV9e30KLVNldCB0aGUgY29ubmVjdGlvbiB0byB3b3JrIGluIGNsaWVudCBtb2RlLiBUaGUgaGFuZHNoYWtlIHdpbGwgYmUgaGFuZGxlZAotYXV0b21hdGljYWxseSBieSByZWFkL3dyaXRlLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c2V0YmxvY2tpbmd9e2ZsYWd9Ci1DYWxsIHRoZSBcbWV0aG9ke3NldGJsb2NraW5nfSBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c2V0c29ja29wdH17bGV2ZWwsIG9wdG5hbWUsIHZhbHVlfQotQ2FsbCB0aGUgXG1ldGhvZHtzZXRzb2Nrb3B0fSBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c2h1dGRvd259e30KLVNlbmQgdGhlIHNodXRkb3duIG1lc3NhZ2UgdG8gdGhlIENvbm5lY3Rpb24uIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2h1dGRvd24KLW1lc3NhZ2UgZXhjaGFuZ2UgaXMgY29tcGxldGVkIGFuZCBmYWxzZSBvdGhlcndpc2UgKGluIHdoaWNoIGNhc2UgeW91IGNhbGwKLVxtZXRob2R7cmVjdigpfSBvciBcbWV0aG9ke3NlbmQoKX0gd2hlbiB0aGUgY29ubmVjdGlvbiBiZWNvbWVzCi1yZWFkYWJsZS93cml0ZWFibGUuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtnZXRfc2h1dGRvd259e30KLUdldCB0aGUgc2h1dGRvd24gc3RhdGUgb2YgdGhlIENvbm5lY3Rpb24uICBSZXR1cm5zIGEgYml0dmVjdG9yIG9mIGVpdGhlciBvcgotYm90aCBvZiBcdmFye1NFTlRfU0hVVERPV059IGFuZCBcdmFye1JFQ0VJVkVEX1NIVVRET1dOfS4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3NldF9zaHV0ZG93bn17c3RhdGV9Ci1TZXQgdGhlIHNodXRkb3duIHN0YXRlIG9mIHRoZSBDb25uZWN0aW9uLiAgXHZhcntzdGF0ZX0gaXMgYSBiaXR2ZWN0b3Igb2YKLWVpdGhlciBvciBib3RoIG9mIFx2YXJ7U0VOVF9TSFVURE9XTn0gYW5kIFx2YXJ7UkVDRUlWRURfU0hVVERPV059LgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c29ja19zaHV0ZG93bn17aG93fQotQ2FsbCB0aGUgXG1ldGhvZHtzaHV0ZG93bn0gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de2Jpb19zaHV0ZG93bn17fQotSWYgdGhlIENvbm5lY3Rpb24gd2FzIGNyZWF0ZWQgd2l0aCBhIG1lbW9yeSBCSU8sIHRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvCi1pbmRpY2F0ZSB0aGF0IGBgZW5kIG9mIGZpbGUnJyBoYXMgYmVlbiByZWFjaGVkIG9uIHRoZSByZWFkIGVuZCBvZiB0aGF0IG1lbW9yeQotQklPLgotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17c3RhdGVfc3RyaW5nfXt9Ci1SZXRyaWV2ZSBhIHZlcmJvc2Ugc3RyaW5nIGRldGFpbGluZyB0aGUgc3RhdGUgb2YgdGhlIENvbm5lY3Rpb24uCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtjbGllbnRfcmFuZG9tfXt9Ci1SZXRyaWV2ZSB0aGUgcmFuZG9tIHZhbHVlIHVzZWQgd2l0aCB0aGUgY2xpZW50IGhlbGxvIG1lc3NhZ2UuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXtzZXJ2ZXJfcmFuZG9tfXt9Ci1SZXRyaWV2ZSB0aGUgcmFuZG9tIHZhbHVlIHVzZWQgd2l0aCB0aGUgc2VydmVyIGhlbGxvIG1lc3NhZ2UuCi1cZW5ke21ldGhvZGRlc2N9Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtDb25uZWN0aW9uXXttYXN0ZXJfa2V5fXt9Ci1SZXRyaWV2ZSB0aGUgdmFsdWUgb2YgdGhlIG1hc3RlciBrZXkgZm9yIHRoaXMgc2Vzc2lvbi4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3dhbnRfcmVhZH17fQotQ2hlY2tzIGlmIG1vcmUgZGF0YSBoYXMgdG8gYmUgcmVhZCBmcm9tIHRoZSB0cmFuc3BvcnQgbGF5ZXIgdG8gY29tcGxldGUgYW4KLW9wZXJhdGlvbi4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3dhbnRfd3JpdGV9e30KLUNoZWNrcyBpZiB0aGVyZSBpcyBkYXRhIHRvIHdyaXRlIHRvIHRoZSB0cmFuc3BvcnQgbGF5ZXIgdG8gY29tcGxldGUgYW4KLW9wZXJhdGlvbi4KLVxlbmR7bWV0aG9kZGVzY30KLQotXGJlZ2lue21ldGhvZGRlc2N9W0Nvbm5lY3Rpb25de3NldF90bHNleHRfaG9zdF9uYW1lfXtuYW1lfQotU3BlY2lmeSB0aGUgYnl0ZSBzdHJpbmcgdG8gc2VuZCBhcyB0aGUgc2VydmVyIG5hbWUgaW4gdGhlIGNsaWVudCBoZWxsbyBtZXNzYWdlLgotXHZlcnNpb25hZGRlZHswLjEzfQotXGVuZHttZXRob2RkZXNjfQotCi1cYmVnaW57bWV0aG9kZGVzY31bQ29ubmVjdGlvbl17Z2V0X3NlcnZlcm5hbWV9e30KLUdldCB0aGUgdmFsdWUgb2YgdGhlIHNlcnZlciBuYW1lIHJlY2VpdmVkIGluIHRoZSBjbGllbnQgaGVsbG8gbWVzc2FnZS4KLVx2ZXJzaW9uYWRkZWR7MC4xM30KLVxlbmR7bWV0aG9kZGVzY30KLQotCi0KLVxzZWN0aW9ue0ludGVybmFscyBcbGFiZWx7aW50ZXJuYWxzfX0KLQotV2UgcmFuIGludG8gdGhyZWUgbWFpbiBwcm9ibGVtcyBkZXZlbG9waW5nIHRoaXM6IEV4Y2VwdGlvbnMsIGNhbGxiYWNrcyBhbmQKLWFjY2Vzc2luZyBzb2NrZXQgbWV0aG9kcy4gVGhpcyBpcyB3aGF0IHRoaXMgY2hhcHRlciBpcyBhYm91dC4KLQotXHN1YnNlY3Rpb257RXhjZXB0aW9ucyBcbGFiZWx7ZXhjZXB0aW9uc319Ci0KLVdlIHJlYWxpemVkIGVhcmx5IHRoYXQgbW9zdCBvZiB0aGUgZXhjZXB0aW9ucyB3b3VsZCBiZSByYWlzZWQgYnkgdGhlIEkvTwotZnVuY3Rpb25zIG9mIE9wZW5TU0wsIHNvIGl0IGZlbHQgbmF0dXJhbCB0byBtaW1pYyBPcGVuU1NMJ3MgZXJyb3IgY29kZSBzeXN0ZW0sCi10cmFuc2xhdGluZyB0aGVtIGludG8gUHl0aG9uIGV4Y2VwdGlvbnMuIFRoaXMgbmF0dXJhbGx5IGdpdmVzIHVzIHRoZSBleGNlcHRpb25zCi1cZXhjZXB0aW9ue1NTTC5aZXJvUmV0dXJuRXJyb3J9LCBcZXhjZXB0aW9ue1NTTC5XYW50UmVhZEVycm9yfSwKLVxleGNlcHRpb257U1NMLldhbnRXcml0ZUVycm9yfSwgXGV4Y2VwdGlvbntTU0wuV2FudFg1MDlMb29rdXBFcnJvcn0gYW5kCi1cZXhjZXB0aW9ue1NTTC5TeXNDYWxsRXJyb3J9LgotCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzLCBzZWUgc2VjdGlvbiBccmVme29wZW5zc2wtc3NsfS4KLQotCi1cc3Vic2VjdGlvbntDYWxsYmFja3MgXGxhYmVse2NhbGxiYWNrc319Ci0KLVRoZXJlIGFyZSBhIG51bWJlciBvZiBwcm9ibGVtcyB3aXRoIGNhbGxiYWNrcy4gRmlyc3Qgb2YgYWxsLCBPcGVuU1NMIGlzIHdyaXR0ZW4KLWFzIGEgQyBsaWJyYXJ5LCBpdCdzIG5vdCBtZWFudCB0byBoYXZlIFB5dGhvbiBjYWxsYmFja3MsIHNvIGEgd2F5IGFyb3VuZCB0aGF0Ci1pcyBuZWVkZWQuIEFub3RoZXIgcHJvYmxlbSBpcyB0aHJlYWQgc3VwcG9ydC4gQSBsb3Qgb2YgdGhlIE9wZW5TU0wgSS9PCi1mdW5jdGlvbnMgY2FuIGJsb2NrIGlmIHRoZSBzb2NrZXQgaXMgaW4gYmxvY2tpbmcgbW9kZSwgYW5kIHRoZW4geW91IHdhbnQgb3RoZXIKLVB5dGhvbiB0aHJlYWRzIHRvIGJlIGFibGUgdG8gZG8gb3RoZXIgdGhpbmdzLiBUaGUgcmVhbCB0cm91YmxlIGlzIGlmIHlvdSd2ZQotcmVsZWFzZWQgdGhlIGdsb2JhbCBDUHl0aG9uIGludGVycHJldGVyIGxvY2sgdG8gZG8gYSBwb3RlbnRpYWxseSBibG9ja2luZwotb3BlcmF0aW9uLCBhbmQgdGhlIG9wZXJhdGlvbiBjYWxscyBhIGNhbGxiYWNrLiBUaGVuIHdlIG11c3QgdGFrZSB0aGUgR0lMIGJhY2ssCi1zaW5jZSBjYWxsaW5nIFB5dGhvbiBBUElzIHdpdGhvdXQgaG9sZGluZyBpdCBpcyBub3QgYWxsb3dlZC4KLQotVGhlcmUgYXJlIHR3byBzb2x1dGlvbnMgdG8gdGhlIGZpcnN0IHByb2JsZW0sIGJvdGggb2Ygd2hpY2ggYXJlIG5lY2Vzc2FyeS4gVGhlCi1maXJzdCBzb2x1dGlvbiB0byB1c2UgaXMgaWYgdGhlIEMgY2FsbGJhY2sgYWxsb3dzICcndXNlcmRhdGEnJyB0byBiZSBwYXNzZWQgdG8KLWl0IChhbiBhcmJpdHJhcnkgcG9pbnRlciBub3JtYWxseSkuIFRoaXMgaXMgZ3JlYXQhIFdlIGNhbiBzZXQgb3VyIFB5dGhvbgotZnVuY3Rpb24gb2JqZWN0IGFzIHRoZSByZWFsIHVzZXJkYXRhIGFuZCBlbXVsYXRlIHVzZXJkYXRhIGZvciB0aGUgUHl0aG9uCi1mdW5jdGlvbiBpbiBhbm90aGVyIHdheS4gVGhlIG90aGVyIHNvbHV0aW9uIGNhbiBiZSB1c2VkIGlmIGFuIG9iamVjdCB3aXRoIGFuCi0nJ2FwcF9kYXRhJycgc3lzdGVtIGFsd2F5cyBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrLiBGb3IgZXhhbXBsZSwgdGhlIFNTTAotb2JqZWN0IGluIE9wZW5TU0wgaGFzIGFwcF9kYXRhIGZ1bmN0aW9ucyBhbmQgaW4gZS5nLiB0aGUgdmVyaWZpY2F0aW9uCi1jYWxsYmFja3MsIHlvdSBjYW4gcmV0cmlldmUgdGhlIHJlbGF0ZWQgU1NMIG9iamVjdC4gV2hhdCB3ZSBkbyBpcyB0byBzZXQgb3VyCi13cmFwcGVyIFxjbGFzc3tDb25uZWN0aW9ufSBvYmplY3QgYXMgYXBwX2RhdGEgZm9yIHRoZSBTU0wgb2JqZWN0LCBhbmQgd2UgY2FuCi1lYXNpbHkgZmluZCB0aGUgUHl0aG9uIGNhbGxiYWNrLgotCi1UaGUgb3RoZXIgcHJvYmxlbSBpcyBzb2x2ZWQgdXNpbmcgdGhyZWFkIGxvY2FsIHZhcmlhYmxlcy4gIFdoZW5ldmVyIHRoZSBHSUwgaXMKLXJlbGVhc2VkIGJlZm9yZSBjYWxsaW5nIGludG8gYW4gT3BlblNTTCBBUEksIHRoZSBQeVRocmVhZFN0YXRlIHBvaW50ZXIgcmV0dXJuZWQKLWJ5IFxjZnVuY3Rpb257UHlFdmFsX1NhdmVTdGF0ZX0gaXMgc3RvcmVkIGluIGEgZ2xvYmFsIHRocmVhZCBsb2NhbCB2YXJpYWJsZQotKHVzaW5nIFB5dGhvbidzIG93biBUTFMgQVBJLCBcY2Z1bmN0aW9ue1B5VGhyZWFkX3NldF9rZXlfdmFsdWV9KS4gIFdoZW4gaXQgaXMKLW5lY2Vzc2FyeSB0byByZS1hY3F1aXJlIHRoZSBHSUwsIGVpdGhlciBhZnRlciB0aGUgT3BlblNTTCBBUEkgcmV0dXJucyBvciBpbiBhIEMKLWNhbGxiYWNrIGludm9rZWQgYnkgdGhhdCBPcGVuU1NMIEFQSSwgdGhlIHZhbHVlIG9mIHRoZSB0aHJlYWQgbG9jYWwgdmFyaWFibGUgaXMKLXJldHJpZXZlZCAoXGNmdW5jdGlvbntQeVRocmVhZF9nZXRfa2V5X3ZhbHVlfSkgYW5kIHVzZWQgdG8gcmUtYWNxdWlyZSB0aGUgR0lMLgotVGhpcyBhbGxvd3MgUHl0aG9uIHRocmVhZHMgdG8gZXhlY3V0ZSB3aGlsZSBPcGVuU1NMIEFQSXMgYXJlIHJ1bm5pbmcgYW5kIGFsbG93cwotdXNlIG9mIGFueSBwYXJ0aWN1bGFyIHB5T3BlblNTTCBvYmplY3QgZnJvbSBhbnkgUHl0aG9uIHRocmVhZCwgc2luY2UgdGhlcmUgaXMKLW5vIHBlci10aHJlYWQgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFueSBvZiB0aGVzZSBvYmplY3RzIGFuZCBzaW5jZSBPcGVuU1NMIGlzCi10aHJlYWRzYWZlIChhcyBsb25nIGFzIHByb3Blcmx5IGluaXRpYWxpemVkLCBhcyBweU9wZW5TU0wgaW5pdGlhbGl6ZXMgaXQpLgotCi0KLVxzdWJzZWN0aW9ue0FjZXNzaW5nIFNvY2tldCBNZXRob2RzIFxsYWJlbHtzb2NrZXQtbWV0aG9kc319Ci0KLVdlIHF1aWNrbHkgc2F3IHRoZSBiZW5lZml0IG9mIHdyYXBwaW5nIHNvY2tldCBtZXRob2RzIGluIHRoZQotXGNsYXNze1NTTC5Db25uZWN0aW9ufSBjbGFzcywgZm9yIGFuIGVhc3kgdHJhbnNpdGlvbiBpbnRvIHVzaW5nIFNTTC4gVGhlCi1wcm9ibGVtIGhlcmUgaXMgdGhhdCB0aGUgXG1vZHVsZXtzb2NrZXR9IG1vZHVsZSBsYWNrcyBhIEMgQVBJLCBhbmQgYWxsIHRoZQotbWV0aG9kcyBhcmUgZGVjbGFyZWQgc3RhdGljLiBPbmUgYXBwcm9hY2ggd291bGQgYmUgdG8gaGF2ZSBcbW9kdWxle09wZW5TU0x9IGFzCi1hIHN1Ym1vZHVsZSB0byB0aGUgXG1vZHVsZXtzb2NrZXR9IG1vZHVsZSwgcGxhY2luZyBhbGwgdGhlIGNvZGUgaW4KLVxmaWxle3NvY2tldG1vZHVsZS5jfSwgYnV0IHRoaXMgaXMgb2J2aW91c2x5IG5vdCBhIGdvb2Qgc29sdXRpb24sIHNpbmNlIHlvdQotbWlnaHQgbm90IHdhbnQgdG8gaW1wb3J0IHRvbm5lcyBvZiBleHRyYSBzdHVmZiB5b3UncmUgbm90IGdvaW5nIHRvIHVzZSB3aGVuCi1pbXBvcnRpbmcgdGhlIFxtb2R1bGV7c29ja2V0fSBtb2R1bGUuIFRoZSBvdGhlciBhcHByb2FjaCBpcyB0byBzb21laG93IGdldCBhCi1wb2ludGVyIHRvIHRoZSBtZXRob2QgdG8gYmUgY2FsbGVkLCBlaXRoZXIgdGhlIEMgZnVuY3Rpb24sIG9yIGEgY2FsbGFibGUgUHl0aG9uCi1vYmplY3QuIFRoaXMgaXMgbm90IHJlYWxseSBhIGdvb2Qgc29sdXRpb24gZWl0aGVyLCBzaW5jZSB0aGVyZSdzIGEgbG90IG9mCi1sb29rdXBzIGludm9sdmVkLgotCi1UaGUgd2F5IGl0IHdvcmtzIGlzIHRoYXQgeW91IGhhdmUgdG8gc3VwcGx5IGEgYGBcY2xhc3N7c29ja2V0fS1saWtlJycgdHJhbnNwb3J0Ci1vYmplY3QgdG8gdGhlIFxjbGFzc3tTU0wuQ29ubmVjdGlvbn0uIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHRoaXMgb2JqZWN0IGlzCi10aGF0IGl0IGhhcyBhIFxtZXRob2R7ZmlsZW5vKCl9IG1ldGhvZCB0aGF0IHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCdzCi12YWxpZCBhdCB0aGUgQyBsZXZlbCAoaS5lLiB5b3UgY2FuIHVzZSB0aGUgc3lzdGVtIGNhbGxzIHJlYWQgYW5kIHdyaXRlKS4gSWYgeW91Ci13YW50IHRvIHVzZSB0aGUgXG1ldGhvZHtjb25uZWN0KCl9IG9yIFxtZXRob2R7YWNjZXB0KCl9IG1ldGhvZHMgb2YgdGhlCi1cY2xhc3N7U1NMLkNvbm5lY3Rpb259IG9iamVjdCwgdGhlIHRyYW5zcG9ydCBvYmplY3QgaGFzIHRvIHN1cHBseSBzdWNoCi1tZXRob2RzIHRvby4gQXBhcnQgZnJvbSB0aGVtLCBhbnkgbWV0aG9kIGxvb2t1cHMgaW4gdGhlIFxjbGFzc3tTU0wuQ29ubmVjdGlvbn0KLW9iamVjdCB0aGF0IGZhaWwgYXJlIHBhc3NlZCBvbiB0byB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgb2JqZWN0LgotCi1GdXR1cmUgY2hhbmdlcyBtaWdodCBiZSB0byBhbGxvdyBQeXRob24tbGV2ZWwgdHJhbnNwb3J0IG9iamVjdHMsIHRoYXQgaW5zdGVhZAotb2YgaGF2aW5nIFxtZXRob2R7ZmlsZW5vKCl9IG1ldGhvZHMsIGhhdmUgXG1ldGhvZHtyZWFkKCl9IGFuZCBcbWV0aG9ke3dyaXRlKCl9Ci1tZXRob2RzLCBzbyBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIG9mIFB5dGhvbiBjYW4gYmUgdXNlZC4gVGhpcyB3b3VsZCBwcm9iYWJseQotZW50YWlsIHNvbWUgc29ydCBvZiBPcGVuU1NMIGBgQklPcycnLCBidXQgY29udmVydGluZyBQeXRob24gc3RyaW5ncyBiYWNrIGFuZAotZm9ydGggaXMgZXhwZW5zaXZlLCBzbyB0aGlzIHNob3VsZG4ndCBiZSB1c2VkIHVubGVzcyBuZWNlc3NhcnkuIE90aGVyIG5pY2UKLXRoaW5ncyB3b3VsZCBiZSB0byBiZSBhYmxlIHRvIHBhc3MgaW4gZGlmZmVyZW50IHRyYW5zcG9ydCBvYmplY3RzIGZvciByZWFkaW5nCi1hbmQgd3JpdGluZywgYnV0IHRoZW4gdGhlIFxtZXRob2R7ZmlsZW5vKCl9IG1ldGhvZCBvZiBcY2xhc3N7U1NMLkNvbm5lY3Rpb259Ci1iZWNvbWVzIHZpcnR1YWxseSB1c2VsZXNzLiBBbHNvLCBzaG91bGQgdGhlIG1ldGhvZCByZXNvbHV0aW9uIGJlIHVzZWQgb24gdGhlCi1yZWFkLXRyYW5zcG9ydCBvciB0aGUgd3JpdGUtdHJhbnNwb3J0PwotCi0KLVxlbmR7ZG9jdW1lbnR9CmRpZmYgLS1naXQgYS9kb2MvcHlPcGVuU1NMLnR4dCBiL2RvYy9weU9wZW5TU0wudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjZkODU5Li4wMDAwMDAwCi0tLSBhL2RvYy9weU9wZW5TU0wudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTMxMSArMCwwIEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIE9wZW5TU0wgTWFudWFsCi0gICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIE9wZW5TU0wgTWFudWFsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSmVhbi1QYXVsIENhbGRlcm9uZQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGV4YXJrdW5AdHdpc3RlZG1hdHJpeC5jb20KLQotICBBYnN0cmFjdDoKLQotICAgVGhpcyBtb2R1bGUgaXMgYSByYXRoZXIgdGhpbiB3cmFwcGVyIGFyb3VuZCAoYSBzdWJzZXQgb2YpIHRoZSBPcGVuU1NMCi0gICBsaWJyYXJ5LiBXaXRoIHRoaW4gd3JhcHBlciBJIG1lYW4gdGhhdCBhIGxvdCBvZiB0aGUgb2JqZWN0IG1ldGhvZHMgZG8KLSAgIG5vdGhpbmcgbW9yZSB0aGFuIGNhbGxpbmcgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGluIHRoZSBPcGVuU1NMCi0gICBsaWJyYXJ5LgotCi1Db250ZW50cwotCi0gICAgICogMSBJbnRyb2R1Y3Rpb24KLSAgICAgKiAyIEJ1aWxkaW5nIGFuZCBJbnN0YWxsaW5nCi0gICAgICAgICAgKyAyLjEgQnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFVuaXggU3lzdGVtCi0gICAgICAgICAgKyAyLjIgQnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFdpbmRvd3MgU3lzdGVtCi0gICAgICogMyBPcGVuU1NMIC0tIFB5dGhvbiBpbnRlcmZhY2UgdG8gT3BlblNTTAotICAgICAgICAgICsgMy4xIGNyeXB0byAtLSBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlCi0gICAgICAgICAgKyAzLjIgcmFuZCAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5TU0wgcHNldWRvIHJhbmRvbSBudW1iZXIKLSAgICAgICAgICAgIGdlbmVyYXRvcgotICAgICAgICAgICsgMy4zIFNTTCAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIFNTTC1zcGVjaWZpYyBwYXJ0cyBvZiBPcGVuU1NMCi0gICAgICogNCBJbnRlcm5hbHMKLSAgICAgICAgICArIDQuMSBFeGNlcHRpb25zCi0gICAgICAgICAgKyA0LjIgQ2FsbGJhY2tzCi0gICAgICAgICAgKyA0LjMgQWNlc3NpbmcgU29ja2V0IE1ldGhvZHMKLQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIEludHJvZHVjdGlvbgotCi0gICBUaGUgcmVhc29uIHB5T3BlblNTTCB3YXMgY3JlYXRlZCBpcyB0aGF0IHRoZSBTU0wgc3VwcG9ydCBpbiB0aGUgc29ja2V0Ci0gICBtb2R1bGUgaW4gUHl0aG9uIDIuMSAodGhlIGNvbnRlbXBvcmFyeSB2ZXJzaW9uIG9mIFB5dGhvbiB3aGVuIHRoZQotICAgcHlPcGVuU1NMIHByb2plY3Qgd2FzIGJlZ3VuKSB3YXMgc2V2ZXJlbHkgbGltaXRlZC4gT3RoZXIgT3BlblNTTAotICAgd3JhcHBlcnMgZm9yIFB5dGhvbiBhdCB0aGUgdGltZSB3ZXJlIGFsc28gbGltaXRlZCwgdGhvdWdoIGluIGRpZmZlcmVudAotICAgd2F5cy4gVW5mb3J0dW5hdGVseSwgUHl0aG9uJ3Mgc3RhbmRhcmQgbGlicmFyeSBTU0wgc3VwcG9ydCBoYXMgcmVtYWluZWQKLSAgIHdlYWssIGFsdGhvdWdoIG90aGVyIHBhY2thZ2VzIChzdWNoIGFzIE0yQ3J5cHRvXjEpIGhhdmUgbWFkZSBncmVhdAotICAgYWR2YW5jZXMgYW5kIG5vdyBlcXVhbCBvciBleGNlZWQgcHlPcGVuU1NMJ3MgZnVuY3Rpb25hbGl0eS4KLQotICAgVGhlIHJlYXNvbiBweU9wZW5TU0wgY29udGludWVzIHRvIGJlIG1haW50YWluZWQgaXMgdGhhdCB0aGVyZSBpcyBhCi0gICBzaWduaWZpY2FudCB1c2VyIGNvbW11bml0eSBhcm91bmQgaXQsIGFzIHdlbGwgYXMgYSBsYXJnZSBhbW91bnQgb2YKLSAgIHNvZnR3YXJlIHdoaWNoIGRlcGVuZHMgb24gaXQuIEl0IGlzIGEgZ3JlYXQgYmVuZWZpdCB0byBtYW55IHBlb3BsZSBmb3IKLSAgIHB5T3BlblNTTCB0byBjb250aW51ZSB0byBleGlzdCBhbmQgYWR2YW5jZS4KLQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAyIEJ1aWxkaW5nIGFuZCBJbnN0YWxsaW5nCi0KLSAgIFRoZXNlIGluc3RydWN0aW9ucyBjYW4gYWxzbyBiZSBmb3VuZCBpbiB0aGUgZmlsZSBJTlNUQUxMLgotCi0gICBJIGhhdmUgdGVzdGVkIHRoaXMgb24gRGViaWFuIExpbnV4IHN5c3RlbXMgKHdvb2R5IGFuZCBzaWQpLCBTb2xhcmlzIDIuNgotICAgYW5kIDIuNy4gT3RoZXJzIGhhdmUgc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkIGl0IG9uIFdpbmRvd3MgYW5kIE5ULgotCi0KLTIuMSBCdWlsZGluZyB0aGUgTW9kdWxlIG9uIGEgVW5peCBTeXN0ZW0KLQotICAgcHlPcGVuU1NMIHVzZXMgZGlzdHV0aWxzLCBzbyB0aGVyZSByZWFsbHkgc2hvdWxkbid0IGJlIGFueSBwcm9ibGVtcy4gVG8KLSAgIGJ1aWxkIHRoZSBsaWJyYXJ5OgotCi1weXRob24gc2V0dXAucHkgYnVpbGQKLQotICAgSWYgeW91ciBPcGVuU1NMIGhlYWRlciBmaWxlcyBhcmVuJ3QgaW4gL3Vzci9pbmNsdWRlLCB5b3UgbWF5IG5lZWQgdG8KLSAgIHN1cHBseSB0aGUgLUkgZmxhZyB0byBsZXQgdGhlIHNldHVwIHNjcmlwdCBrbm93IHdoZXJlIHRvIGxvb2suIFRoZSBzYW1lCi0gICBnb2VzIGZvciB0aGUgbGlicmFyaWVzIG9mIGNvdXJzZSwgdXNlIHRoZSAtTCBmbGFnLiBOb3RlIHRoYXQgYnVpbGQKLSAgIHdvbid0IGFjY2VwdCB0aGVzZSBmbGFncywgc28geW91IGhhdmUgdG8gcnVuIGZpcnN0IGJ1aWxkX2V4dCBhbmQgdGhlbgotICAgYnVpbGQhIEV4YW1wbGU6Ci0KLXB5dGhvbiBzZXR1cC5weSBidWlsZF9leHQgLUkvdXNyL2xvY2FsL3NzbC9pbmNsdWRlIC1ML3Vzci9sb2NhbC9zc2wvbGliCi1weXRob24gc2V0dXAucHkgYnVpbGQKLQotICAgTm93IHlvdSBzaG91bGQgaGF2ZSBhIGRpcmVjdG9yeSBjYWxsZWQgT3BlblNTTCB0aGF0IGNvbnRhaW5zIGUuZy4KLSAgIFNTTC5zbyBhbmQgX19pbml0X18ucHkgc29tZXdoZXJlIGluIHRoZSBidWlsZCBkaWNyZWN0b3J5LCBzbyBqdXN0OgotCi1weXRob24gc2V0dXAucHkgaW5zdGFsbAotCi0gICBJZiB5b3UsIGZvciBzb21lIGFyY2FuZSByZWFzb24sIGRvbid0IHdhbnQgdGhlIG1vZHVsZSB0byBhcHBlYXIgaW4gdGhlCi0gICBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeSwgdXNlIHRoZSAtLXByZWZpeCBvcHRpb24uCi0KLSAgIFlvdSBjYW4sIG9mIGNvdXJzZSwgZG8KLQotcHl0aG9uIHNldHVwLnB5IC0taGVscAotCi0gICB0byBmaW5kIG91dCBtb3JlIGFib3V0IGhvdyB0byB1c2UgdGhlIHNjcmlwdC4KLQotCi0yLjIgQnVpbGRpbmcgdGhlIE1vZHVsZSBvbiBhIFdpbmRvd3MgU3lzdGVtCi0KLSAgIEJpZyB0aGFua3MgdG8gSXRhbWFyIFNodHVsbC1UcmF1cmluZyBhbmQgT2xlZyBPcmxvdiBmb3IgdGhlaXIgaGVscCB3aXRoCi0gICBXaW5kb3dzIGJ1aWxkIGluc3RydWN0aW9ucy4gU2FtZSBhcyBmb3IgVW5peCBzeXN0ZW1zLCB3ZSBoYXZlIHRvCi0gICBzZXBhcmF0ZSB0aGUgYnVpbGRfZXh0IGFuZCB0aGUgYnVpbGQuCi0KLSAgIEJ1aWxkaW5nIHRoZSBsaWJyYXJ5OgotCi1zZXR1cC5weSBidWlsZF9leHQgLUkgLi4uXG9wZW5zc2xcaW5jMzIgLUwgLi4uXG9wZW5zc2xcb3V0MzJkbGwKLXNldHVwLnB5IGJ1aWxkCi0KLSAgIFdoZXJlIC4uLlxvcGVuc3NsIGlzIG9mIGNvdXJzZSB0aGUgbG9jYXRpb24gb2YgeW91ciBPcGVuU1NMCi0gICBpbnN0YWxsYXRpb24uCi0KLSAgIEluc3RhbGxhdGlvbiBpcyB0aGUgc2FtZSBhcyBmb3IgVW5peCBzeXN0ZW1zOgotCi1zZXR1cC5weSBpbnN0YWxsCi0KLSAgIEFuZCBzaW1pbGFyaWx5LCB5b3UgY2FuIGRvCi0KLXNldHVwLnB5IC0taGVscAotCi0gICB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbi4KLQotCi0gICAgICAgICAgICAgICAgICAgIDMgT3BlblNTTCAtLSBQeXRob24gaW50ZXJmYWNlIHRvIE9wZW5TU0wKLQotICAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgaGlnaC1sZXZlbCBpbnRlcmZhY2UgdG8gdGhlIGZ1bmN0aW9ucyBpbiB0aGUKLSAgIE9wZW5TU0wgbGlicmFyeS4gVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFyZSBkZWZpbmVkOgotCi0gICBjcnlwdG8KLSAgICAgICAgICBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlLiBOb3RlIHRoYXQgaWYgYW55dGhpbmcgaXMKLSAgICAgICAgICBpbmNvbXBsZXRlLCB0aGlzIG1vZHVsZSBpcyEKLQotICAgcmFuZAotICAgICAgICAgIEFuIGludGVyZmFjZSB0byB0aGUgT3BlblNTTCBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCi0KLSAgIFNTTAotICAgICAgICAgIEFuIGludGVyZmFjZSB0byB0aGUgU1NMLXNwZWNpZmljIHBhcnRzIG9mIE9wZW5TU0wuCi0KLQotMy4xIGNyeXB0byAtLSBHZW5lcmljIGNyeXB0b2dyYXBoaWMgbW9kdWxlCi0KLSAgIFg1MDlUeXBlCi0gICAgICAgICAgU2VlIFg1MDkuCi0KLSAgIGNsYXNzIFg1MDkoKQotICAgICAgICAgIEEgY2xhc3MgcmVwcmVzZW50aW5nIFguNTA5IGNlcnRpZmljYXRlcy4KLQotICAgWDUwOU5hbWVUeXBlCi0gICAgICAgICAgU2VlIFg1MDlOYW1lLgotCi0gICBjbGFzcyBYNTA5TmFtZSh4NTA5bmFtZSkKLSAgICAgICAgICBBIGNsYXNzIHJlcHJlc2VudGluZyBYLjUwOSBEaXN0aW5ndWlzaGVkIE5hbWVzLgotCi0gICAgICAgICAgVGhpcyBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgY29weSBvZiB4NTA5bmFtZSB3aGljaCBzaG91bGQgYmUgYW4KLSAgICAgICAgICBpbnN0YW5jZSBvZiBYNTA5TmFtZS4KLQotICAgWDUwOVJlcVR5cGUKLSAgICAgICAgICBTZWUgWDUwOVJlcS4KLQotICAgY2xhc3MgWDUwOVJlcSgpCi0gICAgICAgICAgQSBjbGFzcyByZXByZXNlbnRpbmcgWC41MDkgY2VydGlmaWNhdGUgcmVxdWVzdHMuCi0KLSAgIFg1MDlTdG9yZVR5cGUKLSAgICAgICAgICBBIFB5dGhvbiB0eXBlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFg1MDlTdG9yZSBvYmplY3QgdHlwZS4KLQotICAgUEtleVR5cGUKLSAgICAgICAgICBTZWUgUEtleS4KLQotICAgY2xhc3MgUEtleSgpCi0gICAgICAgICAgQSBjbGFzcyByZXByZXNlbnRpbmcgRFNBIG9yIFJTQSBrZXlzLgotCi0gICBQS0NTN1R5cGUKLSAgICAgICAgICBBIFB5dGhvbiB0eXBlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIFBLQ1M3IG9iamVjdCB0eXBlLgotCi0gICBQS0NTMTJUeXBlCi0gICAgICAgICAgQSBQeXRob24gdHlwZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBQS0NTMTIgb2JqZWN0IHR5cGUuCi0KLSAgIFg1MDlFeHRlbnNpb25UeXBlCi0gICAgICAgICAgU2VlIFg1MDlFeHRlbnNpb24uCi0KLSAgIGNsYXNzIFg1MDlFeHRlbnNpb24odHlwZW5hbWUsIGNyaXRpY2FsLCB2YWx1ZVssIHN1YmplY3RdWywgaXNzdWVyXSkKLSAgICAgICAgICBBIGNsYXNzIHJlcHJlc2VudGluZyBhbiBYLjUwOSB2MyBjZXJ0aWZpY2F0ZSBleHRlbnNpb25zLiBTZWUKLSAgICAgICAgICBodHRwOi8vb3BlbnNzbC5vcmcvZG9jcy9hcHBzL3g1MDl2M19jb25maWcuaHRtbCNTVEFOREFSRF9FWFRFTlNJCi0gICAgICAgICAgT05TZm9yIHR5cGVuYW1lIHN0cmluZ3MgYW5kIHRoZWlyIG9wdGlvbnMuIE9wdGlvbmFsIHBhcmFtZXRlcnMKLSAgICAgICAgICBzdWJqZWN0IGFuZCBpc3N1ZXIgbXVzdCBiZSBYNTA5IG9iamVjdHMuCi0KLSAgIE5ldHNjYXBlU1BLSVR5cGUKLSAgICAgICAgICBTZWUgTmV0c2NhcGVTUEtJLgotCi0gICBjbGFzcyBOZXRzY2FwZVNQS0koW2VuY10pCi0gICAgICAgICAgQSBjbGFzcyByZXByZXNlbnRpbmcgTmV0c2NhcGUgU1BLSSBvYmplY3RzLgotCi0gICAgICAgICAgSWYgdGhlIGVuYyBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBzaG91bGQgYmUgYSBiYXNlNjQtZW5jb2RlZAotICAgICAgICAgIHN0cmluZyByZXByZXNlbnRpbmcgYSBOZXRzY2FwZVNQS0kgb2JqZWN0LCBhcyByZXR1cm5lZCBieSB0aGUKLSAgICAgICAgICBiNjRfZW5jb2RlIG1ldGhvZC4KLQotICAgY2xhc3MgQ1JMKCkKLSAgICAgICAgICBBIGNsYXNzIHJlcHJlc2VudGluZyBDZXJ0aWZjYXRlIFJldm9jYXRpb24gTGlzdCBvYmplY3RzLgotCi0gICBjbGFzcyBSZXZva2VkKCkKLSAgICAgICAgICBBIGNsYXNzIHJlcHJlc2VudGluZyBSZXZvY2F0aW9uIG9iamVjdHMgb2YgQ1JMLgotCi0gICBGSUxFVFlQRV9QRU0KLQotICAgRklMRVRZUEVfQVNOMQotICAgICAgICAgIEZpbGUgdHlwZSBjb25zdGFudHMuCi0KLSAgIFRZUEVfUlNBCi0KLSAgIFRZUEVfRFNBCi0gICAgICAgICAgS2V5IHR5cGUgY29uc3RhbnRzLgotCi0gICBleGNlcHRpb24gRXJyb3IKLSAgICAgICAgICBHZW5lcmljIGV4Y2VwdGlvbiB1c2VkIGluIHRoZSBjcnlwdG8gbW9kdWxlLgotCi0gICBkdW1wX2NlcnRpZmljYXRlKHR5cGUsIGNlcnQpCi0gICAgICAgICAgRHVtcCB0aGUgY2VydGlmaWNhdGUgY2VydCBpbnRvIGEgYnVmZmVyIHN0cmluZyBlbmNvZGVkIHdpdGggdGhlCi0gICAgICAgICAgdHlwZSB0eXBlLgotCi0gICBkdW1wX2NlcnRpZmljYXRlX3JlcXVlc3QodHlwZSwgcmVxKQotICAgICAgICAgIER1bXAgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QgcmVxIGludG8gYSBidWZmZXIgc3RyaW5nIGVuY29kZWQKLSAgICAgICAgICB3aXRoIHRoZSB0eXBlIHR5cGUuCi0KLSAgIGR1bXBfcHJpdmF0ZWtleSh0eXBlLCBwa2V5WywgY2lwaGVyLCBwYXNzcGhyYXNlXSkKLSAgICAgICAgICBEdW1wIHRoZSBwcml2YXRlIGtleSBwa2V5IGludG8gYSBidWZmZXIgc3RyaW5nIGVuY29kZWQgd2l0aCB0aGUKLSAgICAgICAgICB0eXBlIHR5cGUsIG9wdGlvbmFsbHkgKGlmIHR5cGUgaXMgRklMRVRZUEVfUEVNKSBlbmNyeXB0aW5nIGl0Ci0gICAgICAgICAgdXNpbmcgY2lwaGVyIGFuZCBwYXNzcGhyYXNlLgotCi0gICAgICAgICAgcGFzc3BocmFzZSBtdXN0IGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGNhbGxiYWNrIGZvciBwcm92aWRpbmcKLSAgICAgICAgICB0aGUgcGFzcyBwaHJhc2UuCi0KLSAgIGxvYWRfY2VydGlmaWNhdGUodHlwZSwgYnVmZmVyKQotICAgICAgICAgIExvYWQgYSBjZXJ0aWZpY2F0ZSAoWDUwOSkgZnJvbSB0aGUgc3RyaW5nIGJ1ZmZlciBlbmNvZGVkIHdpdGgKLSAgICAgICAgICB0aGUgdHlwZSB0eXBlLgotCi0gICBsb2FkX2NlcnRpZmljYXRlX3JlcXVlc3QodHlwZSwgYnVmZmVyKQotICAgICAgICAgIExvYWQgYSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IChYNTA5UmVxKSBmcm9tIHRoZSBzdHJpbmcgYnVmZmVyCi0gICAgICAgICAgZW5jb2RlZCB3aXRoIHRoZSB0eXBlIHR5cGUuCi0KLSAgIGxvYWRfcHJpdmF0ZWtleSh0eXBlLCBidWZmZXJbLCBwYXNzcGhyYXNlXSkKLSAgICAgICAgICBMb2FkIGEgcHJpdmF0ZSBrZXkgKFBLZXkpIGZyb20gdGhlIHN0cmluZyBidWZmZXIgZW5jb2RlZCB3aXRoCi0gICAgICAgICAgdGhlIHR5cGUgdHlwZSAobXVzdCBiZSBvbmUgb2YgRklMRVRZUEVfUEVNIGFuZCBGSUxFVFlQRV9BU04xKS4KLQotICAgICAgICAgIHBhc3NwaHJhc2UgbXVzdCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBjYWxsYmFjayBmb3IgcHJvdmlkaW5nCi0gICAgICAgICAgdGhlIHBhc3MgcGhyYXNlLgotCi0gICBsb2FkX2NybCh0eXBlLCBidWZmZXIpCi0gICAgICAgICAgTG9hZCBDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QgKENSTCkgZGF0YSBmcm9tIGEgc3RyaW5nCi0gICAgICAgICAgYnVmZmVyLiBidWZmZXIgZW5jb2RlZCB3aXRoIHRoZSB0eXBlIHR5cGUuIFRoZSB0eXBlIHR5cGUgbXVzdAotICAgICAgICAgIGVpdGhlciBGSUxFVFlQRV9QRU0gb3IgRklMRVRZUEVfQVNOMSkuCi0KLSAgIGxvYWRfcGtjczdfZGF0YSh0eXBlLCBidWZmZXIpCi0gICAgICAgICAgTG9hZCBwa2NzNyBkYXRhIGZyb20gdGhlIHN0cmluZyBidWZmZXIgZW5jb2RlZCB3aXRoIHRoZSB0eXBlCi0gICAgICAgICAgdHlwZS4KLQotICAgbG9hZF9wa2NzMTIoYnVmZmVyWywgcGFzc3BocmFzZV0pCi0gICAgICAgICAgTG9hZCBwa2NzMTIgZGF0YSBmcm9tIHRoZSBzdHJpbmcgYnVmZmVyLiBJZiB0aGUgcGtjczEyIHN0cnVjdHVyZQotICAgICAgICAgIGlzIGVuY3J5cHRlZCwgYSBwYXNzcGhyYXNlIG11c3QgYmUgaW5jbHVkZWQuIFRoZSBNQUMgaXMgYWx3YXlzCi0gICAgICAgICAgY2hlY2tlZCBhbmQgdGh1cyByZXF1aXJlZC4KLQotICAgICAgICAgIFNlZSBhbHNvIHRoZSBtYW4gcGFnZSBmb3IgdGhlIEMgZnVuY3Rpb24gUEtDUzEyX3BhcnNlLgotCi0gICBzaWduKGtleSwgZGF0YSwgZGlnZXN0KQotICAgICAgICAgIFNpZ24gYSBkYXRhIHN0cmluZyB1c2luZyB0aGUgZ2l2ZW4ga2V5IGFuZCBtZXNzYWdlIGRpZ2VzdC4KLQotICAgICAgICAgIGtleSBpcyBhIFBLZXkgaW5zdGFuY2UuIGRhdGEgaXMgYSBzdHIgaW5zdGFuY2UuIGRpZ2VzdCBpcyBhIHN0cgotICAgICAgICAgIG5hbWluZyBhIHN1cHBvcnRlZCBtZXNzYWdlIGRpZ2VzdCB0eXBlLCBmb3IgZXhhbXBsZSBgYHNoYTEnJy4KLSAgICAgICAgICBOZXcgaW4gdmVyc2lvbiAwLjExLgotCi0gICB2ZXJpZnkoY2VydGlmaWNhdGUsIHNpZ25hdHVyZSwgZGF0YSwgZGlnZXN0KQotICAgICAgICAgIFZlcmlmeSB0aGUgc2lnbmF0dXJlIGZvciBhIGRhdGEgc3RyaW5nLgotCi0gICAgICAgICAgY2VydGlmaWNhdGUgaXMgYSBYNTA5IGluc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByaXZhdGUga2V5Ci0gICAgICAgICAgd2hpY2ggZ2VuZXJhdGVkIHRoZSBzaWduYXR1cmUuIHNpZ25hdHVyZSBpcyBhIHN0ciBpbnN0YW5jZQotICAgICAgICAgIGdpdmluZyB0aGUgc2lnbmF0dXJlIGl0c2VsZi4gZGF0YSBpcyBhIHN0ciBpbnN0YW5jZSBnaXZpbmcgdGhlCi0gICAgICAgICAgZGF0YSB0byB3aGljaCB0aGUgc2lnbmF0dXJlIGFwcGxpZXMuIGRpZ2VzdCBpcyBhIHN0ciBpbnN0YW5jZQotICAgICAgICAgIG5hbWluZyB0aGUgbWVzc2FnZSBkaWdlc3QgdHlwZSBvZiB0aGUgc2lnbmF0dXJlLCBmb3IgZXhhbXBsZQotICAgICAgICAgIGBgc2hhMScnLiBOZXcgaW4gdmVyc2lvbiAwLjExLgotCi0KLSAgMy4xLjEgWDUwOSBvYmplY3RzCi0KLSAgIFg1MDkgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotICAgZ2V0X2lzc3VlcigpCi0gICAgICAgICAgUmV0dXJuIGFuIFg1MDlOYW1lIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGlzc3VlciBvZiB0aGUKLSAgICAgICAgICBjZXJ0aWZpY2F0ZS4KLQotICAgZ2V0X3B1YmtleSgpCi0gICAgICAgICAgUmV0dXJuIGEgUEtleSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZQotICAgICAgICAgIGNlcnRpZmljYXRlLgotCi0gICBnZXRfc2VyaWFsX251bWJlcigpCi0gICAgICAgICAgUmV0dXJuIHRoZSBjZXJ0aWZpY2F0ZSBzZXJpYWwgbnVtYmVyLgotCi0gICBnZXRfc2lnbmF0dXJlX2FsZ29yaXRobSgpCi0gICAgICAgICAgUmV0dXJuIHRoZSBzaWduYXR1cmUgYWxnb3JpdGhtIHVzZWQgaW4gdGhlIGNlcnRpZmljYXRlLiBJZiB0aGUKLSAgICAgICAgICBhbGdvcml0aG0gaXMgdW5kZWZpbmVkLCByYWlzZSBWYWx1ZUVycm9yLgotCi0gICBnZXRfc3ViamVjdCgpCi0gICAgICAgICAgUmV0dXJuIGFuIFg1MDlOYW1lIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHN1YmplY3Qgb2YgdGhlCi0gICAgICAgICAgY2VydGlmaWNhdGUuCi0KLSAgIGdldF92ZXJzaW9uKCkKLSAgICAgICAgICBSZXR1cm4gdGhlIGNlcnRpZmljYXRlIHZlcnNpb24uCi0KLSAgIGdldF9ub3RCZWZvcmUoKQotICAgICAgICAgIFJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIHRpbWUgYmVmb3JlIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcwotICAgICAgICAgIG5vdCB2YWxpZC4gVGhlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUU6Ci0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotCi0gICAgICAgICAgSWYgbm8gdmFsdWUgZXhpc3RzIGZvciB0aGlzIGZpZWxkLCBOb25lIGlzIHJldHVybmVkLgotCi0gICBnZXRfbm90QWZ0ZXIoKQotICAgICAgICAgIFJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIHRpbWUgYWZ0ZXIgd2hpY2ggdGhlIGNlcnRpZmljYXRlIGlzCi0gICAgICAgICAgbm90IHZhbGlkLiBUaGUgc3RyaW5nIGlzIGZvcm1hdHRlZCBhcyBhbiBBU04xIEdFTkVSQUxJWkVEVElNRToKLQotICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zc1oKLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbQotICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tCi0KLSAgICAgICAgICBJZiBubyB2YWx1ZSBleGlzdHMgZm9yIHRoaXMgZmllbGQsIE5vbmUgaXMgcmV0dXJuZWQuCi0KLSAgIHNldF9ub3RCZWZvcmUod2hlbikKLSAgICAgICAgICBDaGFuZ2UgdGhlIHRpbWUgYmVmb3JlIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQuIHdoZW4KLSAgICAgICAgICBpcyBhIHN0cmluZyBmb3JtYXR0ZWQgYXMgYW4gQVNOMSBHRU5FUkFMSVpFRFRJTUU6Ci0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3NaCi0gICAgICAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzK2hobW0KLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MtaGhtbQotCi0gICBzZXRfbm90QWZ0ZXIod2hlbikKLSAgICAgICAgICBDaGFuZ2UgdGhlIHRpbWUgYWZ0ZXIgd2hpY2ggdGhlIGNlcnRpZmljYXRlIGlzIG5vdCB2YWxpZC4gd2hlbgotICAgICAgICAgIGlzIGEgc3RyaW5nIGZvcm1hdHRlZCBhcyBhbiBBU04xIEdFTkVSQUxJWkVEVElNRToKLQotICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zc1oKLSAgICAgICAgICAgICAgICAgWVlZWU1NRERoaG1tc3MraGhtbQotICAgICAgICAgICAgICAgICBZWVlZTU1ERGhobW1zcy1oaG1tCi0KLSAgIGdtdGltZV9hZGpfbm90QmVmb3JlKHRpbWUpCi0gICAgICAgICAgQWRqdXN0IHRoZSB0aW1lc3RhbXAgKGluIEdNVCkgd2hlbiB0aGUgY2VydGlmaWNhdGUgc3RhcnRzIGJlaW5nCi0gICAgICAgICAgdmFsaWQuCi0KLSAgIGdtdGltZV9hZGpfbm90QWZ0ZXIodGltZSkKLSAgICAgICAgICBBZGp1c3QgdGhlIHRpbWVzdGFtcCAoaW4gR01UKSB3aGVuIHRoZSBjZXJ0aWZpY2F0ZSBzdG9wcyBiZWluZwotICAgICAgICAgIHZhbGlkLgotCi0gICBoYXNfZXhwaXJlZCgpCi0gICAgICAgICAgQ2hlY2tzIHRoZSBjZXJ0aWZpY2F0ZSdzIHRpbWUgc3RhbXAgYWdhaW5zdCBjdXJyZW50IHRpbWUuCi0gICAgICAgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgotCi0gICBzZXRfaXNzdWVyKGlzc3VlcikKLSAgICAgICAgICBTZXQgdGhlIGlzc3VlciBvZiB0aGUgY2VydGlmaWNhdGUgdG8gaXNzdWVyLgotCi0gICBzZXRfcHVia2V5KHBrZXkpCi0gICAgICAgICAgU2V0IHRoZSBwdWJsaWMga2V5IG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byBwa2V5LgotCi0gICBzZXRfc2VyaWFsX251bWJlcihzZXJpYWxubykKLSAgICAgICAgICBTZXQgdGhlIHNlcmlhbCBudW1iZXIgb2YgdGhlIGNlcnRpZmljYXRlIHRvIHNlcmlhbG5vLgotCi0gICBzZXRfc3ViamVjdChzdWJqZWN0KQotICAgICAgICAgIFNldCB0aGUgc3ViamVjdCBvZiB0aGUgY2VydGlmaWNhdGUgdG8gc3ViamVjdC4KLQotICAgc2V0X3ZlcnNpb24odmVyc2lvbikKLSAgICAgICAgICBTZXQgdGhlIGNlcnRpZmljYXRlIHZlcnNpb24gdG8gdmVyc2lvbi4KLQotICAgc2lnbihwa2V5LCBkaWdlc3QpCi0gICAgICAgICAgU2lnbiB0aGUgY2VydGlmaWNhdGUsIHVzaW5nIHRoZSBrZXkgcGtleSBhbmQgdGhlIG1lc3NhZ2UgZGlnZXN0Ci0gICAgICAgICAgYWxnb3JpdGhtIGlkZW50aWZpZWQgYnkgdGhlIHN0cmluZyBkaWdlc3QuCi0KLSAgIHN1YmplY3RfbmFtZV9oYXNoKCkKLSAgICAgICAgICBSZXR1cm4gdGhlIGhhc2ggb2YgdGhlIGNlcnRpZmljYXRlIHN1YmplY3QuCi0KLSAgIGRpZ2VzdChkaWdlc3RfbmFtZSkKLSAgICAgICAgICBSZXR1cm4gYSBkaWdlc3Qgb2YgdGhlIGNlcnRpZmljYXRlLCB1c2luZyB0aGUgZGlnZXN0X25hbWUKLSAgICAgICAgICBtZXRob2QuIGRpZ2VzdF9uYW1lIG11c3QgYmUgYSBzdHJpbmcgZGVzY3JpYmluZyBhIGRpZ2VzdAotICAgICAgICAgIGFsZ29yaXRobSBzdXBwb3J0ZWQgYnkgT3BlblNTTCAoYnkgRVZQX2dldF9kaWdlc3RieW5hbWUsCi0gICAgICAgICAgc3BlY2lmaWNhbGx5KS4gRm9yIGV4YW1wbGUsICJtZDUiIG9yICJzaGExIi4KLQotICAgYWRkX2V4dGVuc2lvbnMoZXh0ZW5zaW9ucykKLSAgICAgICAgICBBZGQgdGhlIGV4dGVuc2lvbnMgaW4gdGhlIHNlcXVlbmNlIGV4dGVuc2lvbnMgdG8gdGhlCi0gICAgICAgICAgY2VydGlmaWNhdGUuCi0KLSAgIGdldF9leHRlbnNpb25fY291bnQoKQotICAgICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGV4dGVuc2lvbnMgb24gdGhpcyBjZXJ0aWZpY2F0ZS4gTmV3IGluCi0gICAgICAgICAgdmVyc2lvbiAwLjEyLgotCi0gICBnZXRfZXh0ZW5zaW9uKGluZGV4KQotICAgICAgICAgIFJldHJpZXZlIHRoZSBleHRlbnNpb24gb24gdGhpcyBjZXJ0aWZpY2F0ZSBhdCB0aGUgZ2l2ZW4gaW5kZXguCi0KLSAgICAgICAgICBFeHRlbnNpb25zIG9uIGEgY2VydGlmaWNhdGUgYXJlIGtlcHQgaW4gb3JkZXIuIFRoZSBpbmRleAotICAgICAgICAgIHBhcmFtZXRlciBzZWxlY3RzIHdoaWNoIGV4dGVuc2lvbiB3aWxsIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuZWQKLSAgICAgICAgICBvYmplY3Qgd2lsbCBiZSBhbiBYNTA5RXh0ZW5zaW9uIGluc3RhbmNlLiBOZXcgaW4gdmVyc2lvbiAwLjEyLgotCi0KLSAgMy4xLjIgWDUwOU5hbWUgb2JqZWN0cwotCi0gICBYNTA5TmFtZSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0gICBoYXNoKCkKLSAgICAgICAgICBSZXR1cm4gYW4gaW50ZWdlciBnaXZpbmcgdGhlIGZpcnN0IGZvdXIgYnl0ZXMgb2YgdGhlIE1ENSBkaWdlc3QKLSAgICAgICAgICBvZiB0aGUgREVSIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYW1lLgotCi0gICBkZXIoKQotICAgICAgICAgIFJldHVybiBhIHN0cmluZyBnaXZpbmcgdGhlIERFUiByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmFtZS4KLQotICAgZ2V0X2NvbXBvbmVudHMoKQotICAgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgdHdvLXR1cGxlcyBvZiBzdHJpbmdzIGdpdmluZyB0aGUgY29tcG9uZW50cyBvZgotICAgICAgICAgIHRoZSBuYW1lLgotCi0gICBYNTA5TmFtZSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgotCi0gICBjb3VudHJ5TmFtZQotICAgICAgICAgIFRoZSBjb3VudHJ5IG9mIHRoZSBlbnRpdHkuIEMgbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMgZm9yCi0gICAgICAgICAgY291bnRyeU5hbWUuCi0KLSAgIHN0YXRlT3JQcm92aW5jZU5hbWUKLSAgICAgICAgICBUaGUgc3RhdGUgb3IgcHJvdmluY2Ugb2YgdGhlIGVudGl0eS4gU1QgbWF5IGJlIHVzZWQgYXMgYW4gYWxpYXMKLSAgICAgICAgICBmb3Igc3RhdGVPclByb3ZpbmNlTmFtZcK3Ci0KLSAgIGxvY2FsaXR5TmFtZQotICAgICAgICAgIFRoZSBsb2NhbGl0eSBvZiB0aGUgZW50aXR5LiBMIG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotICAgICAgICAgIGxvY2FsaXR5TmFtZS4KLQotICAgb3JnYW5pemF0aW9uTmFtZQotICAgICAgICAgIFRoZSBvcmdhbml6YXRpb24gbmFtZSBvZiB0aGUgZW50aXR5LiBPIG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzCi0gICAgICAgICAgZm9yIG9yZ2FuaXphdGlvbk5hbWUuCi0KLSAgIG9yZ2FuaXphdGlvbmFsVW5pdE5hbWUKLSAgICAgICAgICBUaGUgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiB0aGUgZW50aXR5LiBPVSBtYXkgYmUgdXNlZCBhcyBhbgotICAgICAgICAgIGFsaWFzIGZvciBvcmdhbml6YXRpb25hbFVuaXROYW1lLgotCi0gICBjb21tb25OYW1lCi0gICAgICAgICAgVGhlIGNvbW1vbiBuYW1lIG9mIHRoZSBlbnRpdHkuIENOIG1heSBiZSB1c2VkIGFzIGFuIGFsaWFzIGZvcgotICAgICAgICAgIGNvbW1vbk5hbWUuCi0KLSAgIGVtYWlsQWRkcmVzcwotICAgICAgICAgIFRoZSBlLW1haWwgYWRkcmVzcyBvZiB0aGUgZW50aXR5LgotCi0KLSAgMy4xLjMgWDUwOVJlcSBvYmplY3RzCi0KLSAgIFg1MDlSZXEgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotICAgZ2V0X3B1YmtleSgpCi0gICAgICAgICAgUmV0dXJuIGEgUEtleSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZQotICAgICAgICAgIGNlcnRpZmljYXRlIHJlcXVlc3QuCi0KLSAgIGdldF9zdWJqZWN0KCkKLSAgICAgICAgICBSZXR1cm4gYW4gWDUwOU5hbWUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc3ViamVjdCBvZiB0aGUKLSAgICAgICAgICBjZXJ0aWZpY2F0ZS4KLQotICAgc2V0X3B1YmtleShwa2V5KQotICAgICAgICAgIFNldCB0aGUgcHVibGljIGtleSBvZiB0aGUgY2VydGlmaWNhdGUgcmVxdWVzdCB0byBwa2V5LgotCi0gICBzaWduKHBrZXksIGRpZ2VzdCkKLSAgICAgICAgICBTaWduIHRoZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0LCB1c2luZyB0aGUga2V5IHBrZXkgYW5kIHRoZSBtZXNzYWdlCi0gICAgICAgICAgZGlnZXN0IGFsZ29yaXRobSBpZGVudGlmaWVkIGJ5IHRoZSBzdHJpbmcgZGlnZXN0LgotCi0gICB2ZXJpZnkocGtleSkKLSAgICAgICAgICBWZXJpZnkgYSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IHVzaW5nIHRoZSBwdWJsaWMga2V5IHBrZXkuCi0KLSAgIHNldF92ZXJzaW9uKHZlcnNpb24pCi0gICAgICAgICAgU2V0IHRoZSB2ZXJzaW9uIChSRkMgMjQ1OSwgNC4xLjIuMSkgb2YgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QKLSAgICAgICAgICB0byB2ZXJzaW9uLgotCi0gICBnZXRfdmVyc2lvbigpCi0gICAgICAgICAgR2V0IHRoZSB2ZXJzaW9uIChSRkMgMjQ1OSwgNC4xLjIuMSkgb2YgdGhlIGNlcnRpZmljYXRlIHJlcXVlc3QuCi0KLQotICAzLjEuNCBYNTA5U3RvcmUgb2JqZWN0cwotCi0gICBUaGUgWDUwOVN0b3JlIG9iamVjdCBoYXMgY3VycmVudGx5IGp1c3Qgb25lIG1ldGhvZDoKLQotICAgYWRkX2NlcnQoY2VydCkKLSAgICAgICAgICBBZGQgdGhlIGNlcnRpZmljYXRlIGNlcnQgdG8gdGhlIGNlcnRpZmljYXRlIHN0b3JlLgotCi0KLSAgMy4xLjUgUEtleSBvYmplY3RzCi0KLSAgIFRoZSBQS2V5IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0gICBiaXRzKCkKLSAgICAgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIG9mIHRoZSBrZXkuCi0KLSAgIGdlbmVyYXRlX2tleSh0eXBlLCBiaXRzKQotICAgICAgICAgIEdlbmVyYXRlIGEgcHVibGljL3ByaXZhdGUga2V5IHBhaXIgb2YgdGhlIHR5cGUgdHlwZSAob25lIG9mCi0gICAgICAgICAgVFlQRV9SU0EgYW5kIFRZUEVfRFNBKSB3aXRoIHRoZSBzaXplIGJpdHMuCi0KLSAgIHR5cGUoKQotICAgICAgICAgIFJldHVybiB0aGUgdHlwZSBvZiB0aGUga2V5LgotCi0gICBjaGVjaygpCi0gICAgICAgICAgQ2hlY2sgdGhlIGNvbnNpc3RlbmN5IG9mIHRoaXMga2V5LCByZXR1cm5pbmcgVHJ1ZSBpZiBpdCBpcwotICAgICAgICAgIGNvbnNpc3RlbnQgYW5kIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG90aGVyd2lzZS4gVGhpcyBpcyBvbmx5Ci0gICAgICAgICAgdmFsaWQgZm9yIFJTQSBrZXlzLiBTZWUgdGhlIE9wZW5TU0wgUlNBX2NoZWNrX2tleSBtYW4gcGFnZSBmb3IKLSAgICAgICAgICBmdXJ0aGVyIGxpbWl0YXRpb25zLgotCi0KLSAgMy4xLjYgUEtDUzcgb2JqZWN0cwotCi0gICBQS0NTNyBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0gICB0eXBlX2lzX3NpZ25lZCgpCi0gICAgICAgICAgRklYTUUKLQotICAgdHlwZV9pc19lbnZlbG9wZWQoKQotICAgICAgICAgIEZJWE1FCi0KLSAgIHR5cGVfaXNfc2lnbmVkQW5kRW52ZWxvcGVkKCkKLSAgICAgICAgICBGSVhNRQotCi0gICB0eXBlX2lzX2RhdGEoKQotICAgICAgICAgIEZJWE1FCi0KLSAgIGdldF90eXBlX25hbWUoKQotICAgICAgICAgIEdldCB0aGUgdHlwZSBuYW1lIG9mIHRoZSBQS0NTNy4KLQotCi0gIDMuMS43IFBLQ1MxMiBvYmplY3RzCi0KLSAgIFBLQ1MxMiBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0gICBleHBvcnQoW3Bhc3NwaHJhc2U9Tm9uZV1bLCBpdGVyPTIwNDhdWywgbWFjaXRlcj0xXSkKLSAgICAgICAgICBSZXR1cm5zIGEgUEtDUzEyIG9iamVjdCBhcyBhIHN0cmluZy4KLQotICAgICAgICAgIFRoZSBvcHRpb25hbCBwYXNzcGhyYXNlIG11c3QgYmUgYSBzdHJpbmcgbm90IGEgY2FsbGJhY2suCi0KLSAgICAgICAgICBTZWUgYWxzbyB0aGUgbWFuIHBhZ2UgZm9yIHRoZSBDIGZ1bmN0aW9uIFBLQ1MxMl9jcmVhdGUuCi0KLSAgIGdldF9jYV9jZXJ0aWZpY2F0ZXMoKQotICAgICAgICAgIFJldHVybiBDQSBjZXJ0aWZpY2F0ZXMgd2l0aGluIHRoZSBQS0NTMTIgb2JqZWN0IGFzIGEgdHVwbGUuCi0gICAgICAgICAgUmV0dXJucyBOb25lIGlmIG5vIENBIGNlcnRpZmljYXRlcyBhcmUgcHJlc2VudC4KLQotICAgZ2V0X2NlcnRpZmljYXRlKCkKLSAgICAgICAgICBSZXR1cm4gY2VydGlmaWNhdGUgcG9ydGlvbiBvZiB0aGUgUEtDUzEyIHN0cnVjdHVyZS4KLQotICAgZ2V0X2ZyaWVuZGx5bmFtZSgpCi0gICAgICAgICAgUmV0dXJuIGZyaWVuZGx5TmFtZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlLgotCi0gICBnZXRfcHJpdmF0ZWtleSgpCi0gICAgICAgICAgUmV0dXJuIHByaXZhdGUga2V5IHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmUKLQotICAgc2V0X2NhX2NlcnRpZmljYXRlcyhjYWNlcnRzKQotICAgICAgICAgIFJlcGxhY2Ugb3Igc2V0IHRoZSBDQSBjZXJ0aWZpY2F0ZXMgd2l0aGluIHRoZSBQS0NTMTIgb2JqZWN0IHdpdGgKLSAgICAgICAgICB0aGUgc2VxdWVuY2UgY2FjZXJ0cy4KLQotICAgICAgICAgIFNldCBjYWNlcnRzIHRvIE5vbmUgdG8gcmVtb3ZlIGFsbCBDQSBjZXJ0aWZpY2F0ZXMuCi0KLSAgIHNldF9jZXJ0aWZpY2F0ZShjZXJ0KQotICAgICAgICAgIFJlcGxhY2Ugb3Igc2V0IHRoZSBjZXJ0aWZpY2F0ZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlLgotCi0gICBzZXRfZnJpZW5kbHluYW1lKG5hbWUpCi0gICAgICAgICAgUmVwbGFjZSBvciBzZXQgdGhlIGZyaWVuZGx5TmFtZSBwb3J0aW9uIG9mIHRoZSBQS0NTMTIgc3RydWN0dXJlLgotCi0gICBzZXRfcHJpdmF0ZWtleShwa2V5KQotICAgICAgICAgIFJlcGxhY2Ugb3Igc2V0IHByaXZhdGUga2V5IHBvcnRpb24gb2YgdGhlIFBLQ1MxMiBzdHJ1Y3R1cmUKLQotCi0gIDMuMS44IFg1MDlFeHRlbnNpb24gb2JqZWN0cwotCi0gICBYNTA5RXh0ZW5zaW9uIG9iamVjdHMgaGF2ZSBzZXZlcmFsIG1ldGhvZHM6Ci0KLSAgIGdldF9jcml0aWNhbCgpCi0gICAgICAgICAgUmV0dXJuIHRoZSBjcml0aWNhbCBmaWVsZCBvZiB0aGUgZXh0ZW5zaW9uIG9iamVjdC4KLQotICAgZ2V0X3Nob3J0X25hbWUoKQotICAgICAgICAgIFJldHJpZXZlIHRoZSBzaG9ydCBkZXNjcmlwdGl2ZSBuYW1lIGZvciB0aGlzIGV4dGVuc2lvbi4KLQotICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBieXRlIHN0cmluZyBsaWtlIGBgYmFzaWNDb25zdHJhaW50cycnLiBOZXcgaW4KLSAgICAgICAgICB2ZXJzaW9uIDAuMTIuCi0KLSAgIGdldF9kYXRhKCkKLSAgICAgICAgICBSZXRyaWV2ZSB0aGUgZGF0YSBmb3IgdGhpcyBleHRlbnNpb24uCi0KLSAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBBU04uMSBlbmNvZGVkIGZvcm0gb2YgdGhlIGV4dGVuc2lvbiBkYXRhIGFzIGEKLSAgICAgICAgICBieXRlIHN0cmluZy4gTmV3IGluIHZlcnNpb24gMC4xMi4KLQotCi0gIDMuMS45IE5ldHNjYXBlU1BLSSBvYmplY3RzCi0KLSAgIE5ldHNjYXBlU1BLSSBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0gICBiNjRfZW5jb2RlKCkKLSAgICAgICAgICBSZXR1cm4gYSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KLQotICAgZ2V0X3B1YmtleSgpCi0gICAgICAgICAgUmV0dXJuIHRoZSBwdWJsaWMga2V5IG9mIG9iamVjdC4KLQotICAgc2V0X3B1YmtleShrZXkpCi0gICAgICAgICAgU2V0IHRoZSBwdWJsaWMga2V5IG9mIHRoZSBvYmplY3QgdG8ga2V5LgotCi0gICBzaWduKGtleSwgZGlnZXN0X25hbWUpCi0gICAgICAgICAgU2lnbiB0aGUgTmV0c2NhcGVTUEtJIG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4ga2V5IGFuZAotICAgICAgICAgIGRpZ2VzdF9uYW1lLiBkaWdlc3RfbmFtZSBtdXN0IGJlIGEgc3RyaW5nIGRlc2NyaWJpbmcgYSBkaWdlc3QKLSAgICAgICAgICBhbGdvcml0aG0gc3VwcG9ydGVkIGJ5IE9wZW5TU0wgKGJ5IEVWUF9nZXRfZGlnZXN0YnluYW1lLAotICAgICAgICAgIHNwZWNpZmljYWxseSkuIEZvciBleGFtcGxlLCAibWQ1IiBvciAic2hhMSIuCi0KLSAgIHZlcmlmeShrZXkpCi0gICAgICAgICAgVmVyaWZ5IHRoZSBOZXRzY2FwZVNQS0kgb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiBrZXkuCi0KLQotICAzLjEuMTAgQ1JMIG9iamVjdHMKLQotICAgQ1JMIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLSAgIGFkZF9yZXZva2VkKHJldm9rZWQpCi0gICAgICAgICAgQWRkIGEgUmV2b2tlZCBvYmplY3QgdG8gdGhlIENSTCwgYnkgdmFsdWUgbm90IHJlZmVyZW5jZS4KLQotICAgZXhwb3J0KGNlcnQsIGtleVssIHR5cGU9RklMRVRZUEVfUEVNXVssIGRheXM9MTAwXSkKLSAgICAgICAgICBVc2UgY2VydCBhbmQga2V5IHRvIHNpZ24gdGhlIENSTCBhbmQgcmV0dXJuIHRoZSBDUkwgYXMgYSBzdHJpbmcuCi0gICAgICAgICAgZGF5cyBpcyB0aGUgbnVtYmVyIG9mIGRheXMgYmVmb3JlIHRoZSBuZXh0IENSTCBpcyBkdWUuCi0KLSAgIGdldF9yZXZva2VkKCkKLSAgICAgICAgICBSZXR1cm4gYSB0dXBsZSBvZiBSZXZva2VkIG9iamVjdHMsIGJ5IHZhbHVlIG5vdCByZWZlcmVuY2UuCi0KLQotICAzLjEuMTEgUmV2b2tlZCBvYmplY3RzCi0KLSAgIFJldm9rZWQgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotICAgYWxsX3JlYXNvbnMoKQotICAgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHN1cHBvcnRlZCByZWFzb25zLgotCi0gICBnZXRfcmVhc29uKCkKLSAgICAgICAgICBSZXR1cm4gdGhlIHJldm9jYXRpb24gcmVhc29uIGFzIGEgc3RyLiBDYW4gYmUgTm9uZSwgd2hpY2gKLSAgICAgICAgICBkaWZmZXJzIGZyb20gIlVuc3BlY2lmaWVkIi4KLQotICAgZ2V0X3Jldl9kYXRlKCkKLSAgICAgICAgICBSZXR1cm4gdGhlIHJldm9jYXRpb24gZGF0ZSBhcyBhIHN0ci4gVGhlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMKLSAgICAgICAgICBhbiBBU04xIEdFTkVSQUxJWkVEVElNRS4KLQotICAgZ2V0X3NlcmlhbCgpCi0gICAgICAgICAgUmV0dXJuIGEgc3RyIGNvbnRhaW5pbmcgYSBoZXggbnVtYmVyIG9mIHRoZSBzZXJpYWwgb2YgdGhlCi0gICAgICAgICAgcmV2b2tlZCBjZXJ0aWZpY2F0ZS4KLQotICAgc2V0X3JlYXNvbihyZWFzb24pCi0gICAgICAgICAgU2V0IHRoZSByZXZvY2F0aW9uIHJlYXNvbi4gcmVhc29uIG11c3QgYmUgTm9uZSBvciBhIHN0cmluZywgYnV0Ci0gICAgICAgICAgdGhlIHZhbHVlcyBhcmUgbGltaXRlZC4gU3BhY2VzIGFuZCBjYXNlIGFyZSBpZ25vcmVkLiBTZWUKLSAgICAgICAgICBhbGxfcmVhc29ucy4KLQotICAgc2V0X3Jldl9kYXRlKGRhdGUpCi0gICAgICAgICAgU2V0IHRoZSByZXZvY2F0aW9uIGRhdGUuIFRoZSBzdHJpbmcgaXMgZm9ybWF0dGVkIGFzIGFuIEFTTjEKLSAgICAgICAgICBHRU5FUkFMSVpFRFRJTUUuCi0KLSAgIHNldF9zZXJpYWwoc2VyaWFsKQotICAgICAgICAgIHNlcmlhbCBpcyBhIHN0cmluZyBjb250YWluaW5nIGEgaGV4IG51bWJlciBvZiB0aGUgc2VyaWFsIG9mIHRoZQotICAgICAgICAgIHJldm9rZWQgY2VydGlmaWNhdGUuCi0KLQotMy4yIHJhbmQgLS0gQW4gaW50ZXJmYWNlIHRvIHRoZSBPcGVuU1NMIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgotCi0gICBUaGlzIG1vZHVsZSBoYW5kbGVzIHRoZSBPcGVuU1NMIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciAoUFJORykKLSAgIGFuZCBkZWNsYXJlcyB0aGUgZm9sbG93aW5nOgotCi0gICBhZGQoc3RyaW5nLCBlbnRyb3B5KQotICAgICAgICAgIE1peCBieXRlcyBmcm9tIHN0cmluZyBpbnRvIHRoZSBQUk5HIHN0YXRlLiBUaGUgZW50cm9weSBhcmd1bWVudAotICAgICAgICAgIGlzICh0aGUgbG93ZXIgYm91bmQgb2YpIGFuIGVzdGltYXRlIG9mIGhvdyBtdWNoIHJhbmRvbW5lc3MgaXMKLSAgICAgICAgICBjb250YWluZWQgaW4gc3RyaW5nLCBtZWFzdXJlZCBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sCi0gICAgICAgICAgc2VlIGUuZy4gUkZDIDE3NTAuCi0KLSAgIGJ5dGVzKG51bV9ieXRlcykKLSAgICAgICAgICBHZXQgc29tZSByYW5kb20gYnl0ZXMgZnJvbSB0aGUgUFJORyBhcyBhIHN0cmluZy4KLQotICAgICAgICAgIFRoaXMgaXMgYSB3cmFwcGVyIGZvciB0aGUgQyBmdW5jdGlvbiBSQU5EX2J5dGVzLgotCi0gICBjbGVhbnVwKCkKLSAgICAgICAgICBFcmFzZSB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlIFBSTkcuCi0KLSAgICAgICAgICBUaGlzIGlzIGEgd3JhcHBlciBmb3IgdGhlIEMgZnVuY3Rpb24gUkFORF9jbGVhbnVwLgotCi0gICBlZ2QocGF0aFssIGJ5dGVzXSkKLSAgICAgICAgICBRdWVyeSB0aGUgRW50cm9weSBHYXRoZXJpbmcgRGFlbW9uXjIgb24gc29ja2V0IHBhdGggZm9yIGJ5dGVzCi0gICAgICAgICAgYnl0ZXMgb2YgcmFuZG9tIGRhdGEgYW5kIGFuZCB1c2VzIGFkZCB0byBzZWVkIHRoZSBQUk5HLiBUaGUKLSAgICAgICAgICBkZWZhdWx0IHZhbHVlIG9mIGJ5dGVzIGlzIDI1NS4KLQotICAgbG9hZF9maWxlKHBhdGhbLCBieXRlc10pCi0gICAgICAgICAgUmVhZCBieXRlcyBieXRlcyAob3IgYWxsIG9mIGl0LCBpZiBieXRlcyBpcyBuZWdhdGl2ZSkgb2YgZGF0YQotICAgICAgICAgIGZyb20gdGhlIGZpbGUgcGF0aCB0byBzZWVkIHRoZSBQUk5HLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBieXRlcwotICAgICAgICAgIGlzIC0xLgotCi0gICBzY3JlZW4oKQotICAgICAgICAgIEFkZCB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgc2NyZWVuIHRvIHRoZSBQUk5HIHN0YXRlLgotICAgICAgICAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KLQotICAgc2VlZChzdHJpbmcpCi0gICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYWRkIHdpdGggZW50cm9weSBhcyB0aGUgbGVuZ3RoIG9mCi0gICAgICAgICAgdGhlIHN0cmluZy4KLQotICAgc3RhdHVzKCkKLSAgICAgICAgICBSZXR1cm5zIHRydWUgaWYgdGhlIFBSTkcgaGFzIGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEsIGFuZAotICAgICAgICAgIGZhbHNlIG90aGVyd2lzZS4KLQotICAgd3JpdGVfZmlsZShwYXRoKQotICAgICAgICAgIFdyaXRlIGEgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyAoY3VycmVudGx5IDEwMjQpIHRvIHRoZSBmaWxlCi0gICAgICAgICAgcGF0aC4gVGhpcyBmaWxlIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCBsb2FkX2ZpbGUgdG8gc2VlZCB0aGUgUFJORwotICAgICAgICAgIGFnYWluLgotCi0gICBleGNlcHRpb24gRXJyb3IKLSAgICAgICAgICBJZiB0aGUgY3VycmVudCBSQU5EIG1ldGhvZCBzdXBwb3J0cyBhbnkgZXJyb3JzLCB0aGlzIGlzIHJhaXNlZAotICAgICAgICAgIHdoZW4gbmVlZGVkLiBUaGUgZGVmYXVsdCBtZXRob2QgZG9lcyBub3QgcmFpc2UgdGhpcyB3aGVuIHRoZQotICAgICAgICAgIGVudHJvcHkgcG9vbCBpcyBkZXBsZXRlZC4KLQotICAgICAgICAgIFdoZW5ldmVyIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBkaXJlY3RseSwgaXQgaGFzIGEgbGlzdCBvZgotICAgICAgICAgIGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIE9wZW5TU0wgZXJyb3IgcXVldWUsIHdoZXJlIGVhY2ggaXRlbSBpcwotICAgICAgICAgIGEgdHVwbGUgKGxpYiwgZnVuY3Rpb24sIHJlYXNvbikuIEhlcmUgbGliLCBmdW5jdGlvbiBhbmQgcmVhc29uCi0gICAgICAgICAgYXJlIGFsbCBzdHJpbmdzLCBkZXNjcmliaW5nIHdoZXJlIGFuZCB3aGF0IHRoZSBwcm9ibGVtIGlzLiBTZWUKLSAgICAgICAgICBlcnIoMykgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLQotMy4zIFNTTCAtLSBBbiBpbnRlcmZhY2UgdG8gdGhlIFNTTC1zcGVjaWZpYyBwYXJ0cyBvZiBPcGVuU1NMCi0KLSAgIFRoaXMgbW9kdWxlIGhhbmRsZXMgdGhpbmdzIHNwZWNpZmljIHRvIFNTTC4gVGhlcmUgYXJlIHR3byBvYmplY3RzCi0gICBkZWZpbmVkOiBDb250ZXh0LCBDb25uZWN0aW9uLgotCi0gICBTU0x2Ml9NRVRIT0QKLQotICAgU1NMdjNfTUVUSE9ECi0KLSAgIFNTTHYyM19NRVRIT0QKLQotICAgVExTdjFfTUVUSE9ECi0gICAgICAgICAgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgZGlmZmVyZW50IFNTTCBtZXRob2RzIHRvIHVzZSB3aGVuCi0gICAgICAgICAgY3JlYXRpbmcgYSBjb250ZXh0IG9iamVjdC4KLQotICAgVkVSSUZZX05PTkUKLQotICAgVkVSSUZZX1BFRVIKLQotICAgVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUCi0gICAgICAgICAgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdmVyaWZpY2F0aW9uIG1vZGUgdXNlZCBieSB0aGUKLSAgICAgICAgICBDb250ZXh0IG9iamVjdCdzIHNldF92ZXJpZnkgbWV0aG9kLgotCi0gICBGSUxFVFlQRV9QRU0KLQotICAgRklMRVRZUEVfQVNOMQotICAgICAgICAgIEZpbGUgdHlwZSBjb25zdGFudHMgdXNlZCB3aXRoIHRoZSB1c2VfY2VydGlmaWNhdGVfZmlsZSBhbmQKLSAgICAgICAgICB1c2VfcHJpdmF0ZWtleV9maWxlIG1ldGhvZHMgb2YgQ29udGV4dCBvYmplY3RzLgotCi0gICBPUF9TSU5HTEVfREhfVVNFCi0KLSAgIE9QX0VQSEVNRVJBTF9SU0EKLQotICAgT1BfTk9fU1NMdjIKLQotICAgT1BfTk9fU1NMdjMKLQotICAgT1BfTk9fVExTdjEKLSAgICAgICAgICBDb25zdGFudHMgdXNlZCB3aXRoIHNldF9vcHRpb25zIG9mIENvbnRleHQgb2JqZWN0cy4KLSAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFIG1lYW5zIHRvIGFsd2F5cyBjcmVhdGUgYSBuZXcga2V5IHdoZW4gdXNpbmcKLSAgICAgICAgICBlcGhlbWVyYWwgRGlmZmllLUhlbGxtYW4uIE9QX0VQSEVNRVJBTF9SU0EgbWVhbnMgdG8gYWx3YXlzIHVzZQotICAgICAgICAgIGVwaGVtZXJhbCBSU0Ega2V5cyB3aGVuIGRvaW5nIFJTQSBvcGVyYXRpb25zLiBPUF9OT19TU0x2MiwKLSAgICAgICAgICBPUF9OT19TU0x2MyBhbmQgT1BfTk9fVExTdjEgbWVhbnMgdG8gZGlzYWJsZSB0aG9zZSBzcGVjaWZpYwotICAgICAgICAgIHByb3RvY29scy4gVGhpcyBpcyBpbnRlcmVzdGluZyBpZiB5b3UncmUgdXNpbmcgZS5nLgotICAgICAgICAgIFNTTHYyM19NRVRIT0QgdG8gZ2V0IGFuIFNTTHYyLWNvbXBhdGlibGUgaGFuZHNoYWtlLCBidXQgZG9uJ3QKLSAgICAgICAgICB3YW50IHRvIHVzZSBTU0x2Mi4KLQotICAgU1NMRUFZX1ZFUlNJT04KLQotICAgU1NMRUFZX0NGTEFHUwotCi0gICBTU0xFQVlfQlVJTFRfT04KLQotICAgU1NMRUFZX1BMQVRGT1JNCi0KLSAgIFNTTEVBWV9ESVIKLSAgICAgICAgICBDb25zdGFudHMgdXNlZCB3aXRoIFNTTGVheV92ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCBPcGVuU1NMCi0gICAgICAgICAgdmVyc2lvbiBpbmZvcm1hdGlvbiB0byByZXRyaWV2ZS4gU2VlIHRoZSBtYW4gcGFnZSBmb3IgdGhlCi0gICAgICAgICAgU1NMZWF5X3ZlcnNpb24gQyBBUEkgZm9yIGRldGFpbHMuCi0KLSAgIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIKLSAgICAgICAgICBBbiBpbnRlZ2VyIGdpdmluZyB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIE9wZW5TU0wgbGlicmFyeSB1c2VkCi0gICAgICAgICAgdG8gYnVpbGQgdGhpcyB2ZXJzaW9uIG9mIHB5T3BlblNTTC4gU2VlIHRoZSBtYW4gcGFnZSBmb3IgdGhlCi0gICAgICAgICAgU1NMZWF5X3ZlcnNpb24gQyBBUEkgZm9yIGRldGFpbHMuCi0KLSAgIFNTTGVheV92ZXJzaW9uKHR5cGUpCi0gICAgICAgICAgUmV0cmlldmUgYSBzdHJpbmcgZGVzY3JpYmluZyBzb21lIGFzcGVjdCBvZiB0aGUgdW5kZXJseWluZwotICAgICAgICAgIE9wZW5TU0wgdmVyc2lvbi4gVGhlIHR5cGUgcGFzc2VkIGluIHNob3VsZCBiZSBvbmUgb2YgdGhlCi0gICAgICAgICAgU1NMRUFZXyogY29uc3RhbnRzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuCi0KLSAgIENvbnRleHRUeXBlCi0gICAgICAgICAgU2VlIENvbnRleHQuCi0KLSAgIGNsYXNzIENvbnRleHQobWV0aG9kKQotICAgICAgICAgIEEgY2xhc3MgcmVwcmVzZW50aW5nIFNTTCBjb250ZXh0cy4gQ29udGV4dHMgZGVmaW5lIHRoZQotICAgICAgICAgIHBhcmFtZXRlcnMgb2Ygb25lIG9yIG1vcmUgU1NMIGNvbm5lY3Rpb25zLgotCi0gICAgICAgICAgbWV0aG9kIHNob3VsZCBiZSBTU0x2Ml9NRVRIT0QsIFNTTHYzX01FVEhPRCwgU1NMdjIzX01FVEhPRCBvcgotICAgICAgICAgIFRMU3YxX01FVEhPRC4KLQotICAgQ29ubmVjdGlvblR5cGUKLSAgICAgICAgICBTZWUgQ29ubmVjdGlvbi4KLQotICAgY2xhc3MgQ29ubmVjdGlvbihjb250ZXh0LCBzb2NrZXQpCi0gICAgICAgICAgQSBjbGFzcyByZXByZXNlbnRpbmcgU1NMIGNvbm5lY3Rpb25zLgotCi0gICAgICAgICAgY29udGV4dCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgQ29udGV4dCBhbmQgc29ja2V0IHNob3VsZCBiZSBhCi0gICAgICAgICAgc29ja2V0IF4zIG9iamVjdC4gc29ja2V0IG1heSBiZSBOb25lOyBpbiB0aGlzIGNhc2UsIHRoZQotICAgICAgICAgIENvbm5lY3Rpb24gaXMgY3JlYXRlZCB3aXRoIGEgbWVtb3J5IEJJTzogc2VlIHRoZSBiaW9fcmVhZCwKLSAgICAgICAgICBiaW9fd3JpdGUsIGFuZCBiaW9fc2h1dGRvd24gbWV0aG9kcy4KLQotICAgZXhjZXB0aW9uIEVycm9yCi0gICAgICAgICAgVGhpcyBleGNlcHRpb24gaXMgdXNlZCBhcyBhIGJhc2UgY2xhc3MgZm9yIHRoZSBvdGhlciBTU0wtcmVsYXRlZAotICAgICAgICAgIGV4Y2VwdGlvbnMsIGJ1dCBtYXkgYWxzbyBiZSByYWlzZWQgZGlyZWN0bHkuCi0KLSAgICAgICAgICBXaGVuZXZlciB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZGlyZWN0bHksIGl0IGhhcyBhIGxpc3Qgb2YKLSAgICAgICAgICBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBPcGVuU1NMIGVycm9yIHF1ZXVlLCB3aGVyZSBlYWNoIGl0ZW0gaXMKLSAgICAgICAgICBhIHR1cGxlIChsaWIsIGZ1bmN0aW9uLCByZWFzb24pLiBIZXJlIGxpYiwgZnVuY3Rpb24gYW5kIHJlYXNvbgotICAgICAgICAgIGFyZSBhbGwgc3RyaW5ncywgZGVzY3JpYmluZyB3aGVyZSBhbmQgd2hhdCB0aGUgcHJvYmxlbSBpcy4gU2VlCi0gICAgICAgICAgZXJyKDMpIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi0gICBleGNlcHRpb24gWmVyb1JldHVybkVycm9yCi0gICAgICAgICAgVGhpcyBleGNlcHRpb24gbWF0Y2hlcyB0aGUgZXJyb3IgcmV0dXJuIGNvZGUKLSAgICAgICAgICBTU0xfRVJST1JfWkVST19SRVRVUk4sIGFuZCBpcyByYWlzZWQgd2hlbiB0aGUgU1NMIENvbm5lY3Rpb24gaGFzCi0gICAgICAgICAgYmVlbiBjbG9zZWQuIEluIFNTTCAzLjAgYW5kIFRMUyAxLjAsIHRoaXMgb25seSBvY2N1cnMgaWYgYQotICAgICAgICAgIGNsb3N1cmUgYWxlcnQgaGFzIG9jY3VycmVkIGluIHRoZSBwcm90b2NvbCwgaS5lLiB0aGUgY29ubmVjdGlvbgotICAgICAgICAgIGhhcyBiZWVuIGNsb3NlZCBjbGVhbmx5LiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseQotICAgICAgICAgIG1lYW4gdGhhdCB0aGUgdHJhbnNwb3J0IGxheWVyIChlLmcuIGEgc29ja2V0KSBoYXMgYmVlbiBjbG9zZWQuCi0KLSAgICAgICAgICBJdCBtYXkgc2VlbSBhIGxpdHRsZSBzdHJhbmdlIHRoYXQgdGhpcyBpcyBhbiBleGNlcHRpb24sIGJ1dCBpdAotICAgICAgICAgIGRvZXMgbWF0Y2ggYW4gU1NMX0VSUk9SIGNvZGUsIGFuZCBpcyB2ZXJ5IGNvbnZlbmllbnQuCi0KLSAgIGV4Y2VwdGlvbiBXYW50UmVhZEVycm9yCi0gICAgICAgICAgVGhlIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlOyB0aGUgc2FtZSBJL08gbWV0aG9kIHNob3VsZCBiZQotICAgICAgICAgIGNhbGxlZCBhZ2FpbiBsYXRlciwgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMuIEFueSBJL08gbWV0aG9kIGNhbgotICAgICAgICAgIGxlYWQgdG8gdGhpcyBzaW5jZSBuZXcgaGFuZHNoYWtlcyBjYW4gb2NjdXIgYXQgYW55IHRpbWUuCi0KLSAgICAgICAgICBUaGUgd2FudGVkIHJlYWQgaXMgZm9yIGRpcnR5IGRhdGEgc2VudCBvdmVyIHRoZSBuZXR3b3JrLCBub3QgdGhlCi0gICAgICAgICAgY2xlYW4gZGF0YSBpbnNpZGUgdGhlIHR1bm5lbC4gRm9yIGEgc29ja2V0IGJhc2VkIFNTTCBjb25uZWN0aW9uLAotICAgICAgICAgIHJlYWQgbWVhbnMgZGF0YSBjb21pbmcgYXQgdXMgb3ZlciB0aGUgbmV0d29yay4gVW50aWwgdGhhdCByZWFkCi0gICAgICAgICAgc3VjY2VlZHMsIHRoZSBhdHRlbXB0ZWQgT3BlblNTTC5TU0wuQ29ubmVjdGlvbi5yZWN2LAotICAgICAgICAgIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24uc2VuZCwgb3IKLSAgICAgICAgICBPcGVuU1NMLlNTTC5Db25uZWN0aW9uLmRvX2hhbmRzaGFrZSBpcyBwcmV2ZW50ZWQgb3IgaW5jb21wbGV0ZS4KLSAgICAgICAgICBZb3UgcHJvYmFibHkgd2FudCB0byBzZWxlY3QoKSBvbiB0aGUgc29ja2V0IGJlZm9yZSB0cnlpbmcgYWdhaW4uCi0KLSAgIGV4Y2VwdGlvbiBXYW50V3JpdGVFcnJvcgotICAgICAgICAgIFNlZSBXYW50UmVhZEVycm9yLiBUaGUgc29ja2V0IHNlbmQgYnVmZmVyIG1heSBiZSB0b28gZnVsbCB0bwotICAgICAgICAgIHdyaXRlIG1vcmUgZGF0YS4KLQotICAgZXhjZXB0aW9uIFdhbnRYNTA5TG9va3VwRXJyb3IKLSAgICAgICAgICBUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgYmVjYXVzZSBhbiBhcHBsaWNhdGlvbiBjYWxsYmFjawotICAgICAgICAgIGhhcyBhc2tlZCB0byBiZSBjYWxsZWQgYWdhaW4uIFRoZSBJL08gbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQKLSAgICAgICAgICBhZ2FpbiBsYXRlciwgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMuIE5vdGU6IFRoaXMgd29uJ3Qgb2NjdXIgaW4KLSAgICAgICAgICB0aGlzIHZlcnNpb24sIGFzIHRoZXJlIGFyZSBubyBzdWNoIGNhbGxiYWNrcyBpbiB0aGlzIHZlcnNpb24uCi0KLSAgIGV4Y2VwdGlvbiBTeXNDYWxsRXJyb3IKLSAgICAgICAgICBUaGUgU3lzQ2FsbEVycm9yIG9jY3VycyB3aGVuIHRoZXJlJ3MgYW4gSS9PIGVycm9yIGFuZCBPcGVuU1NMJ3MKLSAgICAgICAgICBlcnJvciBxdWV1ZSBkb2VzIG5vdCBjb250YWluIGFueSBpbmZvcm1hdGlvbi4gVGhpcyBjYW4gbWVhbiB0d28KLSAgICAgICAgICB0aGluZ3M6IEFuIGVycm9yIGluIHRoZSB0cmFuc3BvcnQgcHJvdG9jb2wsIG9yIGFuIGVuZCBvZiBmaWxlCi0gICAgICAgICAgdGhhdCB2aW9sYXRlcyB0aGUgcHJvdG9jb2wuIFRoZSBwYXJhbWV0ZXIgdG8gdGhlIGV4Y2VwdGlvbiBpcwotICAgICAgICAgIGFsd2F5cyBhIHBhaXIgKGVycm51bSwgZXJyc3RyKS4KLQotCi0gIDMuMy4xIENvbnRleHQgb2JqZWN0cwotCi0gICBDb250ZXh0IG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLSAgIGNoZWNrX3ByaXZhdGVrZXkoKQotICAgICAgICAgIENoZWNrIGlmIHRoZSBwcml2YXRlIGtleSAobG9hZGVkIHdpdGggdXNlX3ByaXZhdGVrZXlbX2ZpbGVdKQotICAgICAgICAgIG1hdGNoZXMgdGhlIGNlcnRpZmljYXRlIChsb2FkZWQgd2l0aCB1c2VfY2VydGlmaWNhdGVbX2ZpbGVdKS4KLSAgICAgICAgICBSZXR1cm5zIE5vbmUgaWYgdGhleSBtYXRjaCwgcmFpc2VzIEVycm9yIG90aGVyd2lzZS4KLQotICAgZ2V0X2FwcF9kYXRhKCkKLSAgICAgICAgICBSZXRyaWV2ZSBhcHBsaWNhdGlvbiBkYXRhIGFzIHNldCBieSBzZXRfYXBwX2RhdGEuCi0KLSAgIGdldF9jZXJ0X3N0b3JlKCkKLSAgICAgICAgICBSZXRyaWV2ZSB0aGUgY2VydGlmaWNhdGUgc3RvcmUgKGEgWDUwOVN0b3JlIG9iamVjdCkgdGhhdCB0aGUKLSAgICAgICAgICBjb250ZXh0IHVzZXMuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkICJ0cnVzdGVkIiBjZXJ0aWZpY2F0ZXMKLSAgICAgICAgICB3aXRob3V0IHVzaW5nIHRoZS4gbG9hZF92ZXJpZnlfbG9jYXRpb25zKCkgbWV0aG9kLgotCi0gICBnZXRfdGltZW91dCgpCi0gICAgICAgICAgUmV0cmlldmUgc2Vzc2lvbiB0aW1lb3V0LCBhcyBzZXQgYnkgc2V0X3RpbWVvdXQuIFRoZSBkZWZhdWx0IGlzCi0gICAgICAgICAgMzAwIHNlY29uZHMuCi0KLSAgIGdldF92ZXJpZnlfZGVwdGgoKQotICAgICAgICAgIFJldHJpZXZlIHRoZSBDb250ZXh0IG9iamVjdCdzIHZlcmlmeSBkZXB0aCwgYXMgc2V0IGJ5Ci0gICAgICAgICAgc2V0X3ZlcmlmeV9kZXB0aC4KLQotICAgZ2V0X3ZlcmlmeV9tb2RlKCkKLSAgICAgICAgICBSZXRyaWV2ZSB0aGUgQ29udGV4dCBvYmplY3QncyB2ZXJpZnkgbW9kZSwgYXMgc2V0IGJ5IHNldF92ZXJpZnkuCi0KLSAgIGxvYWRfY2xpZW50X2NhKHBlbWZpbGUpCi0gICAgICAgICAgUmVhZCBhIGZpbGUgd2l0aCBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlcyB0aGF0IHdpbGwgYmUgc2VudCB0bwotICAgICAgICAgIHRoZSBjbGllbnQgd2hlbiByZXF1ZXN0aW5nIGEgY2xpZW50IGNlcnRpZmljYXRlLgotCi0gICBzZXRfY2xpZW50X2NhX2xpc3QoY2VydGlmaWNhdGVfYXV0aG9yaXRpZXMpCi0gICAgICAgICAgUmVwbGFjZSB0aGUgY3VycmVudCBsaXN0IG9mIHByZWZlcnJlZCBjZXJ0aWZpY2F0ZSBzaWduZXJzIHRoYXQKLSAgICAgICAgICB3b3VsZCBiZSBzZW50IHRvIHRoZSBjbGllbnQgd2hlbiByZXF1ZXN0aW5nIGEgY2xpZW50IGNlcnRpZmljYXRlCi0gICAgICAgICAgd2l0aCB0aGUgY2VydGlmaWNhdGVfYXV0aG9yaXRpZXMgc2VxdWVuY2Ugb2YKLSAgICAgICAgICBPcGVuU1NMLmNyeXB0by5YNTA5TmFtZXMuCi0KLSAgICAgICAgICBOZXcgaW4gdmVyc2lvbiAwLjEwLgotCi0gICBhZGRfY2xpZW50X2NhKGNlcnRpZmljYXRlX2F1dGhvcml0eSkKLSAgICAgICAgICBFeHRyYWN0IGEgT3BlblNTTC5jcnlwdG8uWDUwOU5hbWUgZnJvbSB0aGUgY2VydGlmaWNhdGVfYXV0aG9yaXR5Ci0gICAgICAgICAgT3BlblNTTC5jcnlwdG8uWDUwOSBjZXJ0aWZpY2F0ZSBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0IG9mCi0gICAgICAgICAgcHJlZmVycmVkIGNlcnRpZmljYXRlIHNpZ25lcnMgc2VudCB0byB0aGUgY2xpZW50IHdoZW4gcmVxdWVzdGluZwotICAgICAgICAgIGEgY2xpZW50IGNlcnRpZmljYXRlLgotCi0gICAgICAgICAgTmV3IGluIHZlcnNpb24gMC4xMC4KLQotICAgbG9hZF92ZXJpZnlfbG9jYXRpb25zKHBlbWZpbGUsIGNhcGF0aCkKLSAgICAgICAgICBTcGVjaWZ5IHdoZXJlIENBIGNlcnRpZmljYXRlcyBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzIGFyZQotICAgICAgICAgIGxvY2F0ZWQuIFRoZXNlIGFyZSB0cnVzdGVkIGNlcnRpZmljYXRlcy4gTm90ZSB0aGF0IHRoZQotICAgICAgICAgIGNlcnRpZmljYXRlcyBoYXZlIHRvIGJlIGluIFBFTSBmb3JtYXQuIElmIGNhcGF0aCBpcyBwYXNzZWQsIGl0Ci0gICAgICAgICAgbXVzdCBiZSBhIGRpcmVjdG9yeSBwcmVwYXJlZCB1c2luZyB0aGUgY19yZWhhc2ggdG9vbCBpbmNsdWRlZAotICAgICAgICAgIHdpdGggT3BlblNTTC4gRWl0aGVyLCBidXQgbm90IGJvdGgsIG9mIHBlbWZpbGUgb3IgY2FwYXRoIG1heSBiZQotICAgICAgICAgIE5vbmUuCi0KLSAgIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCi0gICAgICAgICAgU3BlY2lmeSB0aGF0IHRoZSBwbGF0Zm9ybSBwcm92aWRlZCBDQSBjZXJ0aWZpY2F0ZXMgYXJlIHRvIGJlCi0gICAgICAgICAgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzLiBUaGlzIG1ldGhvZCBtYXkgbm90IHdvcmsKLSAgICAgICAgICBwcm9wZXJseSBvbiBPUyBYLgotCi0gICBsb2FkX3RtcF9kaChkaGZpbGUpCi0gICAgICAgICAgTG9hZCBwYXJhbWV0ZXJzIGZvciBFcGhlbWVyYWwgRGlmZmllLUhlbGxtYW4gZnJvbSBkaGZpbGUuCi0KLSAgIHNldF9hcHBfZGF0YShkYXRhKQotICAgICAgICAgIEFzc29jaWF0ZSBkYXRhIHdpdGggdGhpcyBDb250ZXh0IG9iamVjdC4gZGF0YSBjYW4gYmUgcmV0cmlldmVkCi0gICAgICAgICAgbGF0ZXIgdXNpbmcgdGhlIGdldF9hcHBfZGF0YSBtZXRob2QuCi0KLSAgIHNldF9jaXBoZXJfbGlzdChjaXBoZXJzKQotICAgICAgICAgIFNldCB0aGUgbGlzdCBvZiBjaXBoZXJzIHRvIGJlIHVzZWQgaW4gdGhpcyBjb250ZXh0LiBTZWUgdGhlCi0gICAgICAgICAgT3BlblNTTCBtYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24gKGUuZy4gY2lwaGVycygxKSkKLQotICAgc2V0X2luZm9fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgICAgICAgU2V0IHRoZSBpbmZvcm1hdGlvbiBjYWxsYmFjayB0byBjYWxsYmFjay4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlCi0gICAgICAgICAgY2FsbGVkIGZyb20gdGltZSB0byB0aW1lIGR1cmluZyBTU0wgaGFuZHNoYWtlcy4gY2FsbGJhY2sgc2hvdWxkCi0gICAgICAgICAgdGFrZSB0aHJlZSBhcmd1bWVudHM6IGEgQ29ubmVjdGlvbiBvYmplY3QgYW5kIHR3byBpbnRlZ2Vycy4gVGhlCi0gICAgICAgICAgZmlyc3QgaW50ZWdlciBzcGVjaWZpZXMgd2hlcmUgaW4gdGhlIFNTTCBoYW5kc2hha2UgdGhlIGZ1bmN0aW9uCi0gICAgICAgICAgd2FzIGNhbGxlZCwgYW5kIHRoZSBvdGhlciB0aGUgcmV0dXJuIGNvZGUgZnJvbSBhIChwb3NzaWJseQotICAgICAgICAgIGZhaWxlZCkgaW50ZXJuYWwgZnVuY3Rpb24gY2FsbC4KLQotICAgc2V0X29wdGlvbnMob3B0aW9ucykKLSAgICAgICAgICBBZGQgU1NMIG9wdGlvbnMuIE9wdGlvbnMgeW91IGhhdmUgc2V0IGJlZm9yZSBhcmUgbm90IGNsZWFyZWQhCi0gICAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGUgT1BfKiBjb25zdGFudHMuCi0KLSAgIHNldF9wYXNzd2RfY2IoY2FsbGJhY2tbLCB1c2VyZGF0YV0pCi0gICAgICAgICAgU2V0IHRoZSBwYXNzcGhyYXNlIGNhbGxiYWNrIHRvIGNhbGxiYWNrLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUKLSAgICAgICAgICBjYWxsZWQgd2hlbiBhIHByaXZhdGUga2V5IHdpdGggYSBwYXNzcGhyYXNlIGlzIGxvYWRlZC4gY2FsbGJhY2sKLSAgICAgICAgICBtdXN0IGFjY2VwdCB0aHJlZSBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gRmlyc3QsIGFuIGludGVnZXIgZ2l2aW5nCi0gICAgICAgICAgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBwYXNzcGhyYXNlIGl0IG1heSByZXR1cm4uIElmIHRoZQotICAgICAgICAgIHJldHVybmVkIHBhc3NwaHJhc2UgaXMgbG9uZ2VyIHRoYW4gdGhpcywgaXQgd2lsbCBiZSB0cnVuY2F0ZWQuCi0gICAgICAgICAgU2Vjb25kLCBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggd2lsbCBiZSB0cnVlIGlmIHRoZSB1c2VyIHNob3VsZCBiZQotICAgICAgICAgIHByb21wdGVkIGZvciB0aGUgcGFzc3BocmFzZSB0d2ljZSBhbmQgdGhlIGNhbGxiYWNrIHNob3VsZCB2ZXJpZnkKLSAgICAgICAgICB0aGF0IHRoZSB0d28gdmFsdWVzIHN1cHBsaWVkIGFyZSBlcXVhbC4gVGhpcmQsIHRoZSB2YWx1ZSBnaXZlbgotICAgICAgICAgIGFzIHRoZSB1c2VyZGF0YSBwYXJhbWV0ZXIgdG8gc2V0X3Bhc3N3ZF9jYi4gSWYgYW4gZXJyb3Igb2NjdXJzLAotICAgICAgICAgIGNhbGxiYWNrIHNob3VsZCByZXR1cm4gYSBmYWxzZSB2YWx1ZSAoZS5nLiBhbiBlbXB0eSBzdHJpbmcpLgotCi0gICBzZXRfc2Vzc2lvbl9pZChuYW1lKQotICAgICAgICAgIFNldCB0aGUgY29udGV4dCBuYW1lIHdpdGhpbiB3aGljaCBhIHNlc3Npb24gY2FuIGJlIHJldXNlZCBmb3IKLSAgICAgICAgICB0aGlzIENvbnRleHQgb2JqZWN0LiBUaGlzIGlzIG5lZWRlZCB3aGVuIGRvaW5nIHNlc3Npb24KLSAgICAgICAgICByZXN1bXB0aW9uLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSBmb3IgYSBzdG9yZWQgc2Vzc2lvbiB0byBrbm93Ci0gICAgICAgICAgd2hpY2ggQ29udGV4dCBvYmplY3QgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLiBuYW1lIG1heSBiZSBhbnkKLSAgICAgICAgICBiaW5hcnkgZGF0YS4KLQotICAgc2V0X3RpbWVvdXQodGltZW91dCkKLSAgICAgICAgICBTZXQgdGhlIHRpbWVvdXQgZm9yIG5ld2x5IGNyZWF0ZWQgc2Vzc2lvbnMgZm9yIHRoaXMgQ29udGV4dAotICAgICAgICAgIG9iamVjdCB0byB0aW1lb3V0LiB0aW1lb3V0IG11c3QgYmUgZ2l2ZW4gaW4gKHdob2xlKSBzZWNvbmRzLiBUaGUKLSAgICAgICAgICBkZWZhdWx0IHZhbHVlIGlzIDMwMCBzZWNvbmRzLiBTZWUgdGhlIE9wZW5TU0wgbWFudWFsIGZvciBtb3JlCi0gICAgICAgICAgaW5mb3JtYXRpb24gKGUuZy4gU1NMX0NUWF9zZXRfdGltZW91dCgzKSkuCi0KLSAgIHNldF92ZXJpZnkobW9kZSwgY2FsbGJhY2spCi0gICAgICAgICAgU2V0IHRoZSB2ZXJpZmljYXRpb24gZmxhZ3MgZm9yIHRoaXMgQ29udGV4dCBvYmplY3QgdG8gbW9kZSBhbmQKLSAgICAgICAgICBzcGVjaWZ5IHRoYXQgY2FsbGJhY2sgc2hvdWxkIGJlIHVzZWQgZm9yIHZlcmlmaWNhdGlvbiBjYWxsYmFja3MuCi0gICAgICAgICAgbW9kZSBzaG91bGQgYmUgb25lIG9mIFZFUklGWV9OT05FIGFuZCBWRVJJRllfUEVFUi4gSWYKLSAgICAgICAgICBWRVJJRllfUEVFUiBpcyB1c2VkLCBtb2RlIGNhbiBiZSBPUjplZCB3aXRoCi0gICAgICAgICAgVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUIGFuZCBWRVJJRllfQ0xJRU5UX09OQ0UgdG8gZnVydGhlcgotICAgICAgICAgIGNvbnRyb2wgdGhlIGJlaGF2aW91ci4gY2FsbGJhY2sgc2hvdWxkIHRha2UgZml2ZSBhcmd1bWVudHM6IEEKLSAgICAgICAgICBDb25uZWN0aW9uIG9iamVjdCwgYW4gWDUwOSBvYmplY3QsIGFuZCB0aHJlZSBpbnRlZ2VyIHZhcmlhYmxlcywKLSAgICAgICAgICB3aGljaCBhcmUgaW4gdHVybiBwb3RlbnRpYWwgZXJyb3IgbnVtYmVyLCBlcnJvciBkZXB0aCBhbmQgcmV0dXJuCi0gICAgICAgICAgY29kZS4gY2FsbGJhY2sgc2hvdWxkIHJldHVybiB0cnVlIGlmIHZlcmlmaWNhdGlvbiBwYXNzZXMgYW5kCi0gICAgICAgICAgZmFsc2Ugb3RoZXJ3aXNlLgotCi0gICBzZXRfdmVyaWZ5X2RlcHRoKGRlcHRoKQotICAgICAgICAgIFNldCB0aGUgbWF4aW11bSBkZXB0aCBmb3IgdGhlIGNlcnRpZmljYXRlIGNoYWluIHZlcmlmaWNhdGlvbgotICAgICAgICAgIHRoYXQgc2hhbGwgYmUgYWxsb3dlZCBmb3IgdGhpcyBDb250ZXh0IG9iamVjdC4KLQotICAgdXNlX2NlcnRpZmljYXRlKGNlcnQpCi0gICAgICAgICAgVXNlIHRoZSBjZXJ0aWZpY2F0ZSBjZXJ0IHdoaWNoIGhhcyB0byBiZSBhIFg1MDkgb2JqZWN0LgotCi0gICBhZGRfZXh0cmFfY2hhaW5fY2VydChjZXJ0KQotICAgICAgICAgIEFkZHMgdGhlIGNlcnRpZmljYXRlIGNlcnQsIHdoaWNoIGhhcyB0byBiZSBhIFg1MDkgb2JqZWN0LCB0byB0aGUKLSAgICAgICAgICBjZXJ0aWZpY2F0ZSBjaGFpbiBwcmVzZW50ZWQgdG9nZXRoZXIgd2l0aCB0aGUgY2VydGlmaWNhdGUuCi0KLSAgIHVzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlKGZpbGUpCi0gICAgICAgICAgTG9hZCBhIGNlcnRpZmljYXRlIGNoYWluIGZyb20gZmlsZSB3aGljaCBtdXN0IGJlIFBFTSBlbmNvZGVkLgotCi0gICB1c2VfcHJpdmF0ZWtleShwa2V5KQotICAgICAgICAgIFVzZSB0aGUgcHJpdmF0ZSBrZXkgcGtleSB3aGljaCBoYXMgdG8gYmUgYSBQS2V5IG9iamVjdC4KLQotICAgdXNlX2NlcnRpZmljYXRlX2ZpbGUoZmlsZVssIGZvcm1hdF0pCi0gICAgICAgICAgTG9hZCB0aGUgZmlyc3QgY2VydGlmaWNhdGUgZm91bmQgaW4gZmlsZS4gVGhlIGNlcnRpZmljYXRlIG11c3QKLSAgICAgICAgICBiZSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSBmb3JtYXQsIHdoaWNoIGlzIGVpdGhlcgotICAgICAgICAgIEZJTEVUWVBFX1BFTSBvciBGSUxFVFlQRV9BU04xLiBUaGUgZGVmYXVsdCBpcyBGSUxFVFlQRV9QRU0uCi0KLSAgIHVzZV9wcml2YXRla2V5X2ZpbGUoZmlsZVssIGZvcm1hdF0pCi0gICAgICAgICAgTG9hZCB0aGUgZmlyc3QgcHJpdmF0ZSBrZXkgZm91bmQgaW4gZmlsZS4gVGhlIHByaXZhdGUga2V5IG11c3QKLSAgICAgICAgICBiZSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSBmb3JtYXQsIHdoaWNoIGlzIGVpdGhlcgotICAgICAgICAgIEZJTEVUWVBFX1BFTSBvciBGSUxFVFlQRV9BU04xLiBUaGUgZGVmYXVsdCBpcyBGSUxFVFlQRV9QRU0uCi0KLSAgIHNldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAgICAgICBTcGVjaWZ5IGEgb25lLWFyZ3VtZW50IGNhbGxhYmxlIHRvIHVzZSBhcyB0aGUgVExTIGV4dGVuc2lvbgotICAgICAgICAgIHNlcnZlciBuYW1lIGNhbGxiYWNrLiBXaGVuIGEgY29ubmVjdGlvbiB1c2luZyB0aGUgc2VydmVyIG5hbWUKLSAgICAgICAgICBleHRlbnNpb24gaXMgbWFkZSB1c2luZyB0aGlzIGNvbnRleHQsIHRoZSBjYWxsYmFjayB3aWxsIGJlCi0gICAgICAgICAgaW52b2tlZCB3aXRoIHRoZSBDb25uZWN0aW9uIGluc3RhbmNlLiBOZXcgaW4gdmVyc2lvbiAwLjEzLgotCi0KLSAgMy4zLjIgQ29ubmVjdGlvbiBvYmplY3RzCi0KLSAgIENvbm5lY3Rpb24gb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotICAgYWNjZXB0KCkKLSAgICAgICAgICBDYWxsIHRoZSBhY2NlcHQgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBhbmQgc2V0IHVwIFNTTAotICAgICAgICAgIG9uIHRoZSByZXR1cm5lZCBzb2NrZXQsIHVzaW5nIHRoZSBDb250ZXh0IG9iamVjdCBzdXBwbGllZCB0bwotICAgICAgICAgIHRoaXMgQ29ubmVjdGlvbiBvYmplY3QgYXQgY3JlYXRpb24uIFJldHVybnMgYSBwYWlyIChjb25uLAotICAgICAgICAgIGFkZHJlc3MpLiB3aGVyZSBjb25uIGlzIHRoZSBuZXcgQ29ubmVjdGlvbiBvYmplY3QgY3JlYXRlZCwgYW5kCi0gICAgICAgICAgYWRkcmVzcyBpcyBhcyByZXR1cm5lZCBieSB0aGUgc29ja2V0J3MgYWNjZXB0LgotCi0gICBiaW5kKGFkZHJlc3MpCi0gICAgICAgICAgQ2FsbCB0aGUgYmluZCBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LgotCi0gICBjbG9zZSgpCi0gICAgICAgICAgQ2FsbCB0aGUgY2xvc2UgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4gTm90ZTogSWYgeW91Ci0gICAgICAgICAgd2FudCBjb3JyZWN0IFNTTCBjbG9zdXJlLCB5b3UgbmVlZCB0byBjYWxsIHRoZSBzaHV0ZG93biBtZXRob2QKLSAgICAgICAgICBmaXJzdC4KLQotICAgY29ubmVjdChhZGRyZXNzKQotICAgICAgICAgIENhbGwgdGhlIGNvbm5lY3QgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBhbmQgc2V0IHVwIFNTTAotICAgICAgICAgIG9uIHRoZSBzb2NrZXQsIHVzaW5nIHRoZSBDb250ZXh0IG9iamVjdCBzdXBwbGllZCB0byB0aGlzCi0gICAgICAgICAgQ29ubmVjdGlvbiBvYmplY3QgYXQgY3JlYXRpb24uCi0KLSAgIGNvbm5lY3RfZXgoYWRkcmVzcykKLSAgICAgICAgICBDYWxsIHRoZSBjb25uZWN0X2V4IG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQgYW5kIHNldCB1cAotICAgICAgICAgIFNTTCBvbiB0aGUgc29ja2V0LCB1c2luZyB0aGUgQ29udGV4dCBvYmplY3Qgc3VwcGxpZWQgdG8gdGhpcwotICAgICAgICAgIENvbm5lY3Rpb24gb2JqZWN0IGF0IGNyZWF0aW9uLiBOb3RlIHRoYXQgaWYgdGhlIGNvbm5lY3RfZXgKLSAgICAgICAgICBtZXRob2Qgb2YgdGhlIHNvY2tldCBkb2Vzbid0IHJldHVybiAwLCBTU0wgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuCi0KLSAgIGRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgUGVyZm9ybSBhbiBTU0wgaGFuZHNoYWtlICh1c3VhbGx5IGNhbGxlZCBhZnRlciByZW5lZ290aWF0ZSBvcgotICAgICAgICAgIG9uZSBvZiBzZXRfYWNjZXB0X3N0YXRlIG9yIHNldF9hY2NlcHRfc3RhdGUpLiBUaGlzIGNhbiByYWlzZSB0aGUKLSAgICAgICAgICBzYW1lIGV4Y2VwdGlvbnMgYXMgc2VuZCBhbmQgcmVjdi4KLQotICAgZmlsZW5vKCkKLSAgICAgICAgICBSZXRyaWV2ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIG51bWJlciBmb3IgdGhlIHVuZGVybHlpbmcgc29ja2V0LgotCi0gICBsaXN0ZW4oYmFja2xvZykKLSAgICAgICAgICBDYWxsIHRoZSBsaXN0ZW4gbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLQotICAgZ2V0X2FwcF9kYXRhKCkKLSAgICAgICAgICBSZXRyaWV2ZSBhcHBsaWNhdGlvbiBkYXRhIGFzIHNldCBieSBzZXRfYXBwX2RhdGEuCi0KLSAgIGdldF9jaXBoZXJfbGlzdCgpCi0gICAgICAgICAgUmV0cmlldmUgdGhlIGxpc3Qgb2YgY2lwaGVycyB1c2VkIGJ5IHRoZSBDb25uZWN0aW9uIG9iamVjdC4KLSAgICAgICAgICBXQVJOSU5HOiBUaGlzIEFQSSBoYXMgY2hhbmdlZC4gSXQgdXNlZCB0byB0YWtlIGFuIG9wdGlvbmFsCi0gICAgICAgICAgcGFyYW1ldGVyIGFuZCBqdXN0IHJldHVybiBhIHN0cmluZywgYnV0IG5vdCBpdCByZXR1cm5zIHRoZQotICAgICAgICAgIGVudGlyZSBsaXN0IGluIG9uZSBnby4KLQotICAgZ2V0X2NsaWVudF9jYV9saXN0KCkKLSAgICAgICAgICBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBwcmVmZXJyZWQgY2xpZW50IGNlcnRpZmljYXRlIGlzc3VlcnMgc2VudAotICAgICAgICAgIGJ5IHRoZSBzZXJ2ZXIgYXMgT3BlblNTTC5jcnlwdG8uWDUwOU5hbWUgb2JqZWN0cy4KLQotICAgICAgICAgIElmIHRoaXMgaXMgYSBjbGllbnQgQ29ubmVjdGlvbiwgdGhlIGxpc3Qgd2lsbCBiZSBlbXB0eSB1bnRpbCB0aGUKLSAgICAgICAgICBjb25uZWN0aW9uIHdpdGggdGhlIHNlcnZlciBpcyBlc3RhYmxpc2hlZC4KLQotICAgICAgICAgIElmIHRoaXMgaXMgYSBzZXJ2ZXIgQ29ubmVjdGlvbiwgcmV0dXJuIHRoZSBsaXN0IG9mIGNlcnRpZmljYXRlCi0gICAgICAgICAgYXV0aG9yaXRpZXMgdGhhdCB3aWxsIGJlIHNlbnQgb3IgaGFzIGJlZW4gc2VudCB0byB0aGUgY2xpZW50LCBhcwotICAgICAgICAgIGNvbnRyb2xsZWQgYnkgdGhpcyBDb25uZWN0aW9uJ3MgQ29udGV4dC4KLQotICAgICAgICAgIE5ldyBpbiB2ZXJzaW9uIDAuMTAuCi0KLSAgIGdldF9jb250ZXh0KCkKLSAgICAgICAgICBSZXRyaWV2ZSB0aGUgQ29udGV4dCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQ29ubmVjdGlvbi4KLQotICAgc2V0X2NvbnRleHQoY29udGV4dCkKLSAgICAgICAgICBTcGVjaWZ5IGEgcmVwbGFjZW1lbnQgQ29udGV4dCBvYmplY3QgZm9yIHRoaXMgQ29ubmVjdGlvbi4KLQotICAgZ2V0X3BlZXJfY2VydGlmaWNhdGUoKQotICAgICAgICAgIFJldHJpZXZlIHRoZSBvdGhlciBzaWRlJ3MgY2VydGlmaWNhdGUgKGlmIGFueSkKLQotICAgZ2V0X3BlZXJfY2VydF9jaGFpbigpCi0gICAgICAgICAgUmV0cmlldmUgdGhlIHR1cGxlIG9mIHRoZSBvdGhlciBzaWRlJ3MgY2VydGlmaWNhdGUgY2hhaW4gKGlmCi0gICAgICAgICAgYW55KQotCi0gICBnZXRwZWVybmFtZSgpCi0gICAgICAgICAgQ2FsbCB0aGUgZ2V0cGVlcm5hbWUgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLQotICAgZ2V0c29ja25hbWUoKQotICAgICAgICAgIENhbGwgdGhlIGdldHNvY2tuYW1lIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBzb2NrZXQuCi0KLSAgIGdldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWVbLCBidWZsZW5dKQotICAgICAgICAgIENhbGwgdGhlIGdldHNvY2tvcHQgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLQotICAgcGVuZGluZygpCi0gICAgICAgICAgUmV0cmlldmUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSBzYWZlbHkgcmVhZCBmcm9tIHRoZQotICAgICAgICAgIFNTTCBidWZmZXIgKG5vdCB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgYnVmZmVyKS4KLQotICAgcmVjdihidWZzaXplKQotICAgICAgICAgIFJlY2VpdmUgZGF0YSBmcm9tIHRoZSBDb25uZWN0aW9uLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nCi0gICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBkYXRhIHJlY2VpdmVkLiBUaGUgbWF4aW11bSBhbW91bnQgb2YgZGF0YSB0byBiZQotICAgICAgICAgIHJlY2VpdmVkIGF0IG9uY2UsIGlzIHNwZWNpZmllZCBieSBidWZzaXplLgotCi0gICBiaW9fd3JpdGUoYnl0ZXMpCi0gICAgICAgICAgSWYgdGhlIENvbm5lY3Rpb24gd2FzIGNyZWF0ZWQgd2l0aCBhIG1lbW9yeSBCSU8sIHRoaXMgbWV0aG9kIGNhbgotICAgICAgICAgIGJlIHVzZWQgdG8gYWRkIGJ5dGVzIHRvIHRoZSByZWFkIGVuZCBvZiB0aGF0IG1lbW9yeSBCSU8uIFRoZQotICAgICAgICAgIENvbm5lY3Rpb24gY2FuIHRoZW4gcmVhZCB0aGUgYnl0ZXMgKGZvciBleGFtcGxlLCBpbiByZXNwb25zZSB0bwotICAgICAgICAgIGEgY2FsbCB0byByZWN2KS4KLQotICAgcmVuZWdvdGlhdGUoKQotICAgICAgICAgIFJlbmVnb3RpYXRlIHRoZSBTU0wgc2Vzc2lvbi4gQ2FsbCB0aGlzIGlmIHlvdSB3aXNoIHRvIGNoYW5nZQotICAgICAgICAgIGNpcGhlciBzdWl0ZXMgb3IgYW55dGhpbmcgbGlrZSB0aGF0LgotCi0gICBzZW5kKHN0cmluZykKLSAgICAgICAgICBTZW5kIHRoZSBzdHJpbmcgZGF0YSB0byB0aGUgQ29ubmVjdGlvbi4KLQotICAgYmlvX3JlYWQoYnVmc2l6ZSkKLSAgICAgICAgICBJZiB0aGUgQ29ubmVjdGlvbiB3YXMgY3JlYXRlZCB3aXRoIGEgbWVtb3J5IEJJTywgdGhpcyBtZXRob2QgY2FuCi0gICAgICAgICAgYmUgdXNlZCB0byByZWFkIGJ5dGVzIGZyb20gdGhlIHdyaXRlIGVuZCBvZiB0aGF0IG1lbW9yeSBCSU8uCi0gICAgICAgICAgTWFueSBDb25uZWN0aW9uIG1ldGhvZHMgd2lsbCBhZGQgYnl0ZXMgd2hpY2ggbXVzdCBiZSByZWFkIGluCi0gICAgICAgICAgdGhpcyBtYW5uZXIgb3IgdGhlIGJ1ZmZlciB3aWxsIGV2ZW50dWFsbHkgZmlsbCB1cCBhbmQgdGhlCi0gICAgICAgICAgQ29ubmVjdGlvbiB3aWxsIGJlIGFibGUgdG8gdGFrZSBubyBmdXJ0aGVyIGFjdGlvbnMuCi0KLSAgIHNlbmRhbGwoc3RyaW5nKQotICAgICAgICAgIFNlbmQgYWxsIG9mIHRoZSBzdHJpbmcgZGF0YSB0byB0aGUgQ29ubmVjdGlvbi4gVGhpcyBjYWxscyBzZW5kCi0gICAgICAgICAgcmVwZWF0ZWRseSB1bnRpbCBhbGwgZGF0YSBpcyBzZW50LiBJZiBhbiBlcnJvciBvY2N1cnMsIGl0J3MKLSAgICAgICAgICBpbXBvc3NpYmxlIHRvIHRlbGwgaG93IG11Y2ggZGF0YSBoYXMgYmVlbiBzZW50LgotCi0gICBzZXRfYWNjZXB0X3N0YXRlKCkKLSAgICAgICAgICBTZXQgdGhlIGNvbm5lY3Rpb24gdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS4gVGhlIGhhbmRzaGFrZSB3aWxsIGJlCi0gICAgICAgICAgaGFuZGxlZCBhdXRvbWF0aWNhbGx5IGJ5IHJlYWQvd3JpdGUuCi0KLSAgIHNldF9hcHBfZGF0YShkYXRhKQotICAgICAgICAgIEFzc29jaWF0ZSBkYXRhIHdpdGggdGhpcyBDb25uZWN0aW9uIG9iamVjdC4gZGF0YSBjYW4gYmUKLSAgICAgICAgICByZXRyaWV2ZWQgbGF0ZXIgdXNpbmcgdGhlIGdldF9hcHBfZGF0YSBtZXRob2QuCi0KLSAgIHNldF9jb25uZWN0X3N0YXRlKCkKLSAgICAgICAgICBTZXQgdGhlIGNvbm5lY3Rpb24gdG8gd29yayBpbiBjbGllbnQgbW9kZS4gVGhlIGhhbmRzaGFrZSB3aWxsIGJlCi0gICAgICAgICAgaGFuZGxlZCBhdXRvbWF0aWNhbGx5IGJ5IHJlYWQvd3JpdGUuCi0KLSAgIHNldGJsb2NraW5nKGZsYWcpCi0gICAgICAgICAgQ2FsbCB0aGUgc2V0YmxvY2tpbmcgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KLQotICAgc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpCi0gICAgICAgICAgQ2FsbCB0aGUgc2V0c29ja29wdCBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LgotCi0gICBzaHV0ZG93bigpCi0gICAgICAgICAgU2VuZCB0aGUgc2h1dGRvd24gbWVzc2FnZSB0byB0aGUgQ29ubmVjdGlvbi4gUmV0dXJucyB0cnVlIGlmIHRoZQotICAgICAgICAgIHNodXRkb3duIG1lc3NhZ2UgZXhjaGFuZ2UgaXMgY29tcGxldGVkIGFuZCBmYWxzZSBvdGhlcndpc2UgKGluCi0gICAgICAgICAgd2hpY2ggY2FzZSB5b3UgY2FsbCByZWN2KCkgb3Igc2VuZCgpIHdoZW4gdGhlIGNvbm5lY3Rpb24gYmVjb21lcwotICAgICAgICAgIHJlYWRhYmxlL3dyaXRlYWJsZS4KLQotICAgZ2V0X3NodXRkb3duKCkKLSAgICAgICAgICBHZXQgdGhlIHNodXRkb3duIHN0YXRlIG9mIHRoZSBDb25uZWN0aW9uLiBSZXR1cm5zIGEgYml0dmVjdG9yIG9mCi0gICAgICAgICAgZWl0aGVyIG9yIGJvdGggb2YgU0VOVF9TSFVURE9XTiBhbmQgUkVDRUlWRURfU0hVVERPV04uCi0KLSAgIHNldF9zaHV0ZG93bihzdGF0ZSkKLSAgICAgICAgICBTZXQgdGhlIHNodXRkb3duIHN0YXRlIG9mIHRoZSBDb25uZWN0aW9uLiBzdGF0ZSBpcyBhIGJpdHZlY3RvcgotICAgICAgICAgIG9mIGVpdGhlciBvciBib3RoIG9mIFNFTlRfU0hVVERPV04gYW5kIFJFQ0VJVkVEX1NIVVRET1dOLgotCi0gICBzb2NrX3NodXRkb3duKGhvdykKLSAgICAgICAgICBDYWxsIHRoZSBzaHV0ZG93biBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LgotCi0gICBiaW9fc2h1dGRvd24oKQotICAgICAgICAgIElmIHRoZSBDb25uZWN0aW9uIHdhcyBjcmVhdGVkIHdpdGggYSBtZW1vcnkgQklPLCB0aGlzIG1ldGhvZCBjYW4KLSAgICAgICAgICBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgYGBlbmQgb2YgZmlsZScnIGhhcyBiZWVuIHJlYWNoZWQgb24gdGhlCi0gICAgICAgICAgcmVhZCBlbmQgb2YgdGhhdCBtZW1vcnkgQklPLgotCi0gICBzdGF0ZV9zdHJpbmcoKQotICAgICAgICAgIFJldHJpZXZlIGEgdmVyYm9zZSBzdHJpbmcgZGV0YWlsaW5nIHRoZSBzdGF0ZSBvZiB0aGUgQ29ubmVjdGlvbi4KLQotICAgY2xpZW50X3JhbmRvbSgpCi0gICAgICAgICAgUmV0cmlldmUgdGhlIHJhbmRvbSB2YWx1ZSB1c2VkIHdpdGggdGhlIGNsaWVudCBoZWxsbyBtZXNzYWdlLgotCi0gICBzZXJ2ZXJfcmFuZG9tKCkKLSAgICAgICAgICBSZXRyaWV2ZSB0aGUgcmFuZG9tIHZhbHVlIHVzZWQgd2l0aCB0aGUgc2VydmVyIGhlbGxvIG1lc3NhZ2UuCi0KLSAgIG1hc3Rlcl9rZXkoKQotICAgICAgICAgIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgbWFzdGVyIGtleSBmb3IgdGhpcyBzZXNzaW9uLgotCi0gICB3YW50X3JlYWQoKQotICAgICAgICAgIENoZWNrcyBpZiBtb3JlIGRhdGEgaGFzIHRvIGJlIHJlYWQgZnJvbSB0aGUgdHJhbnNwb3J0IGxheWVyIHRvCi0gICAgICAgICAgY29tcGxldGUgYW4gb3BlcmF0aW9uLgotCi0gICB3YW50X3dyaXRlKCkKLSAgICAgICAgICBDaGVja3MgaWYgdGhlcmUgaXMgZGF0YSB0byB3cml0ZSB0byB0aGUgdHJhbnNwb3J0IGxheWVyIHRvCi0gICAgICAgICAgY29tcGxldGUgYW4gb3BlcmF0aW9uLgotCi0gICBzZXRfdGxzZXh0X2hvc3RfbmFtZShuYW1lKQotICAgICAgICAgIFNwZWNpZnkgdGhlIGJ5dGUgc3RyaW5nIHRvIHNlbmQgYXMgdGhlIHNlcnZlciBuYW1lIGluIHRoZSBjbGllbnQKLSAgICAgICAgICBoZWxsbyBtZXNzYWdlLiBOZXcgaW4gdmVyc2lvbiAwLjEzLgotCi0gICBnZXRfc2VydmVybmFtZSgpCi0gICAgICAgICAgR2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VydmVyIG5hbWUgcmVjZWl2ZWQgaW4gdGhlIGNsaWVudCBoZWxsbwotICAgICAgICAgIG1lc3NhZ2UuIE5ldyBpbiB2ZXJzaW9uIDAuMTMuCi0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgSW50ZXJuYWxzCi0KLSAgIFdlIHJhbiBpbnRvIHRocmVlIG1haW4gcHJvYmxlbXMgZGV2ZWxvcGluZyB0aGlzOiBFeGNlcHRpb25zLCBjYWxsYmFja3MKLSAgIGFuZCBhY2Nlc3Npbmcgc29ja2V0IG1ldGhvZHMuIFRoaXMgaXMgd2hhdCB0aGlzIGNoYXB0ZXIgaXMgYWJvdXQuCi0KLQotNC4xIEV4Y2VwdGlvbnMKLQotICAgV2UgcmVhbGl6ZWQgZWFybHkgdGhhdCBtb3N0IG9mIHRoZSBleGNlcHRpb25zIHdvdWxkIGJlIHJhaXNlZCBieSB0aGUKLSAgIEkvTyBmdW5jdGlvbnMgb2YgT3BlblNTTCwgc28gaXQgZmVsdCBuYXR1cmFsIHRvIG1pbWljIE9wZW5TU0wncyBlcnJvcgotICAgY29kZSBzeXN0ZW0sIHRyYW5zbGF0aW5nIHRoZW0gaW50byBQeXRob24gZXhjZXB0aW9ucy4gVGhpcyBuYXR1cmFsbHkKLSAgIGdpdmVzIHVzIHRoZSBleGNlcHRpb25zIFNTTC5aZXJvUmV0dXJuRXJyb3IsIFNTTC5XYW50UmVhZEVycm9yLAotICAgU1NMLldhbnRXcml0ZUVycm9yLCBTU0wuV2FudFg1MDlMb29rdXBFcnJvciBhbmQgU1NMLlN5c0NhbGxFcnJvci4KLQotICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcywgc2VlIHNlY3Rpb24gMy4zLgotCi0KLTQuMiBDYWxsYmFja3MKLQotICAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHByb2JsZW1zIHdpdGggY2FsbGJhY2tzLiBGaXJzdCBvZiBhbGwsIE9wZW5TU0wgaXMKLSAgIHdyaXR0ZW4gYXMgYSBDIGxpYnJhcnksIGl0J3Mgbm90IG1lYW50IHRvIGhhdmUgUHl0aG9uIGNhbGxiYWNrcywgc28gYQotICAgd2F5IGFyb3VuZCB0aGF0IGlzIG5lZWRlZC4gQW5vdGhlciBwcm9ibGVtIGlzIHRocmVhZCBzdXBwb3J0LiBBIGxvdCBvZgotICAgdGhlIE9wZW5TU0wgSS9PIGZ1bmN0aW9ucyBjYW4gYmxvY2sgaWYgdGhlIHNvY2tldCBpcyBpbiBibG9ja2luZyBtb2RlLAotICAgYW5kIHRoZW4geW91IHdhbnQgb3RoZXIgUHl0aG9uIHRocmVhZHMgdG8gYmUgYWJsZSB0byBkbyBvdGhlciB0aGluZ3MuCi0gICBUaGUgcmVhbCB0cm91YmxlIGlzIGlmIHlvdSd2ZSByZWxlYXNlZCB0aGUgZ2xvYmFsIENQeXRob24gaW50ZXJwcmV0ZXIKLSAgIGxvY2sgdG8gZG8gYSBwb3RlbnRpYWxseSBibG9ja2luZyBvcGVyYXRpb24sIGFuZCB0aGUgb3BlcmF0aW9uIGNhbGxzIGEKLSAgIGNhbGxiYWNrLiBUaGVuIHdlIG11c3QgdGFrZSB0aGUgR0lMIGJhY2ssIHNpbmNlIGNhbGxpbmcgUHl0aG9uIEFQSXMKLSAgIHdpdGhvdXQgaG9sZGluZyBpdCBpcyBub3QgYWxsb3dlZC4KLQotICAgVGhlcmUgYXJlIHR3byBzb2x1dGlvbnMgdG8gdGhlIGZpcnN0IHByb2JsZW0sIGJvdGggb2Ygd2hpY2ggYXJlCi0gICBuZWNlc3NhcnkuIFRoZSBmaXJzdCBzb2x1dGlvbiB0byB1c2UgaXMgaWYgdGhlIEMgY2FsbGJhY2sgYWxsb3dzCi0gICAnJ3VzZXJkYXRhJycgdG8gYmUgcGFzc2VkIHRvIGl0IChhbiBhcmJpdHJhcnkgcG9pbnRlciBub3JtYWxseSkuIFRoaXMKLSAgIGlzIGdyZWF0ISBXZSBjYW4gc2V0IG91ciBQeXRob24gZnVuY3Rpb24gb2JqZWN0IGFzIHRoZSByZWFsIHVzZXJkYXRhCi0gICBhbmQgZW11bGF0ZSB1c2VyZGF0YSBmb3IgdGhlIFB5dGhvbiBmdW5jdGlvbiBpbiBhbm90aGVyIHdheS4gVGhlIG90aGVyCi0gICBzb2x1dGlvbiBjYW4gYmUgdXNlZCBpZiBhbiBvYmplY3Qgd2l0aCBhbiAnJ2FwcF9kYXRhJycgc3lzdGVtIGFsd2F5cyBpcwotICAgcGFzc2VkIHRvIHRoZSBjYWxsYmFjay4gRm9yIGV4YW1wbGUsIHRoZSBTU0wgb2JqZWN0IGluIE9wZW5TU0wgaGFzCi0gICBhcHBfZGF0YSBmdW5jdGlvbnMgYW5kIGluIGUuZy4gdGhlIHZlcmlmaWNhdGlvbiBjYWxsYmFja3MsIHlvdSBjYW4KLSAgIHJldHJpZXZlIHRoZSByZWxhdGVkIFNTTCBvYmplY3QuIFdoYXQgd2UgZG8gaXMgdG8gc2V0IG91ciB3cmFwcGVyCi0gICBDb25uZWN0aW9uIG9iamVjdCBhcyBhcHBfZGF0YSBmb3IgdGhlIFNTTCBvYmplY3QsIGFuZCB3ZSBjYW4gZWFzaWx5Ci0gICBmaW5kIHRoZSBQeXRob24gY2FsbGJhY2suCi0KLSAgIFRoZSBvdGhlciBwcm9ibGVtIGlzIHNvbHZlZCB1c2luZyB0aHJlYWQgbG9jYWwgdmFyaWFibGVzLiBXaGVuZXZlciB0aGUKLSAgIEdJTCBpcyByZWxlYXNlZCBiZWZvcmUgY2FsbGluZyBpbnRvIGFuIE9wZW5TU0wgQVBJLCB0aGUgUHlUaHJlYWRTdGF0ZQotICAgcG9pbnRlciByZXR1cm5lZCBieSBQeUV2YWxfU2F2ZVN0YXRlIGlzIHN0b3JlZCBpbiBhIGdsb2JhbCB0aHJlYWQgbG9jYWwKLSAgIHZhcmlhYmxlICh1c2luZyBQeXRob24ncyBvd24gVExTIEFQSSwgUHlUaHJlYWRfc2V0X2tleV92YWx1ZSkuIFdoZW4gaXQKLSAgIGlzIG5lY2Vzc2FyeSB0byByZS1hY3F1aXJlIHRoZSBHSUwsIGVpdGhlciBhZnRlciB0aGUgT3BlblNTTCBBUEkKLSAgIHJldHVybnMgb3IgaW4gYSBDIGNhbGxiYWNrIGludm9rZWQgYnkgdGhhdCBPcGVuU1NMIEFQSSwgdGhlIHZhbHVlIG9mCi0gICB0aGUgdGhyZWFkIGxvY2FsIHZhcmlhYmxlIGlzIHJldHJpZXZlZCAoUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSkgYW5kCi0gICB1c2VkIHRvIHJlLWFjcXVpcmUgdGhlIEdJTC4gVGhpcyBhbGxvd3MgUHl0aG9uIHRocmVhZHMgdG8gZXhlY3V0ZSB3aGlsZQotICAgT3BlblNTTCBBUElzIGFyZSBydW5uaW5nIGFuZCBhbGxvd3MgdXNlIG9mIGFueSBwYXJ0aWN1bGFyIHB5T3BlblNTTAotICAgb2JqZWN0IGZyb20gYW55IFB5dGhvbiB0aHJlYWQsIHNpbmNlIHRoZXJlIGlzIG5vIHBlci10aHJlYWQgc3RhdGUKLSAgIGFzc29jaWF0ZWQgd2l0aCBhbnkgb2YgdGhlc2Ugb2JqZWN0cyBhbmQgc2luY2UgT3BlblNTTCBpcyB0aHJlYWRzYWZlCi0gICAoYXMgbG9uZyBhcyBwcm9wZXJseSBpbml0aWFsaXplZCwgYXMgcHlPcGVuU1NMIGluaXRpYWxpemVzIGl0KS4KLQotCi00LjMgQWNlc3NpbmcgU29ja2V0IE1ldGhvZHMKLQotICAgV2UgcXVpY2tseSBzYXcgdGhlIGJlbmVmaXQgb2Ygd3JhcHBpbmcgc29ja2V0IG1ldGhvZHMgaW4gdGhlCi0gICBTU0wuQ29ubmVjdGlvbiBjbGFzcywgZm9yIGFuIGVhc3kgdHJhbnNpdGlvbiBpbnRvIHVzaW5nIFNTTC4gVGhlCi0gICBwcm9ibGVtIGhlcmUgaXMgdGhhdCB0aGUgc29ja2V0IG1vZHVsZSBsYWNrcyBhIEMgQVBJLCBhbmQgYWxsIHRoZQotICAgbWV0aG9kcyBhcmUgZGVjbGFyZWQgc3RhdGljLiBPbmUgYXBwcm9hY2ggd291bGQgYmUgdG8gaGF2ZSBPcGVuU1NMIGFzIGEKLSAgIHN1Ym1vZHVsZSB0byB0aGUgc29ja2V0IG1vZHVsZSwgcGxhY2luZyBhbGwgdGhlIGNvZGUgaW4gc29ja2V0bW9kdWxlLmMsCi0gICBidXQgdGhpcyBpcyBvYnZpb3VzbHkgbm90IGEgZ29vZCBzb2x1dGlvbiwgc2luY2UgeW91IG1pZ2h0IG5vdCB3YW50IHRvCi0gICBpbXBvcnQgdG9ubmVzIG9mIGV4dHJhIHN0dWZmIHlvdSdyZSBub3QgZ29pbmcgdG8gdXNlIHdoZW4gaW1wb3J0aW5nIHRoZQotICAgc29ja2V0IG1vZHVsZS4gVGhlIG90aGVyIGFwcHJvYWNoIGlzIHRvIHNvbWVob3cgZ2V0IGEgcG9pbnRlciB0byB0aGUKLSAgIG1ldGhvZCB0byBiZSBjYWxsZWQsIGVpdGhlciB0aGUgQyBmdW5jdGlvbiwgb3IgYSBjYWxsYWJsZSBQeXRob24KLSAgIG9iamVjdC4gVGhpcyBpcyBub3QgcmVhbGx5IGEgZ29vZCBzb2x1dGlvbiBlaXRoZXIsIHNpbmNlIHRoZXJlJ3MgYSBsb3QKLSAgIG9mIGxvb2t1cHMgaW52b2x2ZWQuCi0KLSAgIFRoZSB3YXkgaXQgd29ya3MgaXMgdGhhdCB5b3UgaGF2ZSB0byBzdXBwbHkgYSBgYHNvY2tldC1saWtlJycgdHJhbnNwb3J0Ci0gICBvYmplY3QgdG8gdGhlIFNTTC5Db25uZWN0aW9uLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB0aGlzIG9iamVjdCBpcwotICAgdGhhdCBpdCBoYXMgYSBmaWxlbm8oKSBtZXRob2QgdGhhdCByZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQncwotICAgdmFsaWQgYXQgdGhlIEMgbGV2ZWwgKGkuZS4geW91IGNhbiB1c2UgdGhlIHN5c3RlbSBjYWxscyByZWFkIGFuZAotICAgd3JpdGUpLiBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGNvbm5lY3QoKSBvciBhY2NlcHQoKSBtZXRob2RzIG9mIHRoZQotICAgU1NMLkNvbm5lY3Rpb24gb2JqZWN0LCB0aGUgdHJhbnNwb3J0IG9iamVjdCBoYXMgdG8gc3VwcGx5IHN1Y2ggbWV0aG9kcwotICAgdG9vLiBBcGFydCBmcm9tIHRoZW0sIGFueSBtZXRob2QgbG9va3VwcyBpbiB0aGUgU1NMLkNvbm5lY3Rpb24gb2JqZWN0Ci0gICB0aGF0IGZhaWwgYXJlIHBhc3NlZCBvbiB0byB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgb2JqZWN0LgotCi0gICBGdXR1cmUgY2hhbmdlcyBtaWdodCBiZSB0byBhbGxvdyBQeXRob24tbGV2ZWwgdHJhbnNwb3J0IG9iamVjdHMsIHRoYXQKLSAgIGluc3RlYWQgb2YgaGF2aW5nIGZpbGVubygpIG1ldGhvZHMsIGhhdmUgcmVhZCgpIGFuZCB3cml0ZSgpIG1ldGhvZHMsIHNvCi0gICBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIG9mIFB5dGhvbiBjYW4gYmUgdXNlZC4gVGhpcyB3b3VsZCBwcm9iYWJseQotICAgZW50YWlsIHNvbWUgc29ydCBvZiBPcGVuU1NMIGBgQklPcycnLCBidXQgY29udmVydGluZyBQeXRob24gc3RyaW5ncwotICAgYmFjayBhbmQgZm9ydGggaXMgZXhwZW5zaXZlLCBzbyB0aGlzIHNob3VsZG4ndCBiZSB1c2VkIHVubGVzcwotICAgbmVjZXNzYXJ5LiBPdGhlciBuaWNlIHRoaW5ncyB3b3VsZCBiZSB0byBiZSBhYmxlIHRvIHBhc3MgaW4gZGlmZmVyZW50Ci0gICB0cmFuc3BvcnQgb2JqZWN0cyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZywgYnV0IHRoZW4gdGhlIGZpbGVubygpIG1ldGhvZAotICAgb2YgU1NMLkNvbm5lY3Rpb24gYmVjb21lcyB2aXJ0dWFsbHkgdXNlbGVzcy4gQWxzbywgc2hvdWxkIHRoZSBtZXRob2QKLSAgIHJlc29sdXRpb24gYmUgdXNlZCBvbiB0aGUgcmVhZC10cmFuc3BvcnQgb3IgdGhlIHdyaXRlLXRyYW5zcG9ydD8KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3V0IHRoaXMgZG9jdW1lbnQgLi4uCi0KLSAgIFB5dGhvbiBPcGVuU1NMIE1hbnVhbAotCi0gICBUaGlzIGRvY3VtZW50IHdhcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIExhVGVYMkhUTUwgdHJhbnNsYXRvci4KLQotICAgTGFUZVgySFRNTCBpcyBDb3B5cmlnaHQgwqkgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgTmlrb3MgRHJha29zLAotICAgQ29tcHV0ZXIgQmFzZWQgTGVhcm5pbmcgVW5pdCwgVW5pdmVyc2l0eSBvZiBMZWVkcywgYW5kIENvcHlyaWdodCDCqQotICAgMTk5NywgMTk5OCwgUm9zcyBNb29yZSwgTWF0aGVtYXRpY3MgRGVwYXJ0bWVudCwgTWFjcXVhcmllIFVuaXZlcnNpdHksCi0gICBTeWRuZXkuCi0KLSAgIFRoZSBhcHBsaWNhdGlvbiBvZiBMYVRlWDJIVE1MIHRvIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBoYXMgYmVlbgotICAgaGVhdmlseSB0YWlsb3JlZCBieSBGcmVkIEwuIERyYWtlLCBKci4gT3JpZ2luYWwgbmF2aWdhdGlvbiBpY29ucyB3ZXJlCi0gICBjb250cmlidXRlZCBieSBDaHJpc3RvcGhlciBQZXRyaWxsaS4KLSAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCi0KLSAgICBGb290bm90ZXMKLQotICAgLi4uIE0yQ3J5cHRvXjEKLSAgICAgICAgICBTZWUgaHR0cDovL2NoYW5kbGVycHJvamVjdC5vcmcvUHJvamVjdHMvTWVUb29DcnlwdG8KLQotICAgLi4uIERhZW1vbl4yCi0gICAgICAgICAgU2VlIGh0dHA6Ly93d3cubG90aGFyLmNvbS90ZWNoL2NyeXB0by8KLQotICAgLi4uIHNvY2tldF4zCi0gICAgICAgICAgQWN0dWFsbHksIGFsbCB0aGF0IGlzIHJlcXVpcmVkIGlzIGFuIG9iamVjdCB0aGF0IGJlaGF2ZXMgbGlrZSBhCi0gICAgICAgICAgc29ja2V0LCB5b3UgY291bGQgZXZlbiB1c2UgZmlsZXMsIGV2ZW4gdGhvdWdoIGl0J2QgYmUgdHJpY2t5IHRvCi0gICAgICAgICAgZ2V0IHRoZSBoYW5kc2hha2VzIHJpZ2h0IQotICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBPcGVuU1NMIE1hbnVhbAotICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KLQotICAgUmVsZWFzZSAwLjEzLgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2Fubm8tYXBpLnB5IGIvZG9jL3Rvb2xzL2Fubm8tYXBpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwZDM1NWQyLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9hbm5vLWFwaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24KLSIiIkFkZCByZWZlcmVuY2UgY291bnQgYW5ub3RhdGlvbnMgdG8gdGhlIFB5dGhvbi9DIEFQSSBSZWZlcmVuY2UuIiIiCi1fX3ZlcnNpb25fXyA9ICckUmV2aXNpb246IDEuMS4xLjEgJCcKLQotaW1wb3J0IGdldG9wdAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWltcG9ydCByZWZjb3VudHMKLQotCi1QUkVGSVhfMSA9IHIiXGJlZ2lue2NmdW5jZGVzY317UHlPYmplY3QqfXsiCi1QUkVGSVhfMiA9IHIiXGJlZ2lue2NmdW5jZGVzY317UHlWYXJPYmplY3QqfXsiCi0KLQotZGVmIG1haW4oKToKLSAgICByY2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHJlZmNvdW50cy5fX2ZpbGVfXyksIG9zLnBhcmRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImFwaSIsICJyZWZjb3VudHMuZGF0IikKLSAgICBvdXRmaWxlID0gIi0iCi0gICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAibzpyOiIsIFsib3V0cHV0PSIsICJyZWZjb3VudHM9Il0pCi0gICAgZm9yIG9wdCwgYXJnIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCBpbiAoIi1vIiwgIi0tb3V0cHV0Iik6Ci0gICAgICAgICAgICBvdXRmaWxlID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgiLXIiLCAiLS1yZWZjb3VudHMiKToKLSAgICAgICAgICAgIHJjZmlsZSA9IGFyZwotICAgIHJjZGljdCA9IHJlZmNvdW50cy5sb2FkKHJjZmlsZSkKLSAgICBpZiBvdXRmaWxlID09ICItIjoKLSAgICAgICAgb3V0cHV0ID0gc3lzLnN0ZG91dAotICAgIGVsc2U6Ci0gICAgICAgIG91dHB1dCA9IG9wZW4ob3V0ZmlsZSwgInciKQotICAgIGlmIG5vdCBhcmdzOgotICAgICAgICBhcmdzID0gWyItIl0KLSAgICBmb3IgaW5maWxlIGluIGFyZ3M6Ci0gICAgICAgIGlmIGluZmlsZSA9PSAiLSI6Ci0gICAgICAgICAgICBpbnB1dCA9IHN5cy5zdGRpbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW5wdXQgPSBvcGVuKGluZmlsZSkKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIGxpbmUgPSBpbnB1dC5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcHJlZml4ID0gTm9uZQotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKFBSRUZJWF8xKToKLSAgICAgICAgICAgICAgICBwcmVmaXggPSBQUkVGSVhfMQotICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoUFJFRklYXzIpOgotICAgICAgICAgICAgICAgIHByZWZpeCA9IFBSRUZJWF8yCi0gICAgICAgICAgICBpZiBwcmVmaXg6Ci0gICAgICAgICAgICAgICAgcyA9IGxpbmVbbGVuKHByZWZpeCk6XS5zcGxpdCgnfScsIDEpWzBdCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpbmZvID0gcmNkaWN0W3NdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJObyByZWZjb3VudCBkYXRhIGZvciAlc1xuIiAlIHMpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5mby5yZXN1bHRfdHlwZSBpbiAoIlB5T2JqZWN0KiIsICJQeVZhck9iamVjdCoiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGluZm8ucmVzdWx0X3JlZnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9ICJBbHdheXMgXE5VTEx7fSIKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBpbmZvLnJlc3VsdF9yZWZzIGFuZCAiTmV3IiBvciAiQm9ycm93ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSByYyArICIgcmVmZXJlbmNlIgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IChyIlxiZWdpbntjZnVuY2Rlc2N9WyVzXXslc317IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyYywgaW5mby5yZXN1bHRfdHlwZSkpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsaW5lW2xlbihwcmVmaXgpOl0KLSAgICAgICAgICAgIG91dHB1dC53cml0ZShsaW5lKQotICAgICAgICBpZiBpbmZpbGUgIT0gIi0iOgotICAgICAgICAgICAgaW5wdXQuY2xvc2UoKQotICAgIGlmIG91dGZpbGUgIT0gIi0iOgotICAgICAgICBvdXRwdXQuY2xvc2UoKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvYnVpbGRpbmRleC5weSBiL2RvYy90b29scy9idWlsZGluZGV4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1YTQxYzBlLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9idWlsZGluZGV4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzUzICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24KLQotX192ZXJzaW9uX18gPSAnJFJldmlzaW9uOiAxLjEuMS4xICQnCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgTm9kZToKLSAgICBfX3JtanVuayA9IHJlLmNvbXBpbGUoIjwjXGQrIz4iKQotCi0gICAgY29udGludWF0aW9uID0gMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmssIHN0ciwgc2Vxbm8pOgotICAgICAgICBzZWxmLmxpbmtzID0gW2xpbmtdCi0gICAgICAgIHNlbGYuc2Vxbm8gPSBzZXFubwotICAgICAgICAjIHJlbW92ZSA8I1xkKyM+IGxlZnQgaW4gYnkgbW92aW5nIHRoZSBkYXRhIG91dCBvZiBMYVRlWDJIVE1MCi0gICAgICAgIHN0ciA9IHNlbGYuX19ybWp1bmsuc3ViKCcnLCBzdHIpCi0gICAgICAgICMgYnVpbGQgdXAgdGhlIHRleHQKLSAgICAgICAgc2VsZi50ZXh0ID0gc3BsaXRfZW50cnlfdGV4dChzdHIpCi0gICAgICAgIHNlbGYua2V5ID0gc3BsaXRfZW50cnlfa2V5KHN0cikKLQotICAgIGRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgIiIiQ29tcGFyaXNvbiBvcGVyYXRvciBpbmNsdWRlcyBzZXF1ZW5jZSBudW1iZXIsIGZvciB1c2Ugd2l0aAotICAgICAgICBsaXN0LnNvcnQoKS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuY21wX2VudHJ5KG90aGVyKSBvciBjbXAoc2VsZi5zZXFubywgb3RoZXIuc2Vxbm8pCi0KLSAgICBkZWYgY21wX2VudHJ5KHNlbGYsIG90aGVyKToKLSAgICAgICAgIiIiQ29tcGFyaXNvbiAnb3BlcmF0b3InIHRoYXQgaWdub3JlcyBzZXF1ZW5jZSBudW1iZXIuIiIiCi0gICAgICAgIGMgPSAwCi0gICAgICAgIGZvciBpIGluIHJhbmdlKG1pbihsZW4oc2VsZi5rZXkpLCBsZW4ob3RoZXIua2V5KSkpOgotICAgICAgICAgICAgYyA9IChjbXBfcGFydChzZWxmLmtleVtpXSwgb3RoZXIua2V5W2ldKQotICAgICAgICAgICAgICAgICBvciBjbXBfcGFydChzZWxmLnRleHRbaV0sIG90aGVyLnRleHRbaV0pKQotICAgICAgICAgICAgaWYgYzoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICByZXR1cm4gYyBvciBjbXAoc2VsZi5rZXksIG90aGVyLmtleSkgb3IgY21wKHNlbGYudGV4dCwgb3RoZXIudGV4dCkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8Tm9kZSBmb3IgJXMgKCVzKT4iICUgKHN0cmluZy5qb2luKHNlbGYudGV4dCwgJyEnKSwgc2VsZi5zZXFubykKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc3RyaW5nLmpvaW4oc2VsZi5rZXksICchJykKLQotICAgIGRlZiBkdW1wKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzXDElcyMjIyVzXG4iIFwKLSAgICAgICAgICAgICAgICUgKHN0cmluZy5qb2luKHNlbGYubGlua3MsICJcMSIpLAotICAgICAgICAgICAgICAgICAgc3RyaW5nLmpvaW4oc2VsZi50ZXh0LCAnIScpLAotICAgICAgICAgICAgICAgICAgc2VsZi5zZXFubykKLQotCi1kZWYgY21wX3BhcnQoczEsIHMyKToKLSAgICByZXN1bHQgPSBjbXAoczEsIHMyKQotICAgIGlmIHJlc3VsdCA9PSAwOgotICAgICAgICByZXR1cm4gMAotICAgIGwxID0gc3RyaW5nLmxvd2VyKHMxKQotICAgIGwyID0gc3RyaW5nLmxvd2VyKHMyKQotICAgIG1pbmxlbiA9IG1pbihsZW4oczEpLCBsZW4oczIpKQotICAgIGlmIGxlbihzMSkgPCBsZW4oczIpIGFuZCBsMSA9PSBsMls6bGVuKHMxKV06Ci0gICAgICAgIHJlc3VsdCA9IC0xCi0gICAgZWxpZiBsZW4oczIpIDwgbGVuKHMxKSBhbmQgbDIgPT0gbDFbOmxlbihzMildOgotICAgICAgICByZXN1bHQgPSAxCi0gICAgZWxzZToKLSAgICAgICAgcmVzdWx0ID0gY21wKGwxLCBsMikgb3IgY21wKHMxLCBzMikKLSAgICByZXR1cm4gcmVzdWx0Ci0KLQotZGVmIHNwbGl0X2VudHJ5KHN0ciwgd2hpY2gpOgotICAgIHN0dWZmID0gW10KLSAgICBwYXJ0cyA9IHN0cmluZy5zcGxpdChzdHIsICchJykKLSAgICBwYXJ0cyA9IG1hcChzdHJpbmcuc3BsaXQsIHBhcnRzLCBbJ0AnXSAqIGxlbihwYXJ0cykpCi0gICAgZm9yIGVudHJ5IGluIHBhcnRzOgotICAgICAgICBpZiBsZW4oZW50cnkpICE9IDE6Ci0gICAgICAgICAgICBrZXkgPSBlbnRyeVt3aGljaF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGtleSA9IGVudHJ5WzBdCi0gICAgICAgIHN0dWZmLmFwcGVuZChrZXkpCi0gICAgcmV0dXJuIHN0dWZmCi0KLQotX3JtdHQgPSByZS5jb21waWxlKHIiIiIoLiopPHR0KD86IGNsYXNzPVsnIl1bYS16MC05XStbIiddKT8+KC4qKTwvdHQ+KC4qKSQiIiIsCi0gICAgICAgICAgICAgICAgICAgcmUuSUdOT1JFQ0FTRSkKLV9ybXBhcmVucyA9IHJlLmNvbXBpbGUociJcKFwpIikKLQotZGVmIHNwbGl0X2VudHJ5X2tleShzdHIpOgotICAgIHBhcnRzID0gc3BsaXRfZW50cnkoc3RyLCAxKQotICAgIGZvciBpIGluIHJhbmdlKGxlbihwYXJ0cykpOgotICAgICAgICBtID0gX3JtdHQubWF0Y2gocGFydHNbaV0pCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgICBwYXJ0c1tpXSA9IHN0cmluZy5qb2luKG0uZ3JvdXAoMSwgMiwgMyksICcnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFydHNbaV0gPSBzdHJpbmcubG93ZXIocGFydHNbaV0pCi0gICAgICAgICMgcmVtb3ZlICcoKScgZnJvbSB0aGUga2V5OgotICAgICAgICBwYXJ0c1tpXSA9IF9ybXBhcmVucy5zdWIoJycsIHBhcnRzW2ldKQotICAgIHJldHVybiBtYXAodHJpbV9pZ25vcmVkX2xldHRlcnMsIHBhcnRzKQotCi0KLWRlZiBzcGxpdF9lbnRyeV90ZXh0KHN0cik6Ci0gICAgaWYgJzwnIGluIHN0cjoKLSAgICAgICAgbSA9IF9ybXR0Lm1hdGNoKHN0cikKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIHN0ciA9IHN0cmluZy5qb2luKG0uZ3JvdXAoMSwgMiwgMyksICcnKQotICAgIHJldHVybiBzcGxpdF9lbnRyeShzdHIsIDEpCi0KLQotZGVmIGxvYWQoZnApOgotICAgIG5vZGVzID0gW10KLSAgICByeCA9IHJlLmNvbXBpbGUoIiguKilcMSguKikjIyMoLiopJCIpCi0gICAgd2hpbGUgMToKLSAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBtID0gcngubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIGxpbmssIHN0ciwgc2Vxbm8gPSBtLmdyb3VwKDEsIDIsIDMpCi0gICAgICAgICAgICBub2Rlcy5hcHBlbmQoTm9kZShsaW5rLCBzdHIsIHNlcW5vKSkKLSAgICByZXR1cm4gbm9kZXMKLQotCi1kZWYgdHJpbV9pZ25vcmVkX2xldHRlcnMocyk6Ci0gICAgIyBpZ25vcmUgJCB0byBrZWVwIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIHRoZQotICAgICMgbGVhZGluZyBsZXR0ZXIgZnJvbSB0aGUgbmFtZQotICAgIHMgPSBzdHJpbmcubG93ZXIocykKLSAgICBpZiBzWzBdID09ICIkIjoKLSAgICAgICAgcmV0dXJuIHNbMTpdCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHMKLQotZGVmIGdldF9maXJzdF9sZXR0ZXIocyk6Ci0gICAgcmV0dXJuIHN0cmluZy5sb3dlcih0cmltX2lnbm9yZWRfbGV0dGVycyhzKVswXSkKLQotCi1kZWYgc3BsaXRfbGV0dGVycyhub2Rlcyk6Ci0gICAgbGV0dGVyX2dyb3VwcyA9IFtdCi0gICAgaWYgbm9kZXM6Ci0gICAgICAgIGdyb3VwID0gW10KLSAgICAgICAgYXBwZW5kID0gZ3JvdXAuYXBwZW5kCi0gICAgICAgIGxldHRlciA9IGdldF9maXJzdF9sZXR0ZXIobm9kZXNbMF0udGV4dFswXSkKLSAgICAgICAgbGV0dGVyX2dyb3Vwcy5hcHBlbmQoKGxldHRlciwgZ3JvdXApKQotICAgICAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgICAgIG5sZXR0ZXIgPSBnZXRfZmlyc3RfbGV0dGVyKG5vZGUudGV4dFswXSkKLSAgICAgICAgICAgIGlmIGxldHRlciAhPSBubGV0dGVyOgotICAgICAgICAgICAgICAgIGxldHRlciA9IG5sZXR0ZXIKLSAgICAgICAgICAgICAgICBncm91cCA9IFtdCi0gICAgICAgICAgICAgICAgbGV0dGVyX2dyb3Vwcy5hcHBlbmQoKGxldHRlciwgZ3JvdXApKQotICAgICAgICAgICAgICAgIGFwcGVuZCA9IGdyb3VwLmFwcGVuZAotICAgICAgICAgICAgYXBwZW5kKG5vZGUpCi0gICAgcmV0dXJuIGxldHRlcl9ncm91cHMKLQotCi0jIG5lZWQgYSBmdW5jdGlvbiB0byBzZXBhcmF0ZSB0aGUgbm9kZXMgaW50byBjb2x1bW5zLi4uCi1kZWYgc3BsaXRfY29sdW1ucyhub2RlcywgY29sdW1ucz0xKToKLSAgICBpZiBjb2x1bW5zIDw9IDE6Ci0gICAgICAgIHJldHVybiBbbm9kZXNdCi0gICAgIyBUaGlzIGlzIGEgcm91Z2ggaGVpZ2h0OyB3ZSBtYXkgaGF2ZSB0byBpbmNyZWFzZSB0byBhdm9pZCBicmVha3MgYmVmb3JlCi0gICAgIyBhIHN1Yml0ZW0uCi0gICAgY29saGVpZ2h0ID0gbGVuKG5vZGVzKSAvIGNvbHVtbnMKLSAgICBudW1sb25nID0gbGVuKG5vZGVzKSAlIGNvbHVtbnMKLSAgICBpZiBudW1sb25nOgotICAgICAgICBjb2xoZWlnaHQgPSBjb2xoZWlnaHQgKyAxCi0gICAgZWxzZToKLSAgICAgICAgbnVtbG9uZyA9IGNvbHVtbnMKLSAgICBjb2xzID0gW10KLSAgICBmb3IgaSBpbiByYW5nZShudW1sb25nKToKLSAgICAgICAgc3RhcnQgPSBpICogY29saGVpZ2h0Ci0gICAgICAgIGVuZCA9IHN0YXJ0ICsgY29saGVpZ2h0Ci0gICAgICAgIGNvbHMuYXBwZW5kKG5vZGVzW3N0YXJ0OmVuZF0pCi0gICAgZGVsIG5vZGVzWzplbmRdCi0gICAgY29saGVpZ2h0ID0gY29saGVpZ2h0IC0gMQotICAgIHRyeToKLSAgICAgICAgbnVtc2hvcnQgPSBsZW4obm9kZXMpIC8gY29saGVpZ2h0Ci0gICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgotICAgICAgICBjb2xzID0gY29scyArIChjb2x1bW5zIC0gbGVuKGNvbHMpKSAqIFtbXV0KLSAgICBlbHNlOgotICAgICAgICBmb3IgaSBpbiByYW5nZShudW1zaG9ydCk6Ci0gICAgICAgICAgICBzdGFydCA9IGkgKiBjb2xoZWlnaHQKLSAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgY29saGVpZ2h0Ci0gICAgICAgICAgICBjb2xzLmFwcGVuZChub2Rlc1tzdGFydDplbmRdKQotICAgICMKLSAgICAjIElmIGl0ZW1zIGNvbnRpbnVlIGFjcm9zcyBjb2x1bW5zLCBtYWtlIHN1cmUgdGhleSBhcmUgbWFya2VkCi0gICAgIyBhcyBjb250aW51YXRpb25zIHNvIHRoZSB1c2VyIGtub3dzIHRvIGxvb2sgYXQgdGhlIHByZXZpb3VzIGNvbHVtbi4KLSAgICAjCi0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvbHMpIC0gMSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHByZXYgPSBjb2xzW2ldWy0xXQotICAgICAgICAgICAgbmV4dCA9IGNvbHNbaSArIDFdWzBdCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIGNvbHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG4gPSBtaW4obGVuKHByZXYua2V5KSwgbGVuKG5leHQua2V5KSkKLSAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKG4pOgotICAgICAgICAgICAgICAgIGlmIHByZXYua2V5W2pdICE9IG5leHQua2V5W2pdOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIG5leHQuY29udGludWF0aW9uID0gaiArIDEKLSAgICByZXR1cm4gY29scwotCi0KLURMX0xFVkVMX0lOREVOVCA9ICIgICIKLQotZGVmIGZvcm1hdF9jb2x1bW4obm9kZXMpOgotICAgIHN0cmluZ3MgPSBbIjxkbCBjb21wYWN0PiJdCi0gICAgYXBwZW5kID0gc3RyaW5ncy5hcHBlbmQKLSAgICBsZXZlbCA9IDAKLSAgICBwcmV2aW91cyA9IFtdCi0gICAgZm9yIG5vZGUgaW4gbm9kZXM6Ci0gICAgICAgIGN1cnJlbnQgPSBub2RlLnRleHQKLSAgICAgICAgY291bnQgPSAwCi0gICAgICAgIGZvciBpIGluIHJhbmdlKG1pbihsZW4oY3VycmVudCksIGxlbihwcmV2aW91cykpKToKLSAgICAgICAgICAgIGlmIHByZXZpb3VzW2ldICE9IGN1cnJlbnRbaV06Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGNvdW50ID0gaSArIDEKLSAgICAgICAgaWYgY291bnQgPiBsZXZlbDoKLSAgICAgICAgICAgIGFwcGVuZCgiPGRsIGNvbXBhY3Q+IiAqIChjb3VudCAtIGxldmVsKSArICJcbiIpCi0gICAgICAgICAgICBsZXZlbCA9IGNvdW50Ci0gICAgICAgIGVsaWYgbGV2ZWwgPiBjb3VudDoKLSAgICAgICAgICAgIGFwcGVuZCgiXG4iKQotICAgICAgICAgICAgYXBwZW5kKGxldmVsICogRExfTEVWRUxfSU5ERU5UKQotICAgICAgICAgICAgYXBwZW5kKCI8L2RsPiIgKiAobGV2ZWwgLSBjb3VudCkpCi0gICAgICAgICAgICBsZXZlbCA9IGNvdW50Ci0gICAgICAgICMgZWxzZTogbGV2ZWwgPT0gY291bnQKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQsIGxlbihjdXJyZW50KSAtIDEpOgotICAgICAgICAgICAgdGVybSA9IG5vZGUudGV4dFtpXQotICAgICAgICAgICAgbGV2ZWwgPSBsZXZlbCArIDEKLSAgICAgICAgICAgIGlmIG5vZGUuY29udGludWF0aW9uID4gaToKLSAgICAgICAgICAgICAgICBleHRyYSA9ICIgKGNvbnRpbnVlZCkiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV4dHJhID0gIiIKLSAgICAgICAgICAgIGFwcGVuZCgiXG48ZHQ+JXMlc1xuPGRkPlxuJXM8ZGwgY29tcGFjdD4iCi0gICAgICAgICAgICAgICAgICAgJSAodGVybSwgZXh0cmEsIGxldmVsICogRExfTEVWRUxfSU5ERU5UKSkKLSAgICAgICAgYXBwZW5kKCJcbiVzPGR0PiVzJXM8L2E+IgotICAgICAgICAgICAgICAgJSAobGV2ZWwgKiBETF9MRVZFTF9JTkRFTlQsIG5vZGUubGlua3NbMF0sIG5vZGUudGV4dFstMV0pKQotICAgICAgICBmb3IgbGluayBpbiBub2RlLmxpbmtzWzE6XToKLSAgICAgICAgICAgIGFwcGVuZCgiLFxuJXMgICAgJXNbTGlua108L2E+IiAlIChsZXZlbCAqIERMX0xFVkVMX0lOREVOVCwgbGluaykpCi0gICAgICAgIHByZXZpb3VzID0gY3VycmVudAotICAgIGFwcGVuZCgiXG4iKQotICAgIGFwcGVuZCgiPC9kbD4iICogKGxldmVsICsgMSkpCi0gICAgcmV0dXJuIHN0cmluZy5qb2luKHN0cmluZ3MsICcnKQotCi0KLWRlZiBmb3JtYXRfbm9kZXMobm9kZXMsIGNvbHVtbnM9MSk6Ci0gICAgc3RyaW5ncyA9IFtdCi0gICAgYXBwZW5kID0gc3RyaW5ncy5hcHBlbmQKLSAgICBpZiBjb2x1bW5zID4gMToKLSAgICAgICAgY29sbm9zID0gcmFuZ2UoY29sdW1ucykKLSAgICAgICAgY29saGVpZ2h0ID0gbGVuKG5vZGVzKSAvIGNvbHVtbnMKLSAgICAgICAgaWYgbGVuKG5vZGVzKSAlIGNvbHVtbnM6Ci0gICAgICAgICAgICBjb2xoZWlnaHQgPSBjb2xoZWlnaHQgKyAxCi0gICAgICAgIGNvbHdpZHRoID0gMTAwIC8gY29sdW1ucwotICAgICAgICBhcHBlbmQoJzx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyIHZhbGlnbj0idG9wIj4nKQotICAgICAgICBmb3IgY29sIGluIHNwbGl0X2NvbHVtbnMobm9kZXMsIGNvbHVtbnMpOgotICAgICAgICAgICAgYXBwZW5kKCc8dGQgd2lkdGg9IiVkJSUiPlxuJyAlIGNvbHdpZHRoKQotICAgICAgICAgICAgYXBwZW5kKGZvcm1hdF9jb2x1bW4oY29sKSkKLSAgICAgICAgICAgIGFwcGVuZCgiXG48L3RkPiIpCi0gICAgICAgIGFwcGVuZCgiXG48L3RyPjwvdGFibGU+IikKLSAgICBlbHNlOgotICAgICAgICBhcHBlbmQoZm9ybWF0X2NvbHVtbihub2RlcykpCi0gICAgYXBwZW5kKCJcbjxwPlxuIikKLSAgICByZXR1cm4gc3RyaW5nLmpvaW4oc3RyaW5ncywgJycpCi0KLQotZGVmIGZvcm1hdF9sZXR0ZXIobGV0dGVyKToKLSAgICBpZiBsZXR0ZXIgPT0gJy4nOgotICAgICAgICBsZXR0ZXJuYW1lID0gIi4gKGRvdCkiCi0gICAgZWxpZiBsZXR0ZXIgPT0gJ18nOgotICAgICAgICBsZXR0ZXJuYW1lID0gIl8gKHVuZGVyc2NvcmUpIgotICAgIGVsc2U6Ci0gICAgICAgIGxldHRlcm5hbWUgPSBzdHJpbmcudXBwZXIobGV0dGVyKQotICAgIHJldHVybiAiXG48aHI+XG48aDI+PGEgbmFtZT1cImxldHRlci0lc1wiPiVzPC9hPjwvaDI+XG5cbiIgXAotICAgICAgICAgICAlIChsZXR0ZXIsIGxldHRlcm5hbWUpCi0KLQotZGVmIGZvcm1hdF9odG1sX2xldHRlcnMobm9kZXMsIGNvbHVtbnM9MSk6Ci0gICAgbGV0dGVyX2dyb3VwcyA9IHNwbGl0X2xldHRlcnMobm9kZXMpCi0gICAgaXRlbXMgPSBbXQotICAgIGZvciBsZXR0ZXIsIG5vZGVzIGluIGxldHRlcl9ncm91cHM6Ci0gICAgICAgIHMgPSAiPGI+PGEgaHJlZj1cIiNsZXR0ZXItJXNcIj4lczwvYT48L2I+IiAlIChsZXR0ZXIsIGxldHRlcikKLSAgICAgICAgaXRlbXMuYXBwZW5kKHMpCi0gICAgcyA9IFsiPGhyPjxjZW50ZXI+XG4lczwvY2VudGVyPlxuIiAlIHN0cmluZy5qb2luKGl0ZW1zLCAiIHxcbiIpXQotICAgIGZvciBsZXR0ZXIsIG5vZGVzIGluIGxldHRlcl9ncm91cHM6Ci0gICAgICAgIHMuYXBwZW5kKGZvcm1hdF9sZXR0ZXIobGV0dGVyKSkKLSAgICAgICAgcy5hcHBlbmQoZm9ybWF0X25vZGVzKG5vZGVzLCBjb2x1bW5zKSkKLSAgICByZXR1cm4gc3RyaW5nLmpvaW4ocywgJycpCi0KLWRlZiBmb3JtYXRfaHRtbChub2RlcywgY29sdW1ucyk6Ci0gICAgcmV0dXJuIGZvcm1hdF9ub2Rlcyhub2RlcywgY29sdW1ucykKLQotCi1kZWYgY29sbGFwc2Uobm9kZXMpOgotICAgICIiIkNvbGxhcHNlIHNlcXVlbmNlcyBvZiBub2RlcyB3aXRoIG1hdGNoaW5nIGtleXMgaW50byBhIHNpbmdsZSBub2RlLgotICAgIERlc3RydWN0aXZlLiIiIgotICAgIGlmIGxlbihub2RlcykgPCAyOgotICAgICAgICByZXR1cm4KLSAgICBwcmV2ID0gbm9kZXNbMF0KLSAgICBpID0gMQotICAgIHdoaWxlIGkgPCBsZW4obm9kZXMpOgotICAgICAgICBub2RlID0gbm9kZXNbaV0KLSAgICAgICAgaWYgbm90IG5vZGUuY21wX2VudHJ5KHByZXYpOgotICAgICAgICAgICAgcHJldi5saW5rcy5hcHBlbmQobm9kZS5saW5rc1swXSkKLSAgICAgICAgICAgIGRlbCBub2Rlc1tpXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICBwcmV2ID0gbm9kZQotCi0KLWRlZiBkdW1wKG5vZGVzLCBmcCk6Ci0gICAgZm9yIG5vZGUgaW4gbm9kZXM6Ci0gICAgICAgIGZwLndyaXRlKG5vZGUuZHVtcCgpKQotCi0KLWRlZiBwcm9jZXNzX25vZGVzKG5vZGVzLCBjb2x1bW5zLCBsZXR0ZXJzKToKLSAgICBub2Rlcy5zb3J0KCkKLSAgICBjb2xsYXBzZShub2RlcykKLSAgICBpZiBsZXR0ZXJzOgotICAgICAgICByZXR1cm4gZm9ybWF0X2h0bWxfbGV0dGVycyhub2RlcywgY29sdW1ucykKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gZm9ybWF0X2h0bWwobm9kZXMsIGNvbHVtbnMpCi0KLQotZGVmIG1haW4oKToKLSAgICBpbXBvcnQgZ2V0b3B0Ci0gICAgaWZuID0gIi0iCi0gICAgb2ZuID0gIi0iCi0gICAgY29sdW1ucyA9IDEKLSAgICBsZXR0ZXJzID0gMAotICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImM6bG86IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbHVtbnM9IiwgImxldHRlcnMiLCAib3V0cHV0PSJdKQotICAgIGZvciBvcHQsIHZhbCBpbiBvcHRzOgotICAgICAgICBpZiBvcHQgaW4gKCItbyIsICItLW91dHB1dCIpOgotICAgICAgICAgICAgb2ZuID0gdmFsCi0gICAgICAgIGVsaWYgb3B0IGluICgiLWMiLCAiLS1jb2x1bW5zIik6Ci0gICAgICAgICAgICBjb2x1bW5zID0gc3RyaW5nLmF0b2kodmFsKQotICAgICAgICBlbGlmIG9wdCBpbiAoIi1sIiwgIi0tbGV0dGVycyIpOgotICAgICAgICAgICAgbGV0dGVycyA9IDEKLSAgICBpZiBub3QgYXJnczoKLSAgICAgICAgYXJncyA9IFtpZm5dCi0gICAgbm9kZXMgPSBbXQotICAgIGZvciBmbiBpbiBhcmdzOgotICAgICAgICBub2RlcyA9IG5vZGVzICsgbG9hZChvcGVuKGZuKSkKLSAgICBudW1fbm9kZXMgPSBsZW4obm9kZXMpCi0gICAgaHRtbCA9IHByb2Nlc3Nfbm9kZXMobm9kZXMsIGNvbHVtbnMsIGxldHRlcnMpCi0gICAgcHJvZ3JhbSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCi0gICAgaWYgb2ZuID09ICItIjoKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShodG1sKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJcbiVzOiAlZCBpbmRleCBub2RlcyIgJSAocHJvZ3JhbSwgbnVtX25vZGVzKSkKLSAgICBlbHNlOgotICAgICAgICBvcGVuKG9mbiwgInciKS53cml0ZShodG1sKQotICAgICAgICBwcmludAotICAgICAgICBwcmludCAiJXM6ICVkIGluZGV4IG5vZGVzIiAlIChwcm9ncmFtLCBudW1fbm9kZXMpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL2RvYy90b29scy9jaGVja2FyZ3MucG0gYi9kb2MvdG9vbHMvY2hlY2thcmdzLnBtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTUyZjY5Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9jaGVja2FyZ3MucG0KKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotIyEvdW5zL2Jpbi9wZXJsCi0KLXBhY2thZ2UgY2hlY2thcmdzOwotcmVxdWlyZSA1LjAwNDsJCQkjIHVzZXMgImZvciBteSAkdmFyIgotcmVxdWlyZSBFeHBvcnRlcjsKLUBJU0EgPSBxdyhFeHBvcnRlcik7Ci1ARVhQT1JUID0gcXcoY2hlY2tfYXJncyBjaGVja19hcmdzX3JhbmdlIGNoZWNrX2FyZ3NfYXRfbGVhc3QpOwotdXNlIHN0cmljdDsKLXVzZSBDYXJwOwotCi09aGVhZDEgTkFNRQotCi1jaGVja2FyZ3MgLS0gUHJvdmlkZSBydWRpbWVudGFyeSBhcmd1bWVudCBjaGVja2luZyBmb3IgcGVybDUgZnVuY3Rpb25zCi0KLT1oZWFkMSBTWU5PUFNJUwotCi0gIGNoZWNrX2FyZ3MoY0FyZ3NFeHBlY3RlZCwgQF8pCi0gIGNoZWNrX2FyZ3NfcmFuZ2UoY0FyZ3NNaW4sIGNBcmdzTWF4LCBAXykKLSAgY2hlY2tfYXJnc19hdF9sZWFzdChjQXJnc01pbiwgQF8pCi13aGVyZSAiQF8iIHNob3VsZCBiZSBzdXBwbGllZCBsaXRlcmFsbHkuCi0KLT1oZWFkMSBERVNDUklQVElPTgotCi1BcyB0aGUgZmlyc3QgbGluZSBvZiB1c2VyLXdyaXR0ZW4gc3Vicm91dGluZSBmb28sIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotCi0gIG15ICgkYXJnMSwgJGFyZzIpID0gY2hlY2tfYXJncygyLCBAXyk7Ci0gIG15ICgkYXJnMSwgQHJlc3QpID0gY2hlY2tfYXJnc19yYW5nZSgxLCA0LCBAXyk7Ci0gIG15ICgkYXJnMSwgQHJlc3QpID0gY2hlY2tfYXJnc19hdF9sZWFzdCgxLCBAXyk7Ci0gIG15IEBhcmdzID0gY2hlY2tfYXJnc19hdF9sZWFzdCgwLCBAXyk7Ci0KLVRoZXNlIGZ1bmN0aW9ucyBtYXkgYWxzbyBiZSBjYWxsZWQgZm9yIHNpZGUgZWZmZWN0IChwdXQgYSBjYWxsIHRvIG9uZQotb2YgdGhlIGZ1bmN0aW9ucyBuZWFyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN1YnJvdXRpbmUpLCBidXQgdXNpbmcgdGhlCi1hcmd1bWVudCBjaGVja2VycyB0byBzZXQgdGhlIGFyZ3VtZW50IGxpc3QgaXMgdGhlIHJlY29tbWVuZGVkIHVzYWdlLgotCi1UaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhbmQgdGhlaXIgZGVmaW5lZG5lc3MgYXJlIGNoZWNrZWQ7IGlmIHRoZSB3cm9uZwotbnVtYmVyIGFyZSByZWNlaXZlZCwgdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBhbiBlcnJvciBtZXNzYWdlLgotCi09aGVhZDEgQVVUSE9SCi0KLU1pY2hhZWwgRC4gRXJuc3QgPEY8bWVybnN0QGNzLndhc2hpbmd0b24uZWR1Pj4KLQotPWN1dAotCi0jIyBOZWVkIHRvIGNoZWNrIHRoYXQgdXNlIG9mIGNhbGxlcigxKSByZWFsbHkgZ2l2ZXMgZGVzaXJlZCByZXN1bHRzLgotIyMgTmVlZCB0byBnaXZlIGlucHV0IGNodW5rIGluZm9ybWF0aW9uLgotIyMgSXMgdGhpcyBvYnZpYXRlZCBieSBQZXJsIDUuMDAzJ3MgZGVjbGFyYXRpb25zPyAgTm90IGVudGlyZWx5LCBJIHRoaW5rLgotCi1zdWIgY2hlY2tfYXJncyAoICRAICkKLXsKLSAgbXkgKCRudW1fZm9ybWFscywgQGFyZ3MpID0gQF87Ci0gIG15ICgkcGFjaywgJGZpbGVfYXJnLCAkbGluZV9hcmcsICRzdWJuYW1lLCAkaGFzYXJncywgJHdhbnRhcnIpID0gY2FsbGVyKDEpOwotICBpZiAoQF8gPCAxKSB7IGNyb2FrICJjaGVja19hcmdzIG5lZWRzIGF0IGxlYXN0IDcgYXJncywgZ290ICIsIHNjYWxhcihAXyksICI6IEBfXG4gIjsgfQotICBpZiAoKCF3YW50YXJyYXkpICYmICgkbnVtX2Zvcm1hbHMgIT0gMCkpCi0gICAgeyBjcm9hayAiY2hlY2tfYXJncyBjYWxsZWQgaW4gc2NhbGFyIGNvbnRleHQiOyB9Ci0gICMgQ2FuJ3QgdXNlIGNyb2FrIGJlbG93IGhlcmU6IGl0IHdvdWxkIG9ubHkgZ28gb3V0IHRvIGNhbGxlciwgbm90IGl0cyBjYWxsZXIKLSAgbXkgJG51bV9hY3R1YWxzID0gQGFyZ3M7Ci0gIGlmICgkbnVtX2FjdHVhbHMgIT0gJG51bV9mb3JtYWxzKQotICAgIHsgZGllICIkZmlsZV9hcmc6JGxpbmVfYXJnOiBmdW5jdGlvbiAkc3VibmFtZSBleHBlY3RlZCAkbnVtX2Zvcm1hbHMgYXJndW1lbnQiLAotICAgICAgKCgkbnVtX2Zvcm1hbHMgPT0gMSkgPyAiIiA6ICJzIiksCi0gICAgICAiLCBnb3QgJG51bV9hY3R1YWxzIiwKLSAgICAgICgoJG51bV9hY3R1YWxzID09IDApID8gIiIgOiAiOiBAYXJncyIpLAotICAgICAgIlxuIjsgfQotICBmb3IgbXkgJGluZGV4ICgwLi4kI2FyZ3MpCi0gICAgeyBpZiAoIWRlZmluZWQoJGFyZ3NbJGluZGV4XSkpCi0JeyBkaWUgIiRmaWxlX2FyZzokbGluZV9hcmc6IGZ1bmN0aW9uICRzdWJuYW1lIHVuZGVmaW5lZCBhcmd1bWVudCAiLCAkaW5kZXgrMSwgIjogQGFyZ3NbMC4uJGluZGV4LTFdXG4iOyB9IH0KLSAgcmV0dXJuIEBhcmdzOwotfQotCi1zdWIgY2hlY2tfYXJnc19yYW5nZSAoICQkQCApCi17Ci0gIG15ICgkbWluX2Zvcm1hbHMsICRtYXhfZm9ybWFscywgQGFyZ3MpID0gQF87Ci0gIG15ICgkcGFjaywgJGZpbGVfYXJnLCAkbGluZV9hcmcsICRzdWJuYW1lLCAkaGFzYXJncywgJHdhbnRhcnIpID0gY2FsbGVyKDEpOwotICBpZiAoQF8gPCAyKSB7IGNyb2FrICJjaGVja19hcmdzX3JhbmdlIG5lZWRzIGF0IGxlYXN0IDggYXJncywgZ290ICIsIHNjYWxhcihAXyksICI6IEBfIjsgfQotICBpZiAoKCF3YW50YXJyYXkpICYmICgkbWF4X2Zvcm1hbHMgIT0gMCkgJiYgKCRtaW5fZm9ybWFscyAhPTApICkKLSAgICB7IGNyb2FrICJjaGVja19hcmdzX3JhbmdlIGNhbGxlZCBpbiBzY2FsYXIgY29udGV4dCI7IH0KLSAgIyBDYW4ndCB1c2UgY3JvYWsgYmVsb3cgaGVyZTogaXQgd291bGQgb25seSBnbyBvdXQgdG8gY2FsbGVyLCBub3QgaXRzIGNhbGxlcgotICBteSAkbnVtX2FjdHVhbHMgPSBAYXJnczsKLSAgaWYgKCgkbnVtX2FjdHVhbHMgPCAkbWluX2Zvcm1hbHMpIHx8ICgkbnVtX2FjdHVhbHMgPiAkbWF4X2Zvcm1hbHMpKQotICAgIHsgZGllICIkZmlsZV9hcmc6JGxpbmVfYXJnOiBmdW5jdGlvbiAkc3VibmFtZSBleHBlY3RlZCAkbWluX2Zvcm1hbHMtJG1heF9mb3JtYWxzIGFyZ3VtZW50cywgZ290ICRudW1fYWN0dWFscyIsCi0gICAgICAoJG51bV9hY3R1YWxzID09IDApID8gIiIgOiAiOiBAYXJncyIsICJcbiI7IH0KLSAgZm9yIG15ICRpbmRleCAoMC4uJCNhcmdzKQotICAgIHsgaWYgKCFkZWZpbmVkKCRhcmdzWyRpbmRleF0pKQotCXsgZGllICIkZmlsZV9hcmc6JGxpbmVfYXJnOiBmdW5jdGlvbiAkc3VibmFtZSB1bmRlZmluZWQgYXJndW1lbnQgIiwgJGluZGV4KzEsICI6IEBhcmdzWzAuLiRpbmRleC0xXVxuIjsgfSB9Ci0gIHJldHVybiBAYXJnczsKLX0KLQotc3ViIGNoZWNrX2FyZ3NfYXRfbGVhc3QgKCAkQCApCi17Ci0gIG15ICgkbWluX2Zvcm1hbHMsIEBhcmdzKSA9IEBfOwotICBteSAoJHBhY2ssICRmaWxlX2FyZywgJGxpbmVfYXJnLCAkc3VibmFtZSwgJGhhc2FyZ3MsICR3YW50YXJyKSA9IGNhbGxlcigxKTsKLSAgIyBEb24ndCBkbyB0aGlzLCBiZWNhdXNlIHdlIHdhbnQgZXZlcnkgc3ViIHRvIHN0YXJ0IHdpdGggYSBjYWxsIHRvIGNoZWNrX2FyZ3MqCi0gICMgaWYgKCRtaW5fZm9ybWFscyA9PSAwKQotICAjICAgeyBkaWUgIklzbid0IGl0IHBvaW50bGVzcyB0byBjaGVjayBmb3IgYXQgbGVhc3QgemVybyBhcmdzIHRvICRzdWJuYW1lP1xuIjsgfQotICBpZiAoc2NhbGFyKEBfKSA8IDEpCi0gICAgeyBjcm9hayAiY2hlY2tfYXJnc19hdF9sZWFzdCBuZWVkcyBhdCBsZWFzdCAxIGFyZywgZ290ICIsIHNjYWxhcihAXyksICI6IEBfIjsgfQotICBpZiAoKCF3YW50YXJyYXkpICYmICgkbWluX2Zvcm1hbHMgIT0gMCkpCi0gICAgeyBjcm9hayAiY2hlY2tfYXJnc19hdF9sZWFzdCBjYWxsZWQgaW4gc2NhbGFyIGNvbnRleHQiOyB9Ci0gICMgQ2FuJ3QgdXNlIGNyb2FrIGJlbG93IGhlcmU6IGl0IHdvdWxkIG9ubHkgZ28gb3V0IHRvIGNhbGxlciwgbm90IGl0cyBjYWxsZXIKLSAgbXkgJG51bV9hY3R1YWxzID0gQGFyZ3M7Ci0gIGlmICgkbnVtX2FjdHVhbHMgPCAkbWluX2Zvcm1hbHMpCi0gICAgeyBkaWUgIiRmaWxlX2FyZzokbGluZV9hcmc6IGZ1bmN0aW9uICRzdWJuYW1lIGV4cGVjdGVkIGF0IGxlYXN0ICRtaW5fZm9ybWFscyBhcmd1bWVudCIsCi0gICAgICAoJG1pbl9mb3JtYWxzID09IDEpID8gIiIgOiAicyIsCi0gICAgICAiLCBnb3QgJG51bV9hY3R1YWxzIiwKLSAgICAgICgkbnVtX2FjdHVhbHMgPT0gMCkgPyAiIiA6ICI6IEBhcmdzIiwgIlxuIjsgfQotICBmb3IgbXkgJGluZGV4ICgwLi4kI2FyZ3MpCi0gICAgeyBpZiAoIWRlZmluZWQoJGFyZ3NbJGluZGV4XSkpCi0JeyB3YXJuICIkZmlsZV9hcmc6JGxpbmVfYXJnOiBmdW5jdGlvbiAkc3VibmFtZSB1bmRlZmluZWQgYXJndW1lbnQgIiwgJGluZGV4KzEsICI6IEBhcmdzWzAuLiRpbmRleC0xXVxuIjsgbGFzdDsgfSB9Ci0gIHJldHVybiBAYXJnczsKLX0KLQotMTsJCQkJIyBzdWNjZXNzZnVsIGltcG9ydAotX19FTkRfXwpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2NrbGF0ZXggYi9kb2MvdG9vbHMvY2tsYXRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzk2ZTkxNC4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvY2tsYXRleAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMgIC0qLSBrc2ggLSotCi0KLSMgVGhpcyBzY3JpcHQgKmhlbHBzKiBsb2NhdGUgbGluZXMgb2Ygbm9ybWFsIGNvbnRlbnQgdGhhdCBlbmQgaW4gJ30nOwotIyB0aGlzIGlzIHVzZWZ1bCBzaW5jZSBMYVRlWDJIVE1MIChhdCBsZWFzdCB0aGUgb2xkIHZlcnNpb24gdGhhdCB3ZQotIyB1c2UpIGJyZWFrcyBvbiBtYW55IGxpbmVzIHRoYXQgZW5kIHRoYXQgd2F5LgotIwotIyBVc2FnZTogY2tsYXRleCBmaWxlcy4uLiB8IGxlc3MKLSMKLSMgKlJlYWQqIHRoZSBvdXRwdXQgbG9va2luZyBmb3Igc3VzcGljaW91cyBsaW5lcyEKLQotZ3JlcCAtbiAiW14gCV19XCQiICRAIHwgXAotIGdyZXAgLXYgJ1xcYmVnaW57JyB8IFwKLSBncmVwIC12ICdcXGVuZHsnIHwgXAotIGdyZXAgLXYgJ1xcaW5wdXR7JyB8IFwKLSBncmVwIC12ICdcXGRvY3VtZW50Y2xhc3N7JyB8IFwKLSBncmVwIC12ICdcXHRpdGxleycgfCBcCi0gZ3JlcCAtdiAnXFxjaGFwdGVyeycgfCBcCi0gZ3JlcCAtdiAnXFxjaGFwdGVyXCp7JyB8IFwKLSBncmVwIC12ICdcXHNlY3Rpb257JyB8IFwKLSBncmVwIC12ICdcXHN1YnNlY3Rpb257JyB8IFwKLSBncmVwIC12ICdcXHN1YnN1YnNlY3Rpb257JyB8IFwKLSBncmVwIC12ICdcXHNlY3Rpb25hdXRob3J7JyB8IFwKLSBncmVwIC12ICdcXG1vZHVsZWF1dGhvcnsnCi0KLWV4aXQgJD8KZGlmZiAtLWdpdCBhL2RvYy90b29scy9jdXN0bGliLnB5IGIvZG9jL3Rvb2xzL2N1c3RsaWIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NTg0NTEuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2N1c3RsaWIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0jIEdlbmVyYXRlIGN1c3RsaWIudGV4LCB3aGljaCBpcyBhIHNpdGUtc3BlY2lmaWMgbGlicmFyeSBkb2N1bWVudC4KLQotIyBQaGFzZSBJOiBsaXN0IGFsbCB0aGUgdGhpbmdzIHRoYXQgY2FuIGJlIGltcG9ydGVkCi0KLWltcG9ydCBnbG9iLCBvcywgc3lzLCBzdHJpbmcKLW1vZHVsZXM9e30KLQotZm9yIG1vZG5hbWUgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgIG1vZHVsZXNbbW9kbmFtZV09bW9kbmFtZQotICAgIAotZm9yIGRpciBpbiBzeXMucGF0aDoKLSAgICAjIExvb2sgZm9yICoucHkgZmlsZXMKLSAgICBmaWxlbGlzdD1nbG9iLmdsb2Iob3MucGF0aC5qb2luKGRpciwgJyoucHknKSkKLSAgICBmb3IgZmlsZSBpbiBmaWxlbGlzdDogCi0gICAgICAgIHBhdGgsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGUpCi0gICAgICAgIGJhc2UsIGV4dD1vcy5wYXRoLnNwbGl0ZXh0KGZpbGUpCi0gICAgICAgIG1vZHVsZXNbc3RyaW5nLmxvd2VyKGJhc2UpXT1iYXNlCi0KLSAgICAjIExvb2sgZm9yIHNoYXJlZCBsaWJyYXJ5IGZpbGVzCi0gICAgZmlsZWxpc3Q9KGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZGlyLCAnKi5zbycpKSArIAotICAgICAgICAgICAgICBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGRpciwgJyouc2wnKSkgKwotICAgICAgICAgICAgICBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGRpciwgJyoubycpKSApCi0gICAgZm9yIGZpbGUgaW4gZmlsZWxpc3Q6IAotICAgICAgICBwYXRoLCBmaWxlID0gb3MucGF0aC5zcGxpdChmaWxlKQotICAgICAgICBiYXNlLCBleHQ9b3MucGF0aC5zcGxpdGV4dChmaWxlKQotICAgICAgICBpZiBiYXNlWy02Ol09PSdtb2R1bGUnOiBiYXNlPWJhc2VbOi02XQotICAgICAgICBtb2R1bGVzW3N0cmluZy5sb3dlcihiYXNlKV09YmFzZQotCi0jIE1pbm9yIG9kZGl0eTogdGhlIHR5cGVzIG1vZHVsZSBpcyBkb2N1bWVudGVkIGluIGxpYnR5cGVzMi50ZXgKLWlmIG1vZHVsZXMuaGFzX2tleSgndHlwZXMnKToKLSAgICBkZWwgbW9kdWxlc1sndHlwZXMnXSA7IG1vZHVsZXNbJ3R5cGVzMiddPU5vbmUKLQotIyBQaGFzZSBJSTogZmluZCBhbGwgZG9jdW1lbnRhdGlvbiBmaWxlcyAobGliKi50ZXgpCi0jICAgICAgICAgICBhbmQgZWxpbWluYXRlIG1vZHVsZXMgdGhhdCBkb24ndCBoYXZlIG9uZS4KLQotZG9jcz17fQotZmlsZWxpc3Q9Z2xvYi5nbG9iKCdsaWIqLnRleCcpCi1mb3IgZmlsZSBpbiBmaWxlbGlzdDoKLSAgICBtb2RuYW1lPWZpbGVbMzotNF0KLSAgICBkb2NzW21vZG5hbWVdPW1vZG5hbWUKLQotbWxpc3Q9bW9kdWxlcy5rZXlzKCkKLW1saXN0PWZpbHRlcihsYW1iZGEgeCwgZG9jcz1kb2NzOiBkb2NzLmhhc19rZXkoeCksIG1saXN0KQotbWxpc3Quc29ydCgpCi1tbGlzdD1tYXAobGFtYmRhIHgsIGRvY3M9ZG9jczogZG9jc1t4XSwgbWxpc3QpCi0KLW1vZHVsZXM9bWxpc3QKLQotIyBQaGFzZSBJSUk6IHdyaXRlIGN1c3RsaWIudGV4Ci0KLSMgV3JpdGUgdGhlIGJvaWxlcnBsYXRlCi0jIFhYWCBzaG91bGQgYmUgZmFuY2llZCB1cC4gIAotcHJpbnQgIiIiXGRvY3VtZW50c3R5bGVbdHdvc2lkZSwxMXB0LG15Zm9ybWF0XXtyZXBvcnR9Ci1cXHRpdGxle1B5dGhvbiBMaWJyYXJ5IFJlZmVyZW5jZX0KLVxcaW5wdXR7Ym9pbGVycGxhdGV9Ci1cXG1ha2VpbmRleCAgICAgICAgICAgICAgICAgICAgICUgdGVsbCBcXGluZGV4IHRvIGFjdHVhbGx5IHdyaXRlIHRoZSAuaWR4IGZpbGUKLVxcYmVnaW57ZG9jdW1lbnR9Ci1cXHBhZ2VudW1iZXJpbmd7cm9tYW59Ci1cXG1ha2V0aXRsZQotXFxpbnB1dHtjb3B5cmlnaHR9Ci1cXGJlZ2lue2Fic3RyYWN0fQotXFxub2luZGVudCBUaGlzIGlzIGEgY3VzdG9taXplZCB2ZXJzaW9uIG9mIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UuCi1cXGVuZHthYnN0cmFjdH0KLVxccGFnZWJyZWFrCi17XFxwYXJza2lwID0gMG1tIFxcdGFibGVvZmNvbnRlbnRzfQotXFxwYWdlYnJlYWtcXHBhZ2VudW1iZXJpbmd7YXJhYmljfSIiIgotICAgIAotZm9yIG1vZG5hbWUgaW4gbWxpc3Q6IAotICAgIHByaW50ICJcXGlucHV0e2xpYiVzfSIgJSAobW9kbmFtZSwpCi0gICAgCi0jIFdyaXRlIHRoZSBlbmQKLXByaW50ICIiIlxcaW5wdXR7Y3VzdGxpYi5pbmR9ICAgICAgICAgICAgICAgICAgICUgSW5kZXgKLVxcZW5ke2RvY3VtZW50fSIiIgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2N2c2luZm8ucHkgYi9kb2MvdG9vbHMvY3ZzaW5mby5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThhMzJjMi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvY3ZzaW5mby5weQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLSIiIlV0aWxpdHkgY2xhc3MgYW5kIGZ1bmN0aW9uIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1ZTIHJlcG9zaXRvcnkKLWJhc2VkIG9uIGNoZWNrZWQtb3V0IGZpbGVzLgotIiIiCi0KLWltcG9ydCBvcwotCi0KLWRlZiBnZXRfcmVwb3NpdG9yeV9saXN0KHBhdGhzKToKLSAgICBkID0ge30KLSAgICBmb3IgbmFtZSBpbiBwYXRoczoKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6Ci0gICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmRpcm5hbWUobmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRpciA9IG5hbWUKLSAgICAgICAgcm9vdGZpbGUgPSBvcy5wYXRoLmpvaW4obmFtZSwgIkNWUyIsICJSb290IikKLSAgICAgICAgcm9vdCA9IG9wZW4ocm9vdGZpbGUpLnJlYWRsaW5lKCkuc3RyaXAoKQotICAgICAgICBpZiBub3QgZC5oYXNfa2V5KHJvb3QpOgotICAgICAgICAgICAgZFtyb290XSA9IFJlcG9zaXRvcnlJbmZvKGRpciksIFtuYW1lXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZFtyb290XVsxXS5hcHBlbmQobmFtZSkKLSAgICByZXR1cm4gZC52YWx1ZXMoKQotCi0KLWNsYXNzIFJlcG9zaXRvcnlJbmZvOgotICAgICIiIlJlY29yZCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBvc2l0b3J5IHdlIHdhbnQgdG8gdGFsayB0by4iIiIKLSAgICBjdnNyb290X3BhdGggPSBOb25lCi0gICAgYnJhbmNoID0gTm9uZQotCi0gICAgIyB0eXBlIGlzICcnLCAnOmV4dCcsIG9yICc6cHNlcnZlcjonCi0gICAgdHlwZSA9ICIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyPU5vbmUpOgotICAgICAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgIGRpciA9IG9zLnBhdGguam9pbihkaXIsICJDVlMiKQotICAgICAgICByb290ID0gb3Blbihvcy5wYXRoLmpvaW4oZGlyLCAiUm9vdCIpKS5yZWFkbGluZSgpLnN0cmlwKCkKLSAgICAgICAgaWYgcm9vdC5zdGFydHN3aXRoKCI6cHNlcnZlcjoiKToKLSAgICAgICAgICAgIHNlbGYudHlwZSA9ICI6cHNlcnZlcjoiCi0gICAgICAgICAgICByb290ID0gcm9vdFtsZW4oIjpwc2VydmVyOiIpOl0KLSAgICAgICAgZWxpZiAiOiIgaW4gcm9vdDoKLSAgICAgICAgICAgIGlmIHJvb3Quc3RhcnRzd2l0aCgiOmV4dDoiKToKLSAgICAgICAgICAgICAgICByb290ID0gcm9vdFtsZW4oIjpleHQ6Iik6XQotICAgICAgICAgICAgc2VsZi50eXBlID0gIjpleHQ6IgotICAgICAgICBzZWxmLnJlcG9zaXRvcnkgPSByb290Ci0gICAgICAgIGlmICI6IiBpbiByb290OgotICAgICAgICAgICAgaG9zdCwgcGF0aCA9IHJvb3Quc3BsaXQoIjoiLCAxKQotICAgICAgICAgICAgc2VsZi5jdnNyb290X3BhdGggPSBwYXRoCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmN2c3Jvb3RfcGF0aCA9IHJvb3QKLSAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oZGlyLCAiVGFnIikKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm4pOgotICAgICAgICAgICAgc2VsZi5icmFuY2ggPSBvcGVuKGZuKS5yZWFkbGluZSgpLnN0cmlwKClbMTpdCi0KLSAgICBkZWYgZ2V0X2N2c3Jvb3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnR5cGUgKyBzZWxmLnJlcG9zaXRvcnkKLQotICAgIF9yZXBvc2l0b3J5X2Rpcl9jYWNoZSA9IHt9Ci0KLSAgICBkZWYgZ2V0X3JlcG9zaXRvcnlfZmlsZShzZWxmLCBwYXRoKToKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgocGF0aCkKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgICAgIGRpciA9IHBhdGgKLSAgICAgICAgICAgIGpvaW4gPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmRpcm5hbWUocGF0aCkKLSAgICAgICAgICAgIGpvaW4gPSAxCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlcG9kaXIgPSBzZWxmLl9yZXBvc2l0b3J5X2Rpcl9jYWNoZVtkaXJdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJlcG9mbiA9IG9zLnBhdGguam9pbihkaXIsICJDVlMiLCAiUmVwb3NpdG9yeSIpCi0gICAgICAgICAgICByZXBvZGlyID0gb3BlbihyZXBvZm4pLnJlYWRsaW5lKCkuc3RyaXAoKQotICAgICAgICAgICAgcmVwb2RpciA9IG9zLnBhdGguam9pbihzZWxmLmN2c3Jvb3RfcGF0aCwgcmVwb2RpcikKLSAgICAgICAgICAgIHNlbGYuX3JlcG9zaXRvcnlfZGlyX2NhY2hlW2Rpcl0gPSByZXBvZGlyCi0gICAgICAgIGlmIGpvaW46Ci0gICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihyZXBvZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm4gPSByZXBvZGlyCi0gICAgICAgIHJldHVybiBmbltsZW4oc2VsZi5jdnNyb290X3BhdGgpKzE6XQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxSZXBvc2l0b3J5SW5mbyBmb3IgJXM+IiAlIGBzZWxmLmdldF9jdnNyb290KClgCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvZmluZGFja3MgYi9kb2MvdG9vbHMvZmluZGFja3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGMxM2IwMGYuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2ZpbmRhY2tzCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIiIiU2NyaXB0IHRvIGxvY2F0ZSBlbWFpbCBhZGRyZXNzZXMgaW4gdGhlIENWUyBsb2dzLiIiIgotX192ZXJzaW9uX18gPSAnJFJldmlzaW9uOiAxLjEuMS4xICQnCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgVXNlckRpY3QKLQotaW1wb3J0IGN2c2luZm8KLQotCi1jbGFzcyBBY2tub3dsZWRnZW1lbnRzKFVzZXJEaWN0LlVzZXJEaWN0KToKLSAgICBkZWYgYWRkKHNlbGYsIGVtYWlsLCBuYW1lLCBwYXRoKToKLSAgICAgICAgZCA9IHNlbGYuZGF0YQotICAgICAgICBkLnNldGRlZmF1bHQoZW1haWwsIHt9KVtwYXRoXSA9IG5hbWUKLQotCi1kZWYgb3Blbl9jdnNfbG9nKGluZm8sIHBhdGhzPU5vbmUpOgotICAgIGN2c3Jvb3QgPSBpbmZvLmdldF9jdnNyb290KCkKLSAgICBjbWQgPSAiY3ZzIC1xIC1kJXMgbG9nICIgJSBjdnNyb290Ci0gICAgaWYgcGF0aHM6Ci0gICAgICAgIGNtZCArPSAiICIuam9pbihwYXRocykKLSAgICByZXR1cm4gb3MucG9wZW4oY21kLCAiciIpCi0KLQotZW1haWxfcnggPSByZS5jb21waWxlKCI8KFthLXpdWy1hLXowLTkuX10qQFstYS16MC05Ll0rKT4iLCByZS5JR05PUkVDQVNFKQotCi1kZWYgZmluZF9hY2tzKGYsIGFja3MpOgotICAgIHByZXYgPSAnJwotICAgIGZpbGVuYW1lID0gTm9uZQotICAgIE1BR0lDX1dPUkRTID0gKCd2YW4nLCAndm9uJykKLSAgICB3aGlsZSAxOgotICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCi0gICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJXb3JraW5nIGZpbGU6ICIpOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBsaW5lLnNwbGl0KE5vbmUsIDIpWzJdLnN0cmlwKCkKLSAgICAgICAgICAgIHByZXYgPSBsaW5lCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBtID0gZW1haWxfcnguc2VhcmNoKGxpbmUpCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgICB3b3JkcyA9IHByZXYuc3BsaXQoKSArIGxpbmVbOm0uc3RhcnQoKV0uc3BsaXQoKQotICAgICAgICAgICAgTCA9IFtdCi0gICAgICAgICAgICB3aGlsZSB3b3JkcyBcCi0gICAgICAgICAgICAgICAgICBhbmQgKHdvcmRzWy0xXVswXS5pc3VwcGVyKCkgb3Igd29yZHNbLTFdIGluIE1BR0lDX1dPUkRTKToKLSAgICAgICAgICAgICAgICBMLmluc2VydCgwLCB3b3Jkcy5wb3AoKSkKLSAgICAgICAgICAgIG5hbWUgPSAiICIuam9pbihMKQotICAgICAgICAgICAgZW1haWwgPSBtLmdyb3VwKDEpLmxvd2VyKCkKLSAgICAgICAgICAgIGFja3MuYWRkKGVtYWlsLCBuYW1lLCBmaWxlbmFtZSkKLSAgICAgICAgcHJldiA9IGxpbmUKLQotCi1kZWYgbG9hZF9jdnNfbG9nX2Fja3MoYWNrcywgYXJncyk6Ci0gICAgcmVwb2xpc3QgPSBjdnNpbmZvLmdldF9yZXBvc2l0b3J5X2xpc3QoYXJncyBvciBbIiJdKQotICAgIGZvciBpbmZvLCBwYXRocyBpbiByZXBvbGlzdDoKLSAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAiUmVwb3NpdG9yeToiLCBpbmZvLmdldF9jdnNyb290KCkKLSAgICAgICAgZiA9IG9wZW5fY3ZzX2xvZyhpbmZvLCBwYXRocykKLSAgICAgICAgZmluZF9hY2tzKGYsIGFja3MpCi0gICAgICAgIGYuY2xvc2UoKQotCi0KLWRlZiBsb2FkX3RleF9zb3VyY2VfYWNrcyhhY2tzLCBhcmdzKToKLSAgICBmb3IgcGF0aCBpbiBhcmdzOgotICAgICAgICBwYXRoID0gcGF0aCBvciBvcy5jdXJkaXIKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6Ci0gICAgICAgICAgICByZWFkX2Fja3NfZnJvbV90ZXhfZmlsZShhY2tzLCBwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVhZF9hY2tzX2Zyb21fdGV4X2RpcihhY2tzLCBwYXRoKQotCi0KLWRlZiByZWFkX2Fja3NfZnJvbV90ZXhfZmlsZShhY2tzLCBwYXRoKToKLSAgICBmID0gb3BlbihwYXRoKQotICAgIHdoaWxlIDE6Ci0gICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgociJcc2VjdGlvbmF1dGhvcnsiKToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lW2xlbihyIlxzZWN0aW9uYXV0aG9yIik6XQotICAgICAgICAgICAgbmFtZSwgbGluZSA9IGV4dHJhY3RfdGV4X2dyb3VwKGxpbmUpCi0gICAgICAgICAgICBlbWFpbCwgbGluZSA9IGV4dHJhY3RfdGV4X2dyb3VwKGxpbmUpCi0gICAgICAgICAgICBhY2tzLmFkZChlbWFpbCwgbmFtZSwgcGF0aCkKLQotCi1kZWYgcmVhZF9hY2tzX2Zyb21fdGV4X2RpcihhY2tzLCBwYXRoKToKLSAgICBzdGFjayA9IFtwYXRoXQotICAgIHdoaWxlIHN0YWNrOgotICAgICAgICBwID0gc3RhY2sucG9wKCkKLSAgICAgICAgZm9yIG4gaW4gb3MubGlzdGRpcihwKToKLSAgICAgICAgICAgIG4gPSBvcy5wYXRoLmpvaW4ocCwgbikKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobik6Ci0gICAgICAgICAgICAgICAgc3RhY2suaW5zZXJ0KDAsIG4pCi0gICAgICAgICAgICBlbGlmIG9zLnBhdGgubm9ybXBhdGgobikuZW5kc3dpdGgoIi50ZXgiKToKLSAgICAgICAgICAgICAgICByZWFkX2Fja3NfZnJvbV90ZXhfZmlsZShhY2tzLCBuKQotCi0KLWRlZiBleHRyYWN0X3RleF9ncm91cChzKToKLSAgICBjID0gMAotICAgIGZvciBpIGluIHJhbmdlKGxlbihzKSk6Ci0gICAgICAgIGlmIHNbaV0gPT0gJ3snOgotICAgICAgICAgICAgYyArPSAxCi0gICAgICAgIGVsaWYgc1tpXSA9PSAnfSc6Ci0gICAgICAgICAgICBjIC09IDEKLSAgICAgICAgICAgIGlmIGMgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc1sxOmldLCBzW2krMTpdCi0KLQotZGVmIHByaW50X2Fja3MoYWNrcyk6Ci0gICAgZmlyc3QgPSAxCi0gICAgZm9yIGVtYWlsLCBEIGluIGFja3MuaXRlbXMoKToKLSAgICAgICAgaWYgZmlyc3Q6Ci0gICAgICAgICAgICBmaXJzdCA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50Ci0gICAgICAgIEwgPSBELml0ZW1zKCkKLSAgICAgICAgTC5zb3J0KCkKLSAgICAgICAgcHJlZm5hbWUgPSBMWzBdWzFdCi0gICAgICAgIGZvciBmaWxlLCBuYW1lIGluIExbMTpdOgotICAgICAgICAgICAgaWYgbmFtZSAhPSBwcmVmbmFtZToKLSAgICAgICAgICAgICAgICBwcmVmbmFtZSA9ICIiCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgcHJlZm5hbWU6Ci0gICAgICAgICAgICBwcmludCBwcmVmbmFtZSwgIjwlcz46IiAlIGVtYWlsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCBlbWFpbCArICI6IgotICAgICAgICBmb3IgZmlsZSwgbmFtZSBpbiBMOgotICAgICAgICAgICAgaWYgbmFtZSA9PSBwcmVmbmFtZToKLSAgICAgICAgICAgICAgICBwcmludCAiICAgICIgKyBmaWxlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50ICIgICAgJXMgKGFzICVzKSIgJSAoZmlsZSwgbmFtZSkKLQotCi1kZWYgcHJpbnRfYWNrX25hbWVzKGFja3MpOgotICAgIG5hbWVzID0gW10KLSAgICBmb3IgZW1haWwsIEQgaW4gYWNrcy5pdGVtcygpOgotICAgICAgICBMID0gRC5pdGVtcygpCi0gICAgICAgIEwuc29ydCgpCi0gICAgICAgIHByZWZuYW1lID0gTFswXVsxXQotICAgICAgICBmb3IgZmlsZSwgbmFtZSBpbiBMWzE6XToKLSAgICAgICAgICAgIHByZWZuYW1lID0gcHJlZm5hbWUgb3IgbmFtZQotICAgICAgICBuYW1lcy5hcHBlbmQocHJlZm5hbWUgb3IgZW1haWwpCi0gICAgZGVmIGYoczEsIHMyKToKLSAgICAgICAgczEgPSBzMS5sb3dlcigpCi0gICAgICAgIHMyID0gczIubG93ZXIoKQotICAgICAgICByZXR1cm4gY21wKChzMS5zcGxpdCgpWy0xXSwgczEpLAotICAgICAgICAgICAgICAgICAgIChzMi5zcGxpdCgpWy0xXSwgczIpKQotICAgIG5hbWVzLnNvcnQoZikKLSAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgcHJpbnQgbmFtZQotCi0KLWRlZiBtYWluKCk6Ci0gICAgYXJncyA9IHN5cy5hcmd2WzE6XQotICAgIGFja3MgPSBBY2tub3dsZWRnZW1lbnRzKCkKLSAgICBsb2FkX2N2c19sb2dfYWNrcyhhY2tzLCBhcmdzKQotICAgIGxvYWRfdGV4X3NvdXJjZV9hY2tzKGFja3MsIGFyZ3MpCi0gICAgcHJpbnRfYWNrX25hbWVzKGFja3MpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL2RvYy90b29scy9maW5kbW9kcmVmcyBiL2RvYy90b29scy9maW5kbW9kcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGM1ZjkzZi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvZmluZG1vZHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICAtKi0gUHl0aG9uIC0qLQotCi1pbXBvcnQgZmlsZWlucHV0Ci1pbXBvcnQgZ2V0b3B0Ci1pbXBvcnQgZ2xvYgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLQotCi1kZWNsYXJlX3J4ID0gcmUuY29tcGlsZSgKLSAgICByIlxcZGVjbGFyZW1vZHVsZSg/OlxbW2EtekEtWjAtOV0qXF0qKT97W2EtekEtWl8wLTldK317KFthLXpBLVpfMC05XSspfSIpCi0KLW1vZHVsZV9yeCA9IHJlLmNvbXBpbGUociJcXG1vZHVsZXsoW2EtekEtWl8wLTldKyl9IikKLQotZGVmIG1haW4oKToKLSAgICB0cnk6Ci0gICAgICAgIGp1c3RfbGlzdCA9IDAKLSAgICAgICAgcHJpbnRfbGluZW5vID0gMAotICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJsbiIsIFsibGlzdCIsICJudW1iZXIiXSkKLSAgICAgICAgZm9yIG9wdCwgYXJnIGluIG9wdHM6Ci0gICAgICAgICAgICBpZiBvcHQgaW4gKCItbCIsICItLWxpc3QiKToKLSAgICAgICAgICAgICAgICBqdXN0X2xpc3QgPSAxCi0gICAgICAgICAgICBlbGlmIG9wdCBpbiAoIi1uIiwgIi0tbnVtYmVyIik6Ci0gICAgICAgICAgICAgICAgcHJpbnRfbGluZW5vID0gMQotICAgICAgICBmaWxlcyA9IGFyZ3MKLSAgICAgICAgaWYgbm90IGZpbGVzOgotICAgICAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IoIioudGV4IikKLSAgICAgICAgICAgIGZpbGVzLnNvcnQoKQotICAgICAgICBtb2R1bGVuYW1lID0gTm9uZQotICAgICAgICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuaW5wdXQoZmlsZXMpOgotICAgICAgICAgICAgaWYgbGluZVs6OV0gPT0gciJcc2VjdGlvbnsiOgotICAgICAgICAgICAgICAgIG1vZHVsZW5hbWUgPSBOb25lCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGxpbmVbOjE2XSA9PSByIlxtb2R1bGVzeW5vcHN5c3siOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gZGVjbGFyZV9yeC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBtb2R1bGVuYW1lID0gbS5ncm91cCgxKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBub3QgbW9kdWxlbmFtZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbSA9IG1vZHVsZV9yeC5zZWFyY2gobGluZSkKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICBpZiBuYW1lICE9IG1vZHVsZW5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZWlucHV0LmZpbGVuYW1lKCkKLSAgICAgICAgICAgICAgICAgICAgaWYganVzdF9saXN0OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVpbnB1dC5uZXh0ZmlsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVuYW1lID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBlbGlmIHByaW50X2xpbmVubzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIlcyglZCk6JXMiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGZpbGVuYW1lLCBmaWxlaW5wdXQuZmlsZWxpbmVubygpLCBsaW5lWzotMV0pCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiJXM6JXMiICUgKGZpbGVuYW1lLCBsaW5lWzotMV0pCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBzeXMuZXhpdCgxKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvZml4X2hhY2sgYi9kb2MvdG9vbHMvZml4X2hhY2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhkYWQxMTEuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2ZpeF9oYWNrCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIS9iaW4vc2gKLXNlZCAtZSAncy97XFxwdHRbIAldKlxcY2hhclsgCV0qJyInIicxMzd9L18vZycgPCIkMSIgPiAiQCQxIiAmJiBtdiAiQCQxIiAkMQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2ZpeF9saWJhdXguc2VkIGIvZG9jL3Rvb2xzL2ZpeF9saWJhdXguc2VkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmYjMzY2M1Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9maXhfbGliYXV4LnNlZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zZWQgLWYKLXMve1xcdHQgIFxcaGFja3Njb3JlICB7fVxcaGFja3Njb3JlICB7fS9cXHNlY3Rjb2Rle19fLwotcy9cXGhhY2tzY29yZSAge31cXGhhY2tzY29yZSAge30vX18vCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvZml4aW5mby5lbCBiL2RvYy90b29scy9maXhpbmZvLmVsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjdhN2UzLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9maXhpbmZvLmVsCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotKGRlZnVuIGZpeC1weXRob24tdGV4aW5mbyAoKQotICAoZ290by1jaGFyIChwb2ludC1taW4pKQotICAocmVwbGFjZS1yZWdleHAgIlxcKEBzZXRmaWxlbmFtZSBcXClcXChbLWEtel0qXFwpJCIKLQkJICAiXFwxcHl0aG9uLVxcMi5pbmZvIikKLSAgKHJlcGxhY2Utc3RyaW5nICJAbm9kZSBGcm9udCBNYXR0ZXJcbkBjaGFwdGVyIEFic3RyYWN0XG4iCi0JCSAgIkBub2RlIEFic3RyYWN0XG5Ac2VjdGlvbiBBYnN0cmFjdFxuIikKLSAgKG1hcmstd2hvbGUtYnVmZmVyKQotICAodGV4aW5mby1tYXN0ZXItbWVudSAndXBkYXRlLWFsbC1ub2RlcykKLSAgKHNhdmUtYnVmZmVyKQotICApCTs7IGZpeC1weXRob24tdGV4aW5mbwotCi07OyBub3cgcmVhbGx5IGRvIGl0OgotKGZpbmQtZmlsZSAoY2FyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKQotKGZpeC1weXRob24tdGV4aW5mbykKLShraWxsLWVtYWNzKQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2dldHBhZ2Vjb3VudHMgYi9kb2MvdG9vbHMvZ2V0cGFnZWNvdW50cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTc5Y2VkMS4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvZ2V0cGFnZWNvdW50cworKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24KLSMgIC0qLSBQeXRob24gLSotCi0KLSIiIkdlbmVyYXRlIGEgcGFnZSBjb3VudCByZXBvcnQgb2YgdGhlIFBvc3RTY3JpcHQgdmVyc2lvbiBvZiB0aGUgbWFudWFscy4iIiIKLQotX192ZXJzaW9uX18gPSAnJFJldmlzaW9uOiAxLjEuMS4xICQnCi0KLQotY2xhc3MgUGFnZUNvdW50ZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmRvY2xpc3QgPSBbXQotICAgICAgICBzZWxmLnRvdGFsID0gMAotICAgICAgICBzZWxmLnRpdGxlX3dpZHRoID0gMAotCi0gICAgZGVmIGFkZF9kb2N1bWVudChzZWxmLCBwcmVmaXgsIHRpdGxlKToKLSAgICAgICAgY291bnQgPSBjb3VudF9wYWdlcyhwcmVmaXggKyAiLnBzIikKLSAgICAgICAgc2VsZi5kb2NsaXN0LmFwcGVuZCgodGl0bGUsIHByZWZpeCwgY291bnQpKQotICAgICAgICBzZWxmLnRpdGxlX3dpZHRoID0gbWF4KHNlbGYudGl0bGVfd2lkdGgsIGxlbih0aXRsZSkpCi0gICAgICAgIHNlbGYudG90YWwgPSBzZWxmLnRvdGFsICsgY291bnQKLQotICAgIGRlZiBkdW1wKHNlbGYpOgotICAgICAgICBmbXQgPSAiJSUtJWRzICAoJSVzLnBzLCAlJWQgcGFnZXMpIiAlIHNlbGYudGl0bGVfd2lkdGgKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5kb2NsaXN0OgotICAgICAgICAgICAgcHJpbnQgZm10ICUgaXRlbQotICAgICAgICBwcmludAotICAgICAgICBwcmludCAiICBUb3RhbCBwYWdlIGNvdW50OiAgJWQiICUgc2VsZi50b3RhbAotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgZm9yIHByZWZpeCwgdGl0bGUgaW4gWwotICAgICAgICAgICAgKCJhcGkiLCAiUHl0aG9uL0MgQVBJIiksCi0gICAgICAgICAgICAoImV4dCIsICJFeHRlbmRpbmcgYW5kIEVtYmVkZGluZyB0aGUgUHl0aG9uIEludGVycHJldGVyIiksCi0gICAgICAgICAgICAoImxpYiIsICJQeXRob24gTGlicmFyeSBSZWZlcmVuY2UiKSwKLSAgICAgICAgICAgICgibWFjIiwgIk1hY2ludG9zaCBNb2R1bGUgUmVmZXJlbmNlIiksCi0gICAgICAgICAgICAoInJlZiIsICJQeXRob24gUmVmZXJlbmNlIE1hbnVhbCIpLAotICAgICAgICAgICAgKCJ0dXQiLCAiUHl0aG9uIFR1dG9yaWFsIiksCi0gICAgICAgICAgICAoImRvYyIsICJEb2N1bWVudGluZyBQeXRob24iKSwKLSAgICAgICAgICAgICgiaW5zdCIsICJJbnN0YWxsaW5nIFB5dGhvbiBNb2R1bGVzIiksCi0gICAgICAgICAgICAoImRpc3QiLCAiRGlzdHJpYnV0aW5nIFB5dGhvbiBNb2R1bGVzIiksCi0gICAgICAgICAgICBdOgotICAgICAgICAgICAgc2VsZi5hZGRfZG9jdW1lbnQocHJlZml4LCB0aXRsZSkKLSAgICAgICAgcHJpbnQgc2VsZi5QUkVGSVgKLSAgICAgICAgc2VsZi5kdW1wKCkKLSAgICAgICAgcHJpbnQgc2VsZi5TVUZGSVgKLQotICAgIFBSRUZJWCA9ICIiIlwKLVRoaXMgaXMgdGhlIFBvc3RTY3JpcHQgdmVyc2lvbiBvZiB0aGUgc3RhbmRhcmQgUHl0aG9uIGRvY3VtZW50YXRpb24uCi1JZiB5b3UgcGxhbiB0byBwcmludCB0aGlzLCBiZSBhd2FyZSB0aGF0IHNvbWUgb2YgdGhlIGRvY3VtZW50cyBhcmUKLWxvbmcuICBJdCBpcyBmb3JtYXR0ZWQgZm9yIHByaW50aW5nIG9uIHR3by1zaWRlZCBwYXBlcjsgaWYgeW91IGRvIHBsYW4KLXRvIHByaW50IHRoaXMsICpwbGVhc2UqIHByaW50IHR3by1zaWRlZCBpZiB5b3UgaGF2ZSBhIHByaW50ZXIgY2FwYWJsZQotb2YgaXQhICBUbyBsb2NhdGUgcHVibGlzaGVkIGNvcGllcyBvZiB0aGUgbGFyZ2VyIG1hbnVhbHMsIG9yIG90aGVyCi1QeXRob24gcmVmZXJlbmNlIG1hdGVyaWFsLCBjb25zdWx0IHRoZSBQU0EgT25saW5lIEJvb2tzdG9yZSBhdDoKLQotICAgICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2EvYm9va3N0b3JlLwotCi1UaGUgZm9sbG93aW5nIG1hbnVhbHMgYXJlIGluY2x1ZGVkOgotIiIiCi0gICAgU1VGRklYID0gIiIiXAotCi0KLUlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGNvbW1lbnRzLCBvciBzdWdnZXN0aW9ucyByZWdhcmRpbmcgdGhlc2UKLWRvY3VtZW50cywgcGxlYXNlIHNlbmQgdGhlbSB2aWEgZW1haWwgdG8gcHl0aG9uLWRvY3NAcHl0aG9uLm9yZy4KLQotSWYgeW91IHdvdWxkIGxpa2UgdG8gc3VwcG9ydCB0aGUgZGV2ZWxvcG1lbnQgYW5kIG1haW50ZW5hbmNlIG9mCi1kb2N1bWVudGF0aW9uIGZvciBQeXRob24sIHBsZWFzZSBjb25zaWRlciBqb2luaW5nIHRoZSBQeXRob24gU29mdHdhcmUKLUFjdGl2aXR5IChQU0E7IHNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvcHNhLyksIG9yIHVyZ2luZyB5b3VyCi1vcmdhbml6YXRpb24gdG8gam9pbiB0aGUgUFNBIG9yIHRoZSBQeXRob24gQ29uc29ydGl1bSAoc2VlCi1odHRwOi8vd3d3LnB5dGhvbi5vcmcvY29uc29ydGl1bS8pLgotIiIiCi0KLWRlZiBjb3VudF9wYWdlcyhmaWxlbmFtZSk6Ci0gICAgZnAgPSBvcGVuKGZpbGVuYW1lKQotICAgIGNvdW50ID0gMAotICAgIHdoaWxlIDE6Ci0gICAgICAgIGxpbmVzID0gZnAucmVhZGxpbmVzKDEwMjQqNDApCi0gICAgICAgIGlmIG5vdCBsaW5lczoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgaWYgbGluZVs6N10gPT0gIiUlUGFnZToiOgotICAgICAgICAgICAgICAgIGNvdW50ID0gY291bnQgKyAxCi0gICAgZnAuY2xvc2UoKQotICAgIHJldHVybiBjb3VudAotCi0KLWRlZiBtYWluKCk6Ci0gICAgUGFnZUNvdW50ZXIoKS5ydW4oKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvYWJvdXQuZGF0IGIvZG9jL3Rvb2xzL2h0bWwvYWJvdXQuZGF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmY4YjU1Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9odG1sL2Fib3V0LmRhdAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTxwPiBUaGlzIGRvY3VtZW50IHdhcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIDxhCi0gICAgaHJlZj0iaHR0cDovL3NhZnRzYWNrLmZzLnVuaS1iYXlyZXV0aC5kZS87U1BNdGlsZGU7bGF0ZXgyaHQvIj4KLSAgICA8c3Ryb25nPkxhVGVYPC9zdHJvbmc+Mjx0dD5IVE1MPC90dD48L2E+IHRyYW5zbGF0b3IuCi08L3A+Ci0KLTxwPiA8YQotICAgIGhyZWY9Imh0dHA6Ly9zYWZ0c2Fjay5mcy51bmktYmF5cmV1dGguZGUvO1NQTXRpbGRlO2xhdGV4Mmh0LyI+Ci0gICAgPHN0cm9uZz5MYVRlWDwvc3Ryb25nPjI8dHQ+SFRNTDwvdHQ+PC9hPiBpcyBDb3B5cmlnaHQgJmNvcHk7Ci0gIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDxhCi0gICAgaHJlZj0iaHR0cDovL2NibC5sZWVkcy5hYy51ay9uaWtvcy9wZXJzb25hbC5odG1sIj5OaWtvcwotICAgIERyYWtvczwvYT4sIENvbXB1dGVyIEJhc2VkIExlYXJuaW5nIFVuaXQsIFVuaXZlcnNpdHkgb2YKLSAgTGVlZHMsIGFuZCBDb3B5cmlnaHQgJmNvcHk7IDE5OTcsIDE5OTgsIDxhCi0gICAgaHJlZj0iaHR0cDovL3d3dy5tYXRocy5tcS5lZHUuYXUvO1NQTXRpbGRlO3Jvc3MvIj5Sb3NzCi0gICAgTW9vcmU8L2E+LCBNYXRoZW1hdGljcyBEZXBhcnRtZW50LCBNYWNxdWFyaWUgVW5pdmVyc2l0eSwKLSAgU3lkbmV5LgotPC9wPgotCi08cD4gVGhlIGFwcGxpY2F0aW9uIG9mIDxhCi0gICAgaHJlZj0iaHR0cDovL3NhZnRzYWNrLmZzLnVuaS1iYXlyZXV0aC5kZS87U1BNdGlsZGU7bGF0ZXgyaHQvIj4KLSAgICA8c3Ryb25nPkxhVGVYPC9zdHJvbmc+Mjx0dD5IVE1MPC90dD48L2E+IHRvIHRoZSBQeXRob24KLSAgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBoZWF2aWx5IHRhaWxvcmVkIGJ5IEZyZWQgTC4gRHJha2UsCi0gIEpyLiAgT3JpZ2luYWwgbmF2aWdhdGlvbiBpY29ucyB3ZXJlIGNvbnRyaWJ1dGVkIGJ5IENocmlzdG9waGVyCi0gIFBldHJpbGxpLgotPC9wPgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvYWJvdXQuaHRtbCBiL2RvYy90b29scy9odG1sL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMDNmYWYuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2h0bWwvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLSAgPGhlYWQ+Ci0gICAgPHRpdGxlPkFib3V0IHRoZSBQeXRob24gRG9jdW1lbnRhdGlvbjwvdGl0bGU+Ci0gICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iCi0gICAgICBjb250ZW50PSJPdmVydmlldyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24iPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotICAgIDxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0ibGliL2xpYi5jc3MiPgotICA8L2hlYWQ+Ci0gIDxib2R5PgotICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb24iPgotICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD48aW1nIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9IiIKLSAgICAgICAgICAgICAgICBzcmM9Imljb25zL2JsYW5rLmdpZiI+PC90ZD4KLSAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLyIKLSAgICAgICAgICAgICAgICB0aXRsZT0iUHl0aG9uIERvY3VtZW50YXRpb24gSW5kZXgiPjxpbWcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIgotICAgICAgICAgICAgICAgICAgYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9InVwIgotICAgICAgICAgICAgICAgICAgc3JjPSJpY29ucy91cC5naWYiPjwvYT48L3RkPgotICAgICAgICAgICAgPHRkPjxpbWcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBhbGlnbj0iYm90dG9tIiBib3JkZXI9IjAiIGFsdD0iIgotICAgICAgICAgICAgICAgIHNyYz0iaWNvbnMvYmxhbmsuZ2lmIj48L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj5BYm91dCB0aGUgUHl0aG9uIERvY3VtZW50YXRpb248L3RkPgotICAgICAgICAgICAgPHRkPjxpbWcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBhbGlnbj0iYm90dG9tIiBib3JkZXI9IjAiIGFsdD0iIgotICAgICAgICAgICAgICAgIHNyYz0iaWNvbnMvYmxhbmsuZ2lmIj48L3RkPgotICAgICAgICAgICAgPHRkPjxpbWcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBhbGlnbj0iYm90dG9tIiBib3JkZXI9IjAiIGFsdD0iIgotICAgICAgICAgICAgICAgIHNyYz0iaWNvbnMvYmxhbmsuZ2lmIj48L3RkPgotICAgICAgICAgICAgPHRkPjxpbWcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBhbGlnbj0iYm90dG9tIiBib3JkZXI9IjAiIGFsdD0iIgotICAgICAgICAgICAgICAgIHNyYz0iaWNvbnMvYmxhbmsuZ2lmIj48L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgICAgPGIgY2xhc3M9Im5hdmxhYmVsIj5VcDo8L2I+Ci0gICAgICA8c3BhbiBjbGFzcz0ic2VjdHJlZiI+Ci0gICAgICAgIDxhIGhyZWY9Ii4vIiB0aXRsZT0iUHl0aG9uIERvY3VtZW50YXRpb24gSW5kZXgiPgotICAgICAgICAgIFB5dGhvbiBEb2N1bWVudGF0aW9uIEluZGV4PC9BPjwvc3Bhbj4KLSAgICAgIDxicj4KLSAgICA8L2Rpdj4KLSAgICA8aHI+Ci0KLSAgICA8aDI+QWJvdXQgdGhlIFB5dGhvbiBEb2N1bWVudGF0aW9uPC9oMj4KLQotICAgIDxwPlRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEd1aWRvIHZhbgotICAgICAgUm9zc3VtLCBidXQgaGFzIGluY3JlYXNpbmdseSBiZWNvbWUgYSBjb21tdW5pdHkgZWZmb3J0IG92ZXIgdGhlCi0gICAgICBwYXN0IHNldmVyYWwgeWVhcnMuICBUaGlzIGdyb3dpbmcgY29sbGVjdGlvbiBvZiBkb2N1bWVudHMgaXMKLSAgICAgIGF2YWlsYWJsZSBpbiBzZXZlcmFsIGZvcm1hdHMsIGluY2x1ZGluZyB0eXBlc2V0IHZlcnNpb25zIGluIFBERgotICAgICAgYW5kIFBvc3RTY3JpcHQgZm9yIHByaW50aW5nLCBmcm9tIHRoZSA8YQotICAgICAgICBocmVmPSJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIj5QeXRob24gV2ViIHNpdGU8L2E+LgotCi0gICAgPHA+QSA8YSBocmVmPSJhY2tzLmh0bWwiPmxpc3Qgb2YgY29udHJpYnV0b3JzPC9hPiBpcyBhdmFpbGFibGUuCi0KLSAgICA8aDI+Q29tbWVudHMgYW5kIFF1ZXN0aW9uczwvaDI+Ci0KLSAgICA8cD4gR2VuZXJhbCBjb21tZW50cyBhbmQgcXVlc3Rpb25zIHJlZ2FyZGluZyB0aGlzIGRvY3VtZW50IHNob3VsZAotICAgICAgYmUgc2VudCBieSBlbWFpbCB0byA8YSBocmVmPSJtYWlsdG86cHl0aG9uLWRvY3NAcHl0aG9uLm9yZyIKLSAgICAgICAgPnB5dGhvbi1kb2NzQHB5dGhvbi5vcmc8L2E+LiAgSWYgeW91IGZpbmQgc3BlY2lmaWMgZXJyb3JzIGluCi0gICAgICB0aGlzIGRvY3VtZW50LCBwbGVhc2UgcmVwb3J0IHRoZSBidWcgYXQgdGhlIDxhCi0gICAgICAgIGhyZWY9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvYnVncy8/Z3JvdXBfaWQ9NTQ3MCI+UHl0aG9uIEJ1ZwotICAgICAgICBUcmFja2VyPC9hPiBhdCA8YSBocmVmPSJodHRwOi8vc291cmNlZm9yZ2UubmV0LyI+U291cmNlRm9yZ2U8L2E+LgotICAgIDwvcD4KLQotICAgIDxwPiBRdWVzdGlvbnMgcmVnYXJkaW5nIGhvdyB0byB1c2UgdGhlIGluZm9ybWF0aW9uIGluIHRoaXMKLSAgICAgIGRvY3VtZW50IHNob3VsZCBiZSBzZW50IHRvIHRoZSBQeXRob24gbmV3cyBncm91cCwgPGEKLSAgICAgICAgaHJlZj0ibmV3czpjb21wLmxhbmcucHl0aG9uIj5jb21wLmxhbmcucHl0aG9uPC9hPiwgb3IgdGhlIDxhCi0gICAgICAgIGhyZWY9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1saXN0IgotICAgICAgICA+UHl0aG9uIG1haWxpbmcgbGlzdDwvYT4gKHdoaWNoIGlzIGdhdGVkIHRvIHRoZSBuZXdzZ3JvdXAgYW5kCi0gICAgICBjYXJyaWVzIHRoZSBzYW1lIGNvbnRlbnQpLgotICAgIDwvcD4KLQotICAgIDxwPiBGb3IgYW55IG9mIHRoZXNlIGNoYW5uZWxzLCBwbGVhc2UgYmUgc3VyZSBub3QgdG8gc2VuZCBIVE1MIGVtYWlsLgotICAgICAgVGhhbmtzLgotICAgIDwvcD4KLQotICAgIDxocj4KLSAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvYmxhbmsuZ2lmIGIvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvYmxhbmsuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTMxZjRlLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9odG1sL2ljb25zL2JsYW5rLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy90b29scy9odG1sL2ljb25zL2JsYW5rLnBuZyBiL2RvYy90b29scy9odG1sL2ljb25zL2JsYW5rLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmNTYzOS4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9ibGFuay5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9jb250ZW50cy5naWYgYi9kb2MvdG9vbHMvaHRtbC9pY29ucy9jb250ZW50cy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMjk5YzQuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvY29udGVudHMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvY29udGVudHMucG5nIGIvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvY29udGVudHMucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDI5YmUwLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9odG1sL2ljb25zL2NvbnRlbnRzLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy90b29scy9odG1sL2ljb25zL2luZGV4LmdpZiBiL2RvYy90b29scy9odG1sL2ljb25zL2luZGV4LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJlZWNmYi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9pbmRleC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9pbmRleC5wbmcgYi9kb2MvdG9vbHMvaHRtbC9pY29ucy9pbmRleC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOTE4YWYuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvaW5kZXgucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvbW9kdWxlcy5naWYgYi9kb2MvdG9vbHMvaHRtbC9pY29ucy9tb2R1bGVzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4NjBiNi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9tb2R1bGVzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy90b29scy9odG1sL2ljb25zL21vZHVsZXMucG5nIGIvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvbW9kdWxlcy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmYThiNzUuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvbW9kdWxlcy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9uZXh0LmdpZiBiL2RvYy90b29scy9odG1sL2ljb25zL25leHQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGNhZmY4Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9odG1sL2ljb25zL25leHQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvbmV4dC5wbmcgYi9kb2MvdG9vbHMvaHRtbC9pY29ucy9uZXh0LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZlNWU1MS4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9uZXh0LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy90b29scy9odG1sL2ljb25zL3ByZXZpb3VzLmdpZiBiL2RvYy90b29scy9odG1sL2ljb25zL3ByZXZpb3VzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUxZGExNi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9wcmV2aW91cy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvaHRtbC9pY29ucy9wcmV2aW91cy5wbmcgYi9kb2MvdG9vbHMvaHRtbC9pY29ucy9wcmV2aW91cy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5N2RlZjQuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvcHJldmlvdXMucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvdXAuZ2lmIGIvZG9jL3Rvb2xzL2h0bWwvaWNvbnMvdXAuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWQzZTEzLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9odG1sL2ljb25zL3VwLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy90b29scy9odG1sL2ljb25zL3VwLnBuZyBiL2RvYy90b29scy9odG1sL2ljb25zL3VwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwZTAyOC4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvaHRtbC9pY29ucy91cC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvaHRtbC9pbmRleC5odG1sLmluIGIvZG9jL3Rvb2xzL2h0bWwvaW5kZXguaHRtbC5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZiMjhjYy4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvaHRtbC9pbmRleC5odG1sLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLTxodG1sPgotICA8aGVhZD4KLSAgICA8dGl0bGU+UHl0aG9uIEBSRUxFQVNFQCBEb2N1bWVudGF0aW9uIC0gQERBVEVAPC90aXRsZT4KLSAgICA8bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9ImxpYi9saWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci0gICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iCi0gICAgICAgICAgY29udGVudD0iVG9wLWxldmVsIGluZGV4IHRvIHRoZSBzdGFuZGFyZCBkb2N1bWVudGF0aW9uIGZvcgotICAgICAgICAgICAgICAgICAgIFB5dGhvbiBAUkVMRUFTRUAuIj4KLSAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAgICAgYS50aXRsZSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDExMCU7IH0KLSAgICAgIHVsIHsgbWFyZ2luLWxlZnQ6IDFlbTsgcGFkZGluZzogMHB0OyBib3JkZXI6IDBwdDsgfQotICAgIDwvc3R5bGU+Ci0gIDwvaGVhZD4KLSAgPGJvZHk+Ci0JPGRpdiBjbGFzcz0ibmF2aWdhdGlvbiI+Ci0JPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPgotCTx0cj4KLQkgIDx0ZD48aW1nIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9IiIKLQkgICAgICBzcmM9Imljb25zL2JsYW5rLmdpZiI+PC90ZD4KLQkgIDx0ZD48aW1nIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9IiIKLQkgICAgICBzcmM9Imljb25zL2JsYW5rLmdpZiI+PC90ZD4KLQkgIDx0ZD48aW1nIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9IiIKLQkgICAgICBzcmM9Imljb25zL2JsYW5rLmdpZiI+PC90ZD4KLQkgIDx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+Ci0JICAgIDxiIGNsYXNzPSJ0aXRsZSI+UHl0aG9uIERvY3VtZW50YXRpb248L2I+PC90ZD4KLQkgIDx0ZD48aW1nIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9IiIKLQkgICAgICBzcmM9Imljb25zL2JsYW5rLmdpZiI+PC90ZD4KLQkgIDx0ZD48YSBocmVmPSJtb2RpbmRleC5odG1sIj48aW1nIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIKLQkJYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9Ik1vZHVsZSBJbmRleCIKLQkJc3JjPSJpY29ucy9tb2R1bGVzLmdpZiI+PC9hPjwvdGQ+Ci0JICA8dGQ+PGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGFsaWduPSJib3R0b20iIGJvcmRlcj0iMCIgYWx0PSIiCi0JICAgICAgc3JjPSJpY29ucy9ibGFuay5naWYiPjwvQT48L3RkPgotCTwvdHI+Ci0JPC90YWJsZT4KLSAgICAgICAgPGhyPgotCTwvZGl2PgotICAgIDxkaXYgYWxpZ249ImNlbnRlciIgY2xhc3M9InRpdGxlcGFnZSI+Ci0gICAgICA8aDE+UHl0aG9uIERvY3VtZW50YXRpb248L2gxPgotCi0gICAgICA8cD4KLQk8c3Ryb25nPlJlbGVhc2UgQFJFTEVBU0VAPC9zdHJvbmc+Ci0JPGJyPgotCTxzdHJvbmc+QERBVEVAPC9zdHJvbmc+Ci0gICAgICA8L3A+Ci0gICAgPC9kaXY+Ci0KLSAgICA8dGFibGUgYWxpZ249ImNlbnRlciI+Ci0gICAgICA8dGJvZHk+Ci0gICAgICA8dHI+PHRkPgotCSAgPHVsPgotCSAgICA8bGk+IDxhIGhyZWY9InR1dC90dXQuaHRtbCIgY2xhc3M9InRpdGxlIj5UdXRvcmlhbDwvYT4KLQkgICAgICA8YnI+KHN0YXJ0IGhlcmUpCi0KLQkgICAgPGxpPiA8YSBocmVmPSJtb2RpbmRleC5odG1sIiBjbGFzcz0idGl0bGUiPkdsb2JhbCBNb2R1bGUgSW5kZXg8L2E+Ci0JICAgICAgPGJyPihmb3IgcXVpY2sgYWNjZXNzIHRvIGFsbCBkb2N1bWVudGF0aW9uKQotCi0JICAgIDxsaT4gPGEgaHJlZj0ibGliL2xpYi5odG1sIiBjbGFzcz0idGl0bGUiPkxpYnJhcnkgUmVmZXJlbmNlPC9hPgotCSAgICAgIDxicj4oa2VlcCB0aGlzIHVuZGVyIHlvdXIgcGlsbG93KQotCi0JICAgIDxsaT4gPGEgaHJlZj0ibWFjL21hYy5odG1sIiBjbGFzcz0idGl0bGUiPk1hY2ludG9zaCBNb2R1bGUKLQkJUmVmZXJlbmNlPC9hPgotCSAgICAgIDxicj4odGhpcyB0b28sIGlmIHlvdSB1c2UgYSBNYWNpbnRvc2gpCi0KLQkgICAgPGxpPiA8YSBocmVmPSJpbnN0L2luc3QuaHRtbCIgY2xhc3M9InRpdGxlIj5JbnN0YWxsaW5nCi0JCVB5dGhvbiBNb2R1bGVzPC9hPgotCSAgICAgIDxicj4oZm9yIGFkbWluaXN0cmF0b3JzKQotCSAgPC91bD4KLQkgIDwvdGQ+Ci0JICA8dGQ+Ci0JICA8dWw+Ci0JICAgIDxsaT4gPGEgaHJlZj0icmVmL3JlZi5odG1sIiBjbGFzcz0idGl0bGUiPkxhbmd1YWdlIFJlZmVyZW5jZTwvYT4KLQkgICAgICA8YnI+KGZvciBsYW5ndWFnZSBsYXd5ZXJzKQotCi0JICAgIDxsaT4gPGEgaHJlZj0iZXh0L2V4dC5odG1sIiBjbGFzcz0idGl0bGUiPkV4dGVuZGluZyBhbmQKLQkJRW1iZWRkaW5nPC9hPgotCSAgICAgIDxicj4odHV0b3JpYWwgZm9yIEMvQysrIHByb2dyYW1tZXJzKQotCi0JICAgIDxsaT4gPGEgaHJlZj0iYXBpL2FwaS5odG1sIiBjbGFzcz0idGl0bGUiPlB5dGhvbi9DIEFQSTwvYT4KLQkgICAgICA8YnI+KHJlZmVyZW5jZSBmb3IgQy9DKysgcHJvZ3JhbW1lcnMpCi0KLQkgICAgPGxpPiA8YSBocmVmPSJkb2MvZG9jLmh0bWwiIGNsYXNzPSJ0aXRsZSI+RG9jdW1lbnRpbmcgUHl0aG9uPC9hPgotCSAgICAgIDxicj4oaW5mb3JtYXRpb24gZm9yIGRvY3VtZW50YXRpb24gYXV0aG9ycykKLQotCSAgICA8bGk+IDxhIGhyZWY9ImRpc3QvZGlzdC5odG1sIiBjbGFzcz0idGl0bGUiPkRpc3RyaWJ1dGluZwotCQlQeXRob24gTW9kdWxlczwvYT4KLQkgICAgICA8YnI+KGZvciBkZXZlbG9wZXJzIGFuZCBwYWNrYWdlcnMpCi0JICA8L3VsPgotCSAgPC90ZD4KLQk8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkPgotICAgICAgICAgICZuYnNwOwotICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgIDxsaT4gPGEgaHJlZj0iaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy8iIGNsYXNzPSJ0aXRsZSIKLSAgICAgICAgICAgICAgICA+RG9jdW1lbnRhdGlvbiBDZW50cmFsPC9hPgotICAgICAgICAgICAgICA8YnI+KGZvciBldmVyeW9uZSkKLSAgICAgICAgICA8L3VsPgotICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkPgotICAgICAgICAgICZuYnNwOwotICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgIDxsaT4gPGEgaHJlZj0iaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9ob3d0by8iIGNsYXNzPSJ0aXRsZSIKLSAgICAgICAgICAgICAgICA+UHl0aG9uIEhvdy1UbyBHdWlkZXM8L2E+Ci0gICAgICAgICAgICAgIDxicj4oc3BlY2lhbCB0b3BpY3MpCi0gICAgICAgICAgPC91bD4KLSAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90Ym9keT4KLSAgICA8L3RhYmxlPgotICAgIDxwPgotCi0gICAgPGFkZHJlc3M+Ci0gICAgICA8aHI+Ci0gICAgICBTZWUgPGk+PGEgaHJlZj0iYWJvdXQuaHRtbCI+QWJvdXQgdGhlIFB5dGhvbiBEb2N1bWVudGF0aW9uPC9hPjwvaT4KLSAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBzdWdnZXN0aW5nIGNoYW5nZXMuCi0gICAgPC9hZGRyZXNzPgotICA8L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvaHRtbC9zdGRhYm91dC5kYXQgYi9kb2MvdG9vbHMvaHRtbC9zdGRhYm91dC5kYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YjI3MTguLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2h0bWwvc3RkYWJvdXQuZGF0CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPHA+IFRoaXMgZG9jdW1lbnQgd2FzIGdlbmVyYXRlZCB1c2luZyB0aGUgPGEKLSAgICBocmVmPSJodHRwOi8vc2FmdHNhY2suZnMudW5pLWJheXJldXRoLmRlLztTUE10aWxkZTtsYXRleDJodC8iPgotICAgIDxzdHJvbmc+TGFUZVg8L3N0cm9uZz4yPHR0PkhUTUw8L3R0PjwvYT4gdHJhbnNsYXRvci4KLTwvcD4KLQotPHA+IDxhCi0gICAgaHJlZj0iaHR0cDovL3NhZnRzYWNrLmZzLnVuaS1iYXlyZXV0aC5kZS87U1BNdGlsZGU7bGF0ZXgyaHQvIj4KLSAgICA8c3Ryb25nPkxhVGVYPC9zdHJvbmc+Mjx0dD5IVE1MPC90dD48L2E+IGlzIENvcHlyaWdodCAmY29weTsKLSAgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgPGEKLSAgICBocmVmPSJodHRwOi8vY2JsLmxlZWRzLmFjLnVrL25pa29zL3BlcnNvbmFsLmh0bWwiPk5pa29zCi0gICAgRHJha29zPC9hPiwgQ29tcHV0ZXIgQmFzZWQgTGVhcm5pbmcgVW5pdCwgVW5pdmVyc2l0eSBvZgotICBMZWVkcywgYW5kIENvcHlyaWdodCAmY29weTsgMTk5NywgMTk5OCwgPGEKLSAgICBocmVmPSJodHRwOi8vd3d3Lm1hdGhzLm1xLmVkdS5hdS87U1BNdGlsZGU7cm9zcy8iPlJvc3MKLSAgICBNb29yZTwvYT4sIE1hdGhlbWF0aWNzIERlcGFydG1lbnQsIE1hY3F1YXJpZSBVbml2ZXJzaXR5LAotICBTeWRuZXkuCi08L3A+Ci0KLTxwPiBUaGUgYXBwbGljYXRpb24gb2YgPGEKLSAgICBocmVmPSJodHRwOi8vc2FmdHNhY2suZnMudW5pLWJheXJldXRoLmRlLztTUE10aWxkZTtsYXRleDJodC8iPgotICAgIDxzdHJvbmc+TGFUZVg8L3N0cm9uZz4yPHR0PkhUTUw8L3R0PjwvYT4gdG8gdGhlIFB5dGhvbgotICBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIGhlYXZpbHkgdGFpbG9yZWQgYnkgRnJlZCBMLiBEcmFrZSwKLSAgSnIuICBPcmlnaW5hbCBuYXZpZ2F0aW9uIGljb25zIHdlcmUgY29udHJpYnV0ZWQgYnkgQ2hyaXN0b3BoZXIKLSAgUGV0cmlsbGkuCi08L3A+Ci0KLTxocj4KLQotPGgyPkNvbW1lbnRzIGFuZCBRdWVzdGlvbnM8L2gyPgotCi08cD4gR2VuZXJhbCBjb21tZW50cyBhbmQgcXVlc3Rpb25zIHJlZ2FyZGluZyB0aGlzIGRvY3VtZW50IHNob3VsZAotICBiZSBzZW50IGJ5IGVtYWlsIHRvIDxhIGhyZWY9Im1haWx0bzpweXRob24tZG9jc0BweXRob24ub3JnIgotICAgID5weXRob24tZG9jc0BweXRob24ub3JnPC9hPi4gIElmIHlvdSBmaW5kIHNwZWNpZmljIGVycm9ycyBpbgotICB0aGlzIGRvY3VtZW50LCBwbGVhc2UgcmVwb3J0IHRoZSBidWcgYXQgdGhlIDxhCi0gICAgaHJlZj0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9idWdzLz9ncm91cF9pZD01NDcwIj5QeXRob24gQnVnCi0gICAgVHJhY2tlcjwvYT4gYXQgPGEgaHJlZj0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldC8iPlNvdXJjZUZvcmdlPC9hPi4KLTwvcD4KLQotPHA+IFF1ZXN0aW9ucyByZWdhcmRpbmcgaG93IHRvIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gdGhpcwotICBkb2N1bWVudCBzaG91bGQgYmUgc2VudCB0byB0aGUgUHl0aG9uIG5ld3MgZ3JvdXAsIDxhCi0gICAgaHJlZj0ibmV3czpjb21wLmxhbmcucHl0aG9uIj5jb21wLmxhbmcucHl0aG9uPC9hPiwgb3IgdGhlIDxhCi0gICAgaHJlZj0iaHR0cDovL3d3dy5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWxpc3QiCi0gICAgPlB5dGhvbiBtYWlsaW5nIGxpc3Q8L2E+ICh3aGljaCBpcyBnYXRlZCB0byB0aGUgbmV3c2dyb3VwIGFuZAotICBjYXJyaWVzIHRoZSBzYW1lIGNvbnRlbnQpLgotPC9wPgotCi08cD4gRm9yIGFueSBvZiB0aGVzZSBjaGFubmVscywgcGxlYXNlIGJlIHN1cmUgbm90IHRvIHNlbmQgSFRNTCBlbWFpbC4KLSAgVGhhbmtzLgotPC9wPgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwvc3R5bGUuY3NzIGIvZG9jL3Rvb2xzL2h0bWwvc3R5bGUuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjdjZjc0Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9odG1sL3N0eWxlLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBUaGUgZmlyc3QgcGFydCBvZiB0aGlzIGlzIHRoZSBzdGFuZGFyZCBDU1MgZ2VuZXJhdGVkIGJ5IExhVGVYMkhUTUwsCi0gKiB3aXRoIHRoZSAiZW1wdHkiIGRlY2xhcmF0aW9ucyByZW1vdmVkLgotICovCi0KLS8qIENlbnR1cnkgU2Nob29sYm9vayBmb250IGlzIHZlcnkgc2ltaWxhciB0byBDb21wdXRlciBNb2Rlcm4gTWF0aDogY21taSAqLwotLm1hdGggICAgICAgICAgICAgICAgICAgeyBmb250LWZhbWlseTogIkNlbnR1cnkgU2Nob29sYm9vayIsIHNlcmlmOyB9Ci0ubWF0aCBpICAgICAgICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiAiQ2VudHVyeSBTY2hvb2xib29rIiwgc2VyaWY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkIH0KLS5ib2xkbWF0aCAgICAgICAgICAgICAgIHsgZm9udC1mYW1pbHk6ICJDZW50dXJ5IFNjaG9vbGJvb2siLCBzZXJpZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgfQotCi0vKiBJbXBsZW1lbnQgYm90aCBmaXhlZC1zaXplIGFuZCByZWxhdGl2ZSBzaXplczogKi8KLXNtYWxsLnh0aW55ICAgICAgICAgICAgIHsgZm9udC1zaXplIDogeHgtc21hbGwgfQotc21hbGwudGlueSAgICAgICAgICAgICAgeyBmb250LXNpemUgOiB4LXNtYWxsIH0KLXNtYWxsLnNjcmlwdHNpemUgICAgICAgIHsgZm9udC1zaXplIDogc21hbGxlciB9Ci1zbWFsbC5mb290bm90ZXNpemUgICAgICB7IGZvbnQtc2l6ZSA6IHNtYWxsIH0KLWJpZy54bGFyZ2UgICAgICAgICAgICAgIHsgZm9udC1zaXplIDogbGFyZ2UgfQotYmlnLnh4bGFyZ2UgICAgICAgICAgICAgeyBmb250LXNpemUgOiB4LWxhcmdlIH0KLWJpZy5odWdlICAgICAgICAgICAgICAgIHsgZm9udC1zaXplIDogbGFyZ2VyIH0KLWJpZy54aHVnZSAgICAgICAgICAgICAgIHsgZm9udC1zaXplIDogeHgtbGFyZ2UgfQotCi0vKgotICogRG9jdW1lbnQtc3BlY2lmaWMgc3R5bGVzIGNvbWUgbmV4dDsKLSAqIHRoZXNlIGFyZSBhZGRlZCBmb3IgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uLgotICoKLSAqIE5vdGUgdGhhdCB0aGUgc2l6ZSBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIEgqIGVsZW1lbnRzIGFyZSBiZWNhdXNlCi0gKiBOZXRzY2FwZSBvbiBTb2xhcmlzIG90aGVyd2lzZSBkb2Vzbid0IGdldCBpdCByaWdodDsgdGhleSBhbGwgZW5kIHVwCi0gKiB0aGUgbm9ybWFsIHRleHQgc2l6ZS4KLSAqLwotCi1ib2R5ICAgICAgICAgICAgICAgICAgICB7IGNvbG9yOiAjMDAwMDAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9Ci0KLWE6YWN0aXZlICAgICAgICAgICAgICAgIHsgY29sb3I6ICNmZjAwMDA7IH0KLWE6dmlzaXRlZCAgICAgICAgICAgICAgIHsgY29sb3I6ICM1NTFhOGI7IH0KLWE6bGluayAgICAgICAgICAgICAgICAgIHsgY29sb3I6ICMwMDAwYmI7IH0KLQotaDEsIGgyLCBoMywgaDQsIGg1LCBoNiAgeyBmb250LWZhbWlseTogYXZhbnRnYXJkZSwgc2Fucy1zZXJpZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgfQotaDEgICAgICAgICAgICAgICAgICAgICAgeyBmb250LXNpemU6IDE4MCUgfQotaDIgICAgICAgICAgICAgICAgICAgICAgeyBmb250LXNpemU6IDE1MCUgfQotaDMsIGg0ICAgICAgICAgICAgICAgICAgeyBmb250LXNpemU6IDEyMCUgfQotY29kZSwgdHQgICAgICAgICAgICAgICAgeyBmb250LWZhbWlseTogbW9ub3NwYWNlIH0KLXZhciAgICAgICAgICAgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IHRpbWVzLCBzZXJpZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsIH0KLQotLm5hdmlnYXRpb24gdGQgICAgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOTljY2ZmOwotICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGF2YW50Z2FyZGUsIHNhbnMtc2VyaWY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTEwJSB9Ci0KLS5yZWxlYXNlLWluZm8gICAgICAgICAgIHsgZm9udC1zdHlsZTogaXRhbGljOyB9Ci0KLS50aXRsZWdyYXBoaWMgICAgICAgICAgIHsgdmVydGljYWwtYWxpZ246IHRvcDsgfQotCi0udmVyYmF0aW0gICAgICAgICAgICAgICB7IGNvbG9yOiAjMDAwMDhiIH0KLQotLmVtYWlsICAgICAgICAgICAgICAgICAgeyBmb250LWZhbWlseTogYXZhbnRnYXJkZSwgc2Fucy1zZXJpZiB9Ci0ubWltZXR5cGUgICAgICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBhdmFudGdhcmRlLCBzYW5zLXNlcmlmIH0KLS5uZXdzZ3JvdXAgICAgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IGF2YW50Z2FyZGUsIHNhbnMtc2VyaWYgfQotLnVybCAgICAgICAgICAgICAgICAgICAgeyBmb250LWZhbWlseTogYXZhbnRnYXJkZSwgc2Fucy1zZXJpZiB9Ci0uZmlsZSAgICAgICAgICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBhdmFudGdhcmRlLCBzYW5zLXNlcmlmIH0KLQotLnRhYmxlaGVhZGVyICAgICAgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjOTljY2ZmOwotICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogYXZhbnRnYXJkZSwgc2Fucy1zZXJpZjsgfQotCi0ucmVmY291bnQtaW5mbyAgICAgICAgICB7IGZvbnQtc3R5bGU6IGl0YWxpYyB9Ci0ucmVmY291bnQtaW5mbyAudmFsdWUgICB7IGZvbnQtd2VpZ2h0OiBib2xkOwotICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzAwNjYwMCB9Ci0KLS8qCi0gKiBTb21lIGRlY29yYXRpb24gZm9yIHRoZSAiU2VlIGFsc286IiBibG9ja3MsIGluIHBhcnQgaW5zcGlyZWQgYnkgc29tZSBvZgotICogdGhlIHN0eWxpbmcgb24gTGFycyBNYXJpdXMgR2Fyc2hvbCdzIFhTQSBwYWdlcy4KLSAqIChUaGUgYmx1ZSBpbiB0aGUgbmF2aWdhdGlvbiBiYXJzIGlzICM5OUNDRkYuKQotICovCi0uc2VlYWxzbyAgICAgICAgICAgICAgICB7IGJhY2tncm91bmQtY29sb3I6ICNmZmZhZjA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogdGhpbiBzb2xpZCBibGFjazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNHB0IH0KLQotLnNlZWFsc28gLmhlYWRpbmcgICAgICAgeyBmb250LXNpemU6IDExMCUgfQotCi0vKgotICogQ2xhc3MgJ2F2YWlsYWJpbGl0eScgaXMgdXNlZCBmb3IgbW9kdWxlIGF2YWlsYWJpbGl0eSBzdGF0ZW1lbnRzIGF0Ci0gKiB0aGUgdG9wIG9mIG1vZHVsZXMuCi0gKi8KLS5hdmFpbGFiaWxpdHkgLnBsYXRmb3JtIHsgZm9udC13ZWlnaHQ6IGJvbGQgfQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2h0bWwydGV4aS5wbCBiL2RvYy90b29scy9odG1sMnRleGkucGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJlMDUwYjEuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2h0bWwydGV4aS5wbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NTAgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHBlcmwKLSMgaHRtbDJ0ZXhpLnBsIC0tIENvbnZlcnQgSFRNTCBkb2N1bWVudGF0aW9uIHRvIFRleGluZm8gZm9ybWF0Ci0jIE1pY2hhZWwgRXJuc3QgPG1lcm5zdEBjcy53YXNoaW5ndG9uLmVkdT4KLSMgVGltZS1zdGFtcDogPDE5OTktMDEtMTIgMjE6MzQ6MjcgbWVybnN0PgotCi0jIFRoaXMgcHJvZ3JhbSBjb252ZXJ0cyBIVE1MIGRvY3VtZW50YXRpb24gdHJlZXMgaW50byBUZXhpbmZvIGZvcm1hdC4KLSMgR2l2ZW4gdGhlIG5hbWUgb2YgYSBtYWluIChvciBjb250ZW50cykgSFRNTCBmaWxlLCBpdCBwcm9jZXNzZXMgdGhhdCBmaWxlLAotIyBhbmQgb3RoZXIgZmlsZXMgKHRyYW5zaXRpdmVseSkgcmVmZXJlbmNlZCBieSBpdCwgaW50byBhIFRleGluZm8gZmlsZQotIyAod2hvc2UgbmFtZSBpcyBjaG9zZW4gZnJvbSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgYXJndW1lbnQpLgotIyBGb3IgaW5zdGFuY2U6Ci0jICAgaHRtbDJ0ZXhpLnBsIGFwaS9pbmRleC5odG1sCi0jIHByb2R1Y2VzIGZpbGUgImFwaS50ZXhpIi4KLQotIyBUZXhpbmZvIGZvcm1hdCBjYW4gYmUgZWFzaWx5IGNvbnZlcnRlZCB0byBJbmZvIGZvcm1hdCAoZm9yIGJyb3dzaW5nIGluCi0jIEVtYWNzIG9yIHRoZSBzdGFuZGFsb25lIEluZm8gYnJvd3NlciksIHRvIGEgcHJpbnRlZCBtYW51YWwsIG9yIHRvIEhUTUwuCi0jIFRodXMsIGh0bWwydGV4aS5wbCBwZXJtaXRzIGNvbnZlcnNpb24gb2YgSFRNTCBmaWxlcyB0byBJbmZvIGZvcm1hdCwgYW5kCi0jIHNlY29uZGFyaWx5IGVuYWJsZXMgcHJvZHVjaW5nIHByaW50ZWQgdmVyc2lvbnMgb2YgV2ViIHBhZ2UgaGllcmFyY2hpZXMuCi0KLSMgVW5saWtlIEhUTUwsIEluZm8gZm9ybWF0IGlzIHNlYXJjaGFibGUuICBTaW5jZSBJbmZvIGlzIGludGVncmF0ZWQgaW50bwotIyBFbWFjcywgb25lIGNhbiByZWFkIGRvY3VtZW50YXRpb24gd2l0aG91dCBzdGFydGluZyBhIHNlcGFyYXRlIFdlYgotIyBicm93c2VyLiAgQWRkaXRpb25hbGx5LCBJbmZvIGJyb3dzZXJzIChpbmNsdWRpbmcgRW1hY3MpIGNvbnRhaW4KLSMgY29udmVuaWVudCBmZWF0dXJlcyBtaXNzaW5nIGZyb20gV2ViIGJyb3dzZXJzLCBzdWNoIGFzIGVhc3kgaW5kZXggbG9va3VwCi0jIGFuZCBtb3VzZS1mcmVlIGJyb3dzaW5nLgotCi0jIExpbWl0YXRpb25zOgotIyBodG1sMnRleGkucGwgaXMgY3VycmVudGx5IHR1bmVkIHRvIGxhdGV4Mmh0bWwgb3V0cHV0IChhbmQgaXQgY29ycmVjdHMKLSMgc2V2ZXJhbCBsYXRleDJodG1sIGJ1Z3MpLCBidXQgc2hvdWxkIGJlIGV4dGVuc2libGUgdG8gYXJiaXRyYXJ5IEhUTUwKLSMgZG9jdW1lbnRzLiAgSXQgd2lsbCBiZSBtb3N0IHVzZWZ1bCBmb3IgSFRNTCB3aXRoIGEgaGllcmFyY2hpY2FsIHN0cnVjdHVyZQotIyBhbmQgYW4gaW5kZXgsIGFuZCBpdCByZWNvZ25pemVzIHRob3NlIGZlYXR1cmVzIGFzIGNyZWF0ZWQgYnkgbGF0ZXgyaHRtbAotIyAoYW5kIHBvc3NpYmx5IGJ5IHNvbWUgb3RoZXIgdG9vbHMpLiAgVGhlIEhUTUwgdHJlZSB0byBiZSB0cmF2ZXJzZWQgbXVzdAotIyBiZSBvbiBsb2NhbCBkaXNrLCByYXRoZXIgdGhhbiBiZWluZyBhY2Nlc3NlZCB2aWEgSFRUUC4KLSMgVGhpcyBzY3JpcHQgcmVxdWlyZXMgdGhlIHVzZSBvZiAiY2hlY2thcmdzLnBtIi4gIFRvIGVsaW1pbmF0ZSB0aGF0Ci0jIGRlcGVuZGVuY2UsIHJlcGxhY2UgY2FsbHMgdG8gY2hlY2tfYXJncyogYnkgQF8gKHdoaWNoIGlzIGFsd2F5cyB0aGUgbGFzdAotIyBhcmd1bWVudCB0byB0aG9zZSBmdW5jdGlvbnMpLgotIyBBbHNvIHNlZSB0aGUgInRvIGRvIiBzZWN0aW9uLCBiZWxvdy4KLSMgQ29tbWVudHMsIHN1Z2dlc3Rpb25zLCBidWcgZml4ZXMsIGFuZCBlbmhhbmNlbWVudHMgYXJlIHdlbGNvbWUuCi0KLSMgVHJvdWJsZXNob290aW5nOgotIyBNYWxmb3JtZWQgSFRNTCBjYW4gY2F1c2UgdGhpcyBwcm9ncmFtIHRvIGFib3J0LCBzbwotIyB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgSFRNTCBmaWxlcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgbGVnYWwuCi0KLQotIyMjCi0jIyMgVHlwaWNhbCB1c2FnZSBmb3IgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uOgotIyMjCi0KLSMgKEFjdHVhbGx5LCBtb3N0IG9mIHRoaXMgaXMgaW4gYSBNYWtlZmlsZSBpbnN0ZWFkLikKLSMgVGhlIHJlc3VsdGluZyBJbmZvIGZvcm1hdCBQeXRob24gZG9jdW1lbnRhdGlvbiBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGF0Ci0jIGZ0cDovL2Z0cC5jcy53YXNoaW5ndG9uLmVkdS9ob21lcy9tZXJuc3QvcHl0aG9uLWluZm8udGFyLmd6Ci0KLSMgRml4IHVwIEhUTUwgcHJvYmxlbXMsIGVnIDxEVD48REwgQ09NUEFDVD48REQ+IHNob3VsZCBiZSA8RFQ+PERMIENPTVBBQ1Q+PEREPi4KLQotIyBodG1sMnRleGkucGwgL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2luZGV4Lmh0bWwKLSMgaHRtbDJ0ZXhpLnBsIC9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2V4dC9pbmRleC5odG1sCi0jIGh0bWwydGV4aS5wbCAvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9saWIvaW5kZXguaHRtbAotIyBodG1sMnRleGkucGwgL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvbWFjL2luZGV4Lmh0bWwKLSMgaHRtbDJ0ZXhpLnBsIC9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL3JlZi9pbmRleC5odG1sCi0jIGh0bWwydGV4aS5wbCAvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC90dXQvaW5kZXguaHRtbAotCi0jIEVkaXQgdGhlIGdlbmVyYXRlZCAudGV4aSBmaWxlczoKLSMgICAqIGNoYW5nZSBAc2V0ZmlsZW5hbWUgdG8gcHJlZml4ICJweXRob24tIgotIyAgICogZml4IHVwIGFueSBzZWN0aW9uaW5nLCBzdWNoIGFzIGZvciBBYnN0cmFjdAotIyAgICogbWFrZSBUZXhpbmZvIG1lbnVzCi0jICAgKiBwZXJoYXBzIHJlbW92ZSB0aGUgQGRldGFpbG1lbnUgLi4uIEBlbmQgZGV0YWlsbWVudQotIyBJbiBFbWFjcywgdG8gZG8gYWxsIHRoaXM6Ci0jICAgKHByb2duIChnb3RvLWNoYXIgKHBvaW50LW1pbikpIChyZXBsYWNlLXJlZ2V4cCAiXFwoQHNldGZpbGVuYW1lIFxcKVxcKFstYS16XSpcXCkkIiAiXFwxcHl0aG9uLVxcMi5pbmZvIikgKHJlcGxhY2Utc3RyaW5nICJAbm9kZSBGcm9udCBNYXR0ZXJcbkBjaGFwdGVyIEFic3RyYWN0XG4iICJAbm9kZSBBYnN0cmFjdFxuQHNlY3Rpb24gQWJzdHJhY3RcbiIpIChwcm9nbiAobWFyay13aG9sZS1idWZmZXIpICh0ZXhpbmZvLW1hc3Rlci1tZW51ICd1cGRhdGUtYWxsLW5vZGVzKSkgKHNhdmUtYnVmZmVyKSkKLQotIyBtYWtlaW5mbyBhcGkudGV4aQotIyBtYWtlaW5mbyBleHQudGV4aQotIyBtYWtlaW5mbyBsaWIudGV4aQotIyBtYWtlaW5mbyBtYWMudGV4aQotIyBtYWtlaW5mbyByZWYudGV4aQotIyBtYWtlaW5mbyB0dXQudGV4aQotCi0KLSMjIwotIyMjIFN0cnVjdHVyZSBvZiB0aGUgY29kZQotIyMjCi0KLSMgVG8gYmUgd3JpdHRlbi4uLgotCi0KLSMjIwotIyMjIERlc2lnbiBkZWNpc2lvbnMKLSMjIwotCi0jIFNvdXJjZSBhbmQgZGVzdGluYXRpb24gbGFuZ3VhZ2VzCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIAotIyBUaGUgZ29hbCBpcyBJbmZvIGZpbGVzOyBJIGNyZWF0ZSBUZXhpbmZvLCBzbyBJIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQKLSMgdGhlIGZpbmVyIGRldGFpbHMgb2YgSW5mbyBmaWxlIGNyZWF0aW9uLiAgKEknbSBub3QgZXZlbiBzdXJlIG9mIGl0cyBleGFjdAotIyBmb3JtYXQuKQotIyAKLSMgV2h5IG5vdCBzdGFydCBmcm9tIExhVGVYIHJhdGhlciB0aGFuIEhUTUw/Ci0jIEkgY291bGQgaGFjayBsYXRleDJodG1sIGl0c2VsZiB0byBwcm9kdWNlIFRleGluZm8gaW5zdGVhZCwgb3IgZml4IHVwCi0jIHBhcnRwYXJzZS5weSAod2hpY2ggYWxyZWFkeSB0cmFuc2xhdGVzIExhVGVYIHRvIFRlaW5mbykuCi0jICBQcm9zOgotIyAgICogaGFzIGhpZ2gtbGV2ZWwgaW5mb3JtYXRpb24gc3VjaCBhcyBpbmRleCBlbnRyaWVzLCBvcmlnaW5hbCBmb3JtYXR0aW5nCi0jICBDb25zOgotIyAgICogdGhvc2UgcHJvZ3JhbXMgYXJlIGNvbXBsaWNhdGVkIHRvIHJlYWQgYW5kIHVuZGVyc3RhbmQKLSMgICAqIHRob3NlIHByb2dyYW1zIHRyeSB0byBoYW5kbGUgYXJiaXRyYXJ5IExhVGVYIGlucHV0LCB0cmFjayBjYXRjb2RlcywKLSMgICAgIGFuZCBtb3JlOiAgSSBkb24ndCB3YW50IHRvIGdvIHRvIHRoYXQgZWZmb3J0LiAgSFRNTCBpc24ndCBhcyBwb3dlcmZ1bAotIyAgICAgYXMgTGFUZVgsIHNvIHRoZXJlIGFyZSBmZXdlciBzdWJ0bGV0aWVzLgotIyAgICogdGhlIHJlc3VsdCB3b3VsZG4ndCB3b3JrIGZvciBhcmJpdHJhcnkgSFRNTCBkb2N1bWVudHM7IGl0IHdvdWxkIGJlCi0jICAgICBuaWNlIHRvIGV2ZW50dWFsbHkgZXh0ZW5kIHRoaXMgcHJvZ3JhbSB0byBIVE1MIHByb2R1Y2VkIGZyb20gRG9jYm9vaywKLSMgICAgIEZyYW1lLCBhbmQgbW9yZS4KLQotIyBQYXJzaW5nCi0jIC0tLS0tLS0KLSMgCi0jIEkgZG9uJ3Qgd2FudCB0byB2aWV3IHRoZSB0ZXh0IGFzIGEgbGluZWFyIHN0cmVhbTsgSSdkIHJhdGhlciBwYXJzZSB0aGUKLSMgd2hvbGUgdGhpbmcgYW5kIHRoZW4gZG8gcGF0dGVybiBtYXRjaGluZyBvdmVyIHRoZSBwYXJzZWQgcmVwcmVzZW50YXRpb24gKHRvCi0jIGZpbmQgaWRpb21zIHN1Y2ggYXMgaW5kaWNlcywgbGlzdHMgb2YgY2hpbGQgbm9kZXMsIGV0Yy4pLgotIyAgKiBQZXJsIHByb3ZpZGVzIEhUTUw6OlRyZWVCdWlsZGVyLCB3aGljaCBkb2VzIGp1c3Qgd2hhdCBJIHdhbnQuCi0jICAgICAqIGxpYnd3dy1wZXJsOiBodHRwOi8vd3d3LmxpbnByby5uby9sd3AvCi0jICAgICAqIFRyZWVCdWlsZGVyOiBIVE1MLVRyZWUtMC41MS50YXIuZ3oKLSMgICogUHl0aG9uIFBhcnNlcnMsIEZvcm1hdHRlcnMsIGFuZCBXcml0ZXJzIGRvbid0IHJlYWxseSBwcm92aWRlIHRoZSByaWdodAotIyAgICBpbnRlcmZhY2UgKGFuZCB0aGUgdmVyc2lvbiBpbiBHcmFpbCBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYW5vdGhlcgotIyAgICBkaXN0cmlidXRlZCB2ZXJzaW9uLCBzbyBJJ20gY29uZnVzZWQgYWJvdXQgd2hpY2ggdG8gYmUgdXNpbmcpLiAgSSBjb3VsZAotIyAgICB3cml0ZSBzb21ldGhpbmcgaW4gUHl0aG9uIHRoYXQgY3JlYXRlcyBhIHBhcnNlIHRyZWUsIGJ1dCB3aHkgYm90aGVyPwotCi0jIE90aGVyIGltcGxlbWVudGF0aW9uIGxhbmd1YWdlIGlzc3VlczoKLSMgICogUHl0aG9uIGxhY2tzIHZhcmlhYmxlIGRlY2xhcmF0aW9ucywgcmVhc29uYWJsZSBzY29waW5nLCBhbmQgc3RhdGljCi0jICAgIGNoZWNraW5nIHRvb2xzLiAgSSd2ZSB3cml0dGVuIHNvbWUgb2YgdGhlIGxhdHRlciBmb3IgbXlzZWxmIHRoYXQgbWFrZQotIyAgICBteSBQZXJsIHByb2dyYW1taW5nIGEgbG90IHNhZmVyIHRoYW4gbXkgUHl0aG9uIHByb2dyYW1taW5nIHdpbGwgYmUgdW50aWwKLSMgICAgSSBoYXZlIGEgc2ltaWxhciBzdWl0ZSBmb3IgdGhhdCBsYW5ndWFnZS4KLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBUbyBkbwotIyMjCi0KLSMgU2VjdGlvbiBuYW1lczoKLSMgICBGaXggdGhlIHByb2JsZW0gd2l0aCBtdWx0aXBsZSBzZWN0aW9ucyBpbiBhIHNpbmdsZSBmaWxlIChlZywgQWJzdHJhY3QgaW4KLSMgICAgIEZyb250IE1hdHRlciBzZWN0aW9uKS4KLSMgICBEZWFsIHdpdGggY3Jvc3MtcmVmZXJlbmNlcywgYXMgaW4gL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvcmVmL3R5cGVzLmh0bWw6MzEwCi0jIEluZGV4OgotIyAgIFBlcmhhcHMgZG91YmxlLWNoZWNrIHRoYXQgZXZlcnkgdGFnIG1lbnRpb25lZCBpbiB0aGUgaW5kZXggaXMgZm91bmQKLSMgICAgIGluIHRoZSB0ZXh0LgotIyBQeXRob246ICBlbWFpbCB0byBweXRob24tZG9jc0BweXRob24ub3JnLCB0byBnZXQgdGhlaXIgZmVlZGJhY2suCi0jICAgQ29tcGFyZSB0byBleGlzdGluZyBsaWIvIEluZm8gbWFudWFsCi0jICAgV3JpdGUgdGhlIGhvb2tzIGludG8gaW5mby1sb29rOyByZXBsYWNlIHB5bGlibG9va3VwMS0xLnRhci5nei4KLSMgICBQb3N0cGFzcyB0byByZW1vdmUgZXh0cmEgcXVvdGF0aW9uIG1hcmtzIGFyb3VuZCB0eXBvZ3JhcGh5IGFscmVhZHkgaW4KLSMgICAgIGEgZGlmZmVyZW50IGZvbnQgKHRvIGF2b2lkIGRvdWJsZSBkZWxpbWl0ZXJzIGFzIGluICJgY29kZSciKTsgb3IKLSMgICAgIHBlcmhhcHMgY29uc2lkZXIgdXNpbmcgb25seSBmb250LWJhc2VkIG1hcmt1cCBzbyB0aGF0IHdlIGRvbid0IGdldAotIyAgICAgdGhlIGV4dHJhICpib2xkKiBhbmQgYGNvZGUnIG1hcmt1cCBpbiBJbmZvLgotCi0jIyBQZXJoYXBzIGRvbid0IHJlbHkgb24gYXV0b21hdGljIG1lYW5zIGZvciBhZGRpbmcgdXAsIG5leHQsIHByZXY7IEkgaGF2ZQotIyMgYWxsIHRoYXQgaW5mbyBhdmFpbGFibGUgdG8gbWUgYWxyZWFkeSwgc28gaXQncyBub3Qgc28gbXVjaCB0cm91YmxlIHRvCi0jIyBhZGQgaXQuICAoUmlnaHQ/KSAgQnV0IGl0IGlzICpzbyogZWFzeSB0byB1c2UgRW1hY3MgaW5zdGVhZC4uLgotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIFN0cmljdHVyZXMKLSMjIwotCi0jIG1hbiBIVE1MOjpUcmVlQnVpbGRlcgotIyBtYW4gSFRNTDo6UGFyc2VyCi0jIG1hbiBIVE1MOjpFbGVtZW50Ci0KLSMgcmVxdWlyZSBIVE1MOjpQYXJzZXJXQ29tbWVudDsKLXJlcXVpcmUgSFRNTDo6UGFyc2VyOwotcmVxdWlyZSBIVE1MOjpUcmVlQnVpbGRlcjsKLXJlcXVpcmUgSFRNTDo6RWxlbWVudDsKLQotdXNlIEZpbGU6OkJhc2VuYW1lOwotCi11c2Ugc3RyaWN0OwotIyB1c2UgQ2FycDsKLQotdXNlIGNoZWNrYXJnczsKLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBWYXJpYWJsZXMKLSMjIwotCi1teSBAc2VjdGlvbl9zdGFjayA9ICgpOwkJIyBlbGVtZW50cyBhcmUgY2hhcHRlci9zZWN0aW9uL3N1YnNlYyBub2RldGl0bGVzIChJIHRoaW5rKQotbXkgJGN1cnJlbnRfcmVmX3RkZjsJCSMgZm9yIHRoZSBmaWxlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQ7Ci0JCQkJIyAgdXNlZCBpbiBlcnJvciBtZXNzYWdlcwotbXkgJGh0bWxfZGlyZWN0b3J5OwotbXkgJWZvb3Rub3RlczsKLQotIyBGaXJzdCBlbGVtZW50IHNob3VsZCBub3QgYmUgdXNlZC4KLW15IEBzZWN0aW9ubWFya2VyID0gKCJtYW51YWwiLCAiY2hhcHRlciIsICJzZWN0aW9uIiwgInN1YnNlY3Rpb24iLCAic3Vic3Vic2VjdGlvbiIpOwotCi1teSAlaW5saW5lX21hcmt1cCA9ICgiYiIgPT4gInN0cm9uZyIsCi0JCSAgICAgImNvZGUiID0+ICJjb2RlIiwKLQkJICAgICAiaSIgPT4gImVtcGgiLAotCQkgICAgICJrYmQiID0+ICJrYmQiLAotCQkgICAgICJzYW1wIiA9PiAic2FtcCIsCi0JCSAgICAgInN0cm9uZyIgPT4gInN0cm9uZyIsCi0JCSAgICAgInR0IiA9PiAiY29kZSIsCi0JCSAgICAgInZhciIgPT4gInZhciIpOwotCi1teSBAZGVmZXJyZWRfaW5kZXhfZW50cmllcyA9ICgpOwotCi1teSBAaW5kZXhfdGl0bGVzID0gKCk7CQkjIGxpc3Qgb2YgKGZpbGVuYW1lLCB0eXBlKSBsaXN0cwotbXkgJWluZGV4X2luZm8gPSAoIkluZGV4IiA9PiBbIlxAYmxpbmRleCIsICJibCJdLAotCQkgICJDb25jZXB0IEluZGV4IiA9PiBbIlxAY2luZGV4IiwgImNwIl0sCi0JCSAgIk1vZHVsZSBJbmRleCIgPT4gWyJcQG1kaW5kZXgiLCAibWQiXSk7Ci0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgTWFpbi9jb250ZW50cyBwYWdlCi0jIyMKLQotIyBQcm9jZXNzIGZpcnN0LWxldmVsIHBhZ2Ugb24gaXRzIG93biwgb3IganVzdCBhIGNvbnRlbnRzIHBhZ2U/ICBXZWxsLCBJIGRvCi0jIHdhbnQgdGhlIHRpdGxlLCBhdXRob3IsIGV0Yy4sIGFuZCB0aGUgZnJvbnQgbWF0dGVyLi4uICBGb3Igbm93LCBqdXN0IGFkZAotIyB0aGF0IGJ5IGhhbmQgYXQgdGhlIGVuZC4KLQotCi0jIGRhdGEgc3RydWN0dXJlIHBvc3NpYmlsaXRpZXM6Ci0jICAqIHRyZWUtbGlrZSAobmVlZCBzb21lIGtpbmQgb2Ygc3RhY2sgd2hlbiBwcm9jZXNzaW5nIChvciBwYXJlbnQgcG9pbnRlcnMpKQotIyAgKiBsaXN0IG9mIG5hbWUgYW5kIGRlcHRoOyByZW1lbWJlciBvbGQgYW5kIG5ldyBkZXB0aHMuCi0KLSMgRWFjaCBlbGVtZW50IGlzIGEgcmVmZXJlbmNlIHRvIGEgbGlzdCBvZiAobm9kZXRpdGxlLCBkZXB0aCwgZmlsZW5hbWUpLgotbXkgQGNvbnRlbnRzX2xpc3QgPSAoKTsKLQotIyBUaGUgcHJvYmxlbSB3aXRoIGRvaW5nIGZpeHVwcyBvbiB0aGUgZmx5IGlzIHRoYXQgc29tZSBzZWN0aW9ucyBtYXkgaGF2ZQotIyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIChhbmQgbm8gbG9uZ2VyIGF2YWlsYWJsZSkgYnkgdGhlIHRpbWUgd2Ugbm90aWNlCi0jIG90aGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuICBJdCdzIHByb2JhYmx5IGJldHRlciB0byBmdWxseSBjb25zdHJ1Y3QgdGhlCi0jIGNvbnRlbnRzIGxpc3QgKHJlYWRpbmcgaW4gYWxsIGZpbGVzIG9mIGludGVyZXN0KSB1cGZyb250OyB0aGF0IHdpbGwgYWxzbwotIyBsZXQgbWUgZG8gYSBiZXR0ZXIgam9iIHdpdGggY3Jvc3MtcmVmZXJlbmNlcywgYmVjYXVzZSBhZ2FpbiwgYWxsIGZpbGVzCi0jIHdpbGwgYWxyZWFkeSBiZSByZWFkIGluLgotbXkgJWNvbnRlbnRzX2hhc2ggPSAoKTsKLW15ICVjb250ZW50c19maXh1cHMgPSAoKTsKLQotbXkgQGN1cnJlbnRfY29udGVudHNfbGlzdCA9ICgpOwotCi0jIE1lcmdlIEBjdXJyZW50X2NvbnRlbnRzX2xpc3QgaW50byBAY29udGVudHNfbGlzdCwKLSMgYW5kIHNldCBAY3VycmVudF9jb250ZW50c19saXN0IHRvIGJlIGVtcHR5Lgotc3ViIG1lcmdlX2NvbnRlbnRzX2xpc3RzICggKQoteyBjaGVja19hcmdzKDAsIEBfKTsKLQotICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6Ci0gICMgICogQGNvbnRlbnRzX2xpc3QgaXMgZW1wdHk6IHJlcGxhY2UgaXQgYnkgQGN1cnJlbnRfY29udGVudHNfbGlzdC4KLSAgIyAgKiBwcmVmaXhlcyBvZiB0aGUgdHdvIGxpc3RzIGFyZSBpZGVudGljYWw6IGRvIG5vdGhpbmcKLSAgIyAgKiBAY3VycmVudF9jb250ZW50c19saXN0IGlzIGFsbCBhdCBsb3dlciBsZXZlbCB0aGFuICRjb250ZW50c19saXN0WzBdOwotICAjICAgIHByZWZpeCBAY29udGVudHNfbGlzdCBieSBAY3VycmVudF9jb250ZW50c19saXN0Ci0KLSAgaWYgKHNjYWxhcihAY3VycmVudF9jb250ZW50c19saXN0KSA9PSAwKQotICAgIHsgZGllICJlbXB0eSBjdXJyZW50X2NvbnRlbnRzX2xpc3QiOyB9Ci0KLSAgIyAgIGlmIChzY2FsYXIoQGNvbnRlbnRzX2xpc3QpID09IDApCi0gICMgICAgIHsgQGNvbnRlbnRzX2xpc3QgPSBAY3VycmVudF9jb250ZW50c19saXN0OwotICAjICAgICAgIEBjdXJyZW50X2NvbnRlbnRzX2xpc3QgPSAoKTsKLSAgIyAgICAgICByZXR1cm47IH0KLQotICAjICAgaWYgKCgkIHskY29udGVudHNfbGlzdFswXX1bMV0pIDwgKCQgeyRjdXJyZW50X2NvbnRlbnRzX2xpc3RbMF19WzFdKSkKLSAgIyAgICAgeyB1bnNoaWZ0IEBjb250ZW50c19saXN0LCBAY3VycmVudF9jb250ZW50c19saXN0OwotICAjICAgICAgIEBjdXJyZW50X2NvbnRlbnRzX2xpc3QgPSAoKTsKLSAgIyAgICAgICByZXR1cm47IH0KLQotICBmb3IgKG15ICRpPTA7ICRpPHNjYWxhcihAY3VycmVudF9jb250ZW50c19saXN0KTsgJGkrKykKLSAgICB7IG15ICRyZWZfY190ZGYgPSAkY3VycmVudF9jb250ZW50c19saXN0WyRpXTsKLSAgICAgIGlmICgkaSA+PSBzY2FsYXIoQGNvbnRlbnRzX2xpc3QpKQotCXsgcHVzaCBAY29udGVudHNfbGlzdCwgJHJlZl9jX3RkZjsKLQkgIG15ICR0aXRsZSA9ICQgeyRyZWZfY190ZGZ9WzBdOwotCSAgaWYgKGRlZmluZWQgJGNvbnRlbnRzX2hhc2h7JHRpdGxlfSkKLQkgICAgeyAkY29udGVudHNfZml4dXBzeyR0aXRsZX0gPSAxOyB9Ci0JICBlbHNlCi0JICAgIHsgJGNvbnRlbnRzX2hhc2h7JHRpdGxlfSA9IDE7IH0KLQkgIG5leHQ7IH0KLSAgICAgIG15ICRyZWZfdGRmID0gJGNvbnRlbnRzX2xpc3RbJGldOwotICAgICAgbXkgKCR0aXRsZSwgJGRlcHRoLCAkZmlsZSkgPSBAeyRyZWZfdGRmfTsKLSAgICAgIG15ICgkY190aXRsZSwgJGNfZGVwdGgsICRjX2ZpbGUpID0gQHskcmVmX2NfdGRmfTsKLQotICAgICAgaWYgKCgkdGl0bGUgbmUgJGNfdGl0bGUpCi0JICAmJiAoJGRlcHRoIDwgJGNfZGVwdGgpCi0JICAmJiAoJGZpbGUgbmUgJGNfZmlsZSkpCi0JeyBzcGxpY2UgQGNvbnRlbnRzX2xpc3QsICRpLCAwLCAkcmVmX2NfdGRmOwotCSAgaWYgKGRlZmluZWQgJGNvbnRlbnRzX2hhc2h7JGNfdGl0bGV9KQotCSAgICB7ICRjb250ZW50c19maXh1cHN7JGNfdGl0bGV9ID0gMTsgfQotCSAgZWxzZQotCSAgICB7ICRjb250ZW50c19oYXNoeyRjX3RpdGxlfSA9IDE7IH0KLQkgIG5leHQ7IH0KLQotICAgICAgaWYgKCgkdGl0bGUgbmUgJGNfdGl0bGUpCi0JICB8fCAoJGRlcHRoICE9ICRjX2RlcHRoKQotCSAgfHwgKCRmaWxlIG5lICRjX2ZpbGUpKQotCXsgZGllICgid2hpbGUgcHJvY2Vzc2luZyAkIHskY3VycmVudF9yZWZfdGRmfVsyXSBhdCBkZXB0aCAkIHskY3VycmVudF9yZWZfdGRmfVsxXSwgbWlzbWF0Y2ggYXQgaW5kZXggJGk6IiwKLQkgICAgICAgIlxuICBtYWluOiAgPDw8JHRpdGxlPj4+ICRkZXB0aCAkZmlsZSIsCi0JICAgICAgICJcbiAgY3VycjogIDw8PCRjX3RpdGxlPj4+ICRjX2RlcHRoICRjX2ZpbGUiKTsgfQotICAgIH0KLSAgQGN1cnJlbnRfY29udGVudHNfbGlzdCA9ICgpOwotfQotCi0KLQotIyBTZXQgQGN1cnJlbnRfY29udGVudHNfbGlzdCB0byBhIGxpc3Qgb2YgKHRpdGxlLCBocmVmLCBzZWN0aW9ubGV2ZWwpOwotIyAgdGhlbiBtZXJnZSB0aGF0IGxpc3QgaW50byBAY29udGVudHNfbGlzdC4KLSMgTWF5YmUgdGhpcyBmdW5jdGlvbiBzaG91bGQgYWxzbyBwcm9kdWNlIGEgbWFwCi0jICBmcm9tIHRpdGxlIChvciBocmVmKSB0byBzZWN0aW9ubGV2ZWwgKGVnICJjaGFwdGVyIj8pLgotc3ViIHByb2Nlc3NfY2hpbGRfbGlua3MgKCAkICkKLXsgbXkgKCRoZSkgPSBjaGVja19hcmdzKDEsIEBfKTsKLQotICAjICRoZS0+ZHVtcCgpOwotICBpZiAoc2NhbGFyKEBjdXJyZW50X2NvbnRlbnRzX2xpc3QpICE9IDApCi0gICAgeyBkaWUgImN1cnJlbnRfY29udGVudHNfbGlzdCBub25lbXB0eTogQGN1cnJlbnRfY29udGVudHNfbGlzdCI7IH0KLSAgJGhlLT50cmF2ZXJzZShcJmluY3JlbWVudF9jdXJyZW50X2NvbnRlbnRzX2xpc3QsICdpZ25vcmUgdGV4dCcpOwotCi0gICMgTm9ybWFsaXplIHRoZSBkZXB0aHM7IGZvciBpbnN0YW5jZSwgY29udmVydCAxLDMsNSBpbnRvIDAsMSwyLgotICBteSAlZGVwdGhzID0gKCk7Ci0gIGZvciBteSAkcmVmX3RkZiAoQGN1cnJlbnRfY29udGVudHNfbGlzdCkKLSAgICB7ICRkZXB0aHN7JCB7JHJlZl90ZGZ9WzFdfSA9IDE7IH0KLSAgbXkgQHNvcnRlZF9kZXB0aHMgPSBzb3J0IGtleXMgJWRlcHRoczsKLSAgbXkgJGN1cnJlbnRfZGVwdGggPSBzY2FsYXIoQHNlY3Rpb25fc3RhY2spLTE7Ci0gIG15ICRjdXJyZW50X2RlcHRoXzIgPSAkIHskY3VycmVudF9yZWZfdGRmfVsxXTsKLSAgaWYgKCRjdXJyZW50X2RlcHRoICE9ICRjdXJyZW50X2RlcHRoXzIpCi0gICAgeyBkaWUgIm1pc21hdGNoIGluIGN1cnJlbnQgZGVwdGhzOiAkY3VycmVudF9kZXB0aCAkY3VycmVudF9kZXB0aF8yOyAiLCBqb2luKCIsICIsIEBzZWN0aW9uX3N0YWNrKTsgfQotICBmb3IgKG15ICRpPTA7ICRpPHNjYWxhcihAc29ydGVkX2RlcHRocyk7ICRpKyspCi0gICAgeyAkZGVwdGhzeyRzb3J0ZWRfZGVwdGhzWyRpXX0gPSAkaSArICRjdXJyZW50X2RlcHRoKzE7IH0KLSAgZm9yIG15ICRyZWZfdGRmIChAY3VycmVudF9jb250ZW50c19saXN0KQotICAgIHsgJCB7JHJlZl90ZGZ9WzFdID0gJGRlcHRoc3skIHskcmVmX3RkZn1bMV19OyB9Ci0KLSAgIyBFbGltaW5hdGUgdW5pbnRlcmVzdGluZyBzZWN0aW9ucy4gIEhhcmQtY29kZWQgaGFjayBmb3Igbm93LgotICBpZiAoJCB7JGN1cnJlbnRfY29udGVudHNfbGlzdFstMV19WzBdIGVxICJBYm91dCB0aGlzIGRvY3VtZW50IC4uLiIpCi0gICAgeyBwb3AgQGN1cnJlbnRfY29udGVudHNfbGlzdDsgfQotICBpZiAoKHNjYWxhcihAY3VycmVudF9jb250ZW50c19saXN0KSA+IDEpCi0gICAgICAmJiAoJCB7JGN1cnJlbnRfY29udGVudHNfbGlzdFsxXX1bMF0gZXEgIkNvbnRlbnRzIikpCi0gICAgeyBteSAkcmVmX2ZpcnN0X3RkZiA9IHNoaWZ0IEBjdXJyZW50X2NvbnRlbnRzX2xpc3Q7Ci0gICAgICAkY3VycmVudF9jb250ZW50c19saXN0WzBdID0gJHJlZl9maXJzdF90ZGY7IH0KLQotICBmb3IgKG15ICRpPTA7ICRpPHNjYWxhcihAY3VycmVudF9jb250ZW50c19saXN0KTsgJGkrKykKLSAgICB7IG15ICRyZWZfdGRmID0gJGN1cnJlbnRfY29udGVudHNfbGlzdFskaV07Ci0gICAgICBteSAkdGl0bGUgPSAkIHskcmVmX3RkZn1bMF07Ci0gICAgICBpZiAoZXhpc3RzICRpbmRleF9pbmZveyR0aXRsZX0pCi0JeyBteSAkaW5kZXhfZmlsZSA9ICQgeyRyZWZfdGRmfVsyXTsKLQkgIG15ICgkaW5kZXhpbmdfY29tbWFuZCwgJHN1ZmZpeCkgPSBAeyRpbmRleF9pbmZveyR0aXRsZX19OwotCSAgcHJvY2Vzc19pbmRleF9maWxlKCRpbmRleF9maWxlLCAkaW5kZXhpbmdfY29tbWFuZCk7Ci0JICBwcmludCBURVhJICJcblxAZGVmaW5kZXggJHN1ZmZpeFxuIjsKLQkgIHB1c2ggQGluZGV4X3RpdGxlcywgJHRpdGxlOwotCSAgc3BsaWNlIEBjdXJyZW50X2NvbnRlbnRzX2xpc3QsICRpLCAxOwotCSAgJGktLTsgfQotICAgICAgZWxzaWYgKCR0aXRsZSA9fiAvXGJJbmRleCQvKQotCXsgcHJpbnQgU1RERVJSICJXYXJuaW5nOiBcIiR0aXRsZVwiIG1pZ2h0IGJlIGFuIGluZGV4OyBpZiBzbywgZWRpdCBcJWluZGV4X2luZm8uXG4iOyB9IH0KLQotICBtZXJnZV9jb250ZW50c19saXN0cygpOwotCi0gICMgcHJpbnRfY29udGVudHNfbGlzdCgpOwotICAjIHByaW50X2luZGV4X2luZm8oKTsKLX0KLQotCi1zdWIgaW5jcmVtZW50X2N1cnJlbnRfY29udGVudHNfbGlzdCAoICQkJCApCi17IG15ICgkaGUsICRzdGFydGZsYWcsICRkZXB0aCkgPSBjaGVja19hcmdzKDMsIEBfKTsKLSAgaWYgKCEkc3RhcnRmbGFnKQotICAgIHsgcmV0dXJuOyB9Ci0KLSAgaWYgKCRoZS0+dGFnIGVxICJsaSIpCi0gICAgeyBteSBAbGlfY29udGVudCA9IEB7JGhlLT5jb250ZW50fTsKLSAgICAgIGlmICgkbGlfY29udGVudFswXS0+dGFnIG5lICJhIikKLQl7IGRpZSAiZmlyc3QgZWxlbWVudCBvZiA8TEk+IHNob3VsZCBiZSA8QT4iOyB9Ci0gICAgICBteSAoJG5hbWUsICRocmVmLCBAY29udGVudCkgPSBhbmNob3JfaW5mbygkbGlfY29udGVudFswXSk7Ci0gICAgICAjIHVudXNlZCAkbmFtZQotICAgICAgbXkgJHRpdGxlID0gam9pbigiIiwgY29sbGVjdF90ZXh0cygkbGlfY29udGVudFswXSkpOwotICAgICAgJHRpdGxlID0gdGV4aV9yZW1vdmVfcHVuY3R1YXRpb24oJHRpdGxlKTsKLSAgICAgICMgVGhlIHByb2JsZW0gd2l0aCB0aGVzZSBpcyB0aGF0IHRoZXkgYXJlIGZvcm1hdHRlZCBkaWZmZXJlbnRseSBpbgotICAgICAgIyBAbWVudSBhbmQgQG5vZGUhCi0gICAgICAkdGl0bGUgPX4gcy9gYC9cIi9nOwotICAgICAgJHRpdGxlID1+IHMvJycvXCIvZzsKLSAgICAgICR0aXRsZSA9fiBzLyAtLSAvIC9nOwotICAgICAgcHVzaCBAY3VycmVudF9jb250ZW50c19saXN0LCBbICR0aXRsZSwgJGRlcHRoLCAkaHJlZiBdOyB9Ci0gIHJldHVybiAxOwotfQotCi0jIFNpbXBsZSB2ZXJzaW9uIGZvciBzZWN0aW9uIHRpdGxlcwotc3ViIGh0bWxfdG9fdGV4aSAoICQgKQoteyBteSAoJGhlKSA9IGNoZWNrX2FyZ3MoMSwgQF8pOwotICBpZiAoIXJlZiAkaGUpCi0gICAgeyByZXR1cm4gJGhlOyB9Ci0KLSAgbXkgJHRhZyA9ICRoZS0+dGFnOwotICBpZiAoZXhpc3RzICRpbmxpbmVfbWFya3VweyR0YWd9KQotICAgIHsgbXkgJHJlc3VsdCA9ICJcQCRpbmxpbmVfbWFya3VweyR0YWd9XHsiOwotICAgICAgZm9yIG15ICRlbHQgKEB7JGhlLT5jb250ZW50fSkKLQl7ICRyZXN1bHQgLj0gaHRtbF90b190ZXhpKCRlbHQpOyB9Ci0gICAgICAkcmVzdWx0IC49ICJcfSI7Ci0gICAgICByZXR1cm4gJHJlc3VsdDsgfQotICBlbHNlCi0gICAgeyAkaGUtPmR1bXAoKTsKLSAgICAgIGRpZSAiaHRtbF90b190ZXhpIGNvbmZ1c2VkIGJ5IDwkdGFnPiI7IH0KLX0KLQotCi0KLXN1YiBwcmludF9jb250ZW50c19saXN0ICgpCi17IGNoZWNrX2FyZ3MoMCwgQF8pOwotICBwcmludCBTVERFUlIgIkNvbnRlbnRzIGxpc3Q6XG4iOwotICBmb3IgbXkgJHJlZl90ZGYgKEBjb250ZW50c19saXN0KQotICAgIHsgbXkgKCR0aXRsZSwgJGRlcHRoLCAkZmlsZSkgPSBAeyRyZWZfdGRmfTsKLSAgICAgIHByaW50IFNUREVSUiAiJHRpdGxlICRkZXB0aCAkZmlsZVxuIjsgfQotfQotCi0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgSW5kZXgKLSMjIwotCi1teSAkbDJoX2Jyb2tlbl9saW5rX25hbWUgPSAibDJoLSI7Ci0KLQotIyBtYXAgZnJvbSBmaWxlIHRvIChtYXAgZnJvbSBhbmNob3IgbmFtZSB0byAobGlzdCBvZiBpbmRleCB0ZXh0cykpCi0jIChUaGUgbGlzdCBpcyBuZWVkZWQgd2hlbiBhIHNpbmdsZSBMYVRlWCBjb21tYW5kIGxpa2UgXGVudnZhcgotIyBleHBhbmRzIHRvIG11bHRpcGxlIFxpbmRleCBjb21tYW5kcy4pCi1teSAlZmlsZV9pbmRleF9lbnRyaWVzID0gKCk7Ci1teSAldGhpc19pbmRleF9lbnRyaWVzOwkJIyBtYXAgZnJvbSBhbmNob3IgbmFtZSB0byAobGlzdCBvZiBpbmRleCB0ZXh0cykKLQotbXkgJWZpbGVfaW5kZXhfZW50cmllc19icm9rZW4gPSAoKTsgIyBtYXAgZnJvbSBmaWxlIHRvIChsaXN0IG9mIGluZGV4IHRleHRzKQotbXkgQHRoaXNfaW5kZXhfZW50cmllc19icm9rZW47Ci0KLW15ICRpbmRleF9wcmVmaXggPSAiIjsKLW15IEBpbmRleF9wcmVmaXhlcyA9ICgpOwotCi1teSAkdGhpc19pbmRleGluZ19jb21tYW5kOwotCi1zdWIgcHJpbnRfaW5kZXhfaW5mbyAoKQoteyBjaGVja19hcmdzKDAsIEBfKTsKLSAgbXkgKCRrZXksICR2YWwpOwotICBmb3IgbXkgJGZpbGUgKHNvcnQga2V5cyAlZmlsZV9pbmRleF9lbnRyaWVzKQotICAgIHsgbXkgJWluZGV4X2VudHJpZXMgPSAleyRmaWxlX2luZGV4X2VudHJpZXN7JGZpbGV9fTsKLSAgICAgIHByaW50IFNUREVSUiAiZmlsZTogJGZpbGVcbiI7Ci0gICAgICBmb3IgbXkgJGFuYW1lIChzb3J0IGtleXMgJWluZGV4X2VudHJpZXMpCi0JeyBteSBAZW50cmllcyA9IEB7JGluZGV4X2VudHJpZXN7JGFuYW1lfX07Ci0JICBpZiAoc2NhbGFyKEBlbnRyaWVzKSA9PSAxKQotCSAgICB7IHByaW50IFNUREVSUiAiICAkYW5hbWUgOiAkZW50cmllc1swXVxuIjsgfQotCSAgZWxzZQotCSAgICB7IHByaW50IFNUREVSUiAiICAkYW5hbWUgOiAiLCBqb2luKCJcbiAgICAgIiAuICgiICIgeCBsZW5ndGgoJGFuYW1lKSksIEBlbnRyaWVzKSwgIlxuIjsgfSB9IH0KLSAgZm9yIG15ICRmaWxlIChzb3J0IGtleXMgJWZpbGVfaW5kZXhfZW50cmllc19icm9rZW4pCi0gICAgeyBteSBAZW50cmllcyA9IEB7JGZpbGVfaW5kZXhfZW50cmllc19icm9rZW57JGZpbGV9fTsKLSAgICAgIHByaW50IFNUREVSUiAiZmlsZTogJGZpbGVcbiI7Ci0gICAgICBmb3IgbXkgJGVudHJ5IChAZW50cmllcykKLQl7IHByaW50IFNUREVSUiAiICAkZW50cnlcbiI7IH0KLSAgICB9Ci19Ci0KLQotc3ViIHByb2Nlc3NfaW5kZXhfZmlsZSAoICQkICkKLXsgbXkgKCRmaWxlLCAkaW5kZXhpbmdfY29tbWFuZCkgPSBjaGVja19hcmdzKDIsIEBfKTsKLSAgIyBwcmludCAicHJvY2Vzc19pbmRleF9maWxlICRmaWxlICRpbmRleGluZ19jb21tYW5kXG4iOwotCi0gIG15ICRoZSA9IGZpbGVfdG9fdHJlZSgkaHRtbF9kaXJlY3RvcnkgLiAkZmlsZSk7Ci0gICMgJGhlLT5kdW1wKCk7Ci0KLSAgJHRoaXNfaW5kZXhpbmdfY29tbWFuZCA9ICRpbmRleGluZ19jb21tYW5kOwotICAkaGUtPnRyYXZlcnNlKFwmcHJvY2Vzc19pZl9pbmRleF9kbF9jb21wYWN0LCAnaWdub3JlIHRleHQnKTsKLSAgdW5kZWYgJHRoaXNfaW5kZXhpbmdfY29tbWFuZDsKLSAgIyBwcmludCAicHJvY2Vzc19pbmRleF9maWxlIGRvbmVcbiI7Ci19Ci0KLQotc3ViIHByb2Nlc3NfaWZfaW5kZXhfZGxfY29tcGFjdCAoICQkJCApCi17IG15ICgkaGUsICRzdGFydGZsYWcpID0gKGNoZWNrX2FyZ3MoMywgQF8pKVswLDFdOyAjICBpZ25vcmUgZGVwdGggYXJndW1lbnQKLSAgaWYgKCEkc3RhcnRmbGFnKQotICAgIHsgcmV0dXJuOyB9Ci0KLSAgaWYgKCgkaGUtPnRhZygpIGVxICJkbCIpICYmIChkZWZpbmVkICRoZS0+YXR0cignY29tcGFjdCcpKSkKLSAgICB7IHByb2Nlc3NfaW5kZXhfZGxfY29tcGFjdCgkaGUpOwotICAgICAgcmV0dXJuIDA7IH0KLSAgZWxzZQotICAgIHsgcmV0dXJuIDE7IH0KLX0KLQotCi0jIFRoZSBlbGVtZW50cyBvZiBhIDxETCBDT01QQUNUPiBsaXN0IGZyb20gYSBMYVRlWDJIVE1MIGluZGV4OgotIyAgKiBhIHNpbmdsZSBzcGFjZTogdGV4dCB0byBiZSBpZ25vcmVkCi0jICAqIDxEVD4gZWxlbWVudHMgd2l0aCBhbiBvcHRpb25hbCA8REQ+IGVsZW1lbnQgZm9sbG93aW5nIGVhY2ggb25lCi0jICAgIFR3byB0eXBlcyBvZiA8RFQ+IGVsZW1lbnRzOgotIyAgICAgKiBGb2xsb3dlZCBieSBhIDxERD4gZWxlbWVudDogIHRoZSA8RFQ+IGNvbnRhaW5zIGEgc2luZ2xlCi0jICAgICAgIHN0cmluZywgYW5kIHRoZSA8REQ+IGNvbnRhaW5zIGEgd2hpdGVzcGFjZSBzdHJpbmcgdG8gYmUgaWdub3JlZCwgYQotIyAgICAgICA8REwgQ09NUEFDVD4gdG8gYmUgcmVjdXJzaXZlbHkgcHJvY2Vzc2VkICh3aXRoIHRoZSA8RFQ+IHN0cmluZyBhcyBhCi0jICAgICAgIHByZWZpeCksIGFuZCBhIHdoaXRlc3BhY2Ugc3RyaW5nIHRvIGJlIGlnbm9yZWQuCi0jICAgICAqIE5vdCBmb2xsb3dlZCBieSBhIDxERD4gZWxlbWVudDogIGNvbnRhaW5zIGEgbGlzdCBvZiBhbmNob3JzCi0jICAgICAgIGFuZCB0ZXh0cyAoaWdub3JlIHRoZSB0ZXh0cywgd2hpY2ggYXJlIG9ubHkgd2hpdGVzcGFjZSBhbmQgY29tbWFzKS4KLSMgICAgICAgT3B0aW9uYWxseSBjb250YWlucyBhIDxETCBDT01QQUNUPiB0byBiZSByZWN1cnNpdmVseSBwcm9jZXNzZWQgKHdpdGgKLSMgICAgICAgdGhlIDxEVD4gc3RyaW5nIGFzIGEgcHJlZml4KQotc3ViIHByb2Nlc3NfaW5kZXhfZGxfY29tcGFjdCAoICQgKQoteyBteSAoJGgpID0gY2hlY2tfYXJncygxLCBAXyk7Ci0gIG15IEBjb250ZW50ID0gQHskaC0+Y29udGVudCgpfTsKLSAgZm9yIChteSAkaSA9IDA7ICRpIDwgc2NhbGFyKEBjb250ZW50KTsgJGkrKykKLSAgICB7IG15ICR0aGlzX2hlID0gJGNvbnRlbnRbJGldOwotICAgICAgaWYgKCR0aGlzX2hlLT50YWcgbmUgImR0IikKLQl7ICR0aGlzX2hlLT5kdW1wKCk7Ci0JICBkaWUgIkV4cGVjdGVkIDxEVD4gdGFnOiAiIC4gJHRoaXNfaGUtPnRhZzsgfQotICAgICAgaWYgKCgkaSA8IHNjYWxhcihAY29udGVudCkgLSAxKSAmJiAoJGNvbnRlbnRbJGkrMV0tPnRhZyBlcSAiZGQiKSkKLQl7IHByb2Nlc3NfaW5kZXhfZHRfYW5kX2RkKCR0aGlzX2hlLCAkY29udGVudFskaSsxXSk7Ci0JICAkaSsrOwl9Ci0gICAgICBlbHNlCi0JeyBwcm9jZXNzX2luZGV4X2xvbmVfZHQoJHRoaXNfaGUpOyB9IH0gfQotCi0KLQotIyBBcmd1bWVudCBpcyBhIDxEVD4gZWxlbWVudC4gIElmIGl0IGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgYW5jaG9yLCB0aGVuCi0jIHRoZSB0ZXh0cyBvZiBhbGwgc3Vic2VxdWVudCBvbmVzIGFyZSAiW0xpbmtdIi4gIEV4YW1wbGU6Ci0jICAgICAgIDxEVD4KLSMgICAgICAgICA8QSBIUkVGPSJlbWJlZGRpbmcuaHRtbCNsMmgtMjAxIj4KLSMgICAgICAgICAgICIkUEFUSCIKLSMgICAgICAgICAiLCAiCi0jICAgICAgICAgPEEgSFJFRj0iZW1iZWRkaW5nLmh0bWwjbDJoLTIwNSI+Ci0jICAgICAgICAgICAiW0xpbmtdIgotIyBPcHRpb25hbGx5IGNvbnRhaW5zIGEgPERMIENPTVBBQ1Q+IGFzIHdlbGwuICBFeGFtcGxlOgotIyA8RFQ+Ci0jICAgPEEgSFJFRj0idHlwZXMuaHRtbCNsMmgtNjE2Ij4KLSMgICAgICJhdHRyaWJ1dGUiCi0jICAgPERMIENPTVBBQ1Q+Ci0jICAgICA8RFQ+Ci0jICAgICAgIDxBIEhSRUY9ImFzc2lnbm1lbnQuaHRtbCNsMmgtMzA3NCI+Ci0jICAgICAgICAgImFzc2lnbm1lbnQiCi0jICAgICAgICIsICIKLSMgICAgICAgPEEgSFJFRj0iYXNzaWdubWVudC5odG1sI2wyaC0zMDk5Ij4KLSMgICAgICAgICAiW0xpbmtdIgotIyAgICAgPERUPgotIyAgICAgICA8QSBIUkVGPSJ0eXBlcy5odG1sI2wyaC0iPgotIyAgICAgICAgICJhc3NpZ25tZW50LCBjbGFzcyIKLQotc3ViIHByb2Nlc3NfaW5kZXhfbG9uZV9kdCAoICQgKQoteyBteSAoJGR0KSA9IGNoZWNrX2FyZ3MoMSwgQF8pOwotICBteSBAZHRjb250ZW50ID0gQHskZHQtPmNvbnRlbnQoKX07Ci0gIG15ICRhY29udGVudDsKLSAgbXkgJGFjb250ZW50X3N1ZmZpeDsKLSAgZm9yIG15ICRhIChAZHRjb250ZW50KQotICAgIHsgaWYgKCRhIGVxICIsICIpCi0JeyBuZXh0OyB9Ci0gICAgICBpZiAoIXJlZiAkYSkKLQl7ICRkdC0+ZHVtcDsKLQkgIGRpZSAiVW5leHBlY3RlZCA8RFQ+IHN0cmluZyBlbGVtZW50OiAkYSI7IH0KLQotICAgICAgaWYgKCRhLT50YWcgZXEgImRsIikKLQl7IHB1c2ggQGluZGV4X3ByZWZpeGVzLCAkaW5kZXhfcHJlZml4OwotCSAgaWYgKCFkZWZpbmVkICRhY29udGVudF9zdWZmaXgpCi0JICAgIHsgZGllICJhY29udGVudF9zdWZmaXggbm90IHlldCBkZWZpbmVkIjsgfQotCSAgJGluZGV4X3ByZWZpeCAuPSAkYWNvbnRlbnRfc3VmZml4IC4gIiwgIjsKLQkgIHByb2Nlc3NfaW5kZXhfZGxfY29tcGFjdCgkYSk7Ci0JICAkaW5kZXhfcHJlZml4ID0gcG9wKEBpbmRleF9wcmVmaXhlcyk7Ci0JICByZXR1cm47IH0KLQotICAgICAgaWYgKCRhLT50YWcgbmUgImEiKQotCXsgJGR0LT5kdW1wOwotCSAgJGEtPmR1bXA7Ci0JICBkaWUgIkV4cGVjdGVkIGFuY2hvciBpbiBsb25lIDxEVD4iOyB9Ci0KLSAgICAgIG15ICgkYW5hbWUsICRhaHJlZiwgQGFjb250ZW50KSA9IGFuY2hvcl9pbmZvKCRhKTsKLSAgICAgICMgdW51c2VkICRhbmFtZQotICAgICAgaWYgKHNjYWxhcihAYWNvbnRlbnQpICE9IDEpCi0JeyBkaWUgIkV4cGVjdGVkIGp1c3Qgb25lIGNvbnRlbnQgb2YgPEE+IGluIDxEVD46IEBhY29udGVudCI7IH0KLSAgICAgIGlmIChyZWYgJGFjb250ZW50WzBdKQotCXsgJGFjb250ZW50WzBdLT5kdW1wOwotCSAgZGllICJFeHBlY3RlZCBzdHJpbmcgY29udGVudCBvZiA8QT4gaW4gPERUPjogJGFjb250ZW50WzBdIjsgfQotICAgICAgaWYgKCFkZWZpbmVkKCRhY29udGVudCkpCi0JeyAkYWNvbnRlbnQgPSAkaW5kZXhfcHJlZml4IC4gJGFjb250ZW50WzBdOwotCSAgJGFjb250ZW50X3N1ZmZpeCA9ICRhY29udGVudFswXTsgfQotICAgICAgZWxzaWYgKCgkYWNvbnRlbnRbMF0gbmUgIltMaW5rXSIpICYmICgkYWNvbnRlbnQgbmUgKCRpbmRleF9wcmVmaXggLiAkYWNvbnRlbnRbMF0pKSkKLQl7IGRpZSAiRGlmZmVyaW5nIGNvbnRlbnQ6IDw8PCRhY29udGVudD4+PiwgPDw8JGFjb250ZW50WzBdPj4+IjsgfQotCi0gICAgICBpZiAoIWRlZmluZWQgJGFocmVmKQotCXsgJGR0LT5kdW1wOwotCSAgZGllICJubyBIUkVGIGluIG5hY2hvciBpbiA8RFQ+IjsgfQotICAgICAgbXkgKCRhaHJlZl9maWxlLCAkYWhyZWZfbmFtZSkgPSBzcGxpdCgvXCMvLCAkYWhyZWYpOwotICAgICAgaWYgKCFkZWZpbmVkICRhaHJlZl9uYW1lKQotCXsgIyBSZWZlcmVuY2UgdG8gZW50aXJlIGZpbGUKLQkgICRhaHJlZl9uYW1lID0gIiI7IH0KLQotICAgICAgaWYgKCRhaHJlZl9uYW1lIGVxICRsMmhfYnJva2VuX2xpbmtfbmFtZSkKLQl7IGlmICghZXhpc3RzICRmaWxlX2luZGV4X2VudHJpZXNfYnJva2VueyRhaHJlZl9maWxlfSkKLQkgICAgeyAkZmlsZV9pbmRleF9lbnRyaWVzX2Jyb2tlbnskYWhyZWZfZmlsZX0gPSBbXTsgfQotCSAgcHVzaCBAeyRmaWxlX2luZGV4X2VudHJpZXNfYnJva2VueyRhaHJlZl9maWxlfX0sICIkdGhpc19pbmRleGluZ19jb21tYW5kICRhY29udGVudCI7Ci0JICBuZXh0OyB9Ci0KLSAgICAgIGlmICghZXhpc3RzICRmaWxlX2luZGV4X2VudHJpZXN7JGFocmVmX2ZpbGV9KQotCXsgJGZpbGVfaW5kZXhfZW50cmllc3skYWhyZWZfZmlsZX0gPSB7fTsgfQotICAgICAgIyBEb24ndCBkbyB0aGlzISAgSXQgYXBwZWFycyB0byBtYWtlIGEgY29weSwgd2hpY2ggaXMgbm90IGRlc2lyZWQuCi0gICAgICAjIG15ICVpbmRleF9lbnRyaWVzID0gJXskZmlsZV9pbmRleF9lbnRyaWVzeyRhaHJlZl9maWxlfX07Ci0gICAgICBpZiAoIWV4aXN0cyAkIHskZmlsZV9pbmRleF9lbnRyaWVzeyRhaHJlZl9maWxlfX17JGFocmVmX25hbWV9KQotCXsgJCB7JGZpbGVfaW5kZXhfZW50cmllc3skYWhyZWZfZmlsZX19eyRhaHJlZl9uYW1lfSA9IFtdOyB9Ci0gICAgICAjIAl7IG15ICRvbGRjb250ZW50ID0gJCB7JGZpbGVfaW5kZXhfZW50cmllc3skYWhyZWZfZmlsZX19eyRhaHJlZl9uYW1lfTsKLSAgICAgICMgCSAgaWYgKCRhY29udGVudCBlcSAkb2xkY29udGVudCkKLSAgICAgICMgCSAgICB7IGRpZSAiTXVsdGlwbGUgaWRlbnRpY2FsIGluZGV4IGVudHJpZXM/IjsgfQotICAgICAgIyAJICBkaWUgIlRyeWluZyB0byBhZGQgJGFjb250ZW50LCBidXQgYWxyZWFkeSBoYXZlIGluZGV4IGVudHJ5IHBvaW50aW5nIGF0ICRhaHJlZl9maWxlXCMkYWhyZWZfbmFtZTogJHskZmlsZV9pbmRleF9lbnRyaWVzeyRhaHJlZl9maWxlfX17JGFocmVmX25hbWV9IjsgfQotCi0gICAgICBwdXNoIEB7JCB7JGZpbGVfaW5kZXhfZW50cmllc3skYWhyZWZfZmlsZX19eyRhaHJlZl9uYW1lfX0sICIkdGhpc19pbmRleGluZ19jb21tYW5kICRhY29udGVudCI7Ci0gICAgICAjIHByaW50IFNUREVSUiAia2V5czogIiwga2V5cyAleyRmaWxlX2luZGV4X2VudHJpZXN7JGFocmVmX2ZpbGV9fSwgIlxuIjsKLSAgICB9Ci19Ci0KLXN1YiBwcm9jZXNzX2luZGV4X2R0X2FuZF9kZCAoICQkICkKLXsgbXkgKCRkdCwgJGRkKSA9IGNoZWNrX2FyZ3MoMiwgQF8pOwotICBteSAkZHRjb250ZW50OwotICB7IG15IEBkdGNvbnRlbnQgPSBAeyRkdC0+Y29udGVudCgpfTsKLSAgICBpZiAoKHNjYWxhcihAZHRjb250ZW50KSAhPSAxKSB8fCAocmVmICRkdGNvbnRlbnRbMF0pKQotICAgICAgeyAkZGQtPmR1bXA7Ci0JJGR0LT5kdW1wOwotCWRpZSAiRXhwZWN0ZWQgc2luZ2xlIHN0cmluZyAoYWN0dWFsIHNpemUgPSAiIC4gc2NhbGFyKEBkdGNvbnRlbnQpIC4gIikgaW4gY29udGVudCBvZiA8RFQ+OiBAZHRjb250ZW50IjsgfQotICAgICRkdGNvbnRlbnQgPSAkZHRjb250ZW50WzBdOwotICAgICRkdGNvbnRlbnQgPX4gcy8gKyQvLzsgfQotICBteSAkZGRjb250ZW50OwotICB7IG15IEBkZGNvbnRlbnQgPSBAeyRkZC0+Y29udGVudCgpfTsKLSAgICBpZiAoc2NhbGFyKEBkZGNvbnRlbnQpICE9IDEpCi0gICAgICB7IGRpZSAiRXhwZWN0ZWQgc2luZ2xlIDxERD4gY29udGVudCwgZ290ICIsIHNjYWxhcihAZGRjb250ZW50KSwgIiBlbGVtZW50czpcbiIsIGpvaW4oIlxuIiwgQGRkY29udGVudCksICJcbiAiOyB9Ci0gICAgJGRkY29udGVudCA9ICRkZGNvbnRlbnRbMF07IH0KLSAgaWYgKCRkZGNvbnRlbnQtPnRhZyBuZSAiZGwiKQotICAgIHsgZGllICJFeHBlY3RlZCA8REw+IGFzIGNvbnRlbnQgb2YgPEREPiwgYnV0IHNhdzogJGRkY29udGVudCI7IH0KLQotICBwdXNoIEBpbmRleF9wcmVmaXhlcywgJGluZGV4X3ByZWZpeDsKLSAgJGluZGV4X3ByZWZpeCAuPSAkZHRjb250ZW50IC4gIiwgIjsKLSAgcHJvY2Vzc19pbmRleF9kbF9jb21wYWN0KCRkZGNvbnRlbnQpOwotICAkaW5kZXhfcHJlZml4ID0gcG9wKEBpbmRleF9wcmVmaXhlcyk7Ci19Ci0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgT3JkaW5hcnkgc2VjdGlvbnMKLSMjIwotCi1zdWIgcHJvY2Vzc19zZWN0aW9uX2ZpbGUgKCAkJCQgKQoteyBteSAoJGZpbGUsICRkZXB0aCwgJG5vZGV0aXRsZSkgPSBjaGVja19hcmdzKDMsIEBfKTsKLSAgbXkgJGhlID0gZmlsZV90b190cmVlKCgkZmlsZSA9fiAvXlwvLykgPyAkZmlsZSA6ICRodG1sX2RpcmVjdG9yeSAuICRmaWxlKTsKLQotICAjIHByaW50IFNUREVSUiAicHJvY2Vzc19zZWN0aW9uX2ZpbGU6ICRmaWxlICRkZXB0aCAkbm9kZXRpdGxlXG4iOwotCi0gICMgRXF1aXZhbGVudGx5OgotICAjICAgd2hpbGUgKCRkZXB0aCA+PSBzY2FsYXIoQHNlY3Rpb25fc3RhY2spKSB7IHBvcChAc2VjdGlvbl9zdGFjayk7IH0KLSAgQHNlY3Rpb25fc3RhY2sgPSBAc2VjdGlvbl9zdGFja1swLi4kZGVwdGgtMV07Ci0KLSAgIyBOb3QgYSBncmVhdCBub2RlbmFtZSBmaXh1cCBzY2hlbWU7IG5lZWQgYSBtb3JlIGdsb2JhbCB2aWV3Ci0gIGlmICgoZGVmaW5lZCAkY29udGVudHNfZml4dXBzeyRub2RldGl0bGV9KQotICAgICAgJiYgKHNjYWxhcihAc2VjdGlvbl9zdGFjaykgPiAwKSkKLSAgICB7IG15ICR1cF90aXRsZSA9ICRzZWN0aW9uX3N0YWNrWyQjc2VjdGlvbl9zdGFja107Ci0gICAgICAjIGhhY2sgZm9yIFB5dGhvbiBTdGFuZGFyZCBMaWJyYXJ5Ci0gICAgICAkdXBfdGl0bGUgPX4gcy9eKEJ1aWx0LWlufFN0YW5kYXJkKSBNb2R1bGUgLy9nOwotICAgICAgbXkgKCR1cF9maXJzdF93b3JkKSA9IHNwbGl0KC8gLywgJHVwX3RpdGxlKTsKLSAgICAgICRub2RldGl0bGUgPSAiJHVwX2ZpcnN0X3dvcmQgJG5vZGV0aXRsZSI7Ci0gICAgfQotCi0gIHB1c2ggQHNlY3Rpb25fc3RhY2ssICRub2RldGl0bGU7Ci0gICMgcHJpbnQgU1RERVJSICJuZXcgc2VjdGlvbl9zdGFjazogIiwgam9pbigiLCAiLCBAc2VjdGlvbl9zdGFjayksICJcbiI7Ci0KLSAgJGhlLT50cmF2ZXJzZShcJnByb2Nlc3NfaWZfY2hpbGRfbGlua3MsICdpZ25vcmUgdGV4dCcpOwotICAlZm9vdG5vdGVzID0gKCk7Ci0gICMgJGhlLT5kdW1wOwotICAkaGUtPnRyYXZlcnNlKFwmcHJvY2Vzc19pZl9mb290bm90ZXMsICdpZ25vcmUgdGV4dCcpOwotCi0gICMgJGhlLT5kdW1wOwotCi0gIGlmIChleGlzdHMgJGZpbGVfaW5kZXhfZW50cmllc3skZmlsZX0pCi0gICAgeyAldGhpc19pbmRleF9lbnRyaWVzID0gJXskZmlsZV9pbmRleF9lbnRyaWVzeyRmaWxlfX07Ci0gICAgICAjIHByaW50IFNUREVSUiAidGhpc19pbmRleF9lbnRyaWVzOlxuICIsIGpvaW4oIlxuICIsIGtleXMgJXRoaXNfaW5kZXhfZW50cmllcyksICJcbiI7Ci0gICAgfQotICBlbHNlCi0gICAgeyAjIHByaW50IFNUREVSUiAiV2FybmluZzogbm8gaW5kZXggZW50cmllcyBmb3IgZmlsZSAkZmlsZVxuIjsKLSAgICAgICV0aGlzX2luZGV4X2VudHJpZXMgPSAoKTsgfQotCi0gIGlmIChleGlzdHMgJGZpbGVfaW5kZXhfZW50cmllc19icm9rZW57JGZpbGV9KQotICAgIHsgQHRoaXNfaW5kZXhfZW50cmllc19icm9rZW4gPSBAeyRmaWxlX2luZGV4X2VudHJpZXNfYnJva2VueyRmaWxlfX07IH0KLSAgZWxzZQotICAgIHsgIyBwcmludCBTVERFUlIgIldhcm5pbmc6IG5vIGluZGV4IGVudHJpZXMgZm9yIGZpbGUgJGZpbGVcbiI7Ci0gICAgICBAdGhpc19pbmRleF9lbnRyaWVzX2Jyb2tlbiA9ICgpOyB9Ci0KLQotICBpZiAoJGhlLT50YWcoKSBuZSAiaHRtbCIpCi0gICAgeyBkaWUgIkV4cGVjdGVkIDxIVE1MPiBhdCB0b3AgbGV2ZWwiOyB9Ci0gIG15IEBjb250ZW50ID0gQHskaGUtPmNvbnRlbnQoKX07Ci0gIGlmICgoIXJlZiAkY29udGVudFswXSkgb3IgKCRjb250ZW50WzBdLT50YWcgbmUgImhlYWQiKSkKLSAgICB7ICRoZS0+ZHVtcDsKLSAgICAgIGRpZSAiPEhFQUQ+IG5vdCBmaXJzdCBlbGVtZW50IG9mIDxIVE1MPiI7IH0KLSAgaWYgKCghcmVmICRjb250ZW50WzFdKSBvciAoJGNvbnRlbnRbMV0tPnRhZyBuZSAiYm9keSIpKQotICAgIHsgJGhlLT5kdW1wOwotICAgICAgZGllICI8Qk9EWT4gbm90IHNlY29uZCBlbGVtZW50IG9mIDxIVE1MPiI7IH0KLQotICAkY29udGVudFsxXS0+dHJhdmVyc2UoXCZvdXRwdXRfYm9keSk7Ci19Ci0KLSMgc3RhY2sgb2YgdGhpbmdzIHdlJ3JlIGluc2lkZSB0aGF0IGFyZSBwcmV2ZW50aW5nIGluZGV4aW5nIGZyb20gb2NjdXJyaW5nIG5vdy4KLSMgVGhlc2UgYXJlICJoMSIsICJoMiIsICJoMyIsICJoNCIsICJoNSIsICJoNiIsICJkdCIgKGFuZCBwb3NzaWJseSBvdGhlcnM/KQotbXkgQGluZGV4X2RlZmVycmVycyA9ICgpOwotCi1zdWIgcHVzaF9vcl9wb3BfaW5kZXhfZGVmZXJyZXJzICggJCQgKQoteyBteSAoJHRhZywgJHN0YXJ0ZmxhZykgPSBjaGVja19hcmdzKDIsIEBfKTsKLSAgaWYgKCRzdGFydGZsYWcpCi0gICAgeyBwdXNoIEBpbmRleF9kZWZlcnJlcnMsICR0YWc7IH0KLSAgZWxzZQotICAgIHsgbXkgJG9sZF9kZWZlcnJlciA9IHBvcCBAaW5kZXhfZGVmZXJyZXJzOwotICAgICAgaWYgKCR0YWcgbmUgJG9sZF9kZWZlcnJlcikKLQl7IGRpZSAiRXhwZWN0ZWQgJHRhZyBhdCB0b3Agb2YgaW5kZXhfZGVmZXJyZXJzIGJ1dCBzYXcgJG9sZF9kZWZlcnJlcjsgcmVtYWluZGVyID0gIiwgam9pbigiICIsIEBpbmRleF9kZWZlcnJlcnMpOyB9Ci0gICAgICBkb19kZWZlcnJlZF9pbmRleF9lbnRyaWVzKCk7IH0KLX0KLQotCi1zdWIgbGFiZWxfYWRkX2luZGV4X2VudHJpZXMgKCAkOyQgKQoteyBteSAoJGxhYmVsLCAkaGUpID0gY2hlY2tfYXJnc19yYW5nZSgxLCAyLCBAXyk7Ci0gICMgcHJpbnQgKChleGlzdHMgJHRoaXNfaW5kZXhfZW50cmllc3skbGFiZWx9KSA/ICIqIiA6ICIgIiksICIgbGFiZWxfYWRkX2luZGV4X2VudHJpZXMgJGxhYmVsXG4iOwotICAjICRoZSBpcyB0aGUgYW5jaG9yIGVsZW1lbnQKLSAgaWYgKGV4aXN0cyAkdGhpc19pbmRleF9lbnRyaWVzeyRsYWJlbH0pCi0gICAgeyBwdXNoIEBkZWZlcnJlZF9pbmRleF9lbnRyaWVzLCBAeyR0aGlzX2luZGV4X2VudHJpZXN7JGxhYmVsfX07Ci0gICAgICByZXR1cm47IH0KLQotICBpZiAoJGxhYmVsIGVxICRsMmhfYnJva2VuX2xpbmtfbmFtZSkKLSAgICB7ICMgVHJ5IHRvIGZpbmQgc29tZSB0ZXh0IHRvIHVzZSBpbiBndWVzc2luZyB3aGljaCBsaW5rcyBzaG91bGQgcG9pbnQgaGVyZQotICAgICAgIyBJIHNob3VsZCBwcm9iYWJseSBvbmx5IGxvb2sgYXQgdGhlIHByZXZpb3VzIGVsZW1lbnQsIG9yIGlmIHRoYXQgaXMKLSAgICAgICMgYWxsIHB1bmN0dWF0aW9uLCB0aGUgb25lIGJlZm9yZSBpdDsgY29sbGVjdGluZyBhbGwgdGhlIHByZXZpb3VzIHRleHRzCi0gICAgICAjIGlzIGEgYml0IG9mIG92ZXJraWxsLgotICAgICAgbXkgQGFuY2hvcl90ZXh0cyA9IGNvbGxlY3RfdGV4dHMoJGhlKTsKLSAgICAgIG15IEBwcmV2aW91c190ZXh0cyA9IGNvbGxlY3RfdGV4dHMoJGhlLT5wYXJlbnQsICRoZSk7Ci0gICAgICAjIDQgZWxlbWVudHMgaXMgYXJiaXRyYXJ5OyBvdWdodCB0byBmaWx0ZXIgb3V0IHB1bmN0dWF0aW9uIGFuZCBzbWFsbCB3b3JkcwotICAgICAgIyBmaXJzdCwgdGhlbiBwZXJoYXBzIGtlZXAgZmV3ZXIuICBQZXJoYXBzIGFsc28gZmlsdGVyIG91dCBmb3JtYXR0aW5nIHNvCi0gICAgICAjIHRoYXQgd2UgY2FuIHNlZSBhIGxhcmdlciBjaHVuayBvZiB0ZXh0PyAgKFByb2JhYmx5IG5vdC4pCi0gICAgICAjIEFsc28gcGVyaGFwcyBzaG91bGQgZG8gZnVydGhlciBjaHVua2luZyBpbnRvIHdvcmRzLCBpbiBjYXNlIHRoZQotICAgICAgIyBpbmRleCB0ZXJtIGlzbid0IGEgY2h1bmsgb2YgaXRzIG93biAoZWcsIHdhcyBpbiA8dHQ+Li4uPC90dD4uCi0gICAgICBteSBAY2FuZGlkYXRlX3RleHRzID0gKEBhbmNob3JfdGV4dHMsIChyZXZlcnNlKEBwcmV2aW91c190ZXh0cykpWzAuLm1pbigzLCQjcHJldmlvdXNfdGV4dHMpXSk7Ci0KLSAgICAgIG15ICRndWVzc2VkID0gMDsKLSAgICAgIGZvciBteSAkdGV4dCAoQGNhbmRpZGF0ZV90ZXh0cykKLQl7ICMgbXkgJG9yaWdfdGV4dCA9ICR0ZXh0OwotCSAgaWYgKCR0ZXh0ID1+IC9eW1wiXGBcJygpLj8hIF0qJC8pCi0JICAgIHsgbmV4dDsgfQotCSAgaWYgKGxlbmd0aCgkdGV4dCkgPD0gMikKLQkgICAgeyBuZXh0OyB9Ci0JICAjIGhhY2sgZm9yIFB5dGhvbiBtYW51YWw7IG1heWJlIGRlZmVyIHVudGlsIGZhaWx1cmUgZmlyc3QgdGltZSBhcm91bmQ/Ci0JICAkdGV4dCA9fiBzL15zeXNcLi8vZzsKLQkgIGZvciBteSAkaXRlcm0gKEB0aGlzX2luZGV4X2VudHJpZXNfYnJva2VuKQotCSAgICB7ICMgSSBjb3VsZCB0ZXN0IGZvciB6ZXJvOiAgTGFUZVgySFRNTCdzIGZhaWx1cmVzIGluIHRoZSBQeXRob24KLQkgICAgICAjIGRvY3VtZW50YXRpb24gYXJlIG9ubHkgZm9yIGl0ZW1zIG9mIHRoZSBmb3JtICIuLi4gKGJ1aWx0LWluLi4uKSIKLQkgICAgICBpZiAoaW5kZXgoJGl0ZXJtLCAkdGV4dCkgIT0gLTEpCi0JCXsgcHVzaCBAZGVmZXJyZWRfaW5kZXhfZW50cmllcywgJGl0ZXJtOwotCQkgICMgcHJpbnQgU1RERVJSICJHdWVzc2luZyBpbmRleCB0ZXJtIGAkaXRlcm0nIGZvciB0ZXh0IGAkb3JpZ190ZXh0J1xuIjsKLQkJICAkZ3Vlc3NlZCA9IDE7Ci0JCX0gfSB9Ci0gICAgICBpZiAoISRndWVzc2VkKQotCXsgIyBwcmludCBTVERFUlIgIk5vIGd1ZXNzIGluIGAiLCBqb2luKCInOyBgIiwgQHRoaXNfaW5kZXhfZW50cmllc19icm9rZW4pLCAiJyBmb3IgdGV4dHM6XG4gYCIsIGpvaW4oIidcbiBgIiwgQGNhbmRpZGF0ZV90ZXh0cyksICInXG4iOwotCX0KLSAgICB9Ci19Ci0KLQotIyBOZWVkIHRvIGFkZCBjYWxscyB0byB0aGlzIGF0IHZhcmlvdXMgcGxhY2VzLgotIyBQZXJoYXBzIGFkZCBIVE1MOjpFbGVtZW50IGFyZ3VtZW50IGFuZCBkbyB0aGUgY2hlY2sgZm9yIGFwcHJvcHJpYXRlbmVzcwotIyBoZXJlIChpZSwgbm8gYWN0aW9uIGlmIGluc2lkZSA8SDE+LCBldGMuKS4KLXN1YiBkb19kZWZlcnJlZF9pbmRleF9lbnRyaWVzICgpCi17IGNoZWNrX2FyZ3MoMCwgQF8pOwotICBpZiAoKHNjYWxhcihAZGVmZXJyZWRfaW5kZXhfZW50cmllcykgPiAwKQotICAgICAgJiYgKHNjYWxhcihAaW5kZXhfZGVmZXJyZXJzKSA9PSAwKSkKLSAgICB7IHByaW50IFRFWEkgIlxuIiwgam9pbigiXG4iLCBAZGVmZXJyZWRfaW5kZXhfZW50cmllcyksICJcbiI7Ci0gICAgICBAZGVmZXJyZWRfaW5kZXhfZW50cmllcyA9ICgpOyB9Ci19Ci0KLW15ICR0YWJsZV9jb2x1bW5zOwkJIyB1bmRlZmluZWQgaWYgbm90IGluIGEgdGFibGUKLW15ICR0YWJsZV9maXJzdF9jb2x1bW47CQkjIGJvb2xlYW4KLQotc3ViIG91dHB1dF9ib2R5ICggJCQkICkKLXsgbXkgKCRoZSwgJHN0YXJ0ZmxhZykgPSAoY2hlY2tfYXJncygzLCBAXykpWzAsMV07ICMgIGlnbm9yZSBkZXB0aCBhcmd1bWVudAotCi0gIGlmICghcmVmICRoZSkKLSAgICB7IG15ICRzcGFjZV9pbmRleCA9IGluZGV4KCRoZSwgIiAiKTsKLSAgICAgIGlmICgkc3BhY2VfaW5kZXggIT0gLTEpCi0JeyAjIFdoeSBkb2VzCi0JICAjICAgcHJpbnQgVEVYSSB0ZXhpX3F1b3RlKHN1YnN0cigkaGUsIDAsICRzcGFjZV9pbmRleCsxKSk7Ci0JICAjIGdpdmU6ICBDYW4ndCBsb2NhdGUgb2JqZWN0IG1ldGhvZCAiVEVYSSIgdmlhIHBhY2thZ2UgInRleGlfcXVvdGUiCi0JICAjIChCZWNhdXNlIHRoZSBkZWZpbml0aW9uIHRleGlfcXVvdGUgaGFzbid0IGJlZW4gc2VlbiB5ZXQuKQotCSAgcHJpbnQgVEVYSSAmdGV4aV9xdW90ZShzdWJzdHIoJGhlLCAwLCAkc3BhY2VfaW5kZXgrMSkpOwotCSAgZG9fZGVmZXJyZWRfaW5kZXhfZW50cmllcygpOwotCSAgcHJpbnQgVEVYSSAmdGV4aV9xdW90ZShzdWJzdHIoJGhlLCAkc3BhY2VfaW5kZXgrMSkpOyB9Ci0gICAgICBlbHNlCi0JeyBwcmludCBURVhJICZ0ZXhpX3F1b3RlKCRoZSk7IH0KLSAgICAgIHJldHVybjsgfQotCi0gIG15ICR0YWcgPSAkaGUtPnRhZygpOwotCi0gICMgT3JkaW5hcnkgdGV4dCBtYXJrdXAgZmlyc3QKLSAgaWYgKGV4aXN0cyAkaW5saW5lX21hcmt1cHskdGFnfSkKLSAgICB7IGlmICgkc3RhcnRmbGFnKQotCXsgcHJpbnQgVEVYSSAiXEAkaW5saW5lX21hcmt1cHskdGFnfVx7IjsgfQotICAgICAgZWxzZQotCXsgcHJpbnQgVEVYSSAiXH0iOyB9IH0KLSAgZWxzaWYgKCR0YWcgZXEgImEiKQotICAgIHsgbXkgKCRuYW1lLCAkaHJlZiwgQGNvbnRlbnQpID0gYW5jaG9yX2luZm8oJGhlKTsKLSAgICAgIGlmICghJGhyZWYpCi0JeyAjIFRoaXMgYW5jaG9yIGlzIG9ubHkgaGVyZSBmb3IgaW5kZXhpbmcvY3Jvc3MgcmVmZXJlbmNpbmcgcHVycG9zZXMuCi0JICBpZiAoJHN0YXJ0ZmxhZykKLQkgICAgeyBsYWJlbF9hZGRfaW5kZXhfZW50cmllcygkbmFtZSwgJGhlKTsgfQotCX0KLSAgICAgIGVsc2lmICgkaHJlZiA9fiAiXihmdHB8aHR0cHxuZXdzKToiKQotCXsgaWYgKCRzdGFydGZsYWcpCi0JICAgIHsgIyBTaG91bGQgYXZvaWQgc2Vjb25kIGFyZ3VtZW50IGlmIGl0J3MgaWRlbnRpY2FsIHRvIHRoZSBVUkwuCi0JICAgICAgcHJpbnQgVEVYSSAiXEB1cmVmXHskaHJlZiwgIjsgfQotCSAgZWxzZQotCSAgICB7IHByaW50IFRFWEkgIlx9IjsgfQotCX0KLSAgICAgIGVsc2lmICgkaHJlZiA9fiAvXlwjKGZvb3RbMC05XSspJC8pCi0JeyAjIEZvb3Rub3RlCi0JICBpZiAoJHN0YXJ0ZmxhZykKLQkgICAgeyAjIENvdWxkIGRvdWJsZS1jaGVjayBuYW1lIGFuZCBjb250ZW50LCBidXQgSSdtIG5vdAotCSAgICAgICMgY3VycmVudGx5IHN0b3JpbmcgdGhhdCBpbmZvcm1hdGlvbi4KLQkgICAgICBwcmludCBURVhJICJcQGZvb3Rub3RlXHsiOwotCSAgICAgICRmb290bm90ZXN7JDF9LT50cmF2ZXJzZShcJm91dHB1dF9ib2R5KTsKLQkgICAgICBwcmludCBURVhJICJcfSI7Ci0JICAgICAgcmV0dXJuIDA7IH0gfQotICAgICAgZWxzZQotCXsgaWYgKCRzdGFydGZsYWcpCi0JICAgIHsgIyBjcm9zcy1yZWZlcmVuY2VzIGFyZSBub3QgYWN0aXZlIEluZm8gbGlua3MsIGJ1dCBubyB0ZXh0IGlzIGxvc3QKLQkgICAgICBwcmludCBTVERFUlIgIkNhbid0IGRlYWwgd2l0aCBpbnRlcm5hbCBIUkVGIGFuY2hvcnMgeWV0OlxuIjsKLQkgICAgICAkaGUtPmR1bXA7IH0KLQl9Ci0gICAgfQotICBlbHNpZiAoJHRhZyBlcSAiYnIiKQotICAgIHsgcHJpbnQgVEVYSSAiXEBcbiI7IH0KLSAgZWxzaWYgKCR0YWcgZXEgImJvZHkiKQotICAgIHsgfQotICBlbHNpZiAoJHRhZyBlcSAiY2VudGVyIikKLSAgICB7IGlmIChoYXNfc2luZ2xlX2NvbnRlbnRfc3RyaW5nKCRoZSkKLQkgICYmICgkIHskaGUtPmNvbnRlbnR9WzBdID1+IC9eICokLykpCi0JeyByZXR1cm4gMDsgfQotICAgICAgaWYgKCRzdGFydGZsYWcpCi0JeyBwcmludCBURVhJICJcblxAY2VudGVyXG4iOyB9Ci0gICAgICBlbHNlCi0JeyBwcmludCBURVhJICJcblxAZW5kIGNlbnRlclxuIjsgfQotICAgIH0KLSAgZWxzaWYgKCR0YWcgZXEgImRpdiIpCi0gICAgeyBteSAkYWxpZ24gPSAkaGUtPmF0dHIoJ2FsaWduJyk7Ci0gICAgICBpZiAoZGVmaW5lZCgkYWxpZ24pICYmICgkYWxpZ24gZXEgImNlbnRlciIpKQotCXsgaWYgKGhhc19zaW5nbGVfY29udGVudF9zdHJpbmcoJGhlKQotCSAgICAgICYmICgkIHskaGUtPmNvbnRlbnR9WzBdID1+IC9eICokLykpCi0JICAgIHsgcmV0dXJuIDA7IH0KLQkgIGlmICgkc3RhcnRmbGFnKQotCSAgICB7IHByaW50IFRFWEkgIlxuXEBjZW50ZXJcbiI7IH0KLQkgIGVsc2UKLQkgICAgeyBwcmludCBURVhJICJcblxAZW5kIGNlbnRlclxuIjsgfSB9Ci0gICAgfQotICBlbHNpZiAoJHRhZyBlcSAiZGwiKQotICAgIHsgIyBSZWNvZ25pemUgIjxkbD48ZGQ+PHByZT4gLi4uIDwvcHJlPjwvZGw+IiBwYXJhZGlnbSBmb3IgIkBleGFtcGxlIgotICAgICAgaWYgKGhhc19zaW5nbGVfY29udGVudF93aXRoX3RhZygkaGUsICJkZCIpKQotCXsgbXkgJGhlX2RkID0gJCB7JGhlLT5jb250ZW50fVswXTsKLQkgIGlmIChoYXNfc2luZ2xlX2NvbnRlbnRfd2l0aF90YWcoJGhlX2RkLCAicHJlIikpCi0JICAgIHsgbXkgJGhlX3ByZSA9ICQgeyRoZV9kZC0+Y29udGVudH1bMF07Ci0JICAgICAgcHJpbnRfcHJlKCRoZV9wcmUpOwotCSAgICAgIHJldHVybiAwOyB9IH0KLSAgICAgIGlmICgkc3RhcnRmbGFnKQotCXsgIyBDb3VsZCBleGFtaW5lIHRoZSBlbGVtZW50cywgdG8gYmUgY2xldmVyZXIgYWJvdXQgZm9ybWF0dGluZy4KLQkgICMgKEFsc28gdG8gdXNlIGZ0YWJsZSwgdnRhYmxlLi4uKQotCSAgcHJpbnQgVEVYSSAiXG5cQHRhYmxlIFxAYXNpc1xuIjsgfQotICAgICAgZWxzZQotCXsgcHJpbnQgVEVYSSAiXG5cQGVuZCB0YWJsZVxuIjsgfQotICAgIH0KLSAgZWxzaWYgKCR0YWcgZXEgImR0IikKLSAgICB7IHB1c2hfb3JfcG9wX2luZGV4X2RlZmVycmVycygkdGFnLCAkc3RhcnRmbGFnKTsKLSAgICAgIGlmICgkc3RhcnRmbGFnKQotCXsgcHJpbnQgVEVYSSAiXG5cQGl0ZW0gIjsgfQotICAgICAgZWxzZQotCXsgfSB9Ci0gIGVsc2lmICgkdGFnIGVxICJkZCIpCi0gICAgeyBpZiAoJHN0YXJ0ZmxhZykKLQl7IHByaW50IFRFWEkgIlxuIjsgfQotICAgICAgZWxzZQotCXsgfQotICAgICAgaWYgKHNjYWxhcihAaW5kZXhfZGVmZXJyZXJzKSAhPSAwKQotCXsgJGhlLT5kdW1wOwotCSAgZGllICJVbmV4cGVjdGVkIDwkdGFnPiB3aGlsZSBpbnNpZGU6ICgiIC4gam9pbigiICIsIEBpbmRleF9kZWZlcnJlcnMpIC4gIik7IGJhZCBIVE1MPyI7IH0KLSAgICAgIGRvX2RlZmVycmVkX2luZGV4X2VudHJpZXMoKTsKLSAgICB9Ci0gIGVsc2lmICgkdGFnID1+IC9eKGZvbnR8YmlnfHNtYWxsKSQvKQotICAgIHsgIyBEbyBub3RoaW5nIGZvciBub3cuCi0gICAgfQotICBlbHNpZiAoJHRhZyA9fiAvXmhbMS02XSQvKQotICAgIHsgIyBXZSBkb24ndCBuZWVkIHRoaXMgYmVjYXVzZSB3ZSBuZXZlciByZWN1cnNpdmVseSBlbnRlciB0aGUgaGVhZGluZyBjb250ZW50LgotICAgICAgIyBwdXNoX29yX3BvcF9pbmRleF9kZWZlcnJlcnMoJHRhZywgJHN0YXJ0ZmxhZyk7Ci0gICAgICBteSAkc2VjbmFtZSA9ICIiOwotICAgICAgbXkgQHNlY2xhYmVscyA9ICgpOwotICAgICAgZm9yIG15ICRlbHQgKEB7JGhlLT5jb250ZW50fSkKLQl7IGlmICghcmVmICRlbHQpCi0JICAgIHsgJHNlY25hbWUgLj0gJGVsdDsgfQotCSAgZWxzaWYgKCRlbHQtPnRhZyBlcSAiYnIiKQotCSAgICB7IH0KLQkgIGVsc2lmICgkZWx0LT50YWcgZXEgImEiKQotCSAgICB7IG15ICgkbmFtZSwgJGhyZWYsIEBhY29udGVudCkgPSBhbmNob3JfaW5mbygkZWx0KTsKLSAgICAgICAgICAgICAgaWYgKCRocmVmKQotICAgICAgICAgICAgICAgIHsgJGhlLT5kdW1wOwotICAgICAgICAgICAgICAgICAgJGVsdC0+ZHVtcDsKLSAgICAgICAgICAgICAgICAgIGRpZSAiTm9uc2ltcGxlIGFuY2hvciBpbiA8JHRhZz4iOyB9Ci0JICAgICAgaWYgKCFkZWZpbmVkICRuYW1lKQotCQl7IGRpZSAiTm8gTkFNRSBmb3IgYW5jaG9yIGluICR0YWciOyB9Ci0JICAgICAgcHVzaCBAc2VjbGFiZWxzLCAkbmFtZTsKLQkgICAgICBmb3IgbXkgJHN1YmVsdCAoQGFjb250ZW50KQotCQl7ICRzZWNuYW1lIC49IGh0bWxfdG9fdGV4aSgkc3ViZWx0KTsgfSB9Ci0JICBlbHNlCi0JICAgIHsgJHNlY25hbWUgLj0gaHRtbF90b190ZXhpKCRlbHQpOyB9IH0KLSAgICAgIGlmICgkc2VjbmFtZSBlcSAiIikKLQl7IGRpZSAiTm8gc2VjdGlvbiBuYW1lIGluIDwkdGFnPiI7IH0KLSAgICAgIGlmIChzY2FsYXIoQHNlY3Rpb25fc3RhY2spID09IDEpCi0JeyBpZiAoJHNlY3Rpb25fc3RhY2tbLTFdIG5lICJUb3AiKQotCSAgICB7IGRpZSAiTm90IHRvcD8gJHNlY3Rpb25fc3RhY2tbLTFdIjsgfQotCSAgcHJpbnQgVEVYSSAiXEBzZXR0aXRsZSAkc2VjbmFtZVxuIjsKLQkgIHByaW50IFRFWEkgIlxAYyAlKiplbmQgb2YgaGVhZGVyXG4iOwotCSAgcHJpbnQgVEVYSSAiXG4iOwotCSAgcHJpbnQgVEVYSSAiXEBub2RlIFRvcFxuIjsKLQkgIHByaW50IFRFWEkgIlxuIjsgfQotICAgICAgZWxzZQotCXsgcHJpbnQgVEVYSSAiXG5cQG5vZGUgJHNlY3Rpb25fc3RhY2tbLTFdXG4iOwotCSAgcHJpbnQgVEVYSSAiXEAkc2VjdGlvbm1hcmtlcltzY2FsYXIoQHNlY3Rpb25fc3RhY2spLTFdICIsIHRleGlfcmVtb3ZlX3B1bmN0dWF0aW9uKCRzZWNuYW1lKSwgIlxuIjsgfQotICAgICAgZm9yIG15ICRzZWNsYWJlbCAoQHNlY2xhYmVscykKLQl7IGxhYmVsX2FkZF9pbmRleF9lbnRyaWVzKCRzZWNsYWJlbCk7IH0KLSAgICAgICMgVGhpcyBzaG91bGQgb25seSBoYXBwZW4gb25jZSBwZXIgZmlsZS4KLSAgICAgIGxhYmVsX2FkZF9pbmRleF9lbnRyaWVzKCIiKTsKLSAgICAgIGlmIChzY2FsYXIoQGluZGV4X2RlZmVycmVycykgIT0gMCkKLQl7ICRoZS0+ZHVtcDsKLQkgIGRpZSAiVW5leHBlY3RlZCA8JHRhZz4gd2hpbGUgaW5zaWRlOiAoIiAuIGpvaW4oIiAiLCBAaW5kZXhfZGVmZXJyZXJzKSAuICIpOyBiYWQgSFRNTD8iOyB9Ci0gICAgICBkb19kZWZlcnJlZF9pbmRleF9lbnRyaWVzKCk7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0gIGVsc2lmICgkdGFnIGVxICJociIpCi0gICAgeyB9Ci0gIGVsc2lmICgkdGFnIGVxICJpZ25vcmUiKQotICAgIHsgIyBIYWNrIGZvciBpZ25vcmVkIGVsZW1lbnRzCi0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0gIGVsc2lmICgkdGFnIGVxICJsaSIpCi0gICAgeyBpZiAoJHN0YXJ0ZmxhZykKLQl7IHByaW50IFRFWEkgIlxuXG5cQGl0ZW1cbiI7Ci0JICBkb19kZWZlcnJlZF9pbmRleF9lbnRyaWVzKCk7IH0gfQotICBlbHNpZiAoJHRhZyBlcSAib2wiKQotICAgIHsgaWYgKCRzdGFydGZsYWcpCi0JeyBwcmludCBURVhJICJcblxAZW51bWVyYXRlIFxAYnVsbGV0XG4iOyB9Ci0gICAgICBlbHNlCi0JeyBwcmludCBURVhJICJcblxAZW5kIGVudW1lcmF0ZVxuIjsgfSB9Ci0gIGVsc2lmICgkdGFnIGVxICJwIikKLSAgICB7IGlmICgkc3RhcnRmbGFnKQotCXsgcHJpbnQgVEVYSSAiXG5cbiI7IH0KLSAgICAgIGlmIChzY2FsYXIoQGluZGV4X2RlZmVycmVycykgIT0gMCkKLQl7ICRoZS0+ZHVtcDsKLQkgIGRpZSAiVW5leHBlY3RlZCA8JHRhZz4gd2hpbGUgaW5zaWRlOiAoIiAuIGpvaW4oIiAiLCBAaW5kZXhfZGVmZXJyZXJzKSAuICIpOyBiYWQgSFRNTD8iOyB9Ci0gICAgICBkb19kZWZlcnJlZF9pbmRleF9lbnRyaWVzKCk7IH0KLSAgZWxzaWYgKCR0YWcgZXEgInByZSIpCi0gICAgeyBwcmludF9wcmUoJGhlKTsKLSAgICAgIHJldHVybiAwOyB9Ci0gIGVsc2lmICgkdGFnIGVxICJ0YWJsZSIpCi0gICAgeyAjIENvdWxkIGFsc28gaW5kaWNhdGUgY29tbW9uIGZvcm1hdHRpbmcgZm9yIGZpcnN0IGNvbHVtbiwgb3IKLSAgICAgICMgZGV0ZXJtaW5lIHJlbGF0aXZlIHdpZHRocyBmb3IgY29sdW1ucyAob3IgZGV0ZXJtaW5lIGEgcHJvdG90eXBlIHJvdykKLSAgICAgIGlmICgkc3RhcnRmbGFnKQotCXsgaWYgKGRlZmluZWQgJHRhYmxlX2NvbHVtbnMpCi0JICAgIHsgJGhlLT5kdW1wOwotCSAgICAgIGRpZSAiQ2FuJ3QgZGVhbCB3aXRoIHRhYmxlIG5lc3RlZCBpbnNpZGUgJHRhYmxlX2NvbHVtbnMtY29sdW1uIHRhYmxlIjsgfQotCSAgJHRhYmxlX2NvbHVtbnMgPSB0YWJsZV9jb2x1bW5zKCRoZSk7Ci0JICBpZiAoJHRhYmxlX2NvbHVtbnMgPCAyKQotCSAgICB7ICRoZS0+ZHVtcDsKLQkgICAgICBkaWUgIkNvbHVtbiB3aXRoICR0YWJsZV9jb2x1bW5zIGNvbHVtbnM/IjsgfQotCSAgZWxzaWYgKCR0YWJsZV9jb2x1bW5zID09IDIpCi0JICAgIHsgcHJpbnQgVEVYSSAiXG5cQHRhYmxlIFxAYXNpc1xuIjsgfQotCSAgZWxzZQotCSAgICB7IHByaW50IFRFWEkgIlxuXEBtdWx0aXRhYmxlIFxAY29sdW1uZnJhY3Rpb25zIjsKLQkgICAgICBmb3IgKG15ICRpPTA7ICRpPCR0YWJsZV9jb2x1bW5zOyAkaSsrKQotCQl7IHByaW50IFRFWEkgIiAiLCAxLjAvJHRhYmxlX2NvbHVtbnM7IH0KLQkgICAgICBwcmludCBURVhJICJcbiI7IH0gfQotICAgICAgZWxzZQotCXsgaWYgKCR0YWJsZV9jb2x1bW5zID09IDIpCi0JICAgIHsgcHJpbnQgVEVYSSAiXG5cQGVuZCB0YWJsZVxuIjsgfQotCSAgZWxzZQotCSAgICB7IHByaW50IFRFWEkgIlxuXEBlbmQgbXVsdGl0YWJsZVxuIjsgfQotCSAgdW5kZWYgJHRhYmxlX2NvbHVtbnM7IH0gfQotICBlbHNpZiAoKCR0YWcgZXEgInRkIikgfHwgKCR0YWcgZXEgInRoIikpCi0gICAgeyBpZiAoJHN0YXJ0ZmxhZykKLQl7IGlmICgkdGFibGVfZmlyc3RfY29sdW1uKQotCSAgICB7IHByaW50IFRFWEkgIlxuXEBpdGVtICI7Ci0JICAgICAgJHRhYmxlX2ZpcnN0X2NvbHVtbiA9IDA7IH0KLQkgIGVsc2lmICgkdGFibGVfY29sdW1ucyA+IDIpCi0JICAgIHsgcHJpbnQgVEVYSSAiXG5cQHRhYiAiOyB9IH0KLSAgICAgIGVsc2UKLQl7IHByaW50IFRFWEkgIlxuIjsgfSB9Ci0gIGVsc2lmICgkdGFnIGVxICJ0ciIpCi0gICAgeyBpZiAoJHN0YXJ0ZmxhZykKLQl7ICR0YWJsZV9maXJzdF9jb2x1bW4gPSAxOyB9IH0KLSAgZWxzaWYgKCR0YWcgZXEgInVsIikKLSAgICB7IGlmICgkc3RhcnRmbGFnKQotCXsgcHJpbnQgVEVYSSAiXG5cQGl0ZW1pemUgXEBidWxsZXRcbiI7IH0KLSAgICAgIGVsc2UKLQl7IHByaW50IFRFWEkgIlxuXEBlbmQgaXRlbWl6ZVxuIjsgfSB9Ci0gIGVsc2UKLSAgICB7ICMgSSB1c2VkIHRvIGhhdmUgYSBuZXdsaW5lIGJlZm9yZSAib3V0cHV0X2JvZHkiIGhlcmUuCi0gICAgICBwcmludCBTVERFUlIgIm91dHB1dF9ib2R5OiBpZ25vcmluZyA8JHRhZz4gdGFnXG4iOwotICAgICAgJGhlLT5kdW1wOwotICAgICAgcmV0dXJuIDA7IH0KLQotICByZXR1cm4gMTsKLX0KLQotc3ViIHByaW50X3ByZSAoICQgKQoteyBteSAoJGhlX3ByZSkgPSBjaGVja19hcmdzKDEsIEBfKTsKLSAgaWYgKCFoYXNfc2luZ2xlX2NvbnRlbnRfc3RyaW5nKCRoZV9wcmUpKQotICAgIHsgZGllICJNdWx0aXBsZSBvciBub24tc3RyaW5nIGNvbnRlbnQgZm9yIDxQUkU+OiAiLCBAeyRoZV9wcmUtPmNvbnRlbnR9OyB9Ci0gIG15ICRwcmVfY29udGVudCA9ICQgeyRoZV9wcmUtPmNvbnRlbnR9WzBdOwotICBwcmludCBURVhJICJcblxAZXhhbXBsZSI7Ci0gIHByaW50IFRFWEkgJnRleGlfcXVvdGUoJHByZV9jb250ZW50KTsKLSAgcHJpbnQgVEVYSSAiXEBlbmQgZXhhbXBsZVxuIjsKLX0KLQotc3ViIHRhYmxlX2NvbHVtbnMgKCAkICkKLXsgbXkgKCR0YWJsZSkgPSBjaGVja19hcmdzKDEsIEBfKTsKLSAgbXkgJHJlc3VsdCA9IDA7Ci0gIGZvciBteSAkcm93IChAeyR0YWJsZS0+Y29udGVudH0pCi0gICAgeyBpZiAoJHJvdy0+dGFnIG5lICJ0ciIpCi0JeyAkdGFibGUtPmR1bXA7Ci0JICAkcm93LT5kdW1wOwotCSAgZGllICJFeHBlY3RlZCA8VFI+IGFzIHRhYmxlIHJvdy4iOyB9Ci0gICAgICAkcmVzdWx0ID0gbWF4KCRyZXN1bHQsIHNjYWxhcihAeyRyb3ctPmNvbnRlbnR9KSk7IH0KLSAgcmV0dXJuICRyZXN1bHQ7Ci19Ci0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgVXRpbGl0aWVzCi0jIyMKLQotc3ViIG1pbiAoICQkICkKLXsgbXkgKCR4LCAkeSkgPSBjaGVja19hcmdzKDIsIEBfKTsKLSAgcmV0dXJuICgkeCA8ICR5KSA/ICR4IDogJHk7Ci19Ci0KLXN1YiBtYXggKCAkJCApCi17IG15ICgkeCwgJHkpID0gY2hlY2tfYXJncygyLCBAXyk7Ci0gIHJldHVybiAoJHggPiAkeSkgPyAkeCA6ICR5OwotfQotCi1zdWIgZmlsZV90b190cmVlICggJCApCi17IG15ICgkZmlsZSkgPSBjaGVja19hcmdzKDEsIEBfKTsKLQotICBteSAkdHJlZSA9IG5ldyBIVE1MOjpUcmVlQnVpbGRlcjsKLSAgJHRyZWUtPmlnbm9yZV91bmtub3duKDEpOwotICAjICR0cmVlLT53YXJuKDEpOwotICAkdHJlZS0+cGFyc2VfZmlsZSgkZmlsZSk7Ci0gIGNsZWFudXBfcGFyc2VfdHJlZSgkdHJlZSk7Ci0gIHJldHVybiAkdHJlZQotfQotCi0KLXN1YiBoYXNfc2luZ2xlX2NvbnRlbnQgKCAkICkKLXsgbXkgKCRoZSkgPSBjaGVja19hcmdzKDEsIEBfKTsKLSAgaWYgKCFyZWYgJGhlKQotICAgIHsgIyByZXR1cm4gMDsKLSAgICAgIGRpZSAiTm9uLXJlZmVyZW5jZSBhcmd1bWVudDogJGhlIjsgfQotICBteSAkcmVmX2NvbnRlbnQgPSAkaGUtPmNvbnRlbnQ7Ci0gIGlmICghZGVmaW5lZCAkcmVmX2NvbnRlbnQpCi0gICAgeyByZXR1cm4gMDsgfQotICBteSBAY29udGVudCA9IEB7JHJlZl9jb250ZW50fTsKLSAgaWYgKHNjYWxhcihAY29udGVudCkgIT0gMSkKLSAgICB7IHJldHVybiAwOyB9Ci0gIHJldHVybiAxOwotfQotCi0KLSMgUmV0dXJuIHRydWUgaWYgdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgY29udGFpbnMgb25seSBvbmUgZWxlbWVudCBpdHNlbGYsCi0jIGFuZCB0aGF0IGlubmVyIGVsZW1lbnQgaGFzIHRoZSBzcGVjaWZpZWQgdGFnLgotc3ViIGhhc19zaW5nbGVfY29udGVudF93aXRoX3RhZyAoICQkICkKLXsgbXkgKCRoZSwgJHRhZykgPSBjaGVja19hcmdzKDIsIEBfKTsKLSAgaWYgKCFoYXNfc2luZ2xlX2NvbnRlbnQoJGhlKSkKLSAgICB7IHJldHVybiAwOyB9Ci0gIG15ICRjb250ZW50ID0gJCB7JGhlLT5jb250ZW50fVswXTsKLSAgaWYgKCFyZWYgJGNvbnRlbnQpCi0gICAgeyByZXR1cm4gMDsgfQotICBteSAkY29udGVudF90YWcgPSAkY29udGVudC0+dGFnOwotICBpZiAoIWRlZmluZWQgJGNvbnRlbnRfdGFnKQotICAgIHsgcmV0dXJuIDA7IH0KLSAgcmV0dXJuICRjb250ZW50X3RhZyBlcSAkdGFnOwotfQotCi1zdWIgaGFzX3NpbmdsZV9jb250ZW50X3N0cmluZyAoICQgKQoteyBteSAoJGhlKSA9IGNoZWNrX2FyZ3MoMSwgQF8pOwotICBpZiAoIWhhc19zaW5nbGVfY29udGVudCgkaGUpKQotICAgIHsgcmV0dXJuIDA7IH0KLSAgbXkgJGNvbnRlbnQgPSAkIHskaGUtPmNvbnRlbnR9WzBdOwotICBpZiAocmVmICRjb250ZW50KQotICAgIHsgcmV0dXJuIDA7IH0KLSAgcmV0dXJuIDE7Ci19Ci0KLQotIyBSZXR1cm4gbmFtZSwgaHJlZiwgY29udGVudC4gIEZpcnN0IHR3byBtYXkgYmUgdW5kZWZpbmVkOyB0aGlyZCBpcyBhbiBhcnJheS4KLSMgSSBkb24ndCBzZWUgaG93IHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgbW9yZSBhdHRyaWJ1dGVzLgotc3ViIGFuY2hvcl9pbmZvICggJCApCi17IG15ICgkaGUpID0gY2hlY2tfYXJncygxLCBAXyk7Ci0gIGlmICgkaGUtPnRhZyBuZSAiYSIpCi0gICAgeyAkaGUtPmR1bXA7Ci0gICAgICBkaWUgInBhc3NlZCBub24tYW5jaG9yIHRvIGFuY2hvcl9pbmZvIjsgfQotICBteSAkbmFtZSA9ICRoZS0+YXR0cignbmFtZScpOwotICBteSAkaHJlZiA9ICRoZS0+YXR0cignaHJlZicpOwotICBteSBAY29udGVudCA9ICgpOwotICB7IG15ICRyZWZfY29udGVudCA9ICRoZS0+Y29udGVudDsKLSAgICBpZiAoZGVmaW5lZCAkcmVmX2NvbnRlbnQpCi0gICAgICB7IEBjb250ZW50ID0gQHskcmVmX2NvbnRlbnR9OyB9IH0KLSAgcmV0dXJuICgkbmFtZSwgJGhyZWYsIEBjb250ZW50KTsKLX0KLQotCi1zdWIgdGV4aV9xdW90ZSAoICQgKQoteyBteSAoJHRleHQpID0gY2hlY2tfYXJncygxLCBAXyk7Ci0gICR0ZXh0ID1+IHMvKFtcQFx7XH1dKS9cQCQxL2c7Ci0gICR0ZXh0ID1+IHMvIC0tIC8gLS0tIC9nOwotICByZXR1cm4gJHRleHQ7Ci19Ci0KLSMgRWxpbWluYXRlIGJhZCBwdW5jdHVhdGlvbiAodGhhdCBjb25mdXNlcyBNYWtlaW5mbyBvciBJbmZvKSBmb3Igc2VjdGlvbiB0aXRsZXMuCi1zdWIgdGV4aV9yZW1vdmVfcHVuY3R1YXRpb24gKCAkICkKLXsgbXkgKCR0ZXh0KSA9IGNoZWNrX2FyZ3MoMSwgQF8pOwotCi0gICR0ZXh0ID1+IHMvXiArLy9nOwotICAkdGV4dCA9fiBzL1sgOl0rJC8vZzsKLSAgJHRleHQgPX4gcy9eWzEtOV1bMC05Ll0qICsvL2c7Ci0gICR0ZXh0ID1+IHMvLC8vZzsKLSAgIyBCb3RoIGVtYmVkZGVkIGNvbG9ucyBhbmQgIiAtLSAiIGNvbmZ1c2UgbWFrZWluZm8uICAoUGVyaGFwcyAiIC0tICIKLSAgIyBnZXRzIGNvbnZlcnRlZCBpbnRvICIgLSAiLCBqdXN0IGFzICItLS0iIHdvdWxkIGJlIGNvbnZlcnRlZCBpbnRvICIgLS0gIiwKLSAgIyBzbyB0aGUgbmFtZXMgZW5kIHVwIGRpZmZlcmluZy4pCi0gICMgJHRleHQgPX4gcy86LyAtLSAvZzsKLSAgJHRleHQgPX4gcy86Ly9nOwotICByZXR1cm4gJHRleHQ7Ci19Ci0KLQotIyMgRG8gbm90IHVzZSB0aGlzIGluc2lkZSBgdHJhdmVyc2UnOiAgaXQgdGhyb3dzIG9mZiB0aGUgdHJhdmVyc2FsLiAgVXNlCi0jIyBodG1sX3JlcGxhY2VfYnlfaWdub3JlIG9yIGh0bWxfcmVwbGFjZV9ieV9tZXRhIGluc3RlYWQuCi0jIFJldHVybnMgMSBpZiBzdWNjZXNzLCAwIGlmIGZhaWx1cmUuCi1zdWIgaHRtbF9yZW1vdmUgKCAkOyQgKQoteyBteSAoJGhlLCAkcGFyZW50KSA9IGNoZWNrX2FyZ3NfcmFuZ2UoMSwgMiwgQF8pOwotICBpZiAoIWRlZmluZWQgJHBhcmVudCkKLSAgICB7ICRwYXJlbnQgPSAkaGUtPnBhcmVudDsgfQotICBteSAkcmVmX3Bjb250ZW50ID0gJHBhcmVudC0+Y29udGVudDsKLSAgbXkgQHBjb250ZW50ID0gQHskcmVmX3Bjb250ZW50fTsKLSAgZm9yIChteSAkaT0wOyAkaTxzY2FsYXIoQHBjb250ZW50KTsgJGkrKykKLSAgICB7IGlmICgkcGNvbnRlbnRbJGldIGVxICRoZSkKLQl7IHNwbGljZSBAeyRyZWZfcGNvbnRlbnR9LCAkaSwgMTsKLQkgICRoZS0+cGFyZW50KHVuZGVmKTsKLQkgIHJldHVybiAxOyB9IH0KLSAgZGllICJEaWRuJ3QgZmluZCAkaGUgaW4gJHBhcmVudCI7Ci19Ci0KLQotc3ViIGh0bWxfcmVwbGFjZSAoICQkOyQgKQoteyBteSAoJG9yaWcsICRuZXcsICRwYXJlbnQpID0gY2hlY2tfYXJnc19yYW5nZSgyLCAzLCBAXyk7Ci0gIGlmICghZGVmaW5lZCAkcGFyZW50KQotICAgIHsgJHBhcmVudCA9ICRvcmlnLT5wYXJlbnQ7IH0KLSAgbXkgJHJlZl9wY29udGVudCA9ICRwYXJlbnQtPmNvbnRlbnQ7Ci0gIG15IEBwY29udGVudCA9IEB7JHJlZl9wY29udGVudH07Ci0gIGZvciAobXkgJGk9MDsgJGk8c2NhbGFyKEBwY29udGVudCk7ICRpKyspCi0gICAgeyBpZiAoJHBjb250ZW50WyRpXSBlcSAkb3JpZykKLQl7ICQgeyRyZWZfcGNvbnRlbnR9WyRpXSA9ICRuZXc7Ci0JICAkbmV3LT5wYXJlbnQoJHBhcmVudCk7Ci0JICAkb3JpZy0+cGFyZW50KHVuZGVmKTsKLQkgIHJldHVybiAxOyB9IH0KLSAgZGllICJEaWRuJ3QgZmluZCAkb3JpZyBpbiAkcGFyZW50IjsKLX0KLQotc3ViIGh0bWxfcmVwbGFjZV9ieV9tZXRhICggJDskICkKLXsgbXkgKCRvcmlnLCAkcGFyZW50KSA9IGNoZWNrX2FyZ3NfcmFuZ2UoMSwgMiwgQF8pOwotICBteSAkbWV0YSA9IG5ldyBIVE1MOjpFbGVtZW50ICJtZXRhIjsKLSAgaWYgKCFkZWZpbmVkICRwYXJlbnQpCi0gICAgeyAkcGFyZW50ID0gJG9yaWctPnBhcmVudDsgfQotICByZXR1cm4gaHRtbF9yZXBsYWNlKCRvcmlnLCAkbWV0YSwgJHBhcmVudCk7Ci19Ci0KLXN1YiBodG1sX3JlcGxhY2VfYnlfaWdub3JlICggJDskICkKLXsgbXkgKCRvcmlnLCAkcGFyZW50KSA9IGNoZWNrX2FyZ3NfcmFuZ2UoMSwgMiwgQF8pOwotICBteSAkaWdub3JlID0gbmV3IEhUTUw6OkVsZW1lbnQgImlnbm9yZSI7Ci0gIGlmICghZGVmaW5lZCAkcGFyZW50KQotICAgIHsgJHBhcmVudCA9ICRvcmlnLT5wYXJlbnQ7IH0KLSAgcmV0dXJuIGh0bWxfcmVwbGFjZSgkb3JpZywgJGlnbm9yZSwgJHBhcmVudCk7Ci19Ci0KLQotCi0jIyMKLSMjIyBDb2xsZWN0IHRleHQgZWxlbWVudHMKLSMjIwotCi1teSBAY29sbGVjdGVkX3RleHRzOwotbXkgJGNvbGxlY3RfdGV4dHNfc3RvcHBvaW50OwotbXkgJGRvbmVfY29sbGVjdGluZzsKLQotc3ViIGNvbGxlY3RfdGV4dHMgKCAkOyQgKQoteyBteSAoJHJvb3QsICRzdG9wKSA9IGNoZWNrX2FyZ3NfcmFuZ2UoMSwgMiwgQF8pOwotICAjIHByaW50IFNUREVSUiAiY29sbGVjdF90ZXh0czogJHJvb3QgJHN0b3BcbiI7Ci0gICRjb2xsZWN0X3RleHRzX3N0b3Bwb2ludCA9ICRzdG9wOwotICAkZG9uZV9jb2xsZWN0aW5nID0gMDsKLSAgQGNvbGxlY3RlZF90ZXh0cyA9ICgpOwotICAkcm9vdC0+dHJhdmVyc2UoXCZjb2xsZWN0X2lmX3RleHQpOyAjIHByb2Nlc3MgdGV4dHMKLSAgIyBwcmludCBTVERFUlIgImNvbGxlY3RfdGV4dHMgPT4gIiwgam9pbigiOzs7IiwgQGNvbGxlY3RlZF90ZXh0cyksICJcbiI7Ci0gIHJldHVybiBAY29sbGVjdGVkX3RleHRzOwotfQotCi1zdWIgY29sbGVjdF9pZl90ZXh0ICggJCQkICkKLXsgbXkgJGhlID0gKGNoZWNrX2FyZ3MoMywgQF8pKVswXTsgIyAgaWdub3JlIGRlcHRoIGFuZCBzdGFydGZsYWcgYXJndW1lbnRzCi0gIGlmICgkZG9uZV9jb2xsZWN0aW5nKQotICAgIHsgcmV0dXJuIDA7IH0KLSAgaWYgKCFkZWZpbmVkICRoZSkKLSAgICB7IHJldHVybiAwOyB9Ci0gIGlmICghcmVmICRoZSkKLSAgICB7IHB1c2ggQGNvbGxlY3RlZF90ZXh0cywgJGhlOwotICAgICAgcmV0dXJuIDA7IH0KLSAgaWYgKChkZWZpbmVkICRjb2xsZWN0X3RleHRzX3N0b3Bwb2ludCkgJiYgKCRoZSBlcSAkY29sbGVjdF90ZXh0c19zdG9wcG9pbnQpKQotICAgIHsgJGRvbmVfY29sbGVjdGluZyA9IDE7Ci0gICAgICByZXR1cm4gMDsgfQotICByZXR1cm4gMTsKLX0KLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBDbGVhbiB1cCBwYXJzZSB0cmVlCi0jIyMKLQotc3ViIGNsZWFudXBfcGFyc2VfdHJlZSAoICQgKQoteyBteSAoJGhlKSA9IGNoZWNrX2FyZ3MoMSwgQF8pOwotICAkaGUtPnRyYXZlcnNlKFwmZGVsZXRlX2lmX25hdmlnYXRpb24sICdpZ25vcmUgdGV4dCcpOwotICAkaGUtPnRyYXZlcnNlKFwmZGVsZXRlX2V4dHJhX3NwYWNlcywgJ2lnbm9yZSB0ZXh0Jyk7Ci0gICRoZS0+dHJhdmVyc2UoXCZtZXJnZV9kbCwgJ2lnbm9yZSB0ZXh0Jyk7Ci0gICRoZS0+dHJhdmVyc2UoXCZyZW9yZGVyX2R0X2FuZF9kbCwgJ2lnbm9yZSB0ZXh0Jyk7Ci0gIHJldHVybiAkaGU7Ci19Ci0KLQotIyMgU2ltcGxlciB2ZXJzaW9uIHRoYXQgZGVsZXRlcyBjb250ZW50cyBidXQgbm90IHRoZSBlbGVtZW50IGl0c2VsZi4KLSMgc3ViIGRlbGV0ZV9pZl9uYXZpZ2F0aW9uICggJCQkICkKLSMgeyBteSAkaGUgPSAoY2hlY2tfYXJncygzLCBAXykpWzBdOyAjIGlnbm9yZSBzdGFydGZsYWcgYW5kIGRlcHRoCi0jICAgaWYgKCgkaGUtPnRhZygpIGVxICJkaXYiKSAmJiAoJGhlLT5hdHRyKCdjbGFzcycpIGVxICduYXZpZ2F0aW9uJykpCi0jICAgICB7ICRoZS0+ZGVsZXRlKCk7Ci0jICAgICAgIHJldHVybiAwOyB9Ci0jICAgZWxzZQotIyAgICAgeyByZXR1cm4gMTsgfQotIyB9Ci0KLXN1YiBkZWxldGVfaWZfbmF2aWdhdGlvbiAoICQkJCApCi17IG15ICgkaGUsICRzdGFydGZsYWcpID0gKGNoZWNrX2FyZ3MoMywgQF8pKVswLDFdOyAjICBpZ25vcmUgZGVwdGggYXJndW1lbnQKLSAgaWYgKCEkc3RhcnRmbGFnKQotICAgIHsgcmV0dXJuOyB9Ci0KLSAgaWYgKCgkaGUtPnRhZygpIGVxICJkaXYiKSAmJiAoZGVmaW5lZCAkaGUtPmF0dHIoJ2NsYXNzJykpICYmICgkaGUtPmF0dHIoJ2NsYXNzJykgZXEgJ25hdmlnYXRpb24nKSkKLSAgICB7IG15ICRyZWZfcGNvbnRlbnQgPSAkaGUtPnBhcmVudCgpLT5jb250ZW50KCk7Ci0gICAgICAjIERvbid0IHRyeSB0byBtb2RpZnkgQHBjb250ZW50LCB3aGljaCBhcHBlYXJzIHRvIGJlIGEgQ09QWS4KLSAgICAgICMgbXkgQHBjb250ZW50ID0gQHskcmVmX3Bjb250ZW50fTsKLSAgICAgIGZvciAobXkgJGkgPSAwOyAkaTxzY2FsYXIoQHskcmVmX3Bjb250ZW50fSk7ICRpKyspCi0JeyBpZiAoJHskcmVmX3Bjb250ZW50fVskaV0gZXEgJGhlKQotCSAgICB7IHNwbGljZShAeyRyZWZfcGNvbnRlbnR9LCAkaSwgMSk7Ci0JICAgICAgbGFzdDsgfSB9Ci0gICAgICAkaGUtPmRlbGV0ZSgpOwotICAgICAgcmV0dXJuIDA7IH0KLSAgZWxzZQotICAgIHsgcmV0dXJuIDE7IH0KLX0KLQotc3ViIGRlbGV0ZV9leHRyYV9zcGFjZXMgKCAkJCQgKQoteyBteSAoJGhlLCAkc3RhcnRmbGFnKSA9IChjaGVja19hcmdzKDMsIEBfKSlbMCwxXTsgIyAgaWdub3JlIGRlcHRoIGFyZ3VtZW50Ci0gIGlmICghJHN0YXJ0ZmxhZykKLSAgICB7IHJldHVybjsgfQotCi0gIG15ICR0YWcgPSAkaGUtPnRhZzsKLSAgaWYgKCR0YWcgPX4gL14oaGVhZHxodG1sfHRhYmxlfHRyfHVsKSQvKQotICAgIHsgZGVsZXRlX2NoaWxkX3NwYWNlcygkaGUpOyB9Ci0gIGRlbGV0ZV90cmFpbGluZ19zcGFjZXMoJGhlKTsKLSAgcmV0dXJuIDE7Ci19Ci0KLQotc3ViIGRlbGV0ZV9jaGlsZF9zcGFjZXMgKCAkICkKLXsgbXkgKCRoZSkgPSBjaGVja19hcmdzKDEsIEBfKTsKLSAgbXkgJHJlZl9jb250ZW50ID0gJGhlLT5jb250ZW50KCk7Ci0gIGZvciAobXkgJGkgPSAwOyAkaTxzY2FsYXIoQHskcmVmX2NvbnRlbnR9KTsgJGkrKykKLSAgICB7IGlmICgkIHskcmVmX2NvbnRlbnR9WyRpXSA9fiAvXiAqJC8pCi0JeyBzcGxpY2UoQHskcmVmX2NvbnRlbnR9LCAkaSwgMSk7Ci0JICAkaS0tOyB9IH0KLX0KLQotc3ViIGRlbGV0ZV90cmFpbGluZ19zcGFjZXMgKCAkICkKLXsgbXkgKCRoZSkgPSBjaGVja19hcmdzKDEsIEBfKTsKLSAgbXkgJHJlZl9jb250ZW50ID0gJGhlLT5jb250ZW50KCk7Ci0gIGlmICghIGRlZmluZWQgJHJlZl9jb250ZW50KQotICAgIHsgcmV0dXJuOyB9Ci0gICMgQ291bGQgYWxzbyBjaGVjayBmb3IgcHJldmlvdXMgZWxlbWVudCA9IC9eaFsxLTZdJC8uCi0gIGZvciAobXkgJGkgPSAwOyAkaTxzY2FsYXIoQHskcmVmX2NvbnRlbnR9KS0xOyAkaSsrKQotICAgIHsgaWYgKCQgeyRyZWZfY29udGVudH1bJGldID1+IC9eICokLykKLQl7IG15ICRuZXh0X2VsdCA9ICQgeyRyZWZfY29udGVudH1bJGkrMV07Ci0JICBpZiAoKHJlZiAkbmV4dF9lbHQpICYmICgkbmV4dF9lbHQtPnRhZyA9fiAvXihicnxkZHxkbHxkdHxocnxwfHVsKSQvKSkKLQkgICAgeyBzcGxpY2UoQHskcmVmX2NvbnRlbnR9LCAkaSwgMSk7Ci0JICAgICAgJGktLTsgfSB9IH0KLSAgaWYgKCRoZS0+dGFnID1+IC9eKGRkfGR0fF5oWzEtNl18bGl8cCkkLykKLSAgICB7IG15ICRsYXN0X2VsdCA9ICQgeyRyZWZfY29udGVudH1bJCN7JHJlZl9jb250ZW50fV07Ci0gICAgICBpZiAoKGRlZmluZWQgJGxhc3RfZWx0KSAmJiAoJGxhc3RfZWx0ID1+IC9eICokLykpCi0JeyBwb3AgQHskcmVmX2NvbnRlbnR9OyB9IH0KLX0KLQotCi0jIExhVGVYMkhUTUwgc29tZXRpbWVzIGNyZWF0ZXMKLSMgICA8RFQ+dGV4dAotIyAgIDxETCBDT01QQUNUPjxERD50ZXh0Ci0jIHdoaWNoIHNob3VsZCBhY3R1YWxseSBiZToKLSMgICA8REwgQ09NUEFDVD4KLSMgICA8RFQ+dGV4dAotIyAgIDxERD50ZXh0Ci0jIFNpbmNlIGEgPERMPiBnZXRzIGFkZGVkLCB0aGlzIGVuZHMgdXAgbG9va2luZyBsaWtlCi0jIDxQPgotIyAgIDxETD4KLSMgICAgIDxEVD4KLSMgICAgICAgdGV4dDEuLi4KLSMgICAgICAgPERMIENPTVBBQ1Q+Ci0jICAgICAgICAgPEREPgotIyAgICAgICAgICAgdGV4dDIuLi4KLSMgICAgICAgICBkdF9vcl9kZDEuLi4KLSMgICAgIGR0X29yX2RkMi4uLgotIyB3aGljaCBzaG91bGQgYmVjb21lCi0jIDxQPgotIyAgIDxETCBDT01QQUNUPgotIyAgICAgPERUPgotIyAgICAgICB0ZXh0MS4uLgotIyAgICAgPEREPgotIyAgICAgICB0ZXh0Mi4uLgotIyAgICAgZHRfb3JfZGQxLi4uCi0jICAgICBkdF9vcl9kZDIuLi4KLQotc3ViIHJlb3JkZXJfZHRfYW5kX2RsICggJCQkICkKLXsgbXkgKCRoZSwgJHN0YXJ0ZmxhZykgPSAoY2hlY2tfYXJncygzLCBAXykpWzAsMV07ICMgIGlnbm9yZSBkZXB0aCBhcmd1bWVudAotICBpZiAoISRzdGFydGZsYWcpCi0gICAgeyByZXR1cm47IH0KLQotICBpZiAoJGhlLT50YWcoKSBlcSAicCIpCi0gICAgeyBteSAkcmVmX3Bjb250ZW50ID0gJGhlLT5jb250ZW50KCk7Ci0gICAgICBpZiAoZGVmaW5lZCAkcmVmX3Bjb250ZW50KQotCXsgbXkgQHBjb250ZW50ID0gQHskcmVmX3Bjb250ZW50fTsKLQkgICMgcHJpbnQgInJlb3JkZXJfZHRfYW5kX2RsIGZvdW5kIGEgPHA+XG4iOyAkaGUtPmR1bXAoKTsKLQkgIGlmICgoc2NhbGFyKEBwY29udGVudCkgPj0gMSkKLQkgICAgICAmJiAocmVmICRwY29udGVudFswXSkgJiYgKCRwY29udGVudFswXS0+dGFnKCkgZXEgImRsIikKLQkgICAgICAmJiAkcGNvbnRlbnRbMF0tPmltcGxpY2l0KCkpCi0JICAgIHsgbXkgJHJlZl9kbGNvbnRlbnQgPSAkcGNvbnRlbnRbMF0tPmNvbnRlbnQoKTsKLQkgICAgICAjIHByaW50ICJyZW9yZGVyX2R0X2FuZF9kbCBmb3VuZCBhIDxwPiBhbmQgaW1wbGljaXQgPGRsPlxuIjsKLQkgICAgICBpZiAoZGVmaW5lZCAkcmVmX2RsY29udGVudCkKLQkJeyBteSBAZGxjb250ZW50ID0gQHskcmVmX2RsY29udGVudH07Ci0JCSAgaWYgKChzY2FsYXIoQGRsY29udGVudCkgPj0gMSkKLQkJICAgICAgJiYgKHJlZiAkZGxjb250ZW50WzBdKSAmJiAoJGRsY29udGVudFswXS0+dGFnKCkgZXEgImR0IikpCi0JCSAgICB7IG15ICRyZWZfZHRjb250ZW50ID0gJGRsY29udGVudFswXS0+Y29udGVudCgpOwotCQkgICAgICAjIHByaW50ICJyZW9yZGVyX2R0X2FuZF9kbCBmb3VuZCBhIDxwPiwgaW1wbGljaXQgPGRsPiwgYW5kIDxkdD5cbiI7Ci0JCSAgICAgIGlmIChkZWZpbmVkICRyZWZfZHRjb250ZW50KQotCQkJeyBteSBAZHRjb250ZW50ID0gQHskcmVmX2R0Y29udGVudH07Ci0JCQkgIGlmICgoc2NhbGFyKEBkdGNvbnRlbnQpID4gMCkKLQkJCSAgICAgICYmIChyZWYgJGR0Y29udGVudFskI2R0Y29udGVudF0pCi0JCQkgICAgICAmJiAoJGR0Y29udGVudFskI2R0Y29udGVudF0tPnRhZygpIGVxICJkbCIpKQotCQkJICAgIHsgbXkgJHJlZl9kbDJjb250ZW50ID0gJGR0Y29udGVudFskI2R0Y29udGVudF0tPmNvbnRlbnQoKTsKLQkJCSAgICAgICMgcHJpbnQgInJlb3JkZXJfZHRfYW5kX2RsIGZvdW5kIGEgPHA+LCBpbXBsaWNpdCA8ZGw+LCA8ZHQ+LCBhbmQgPGRsPlxuIjsKLQkJCSAgICAgIGlmIChkZWZpbmVkICRyZWZfZGwyY29udGVudCkKLQkJCQl7IG15IEBkbDJjb250ZW50ID0gQHskcmVmX2RsMmNvbnRlbnR9OwotCQkJCSAgaWYgKChzY2FsYXIoQGRsMmNvbnRlbnQpID4gMCkKLQkJCQkgICAgICAmJiAocmVmICgkZGwyY29udGVudFswXSkpCi0JCQkJICAgICAgJiYgKCRkbDJjb250ZW50WzBdLT50YWcoKSBlcSAiZGQiKSkKLQkJCSAgICB7Ci0JCQkgICAgICAjIHByaW50ICJyZW9yZGVyX2R0X2FuZF9kbCBmb3VuZCBhIDxwPiwgaW1wbGljaXQgPGRsPiwgPGR0PiwgPGRsPiwgYW5kIDxkZD5cbiI7Ci0JCQkgICAgICAjIHByaW50IFNUREVSUiAiQ0hBTkdJTkdcbiI7ICRoZS0+ZHVtcCgpOwotCQkJICAgICAgaHRtbF9yZXBsYWNlX2J5X2lnbm9yZSgkZHRjb250ZW50WyQjZHRjb250ZW50XSk7Ci0JCQkgICAgICBzcGxpY2UoQHskcmVmX2RsY29udGVudH0sIDEsIDAsIEBkbDJjb250ZW50KTsKLQkJCSAgICAgICMgcHJpbnQgU1RERVJSICJDSEFOR0VEIFRPOlxuIjsgJGhlLT5kdW1wKCk7Ci0JCQkgICAgICByZXR1cm4gMDsgIyBkb24ndCB0cmF2ZXJzZSBjaGlsZHJlbgotCQkJICAgIH0gfSB9IH0gfSB9IH0gfSB9Ci0gIHJldHVybiAxOwotfQotCi0KLSMgSWYgd2UgZmluZCBhIHBhcmFncmFwaCB0aGF0IGxvb2tzIGxpa2UKLSMgPFA+Ci0jICAgPEhSPgotIyAgIDxVTD4KLSMgdGhlbiBhY2N1bXVsYXRlIGl0cyBsaW5rcyBpbnRvIGEgY29udGVudHNfbGlzdCBhbmQgZGVsZXRlIHRoZSBwYXJhZ3JhcGguCi1zdWIgcHJvY2Vzc19pZl9jaGlsZF9saW5rcyAoICQkJCApCi17IG15ICgkaGUsICRzdGFydGZsYWcpID0gKGNoZWNrX2FyZ3MoMywgQF8pKVswLDFdOyAjICBpZ25vcmUgZGVwdGggYXJndW1lbnQKLSAgaWYgKCEkc3RhcnRmbGFnKQotICAgIHsgcmV0dXJuOyB9Ci0KLSAgaWYgKCRoZS0+dGFnKCkgZXEgInAiKQotICAgIHsgbXkgJHJlZl9jb250ZW50ID0gJGhlLT5jb250ZW50KCk7Ci0gICAgICBpZiAoZGVmaW5lZCAkcmVmX2NvbnRlbnQpCi0JeyBteSBAY29udGVudCA9IEB7JHJlZl9jb250ZW50fTsKLQkgIGlmICgoc2NhbGFyKEBjb250ZW50KSA9PSAyKQotCSAgICAgICYmIChyZWYgJGNvbnRlbnRbMF0pICYmICRjb250ZW50WzBdLT50YWcoKSBlcSAiaHIiCi0JICAgICAgJiYgKHJlZiAkY29udGVudFsxXSkgJiYgJGNvbnRlbnRbMV0tPnRhZygpIGVxICJ1bCIpCi0JICAgIHsgcHJvY2Vzc19jaGlsZF9saW5rcygkaGUpOwotCSAgICAgICRoZS0+ZGVsZXRlKCk7Ci0JICAgICAgcmV0dXJuIDA7IH0gfSB9Ci0gIHJldHVybiAxOwotfQotCi0KLSMgSWYgd2UgZmluZAotIyAgICAgPEg0PgotIyAgICAgICAiRm9vdG5vdGVzIgotIyAgICAgPERMPgotIyAgICAgICA8RFQ+Ci0jICAgICAgICAgPEEgTkFNRT0iZm9vdDU2MCI+Ci0jICAgICAgICAgICAiLi4uYm9ycm93IgotIyAgICAgICAgIDxBIEhSRUY9InJlZmNvdW50c0luUHl0aG9uLmh0bWwjdGV4Mmh0bWwyIiBOQU1FPSJmb290NTYwIj4KLSMgICAgICAgICAgICIxLjIiCi0jICAgICAgIDxERD4KLSMgICAgICAgICAiVGhlIG1ldGFwaG9yIG9mIGBgYm9ycm93aW5nJycgYSByZWZlcmVuY2UgaXMgbm90IGNvbXBsZXRlbHkgY29ycmVjdDogdGhlIG93bmVyIHN0aWxsIGhhcyBhIGNvcHkgb2YgdGhlIHJlZmVyZW5jZS4gIgotIyAgICAgICAuLi4KLSMgdGhlbiByZWNvcmQgdGhlIGZvb3Rub3RlIGluZm9ybWF0aW9uIGFuZCBkZWxldGUgdGhlIHNlY3Rpb24gYW5kIGxpc3QuCi0KLW15ICRwcm9jZXNzX2lmX2Zvb3Rub3Rlc19leHBlY3RfZGxfbmV4dCA9IDA7Ci0KLXN1YiBwcm9jZXNzX2lmX2Zvb3Rub3RlcyAoICQkJCApCi17IG15ICgkaGUsICRzdGFydGZsYWcpID0gKGNoZWNrX2FyZ3MoMywgQF8pKVswLDFdOyAjICBpZ25vcmUgZGVwdGggYXJndW1lbnQKLSAgaWYgKCEkc3RhcnRmbGFnKQotICAgIHsgcmV0dXJuOyB9Ci0KLSAgaWYgKCgkaGUtPnRhZygpIGVxICJoNCIpCi0gICAgICAmJiBoYXNfc2luZ2xlX2NvbnRlbnRfc3RyaW5nKCRoZSkKLSAgICAgICYmICgkIHskaGUtPmNvbnRlbnR9WzBdIGVxICJGb290bm90ZXMiKSkKLSAgICB7IGh0bWxfcmVwbGFjZV9ieV9pZ25vcmUoJGhlKTsKLSAgICAgICRwcm9jZXNzX2lmX2Zvb3Rub3Rlc19leHBlY3RfZGxfbmV4dCA9IDE7Ci0gICAgICByZXR1cm4gMDsgfQotCi0gIGlmICgkcHJvY2Vzc19pZl9mb290bm90ZXNfZXhwZWN0X2RsX25leHQgJiYgKCRoZS0+dGFnKCkgZXEgImRsIikpCi0gICAgeyBteSAkcmVmX2NvbnRlbnQgPSAkaGUtPmNvbnRlbnQoKTsKLSAgICAgIGlmIChkZWZpbmVkICRyZWZfY29udGVudCkKLQl7ICRwcm9jZXNzX2lmX2Zvb3Rub3Rlc19leHBlY3RfZGxfbmV4dCA9IDA7Ci0JICBteSBAY29udGVudCA9IEB7JHJlZl9jb250ZW50fTsKLQkgIGZvciAobXkgJGk9MDsgJGk8JCNjb250ZW50OyAkaSs9MikKLQkgICAgeyBteSAkaGVfZHQgPSAkY29udGVudFskaV07Ci0JICAgICAgbXkgJGhlX2RkID0gJGNvbnRlbnRbJGkrMV07Ci0JICAgICAgaWYgKCgkaGVfZHQtPnRhZyBuZSAiZHQiKSB8fCAoJGhlX2RkLT50YWcgbmUgImRkIikpCi0JCXsgJGhlLT5kdW1wOwotCQkgIGRpZSAiZXhwZWN0ZWQgPERUPiBhbmQgPEREPiBhdCBwb3NpdGlvbnMgJGkgYW5kICIsICRpKzE7IH0KLQkgICAgICBteSBAZHRfY29udGVudCA9IEB7JGhlX2R0LT5jb250ZW50KCl9OwotCSAgICAgIGlmICgoc2NhbGFyKEBkdF9jb250ZW50KSAhPSAyKQotCQkgIHx8ICgkZHRfY29udGVudFswXS0+dGFnIG5lICJhIikKLQkJICB8fCAoJGR0X2NvbnRlbnRbMV0tPnRhZyBuZSAiYSIpKQotCQl7ICRoZV9kdC0+ZHVtcDsKLQkJICBkaWUgIkV4cGVjdGVkIDIgYW5jaG9ycyBhcyBjb250ZW50IG9mIDxEVD4iOyB9Ci0JICAgICAgbXkgKCRkdDFfbmFtZSwgJGR0MV9ocmVmLCAkZHQxX2NvbnRlbnQpID0gYW5jaG9yX2luZm8oJGR0X2NvbnRlbnRbMF0pOwotCSAgICAgIG15ICgkZHQyX25hbWUsICRkdDJfaHJlZiwgJGR0Ml9jb250ZW50KSA9IGFuY2hvcl9pbmZvKCRkdF9jb250ZW50WzBdKTsKLQkgICAgICAjIHVudXNlZDogJGR0MV9ocmVmLCAkZHQxX2NvbnRlbnQsICRkdDJfaHJlZiwgJGR0Ml9jb250ZW50Ci0JICAgICAgaWYgKCRkdDFfbmFtZSBuZSAkZHQyX25hbWUpCi0JCXsgJGhlX2R0LT5kdW1wOwotCQkgIGRpZSAiRXhwZWN0ZWQgaWRlbnRpY2FsIG5hbWVzIGZvciBhbmNob3JzIjsgfQotCSAgICAgIGh0bWxfcmVwbGFjZV9ieV9pZ25vcmUoJGhlX2RkKTsKLQkgICAgICAkaGVfZGQtPnRhZygiZGl2Iik7ICMgaGFzIG5vIGVmZmVjdAotCSAgICAgICRmb290bm90ZXN7JGR0MV9uYW1lfSA9ICRoZV9kZDsgfQotCSAgaHRtbF9yZXBsYWNlX2J5X2lnbm9yZSgkaGUpOwotCSAgcmV0dXJuIDA7IH0gfQotCi0gIGlmICgkcHJvY2Vzc19pZl9mb290bm90ZXNfZXhwZWN0X2RsX25leHQpCi0gICAgeyAkaGUtPmR1bXA7Ci0gICAgICBkaWUgIkV4cGVjdGVkIDxETD4gZm9yIGZvb3Rub3RlcyBuZXh0IjsgfQotCi0gIHJldHVybiAxOwotfQotCi0KLQotIyMgTWVyZ2UgdHdvIGFkamFjZW50IHBhcmFncmFwaHMgY29udGFpbmluZyA8REw+IGl0ZW1zLCBzdWNoIGFzOgotIyAgICAgPFA+Ci0jICAgICAgIDxETD4KLSMgICAgICAgICA8RFQ+Ci0jICAgICAgICAgICAuLi4KLSMgICAgICAgICA8REQ+Ci0jICAgICAgICAgICAuLi4KLSMgICAgIDxQPgotIyAgICAgICA8REw+Ci0jICAgICAgICAgPERUPgotIyAgICAgICAgICAgLi4uCi0jICAgICAgICAgPEREPgotIyAgICAgICAgICAgLi4uCi0KLXN1YiBtZXJnZV9kbCAoICQkJCApCi17IG15ICgkaGUsICRzdGFydGZsYWcpID0gKGNoZWNrX2FyZ3MoMywgQF8pKVswLDFdOyAjICBpZ25vcmUgZGVwdGggYXJndW1lbnQKLSAgaWYgKCEkc3RhcnRmbGFnKQotICAgIHsgcmV0dXJuOyB9Ci0KLSAgbXkgJHJlZl9jb250ZW50ID0gJGhlLT5jb250ZW50OwotICBpZiAoIWRlZmluZWQgJHJlZl9jb250ZW50KQotICAgIHsgcmV0dXJuOyB9Ci0gIG15ICRpID0gMDsKLSAgd2hpbGUgKCRpIDwgc2NhbGFyKEB7JHJlZl9jb250ZW50fSktMSkKLSAgICB7IG15ICRwMSA9ICQgeyRyZWZfY29udGVudH1bJGldOwotICAgICAgaWYgKChyZWYgJHAxKSAmJiAoJHAxLT50YWcgZXEgInAiKQotCSAgJiYgaGFzX3NpbmdsZV9jb250ZW50X3dpdGhfdGFnKCRwMSwgImRsIikpCi0JeyBteSAkZGwxID0gJCB7JHAxLT5jb250ZW50fVswXTsKLQkgICMgSW4gdGhpcyBsb29wLCByaHMsIG5vdCBsaHMsIG9mIDwgY29tcGFyaXNvbiBjaGFuZ2VzLAotCSAgIyBiZWNhdXNlIHdlIGFyZSByZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBjb250ZW50IG9mICRoZS4KLQkgIHdoaWxlICgkaSA8IHNjYWxhcihAeyRyZWZfY29udGVudH0pLTEpCi0JICAgIHsgbXkgJHAyID0gJCB7JHJlZl9jb250ZW50fVskaSsxXTsKLQkgICAgICBpZiAoISgocmVmICRwMikgJiYgKCRwMi0+dGFnIGVxICJwIikKLQkJICAgICYmIGhhc19zaW5nbGVfY29udGVudF93aXRoX3RhZygkcDIsICJkbCIpKSkKLQkJeyBsYXN0OyB9Ci0JICAgICAgIyBNZXJnZSB0aGVzZSB0d28gZWxlbWVudHMuCi0JICAgICAgc3BsaWNlKEB7JHJlZl9jb250ZW50fSwgJGkrMSwgMSk7ICMgcmVtb3ZlICRwMgotCSAgICAgIG15ICRkbDIgPSAkIHskcDItPmNvbnRlbnR9WzBdOwotCSAgICAgICRkbDEtPnB1c2hfY29udGVudChAeyRkbDItPmNvbnRlbnR9KTsgIyBwdXQgJGRsMidzIGNvbnRlbnQgaW4gJGRsMQotCSAgICB9Ci0JICAjIGV4dHJhIGluY3JlbWVudCBiZWNhdXNlIG5leHQgZWxlbWVudCBpc24ndCBhIGNhbmRpZGF0ZSBmb3IgJHAxCi0JICAkaSsrOyB9Ci0gICAgICAkaSsrOyB9Ci0gIHJldHVybiAxOwotfQotCi0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgVGVzdGluZwotIyMjCi0KLXN1YiB0ZXN0ICggJCQgKQoteyBteSAoJGFjdGlvbiwgJGZpbGUpID0gY2hlY2tfYXJncygyLCBAXyk7Ci0KLSAgIyBHZW5lcmFsIHRlc3RpbmcKLSAgaWYgKCgkYWN0aW9uIGVxICJ2aWV3IikgfHwgKCRhY3Rpb24gZXEgIiIpKQotICAgIHsgIyAjICRmaWxlID0gIi9ob21lcy9nd3MvbWVybnN0L3d3dy9saW5rcy5odG1sIjsKLSAgICAgICMgIyAkZmlsZSA9ICIvaG9tZXMvZ3dzL21lcm5zdC93d3cvaW5kZXguaHRtbCI7Ci0gICAgICAjICMgJGZpbGUgPSAiL2hvbWVzL2Zpc2gvbWVybnN0L2phdmEvZ3VkL2RvYy9tYW51YWwuaHRtbCI7Ci0gICAgICAjICMgJGZpbGUgPSAiL3Byb2plY3RzL2NlY2lsL2NlY2lsL2RvYy9tYW51YWxzL3N0ZGxpYi1tYW4vc3RkbGliL3N0ZGxpYi5odG1sIjsKLSAgICAgICMgIyAkZmlsZSA9ICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9pbmRleC5odG1sIjsKLSAgICAgICMgJGZpbGUgPSAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2NvbXBsZXhPYmplY3RzLmh0bWwiOwotICAgICAgbXkgJHRyZWUgPSBmaWxlX3RvX3RyZWUoJGZpbGUpOwotCi0gICAgICAjIyBUZXN0aW5nCi0gICAgICAjIHByaW50IFNUREVSUiAkdHJlZS0+YXNfSFRNTDsKLSAgICAgICR0cmVlLT5kdW1wKCk7Ci0KLSAgICAgICMgcHJpbnQgU1RERVJSICR0cmVlLT50YWcoKSwgIlxuIjsKLSAgICAgICMgcHJpbnQgU1RERVJSIEB7JHRyZWUtPmNvbnRlbnQoKX0sICJcbiI7Ci0gICAgICAjIAotICAgICAgIyBmb3IgKEB7ICR0cmVlLT5leHRyYWN0X2xpbmtzKHF3KGEgaW1nKSkgfSkgewotICAgICAgIyAgIG15ICgkbGluaywgJGxpbmtlbGVtKSA9IEAkXzsKLSAgICAgICMgICBwcmludCBTVERFUlIgIiRsaW5rICIsICRsaW5rZWxlbS0+YXNfSFRNTDsKLSAgICAgICMgICB9Ci0gICAgICAjIAotICAgICAgIyBwcmludCBTVERFUlIgQHskdHJlZS0+ZXh0cmFjdF9saW5rcygpfSwgIlxuIjsKLQotICAgICAgIyBteSBAdG9wX2xldmVsX2VsdHMgPSBAeyR0cmVlLT5jb250ZW50KCl9OwotCi0gICAgICAjIGlmIHNjYWxhcihAeyR0cmVlLT5jb250ZW50KCl9KQotICAgICAgcmV0dXJuOwotICAgIH0KLQotICBlbHNpZiAoJGFjdGlvbiBlcSAicmF3IikKLSAgICB7IG15ICR0cmVlID0gbmV3IEhUTUw6OlRyZWVCdWlsZGVyOwotICAgICAgJHRyZWUtPmlnbm9yZV91bmtub3duKDEpOwotICAgICAgIyAkdHJlZS0+d2FybigxKTsKLSAgICAgICR0cmVlLT5wYXJzZV9maWxlKCRmaWxlKTsKLQotICAgICAgJHRyZWUtPmR1bXAoKTsKLQotICAgICAgIyBjbGVhbnVwX3BhcnNlX3RyZWUoJHRyZWUpOwotICAgICAgIyAkdHJlZS0+ZHVtcCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAjIFRlc3QgZGVhbGluZyB3aXRoIGEgc2VjdGlvbi4KLSAgZWxzaWYgKCRhY3Rpb24gZXEgInNlY3Rpb24iKQotICAgIHsgIyBteSAkZmlsZTsKLSAgICAgICMgJGZpbGUgPSAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2ludHJvLmh0bWwiOwotICAgICAgIyAkZmlsZSA9ICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvaW5jbHVkZXMuaHRtbCI7Ci0gICAgICAjICRmaWxlID0gIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9jb21wbGV4T2JqZWN0cy5odG1sIjsKLSAgICAgIHByb2Nlc3Nfc2VjdGlvbl9maWxlKCRmaWxlLCAwLCAiVGl0bGUiKTsKLSAgICB9Ci0KLSAgIyBUZXN0IGRlYWxpbmcgd2l0aCBtYW55IHNlY3Rpb25zCi0gIGVsc2lmICgwKQotICAgIHsgbXkgQGZpbGVzID0gKCIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvYWJvdXQuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvYWJzdHJhY3QuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvYXBpLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2NPYmplY3RzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2NvbXBsZXhPYmplY3RzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2NvbmNyZXRlLmh0bWwiLAotCQkgICAjICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvY29udGVudHMuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvY291bnRpbmdSZWZzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2RlYnVnZ2luZy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9kaWN0T2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9lbWJlZGRpbmcuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvZXhjZXB0aW9uSGFuZGxpbmcuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvZXhjZXB0aW9ucy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9maWxlT2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9mbG9hdE9iamVjdHMuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvZnJvbnQuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvZnVuZGFtZW50YWwuaHRtbCIsCi0JCSAgICMgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9nZW5pbmRleC5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9pbXBvcnRpbmcuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvaW5jbHVkZXMuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvaW5kZXguaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvaW5pdGlhbGl6YXRpb24uaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvaW50T2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9pbnRyby5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9saXN0T2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9sb25nT2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9tYXBPYmplY3RzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL21hcHBpbmcuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvbmV3VHlwZXMuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvbm9kZTI0Lmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL25vbmVPYmplY3QuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvbnVtYmVyLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL251bWVyaWNPYmplY3RzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL29iamVjdC5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9vYmplY3RzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL29zLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL290aGVyT2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9wcm9jZXNzQ29udHJvbC5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9yZWZjb3VudERldGFpbHMuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvcmVmY291bnRzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL3NlcXVlbmNlLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL3NlcXVlbmNlT2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS9zdGFuZGFyZEV4Y2VwdGlvbnMuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvc3RyaW5nT2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS90aHJlYWRzLmh0bWwiLAotCQkgICAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL3R1cGxlT2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS90eXBlT2JqZWN0cy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS90eXBlcy5odG1sIiwKLQkJICAgIi9ob21lcy9maXNoL21lcm5zdC90bXAvcHl0aG9uLWRvYy9odG1sL2FwaS91dGlsaXRpZXMuaHRtbCIsCi0JCSAgICIvaG9tZXMvZmlzaC9tZXJuc3QvdG1wL3B5dGhvbi1kb2MvaHRtbC9hcGkvdmVyeWhpZ2guaHRtbCIpOwotICAgICAgZm9yIG15ICRmaWxlIChAZmlsZXMpCi0JeyBwcmludCBTVERFUlIgIlxuIiwgIj0iIHggNzUsICJcbiIsICIkZmlsZTpcbiI7Ci0JICBwcm9jZXNzX3NlY3Rpb25fZmlsZSgkZmlsZSwgMCwgIlRpdGxlIik7Ci0JfQotICAgIH0KLQotICAjIFRlc3QgZGVhbGluZyB3aXRoIGluZGV4LgotICBlbHNpZiAoJGFjdGlvbiBlcSAiaW5kZXgiKQotICAgIHsgIyBteSAkZmlsZTsKLSAgICAgICMgJGZpbGUgPSAiL2hvbWVzL2Zpc2gvbWVybnN0L3RtcC9weXRob24tZG9jL2h0bWwvYXBpL2dlbmluZGV4Lmh0bWwiOwotCi0gICAgICBwcm9jZXNzX2luZGV4X2ZpbGUoJGZpbGUsICJcQGNpbmRleCIpOwotICAgICAgcHJpbnRfaW5kZXhfaW5mbygpOwotICAgIH0KLQotICBlbHNlCi0gICAgeyBkaWUgIlVucmVjb2duaXplZCBhY3Rpb24gYCRhY3Rpb24nIjsgfQotfQotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIE1haW4gbG9vcAotIyMjCi0KLXN1YiBwcm9jZXNzX2NvbnRlbnRzX2ZpbGUgKCAkICkKLXsgbXkgKCRmaWxlKSA9IGNoZWNrX2FyZ3MoMSwgQF8pOwotCi0gICMgY291bGQgYWxzbyB1c2UgRmlsZTo6QmFzZW5hbWUKLSAgbXkgJGluZm9fZmlsZSA9ICRmaWxlOwotICAkaW5mb19maWxlID1+IHMvKFwvP2luZGV4KT9cLmh0bWwkLy87Ci0gIGlmICgkaW5mb19maWxlIGVxICIiKQotICAgIHsgY2hvbXAoJGluZm9fZmlsZSA9IGBwd2RgKTsgfQotICAkaW5mb19maWxlID1+IHMvXi4qXC8vLzsJIyBub3QgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byByZW1vdmUgZGlycwotCi0gICRodG1sX2RpcmVjdG9yeSA9ICRmaWxlOwotICAkaHRtbF9kaXJlY3RvcnkgPX4gcy8oXC98XilbXlwvXSskLyQxLzsKLQotICBteSAkdGV4aV9maWxlID0gIiRpbmZvX2ZpbGUudGV4aSI7Ci0gIG9wZW4oVEVYSSwgIj4kdGV4aV9maWxlIik7Ci0KLSAgcHJpbnQgVEVYSSAiXFxpbnB1dCB0ZXhpbmZvICAgXEBjIC0qLXRleGluZm8tKi1cbiI7Ci0gIHByaW50IFRFWEkgIlxAYyAlKipzdGFydCBvZiBoZWFkZXJcbiI7Ci0gIHByaW50IFRFWEkgIlxAc2V0ZmlsZW5hbWUgJGluZm9fZmlsZVxuIjsKLQotICAjIDIuIFN1bW1hcnkgRGVzY3JpcHRpb24gYW5kIENvcHlyaWdodAotICAjICAgICAgVGhlICJTdW1tYXJ5IERlc2NyaXB0aW9uIGFuZCBDb3B5cmlnaHQiIHNlZ21lbnQgZGVzY3JpYmVzIHRoZQotICAjICAgICAgZG9jdW1lbnQgYW5kIGNvbnRhaW5zIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBjb3B5aW5nIHBlcm1pc3Npb25zCi0gICMgICAgICBmb3IgdGhlIEluZm8gZmlsZS4gIFRoZSBzZWdtZW50IG11c3QgYmUgZW5jbG9zZWQgYmV0d2VlbiBgQGlmaW5mbycKLSAgIyAgICAgIGFuZCBgQGVuZCBpZmluZm8nIGNvbW1hbmRzIHNvIHRoYXQgdGhlIGZvcm1hdHRlcnMgcGxhY2UgaXQgb25seSBpbgotICAjICAgICAgdGhlIEluZm8gZmlsZS4KLSAgIyAKLSAgIyBUaGUgc3VtbWFyeSBkZXNjcmlwdGlvbiBhbmQgY29weXJpZ2h0IHNlZ21lbnQgZG9lcyBub3QgYXBwZWFyIGluIHRoZQotICAjIHByaW50ZWQgZG9jdW1lbnQuCi0gICMgCi0gICMgICAgICBAaWZpbmZvCi0gICMgICAgICBUaGlzIGlzIGEgc2hvcnQgZXhhbXBsZSBvZiBhIGNvbXBsZXRlIFRleGluZm8gZmlsZS4KLSAgIyAgICAgIAotICAjICAgICAgQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTkwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAjICAgICAgQGVuZCBpZmluZm8KLQotCi0gICMgMy4gVGl0bGUgYW5kIENvcHlyaWdodAotICAjICAgICAgVGhlICJUaXRsZSBhbmQgQ29weXJpZ2h0IiBzZWdtZW50IGNvbnRhaW5zIHRoZSB0aXRsZSBhbmQgY29weXJpZ2h0Ci0gICMgICAgICBwYWdlcyBhbmQgY29weWluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIHByaW50ZWQgbWFudWFsLiAgVGhlIHNlZ21lbnQKLSAgIyAgICAgIG11c3QgYmUgZW5jbG9zZWQgYmV0d2VlbiBgQHRpdGxlcGFnZScgYW5kIGBAZW5kIHRpdGxlcGFnZScKLSAgIyAgICAgIGNvbW1hbmRzLiAgVGhlIHRpdGxlIGFuZCBjb3B5cmlnaHQgcGFnZSBhcHBlYXIgb25seSBpbiB0aGUgcHJpbnRlZAotICAjICAgICAgbWFudWFsLgotICAjIAotICAjIFRoZSB0aXRsZXBhZ2Ugc2VnbWVudCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIEluZm8gZmlsZS4KLSAgIyAKLSAgIyAgICAgIEB0aXRsZXBhZ2UKLSAgIyAgICAgIEBzcCAxMAotICAjICAgICAgQGNvbW1lbnQgVGhlIHRpdGxlIGlzIHByaW50ZWQgaW4gYSBsYXJnZSBmb250LgotICAjICAgICAgQGNlbnRlciBAdGl0bGVmb250e1NhbXBsZSBUaXRsZX0KLSAgIyAgICAgIAotICAjICAgICAgQGMgVGhlIGZvbGxvd2luZyB0d28gY29tbWFuZHMgc3RhcnQgdGhlIGNvcHlyaWdodCBwYWdlLgotICAjICAgICAgQHBhZ2UKLSAgIyAgICAgIEB2c2tpcCAwcHQgcGx1cyAxZmlsbGwKLSAgIyAgICAgIENvcHlyaWdodCBAY29weXJpZ2h0e30gMTk5MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAgIyAgICAgIEBlbmQgdGl0bGVwYWdlCi0KLQotICAjIDQuIGBUb3AnIE5vZGUgYW5kIE1hc3RlciBNZW51Ci0gICMgICAgICBUaGUgIk1hc3RlciBNZW51IiBjb250YWlucyBhIGNvbXBsZXRlIG1lbnUgb2YgYWxsIHRoZSBub2RlcyBpbiB0aGUKLSAgIyAgICAgIHdob2xlIEluZm8gZmlsZS4gIEl0IGFwcGVhcnMgb25seSBpbiB0aGUgSW5mbyBmaWxlLCBpbiB0aGUgYFRvcCcKLSAgIyAgICAgIG5vZGUuCi0gICMgCi0gICMgVGhlIGBUb3AnIG5vZGUgY29udGFpbnMgdGhlIG1hc3RlciBtZW51IGZvciB0aGUgSW5mbyBmaWxlLiAgU2luY2UgYQotICAjIHByaW50ZWQgbWFudWFsIHVzZXMgYSB0YWJsZSBvZiBjb250ZW50cyByYXRoZXIgdGhhbiBhIG1lbnUsIHRoZSBtYXN0ZXIKLSAgIyBtZW51IGFwcGVhcnMgb25seSBpbiB0aGUgSW5mbyBmaWxlLgotICAjIAotICAjICAgICAgQG5vZGUgICAgVG9wLCAgICAgICBGaXJzdCBDaGFwdGVyLCAsICAgICAgICAgKGRpcikKLSAgIyAgICAgIEBjb21tZW50IG5vZGUtbmFtZSwgbmV4dCwgICAgICAgICAgcHJldmlvdXMsIHVwCi0gICMgCi0gICMgICAgICBAbWVudQotICAjICAgICAgKiBGaXJzdCBDaGFwdGVyOjogICAgVGhlIGZpcnN0IGNoYXB0ZXIgaXMgdGhlCi0gICMgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGNoYXB0ZXIgaW4gdGhpcyBzYW1wbGUuCi0gICMgICAgICAqIENvbmNlcHQgSW5kZXg6OiAgICBUaGlzIGluZGV4IGhhcyB0d28gZW50cmllcy4KLSAgIyAgICAgIEBlbmQgbWVudQotCi0KLQotICAkY3VycmVudF9yZWZfdGRmID0gWyAiVG9wIiwgMCwgJEFSR1ZbMF0gXTsKLSAgcHJvY2Vzc19zZWN0aW9uX2ZpbGUoJGZpbGUsIDAsICJUb3AiKTsKLSAgd2hpbGUgKHNjYWxhcihAY29udGVudHNfbGlzdCkpCi0gIHsgJGN1cnJlbnRfcmVmX3RkZiA9IHNoaWZ0IEBjb250ZW50c19saXN0OwotICAgIHByb2Nlc3Nfc2VjdGlvbl9maWxlKCQgeyRjdXJyZW50X3JlZl90ZGZ9WzJdLCAkIHskY3VycmVudF9yZWZfdGRmfVsxXSwgJCB7JGN1cnJlbnRfcmVmX3RkZn1bMF0pOwotICB9Ci0KLSAgcHJpbnQgVEVYSSAiXG4iOwotICBmb3IgbXkgJGluZGV4dGl0bGUgKEBpbmRleF90aXRsZXMpCi0gICAgeyBwcmludCBURVhJICJcQG5vZGUgJGluZGV4dGl0bGVcbiI7Ci0gICAgICBwcmludCBURVhJICJcQHVubnVtYmVyZWQgJGluZGV4dGl0bGVcbiI7Ci0gICAgICBwcmludCBURVhJICJcQHByaW50aW5kZXggJCB7JGluZGV4X2luZm97JGluZGV4dGl0bGV9fVsxXVxuIjsKLSAgICAgIHByaW50IFRFWEkgIlxuIjsgfQotCi0gIHByaW50IFRFWEkgIlxAY29udGVudHNcbiI7Ci0gIHByaW50IFRFWEkgIlxAYnllXG4iOwotICBjbG9zZShURVhJKTsKLX0KLQotIyBUaGlzIG5lZWRzIHRvIGJlIGxhc3Qgc28gZ2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemF0aW9ucyBhcmUgcmVhY2hlZC4KLQotaWYgKHNjYWxhcihAQVJHVikgPT0gMCkKLXsgZGllICJObyBhcmd1bWVudHMgc3VwcGxpZWQgdG8gaHRtbDJ0ZXhpLnBsIjsgfQotCi1pZiAoJEFSR1ZbMF0gZXEgIi10ZXN0IikKLXsgbXkgQHRlc3RfYXJncyA9IEBBUkdWWzEuLiQjQVJHVl07Ci0gIGlmIChzY2FsYXIoQHRlc3RfYXJncykgPT0gMCkKLSAgICB7IHRlc3QoIiIsICJpbmRleC5odG1sIik7IH0KLSAgZWxzaWYgKHNjYWxhcihAdGVzdF9hcmdzKSA9PSAxKQotICAgIHsgdGVzdCgiIiwgJHRlc3RfYXJnc1swXSk7IH0KLSAgZWxzaWYgKHNjYWxhcihAdGVzdF9hcmdzKSA9PSAyKQotICAgIHsgdGVzdCgkdGVzdF9hcmdzWzBdLCAkdGVzdF9hcmdzWzFdKTsgfQotICBlbHNlCi0gICAgeyBkaWUgIlRvbyBtYW55IHRlc3QgYXJndW1lbnRzIHBhc3NlZCB0byBodG1sMnRleGk6ICIsIGpvaW4oIiAiLCBAQVJHVik7IH0KLSAgZXhpdCgpOwotfQotCi1pZiAoc2NhbGFyKEBBUkdWKSAhPSAxKQoteyBkaWUgIlBhc3Mgb25lIGFyZ3VtZW50LCB0aGUgbWFpbi9jb250ZW50cyBwYWdlIjsgfQotCi1wcm9jZXNzX2NvbnRlbnRzX2ZpbGUoJEFSR1ZbMF0pOwotCi0jIGVuZCBvZiBodG1sMnRleGkucGwKZGlmZiAtLWdpdCBhL2RvYy90b29scy9pbmRmaXgucHkgYi9kb2MvdG9vbHMvaW5kZml4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzOGY5NWJjLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9pbmRmaXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0iIiJDb21iaW5lIHNpbWlsYXIgaW5kZXggZW50cmllcyBpbnRvIGFuIGVudHJ5IGFuZCBzdWJlbnRyaWVzLgotCi1Gb3IgZXhhbXBsZToKLQotICAgIFxpdGVtIHtmb29iYXJ9IChpbiBtb2R1bGUgZmxvdHopLCAyMwotICAgIFxpdGVtIHtmb29iYXJ9IChpbiBtb2R1bGUgd2hhY2tpdCksIDQzMjMKLQotYmVjb21lcwotCi0gICAgXGl0ZW0ge2Zvb2Jhcn0KLSAgICAgIFxzdWJpdGVtIGluIG1vZHVsZSBmbG90eiwgMjMKLSAgICAgIFxzdWJpdGVtIGluIG1vZHVsZSB3aGFja2l0LCA0MzIzCi0KLU5vdGUgdGhhdCBhbiBpdGVtIHdoaWNoIG1hdGNoZXMgdGhlIGZvcm1hdCBvZiBhIGNvbGxhcHNhYmxlIGl0ZW0gYnV0IHdoaWNoCi1pc24ndCBwYXJ0IG9mIGEgZ3JvdXAgb2Ygc2ltaWxhciBpdGVtcyBpcyBub3QgbW9kaWZpZWQuCi0iIiIKLV9fdmVyc2lvbl9fID0gJyRSZXZpc2lvbjogMS4xLjEuMSAkJwotCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0IHN5cwotCi0KLWRlZiBjbXBfZW50cmllcyhlMSwgZTIsIGxvd2VyPXN0cmluZy5sb3dlcik6Ci0gICAgcmV0dXJuIGNtcChsb3dlcihlMVsxXSksIGxvd2VyKGUyWzFdKSkgb3IgY21wKGUxLCBlMikKLQotCi1kZWYgZHVtcF9lbnRyaWVzKHdyaXRlLCBlbnRyaWVzKToKLSAgICBpZiBsZW4oZW50cmllcykgPT0gMToKLSAgICAgICAgd3JpdGUoIiAgXFxpdGVtICVzICglcyklc1xuIiAlIGVudHJpZXNbMF0pCi0gICAgICAgIHJldHVybgotICAgIHdyaXRlKCIgIFxpdGVtICVzXG4iICUgZW50cmllc1swXVswXSkKLSAgICAjIG5vdyBzb3J0IHRoZXNlIGluIGEgY2FzZSBpbnNlbnNpdGl2ZSBtYW5uZXI6Ci0gICAgaWYgbGVuKGVudHJpZXMpID4gMDoKLSAgICAgICAgZW50cmllcy5zb3J0KGNtcF9lbnRyaWVzKQotICAgIGZvciB4eHgsIHN1Yml0ZW0sIHBhZ2VzIGluIGVudHJpZXM6Ci0gICAgICAgIHdyaXRlKCIgICAgXHN1Yml0ZW0gJXMlc1xuIiAlIChzdWJpdGVtLCBwYWdlcykpCi0KLQotYnJlYWthYmxlX3JlID0gcmUuY29tcGlsZSgKLSAgICByIiAgXFxpdGVtICguKikgWyhdKC4qKVspXSgoPzooPzosIFxkKyl8KD86LCBcXFthLXpdKlx7XGQrXH0pKSspIikKLQotCi1kZWYgcHJvY2VzcyhpZm4sIG9mbj1Ob25lKToKLSAgICBpZiBpZm4gPT0gIi0iOgotICAgICAgICBpZnAgPSBzeXMuc3RkaW4KLSAgICBlbHNlOgotICAgICAgICBpZnAgPSBvcGVuKGlmbikKLSAgICBpZiBvZm4gaXMgTm9uZToKLSAgICAgICAgb2ZuID0gaWZuCi0gICAgb2ZwID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgIGVudHJpZXMgPSBbXQotICAgIG1hdGNoID0gYnJlYWthYmxlX3JlLm1hdGNoCi0gICAgd3JpdGUgPSBvZnAud3JpdGUKLSAgICB3aGlsZSAxOgotICAgICAgICBsaW5lID0gaWZwLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBtID0gbWF0Y2gobGluZSkKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIGVudHJ5ID0gbS5ncm91cCgxLCAyLCAzKQotICAgICAgICAgICAgaWYgZW50cmllcyBhbmQgZW50cmllc1stMV1bMF0gIT0gZW50cnlbMF06Ci0gICAgICAgICAgICAgICAgZHVtcF9lbnRyaWVzKHdyaXRlLCBlbnRyaWVzKQotICAgICAgICAgICAgICAgIGVudHJpZXMgPSBbXQotICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoZW50cnkpCi0gICAgICAgIGVsaWYgZW50cmllczoKLSAgICAgICAgICAgIGR1bXBfZW50cmllcyh3cml0ZSwgZW50cmllcykKLSAgICAgICAgICAgIGVudHJpZXMgPSBbXQotICAgICAgICAgICAgd3JpdGUobGluZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdyaXRlKGxpbmUpCi0gICAgZGVsIHdyaXRlCi0gICAgZGVsIG1hdGNoCi0gICAgaWZwLmNsb3NlKCkKLSAgICBkYXRhID0gb2ZwLmdldHZhbHVlKCkKLSAgICBvZnAuY2xvc2UoKQotICAgIGlmIG9mbiA9PSAiLSI6Ci0gICAgICAgIG9mcCA9IHN5cy5zdGRvdXQKLSAgICBlbHNlOgotICAgICAgICBvZnAgPSBvcGVuKG9mbiwgInciKQotICAgIG9mcC53cml0ZShkYXRhKQotICAgIG9mcC5jbG9zZSgpCi0KLQotZGVmIG1haW4oKToKLSAgICBpbXBvcnQgZ2V0b3B0Ci0gICAgb3V0ZmlsZSA9IE5vbmUKLSAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJvOiIpCi0gICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCBpbiAoIi1vIiwgIi0tb3V0cHV0Iik6Ci0gICAgICAgICAgICBvdXRmaWxlID0gdmFsCi0gICAgZmlsZW5hbWUgPSBhcmdzWzBdCi0gICAgb3V0ZmlsZSA9IG91dGZpbGUgb3IgZmlsZW5hbWUKLSAgICBwcm9jZXNzKGZpbGVuYW1lLCBvdXRmaWxlKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvaW5mby9NYWtlZmlsZSBiL2RvYy90b29scy9pbmZvL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGQ2MDU3Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9pbmZvL01ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyBHZW5lcmF0ZSB0aGUgUHl0aG9uICJpbmZvIiBkb2N1bWVudGF0aW9uLgotCi1UT1BESVI9Li4KLVRPT0xTRElSPSQoVE9QRElSKS90b29scwotSFRNTERJUj0kKFRPUERJUikvaHRtbAotCi1NS0lORk89JChUT09MU0RJUikvbWtpbmZvCi1TQ1JJUFRTPSQoVE9PTFNESVIpL2h0bWwydGV4aS5wbCAkKFRPT0xTRElSKS9jaGVja2FyZ3MucG0gJChUT09MU0RJUikvbWtpbmZvIFwKLQkkKFRPT0xTRElSKS9maXhpbmZvLmVsCi0KLWFsbDoJcHl0aG9uLWFwaS5pbmZvIHB5dGhvbi1leHQuaW5mbyBweXRob24tbGliLmluZm8gXAotCXB5dGhvbi1yZWYuaW5mbyBweXRob24tdHV0LmluZm8gXAotCXB5dGhvbi1kaXN0LmluZm8gcHl0aG9uLWluc3QuaW5mbwotCi0KLXB5dGhvbi1hcGkuaW5mbzoJJChIVE1MRElSKS9hcGkvYXBpLmh0bWwgJChTQ1JJUFRTKQotCSQoTUtJTkZPKSAkPAotCi1weXRob24tZXh0LmluZm86CSQoSFRNTERJUikvZXh0L2V4dC5odG1sICQoU0NSSVBUUykKLQkkKE1LSU5GTykgJDwKLQotcHl0aG9uLWxpYi5pbmZvOgkkKEhUTUxESVIpL2xpYi9saWIuaHRtbCAkKFNDUklQVFMpCi0JJChNS0lORk8pICQ8Ci0KLSMgTm90IGJ1aWx0IGJ5IGRlZmF1bHQ7IHRoZSBjb252ZXJzaW9uIGRvZXNuJ3QgcmVhbGx5IGhhbmRsZSBpdCB3ZWxsLgotcHl0aG9uLW1hYy5pbmZvOgkkKEhUTUxESVIpL21hYy9tYWMuaHRtbCAkKFNDUklQVFMpCi0JJChNS0lORk8pICQ8Ci0KLXB5dGhvbi1yZWYuaW5mbzoJJChIVE1MRElSKS9yZWYvcmVmLmh0bWwgJChTQ1JJUFRTKQotCSQoTUtJTkZPKSAkPAotCi1weXRob24tdHV0LmluZm86CSQoSFRNTERJUikvdHV0L3R1dC5odG1sICQoU0NSSVBUUykKLQkkKE1LSU5GTykgJDwKLQotcHl0aG9uLWRpc3QuaW5mbzoJJChIVE1MRElSKS9kaXN0L2Rpc3QuaHRtbCAkKFNDUklQVFMpCi0JJChNS0lORk8pICQ8Ci0KLXB5dGhvbi1pbnN0LmluZm86CSQoSFRNTERJUikvaW5zdC9pbnN0Lmh0bWwgJChTQ1JJUFRTKQotCSQoTUtJTkZPKSAkPAotCi1jbGVhbjoKLQlybSAtZiAqLnRleGl+ICoudGV4aQotCi1jbG9iYmVyOiBjbGVhbgotCXJtIC1mICoudGV4aSBweXRob24tKi5pbmZvIHB5dGhvbi0qLmluZm8tWzAtOV0qCi0KLQotIyBUaGlzIG1ha2VzIHN1cmUgd2UgY2FuIGJ1aWxkIGluZm8gZmlsZXMgZnJvbSBhICJjbGVhbiIgdHJlZSwKLSMgaW4gY2FzZSB3ZSBoYXZlbid0IGFscmVhZHkgYnVpbHQgdGhlIEhUTUw6Ci0KLSQoSFRNTERJUikvYXBpL2FwaS5odG1sOgotCShjZCAkKEhUTUxESVIpOyAkKE1BS0UpIGFwaSkKLQotJChIVE1MRElSKS9leHQvZXh0Lmh0bWw6Ci0JKGNkICQoSFRNTERJUik7ICQoTUFLRSkgZXh0KQotCi0kKEhUTUxESVIpL2xpYi9saWIuaHRtbDoKLQkoY2QgJChIVE1MRElSKTsgJChNQUtFKSBsaWIpCi0KLSQoSFRNTERJUikvbWFjL21hYy5odG1sOgotCShjZCAkKEhUTUxESVIpOyAkKE1BS0UpIG1hYykKLQotJChIVE1MRElSKS9yZWYvcmVmLmh0bWw6Ci0JKGNkICQoSFRNTERJUik7ICQoTUFLRSkgcmVmKQotCi0kKEhUTUxESVIpL3R1dC90dXQuaHRtbDoKLQkoY2QgJChIVE1MRElSKTsgJChNQUtFKSB0dXQpCi0KLSQoSFRNTERJUikvZGlzdC9kaXN0Lmh0bWw6Ci0JKGNkICQoSFRNTERJUik7ICQoTUFLRSkgZGlzdCkKLQotJChIVE1MRElSKS9pbnN0L2luc3QuaHRtbDoKLQkoY2QgJChIVE1MRElSKTsgJChNQUtFKSBpbnN0KQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2luZm8vUkVBRE1FIGIvZG9jL3Rvb2xzL2luZm8vUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTQ5YTk5Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9pbmZvL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoaXMgYXJjaGl2ZSBjb250YWlucyB0aGUgc3RhbmRhcmQgUHl0aG9uIGRvY3VtZW50YXRpb24gaW4gR05VIGluZm8KLWZvcm1hdC4gIEZpdmUgbWFudWFscyBhcmUgaW5jbHVkZWQ6Ci0KLSAgICBweXRob24tcmVmLmluZm8qCVB5dGhvbiBSZWZlcmVuY2UgTWFudWFsCi0gICAgcHl0aG9uLW1hYy5pbmZvKglQeXRob24gTWFjaW50b3NoIE1vZHVsZXMKLSAgICBweXRob24tbGliLmluZm8qCVB5dGhvbiBMaWJyYXJ5IFJlZmVyZW5jZQotICAgIHB5dGhvbi1leHQuaW5mbyoJRXh0ZW5kaW5nIGFuZCBFbWJlZGRpbmcgdGhlIFB5dGhvbiBJbnRlcnByZXRlcgotICAgIHB5dGhvbi1hcGkuaW5mbyoJUHl0aG9uL0MgQVBJIFJlZmVyZW5jZQotICAgIHB5dGhvbi10dXQuaW5mbyoJUHl0aG9uIFR1dG9yaWFsCi0KLVRoZSBmaWxlIHB5dGhvbi5kaXIgaXMgYSBmcmFnbWVudCBvZiBhICJkaXIiIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCB0bwotaW5jb3Jwb3JhdGUgdGhlc2UgZG9jdW1lbnRzIGludG8gYW4gZXhpc3RpbmcgR05VIGluZm8gaW5zdGFsbGF0aW9uOgotaW5zZXJ0IHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgaW50byB0aGUgImRpciIgb3IgImxvY2FsZGlyIiBmaWxlIGF0Ci1hbiBhcHByb3ByaWF0ZSBwb2ludCBhbmQgY29weSB0aGUgcHl0aG9uLSouaW5mbyogZmlsZXMgdG8gdGhlIHNhbWUKLWRpcmVjdG9yeS4KLQotVGhhbmtzIGdvIHRvIE1pbGFuIFphbWF6YWwgPHBkbUBmcmVlc29mdC5jej4gZm9yIHByb3ZpZGluZyB0aGlzCi1jb252ZXJzaW9uIHRvIHRoZSBpbmZvIGZvcm1hdC4KLQotUXVlc3Rpb25zIGFuZCBjb21tZW50cyBvbiB0aGVzZSBkb2N1bWVudHMgc2hvdWxkIGJlIGRpcmVjdGVkIHRvCi1weXRob24tZG9jc0BweXRob24ub3JnLgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL2luZm8vcHl0aG9uLmRpciBiL2RvYy90b29scy9pbmZvL3B5dGhvbi5kaXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZTNlM2EuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2luZm8vcHl0aG9uLmRpcgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotCi1QeXRob24gU3RhbmRhcmQgRG9jdW1lbnRhdGlvbgotCi0qIFB5dGhvbiBMaWJyYXJ5OiAocHl0aG9uLWxpYikuCQlQeXRob24gTGlicmFyeSBSZWZlcmVuY2UKLSogUHl0aG9uIE1hYyBNb2R1bGVzOiAocHl0aG9uLW1hYykuCVB5dGhvbiBNYWNpbnRvc2ggTW9kdWxlcwotKiBQeXRob24gUmVmZXJlbmNlOiAocHl0aG9uLXJlZikuCVB5dGhvbiBSZWZlcmVuY2UgTWFudWFsCi0qIFB5dGhvbiBBUEk6IChweXRob24tYXBpKS4JCVB5dGhvbi9DIEFQSSBSZWZlcmVuY2UgTWFudWFsCi0qIFB5dGhvbiBFeHRlbmRpbmc6IChweXRob24tZXh0KS4JRXh0ZW5kaW5nICYgRW1iZWRkaW5nIFB5dGhvbgotKiBQeXRob24gVHV0b3JpYWw6IChweXRob24tdHV0KS4JUHl0aG9uIFR1dG9yaWFsCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMva2V5d29yZHMucHkgYi9kb2MvdG9vbHMva2V5d29yZHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYTM1MmEuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2tleXdvcmRzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIFRoaXMgUHl0aG9uIHByb2dyYW0gc29ydHMgYW5kIHJlZm9ybWF0cyB0aGUgdGFibGUgb2Yga2V5d29yZHMgaW4gcmVmMi50ZXgKLQotaW1wb3J0IHN0cmluZwotbCA9IFtdCi10cnk6Ci0Jd2hpbGUgMToKLQkJbCA9IGwgKyBzdHJpbmcuc3BsaXQocmF3X2lucHV0KCkpCi1leGNlcHQgRU9GRXJyb3I6Ci0JcGFzcwotbC5zb3J0KCkKLWZvciB4IGluIGxbOl06Ci0Jd2hpbGUgbC5jb3VudCh4KSA+IDE6IGwucmVtb3ZlKHgpCi1uY29scyA9IDUKLW5yb3dzID0gKGxlbihsKStuY29scy0xKS9uY29scwotZm9yIGkgaW4gcmFuZ2UobnJvd3MpOgotCWZvciBqIGluIHJhbmdlKGksIGxlbihsKSwgbnJvd3MpOgotCQlwcmludCBzdHJpbmcubGp1c3QobFtqXSwgMTApLAotCXByaW50CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvbGlzdG1vZHVsZXMgYi9kb2MvdG9vbHMvbGlzdG1vZHVsZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdhYzkwYTguLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL2xpc3Rtb2R1bGVzCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24KLSMgIC0qLSBQeXRob24gLSotCi0jCi0jICBUaGlzIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB1bmRvY3VtZW50ZWQgbW9kdWxlcyBpbiB0aGUgUHl0aG9uCi0jICBzdGFuZGFyZCBsaWJyYXJ5LiAgVXNlIGl0IGxpa2UgdGhpczoKLSMKLSMgIC4uLi9Eb2MvdG9vbHMvbGlzdG1vZHVsZXMgLS1pZ25vcmUtZnJvbSAuLi4vRG9jL3BhcGVyLTxwYXBlcj4vbW9kbGliLmlkeAotCi0iIiIlKHByb2dyYW0pcyAtIGxpc3QgbW9kdWxlcyBpbiB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkKLQotLWEsIC0tYW5ub3RhdGUJICBBbm5vdGF0ZSB0aGUgbW9kdWxlIG5hbWVzIHdpdGggdGhlIHN1YmRpcmVjdG9yeSB0aGV5Ci0gICAgICAgICAgICAgICAgICBsaXZlIGluCi0tYywgLS1jYXRlZ29yaXplICBHcm91cCB0aGUgbW9kdWxlcyBieSBzdWJkaXJlY3RvcnkKLS1pIDxmaWxlPiwKLQotLS1pZ25vcmUtZnJvbSA8ZmlsZT4JSWdub3JlIHRoZSBtb2R1bGVzIGxpc3RlZCBpbiA8ZmlsZT4uICA8ZmlsZT4gbWF5Ci0gICAgICAgICAgICAgICAgICBjb250YWluIGEgbGlzdCBvZiBtb2R1bGUgbmFtZXMgb3IgYSBtb2R1bGUgaW5kZXggZmlsZQotICAgICAgICAgICAgICAgICAgYXMgcHJvZHVjZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbgotICAgICAgICAgICAgICAgICAgKC5pZHggb3IgLmh0bWwgZmxhdm9yKS4KLQotSWYgbmVpdGhlciAtYSBub3IgLWMgYXJlIGdpdmVuLCB0aGUgbW9kdWxlcyBhcmUgbGlzdGVkIGluIGFscGhhYmV0aWNhbAotb3JkZXIuCi0KLU5vdGUgdGhhdCAtYSBhbmQgLWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KLQotTGltaXRhdGlvbjogTW9kdWxlcyBsb2FkYWJsZSBhcyBzaGFyZWQgb2JqZWN0cyBtYXkgbm90IGJlIGxpc3RlZCwKLXRob3VnaCB0aGlzIHNjcmlwdCBhdHRlbXB0cyB0byBsb2NhdGUgc3VjaCBtb2R1bGVzLgotCi0iIiIKLQotX192ZXJzaW9uX18gPSAnJFJldmlzaW9uOiAxLjEuMS4xICQnCi0KLWltcG9ydCBnZXRvcHQKLWltcG9ydCBnbG9iCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN0cmluZwotaW1wb3J0IHN5cwotCi0KLVJFTU9WRV9ESVJTID0gWyJkb3MtOHgzIiwgImVuY29kaW5ncyIsICJkaXN0dXRpbHMiLAotICAgICAgICAgICAgICAgImxpYi1vbGQiLCAibGliLXN0ZHdpbiIsICJ0ZXN0Il0KLQotCi1kZWYgbWFpbigpOgotICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KLSAgICBhbm5vdGF0ZSA9IDAKLSAgICBidWlsdGluID0gMAotICAgIGNhdGVnb3JpemUgPSAwCi0gICAgaWdub3JlX2RpY3QgPSB7fQotICAgIGlnbm9yZSA9IGlnbm9yZV9kaWN0Lmhhc19rZXkKLSAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KAotICAgICAgICAgICAgYXJncywgImFiY2hpOiIsCi0gICAgICAgICAgICBbImFubm90YXRlIiwgImJ1aWx0LWluIiwgImNhdGVnb3JpemUiLCAiaGVscCIsICJpZ25vcmUtZnJvbT0iXSkKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6Ci0gICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuc3RkZXJyCi0gICAgICAgIHByaW50IG1zZwotICAgICAgICBwcmludAotICAgICAgICB1c2FnZSgpCi0gICAgICAgIHN5cy5leGl0KDIpCi0gICAgZm9yIG9wdCwgYXJnIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCBpbiAoIi1hIiwgIi0tYW5ub3RhdGUiKToKLSAgICAgICAgICAgIGFubm90YXRlID0gMQotICAgICAgICBlbGlmIG9wdCBpbiAoIi1iIiwgIi0tYnVpbHQtaW4iKToKLSAgICAgICAgICAgIGJ1aWx0aW4gPSAxCi0gICAgICAgIGVsaWYgb3B0IGluICgiLWMiLCAiLS1jYXRlZ29yaXplIik6Ci0gICAgICAgICAgICBjYXRlZ29yaXplID0gMQotICAgICAgICBlbGlmIG9wdCBpbiAoIi1oIiwgIi0taGVscCIpOgotICAgICAgICAgICAgdXNhZ2UoKQotICAgICAgICAgICAgc3lzLmV4aXQoKQotICAgICAgICBlbGlmIG9wdCBpbiAoIi1pIiwgIi0taWdub3JlLWZyb20iKToKLSAgICAgICAgICAgIGRhdGEgPSBvcGVuKGFyZykucmVhZCgpCi0gICAgICAgICAgICBpZiBkYXRhWzoxXSA9PSAiXFwiOgotICAgICAgICAgICAgICAgIGlnbm9yZV9mcm9tX2lkeChkYXRhLCBpZ25vcmVfZGljdCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWdub3JlX2Zyb21fbW9kdWxlbGlzdChkYXRhLCBpZ25vcmVfZGljdCkKLSAgICBpZiBhcmdzIG9yIChhbm5vdGF0ZSBhbmQgY2F0ZWdvcml6ZSk6Ci0gICAgICAgIHVzYWdlKCkKLSAgICAgICAgc3lzLmV4aXQoMikKLSAgICAjCi0gICAgIyBQb3B1bGF0ZSB0aGUgZGF0YWJhc2U6Ci0gICAgIwotICAgIHNyY2RpciA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKAotICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pLCBvcy5wYXJkaXIsIG9zLnBhcmRpcikpCi0gICAgb3MuY2hkaXIoc3JjZGlyKQotICAgIG1vZHVsZXNfYnlfbmFtZSA9IHt9Ci0gICAgbW9kdWxlc19ieV9kaXIgPSB7fQotICAgIGlmIGJ1aWx0aW46Ci0gICAgICAgIGwgPSBbXQotICAgICAgICBtb2R1bGVzX2J5X2RpclsiPGJ1aWx0aW4+Il0gPSBsCi0gICAgICAgIGZvciBuYW1lIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKLSAgICAgICAgICAgIGlmIG5vdCBpZ25vcmUobmFtZSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlc19ieV9uYW1lW25hbWVdID0gIjxidWlsdC1pbj4iCi0gICAgICAgICAgICAgICAgbC5hcHBlbmQobmFtZSkKLSAgICByeCA9IHJlLmNvbXBpbGUoIkxpYi9wbGF0LVthLXpBLVowLTldKi8iKQotICAgIGZwID0gb3MucG9wZW4oImZpbmQgTGliIC1uYW1lIFwqLnB5IC1wcmludCIsICJyIikKLSAgICB3aGlsZSAxOgotICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoKQotICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIG0gPSByeC5tYXRjaChsaW5lKQotICAgICAgICBpZiBtOgotICAgICAgICAgICAgbGluZSA9ICJMaWIvcGxhdC0qLyIgKyBsaW5lW20uZW5kKCk6XQotICAgICAgICBsaW5lID0gbGluZVs0Oi00XSAgICAgICAgICAgICAgICAjIHN0cmlwIG9mZiAnTGliLycgYW5kICcucHlcbicKLSAgICAgICAgZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChsaW5lKQotICAgICAgICBkaXIgPSBkaXIgb3IgIjxzdGFuZGFyZD4iCi0gICAgICAgIGlmIGlnbm9yZShuYW1lKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIGRpciBub3QgaW4gUkVNT1ZFX0RJUlM6Ci0gICAgICAgICAgICBtb2R1bGVzX2J5X25hbWVbbmFtZV0gPSBkaXIKLSAgICAgICAgICAgIGwgPSBtb2R1bGVzX2J5X2Rpci5nZXQoZGlyLCBbXSkKLSAgICAgICAgICAgIG1vZHVsZXNfYnlfZGlyW2Rpcl0gPSBsCi0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBsOgotICAgICAgICAgICAgICAgIGwuYXBwZW5kKG5hbWUpCi0gICAgIyBsb2FkIHVwIGV4dGVuc2lvbiBtb2R1bGVzOgotICAgIHB3ZCA9IG9zLmdldGN3ZCgpCi0gICAgdHJ5OgotICAgICAgICBvcy5jaGRpcigiTW9kdWxlcyIpCi0gICAgICAgIGRpciA9ICI8ZXh0ZW5zaW9uPiIKLSAgICAgICAgZm9yIGxpbmUgaW4gZ2xvYi5nbG9iKCIqbW9kdWxlLmMiKToKLSAgICAgICAgICAgIG5hbWUgPSBsaW5lWzotOF0KLSAgICAgICAgICAgIGlmIGlnbm9yZShuYW1lKSBvciBtb2R1bGVzX2J5X25hbWUuaGFzX2tleShuYW1lKSBvciBuYW1lID09ICJ4eCI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG1vZHVsZXNfYnlfbmFtZVtuYW1lXSA9IGRpcgotICAgICAgICAgICAgbCA9IG1vZHVsZXNfYnlfZGlyLmdldChkaXIsIFtdKQotICAgICAgICAgICAgbW9kdWxlc19ieV9kaXJbZGlyXSA9IGwKLSAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIGw6Ci0gICAgICAgICAgICAgICAgbC5hcHBlbmQobmFtZSkKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy5jaGRpcihwd2QpCi0gICAgIwotICAgICMgRHVtcCB0aGUgcmVzdWx0czoKLSAgICAjCi0gICAgaWYgYW5ub3RhdGU6Ci0gICAgICAgIG1vZHVsZXMgPSBtb2R1bGVzX2J5X25hbWUuaXRlbXMoKQotICAgICAgICBtb2R1bGVzLnNvcnQoKQotICAgICAgICB3aWR0aCA9IG1heChtYXAobGVuLCBtb2R1bGVzX2J5X25hbWUua2V5cygpKSkKLSAgICAgICAgZm9ybWF0ID0gIiUlLSVkcyAgJSVzIiAlIHdpZHRoCi0gICAgICAgIGZvciBuYW1lLCBkaXIgaW4gbW9kdWxlczoKLSAgICAgICAgICAgIGlmIGRpciBhbmQgZGlyWzBdICE9ICI8IjoKLSAgICAgICAgICAgICAgICBwcmludCBmb3JtYXQgJSAobmFtZSwgZGlyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCBuYW1lCi0gICAgZWxpZiBjYXRlZ29yaXplOgotICAgICAgICBtb2R1bGVzID0gbW9kdWxlc19ieV9kaXIuaXRlbXMoKQotICAgICAgICBtb2R1bGVzLnNvcnQoKQotICAgICAgICB3aWR0aCA9IG1heChtYXAobGVuLCBtb2R1bGVzX2J5X2Rpci5rZXlzKCkpKQotICAgICAgICBmb3JtYXQgPSAiJSUtJWRzICAlJXMiICUgd2lkdGgKLSAgICAgICAgZm9yIGRpciwgbmFtZXMgaW4gbW9kdWxlczoKLSAgICAgICAgICAgIG5hbWVzLnNvcnQoKQotICAgICAgICAgICAgcHJpbnQgZm9ybWF0ICUgKGRpciwgbmFtZXNbMF0pCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lc1sxOl06Ci0gICAgICAgICAgICAgICAgcHJpbnQgZm9ybWF0ICUgKCcnLCBuYW1lKQotICAgICAgICAgICAgcHJpbnQKLSAgICBlbHNlOgotICAgICAgICBtb2R1bGVzID0gbW9kdWxlc19ieV9uYW1lLmtleXMoKQotICAgICAgICBtb2R1bGVzLnNvcnQoKQotICAgICAgICBwcmludCBzdHJpbmcuam9pbihtb2R1bGVzLCAiXG4iKQotCi0KLWRlZiBpZ25vcmVfZnJvbV9tb2R1bGVsaXN0KGRhdGEsIGlnbm9yZV9kaWN0KToKLSAgICBmb3IgbmFtZSBpbiBzdHJpbmcuc3BsaXQoZGF0YSk6Ci0gICAgICAgIGlnbm9yZV9kaWN0W25hbWVdID0gbmFtZQotCi1kZWYgaWdub3JlX2Zyb21faWR4KGRhdGEsIGlnbm9yZV9kaWN0KToKLSAgICBkYXRhID0gc3RyaW5nLnJlcGxhY2UoZGF0YSwgciJcaGFja3Njb3JlICB7fSIsICJfIikKLSAgICByeCA9IHJlLmNvbXBpbGUociJcXGluZGV4ZW50cnlccyp7KFteQF0qKUAiKQotICAgIGZvciBsaW5lIGluIHN0cmluZy5zcGxpdChkYXRhLCAiXG4iKToKLSAgICAgICAgbSA9IHJ4Lm1hdGNoKGxpbmUpCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgICBuYW1lID0gbS5ncm91cCgxKQotICAgICAgICAgICAgaWdub3JlX2RpY3RbbmFtZV0gPSBuYW1lCi0KLQotZGVmIHVzYWdlKCk6Ci0gICAgdmFycyA9IHt9Ci0gICAgdmFyc1sicHJvZ3JhbSJdID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKLSAgICBwcmludCBfX2RvY19fICUgdmFycwotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvbWthY2tzaHRtbCBiL2RvYy90b29scy9ta2Fja3NodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5MTdiMzAzLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9ta2Fja3NodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotIyAgLSotIFB5dGhvbiAtKi0KLQotaW1wb3J0IHN0cmluZwotaW1wb3J0IHN1cHBvcnQKLWltcG9ydCBzeXMKLQotCi1kZWYgY29sbGVjdChmcCk6Ci0gICAgbmFtZXMgPSBbXQotICAgIHdoaWxlIDE6Ci0gICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgbGluZSA9IHN0cmluZy5zdHJpcChsaW5lKQotICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgbmFtZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lcyA9IFtdCi0gICAgcmV0dXJuIG5hbWVzCi0KLQotZGVmIG1haW4oKToKLSAgICBvcHRpb25zID0gc3VwcG9ydC5PcHRpb25zKCkKLSAgICBvcHRpb25zLmNvbHVtbnMgPSA0Ci0gICAgb3B0aW9ucy52YXJpYWJsZXNbInRpdGxlIl0gPSAiQWNrbm93bGVkZ2VtZW50cyIKLSAgICBvcHRpb25zLnBhcnNlKHN5cy5hcmd2WzE6XSkKLSAgICBuYW1lcyA9IGNvbGxlY3Qoc3lzLnN0ZGluKQotICAgIHBlcmNvbCA9IChsZW4obmFtZXMpICsgb3B0aW9ucy5jb2x1bW5zIC0gMSkgLyBvcHRpb25zLmNvbHVtbnMKLSAgICBjb2xudW1zID0gW10KLSAgICBmb3IgaSBpbiByYW5nZShvcHRpb25zLmNvbHVtbnMpOgotICAgICAgICBjb2xudW1zLmFwcGVuZChwZXJjb2wqaSkKLSAgICBmcCA9IG9wdGlvbnMuZ2V0X291dHB1dF9maWxlKCkKLSAgICBmcC53cml0ZShzdHJpbmcucnN0cmlwKG9wdGlvbnMuZ2V0X2hlYWRlcigpKSArICJcbiIpCi0gICAgZnAud3JpdGUoVEhBTktTICsgIlxuIikKLSAgICBmcC53cml0ZSgnPHRhYmxlIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj5cbicpCi0gICAgZm9yIGkgaW4gcmFuZ2UocGVyY29sKToKLSAgICAgICAgZnAud3JpdGUoIiAgPHRyPlxuIikKLSAgICAgICAgZm9yIGogaW4gY29sbnVtczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmcC53cml0ZSgiICAgIDx0ZD4lczwvdGQ+XG4iICUgbmFtZXNbaSArIGpdKQotICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBmcC53cml0ZSgiICA8L3RyPlxuIikKLSAgICBmcC53cml0ZSgiPC90YWJsZT5cbiIpCi0gICAgZnAud3JpdGUoc3RyaW5nLnJzdHJpcChvcHRpb25zLmdldF9mb290ZXIoKSkgKyAiXG4iKQotICAgIGZwLmNsb3NlKCkKLQotVEhBTktTID0gJycnXAotCi08cD5UaGVzZSBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCBpbiBzb21lIHdheSB0byB0aGUgUHl0aG9uCi1kb2N1bWVudGF0aW9uLiAgVGhpcyBsaXN0IGlzIHByb2JhYmx5IG5vdCBjb21wbGV0ZSAtLSBpZiB5b3UgZmVlbCB0aGF0Ci15b3Ugb3IgYW55b25lIGVsc2Ugc2hvdWxkIGJlIG9uIHRoaXMgbGlzdCwgcGxlYXNlIGxldCB1cyBrbm93IChzZW5kCi1lbWFpbCB0byA8YQotaHJlZj0ibWFpbHRvOnB5dGhvbi1kb2NzQHB5dGhvbi5vcmciPnB5dGhvbi1kb2NzQHB5dGhvbi5vcmc8L2E+KSwgYW5kCi13ZSB3aWxsIGJlIGdsYWQgdG8gY29ycmVjdCB0aGUgcHJvYmxlbS48L3A+Ci0KLTxwPkl0IGlzIG9ubHkgd2l0aCB0aGUgaW5wdXQgYW5kIGNvbnRyaWJ1dGlvbnMgb2YgdGhlIFB5dGhvbiBjb21tdW5pdHkKLXRoYXQgUHl0aG9uIGhhcyBzdWNoIHdvbmRlcmZ1bCBkb2N1bWVudGF0aW9uIC0tIDxiPlRoYW5rIFlvdSE8L2I+PC9wPgotCi0nJycKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL21raG93dG8gYi9kb2MvdG9vbHMvbWtob3d0bwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZmVlYjA5My4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvbWtob3d0bworKysgL2Rldi9udWxsCkBAIC0xLDU5NyArMCwwIEBACi0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICAtKi0gUHl0aG9uIC0qLQotIiIidXNhZ2U6ICUocHJvZ3JhbSlzIFtvcHRpb25zLi4uXSBmaWxlIC4uLgotCi1PcHRpb25zIHNwZWNpZnlpbmcgZm9ybWF0cyB0byBidWlsZDoKLSAgICAtLWh0bWwJCUh5cGVyVGV4dCBNYXJrdXAgTGFuZ3VhZ2UgKGRlZmF1bHQpCi0gICAgLS1wZGYJCVBvcnRhYmxlIERvY3VtZW50IEZvcm1hdAotICAgIC0tcHMJCVBvc3RTY3JpcHQKLSAgICAtLWR2aQkJJ0RlVmljZSBJbmRlcGVudGVudCcgZm9ybWF0IGZyb20gVGVYCi0gICAgLS10ZXh0CQlBU0NJSSB0ZXh0IChyZXF1aXJlcyBseW54KQotCi0gICAgTW9yZSB0aGFuIG9uZSBvdXRwdXQgZm9ybWF0IG1heSBiZSBzcGVjaWZpZWQsIG9yIC0tYWxsLgotCi1IVE1MIG9wdGlvbnM6Ci0gICAgLS1hZGRyZXNzLCAtYQlTcGVjaWZ5IGFuIGFkZHJlc3MgZm9yIHBhZ2UgZm9vdGVycy4KLSAgICAtLWxpbmsJCVNwZWNpZnkgdGhlIG51bWJlciBvZiBsZXZlbHMgdG8gaW5jbHVkZSBvbiBlYWNoIHBhZ2UuCi0gICAgLS1zcGxpdCwgLXMJCVNwZWNpZnkgYSBzZWN0aW9uIGxldmVsIGZvciBwYWdlIHNwbGl0dGluZywgZGVmYXVsdDogJShtYXhfc3BsaXRfZGVwdGgpcy4KLSAgICAtLWljb25zZXJ2ZXIsIC1pCVNwZWNpZnkgbG9jYXRpb24gb2YgaWNvbnMgKGRlZmF1bHQ6IC4uLykuCi0gICAgLS1pbWFnZS10eXBlCVNwZWNpZnkgdGhlIGltYWdlIHR5cGUgdG8gdXNlIGluIEhUTUwgb3V0cHV0OwotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBnaWYgKGRlZmF1bHQpLCBwbmcuCi0gICAgLS1udW1lcmljICAgICAgICAgICBEb24ndCByZW5hbWUgdGhlIEhUTUwgZmlsZXM7IGp1c3Qga2VlcCBub2RlIy5odG1sIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVuYW1lcy4KLSAgICAtLXN0eWxlICAgICAgICAgICAgIFNwZWNpZnkgdGhlIENTUyBmaWxlIHRvIHVzZSBmb3IgdGhlIG91dHB1dCAoZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYSBVUkwpLgotICAgIC0tdXAtbGluayAgICAgICAgICAgVVJMIHRvIGEgcGFyZW50IGRvY3VtZW50LgotICAgIC0tdXAtdGl0bGUgICAgICAgICAgVGl0bGUgb2YgYSBwYXJlbnQgZG9jdW1lbnQuCi0KLU90aGVyIG9wdGlvbnM6Ci0gICAgLS1hNAkJRm9ybWF0IGZvciBBNCBwYXBlci4KLSAgICAtLWxldHRlcgkJRm9ybWF0IGZvciBVUyBsZXR0ZXIgcGFwZXIgKHRoZSBkZWZhdWx0KS4KLSAgICAtLWhlbHAsIC1ICQlTaG93IHRoaXMgdGV4dC4KLSAgICAtLWxvZ2dpbmcsIC1sCUxvZyBzdGRvdXQgYW5kIHN0ZGVyciB0byBhIGZpbGUgKCouaG93KS4KLSAgICAtLWRlYnVnZ2luZywgLUQJRWNobyBjb21tYW5kcyBhcyB0aGV5IGFyZSBleGVjdXRlZC4KLSAgICAtLWtlZXAsIC1rCQlLZWVwIHRlbXBvcmFyeSBmaWxlcyBhcm91bmQuCi0gICAgLS1xdWlldCwgLXEJCURvIG5vdCBwcmludCBjb21tYW5kIG91dHB1dCB0byBzdGRvdXQuCi0JCQkoc3RkZXJyIGlzIGFsc28gbG9zdCwgIHNvcnJ5OyBzZWUgKi5ob3cgZm9yIGVycm9ycykKLSIiIgotCi1pbXBvcnQgZ2V0b3B0Ci1pbXBvcnQgZ2xvYgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQotCi0KLU1ZRElSID0gb3MucGF0aC5hYnNwYXRoKHN5cy5wYXRoWzBdKQotCi1JU1RGSUxFID0gb3MucGF0aC5qb2luKE1ZRElSLCAidGV4aW5wdXRzIiwgInB5dGhvbi5pc3QiKQotTk9ERTJMQUJFTF9TQ1JJUFQgPSBvcy5wYXRoLmpvaW4oTVlESVIsICJub2RlMmxhYmVsLnBsIikKLUwySF9JTklUX0ZJTEUgPSBvcy5wYXRoLmpvaW4oTVlESVIsICJwZXJsIiwgImwyaGluaXQucGVybCIpCi0KLUJJQlRFWF9CSU5BUlkgPSAiYmlidGV4IgotRFZJUFNfQklOQVJZID0gImR2aXBzIgotTEFURVhfQklOQVJZID0gImxhdGV4IgotTEFURVgySFRNTF9CSU5BUlkgPSAibGF0ZXgyaHRtbCIKLUxZTlhfQklOQVJZID0gImx5bngiCi1NQUtFSU5ERVhfQklOQVJZID0gIm1ha2VpbmRleCIKLVBERkxBVEVYX0JJTkFSWSA9ICJwZGZsYXRleCIKLVBFUkxfQklOQVJZID0gInBlcmwiCi1QWVRIT05fQklOQVJZID0gInB5dGhvbiIKLQotCi1kZWYgdXNhZ2Uob3B0aW9ucyk6Ci0gICAgcHJpbnQgX19kb2NfXyAlIG9wdGlvbnMKLQotZGVmIGVycm9yKG9wdGlvbnMsIG1lc3NhZ2UsIGVycj0yKToKLSAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVycgotICAgIHByaW50IG1lc3NhZ2UKLSAgICBwcmludAotICAgIHVzYWdlKG9wdGlvbnMpCi0gICAgc3lzLmV4aXQoMikKLQotCi1jbGFzcyBPcHRpb25zOgotICAgIHByb2dyYW0gPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQotICAgICMKLSAgICBhZGRyZXNzID0gJycKLSAgICBidWlsZGRpciA9IE5vbmUKLSAgICBkZWJ1Z2dpbmcgPSAwCi0gICAgZGlzY2FyZF90ZW1wcyA9IDEKLSAgICBoYXZlX3RlbXBzID0gMAotICAgIGljb25fc2VydmVyID0gTm9uZQotICAgIGltYWdlX3R5cGUgPSAiZ2lmIgotICAgIGxvZ2dpbmcgPSAwCi0gICAgbWF4X2xpbmtfZGVwdGggPSAzCi0gICAgbWF4X3NwbGl0X2RlcHRoID0gNgotICAgIHBhcGVyID0gImxldHRlciIKLSAgICBxdWlldCA9IDAKLSAgICBydW5zID0gMAotICAgIG51bWVyaWMgPSAwCi0gICAgZ2xvYmFsX21vZHVsZV9pbmRleCA9IE5vbmUKLSAgICBzdHlsZV9maWxlID0gb3MucGF0aC5qb2luKE1ZRElSLCAiaHRtbCIsICJzdHlsZS5jc3MiKQotICAgIGFib3V0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oTVlESVIsICJodG1sIiwgImFib3V0LmRhdCIpCi0gICAgdXBfbGluayA9IE5vbmUKLSAgICB1cF90aXRsZSA9IE5vbmUKLSAgICAjCi0gICAgREVGQVVMVF9GT1JNQVRTID0gKCJodG1sIiwpCi0gICAgQUxMX0ZPUk1BVFMgPSAoImR2aSIsICJodG1sIiwgInBkZiIsICJwcyIsICJ0ZXh0IikKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5mb3JtYXRzID0gW10KLSAgICAgICAgc2VsZi5sMmhfaW5pdF9maWxlcyA9IFtdCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgIyBUaGlzIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSB1c2FnZSBtZXNzYWdlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBrZXkpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEtleUVycm9yLCBrZXkKLQotICAgIGRlZiBwYXJzZShzZWxmLCBhcmdzKToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIkhpOmE6czpsRGtxcjoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImFsbCIsICJwb3N0c2NyaXB0IiwgImhlbHAiLCAiaWNvbnNlcnZlcj0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFkZHJlc3M9IiwgImE0IiwgImxldHRlciIsICJsMmgtaW5pdD0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbms9IiwgInNwbGl0PSIsICJsb2dnaW5nIiwgImRlYnVnZ2luZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2VlcCIsICJxdWlldCIsICJydW5zPSIsICJpbWFnZS10eXBlPSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJvdXQ9IiwgIm51bWVyaWMiLCAic3R5bGU9IiwgInBhcGVyPSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXAtbGluaz0iLCAidXAtdGl0bGU9IiwgImRpcj0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbC1tb2R1bGUtaW5kZXg9Il0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsaXN0KHNlbGYuQUxMX0ZPUk1BVFMpKQotICAgICAgICBmb3Igb3B0LCBhcmcgaW4gb3B0czoKLSAgICAgICAgICAgIGlmIG9wdCA9PSAiLS1hbGwiOgotICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0cyA9IGxpc3Qoc2VsZi5BTExfRk9STUFUUykKLSAgICAgICAgICAgIGVsaWYgb3B0IGluICgiLUgiLCAiLS1oZWxwIik6Ci0gICAgICAgICAgICAgICAgdXNhZ2Uoc2VsZikKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgpCi0gICAgICAgICAgICBlbGlmIG9wdCA9PSAiLS1pY29uc2VydmVyIjoKLSAgICAgICAgICAgICAgICBzZWxmLmljb25fc2VydmVyID0gYXJnCi0gICAgICAgICAgICBlbGlmIG9wdCBpbiAoIi1hIiwgIi0tYWRkcmVzcyIpOgotICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IGFyZwotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tYTQiOgotICAgICAgICAgICAgICAgIHNlbGYucGFwZXIgPSAiYTQiCi0gICAgICAgICAgICBlbGlmIG9wdCA9PSAiLS1sZXR0ZXIiOgotICAgICAgICAgICAgICAgIHNlbGYucGFwZXIgPSAibGV0dGVyIgotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tbGluayI6Ci0gICAgICAgICAgICAgICAgc2VsZi5tYXhfbGlua19kZXB0aCA9IGludChhcmcpCi0gICAgICAgICAgICBlbGlmIG9wdCBpbiAoIi1zIiwgIi0tc3BsaXQiKToKLSAgICAgICAgICAgICAgICBzZWxmLm1heF9zcGxpdF9kZXB0aCA9IGludChhcmcpCi0gICAgICAgICAgICBlbGlmIG9wdCBpbiAoIi1sIiwgIi0tbG9nZ2luZyIpOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2luZyA9IHNlbGYubG9nZ2luZyArIDEKLSAgICAgICAgICAgIGVsaWYgb3B0IGluICgiLUQiLCAiLS1kZWJ1Z2dpbmciKToKLSAgICAgICAgICAgICAgICBzZWxmLmRlYnVnZ2luZyA9IHNlbGYuZGVidWdnaW5nICsgMQotICAgICAgICAgICAgZWxpZiBvcHQgaW4gKCItayIsICItLWtlZXAiKToKLSAgICAgICAgICAgICAgICBzZWxmLmRpc2NhcmRfdGVtcHMgPSAwCi0gICAgICAgICAgICBlbGlmIG9wdCBpbiAoIi1xIiwgIi0tcXVpZXQiKToKLSAgICAgICAgICAgICAgICBzZWxmLnF1aWV0ID0gMQotICAgICAgICAgICAgZWxpZiBvcHQgaW4gKCItciIsICItLXJ1bnMiKToKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bnMgPSBpbnQoYXJnKQotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0taW1hZ2UtdHlwZSI6Ci0gICAgICAgICAgICAgICAgc2VsZi5pbWFnZV90eXBlID0gYXJnCi0gICAgICAgICAgICBlbGlmIG9wdCA9PSAiLS1hYm91dCI6Ci0gICAgICAgICAgICAgICAgIyBhbHdheXMgbWFrZSB0aGlzIGFic29sdXRlOgotICAgICAgICAgICAgICAgIHNlbGYuYWJvdXRfZmlsZSA9IG9zLnBhdGgubm9ybXBhdGgoCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aChhcmcpKQotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tbnVtZXJpYyI6Ci0gICAgICAgICAgICAgICAgc2VsZi5udW1lcmljID0gMQotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tc3R5bGUiOgotICAgICAgICAgICAgICAgIHNlbGYuc3R5bGVfZmlsZSA9IG9zLnBhdGguYWJzcGF0aChhcmcpCi0gICAgICAgICAgICBlbGlmIG9wdCA9PSAiLS1sMmgtaW5pdCI6Ci0gICAgICAgICAgICAgICAgc2VsZi5sMmhfaW5pdF9maWxlcy5hcHBlbmQob3MucGF0aC5hYnNwYXRoKGFyZykpCi0gICAgICAgICAgICBlbGlmIG9wdCA9PSAiLS11cC1saW5rIjoKLSAgICAgICAgICAgICAgICBzZWxmLnVwX2xpbmsgPSBhcmcKLSAgICAgICAgICAgIGVsaWYgb3B0ID09ICItLXVwLXRpdGxlIjoKLSAgICAgICAgICAgICAgICBzZWxmLnVwX3RpdGxlID0gYXJnCi0gICAgICAgICAgICBlbGlmIG9wdCA9PSAiLS1nbG9iYWwtbW9kdWxlLWluZGV4IjoKLSAgICAgICAgICAgICAgICBzZWxmLmdsb2JhbF9tb2R1bGVfaW5kZXggPSBhcmcKLSAgICAgICAgICAgIGVsaWYgb3B0ID09ICItLWRpciI6Ci0gICAgICAgICAgICAgICAgc2VsZi5idWlsZGRpciA9IGFyZwotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tcGFwZXIiOgotICAgICAgICAgICAgICAgIHNlbGYucGFwZXIgPSBhcmcKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgRm9ybWF0IHNwZWNpZmllcnM6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICBlbGlmIG9wdFsyOl0gaW4gc2VsZi5BTExfRk9STUFUUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFkZF9mb3JtYXQob3B0WzI6XSkKLSAgICAgICAgICAgIGVsaWYgb3B0ID09ICItLXBvc3RzY3JpcHQiOgotICAgICAgICAgICAgICAgICMgc3lub255bSBmb3IgLS1wcwotICAgICAgICAgICAgICAgIHNlbGYuYWRkX2Zvcm1hdCgicHMiKQotICAgICAgICBzZWxmLmluaXRpYWxpemUoKQotICAgICAgICAjCi0gICAgICAgICMgcmV0dXJuIHRoZSBhcmdzIHRvIGFsbG93IHRoZSBjYWxsZXIgYWNjZXNzOgotICAgICAgICAjCi0gICAgICAgIHJldHVybiBhcmdzCi0KLSAgICBkZWYgYWRkX2Zvcm1hdChzZWxmLCBmb3JtYXQpOgotICAgICAgICAiIiJBZGQgYSBmb3JtYXQgdG8gdGhlIGZvcm1hdHMgbGlzdCBpZiBub3QgcHJlc2VudC4iIiIKLSAgICAgICAgaWYgbm90IGZvcm1hdCBpbiBzZWxmLmZvcm1hdHM6Ci0gICAgICAgICAgICBzZWxmLmZvcm1hdHMuYXBwZW5kKGZvcm1hdCkKLQotICAgIGRlZiBpbml0aWFsaXplKHNlbGYpOgotICAgICAgICAiIiJDb21wbGV0ZSBpbml0aWFsaXphdGlvbi4gIFRoaXMgaXMgbmVlZGVkIGlmIHBhcnNlKCkgaXNuJ3QgdXNlZC4iIiIKLSAgICAgICAgIyBhZGQgdGhlIGRlZmF1bHQgZm9ybWF0IGlmIG5vIGZvcm1hdHMgd2VyZSBzcGVjaWZpZWQ6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmZvcm1hdHM6Ci0gICAgICAgICAgICBzZWxmLmZvcm1hdHMgPSBzZWxmLkRFRkFVTFRfRk9STUFUUwotICAgICAgICAjIGRldGVybWluZSB0aGUgYmFzZSBzZXQgb2YgdGV4aW5wdXRzIGRpcmVjdG9yaWVzOgotICAgICAgICB0ZXhpbnB1dHMgPSBzdHJpbmcuc3BsaXQob3MuZW52aXJvbi5nZXQoIlRFWElOUFVUUyIsICIiKSwgb3MucGF0aHNlcCkKLSAgICAgICAgaWYgbm90IHRleGlucHV0czoKLSAgICAgICAgICAgIHRleGlucHV0cyA9IFsnJ10KLSAgICAgICAgc2VsZi5iYXNlX3RleGlucHV0cyA9IFsKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihNWURJUiwgInBhcGVyLSIgKyBzZWxmLnBhcGVyKSwKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihNWURJUiwgInRleGlucHV0cyIpLAotICAgICAgICAgICAgXSArIHRleGlucHV0cwotCi0KLWNsYXNzIEpvYjoKLSAgICBsYXRleF9ydW5zID0gMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIHBhdGgpOgotICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuZG9jdHlwZSA9IGdldF9kb2N0eXBlKHBhdGgpCi0gICAgICAgIHNlbGYuZmlsZWRpciwgc2VsZi5kb2MgPSBzcGxpdF9wYXRobmFtZShwYXRoKQotICAgICAgICBzZWxmLmxvZ19maWxlbmFtZSA9IHNlbGYuZG9jICsgIi5ob3ciCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYubG9nX2ZpbGVuYW1lKToKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmxvZ19maWxlbmFtZSkKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5kb2MgKyAiLmwyaCIpOgotICAgICAgICAgICAgc2VsZi5sMmhfYXV4X2luaXRfZmlsZSA9IHRlbXBmaWxlLm1rdGVtcCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmwyaF9hdXhfaW5pdF9maWxlID0gc2VsZi5kb2MgKyAiLmwyaCIKLSAgICAgICAgc2VsZi53cml0ZV9sMmhfYXV4X2luaXRfZmlsZSgpCi0KLSAgICBkZWYgYnVpbGQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBfdGV4aW5wdXRzKCkKLSAgICAgICAgZm9ybWF0cyA9IHNlbGYub3B0aW9ucy5mb3JtYXRzCi0gICAgICAgIGlmICJkdmkiIGluIGZvcm1hdHMgb3IgInBzIiBpbiBmb3JtYXRzOgotICAgICAgICAgICAgc2VsZi5idWlsZF9kdmkoKQotICAgICAgICBpZiAicGRmIiBpbiBmb3JtYXRzOgotICAgICAgICAgICAgc2VsZi5idWlsZF9wZGYoKQotICAgICAgICBpZiAicHMiIGluIGZvcm1hdHM6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkX3BzKCkKLSAgICAgICAgaWYgImh0bWwiIGluIGZvcm1hdHM6Ci0gICAgICAgICAgICBzZWxmLnJlcXVpcmVfdGVtcHMoKQotICAgICAgICAgICAgc2VsZi5idWlsZF9odG1sKHNlbGYub3B0aW9ucy5idWlsZGRpciBvciBzZWxmLmRvYykKLSAgICAgICAgICAgIGlmIHNlbGYub3B0aW9ucy5pY29uX3NlcnZlciA9PSAiLiI6Ci0gICAgICAgICAgICAgICAgcGF0dGVybiA9IG9zLnBhdGguam9pbihNWURJUiwgImh0bWwiLCAiaWNvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiouIiArIHNlbGYub3B0aW9ucy5pbWFnZV90eXBlKQotICAgICAgICAgICAgICAgIGltZ3MgPSBnbG9iLmdsb2IocGF0dGVybikKLSAgICAgICAgICAgICAgICBpZiBub3QgaW1nczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBsb2NhdGUgc3VwcG9ydCBpbWFnZXMgb2YgdHlwZSAlcy4iCi0gICAgICAgICAgICAgICAgICAgICAgICAlIGBzZWxmLm9wdGlvbnMuaW1hZ2VfdHlwZWApCi0gICAgICAgICAgICAgICAgZm9yIGZuIGluIGltZ3M6Ci0gICAgICAgICAgICAgICAgICAgIG5ld19mbiA9IG9zLnBhdGguam9pbihzZWxmLmRvYywgb3MucGF0aC5iYXNlbmFtZShmbikpCi0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShmbiwgbmV3X2ZuKQotICAgICAgICBpZiAidGV4dCIgaW4gZm9ybWF0czoKLSAgICAgICAgICAgIHNlbGYucmVxdWlyZV90ZW1wcygpCi0gICAgICAgICAgICB0ZW1wZGlyID0gc2VsZi5kb2MKLSAgICAgICAgICAgIG5lZWRfaHRtbCA9ICJodG1sIiBub3QgaW4gZm9ybWF0cwotICAgICAgICAgICAgaWYgc2VsZi5vcHRpb25zLm1heF9zcGxpdF9kZXB0aCAhPSAxOgotICAgICAgICAgICAgICAgIGZwID0gb3BlbihzZWxmLmwyaF9hdXhfaW5pdF9maWxlLCAiYSIpCi0gICAgICAgICAgICAgICAgZnAud3JpdGUoIiMgcmUtaGFjayB0aGlzIGZpbGUgZm9yIC0tdGV4dDpcbiIpCi0gICAgICAgICAgICAgICAgbDJob3B0aW9uKGZwLCAiTUFYX1NQTElUX0RFUFRIIiwgIjEiKQotICAgICAgICAgICAgICAgIGZwLndyaXRlKCIxO1xuIikKLSAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgdGVtcGRpciA9IHNlbGYuZG9jICsgIi10ZW1wLWh0bWwiCi0gICAgICAgICAgICAgICAgbmVlZF9odG1sID0gMQotICAgICAgICAgICAgaWYgbmVlZF9odG1sOgotICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRfaHRtbCh0ZW1wZGlyLCBtYXhfc3BsaXRfZGVwdGg9MSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGRfdGV4dCh0ZW1wZGlyKQotICAgICAgICBpZiBzZWxmLm9wdGlvbnMuZGlzY2FyZF90ZW1wczoKLSAgICAgICAgICAgIHNlbGYuY2xlYW51cCgpCi0KLSAgICBkZWYgc2V0dXBfdGV4aW5wdXRzKHNlbGYpOgotICAgICAgICB0ZXhpbnB1dHMgPSBbc2VsZi5maWxlZGlyXSArIGxpc3Qoc2VsZi5vcHRpb25zLmJhc2VfdGV4aW5wdXRzKQotICAgICAgICBvcy5lbnZpcm9uWyJURVhJTlBVVFMiXSA9IHN0cmluZy5qb2luKFsnLiddK3RleGlucHV0cywgb3MucGF0aHNlcCkKLSAgICAgICAgc2VsZi5tZXNzYWdlKCJURVhJTlBVVFM9IiArIG9zLmVudmlyb25bIlRFWElOUFVUUyJdKQotCi0gICAgZGVmIGJ1aWxkX2F1eChzZWxmLCBiaW5hcnk9Tm9uZSk6Ci0gICAgICAgIGlmIGJpbmFyeSBpcyBOb25lOgotICAgICAgICAgICAgYmluYXJ5ID0gTEFURVhfQklOQVJZCi0gICAgICAgIG5ld19pbmRleCggICAiJXMuaW5kIiAlIHNlbGYuZG9jLCAiZ2VuaW5kZXgiKQotICAgICAgICBuZXdfaW5kZXgoIm1vZCVzLmluZCIgJSBzZWxmLmRvYywgIm1vZGluZGV4IikKLSAgICAgICAgc2VsZi5ydW4oIiVzICVzIiAlIChiaW5hcnksIHNlbGYuZG9jKSkKLSAgICAgICAgc2VsZi51c2VfYmlidGV4ID0gY2hlY2tfZm9yX2JpYnRleChzZWxmLmRvYyArICIuYXV4IikKLSAgICAgICAgc2VsZi5sYXRleF9ydW5zID0gMQotCi0gICAgZGVmIGJ1aWxkX2R2aShzZWxmKToKLSAgICAgICAgc2VsZi51c2VfbGF0ZXgoTEFURVhfQklOQVJZKQotCi0gICAgZGVmIGJ1aWxkX3BkZihzZWxmKToKLSAgICAgICAgc2VsZi51c2VfbGF0ZXgoUERGTEFURVhfQklOQVJZKQotCi0gICAgZGVmIHVzZV9sYXRleChzZWxmLCBiaW5hcnkpOgotICAgICAgICBzZWxmLnJlcXVpcmVfdGVtcHMoYmluYXJ5PWJpbmFyeSkKLSAgICAgICAgaWYgc2VsZi5sYXRleF9ydW5zIDwgMjoKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKCJtb2Qlcy5pZHgiICUgc2VsZi5kb2MpOgotICAgICAgICAgICAgICAgIHNlbGYucnVuKCIlcyBtb2Qlcy5pZHgiICUgKE1BS0VJTkRFWF9CSU5BUlksIHNlbGYuZG9jKSkKLSAgICAgICAgICAgIHVzZV9pbmRmaXggPSAwCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmRvYyArICIuaWR4Iik6Ci0gICAgICAgICAgICAgICAgdXNlX2luZGZpeCA9IDEKLSAgICAgICAgICAgICAgICAjIGNhbGwgdG8gRG9jL3Rvb2xzL2ZpeF9oYWNrIG9taXR0ZWQ7IGRvZXNuJ3QgYXBwZWFyIG5lY2Vzc2FyeQotICAgICAgICAgICAgICAgIHNlbGYucnVuKCIlcyAlcy5pZHgiICUgKE1BS0VJTkRFWF9CSU5BUlksIHNlbGYuZG9jKSkKLSAgICAgICAgICAgICAgICBpbXBvcnQgaW5kZml4Ci0gICAgICAgICAgICAgICAgaW5kZml4LnByb2Nlc3Moc2VsZi5kb2MgKyAiLmluZCIpCi0gICAgICAgICAgICBpZiBzZWxmLnVzZV9iaWJ0ZXg6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydW4oIiVzICVzIiAlIChCSUJURVhfQklOQVJZLCBzZWxmLmRvYykpCi0gICAgICAgICAgICBzZWxmLnByb2Nlc3Nfc3lub3BzaXNfZmlsZXMoKQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBsZXQgdGhlIGRvY3R5cGUtc3BlY2lmaWMgaGFuZGxlciBkbyBzb21lIGludGVybWVkaWF0ZSB3b3JrOgotICAgICAgICAgICAgIwotICAgICAgICAgICAgc2VsZi5ydW4oIiVzICVzIiAlIChiaW5hcnksIHNlbGYuZG9jKSkKLSAgICAgICAgICAgIHNlbGYubGF0ZXhfcnVucyA9IHNlbGYubGF0ZXhfcnVucyArIDEKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKCJtb2Qlcy5pZHgiICUgc2VsZi5kb2MpOgotICAgICAgICAgICAgICAgIHNlbGYucnVuKCIlcyAtcyAlcyBtb2Qlcy5pZHgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSAoTUFLRUlOREVYX0JJTkFSWSwgSVNURklMRSwgc2VsZi5kb2MpKQotICAgICAgICAgICAgaWYgdXNlX2luZGZpeDoKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bigiJXMgLXMgJXMgJXMuaWR4IgotICAgICAgICAgICAgICAgICAgICAgICAgICUgKE1BS0VJTkRFWF9CSU5BUlksIElTVEZJTEUsIHNlbGYuZG9jKSkKLSAgICAgICAgICAgICAgICBpbmRmaXgucHJvY2VzcyhzZWxmLmRvYyArICIuaW5kIikKLSAgICAgICAgICAgIHNlbGYucHJvY2Vzc19zeW5vcHNpc19maWxlcygpCi0gICAgICAgICMKLSAgICAgICAgIyBhbmQgbm93IGZpbmlzaCBpdCBvZmY6Ci0gICAgICAgICMKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5kb2MgKyAiLnRvYyIpIGFuZCBiaW5hcnkgPT0gUERGTEFURVhfQklOQVJZOgotICAgICAgICAgICAgaW1wb3J0IHRvYzJia20KLSAgICAgICAgICAgIGlmIHNlbGYuZG9jdHlwZSA9PSAibWFudWFsIjoKLSAgICAgICAgICAgICAgICBiaWdwYXJ0ID0gImNoYXB0ZXIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJpZ3BhcnQgPSAic2VjdGlvbiIKLSAgICAgICAgICAgIHRvYzJia20ucHJvY2VzcyhzZWxmLmRvYyArICIudG9jIiwgc2VsZi5kb2MgKyAiLmJrbSIsIGJpZ3BhcnQpCi0gICAgICAgIGlmIHNlbGYudXNlX2JpYnRleDoKLSAgICAgICAgICAgIHNlbGYucnVuKCIlcyAlcyIgJSAoQklCVEVYX0JJTkFSWSwgc2VsZi5kb2MpKQotICAgICAgICBzZWxmLnJ1bigiJXMgJXMiICUgKGJpbmFyeSwgc2VsZi5kb2MpKQotICAgICAgICBzZWxmLmxhdGV4X3J1bnMgPSBzZWxmLmxhdGV4X3J1bnMgKyAxCi0KLSAgICBkZWYgcHJvY2Vzc19zeW5vcHNpc19maWxlcyhzZWxmKToKLSAgICAgICAgc3lub3BzaXNfZmlsZXMgPSBnbG9iLmdsb2Ioc2VsZi5kb2MgKyAiKi5zeW4iKQotICAgICAgICBmb3IgcGF0aCBpbiBzeW5vcHNpc19maWxlczoKLSAgICAgICAgICAgIHVuaXFpZnlfbW9kdWxlX3RhYmxlKHBhdGgpCi0KLSAgICBkZWYgYnVpbGRfcHMoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuKCIlcyAtTjAgLW8gJXMucHMgJXMiICUgKERWSVBTX0JJTkFSWSwgc2VsZi5kb2MsIHNlbGYuZG9jKSkKLQotICAgIGRlZiBidWlsZF9odG1sKHNlbGYsIGJ1aWxkZGlyPU5vbmUsIG1heF9zcGxpdF9kZXB0aD1Ob25lKToKLSAgICAgICAgaWYgYnVpbGRkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGJ1aWxkZGlyID0gc2VsZi5kb2MKLSAgICAgICAgaWYgbWF4X3NwbGl0X2RlcHRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBtYXhfc3BsaXRfZGVwdGggPSBzZWxmLm9wdGlvbnMubWF4X3NwbGl0X2RlcHRoCi0gICAgICAgIHRleGZpbGUgPSBOb25lCi0gICAgICAgIGZvciBwIGluIHN0cmluZy5zcGxpdChvcy5lbnZpcm9uWyJURVhJTlBVVFMiXSwgb3MucGF0aHNlcCk6Ci0gICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihwLCBzZWxmLmRvYyArICIudGV4IikKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuKToKLSAgICAgICAgICAgICAgICB0ZXhmaWxlID0gZm4KLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3QgdGV4ZmlsZToKLSAgICAgICAgICAgIHNlbGYud2FybmluZygiQ291bGQgbm90IGxvY2F0ZSAlcy50ZXg7IGFib3J0aW5nLiIgJSBzZWxmLmRvYykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgICMgcmVtb3ZlIGxlYWRpbmcgLi8gKG9yIGVxdWl2Lik7IG1pZ2h0IGF2b2lkIHByb2JsZW1zIHcvIGR2aXBzCi0gICAgICAgIGlmIHRleGZpbGVbOjJdID09IG9zLmN1cmRpciArIG9zLnNlcDoKLSAgICAgICAgICAgIHRleGZpbGUgPSB0ZXhmaWxlWzI6XQotICAgICAgICAjIGJ1aWxkIHRoZSBjb21tYW5kIGxpbmUgYW5kIHJ1biBMYVRlWDJIVE1MOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihidWlsZGRpcik6Ci0gICAgICAgICAgICBvcy5ta2RpcihidWlsZGRpcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBmbmFtZSBpbiBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiKi5odG1sIikpOgotICAgICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKLSAgICAgICAgYXJncyA9IFtMQVRFWDJIVE1MX0JJTkFSWSwKLSAgICAgICAgICAgICAgICAiLWluaXRfZmlsZSIsIHNlbGYubDJoX2F1eF9pbml0X2ZpbGUsCi0gICAgICAgICAgICAgICAgIi1kaXIiLCBidWlsZGRpciwKLSAgICAgICAgICAgICAgICB0ZXhmaWxlCi0gICAgICAgICAgICAgICAgXQotICAgICAgICBzZWxmLnJ1bihzdHJpbmcuam9pbihhcmdzKSkgICAgICMgWFhYIG5lZWQgcXVvdGluZyEKLSAgICAgICAgIyAuLi4gcG9zdHByb2Nlc3MKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYub3B0aW9ucy5zdHlsZV9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCBzZWxmLmRvYyArICIuY3NzIikpCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHNlbGYuZG9jICsgIi5odG1sIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJpbmRleC5odG1sIikpCi0gICAgICAgIGlmIG1heF9zcGxpdF9kZXB0aCAhPSAxOgotICAgICAgICAgICAgaWYgc2VsZi5vcHRpb25zLm51bWVyaWM6Ci0gICAgICAgICAgICAgICAgbGFiZWxfZmlsZSA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImxhYmVscy5wbCIpCi0gICAgICAgICAgICAgICAgZnAgPSBvcGVuKGxhYmVsX2ZpbGUpCi0gICAgICAgICAgICAgICAgYWJvdXRfbm9kZSA9IE5vbmUKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSAiID0gcS9hYm91dC87XG4iCi0gICAgICAgICAgICAgICAgeCA9IGxlbih0YXJnZXQpCi0gICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBpZiBsaW5lWy14Ol0gPT0gdGFyZ2V0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2gociJcfChub2RlXGQrXC5bYS16XSspXHwiLCBsaW5lKQotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXRfbm9kZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIGFib3V0X25vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImFib3V0Lmh0bWwiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHB3ZCA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvcy5jaGRpcihidWlsZGRpcikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW4oIiVzICVzICouaHRtbCIgJSAoUEVSTF9CSU5BUlksIE5PREUyTEFCRUxfU0NSSVBUKSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBvcy5jaGRpcihwd2QpCi0KLSAgICBkZWYgYnVpbGRfdGV4dChzZWxmLCB0ZW1wZGlyPU5vbmUpOgotICAgICAgICBpZiB0ZW1wZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICB0ZW1wZGlyID0gc2VsZi5kb2MKLSAgICAgICAgaW5kZXhmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICJpbmRleC5odG1sIikKLSAgICAgICAgc2VsZi5ydW4oIiVzIC1ub2xpc3QgLWR1bXAgJXMgPiVzLnR4dCIKLSAgICAgICAgICAgICAgICAgJSAoTFlOWF9CSU5BUlksIGluZGV4ZmlsZSwgc2VsZi5kb2MpKQotCi0gICAgZGVmIHJlcXVpcmVfdGVtcHMoc2VsZiwgYmluYXJ5PU5vbmUpOgotICAgICAgICBpZiBub3Qgc2VsZi5sYXRleF9ydW5zOgotICAgICAgICAgICAgc2VsZi5idWlsZF9hdXgoYmluYXJ5PWJpbmFyeSkKLQotICAgIGRlZiB3cml0ZV9sMmhfYXV4X2luaXRfZmlsZShzZWxmKToKLSAgICAgICAgb3B0aW9ucyA9IHNlbGYub3B0aW9ucwotICAgICAgICBmcCA9IG9wZW4oc2VsZi5sMmhfYXV4X2luaXRfZmlsZSwgInciKQotICAgICAgICBkID0gc3RyaW5nX3RvX3Blcmwob3MucGF0aC5kaXJuYW1lKEwySF9JTklUX0ZJTEUpKQotICAgICAgICBmcC53cml0ZSgicGFja2FnZSBtYWluO1xuIgotICAgICAgICAgICAgICAgICAicHVzaCAoQElOQywgJyVzJyk7XG4iCi0gICAgICAgICAgICAgICAgICIkbXlkaXIgPSAnJXMnO1xuIgotICAgICAgICAgICAgICAgICAlIChkLCBkKSkKLSAgICAgICAgZnAud3JpdGUob3BlbihMMkhfSU5JVF9GSUxFKS5yZWFkKCkpCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiBvcHRpb25zLmwyaF9pbml0X2ZpbGVzOgotICAgICAgICAgICAgZnAud3JpdGUoIlxuIyBpbml0aWFsaXphdGlvbiBjb2RlIGluY29ycG9yYXRlZCBmcm9tOlxuIyAiKQotICAgICAgICAgICAgZnAud3JpdGUoZmlsZW5hbWUpCi0gICAgICAgICAgICBmcC53cml0ZSgiXG4iKQotICAgICAgICAgICAgZnAud3JpdGUob3BlbihmaWxlbmFtZSkucmVhZCgpKQotICAgICAgICBmcC53cml0ZSgiXG4iCi0gICAgICAgICAgICAgICAgICIjIGF1eGlsbGFyeSBpbml0IGZpbGUgZm9yIGxhdGV4Mmh0bWxcbiIKLSAgICAgICAgICAgICAgICAgIiMgZ2VuZXJhdGVkIGJ5IG1raG93dG9cbiIKLSAgICAgICAgICAgICAgICAgIiROT19BVVRPX0xJTksgPSAxO1xuIgotICAgICAgICAgICAgICAgICApCi0gICAgICAgIGwyaG9wdGlvbihmcCwgIkFCT1VUX0ZJTEUiLCBvcHRpb25zLmFib3V0X2ZpbGUpCi0gICAgICAgIGwyaG9wdGlvbihmcCwgIklDT05TRVJWRVIiLCBvcHRpb25zLmljb25fc2VydmVyKQotICAgICAgICBsMmhvcHRpb24oZnAsICJJTUFHRV9UWVBFIiwgb3B0aW9ucy5pbWFnZV90eXBlKQotICAgICAgICBsMmhvcHRpb24oZnAsICJBRERSRVNTIiwgb3B0aW9ucy5hZGRyZXNzKQotICAgICAgICBsMmhvcHRpb24oZnAsICJNQVhfTElOS19ERVBUSCIsIG9wdGlvbnMubWF4X2xpbmtfZGVwdGgpCi0gICAgICAgIGwyaG9wdGlvbihmcCwgIk1BWF9TUExJVF9ERVBUSCIsIG9wdGlvbnMubWF4X3NwbGl0X2RlcHRoKQotICAgICAgICBsMmhvcHRpb24oZnAsICJFWFRFUk5BTF9VUF9MSU5LIiwgb3B0aW9ucy51cF9saW5rKQotICAgICAgICBsMmhvcHRpb24oZnAsICJFWFRFUk5BTF9VUF9USVRMRSIsIG9wdGlvbnMudXBfdGl0bGUpCi0gICAgICAgIGwyaG9wdGlvbihmcCwgIkdMT0JBTF9NT0RVTEVfSU5ERVgiLCBvcHRpb25zLmdsb2JhbF9tb2R1bGVfaW5kZXgpCi0gICAgICAgIGZwLndyaXRlKCIxO1xuIikKLSAgICAgICAgZnAuY2xvc2UoKQotCi0gICAgZGVmIGNsZWFudXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX19oYXZlX3RlbXBzID0gMAotICAgICAgICBmb3IgcGF0dGVybiBpbiAoIiVzLmF1eCIsICIlcy5sb2ciLCAiJXMub3V0IiwgIiVzLnRvYyIsICIlcy5ia20iLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVzLmlkeCIsICIlcy5pbGciLCAiJXMuaW5kIiwgIiVzLnBsYSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXMuYmJsIiwgIiVzLmJsZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibW9kJXMuaWR4IiwgIm1vZCVzLmluZCIsICJtb2Qlcy5pbGciLAotICAgICAgICAgICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgIHNhZmVfdW5saW5rKHBhdHRlcm4gJSBzZWxmLmRvYykKLSAgICAgICAgbWFwKHNhZmVfdW5saW5rLCBnbG9iLmdsb2Ioc2VsZi5kb2MgKyAiKi5zeW4iKSkKLSAgICAgICAgZm9yIHNwZWMgaW4gKCJJTUcqIiwgIioucGwiLCAiV0FSTklOR1MiLCAiaW5kZXguZGF0IiwgIm1vZGluZGV4LmRhdCIpOgotICAgICAgICAgICAgcGF0dGVybiA9IG9zLnBhdGguam9pbihzZWxmLmRvYywgc3BlYykKLSAgICAgICAgICAgIG1hcChzYWZlX3VubGluaywgZ2xvYi5nbG9iKHBhdHRlcm4pKQotICAgICAgICBpZiAiZHZpIiBub3QgaW4gc2VsZi5vcHRpb25zLmZvcm1hdHM6Ci0gICAgICAgICAgICBzYWZlX3VubGluayhzZWxmLmRvYyArICIuZHZpIikKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzZWxmLmRvYyArICItdGVtcC1odG1sIik6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZG9jICsgIi10ZW1wLWh0bWwiLCBpZ25vcmVfZXJyb3JzPTEpCi0gICAgICAgIGlmIG5vdCBzZWxmLm9wdGlvbnMubG9nZ2luZzoKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmxvZ19maWxlbmFtZSkKLSAgICAgICAgaWYgbm90IHNlbGYub3B0aW9ucy5kZWJ1Z2dpbmc6Ci0gICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5sMmhfYXV4X2luaXRfZmlsZSkKLQotICAgIGRlZiBydW4oc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIHNlbGYubWVzc2FnZShjb21tYW5kKQotICAgICAgICByYyA9IG9zLnN5c3RlbSgiKCVzKSA8L2Rldi9udWxsID4+JXMgMj4mMSIKLSAgICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgc2VsZi5sb2dfZmlsZW5hbWUpKQotICAgICAgICBpZiByYzoKLSAgICAgICAgICAgIHNlbGYud2FybmluZygKLSAgICAgICAgICAgICAgICAiU2Vzc2lvbiB0cmFuc2NyaXB0IGFuZCBlcnJvciBtZXNzYWdlcyBhcmUgaW4gJXMuIgotICAgICAgICAgICAgICAgICUgc2VsZi5sb2dfZmlsZW5hbWUpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJUaGUgcmVsZXZhbnQgbGluZXMgZnJvbSB0aGUgdHJhbnNjcmlwdCBhcmU6XG4iKQotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiLSIgKiA3MiArICJcbiIpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlbGluZXMoZ2V0X3J1bl90cmFuc2NyaXB0KHNlbGYubG9nX2ZpbGVuYW1lKSkKLSAgICAgICAgICAgIHN5cy5leGl0KHJjKQotCi0gICAgZGVmIG1lc3NhZ2Uoc2VsZiwgbXNnKToKLSAgICAgICAgbXNnID0gIisrKyAiICsgbXNnCi0gICAgICAgIGlmIG5vdCBzZWxmLm9wdGlvbnMucXVpZXQ6Ci0gICAgICAgICAgICBwcmludCBtc2cKLSAgICAgICAgc2VsZi5sb2cobXNnICsgIlxuIikKLQotICAgIGRlZiB3YXJuaW5nKHNlbGYsIG1zZyk6Ci0gICAgICAgIG1zZyA9ICIqKiogJXNcbiIgJSBtc2cKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZShtc2cpCi0gICAgICAgIHNlbGYubG9nKG1zZykKLQotICAgIGRlZiBsb2coc2VsZiwgbXNnKToKLSAgICAgICAgZnAgPSBvcGVuKHNlbGYubG9nX2ZpbGVuYW1lLCAiYSIpCi0gICAgICAgIGZwLndyaXRlKG1zZykKLSAgICAgICAgZnAuY2xvc2UoKQotCi0KLWRlZiBnZXRfcnVuX3RyYW5zY3JpcHQoZmlsZW5hbWUpOgotICAgICIiIlJldHVybiBsaW5lcyBmcm9tIHRoZSB0cmFuc2NyaXB0IGZpbGUgZm9yIHRoZSBtb3N0IHJlY2VudCBydW4oKSBjYWxsLiIiIgotICAgIGZwID0gb3BlbihmaWxlbmFtZSkKLSAgICBsaW5lcyA9IGZwLnJlYWRsaW5lcygpCi0gICAgZnAuY2xvc2UoKQotICAgIGxpbmVzLnJldmVyc2UoKQotICAgIEwgPSBbXQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBMLmFwcGVuZChsaW5lKQotICAgICAgICBpZiBsaW5lWzo0XSA9PSAiKysrICI6Ci0gICAgICAgICAgICBicmVhawotICAgIEwucmV2ZXJzZSgpCi0gICAgcmV0dXJuIEwKLQotCi1kZWYgc2FmZV91bmxpbmsocGF0aCk6Ci0gICAgIiIiVW5saW5rIGEgZmlsZSB3aXRob3V0IHJhaXNpbmcgYW4gZXJyb3IgaWYgaXQgZG9lc24ndCBleGlzdC4iIiIKLSAgICB0cnk6Ci0gICAgICAgIG9zLnVubGluayhwYXRoKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKLSAgICAgICAgcGFzcwotCi0KLWRlZiBzcGxpdF9wYXRobmFtZShwYXRoKToKLSAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHBhdGgpKQotICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRoKQotICAgIGlmIGJhc2VuYW1lWy00Ol0gPT0gIi50ZXgiOgotICAgICAgICBiYXNlbmFtZSA9IGJhc2VuYW1lWzotNF0KLSAgICByZXR1cm4gZGlybmFtZSwgYmFzZW5hbWUKLQotCi1fZG9jdHlwZV9yeCA9IHJlLmNvbXBpbGUociJcXGRvY3VtZW50Y2xhc3MoPzpcW1teXV0qXF0pP3soW2EtekEtWl0qKX0iKQotZGVmIGdldF9kb2N0eXBlKHBhdGgpOgotICAgIGZwID0gb3BlbihwYXRoKQotICAgIGRvY3R5cGUgPSBOb25lCi0gICAgd2hpbGUgMToKLSAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBtID0gX2RvY3R5cGVfcngubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIGRvY3R5cGUgPSBtLmdyb3VwKDEpCi0gICAgICAgICAgICBicmVhawotICAgIGZwLmNsb3NlKCkKLSAgICByZXR1cm4gZG9jdHlwZQotCi0KLWRlZiBtYWluKCk6Ci0gICAgb3B0aW9ucyA9IE9wdGlvbnMoKQotICAgIHRyeToKLSAgICAgICAgYXJncyA9IG9wdGlvbnMucGFyc2Uoc3lzLmFyZ3ZbMTpdKQotICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IsIG1zZzoKLSAgICAgICAgZXJyb3Iob3B0aW9ucywgbXNnKQotICAgIGlmIG5vdCBhcmdzOgotICAgICAgICAjIGF0dGVtcHQgdG8gbG9jYXRlIHNpbmdsZSAudGV4IGZpbGUgaW4gY3VycmVudCBkaXJlY3Rvcnk6Ci0gICAgICAgIGFyZ3MgPSBnbG9iLmdsb2IoIioudGV4IikKLSAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICBlcnJvcihvcHRpb25zLCAiTm8gZmlsZSB0byBwcm9jZXNzLiIpCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDE6Ci0gICAgICAgICAgICBlcnJvcihvcHRpb25zLCAiQ291bGQgbm90IGRlZHVjZSB3aGljaCBmaWxlcyBzaG91bGQgYmUgcHJvY2Vzc2VkLiIpCi0gICAgIwotICAgICMgcGFyYW1ldGVycyBhcmUgcHJvY2Vzc2VkLCBsZXQncyBnbyEKLSAgICAjCi0gICAgZm9yIHBhdGggaW4gYXJnczoKLSAgICAgICAgSm9iKG9wdGlvbnMsIHBhdGgpLmJ1aWxkKCkKLQotCi1kZWYgbDJob3B0aW9uKGZwLCBvcHRpb24sIHZhbHVlKToKLSAgICBpZiB2YWx1ZToKLSAgICAgICAgZnAud3JpdGUoJyQlcyA9ICIlcyI7XG4nICUgKG9wdGlvbiwgc3RyaW5nX3RvX3Blcmwoc3RyKHZhbHVlKSkpKQotCi0KLV90b19wZXJsID0ge30KLWZvciBjIGluIG1hcChjaHIsIHJhbmdlKDEsIDI1NikpOgotICAgIF90b19wZXJsW2NdID0gYwotX3RvX3BlcmxbIkAiXSA9ICJcXEAiCi1fdG9fcGVybFsiJCJdID0gIlxcJCIKLV90b19wZXJsWyciJ10gPSAnXFwiJwotCi1kZWYgc3RyaW5nX3RvX3Blcmwocyk6Ci0gICAgcmV0dXJuIHN0cmluZy5qb2luKG1hcChfdG9fcGVybC5nZXQsIHMpLCAnJykKLQotCi1kZWYgY2hlY2tfZm9yX2JpYnRleChmaWxlbmFtZSk6Ci0gICAgZnAgPSBvcGVuKGZpbGVuYW1lKQotICAgIHBvcyA9IHN0cmluZy5maW5kKGZwLnJlYWQoKSwgciJcYmliZGF0YXsiKQotICAgIGZwLmNsb3NlKCkKLSAgICByZXR1cm4gcG9zID49IDAKLQotZGVmIHVuaXFpZnlfbW9kdWxlX3RhYmxlKGZpbGVuYW1lKToKLSAgICBsaW5lcyA9IG9wZW4oZmlsZW5hbWUpLnJlYWRsaW5lcygpCi0gICAgaWYgbGVuKGxpbmVzKSA+IDE6Ci0gICAgICAgIGlmIGxpbmVzWy0xXSA9PSBsaW5lc1stMl06Ci0gICAgICAgICAgICBkZWwgbGluZXNbLTFdCi0gICAgb3BlbihmaWxlbmFtZSwgInciKS53cml0ZWxpbmVzKGxpbmVzKQotCi0KLWRlZiBuZXdfaW5kZXgoZmlsZW5hbWUsIGxhYmVsPSJnZW5pbmRleCIpOgotICAgIGZwID0gb3BlbihmaWxlbmFtZSwgInciKQotICAgIGZwLndyaXRlKHIiIiJcCi1cYmVnaW57dGhlaW5kZXh9Ci1cbGFiZWx7JXN9Ci1cZW5ke3RoZWluZGV4fQotIiIiICUgbGFiZWwpCi0gICAgZnAuY2xvc2UoKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvbWtpbmZvIGIvZG9jL3Rvb2xzL21raW5mbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWRiYTFkYi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvbWtpbmZvCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyEgL2Jpbi9zaAotIyAgLSotIEtzaCAtKi0KLQotIyAgU2NyaXB0IHRvIGRyaXZlIHRoZSBIVE1MLWluZm8gY29udmVyc2lvbiBwcm9jZXNzLgotIyAgUGFzcyBpbiBhIHNpbmdsZSBwYXJhbWV0ZXI6IHRoZSBuYW1lIG9mIHRoZSB0b3AtbGV2ZWwgSFRNTCBmaWxlCi0jICBnZW5lcmF0ZWQgYnkgTGFUZVgySFRNTC4KLSMKLSMgIFdyaXR0ZW4gYnkgRnJlZCBMLiBEcmFrZSwgSnIuIDxmZHJha2VAYWNtLm9yZz4KLQotUEVSTD0ke1BFUkw6LXBlcmx9Ci1FTUFDUz0ke0VNQUNTOi1lbWFjc30KLU1BS0VJTkZPPSR7TUFLRUlORk86LW1ha2VpbmZvfQotCi0KLSMgTm9ybWFsaXplIGZpbGUgbmFtZSBzaW5jZSBzb21ldGhpbmcgY2FsbGVkIGJ5IGh0bWwydGV4aS5wbCBzZWVtcyB0bwotIyBzY3JldyB1cCB3aXRoIHJlbGF0aXZlIHBhdGggbmFtZXMuCi1GSUxFTkFNRT0iJDEiCi1ET0NESVI9YGRpcm5hbWUgIiRGSUxFTkFNRSJgCi1ET0NGSUxFPWBiYXNlbmFtZSAiJEZJTEVOQU1FImAKLURPQ05BTUU9YGJhc2VuYW1lICIkRklMRU5BTUUiIC5odG1sYAotCi0jIE5vdyBidWlsZCB0aGUgcmVhbCBkaXJlY3RvcnkgbmFtZXMsIGFuZCBsb2NhdGUgb3VyIHN1cHBvcnQgc3R1ZmY6Ci1XT1JLRElSPWBwd2RgCi1jZCBgZGlybmFtZSAkMGAKLVRPT0xTRElSPWBwd2RgCi1jZCAkRE9DRElSCi1ET0NESVI9YHB3ZGAKLWNkICRXT1JLRElSCi0KLQotcnVuKCkgewotICAgICMgc2hvdyB3aGF0IHdlJ3JlIGRvaW5nLCBsaWtlIG1ha2UgZG9lczoKLSAgICBlY2hvICIkKiIKLSAgICAkKiB8fCBleGl0ICQ/Ci19Ci0KLQotIyBnZW5lcmF0ZSB0aGUgVGV4aW5mbyBmaWxlOgotCi1ydW4gJFBFUkwgLUkkVE9PTFNESVIgJFRPT0xTRElSL2h0bWwydGV4aS5wbCAkRE9DRElSLyRET0NGSUxFCi1ydW4gJEVNQUNTIC1iYXRjaCAtbCAkVE9PTFNESVIvZml4aW5mby5lbCAkRE9DTkFNRS50ZXhpCi1ybSAtZiAkRE9DTkFNRS50ZXhpfgotCi0KLSMgZ2VuZXJhdGUgdGhlIC5pbmZvIGZpbGVzOgotCi1ydW4gJE1BS0VJTkZPIC0tZm9vdG5vdGUtc3R5bGUgZW5kIC0tZmlsbC1jb2x1bW4gNzIgXAotCSAgICAgIC0tcGFyYWdyYXBoLWluZGVudCAwICRET0NOQU1FLnRleGkKZGlmZiAtLWdpdCBhL2RvYy90b29scy9ta21vZGluZGV4IGIvZG9jL3Rvb2xzL21rbW9kaW5kZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVmMmRhMGUuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL21rbW9kaW5kZXgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotIyAgLSotIFB5dGhvbiAtKi0KLQotIiIidXNhZ2U6ICUocHJvZ3JhbSlzIFtvcHRpb25zXSBmaWxlLi4uCi0KLVN1cHBvcnRlZCBvcHRpb25zOgotCi0gICAgLS1hZGRyZXNzIGFkZHIKLSAgICAtYSBhZGRyICAgICAgICAgU2V0IHRoZSBhZGRyZXNzIHRleHQgdG8gaW5jbHVkZSBhdCB0aGUgZW5kIG9mIHRoZSBnZW5lcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgSFRNTDsgdGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgY29udGFjdCBpbmZvcm1hdGlvbi4KLSAgICAtLWNvbHVtbnMgY29scwotICAgIC1jIGNvbHMgICAgICAgICBTZXQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGVhY2ggaW5kZXggc2VjdGlvbiBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkIGluLiAgVGhlIGRlZmF1bHQgaXMgMS4KLSAgICAtLWhlbHAKLSAgICAtaCAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZS4KLSAgICAtLWxldHRlcnMKLSAgICAtbCAgICAgICAgICAgICAgU3BsaXQgdGhlIG91dHB1dCBpbnRvIHNlY3Rpb25zIGJ5IGxldHRlci4KLSAgICAtLW91dHB1dCBmaWxlCi0gICAgLW8gZmlsZSAgICAgICAgIFdyaXRlIG91dHB1dCB0byAnZmlsZScgaW5zdGVhZCBvZiBzdGFuZGFyZCBvdXQuCi0gICAgLS1pY29uc2VydmVyIGlzIFVzZSAnaXMnIGFzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBpY29ucyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24gYmFyLiAgVGhlIGRlZmF1bHQgaXMgJ2ljb25zJy4KLSAgICAtLXRpdGxlIHN0ciAgICAgU2V0IHRoZSBwYWdlIHRpdGxlIHRvICdzdHInLiAgVGhlIGRlZmF1bHQgaXMgJ0dsb2JhbAotICAgICAgICAgICAgICAgICAgICBNb2R1bGUgSW5kZXgnLgotICAgIC0tdXBsaW5rIHVybCAgICBTZXQgdGhlIHVwd2FyZCBsaW5rIFVSTC4gIFRoZSBkZWZhdWx0IGlzICcuLycuCi0gICAgLS11cHRpdGxlIHN0ciAgIFNldCB0aGUgdXB3YXJkIGxpbmsgdGl0bGUuICBUaGUgZGVmYXVsdCBpcyAnUHl0aG9uCi0gICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gSW5kZXgnLgotIiIiCi1pbXBvcnQgYnVpbGRpbmRleAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgc3lzCi0KLQotY2xhc3MgSW5kZXhPcHRpb25zKHN1cHBvcnQuT3B0aW9ucyk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBwb3J0Lk9wdGlvbnMuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5hZGRfYXJncygibCIsIFsibGV0dGVycyJdKQotICAgICAgICBzZWxmLmxldHRlcnMgPSAwCi0KLSAgICBkZWYgaGFuZGxlX29wdGlvbihzZWxmLCBvcHQsIHZhbCk6Ci0gICAgICAgIGlmIG9wdCBpbiAoIi1sIiwgIi0tbGV0dGVycyIpOgotICAgICAgICAgICAgc2VsZi5sZXR0ZXJzID0gMQotCi0gICAgZGVmIHVzYWdlKHNlbGYpOgotICAgICAgICBwcm9ncmFtID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKLSAgICAgICAgcHJpbnQgX19kb2NfXyAlIHsicHJvZ3JhbSI6IHByb2dyYW19Ci0KLQotY2xhc3MgTm9kZShidWlsZGluZGV4Lk5vZGUpOgotICAgIGFubm90YXRpb24gPSAiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmssIHN0ciwgc2Vxbm8pOgotICAgICAgICBwYXJ0cyA9IHN0cmluZy5zcGxpdChzdHIsIE5vbmUsIDEpCi0gICAgICAgIGlmIHBhcnRzWzBdWy01Ol0gPT0gIjwvdHQ+IjoKLSAgICAgICAgICAgIHNlbGYubW9kbmFtZSA9IHBhcnRzWzBdWzotNV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubW9kbmFtZSA9IHBhcnRzWzBdCi0gICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMjoKLSAgICAgICAgICAgIHNlbGYuYW5ub3RhdGlvbiA9IHBhcnRzWzFdCi0gICAgICAgIGJ1aWxkaW5kZXguTm9kZS5fX2luaXRfXyhzZWxmLCBsaW5rLCBzZWxmLm1vZG5hbWUsIHNlcW5vKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnPHR0IGNsYXNzPSJtb2R1bGUiPiVzPC90dD4gJXMnIFwKLSAgICAgICAgICAgICAgICUgKHNlbGYubW9kbmFtZSwgc2VsZi5hbm5vdGF0aW9uKQotCi1fcnggPSByZS5jb21waWxlKAotICAgICI8ZHQ+PGEgaHJlZj0nKG1vZHVsZS0uKlwuaHRtbCkjbDJoLVxkKyc+PHR0IGNsYXNzPSdtb2R1bGUnPiIKLSAgICAiKFthLXpBLVpfXVthLXpBLVowLTlfLl0qPC90dD4oXHMqPGVtPiIKLSAgICAiXCg8c3BhbiBjbGFzcz0ncGxhdGZvcm0nPi4qPC9zcGFuPlwpPC9lbT4pPyk8L2E+IikKLQotZGVmIG1haW4oKToKLSAgICBvcHRpb25zID0gSW5kZXhPcHRpb25zKCkKLSAgICBvcHRpb25zLnZhcmlhYmxlc1sidGl0bGUiXSA9ICJHbG9iYWwgTW9kdWxlIEluZGV4IgotICAgIG9wdGlvbnMucGFyc2Uoc3lzLmFyZ3ZbMTpdKQotICAgIGFyZ3MgPSBvcHRpb25zLmFyZ3MKLSAgICBpZiBub3QgYXJnczoKLSAgICAgICAgYXJncyA9IFsiLSJdCi0gICAgIwotICAgICMgQ29sbGVjdCB0aGUgaW5wdXQgZGF0YToKLSAgICAjCi0gICAgbm9kZXMgPSBbXQotICAgIHNlcW5vID0gMAotICAgIGhhc19wbGF0X2ZsYWcgPSAwCi0gICAgZm9yIGlmbiBpbiBhcmdzOgotICAgICAgICBpZiBpZm4gPT0gIi0iOgotICAgICAgICAgICAgaWZwID0gc3lzLnN0ZGluCi0gICAgICAgICAgICBkaXJuYW1lID0gJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmcCA9IG9wZW4oaWZuKQotICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShpZm4pCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBsaW5lID0gaWZwLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBtID0gX3J4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICMgVGhpcyBsaW5lIHNwZWNpZmllcyBhIG1vZHVsZSEKLSAgICAgICAgICAgICAgICBiYXNlbmFtZSwgbW9kbmFtZSA9IG0uZ3JvdXAoMSwgMikKLSAgICAgICAgICAgICAgICBoYXNfcGxhdF9mbGFnID0gaGFzX3BsYXRfZmxhZyBvciBtLmdyb3VwKDMpCi0gICAgICAgICAgICAgICAgbGlua2ZpbGUgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgYmFzZW5hbWUpCi0gICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKE5vZGUoJzxhIGhyZWY9IiVzIj4nICUgbGlua2ZpbGUsIG1vZG5hbWUsIHNlcW5vKSkKLSAgICAgICAgICAgICAgICBzZXFubyA9IHNlcW5vICsgMQotICAgICAgICBpZnAuY2xvc2UoKQotICAgICMKLSAgICAjIEdlbmVyYXRlIGFsbCBvdXRwdXQ6Ci0gICAgIwotICAgIG51bV9ub2RlcyA9IGxlbihub2RlcykKLSAgICAjIEhlcmUncyB0aGUgSFRNTCBnZW5lcmF0aW9uOgotICAgIHBhcnRzID0gW29wdGlvbnMuZ2V0X2hlYWRlcigpLAotICAgICAgICAgICAgIGJ1aWxkaW5kZXgucHJvY2Vzc19ub2Rlcyhub2Rlcywgb3B0aW9ucy5jb2x1bW5zLCBvcHRpb25zLmxldHRlcnMpLAotICAgICAgICAgICAgIG9wdGlvbnMuZ2V0X2Zvb3RlcigpLAotICAgICAgICAgICAgIF0KLSAgICBpZiBoYXNfcGxhdF9mbGFnOgotICAgICAgICBwYXJ0cy5pbnNlcnQoMSwgUExBVF9ESVNDVVNTKQotICAgIGh0bWwgPSBzdHJpbmcuam9pbihwYXJ0cywgJycpCi0gICAgcHJvZ3JhbSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCi0gICAgZnAgPSBvcHRpb25zLmdldF9vdXRwdXRfZmlsZSgpCi0gICAgZnAud3JpdGUoc3RyaW5nLnJzdHJpcChodG1sKSArICJcbiIpCi0gICAgaWYgb3B0aW9ucy5vdXRwdXRmaWxlID09ICItIjoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVkIGluZGV4IG5vZGVzXG4iICUgKHByb2dyYW0sIG51bV9ub2RlcykpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQKLSAgICAgICAgcHJpbnQgIiVzOiAlZCBpbmRleCBub2RlcyIgJSAocHJvZ3JhbSwgbnVtX25vZGVzKQotCi0KLVBMQVRfRElTQ1VTUyA9ICIiIgotPHA+IFNvbWUgbW9kdWxlIG5hbWVzIGFyZSBmb2xsb3dlZCBieSBhbiBhbm5vdGF0aW9uIGluZGljYXRpbmcgd2hhdAotcGxhdGZvcm0gdGhleSBhcmUgYXZhaWxhYmxlIG9uLjwvcD4KLQotIiIiCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL2RvYy90b29scy9ta3NvdXJjZXBrZyBiL2RvYy90b29scy9ta3NvdXJjZXBrZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzNlYTg2My4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvbWtzb3VyY2Vwa2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotIyAgLSotIFB5dGhvbiAtKi0KLQotIiIiJShwcm9ncmFtKXMgLSBzY3JpcHQgdG8gY3JlYXRlIHRoZSBsYXRleCBzb3VyY2UgZGlzdHJpYnV0aW9uCi0KLXVzYWdlOgotICAgICAlKHByb2dyYW0pcyBbLXR8LS10b29sc10gcmVsZWFzZSBbdGFnXQotCi13aXRoIC10fC0tdG9vbHM6ICBkb2Vzbid0IGluY2x1ZGUgdGhlIGRvY3VtZW50cywgb25seSB0aGUgZnJhbWV3b3JrCi0KLXdpdGhvdXQgW3RhZ106ICBnZW5lcmF0ZSBmcm9tIHRoZSBjdXJyZW50IHZlcnNpb24gdGhhdCdzIGNoZWNrZWQgaW4KLSAgICAgCSAgICgqTk9UKiB3aGF0J3MgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5ISkKLQotd2l0aCBbdGFnXTogIGdlbmVyYXRlIGZyb20gdGhlIG5hbWVkIHRhZwotIiIiCi0jKiBzaG91bGQgYmUgbW9kaWZpZWQgdG8gZ2V0IHRoZSBQeXRob24gdmVyc2lvbiBudW1iZXIgYXV0b21hdGljYWxseQotIyAgZnJvbSB0aGUgTWFrZWZpbGUgb3Igc29tZXBsYWNlLgotCi1pbXBvcnQgZ2V0b3B0Ci1pbXBvcnQgZ2xvYgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQotCi1pbXBvcnQgY3ZzaW5mbwotCi0KLXF1aWV0ID0gMAotcnggPSByZS5jb21waWxlKHIiOmV4dDooPzpbYS16QS1aMC05XSspQGN2c1wuKFthLXpBLVowLTldKykuc291cmNlZm9yZ2UubmV0OiIKLSAgICAgICAgICAgICAgICByIi9jdnNyb290L1wxIikKLQotCi1kZWYgbWFpbigpOgotICAgICBnbG9iYWwgcXVpZXQKLSAgICAgdHJ5OgotICAgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImFiZ3R6cSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhbGwiLCAiYnppcDIiLCAiZ3ppcCIsICJ0b29scyIsICJ6aXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicXVpZXQiXSkKLSAgICAgZXhjZXB0IGdldG9wdC5lcnJvciwgZToKLSAgICAgICAgICB1c2FnZSh3YXJuaW5nPXN0cihlKSkKLSAgICAgICAgICBzeXMuZXhpdCgyKQotICAgICBpZiBsZW4oYXJncykgbm90IGluICgxLCAyKToKLSAgICAgICAgICB1c2FnZSh3YXJuaW5nPSJ3cm9uZyBudW1iZXIgb2YgcGFyYW1ldGVycyIpCi0gICAgICAgICAgc3lzLmV4aXQoMikKLSAgICAgdG9vbHMgPSAwCi0gICAgIGZvcm1hdHMgPSB7fQotICAgICBmb3Igb3B0LCBhcmcgaW4gb3B0czoKLSAgICAgICAgICBpZiBvcHQgaW4gKCItdCIsICItLXRvb2xzIik6Ci0gICAgICAgICAgICAgICB0b29scyA9IDEKLSAgICAgICAgICBlbGlmIG9wdCBpbiAoIi1xIiwgIi0tcXVpZXQiKToKLSAgICAgICAgICAgICAgIHF1aWV0ID0gcXVpZXQgKyAxCi0gICAgICAgICAgZWxpZiBvcHQgaW4gKCItYiIsICItLWJ6aXAyIik6Ci0gICAgICAgICAgICAgICBmb3JtYXRzWyJiemlwMiJdID0gMQotICAgICAgICAgIGVsaWYgb3B0IGluICgiLWciLCAiLS1nemlwIik6Ci0gICAgICAgICAgICAgICBmb3JtYXRzWyJnemlwIl0gPSAxCi0gICAgICAgICAgZWxpZiBvcHQgaW4gKCIteiIsICItLXppcCIpOgotICAgICAgICAgICAgICAgZm9ybWF0c1siemlwIl0gPSAxCi0gICAgICAgICAgZWxpZiBvcHQgaW4gKCItYSIsICItLWFsbCIpOgotICAgICAgICAgICAgICAgZm9ybWF0c1siYnppcDIiXSA9IDEKLSAgICAgICAgICAgICAgIGZvcm1hdHNbImd6aXAiXSA9IDEKLSAgICAgICAgICAgICAgIGZvcm1hdHNbInppcCJdID0gMQotICAgICBpZiBmb3JtYXRzOgotICAgICAgICAgICMgbWFrZSBvcmRlciBodW1hbi1wcmVkaWN0YWJsZQotICAgICAgICAgIGZvcm1hdHMgPSBmb3JtYXRzLmtleXMoKQotICAgICAgICAgIGZvcm1hdHMuc29ydCgpCi0gICAgIGVsc2U6Ci0gICAgICAgICAgZm9ybWF0cyA9IFsiZ3ppcCJdCi0gICAgIHJlbGVhc2UgPSBhcmdzWzBdCi0gICAgIGN2c3RhZyA9IE5vbmUKLSAgICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgICBjdnN0YWcgPSBhcmdzWzFdCi0gICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta3RlbXAoKQotICAgICBvcy5ta2Rpcih0ZW1wZGlyKQotICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgIlB5dGhvbi0iICsgcmVsZWFzZSkKLSAgICAgb3MubWtkaXIocGtnZGlyKQotICAgICBwd2QgPSBvcy5nZXRjd2QoKQotICAgICBteWRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pKQotICAgICBpbmZvID0gY3ZzaW5mby5SZXBvc2l0b3J5SW5mbyhteWRpcikKLSAgICAgY3Zzcm9vdCA9IGluZm8uZ2V0X2N2c3Jvb3QoKQotICAgICBtID0gcngubWF0Y2goY3Zzcm9vdCkKLSAgICAgaWYgbToKLSAgICAgICAgICAjIElmIHRoaXMgaXMgYW4gYXV0aGVudGljYXRlZCBTb3VyY2VGb3JnZSByZXBvc2l0b3J5LCBjb252ZXJ0IHRvCi0gICAgICAgICAgIyBhbm9ueW1vdXMgdXNhZ2UgZm9yIHRoZSBleHBvcnQvY2hlY2tvdXQsIHNpbmNlIHRoYXQgYXZvaWRzIHRoZQotICAgICAgICAgICMgU1NIIG92ZXJoZWFkLgotICAgICAgICAgIGdyb3VwID0gbS5ncm91cCgxKQotICAgICAgICAgIGN2c3Jvb3QgPSAiOnBzZXJ2ZXI6YW5vbnltb3VzQGN2cy4lcy5zb3VyY2Vmb3JnZS5uZXQ6L2N2c3Jvb3QvJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgJSAoZ3JvdXAsIGdyb3VwKQotICAgICAgICAgICMgRm9yIHNvbWUgcmVhc29uLCBTb3VyY2VGb3JnZS9DVlMgZG9lc24ndCBzZWVtIHRvIGNhcmUgdGhhdCB3ZQotICAgICAgICAgICMgbWlnaHQgbm90IGhhdmUgZG9uZSBhICJjdnMgbG9naW4iIHRvIHRoZSBhbm9ueW1vdXMgc2VydmVyLgotICAgICAgICAgICMgVGhhdCBhdm9pZHMgYSBsb3Qgb2YgcGFpbmZ1bCBndW5rIGhlcmUuCi0gICAgIG9zLmNoZGlyKHBrZ2RpcikKLSAgICAgaWYgbm90IHF1aWV0OgotICAgICAgICAgIHByaW50ICItLS0gY3VycmVudCBkaXJlY3RvcnkgaXM6IiwgcGtnZGlyCi0gICAgIGlmIGN2c3RhZzoKLSAgICAgICAgICBydW4oImN2cyAtZCVzIGV4cG9ydCAtciAlcyAtZCBEb2MgcHl0aG9uL2Rpc3Qvc3JjL0RvYyIKLSAgICAgICAgICAgICAgJSAoY3Zzcm9vdCwgY3ZzdGFnKSkKLSAgICAgZWxzZToKLSAgICAgICAgICBydW4oImN2cyAtUSAtZCVzIGNoZWNrb3V0IC1kIERvYyBweXRob24vZGlzdC9zcmMvRG9jIiAlIGN2c3Jvb3QpCi0gICAgICAgICAgIyByZW1vdmUgQ1ZTIGRpcmVjdG9yaWVzCi0gICAgICAgICAgZm9yIHAgaW4gKCcqL0NWUycsICcqLyovQ1ZTJywgJyovKi8qL0NWUycpOgotICAgICAgICAgICAgICAgbWFwKHNodXRpbC5ybXRyZWUsIGdsb2IuZ2xvYihwKSkKLSAgICAgICAgICBmb3IgZiBpbiAoJy5jdnNpZ25vcmUnLCAnKi8uY3ZzaWdub3JlJyk6Ci0gICAgICAgICAgICAgICBtYXAob3MudW5saW5rLCBnbG9iLmdsb2IoZikpCi0gICAgIExJQ0VOU0UgPSBvcy5wYXRoLm5vcm1wYXRoKAotICAgICAgICAgIG9zLnBhdGguam9pbihteWRpciwgb3MucGFyZGlyLCBvcy5wYXJkaXIsICJMSUNFTlNFIikpCi0gICAgIHNodXRpbC5jb3B5ZmlsZShMSUNFTlNFLCAiRG9jL0xJQ0VOU0UiKQotICAgICBpZiB0b29sczoKLSAgICAgICAgICBhcmNoaXZlID0gImRvY3Rvb2xzLSIgKyByZWxlYXNlCi0gICAgICAgICAgIyB3ZSBkb24ndCB3YW50IHRoZSBhY3R1YWwgZG9jdW1lbnRzIGluIHRoaXMgY2FzZToKLSAgICAgICAgICBmb3IgZCBpbiAoImFwaSIsICJkaXN0IiwgImRvYyIsICJleHQiLCAiaW5zdCIsCi0gICAgICAgICAgICAgICAgICAgICJsaWIiLCAibWFjIiwgInJlZiIsICJ0dXQiKToKLSAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKG9zLnBhdGguam9pbihwa2dkaXIsICJEb2MiKSwgZCkpCi0gICAgIGVsc2U6Ci0gICAgICAgICAgYXJjaGl2ZSA9ICJsYXRleC0iICsgcmVsZWFzZQotCi0gICAgICMgWFhYIHNob3VsZCBhbHNvIHJlbW92ZSB0aGUgLmN2c2lnbm9yZSBmaWxlcyBhdCB0aGlzIHBvaW50Ci0KLSAgICAgb3MuY2hkaXIodGVtcGRpcikKLSAgICAgYXJjaGl2ZSA9IG9zLnBhdGguam9pbihwd2QsIGFyY2hpdmUpCi0gICAgIGZvciBmb3JtYXQgaW4gZm9ybWF0czoKLSAgICAgICAgICBpZiBmb3JtYXQgPT0gImJ6aXAyIjoKLSAgICAgICAgICAgICAgIHJ1bigidGFyIGNmIC0gUHl0aG9uLSVzIHwgYnppcDIgLTkgPiVzLnRhci5iejIiCi0gICAgICAgICAgICAgICAgICAgJSAocmVsZWFzZSwgYXJjaGl2ZSkpCi0gICAgICAgICAgZWxpZiBmb3JtYXQgPT0gImd6aXAiOgotICAgICAgICAgICAgICAgcnVuKCJ0YXIgY2YgLSBQeXRob24tJXMgfCBnemlwIC05ID4lcy50Z3oiCi0gICAgICAgICAgICAgICAgICAgJSAocmVsZWFzZSwgYXJjaGl2ZSkpCi0gICAgICAgICAgZWxpZiBmb3JtYXQgPT0gInppcCI6Ci0gICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhhcmNoaXZlICsgIi56aXAiKToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGFyY2hpdmUgKyAiLnppcCIpCi0gICAgICAgICAgICAgICBydW4oInppcCAtcSAtcjkgJXMuemlwIFB5dGhvbi0lcyIKLSAgICAgICAgICAgICAgICAgICAlIChhcmNoaXZlLCByZWxlYXNlKSkKLQotICAgICAjIGNsZWFuIHVwIHRoZSB3b3JrIGFyZWE6Ci0gICAgIG9zLmNoZGlyKHB3ZCkKLSAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wZGlyKQotCi0KLWRlZiBydW4oY21kKToKLSAgICAgaWYgcXVpZXQgPCAyOgotICAgICAgICAgIHByaW50ICIrKysiLCBjbWQKLSAgICAgaWYgcXVpZXQ6Ci0gICAgICAgICAgY21kID0gIiVzID4vZGV2L251bGwiICUgY21kCi0gICAgIHJjID0gb3Muc3lzdGVtKGNtZCkKLSAgICAgaWYgcmM6Ci0gICAgICAgICAgc3lzLmV4aXQocmMpCi0KLQotZGVmIHVzYWdlKHdhcm5pbmc9Tm9uZSk6Ci0gICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICAgc3lzLnN0ZG91dCA9IHN5cy5zdGRlcnIKLSAgICAgcHJvZ3JhbSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCi0gICAgIHRyeToKLSAgICAgICAgICBpZiB3YXJuaW5nOgotICAgICAgICAgICAgICAgcHJpbnQgIiVzOiAlc1xuIiAlIChwcm9ncmFtLCB3YXJuaW5nKQotICAgICAgICAgIHByaW50IF9fZG9jX18gJSB7InByb2dyYW0iOiBwcm9ncmFtfQotICAgICBmaW5hbGx5OgotICAgICAgICAgIHN5cy5zdGRvdXQgPSBzdGRvdXQKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL2RvYy90b29scy9ub2RlMmxhYmVsLnBsIGIvZG9jL3Rvb2xzL25vZGUybGFiZWwucGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGYzZTZiZDguLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL25vZGUybGFiZWwucGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0jISAvdXNyL2Jpbi9lbnYgcGVybAotCi11c2UgRW5nbGlzaDsKLSRJTlBMQUNFX0VESVQgPSAnJzsKLQotIyByZWFkIHRoZSBsYWJlbHMsIHRoZW4gcmV2ZXJzZSB0aGUgbWFwcGluZ3MKLXJlcXVpcmUgImxhYmVscy5wbCI7Ci0KLSVub2RlcyA9ICgpOwotbXkgJGtleTsKLSMgc29ydCBzbyB0aGF0IHdlIGdldCBhIGNvbnNpc3RlbnQgYXNzaWdubWVudCBmb3Igbm9kZXMgd2l0aCBtdWx0aXBsZSBsYWJlbHMgCi1mb3JlYWNoICRsYWJlbCAoc29ydCBrZXlzICVleHRlcm5hbF9sYWJlbHMpIHsKLSAgJGtleSA9ICRleHRlcm5hbF9sYWJlbHN7JGxhYmVsfTsKLSAgJGtleSA9fiBzfF4vfHw7Ci0gICRub2Rlc3ska2V5fSA9ICRsYWJlbDsKLX0KLQotIyBUaGlzIGFkZHMgdGhlICJpbnRlcm5hbCIgbGFiZWxzIGFkZGVkIGZvciBpbmRleGluZy4gIFRoZXNlIGxhYmVscyB3aWxsIG5vdAotIyBiZSB1c2VkIGZvciBmaWxlIG5hbWVzLgotcmVxdWlyZSAiaW50ZXJuYWxzLnBsIjsKLWZvcmVhY2ggJGxhYmVsIChrZXlzICVpbnRlcm5hbF9sYWJlbHMpIHsKLSAgJGtleSA9ICRpbnRlcm5hbF9sYWJlbHN7JGxhYmVsfTsKLSAgJGtleSA9fiBzfF4vfHw7Ci0gIGlmIChkZWZpbmVkKCRub2Rlc3ska2V5fSkpIHsKLSAgICAkbm9kZXN7JGxhYmVsfSA9ICRub2Rlc3ska2V5fTsKLSAgfQotfQotCi0jIGNvbGxlY3QgbGFiZWxzIHRoYXQgaGF2ZSBiZWVuIHVzZWQKLSVuZXduYW1lcyA9ICgpOwotCi13aGlsZSAoPD4pIHsKLSAgIyBkb24ndCB3YW50IHRvIGRvIG9uZSBzLy8vIHBlciBsaW5lIHBlciBub2RlCi0gICMgc28gbG9vayBmb3IgbGluZXMgd2l0aCBocmVmcywgdGhlbiBkbyBzLy8vIG9uIG5vZGVzIHByZXNlbnQKLSAgaWYgKC8oSFJFRnxocmVmKT1bXCJcJ10oW15cI1wiXCddKilodG1sW1wjXCJcJ10vKSB7Ci0gICAgQHBhcnRzID0gc3BsaXQoLyhIUkVGfGhyZWYpXD1bXCJcJ10vKTsKLSAgICBzaGlmdCBAcGFydHM7Ci0gICAgZm9yICRub2RlIChAcGFydHMpIHsKLSAgICAgICRub2RlID1+IHMvW1wjXCJcJ10uKiQvL2c7Ci0gICAgICBjaG9wKCRub2RlKTsKLSAgICAgIGlmIChkZWZpbmVkKCRub2Rlc3skbm9kZX0pKSB7Ci0JJGxhYmVsID0gJG5vZGVzeyRub2RlfTsKLQlpZiAocy8oSFJFRnxocmVmKT0oW1wiXCddKSRub2RlKFtcI1wiXCddKS9ocmVmPSQyJGxhYmVsLmh0bWwkMy9nKSB7Ci0JICBzLyhIUkVGfGhyZWYpPShbXCJcJ10pJGxhYmVsLmh0bWwvaHJlZj0kMiRsYWJlbC5odG1sL2c7Ci0JICAkbmV3bmFtZXN7JG5vZGV9ID0gIiRsYWJlbC5odG1sIjsKLQl9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHByaW50OwotfQotCi1mb3JlYWNoICRvbGRuYW1lIChrZXlzICVuZXduYW1lcykgewotICByZW5hbWUoJG9sZG5hbWUsICRuZXduYW1lc3skb2xkbmFtZX0pOwotfQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3BhcGVyLWE0L3B5cGFwZXIuc3R5IGIvZG9jL3Rvb2xzL3BhcGVyLWE0L3B5cGFwZXIuc3R5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGIyMmY4Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9wYXBlci1hNC9weXBhcGVyLnN0eQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotJQotJSAgQ2hhbmdlIHRoaXMgdG8gc2F5IGE0cGFwZXIgaW5zdGVhZCBvZiBsZXR0ZXJwYXBlciBpZiB5b3Ugd2FudCBBNC4KLSUKLVxuZXdjb21tYW5ke1xweUBwYXBlcn17YTRwYXBlcn0KLVxuZXdjb21tYW5ke1xweUBwdHNpemV9ezEwcHR9CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvcGVybC9TeW5vcHNpc1RhYmxlLnBtIGIvZG9jL3Rvb2xzL3BlcmwvU3lub3BzaXNUYWJsZS5wbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwM2RkMi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvcGVybC9TeW5vcHNpc1RhYmxlLnBtCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotcGFja2FnZSBTeW5vcHNpc1RhYmxlOwotCi1zdWIgbmV3ewotICAgIHJldHVybiBibGVzcyB7bmFtZXM9PicnLCBpbmZvPT57fSwgZmlsZT0+Jyd9OwotfQotCi1zdWIgZGVjbGFyZXsKLSAgICBteSgkc2VsZiwkbmFtZSwka2V5LCR0eXBlKSA9IEBfOwotICAgIGlmICgkc2VsZi0+e25hbWVzfSkgewotCSRzZWxmLT57bmFtZXN9IC49ICIsJG5hbWUiOwotICAgIH0KLSAgICBlbHNlIHsKLQkkc2VsZi0+e25hbWVzfSAuPSAiJG5hbWUiOwotICAgIH0KLSAgICAkc2VsZi0+e2luZm99eyRuYW1lfSA9ICIka2V5LCR0eXBlLCI7Ci19Ci0KLSMgVGhlICdmaWxlJyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBzdG9yZSB0aGUgZmlsZW5hbWUgb2YgdGhlIG5vZGUgaW4gd2hpY2gKLSMgdGhlIHRhYmxlIHdpbGwgYmUgcHJlc2VudGVkOyB0aGlzIGFzc3VtZXMgdGhhdCBlYWNoIHRhYmxlIHdpbGwgYmUgcHJlc2VudGVkCi0jIG9ubHkgb25jZSwgd2hpY2ggd29ya3MgZm9yIHRoZSBjdXJyZW50IHVzZSBvZiB0aGlzIG9iamVjdC4KLQotc3ViIHNldF9maWxlewotICAgIG15KCRzZWxmLCAkZmlsZW5hbWUpID0gQF87Ci0gICAgJHNlbGYtPntmaWxlfSA9ICIkZmlsZW5hbWUiOwotfQotCi1zdWIgZ2V0X2ZpbGV7Ci0gICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICByZXR1cm4gJHNlbGYtPntmaWxlfTsKLX0KLQotc3ViIHNldF9zeW5vcHNpc3sKLSAgICBteSgkc2VsZiwkbmFtZSwkc3lub3BzaXMpID0gQF87Ci0gICAgbXkoJGtleSwkdHlwZSwkdW51c2VkKSA9IHNwbGl0ICcsJywgJHNlbGYtPntpbmZvfXskbmFtZX0sIDM7Ci0gICAgJHNlbGYtPntpbmZvfXskbmFtZX0gPSAiJGtleSwkdHlwZSwkc3lub3BzaXMiOwotfQotCi1zdWIgZ2V0ewotICAgIG15KCRzZWxmLCRuYW1lKSA9IEBfOwotICAgIHJldHVybiBzcGxpdCAvLC8sICRzZWxmLT57aW5mb317JG5hbWV9LCAzOwotfQotCi1zdWIgc2hvd3sKLSAgICBteSAkc2VsZiA9IHNoaWZ0OwotICAgIG15ICRuYW1lOwotICAgIHByaW50ICJuYW1lczogIiwgJHNlbGYtPntuYW1lc30sICJcblxuIjsKLSAgICBmb3JlYWNoICRuYW1lIChzcGxpdCAvLC8sICRzZWxmLT57bmFtZXN9KSB7Ci0JbXkoJGtleSwkdHlwZSwkc3lub3BzaXMpID0gJHNlbGYtPmdldCgkbmFtZSk7Ci0JcHJpbnQgIiRuYW1lKCRrZXkpIGlzICR0eXBlOiAkc3lub3BzaXNcbiI7Ci0gICAgfQotfQotCi1zdWIgdG9odG1sewotICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0gICAgbXkgJGRhdGEgPSAiPHRhYmxlIGNsYXNzPSdzeW5vcHNpc3RhYmxlJz5cbiI7Ci0gICAgbXkgJG5hbWU7Ci0gICAgZm9yZWFjaCAkbmFtZSAoc3BsaXQgLywvLCAkc2VsZi0+e25hbWVzfSkgewotCW15KCRrZXksJHR5cGUsJHN5bm9wc2lzKSA9ICRzZWxmLT5nZXQoJG5hbWUpOwotCW15ICRsaW5rID0gIjxhIGhyZWY9J21vZHVsZS0ka2V5Lmh0bWwnPiI7Ci0JJGRhdGEgLj0gKCcgIDx0cj4nCi0JCSAgLiAiPHRkPjxiPjx0dCBjbGFzcz0nbW9kdWxlJz4kbGluayRuYW1lPC9hPjwvdHQ+PC9iPjwvdGQ+XG4iCi0JCSAgLiAiICAgICAgPHRkIGNsYXNzPSdzeW5vcHNpcyc+JHN5bm9wc2lzPC90ZD48L3RyPlxuIik7Ci0gICAgfQotICAgICRkYXRhIC49ICI8L3RhYmxlPlxuIjsKLSAgICAkZGF0YTsKLX0KLQotCi1wYWNrYWdlIHRlc3RTeW5vcHNpc1RhYmxlOwotCi1zdWIgdGVzdHsKLSAgICAjIHRoaXMgbGl0dGxlIHRlc3QgaXMgbW9zdGx5IHRvIGRlYnVnIHRoZSBzdHVmZiBhYm92ZSwgc2luY2UgdGhpcyBpcwotICAgICMgbXkgZmlyc3QgUGVybCAib2JqZWN0Ii4KLSAgICBteSAkc3QgPSBTeW5vcHNpc1RhYmxlLT5uZXcoKTsKLSAgICAkc3QtPmRlY2xhcmUoInNhbXBsZSIsICJzYW1wbGUiLCAic3RhbmRhcmQiKTsKLSAgICAkc3QtPnNldF9zeW5vcHNpcygic2FtcGxlIiwgIlRoaXMgaXMgYSBsaXR0bGUgc3lub3BzaXMuLi4uIik7Ci0gICAgJHN0LT5kZWNsYXJlKCJjb3B5X3JlZyIsICJjb3B5cmVnIiwgInN0YW5kYXJkIik7Ci0gICAgJHN0LT5zZXRfc3lub3BzaXMoImNvcHlfcmVnIiwgInBpY2tsZSBzdXBwb3J0IHN0dWZmIik7Ci0gICAgJHN0LT5zaG93KCk7Ci0KLSAgICBwcmludCAiXG5cbiI7Ci0KLSAgICBteSAkc3QyID0gU3lub3BzaXNUYWJsZS0+bmV3KCk7Ci0gICAgJHN0Mi0+ZGVjbGFyZSgic3QybW9kdWxlIiwgInN0Mm1vZHVsZSIsICJidWlsdC1pbiIpOwotICAgICRzdDItPnNldF9zeW5vcHNpcygic3QybW9kdWxlIiwgInNpbGx5IGxpdHRsZSBzeW5vcHNpcyIpOwotICAgICRzdDItPnNob3coKTsKLX0KLQotMTsJIyBUaGlzIG11c3QgYmUgdGhlIGxhc3QgbGluZSAtLSBQZXJsIGlzIGJvZ3VzIQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3BlcmwvZGlzdHV0aWxzLnBlcmwgYi9kb2MvdG9vbHMvcGVybC9kaXN0dXRpbHMucGVybApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI1MjRiYi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvcGVybC9kaXN0dXRpbHMucGVybAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgTGFUZVgySFRNTCBzdXBwb3J0IGZvciBkaXN0dXRpbHMuc3R5LgotCi1wYWNrYWdlIG1haW47Ci0KLXN1YiBkb19jbWRfY29tbWFuZCB7Ci0gICAgcmV0dXJuIHVzZV93cmFwcGVycyhAX1swXSwgJzxjb2RlPicsICc8L2NvZGU+Jyk7Ci19Ci0KLXN1YiBkb19jbWRfb3B0aW9uIHsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPGZvbnQgZmFjZT0ic2Fucy1zZXJpZiI+JywgJzwvZm9udD4nKTsKLX0KLQotc3ViIGRvX2NtZF9maWxldmFyIHsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPGZvbnQgZmFjZT0ic2Fucy1zZXJpZiI+PC9pPicsICc8L2k+PC9mb250PicpOwotfQotCi1zdWIgZG9fY21kX1hYWCB7Ci0gICAgcmV0dXJuIHVzZV93cmFwcGVycyhAX1swXSwgJzxiPioqICcsICcgKio8L2I+Jyk7Ci19Ci0KLTE7CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvcGVybC9ob3d0by5wZXJsIGIvZG9jL3Rvb2xzL3BlcmwvaG93dG8ucGVybApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY3OTFlYi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvcGVybC9ob3d0by5wZXJsCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyAtKi0gcGVybCAtKi0KLSMKLSMgVGhpcyBpbXBsZW1lbnRzIHRoZSBQeXRob24gaG93dG8gY2xhc3MuICBBbGwgaXQgcmVhbGx5IG5lZWRzIHRvIGRvIGl0Ci0jIGxvYWQgdGhlICJweXRob24iIHN0eWxlLgotCi1wYWNrYWdlIG1haW47Ci0KLWRvX3JlcXVpcmVfcGFja2FnZSgiYXJ0aWNsZSIpOwotZG9fcmVxdWlyZV9wYWNrYWdlKCJhbGx0dCIpOwotZG9fcmVxdWlyZV9wYWNrYWdlKCJweXRob24iKTsKLQotMTsJCQkJIyBzaGVlc2guLi4uCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvcGVybC9sMmhpbml0LnBlcmwgYi9kb2MvdG9vbHMvcGVybC9sMmhpbml0LnBlcmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNzIwZDkuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3BlcmwvbDJoaW5pdC5wZXJsCisrKyAvZGV2L251bGwKQEAgLTEsNTk0ICswLDAgQEAKLSMgTGFUZVgySFRNTCBzdXBwb3J0IGJhc2UgZm9yIHVzZSB3aXRoIFB5dGhvbiBkb2N1bWVudGF0aW9uLgotCi1wYWNrYWdlIG1haW47Ci0KLXVzZSBMMmhvczsKLQotJEhUTUxfVkVSU0lPTiA9IDQuMDsKLQotJE1BWF9MSU5LX0RFUFRIID0gMjsKLSRBRERSRVNTID0gJyc7Ci0KLSROT19GT09UTk9ERSA9IDE7Ci0kTlVNQkVSRURfRk9PVE5PVEVTID0gMTsKLQotIyBQeXRob24gZG9jdW1lbnRhdGlvbiB1c2VzIHNlY3Rpb24gbnVtYmVycyB0byBzdXBwb3J0IHJlZmVyZW5jZXMgdG8gbWF0Y2gKLSMgaW4gdGhlIHByaW50ZWQgYW5kIG9ubGluZSB2ZXJzaW9ucy4KLSMKLSRTSE9XX1NFQ1RJT05fTlVNQkVSUyA9IDE7Ci0KLSRJQ09OU0VSVkVSID0gJy4uL2ljb25zJzsKLSRJTUFHRV9UWVBFID0gJ2dpZic7Ci0KLSMgQ29udHJvbCB3aGVyZSB0aGUgbmF2aWdhdGlvbiBiYXJzIHNob3VsZCBzaG93IHVwOgotJFRPUF9OQVZJR0FUSU9OID0gMTsKLSRCT1RUT01fTkFWSUdBVElPTiA9IDE7Ci0kQVVUT19OQVZJR0FUSU9OID0gMDsKLQotJEJPRFlURVhUID0gJyc7Ci0kQ0hJTERMSU5FID0gIlxuPHA+PGhyPlxuIjsKLSRWRVJCT1NJVFkgPSAwOwotCi0jIGRlZmF1bHQgIyBvZiBjb2x1bW5zIGZvciB0aGUgaW5kZXhlcwotJElOREVYX0NPTFVNTlMgPSAyOwotJE1PRFVMRV9JTkRFWF9DT0xVTU5TID0gNDsKLQotCi0jIEEgbGl0dGxlIHBhaW5mdWwsIGJ1dCBsZXRzIHVzIGNsZWFuIHVwIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IGEgbGl0dGxlLAotIyBhbmQgbm90IGJlIHRpZWQgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IChhcyBmYXIgYXMgSSBjYW4gdGVsbCkuICBUZXN0aW5nCi0jIGFuIGV4aXN0aW5nIGRlZmluaXRpb24gb2YgJG15ZGlyIGlzIG5lZWRlZCBzaW5jZSBpdCBjYW5ub3QgYmUgY29tcHV0ZWQgd2hlbgotIyBydW4gdW5kZXIgbWtob3d0byB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiBMYVRlWDJIVE1MLCBzaW5jZSB0aGlzIGZpbGUgaXMKLSMgbm90IHJlYWQgZGlyZWN0bHkgYnkgTGFUZVgySFRNTCBhbnkgbW9yZS4gIG1raG93dG8gaXMgcmVxdWlyZWQgdG8gcHJlcGVuZAotIyB0aGUgcmVxdWlyZWQgZGVmaW5pdGlvbiBhdCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgaW5wdXQgZmlsZS4KLSMKLWlmICghZGVmaW5lZCAkbXlkaXIpIHsKLSAgICB1c2UgQ3dkOwotICAgIHVzZSBGaWxlOjpCYXNlbmFtZTsKLSAgICAoJG15bmFtZSwgJG15ZGlyLCAkbXlleHQpID0gZmlsZXBhcnNlKF9fRklMRV9fLCAnXC4uKicpOwotICAgIGNob3AgJG15ZGlyOwkJCSMgcmVtb3ZlIHRyYWlsaW5nICcvJwotICAgICRteWRpciA9IGdldGN3ZCgpIC4gIiRkZCRteWRpciIKLSAgICAgICAgdW5sZXNzICRteWRpciA9fiBzfF4vfC98OwotfQotJExBVEVYMkhUTUxTVFlMRVMgPSAiJG15ZGlyJGVudmtleSRMQVRFWDJIVE1MU1RZTEVTIjsKLXB1c2ggKEBJTkMsICRteWRpcik7Ci0KLSgkbXlyb290bmFtZSwgJG15cm9vdGRpciwgJG15ZXh0KSA9IGZpbGVwYXJzZSgkbXlkaXIsICdcLi4qJyk7Ci1jaG9wICRteXJvb3RkaXI7Ci0KLQotIyBIYWNraXNoIHdheSB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIHBhcGVyLSovIGRpcmVjdG9yeSBpbnRvICRURVhJTlBVVFM7Ci0jIHBhc3MgaW4gdGhlIHBhcGVyIHNpemUgKGE0IG9yIGxldHRlcikgYXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBBUEVSCi0jIHRvIGFkZCB0aGUgcmlnaHQgZGlyZWN0b3J5LiAgSWYgbm90IGdpdmVuLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMKLSMgYWRkZWQgaW5zdGVhZCBmb3IgdXNlIHdpdGggSE9XVE8gcHJvY2Vzc2luZy4KLSMKLWlmIChkZWZpbmVkICRFTlZ7J1BBUEVSJ30pIHsKLSAgICAkbXl0ZXhpbnB1dHMgPSAiJG15cm9vdGRpciR7ZGR9cGFwZXItJEVOVnsnUEFQRVInfSRlbnZrZXkiOwotfQotZWxzZSB7Ci0gICAgJG15dGV4aW5wdXRzID0gZ2V0Y3dkKCkgLiAkZW52a2V5OwotfQotJG15dGV4aW5wdXRzIC49ICIkbXlyb290ZGlyJHtkZH10ZXhpbnB1dHMiOwotCi0KLSMgQ2hhbmdlIHRoaXMgdmFyaWFibGUgdG8gY2hhbmdlIHRoZSB0ZXh0IGFkZGVkIGluICJBYm91dCB0aGlzIGRvY3VtZW50Li4uIjsKLSMgdGhpcyBzaG91bGQgYmUgYW4gYWJzb2x1dGUgcGF0aG5hbWUgdG8gZ2V0IGl0IHJpZ2h0LgotIwotJEFCT1VUX0ZJTEUgPSAiJG15cm9vdGRpciR7ZGR9aHRtbCR7ZGR9c3RkYWJvdXQuZGF0IjsKLQotCi1zdWIgY3VzdG9tX2RyaXZlcl9ob29rIHsKLSAgICAjCi0gICAgIyBUaGlzIGFkZHMgdGhlIGRpcmVjdG9yeSBvZiB0aGUgbWFpbiBpbnB1dCBmaWxlIHRvICRURVhJTlBVVFM7IGl0Ci0gICAgIyBzZWVtcyB0byBiZSBzdWZmaWNpZW50bHkgZ2VuZXJhbCB0aGF0IGl0IHNob3VsZCBiZSBmaW5lIGZvciBIT1dUTwotICAgICMgcHJvY2Vzc2luZy4KLSAgICAjCi0gICAgbXkgJGZpbGUgPSBAX1swXTsKLSAgICBteSgkam9ibmFtZSwgJGRpciwgJGV4dCkgPSBmaWxlcGFyc2UoJGZpbGUsICdcLi4qJyk7Ci0gICAgJGRpciA9IEwyaG9zLT5NYWtlX2RpcmVjdG9yeV9hYnNvbHV0ZSgkZGlyKTsKLSAgICAkZGlyID1+IHMvJGRkJC8vOwotICAgICRURVhJTlBVVFMgPSAiJGRpciRlbnZrZXkkbXl0ZXhpbnB1dHMiOwotICAgIHByaW50ICJcbkFkZGluZyAkZGlyIHRvIFwkVEVYSU5QVVRTXG4iOwotfQotCi0KLSRDVVNUT01fQlVUVE9OUyA9ICcnOwotCi1zdWIgbWFrZV9uYXZfc2VjdHJlZiB7Ci0gICAgbXkoJGxhYmVsLCR0aXRsZSkgPSBAXzsKLSAgICBpZiAoJHRpdGxlKSB7Ci0gICAgICAgIGlmICgkdGl0bGUgPX4gL1w8W2FBXSAvKSB7Ci0gICAgICAgICAgICAkdGl0bGUgPX4gcy9cPFthQV0gLzxhIGNsYXNzPSJzZWN0cmVmIiAvOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgJHRpdGxlID0gIjxzcGFuIGNsYXNzPVwic2VjdHJlZlwiPiR0aXRsZTwvc3Bhbj4iOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAiPGIgY2xhc3M9XCJuYXZsYWJlbFwiPiRsYWJlbDo8L2I+ICR0aXRsZVxuIjsKLSAgICB9Ci0gICAgcmV0dXJuICcnOwotfQotCi1AbXlfaWNvbl90YWdzID0gKCk7Ci0kbXlfaWNvbl90YWdzeyduZXh0J30gPSAnTmV4dCBQYWdlJzsKLSRteV9pY29uX3RhZ3N7J25leHRfcGFnZSd9ID0gJ05leHQgUGFnZSc7Ci0kbXlfaWNvbl90YWdzeydwcmV2aW91cyd9ID0gJ1ByZXZpb3VzIFBhZ2UnOwotJG15X2ljb25fdGFnc3sncHJldmlvdXNfcGFnZSd9ID0gJ1ByZXZpb3VzIFBhZ2UnOwotJG15X2ljb25fdGFnc3sndXAnfSA9ICdVcCBPbmUgTGV2ZWwnOwotJG15X2ljb25fdGFnc3snY29udGVudHMnfSA9ICdDb250ZW50cyc7Ci0kbXlfaWNvbl90YWdzeydpbmRleCd9ID0gJ0luZGV4JzsKLSRteV9pY29uX3RhZ3N7J21vZHVsZXMnfSA9ICdNb2R1bGUgSW5kZXgnOwotCi1AbXlfaWNvbl9uYW1lcyA9ICgpOwotJG15X2ljb25fbmFtZXN7J3ByZXZpb3VzX3BhZ2UnfSA9ICdwcmV2aW91cyc7Ci0kbXlfaWNvbl9uYW1lc3snbmV4dF9wYWdlJ30gPSAnbmV4dCc7Ci0KLXN1YiBnZXRfbXlfaWNvbiB7Ci0gICAgbXkgJG5hbWUgPSBAX1swXTsKLSAgICBteSAkdGV4dCA9ICRteV9pY29uX3RhZ3N7JG5hbWV9OwotICAgIGlmICgkbXlfaWNvbl9uYW1lc3skbmFtZX0pIHsKLSAgICAgICAgJG5hbWUgPSAkbXlfaWNvbl9uYW1lc3skbmFtZX07Ci0gICAgfQotICAgIGlmICgkdGV4dCBlcSAnJykgewotICAgICAgICAkbmFtZSA9ICdibGFuayc7Ci0gICAgfQotICAgIG15ICRpY29uc2VydmVyID0gKCRJQ09OU0VSVkVSIGVxICcuJykgPyAnJyA6ICIkSUNPTlNFUlZFUi8iOwotICAgIHJldHVybiAiPGltZyBzcmM9XCIkaWNvbnNlcnZlciRuYW1lLiRJTUFHRV9UWVBFXCJcbiAgYm9yZGVyPVwiMFwiIgotICAgICAgICAgICAuICIgaGVpZ2h0PVwiMzJcIlxuICBhbHQ9XCIkdGV4dFwiIHdpZHRoPVwiMzJcIj4iOwotfQotCi1zdWIgdXNlX215X2ljb24gewotICAgIG15ICRzID0gQF9bMF07Ci0gICAgaWYgKCRzID1+IC9cPHRleDJodG1sXyhbYS16X10rKV92aXNpYmxlX21hcmtcPi8pIHsKLSAgICAgICAgbXkgJHIgPSBnZXRfbXlfaWNvbigkMSk7Ci0gICAgICAgICRzID1+IHMvXDx0ZXgyaHRtbF9bYS16X10rX3Zpc2libGVfbWFya1w+LyRyLzsKLSAgICB9Ci0gICAgcmV0dXJuICRzOwotfQotCi1zdWIgbWFrZV9uYXZfcGFuZWwgewotICAgIG15ICRzOwotICAgIG15ICRCTEFOS19JQ09OID0gZ2V0X215X2ljb24oJ2JsYW5rJyk7Ci0gICAgJE5FWFQgPSAkTkVYVF9USVRMRSA/IHVzZV9teV9pY29uKCIkTkVYVCIpIDogJEJMQU5LX0lDT047Ci0gICAgJFVQID0gJFVQX1RJVExFID8gdXNlX215X2ljb24oIiRVUCIpIDogJEJMQU5LX0lDT047Ci0gICAgJFBSRVZJT1VTID0gJFBSRVZJT1VTX1RJVExFID8gdXNlX215X2ljb24oIiRQUkVWSU9VUyIpIDogJEJMQU5LX0lDT047Ci0gICAgJENPTlRFTlRTID0gdXNlX215X2ljb24oIiRDT05URU5UUyIpOwotICAgICRJTkRFWCA9ICRJTkRFWCA/IHVzZV9teV9pY29uKCIkSU5ERVgiKSA6ICRCTEFOS19JQ09OOwotICAgIGlmICghJENVU1RPTV9CVVRUT05TKSB7Ci0gICAgICAgICRDVVNUT01fQlVUVE9OUyA9ICRCTEFOS19JQ09OOwotICAgIH0KLSAgICAkcyA9ICgnPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjIiPicKLSAgICAgICAgICAuICJcbjx0cj4iCi0gICAgICAgICAgIyBsZWZ0LWhhbmQgc2lkZQotICAgICAgICAgIC4gIlxuPHRkPiRQUkVWSU9VUzwvdGQ+IgotICAgICAgICAgIC4gIlxuPHRkPiRVUDwvdGQ+IgotICAgICAgICAgIC4gIlxuPHRkPiRORVhUPC90ZD4iCi0gICAgICAgICAgIyB0aXRsZSBib3gKLSAgICAgICAgICAuICJcbjx0ZCBhbGlnbj1cImNlbnRlclwiIHdpZHRoPVwiMTAwJVwiPiR0X3RpdGxlPC90ZD4iCi0gICAgICAgICAgIyByaWdodC1oYW5kIHNpZGUKLSAgICAgICAgICAuICJcbjx0ZD4kQ09OVEVOVFM8L3RkPiIKLSAgICAgICAgICAuICJcbjx0ZD4kQ1VTVE9NX0JVVFRPTlM8L3RkPiIgIyBtb2R1bGUgaW5kZXgKLSAgICAgICAgICAuICJcbjx0ZD4kSU5ERVg8L3RkPiIKLSAgICAgICAgICAuICJcbjwvdHI+PC90YWJsZT5cbiIKLSAgICAgICAgICAjIHRleHR1YWwgbmF2aWdhdGlvbgotICAgICAgICAgIC4gbWFrZV9uYXZfc2VjdHJlZigiUHJldmlvdXMiLCAkUFJFVklPVVNfVElUTEUpCi0gICAgICAgICAgLiBtYWtlX25hdl9zZWN0cmVmKCJVcCIsICRVUF9USVRMRSkKLSAgICAgICAgICAuIG1ha2VfbmF2X3NlY3RyZWYoIk5leHQiLCAkTkVYVF9USVRMRSkKLSAgICAgICAgICApOwotICAgICMgcmVtb3ZlIHRoZXNlOyB0aGV5IGFyZSB1bm5lY2Vzc2FyeSBhbmQgY2F1c2UgZXJyb3JzIGZyb20gdmFsaWRhdGlvbgotICAgICRzID1+IHMvIE5BTUU9InRleDJodG1sXGQrIlxuICovIC9nOwotICAgIHJldHVybiAkczsKLX0KLQotc3ViIGdldF92ZXJzaW9uX3RleHQgewotICAgIGlmICgkUEFDS0FHRV9WRVJTSU9OIG5lICcnICYmICR0X2RhdGUpIHsKLSAgICAgICAgcmV0dXJuICgiPHNwYW4gY2xhc3M9XCJyZWxlYXNlLWluZm9cIj4iCi0gICAgICAgICAgICAgICAgLiAiUmVsZWFzZSAkUEFDS0FHRV9WRVJTSU9OLCIKLSAgICAgICAgICAgICAgICAuICIgZG9jdW1lbnRhdGlvbiB1cGRhdGVkIG9uICR0X2RhdGUuPC9zcGFuPiIpOwotICAgIH0KLSAgICBpZiAoJFBBQ0tBR0VfVkVSU0lPTiBuZSAnJykgewotICAgICAgICByZXR1cm4gKCI8c3BhbiBjbGFzcz1cInJlbGVhc2UtaW5mb1wiPiIKLSAgICAgICAgICAgICAgICAuICJSZWxlYXNlICRQQUNLQUdFX1ZFUlNJT04uPC9zcGFuPiIpOwotICAgIH0KLSAgICBpZiAoJHRfZGF0ZSkgewotICAgICAgICByZXR1cm4gKCI8c3BhbiBjbGFzcz1cInJlbGVhc2UtaW5mb1wiPkRvY3VtZW50YXRpb24gcmVsZWFzZWQgb24gIgotICAgICAgICAgICAgICAgIC4gIiR0X2RhdGUuPC9zcGFuPiIpOwotICAgIH0KLSAgICByZXR1cm4gJyc7Ci19Ci0KLQotc3ViIHRvcF9uYXZpZ2F0aW9uX3BhbmVsIHsKLSAgICByZXR1cm4gIlxuIgotICAgICAgICAgICAuIG1ha2VfbmF2X3BhbmVsKCkKLSAgICAgICAgICAgLiAiPGJyPjxocj5cbiI7Ci19Ci0KLXN1YiBib3RfbmF2aWdhdGlvbl9wYW5lbCB7Ci0gICAgcmV0dXJuICJcbjxwPjxocj5cbiIKLSAgICAgICAgICAgLiBtYWtlX25hdl9wYW5lbCgpCi0gICAgICAgICAgIC4gIjxocj5cbiIKLSAgICAgICAgICAgLiBnZXRfdmVyc2lvbl90ZXh0KCkKLSAgICAgICAgICAgLiAiXG4iOwotfQotCi1zdWIgYWRkX2xpbmsgewotICAgICMgUmV0dXJucyBhIHBhaXIgKGljb25pYyBsaW5rLCB0ZXh0dWFsIGxpbmspCi0gICAgbXkoJGljb24sICRjdXJyZW50X2ZpbGUsIEBsaW5rKSA9IEBfOwotICAgIG15KCRkdW1teSwgJGZpbGUsICR0aXRsZSkgPSBzcGxpdCgkZGVsaW0sCi0JCQkJICAgICAgJHNlY3Rpb25faW5mb3tqb2luKCcgJyxAbGluayl9KTsKLSAgICBpZiAoJGljb24gPX4gL1w8dGV4Mmh0bWxfKFtfYS16XSspX3Zpc2libGVfbWFya1w+LykgewotICAgICAgICBteSAkciA9IGdldF9teV9pY29uKCQxKTsKLSAgICAgICAgJGljb24gPX4gcy9cPHRleDJodG1sX1tfYS16XStfdmlzaWJsZV9tYXJrXD4vJHIvOwotICAgIH0KLSAgICBpZiAoJHRpdGxlICYmICgkZmlsZSBuZSAkY3VycmVudF9maWxlKSkgewotICAgICAgICAkdGl0bGUgPSBwdXJpZnkoJHRpdGxlKTsKLQkkdGl0bGUgPSBnZXRfZmlyc3Rfd29yZHMoJHRpdGxlLCAkV09SRFNfSU5fTkFWSUdBVElPTl9QQU5FTF9USVRMRVMpOwotCXJldHVybiAobWFrZV9ocmVmKCRmaWxlLCAkaWNvbiksIG1ha2VfaHJlZigkZmlsZSwgIiR0aXRsZSIpKQotCX0KLSAgICBlbHNpZiAoJGljb24gZXEgZ2V0X215X2ljb24oJ3VwJykgJiYgJEVYVEVSTkFMX1VQX0xJTkspIHsKLSAJcmV0dXJuIChtYWtlX2hyZWYoJEVYVEVSTkFMX1VQX0xJTkssICRpY29uKSwKLQkJbWFrZV9ocmVmKCRFWFRFUk5BTF9VUF9MSU5LLCAiJEVYVEVSTkFMX1VQX1RJVExFIikpCi0JfQotICAgIGVsc2lmICgkaWNvbiBlcSBnZXRfbXlfaWNvbigncHJldmlvdXMnKQotCSAgICYmICRFWFRFUk5BTF9QUkVWX0xJTksgJiYgJEVYVEVSTkFMX1BSRVZfVElUTEUpIHsKLQlyZXR1cm4gKG1ha2VfaHJlZigkRVhURVJOQUxfUFJFVl9MSU5LLCAkaWNvbiksCi0JCW1ha2VfaHJlZigkRVhURVJOQUxfUFJFVl9MSU5LLCAiJEVYVEVSTkFMX1BSRVZfVElUTEUiKSkKLQl9Ci0gICAgZWxzaWYgKCRpY29uIGVxIGdldF9teV9pY29uKCduZXh0JykKLQkgICAmJiAkRVhURVJOQUxfRE9XTl9MSU5LICYmICRFWFRFUk5BTF9ET1dOX1RJVExFKSB7Ci0JcmV0dXJuIChtYWtlX2hyZWYoJEVYVEVSTkFMX0RPV05fTElOSywgJGljb24pLAotCQltYWtlX2hyZWYoJEVYVEVSTkFMX0RPV05fTElOSywgIiRFWFRFUk5BTF9ET1dOX1RJVExFIikpCi0JfQotICAgIHJldHVybiAoJmluYWN0aXZlX2ltZygkaWNvbiksICIiKTsKLX0KLQotc3ViIGFkZF9zcGVjaWFsX2xpbmsgewotICAgIG15KCRpY29uLCAkZmlsZSwgJGN1cnJlbnRfZmlsZSkgPSBAXzsKLSAgICBpZiAoJGljb24gPX4gL1w8dGV4Mmh0bWxfKFtfYS16XSspX3Zpc2libGVfbWFya1w+LykgewotICAgICAgICBteSAkciA9IGdldF9teV9pY29uKCQxKTsKLSAgICAgICAgJGljb24gPX4gcy9cPHRleDJodG1sX1tfYS16XStfdmlzaWJsZV9tYXJrXD4vJHIvOwotICAgIH0KLSAgICByZXR1cm4gKCgkZmlsZSAmJiAoJGZpbGUgbmUgJGN1cnJlbnRfZmlsZSkpCi0gICAgICAgICAgICA/IG1ha2VfaHJlZigkZmlsZSwgJGljb24pCi0gICAgICAgICAgICA6IHVuZGVmKQotfQotCi0jIFRoZSBpbWdfdGFnKCkgZnVuY3Rpb24gc2VlbXMgb25seSB0byBiZSBjYWxsZWQgd2l0aCB0aGUgcGFyYW1ldGVyCi0jICdhbmNob3JfaW52aXNpYmxlX21hcmsnLCB3aGljaCB3ZSB3YW50IHRvIHR1cm4gaW50byAnJy4gIFNpbmNlCi0jIHJlcGxhY2VfaWNvbl9tYXJrcygpIGlzIHRoZSBvbmx5IGludGVyZXN0aW5nIGNhbGxlciwgYW5kIGFsbCBpdCByZWFsbHkKLSMgZG9lcyBpcyBjYWxsIGltZ190YWcoKSwgd2UgY2FuIGp1c3QgZGVmaW5lIHRoZSBob29rIGFsdGVybmF0aXZlIHRvIGJlCi0jIGEgbm8tb3AgaW5zdGVhZC4KLSMKLXN1YiByZXBsYWNlX2ljb25zX2hvb2sge30KLQotc3ViIGRvX2NtZF9hcmFiaWMgewotICAgICMgZ2V0IHJpZCBvZiB0aGF0IG5hc3R5IDxTUEFOIENMQVNTPSJhcmFiaWMiPi4uLjwvU1BBTj4KLSAgICBteSgkY3RyLCAkdmFsLCAkaWQsICR0ZXh0KSA9ICZyZWFkX2NvdW50ZXJfdmFsdWUoQF9bMF0pOwotICAgIHJldHVybiAoJHZhbCA/IGZhcmFiaWMoJHZhbCkgOiAiMCIpIC4gJHRleHQ7Ci19Ci0KLQotc3ViIGdlbl9pbmRleF9pZCB7Ci0gICAgIyB0aGlzIGlzIHVzZWQgdG8gZW5zdXJlIGNvbW1vbiBpbmRleCBrZXkgZ2VuZXJhdGlvbiBhbmQgYSBzdGFibGUgc29ydAotICAgIG15KCRzdHIsJGV4dHJhKSA9IEBfOwotICAgIHNwcmludGYoJyVzIyMjJXMlMDEwZCcsICRzdHIsICRleHRyYSwgKyskZ2xvYmFseydtYXhfaWQnfSk7Ci19Ci0KLXN1YiBpbnNlcnRfaW5kZXggewotICAgIG15KCRtYXJrLCRkYXRhZmlsZSwkY29sdW1ucywkbGV0dGVycywkcHJlZml4KSA9IEBfOwotICAgIG15ICRwcm9nID0gIiRteXJvb3RkaXIvdG9vbHMvYnVpbGRpbmRleC5weSI7Ci0gICAgbXkgJGluZGV4OwotICAgIGlmICgkbGV0dGVycykgewotCSRpbmRleCA9IGAkcHJvZyAtLWNvbHVtbnMgJGNvbHVtbnMgLS1sZXR0ZXJzICRkYXRhZmlsZWA7Ci0gICAgfQotICAgIGVsc2UgewotCSRpbmRleCA9IGAkcHJvZyAtLWNvbHVtbnMgJGNvbHVtbnMgJGRhdGFmaWxlYDsKLSAgICB9Ci0gICAgaWYgKCFzLyRtYXJrLyRwcmVmaXgkaW5kZXgvKSB7Ci0gICAgICAgIHByaW50ICJcbkNvdWxkIG5vdCBsb2NhdGUgaW5kZXggbWFyazogJG1hcmsiOwotICAgIH0KLX0KLQotc3ViIGFkZF9pZHggewotICAgIHByaW50ICJcbkJ1aWxkaW5nIEhUTUwgZm9yIHRoZSBpbmRleCAuLi4iOwotICAgIGNsb3NlKElEWEZJTEUpOwotICAgIGluc2VydF9pbmRleCgkaWR4X21hcmssICdpbmRleC5kYXQnLCAkSU5ERVhfQ09MVU1OUywgMSwgJycpOwotfQotCi0KLSRpZHhfbW9kdWxlX21hcmsgPSAnPHRleDJodG1sX2lkeF9tb2R1bGVfbWFyaz4nOwotJGlkeF9tb2R1bGVfdGl0bGUgPSAnTW9kdWxlIEluZGV4JzsKLQotc3ViIGFkZF9tb2R1bGVfaWR4IHsKLSAgICBwcmludCAiXG5CdWlsZGluZyBIVE1MIGZvciB0aGUgbW9kdWxlIGluZGV4IC4uLiI7Ci0gICAgbXkgJGtleTsKLSAgICBteSAkZmlyc3QgPSAxOwotICAgIG15ICRwcmV2cGxhdCA9ICcnOwotICAgIG15ICRhbGx0aGVzYW1lID0gMTsKLSAgICBteSAkcHJlZml4ID0gJyc7Ci0gICAgZm9yZWFjaCAka2V5IChrZXlzICVNb2R1bGVzKSB7Ci0JJGtleSA9fiBzLzx0dD4oW2EtekEtWjAtOS5fXSopPFwvdHQ+L1wxLzsKLQlteSAkcGxhdCA9ICIkTW9kdWxlUGxhdGZvcm1zeyRrZXl9IjsKLQkkcGxhdCA9ICcnCi0JICBpZiAoJHBsYXQgZXEgJElHTk9SRV9QTEFURk9STV9BTk5PVEFUSU9OKTsKLQlpZiAoISRmaXJzdCkgewotCSAgICAkYWxsdGhlc2FtZSA9IDAKLQkgICAgICBpZiAoJHByZXZwbGF0IG5lICRwbGF0KTsKLQl9Ci0JZWxzZSB7ICRmaXJzdCA9IDA7IH0KLQkkcHJldnBsYXQgPSAkcGxhdDsKLSAgICB9Ci0gICAgb3BlbihNT0RJRFhGSUxFLCAnPm1vZGluZGV4LmRhdCcpIHx8IGRpZSAiXG4kIVxuIjsKLSAgICBmb3JlYWNoICRrZXkgKGtleXMgJU1vZHVsZXMpIHsKLQkjIGR1bXAgdGhlIGxpbmUgaW4gdGhlIGRhdGEgZmlsZTsganVzdCB1c2UgYSBkdW1teSBzZXFubyBmaWVsZAotCW15ICRua2V5ID0gJDE7Ci0JbXkgJG1vZGl0ZW0gPSAiJE1vZHVsZXN7JGtleX0iOwotCW15ICRwbGF0ID0gJyc7Ci0JJGtleSA9fiBzLzx0dD4oW2EtekEtWjAtOS5fXSopPFwvdHQ+L1wxLzsKLQlpZiAoJE1vZHVsZVBsYXRmb3Jtc3ska2V5fSAmJiAhJGFsbHRoZXNhbWUpIHsKLQkgICAgJHBsYXQgPSAoIiA8ZW0+KDxzcGFuIGNsYXNzPSdwbGF0Zm9ybSc+JE1vZHVsZVBsYXRmb3Jtc3ska2V5fSIKLQkJICAgICAuICc8L3NwYW4+KTwvZW0+Jyk7Ci0JfQotCXByaW50IE1PRElEWEZJTEUgJG1vZGl0ZW0gLiAkSURYRklMRV9GSUVMRF9TRVAKLSAgICAgICAgICAgICAgLiAiPHR0IGNsYXNzPSdtb2R1bGUnPiRrZXk8L3R0PiRwbGF0IyMjXG4iOwotICAgIH0KLSAgICBjbG9zZShNT0RJRFhGSUxFKTsKLQotICAgIGlmICgkR0xPQkFMX01PRFVMRV9JTkRFWCkgewotICAgICAgICAkcHJlZml4ID0gPDxNT0RVTEVfSU5ERVhfUFJFRklYOwotCi08cD4gVGhpcyBpbmRleCBvbmx5IGxpc3RzIG1vZHVsZXMgZG9jdW1lbnRlZCBpbiB0aGlzIG1hbnVhbC4KLSAgVGhlIDxlbSBjbGFzcz0iY2l0ZXRpdGxlIj48YSBocmVmPSIkR0xPQkFMX01PRFVMRV9JTkRFWCI+R2xvYmFsIE1vZHVsZQotICAgICBJbmRleDwvYT48L2VtPiBsaXN0cyBhbGwgbW9kdWxlcyB0aGF0IGFyZSBkb2N1bWVudGVkIGluIHRoaXMgc2V0Ci0gIG9mIG1hbnVhbHMuPC9wPgotTU9EVUxFX0lOREVYX1BSRUZJWAotICAgIH0KLSAgICBpZiAoISRhbGx0aGVzYW1lKSB7Ci0JJHByZWZpeCAuPSA8PFBMQVRfRElTQ1VTUzsKLQotPHA+IFNvbWUgbW9kdWxlIG5hbWVzIGFyZSBmb2xsb3dlZCBieSBhbiBhbm5vdGF0aW9uIGluZGljYXRpbmcgd2hhdAotcGxhdGZvcm0gdGhleSBhcmUgYXZhaWxhYmxlIG9uLjwvcD4KLQotUExBVF9ESVNDVVNTCi0gICAgfQotICAgIGluc2VydF9pbmRleCgkaWR4X21vZHVsZV9tYXJrLCAnbW9kaW5kZXguZGF0JywgJE1PRFVMRV9JTkRFWF9DT0xVTU5TLCAwLAotCQkgJHByZWZpeCk7Ci19Ci0KLSMgcmVwbGFjZSBib3RoIGluZGV4ZXMgYXMgbmVlZGVkOgotc3ViIGFkZF9pZHhfaG9vayB7Ci0gICAgYWRkX2lkeCgpIGlmICgvJGlkeF9tYXJrLyk7Ci0gICAgcHJvY2Vzc19weXRob25fc3RhdGUoKTsKLSAgICBpZiAoJE1PRFVMRV9JTkRFWF9GSUxFKSB7Ci0gICAgICAgIGxvY2FsICgkXyk7Ci0gICAgICAgIG9wZW4oTVlGSUxFLCAiPCRNT0RVTEVfSU5ERVhfRklMRSIpOwotICAgICAgICBzeXNyZWFkKE1ZRklMRSwgJF8sIDEwMjQqMTAyNCk7Ci0gICAgICAgIGNsb3NlKE1ZRklMRSk7Ci0gICAgICAgIGFkZF9tb2R1bGVfaWR4KCk7Ci0gICAgICAgIG9wZW4oTVlGSUxFLCI+JE1PRFVMRV9JTkRFWF9GSUxFIik7Ci0gICAgICAgIHByaW50IE1ZRklMRSAkXzsKLSAgICAgICAgY2xvc2UoTVlGSUxFKTsKLSAgICB9Ci19Ci0KLQotIyBJbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgc3R1ZmYsIGFkZCBsYWJlbCB0byBhbGxvdyBuYW1lZCBub2RlIGZpbGVzIGFuZAotIyBzdXBwb3J0IHN1cHByZXNzaW9uIG9mIHRoZSBwYWdlIGNvbXBsZXRlIChmb3IgSFRNTCBIZWxwIHVzZSkuCi1zdWIgZG9fY21kX3RhYmxlb2Zjb250ZW50cyB7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgJFRJVExFID0gJHRvY190aXRsZTsKLSAgICAkdG9jZmlsZSA9ICRDVVJSRU5UX0ZJTEU7Ci0gICAgbXkoJGNsb3N1cmVzLCRyZW9wZW5zKSA9IHByZXNlcnZlX29wZW5fdGFncygpOwotICAgIGFuY2hvcl9sYWJlbCgnY29udGVudHMnLCAkQ1VSUkVOVF9GSUxFLCAkXyk7CSMgdGhpcyBpcyBhZGRlZAotICAgIGpvaW4oJycsICI8QlI+XG5cXHRhYmxlb2ZjaGlsZGxpbmtzW29mZl0iLCAkY2xvc3VyZXMKLQkgLCBtYWtlX3NlY3Rpb25faGVhZGluZygkdG9jX3RpdGxlLCAnSDInKSwgJHRvY19tYXJrCi0JICwgJHJlb3BlbnMsICRfKTsKLX0KLSMgSW4gYWRkaXRpb24gdG8gdGhlIHN0YW5kYXJkIHN0dWZmLCBhZGQgbGFiZWwgdG8gYWxsb3cgbmFtZWQgbm9kZSBmaWxlcy4KLXN1YiBkb19jbWRfbGlzdG9mZmlndXJlcyB7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgJFRJVExFID0gJGxvZl90aXRsZTsKLSAgICAkbG9mZmlsZSA9ICRDVVJSRU5UX0ZJTEU7Ci0gICAgbXkoJGNsb3N1cmVzLCRyZW9wZW5zKSA9IHByZXNlcnZlX29wZW5fdGFncygpOwotICAgIGFuY2hvcl9sYWJlbCgnbG9mJywgJENVUlJFTlRfRklMRSwgJF8pOwkJIyB0aGlzIGlzIGFkZGVkCi0gICAgam9pbignJywgIjxCUj5cbiIsICRjbG9zdXJlcwotCSAsIG1ha2Vfc2VjdGlvbl9oZWFkaW5nKCRsb2ZfdGl0bGUsICdIMicpLCAkbG9mX21hcmsKLQkgLCAkcmVvcGVucywgJF8pOwotfQotIyBJbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgc3R1ZmYsIGFkZCBsYWJlbCB0byBhbGxvdyBuYW1lZCBub2RlIGZpbGVzLgotc3ViIGRvX2NtZF9saXN0b2Z0YWJsZXMgewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgICRUSVRMRSA9ICRsb3RfdGl0bGU7Ci0gICAgJGxvdGZpbGUgPSAkQ1VSUkVOVF9GSUxFOwotICAgIG15KCRjbG9zdXJlcywkcmVvcGVucykgPSBwcmVzZXJ2ZV9vcGVuX3RhZ3MoKTsKLSAgICBhbmNob3JfbGFiZWwoJ2xvdCcsICRDVVJSRU5UX0ZJTEUsICRfKTsJCSMgdGhpcyBpcyBhZGRlZAotICAgIGpvaW4oJycsICI8QlI+XG4iLCAkY2xvc3VyZXMKLQkgLCBtYWtlX3NlY3Rpb25faGVhZGluZygkbG90X3RpdGxlLCAnSDInKSwgJGxvdF9tYXJrCi0JICwgJHJlb3BlbnMsICRfKTsKLX0KLSMgSW4gYWRkaXRpb24gdG8gdGhlIHN0YW5kYXJkIHN0dWZmLCBhZGQgbGFiZWwgdG8gYWxsb3cgbmFtZWQgbm9kZSBmaWxlcy4KLXN1YiBkb19jbWRfdGV4dG9odG1saW5mb3BhZ2UgewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIGlmICgkSU5GTykgewkJCQkJIyAKLQlhbmNob3JfbGFiZWwoImFib3V0IiwkQ1VSUkVOVF9GSUxFLCRfKTsJCSMgdGhpcyBpcyBhZGRlZAotICAgIH0JCQkJCQkJIwotICAgIG15ICR0aGVfdmVyc2lvbiA9ICcnOwkJCQkjIGFuZCB0aGUgcmVzdCBpcwotICAgIGlmICgkdF9kYXRlKSB7CQkJCQkjIG1vc3RseSBvdXJzCi0JJHRoZV92ZXJzaW9uID0gIixcbiR0X2RhdGUiOwotCWlmICgkUEFDS0FHRV9WRVJTSU9OKSB7Ci0JICAgICR0aGVfdmVyc2lvbiAuPSAiLCBSZWxlYXNlICRQQUNLQUdFX1ZFUlNJT04iOwotCX0KLSAgICB9Ci0gICAgJF8gPSAoKCRJTkZPID09IDEpCi0gICAgICAgICAgPyBqb2luKCcnLAotICAgICAgICAgICAgICAgICAkY2xvc2VfYWxsLAotICAgICAgICAgICAgICAgICAiPHN0cm9uZz4kdF90aXRsZTwvc3Ryb25nPiR0aGVfdmVyc2lvblxuIiwKLSAgICAgICAgICAgICAgICAgYGNhdCAkQUJPVVRfRklMRWAsCi0gICAgICAgICAgICAgICAgICRvcGVuX2FsbCwgJF8pCi0gICAgICAgICAgOiBqb2luKCcnLCAkY2xvc2VfYWxsLCAkSU5GTywiXG4iLCAkb3Blbl9hbGwsICRfKSk7Ci0gICAgJF87Ci19Ci0KLSMgJGlkeF9tYXJrIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcmVhbCBpbmRleCBhdCB0aGUgZW5kCi1zdWIgZG9fY21kX3RleHRvaHRtbGluZGV4IHsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICAkVElUTEUgPSAkaWR4X3RpdGxlOwotICAgICRpZHhmaWxlID0gJENVUlJFTlRfRklMRTsKLSAgICBpZiAoJWluZGV4X2xhYmVscykgeyBtYWtlX2luZGV4X2xhYmVscygpOyB9Ci0gICAgaWYgKCgkU0hPUlRfSU5ERVgpICYmICglaW5kZXhfc2VnbWVudCkpIHsgbWFrZV9wcmVpbmRleCgpOyB9Ci0gICAgZWxzZSB7ICRwcmVpbmRleCA9ICcnOyB9Ci0gICAgbXkgJGhlYWRpbmcgPSBtYWtlX3NlY3Rpb25faGVhZGluZygkaWR4X3RpdGxlLCAnaDInKSAuICRpZHhfbWFyazsKLSAgICBteSgkcHJlLCRwb3N0KSA9IG1pbmltaXplX29wZW5fdGFncygkaGVhZGluZyk7Ci0gICAgYW5jaG9yX2xhYmVsKCdnZW5pbmRleCcsJENVUlJFTlRfRklMRSwkXyk7CQkjIHRoaXMgaXMgYWRkZWQKLSAgICByZXR1cm4gIjxicj5cbiIgLiAkcHJlIC4gJF87Ci19Ci0KLSRNT0RVTEVfSU5ERVhfRklMRSA9ICcnOwotCi0jICRpZHhfbW9kdWxlX21hcmsgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSByZWFsIGluZGV4IGF0IHRoZSBlbmQKLXN1YiBkb19jbWRfdGV4dG9odG1sbW9kdWxlaW5kZXggewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgICRUSVRMRSA9ICRpZHhfbW9kdWxlX3RpdGxlOwotICAgIGFuY2hvcl9sYWJlbCgnbW9kaW5kZXgnLCAkQ1VSUkVOVF9GSUxFLCAkXyk7Ci0gICAgJE1PRFVMRV9JTkRFWF9GSUxFID0gIiRDVVJSRU5UX0ZJTEUiOwotICAgICRfID0gKCc8cD4nIC4gbWFrZV9zZWN0aW9uX2hlYWRpbmcoJGlkeF9tb2R1bGVfdGl0bGUsICdoMicpCi0gICAgICAgICAgLiAkaWR4X21vZHVsZV9tYXJrIC4gJF8pOwotICAgIHJldHVybiAkXzsKLX0KLQotIyBUaGUgYmlibGlvZ3JhcGh5IGFuZCB0aGUgaW5kZXggc2hvdWxkIGJlIHRyZWF0ZWQgYXMgc2VwYXJhdGUKLSMgc2VjdGlvbnMgaW4gdGhlaXIgb3duIEhUTUwgZmlsZXMuIFRoZSBcYmlibGlvZ3JhcGh5e30gY29tbWFuZCBhY3RzCi0jIGFzIGEgc2VjdGlvbmluZyBjb21tYW5kIHRoYXQgaGFzIHRoZSBkZXNpcmVkIGVmZmVjdC4gQnV0IHdoZW4gdGhlCi0jIGJpYmxpb2dyYXBoeSBpcyBjb25zdHJ1Y3RlZCBtYW51YWxseSB1c2luZyB0aGUgdGhlYmlibGlvZ3JhcGh5Ci0jIGVudmlyb25tZW50LCBvciB3aGVuIHVzaW5nIHRoZSB0aGVpbmRleCBlbnZpcm9ubWVudCBpdCBpcyBub3QKLSMgcG9zc2libGUgdG8gdXNlIHRoZSBub3JtYWwgc2VjdGlvbmluZyBtZWNoYW5pc20uIFRoaXMgc3Vicm91dGluZQotIyBpbnNlcnRzIGEgXGJpYmxpb2dyYXBoeXt9IG9yIGEgZHVtbXkgXHRleHRvaHRtbGluZGV4IGNvbW1hbmQganVzdAotIyBiZWZvcmUgdGhlIGFwcHJvcHJpYXRlIGVudmlyb25tZW50cyB0byBmb3JjZSBzZWN0aW9uaW5nLgotCi0jIFhYWAlUaGlzICphc3N1bWVzKiB0aGF0IGlmIHRoZXJlIGFyZSB0d28ge3RoZWluZGV4fSBlbnZpcm9ubWVudHMsCi0jCXRoZSBmaXJzdCBpcyB0aGUgbW9kdWxlIGluZGV4IGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBzdGFuZGFyZAotIwlpbmRleC4gIFRoaXMgaXMgc3VmZmljaWVudCBmb3IgdGhlIGN1cnJlbnQgUHl0aG9uIGRvY3VtZW50YXRpb24sCi0jCWJ1dCB0aGF0J3MgYWJvdXQgaXQuCi0KLXN1YiBhZGRfYmJsX2FuZF9pZHhfZHVtbXlfY29tbWFuZHMgewotICAgIG15ICRpZCA9ICRnbG9iYWx7J21heF9pZCd9OwotCi0gICAgcy8oW1xcXWJlZ2luXHMqJE9cZCskQ1xzKnRoZWJpYmxpb2dyYXBoeSkvJGJibF9jbnQrKzsgJDEvZWc7Ci0gICAgcy8oW1xcXWJlZ2luXHMqJE9cZCskQ1xzKnRoZWJpYmxpb2dyYXBoeSkvJGlkKys7ICJcXGJpYmxpb2dyYXBoeSRPJGlkJEMkTyRpZCRDICQxIi9nZW87Ci0gICAgbXkoQHBhcnRzKSA9IHNwbGl0KC9cXGJlZ2luXHMqJE9cZCskQ1xzKnRoZWluZGV4Lyk7Ci0gICAgaWYgKHNjYWxhcihAcGFydHMpID09IDMpIHsKLSAgICAgICAgIyBCZSBjYXJlZnVsIHRvIHJlLXdyaXRlIHRoZSBzdHJpbmcgaW4gcGxhY2UsIHNpbmNlICRfIGlzICpub3QqCi0gICAgICAgICMgcmV0dXJuZWQgZXhwbGljaXR5OyAgKioqIG5hc3R5IHNpZGUtZWZmZWN0IGRlcGVuZGVuY3khICoqKgotICAgICAgICBwcmludCAiXG5hZGRfYmJsX2FuZF9pZHhfZHVtbXlfY29tbWFuZHMgPT0+IGFkZGluZyBtb2R1bGUgaW5kZXgiOwotICAgICAgICBteSAkcnggPSAiKFtcXFxcXWJlZ2luXFxzKiRPXFxkKyRDXFxzKnRoZWluZGV4W1xcc1xcU10qKSIKLSAgICAgICAgICAuICIoW1xcXFxdYmVnaW5cXHMqJE9cXGQrJENcXHMqdGhlaW5kZXgpIjsKLSAgICAgICAgcy8kcngvXFx0ZXh0b2h0bWxtb2R1bGVpbmRleCBcMSBcXHRleHRvaHRtbGluZGV4IFwyL287Ci0gICAgICAgICMgQWRkIGEgYnV0dG9uIHRvIHRoZSBuYXZpZ2F0aW9uIGFyZWFzOgotICAgICAgICAkQ1VTVE9NX0JVVFRPTlMgLj0gKCc8YSBocmVmPSJtb2RpbmRleC5odG1sIiB0aXRsZT0iTW9kdWxlIEluZGV4Ij4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBnZXRfbXlfaWNvbignbW9kdWxlcycpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnPC9hPicpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgJENVU1RPTV9CVVRUT05TIC49IGdldF9teV9pY29uKCdibGFuaycpOwotICAgICAgICAkZ2xvYmFseydtYXhfaWQnfSA9ICRpZDsgIyBub3Qgc3VyZSB3aHkuLi4uCi0gICAgICAgIHMvKFtcXF1iZWdpblxzKiRPXGQrJENccyp0aGVpbmRleCkvXFx0ZXh0b2h0bWxpbmRleCAkMS9vOwotCSAgICBzL1tcXF1wcmludGluZGV4L1xcdGV4dG9odG1saW5kZXggL287Ci0JfQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgbGliX2FkZF9iYmxfYW5kX2lkeF9kdW1teV9jb21tYW5kcygpCi0gICAgICAgIGlmIGRlZmluZWQoJmxpYl9hZGRfYmJsX2FuZF9pZHhfZHVtbXlfY29tbWFuZHMpOwotfQotCi0jIFRoZSBiaWJsaW9ncmFwaGljIHJlZmVyZW5jZXMsIHRoZSBhcHBlbmRpY2VzLCB0aGUgbGlzdHMgb2YgZmlndXJlcwotIyBhbmQgdGFibGVzIGV0Yy4gbXVzdCBhcHBlYXIgaW4gdGhlIGNvbnRlbnRzIHRhYmxlIGF0IHRoZSBzYW1lIGxldmVsCi0jIGFzIHRoZSBvdXRlcm1vc3Qgc2VjdGlvbmluZyBjb21tYW5kLiBUaGlzIHN1YnJvdXRpbmUgZmluZHMgd2hhdCBpcwotIyB0aGUgb3V0ZXJtb3N0IGxldmVsIGFuZCBzZXRzIHRoZSBhYm92ZSB0byB0aGUgc2FtZSBsZXZlbDsKLQotc3ViIHNldF9kZXB0aF9sZXZlbHMgewotICAgICMgU2V0cyAkb3V0ZXJtb3N0X2xldmVsCi0gICAgbXkgJGxldmVsOwotICAgICNSUk06ICBkbyBub3QgYWx0ZXIgdXNlci1zZXQgdmFsdWUgZm9yICAkTUFYX1NQTElUX0RFUFRICi0gICAgZm9yZWFjaCAkbGV2ZWwgKCJwYXJ0IiwgImNoYXB0ZXIiLCAic2VjdGlvbiIsICJzdWJzZWN0aW9uIiwKLQkJICAgICJzdWJzdWJzZWN0aW9uIiwgInBhcmFncmFwaCIpIHsKLQlsYXN0IGlmICgoJG91dGVybW9zdF9sZXZlbCkgPSAvXFwoJGxldmVsKSRkZWxpbWl0ZXJfcngvKTsKLSAgICB9Ci0gICAgJGxldmVsID0gKCRvdXRlcm1vc3RfbGV2ZWwgPyAkc2VjdGlvbl9jb21tYW5kc3skb3V0ZXJtb3N0X2xldmVsfSA6Ci0JICAgICAgZG8geyRvdXRlcm1vc3RfbGV2ZWwgPSAnc2VjdGlvbic7IDM7fSk7Ci0KLSAgICAjUlJNOiAgYnV0IGNhbGN1bGF0ZSB2YWx1ZSBmb3IgJE1BWF9TUExJVF9ERVBUSCB3aGVuIGEgJFJFTF9ERVBUSCB3YXMgZ2l2ZW4KLSAgICBpZiAoJFJFTF9ERVBUSCAmJiAkTUFYX1NQTElUX0RFUFRIKSB7IAotCSRNQVhfU1BMSVRfREVQVEggPSAkbGV2ZWwgKyAkTUFYX1NQTElUX0RFUFRIOwotICAgIH0gZWxzaWYgKCEoJE1BWF9TUExJVF9ERVBUSCkpIHsgJE1BWF9TUExJVF9ERVBUSCA9IDEgfTsKLQotICAgICV1bm51bWJlcmVkX3NlY3Rpb25fY29tbWFuZHMgPSAoJ3RhYmxlb2Zjb250ZW50cycgPT4gJGxldmVsLAotCQkJCSAgICAnbGlzdG9mZmlndXJlcycgPT4gJGxldmVsLAotCQkJCSAgICAnbGlzdG9mdGFibGVzJyA9PiAkbGV2ZWwsCi0JCQkJICAgICdiaWJsaW9ncmFwaHknID0+ICRsZXZlbCwKLQkJCQkgICAgJ3RleHRvaHRtbGluZGV4JyA9PiAkbGV2ZWwsCi0JCQkJICAgICd0ZXh0b2h0bWxtb2R1bGVpbmRleCcgPT4gJGxldmVsKTsKLSAgICAkc2VjdGlvbl9oZWFkaW5nc3sndGV4dG9odG1sbW9kdWxlaW5kZXgnfSA9ICdoMSc7Ci0KLSAgICAlc2VjdGlvbl9jb21tYW5kcyA9ICgldW5udW1iZXJlZF9zZWN0aW9uX2NvbW1hbmRzLAotCQkJICVzZWN0aW9uX2NvbW1hbmRzKTsKLQotICAgIG1ha2Vfc2VjdGlvbnNfcngoKTsKLX0KLQotCi0jIFRoaXMgY2hhbmdlcyB0aGUgbWFya3VwIHVzZWQgZm9yIHt2ZXJiYXRpbX0gZW52aXJvbm1lbnRzLCBhbmQgaXMgdGhlCi0jIGJlc3Qgd2F5IEkndmUgZm91bmQgdGhhdCBlbnN1cmVzIHRoZSA8ZGw+IGdvZXMgb24gdGhlIG91dHNpZGUgb2YgdGhlCi0jIDxwcmU+Li4uPC9wcmU+LgotIwotIyBOb3RlIHRoYXQgdGhpcyAqbXVzdCogYmUgZG9uZSBpbiB0aGUgaW5pdCBmaWxlLCBub3QgdGhlIHB5dGhvbi5wZXJsCi0jIHN0eWxlIHN1cHBvcnQgZmlsZS4gIFRoZSAlZGVjbGFyYXRpb25zIG11c3QgYmUgc2V0IGJlZm9yZQotIyBpbml0aWFsaXplKCkgaXMgY2FsbGVkIGluIHRoZSBtYWluIExhVGVYMkhUTUwgc2NyaXB0ICh3aGljaCBoYXBwZW5zCi0jIGJlZm9yZSBzdHlsZSBmaWxlcyBhcmUgbG9hZGVkKS4KLSMKLSVkZWNsYXJhdGlvbnMgPSAoJ3ByZWZvcm0nID0+ICc8ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj48L3ByZT48L2RsPicsCi0JCSAlZGVjbGFyYXRpb25zKTsKLQotCi0jIFRoaXMgaXMgYWRkZWQgdG8gZ2V0IHJpZCBvZiB0aGUgbG9uZyBjb21tZW50IHRoYXQgZm9sbG93cyB0aGUKLSMgZG9jdHlwZSBkZWNsYXJhdGlvbjsgTVNJRTUgb24gTlQ0IFNQNCBiYXJmcyBvbiBpdCBhbmQgZHJvcHMgdGhlCi0jIGNvbnRlbnQgb2YgdGhlIHBhZ2UuCi1zdWIgbWFrZV9oZWFkX2FuZF9ib2R5IHsKLSAgICBteSgkdGl0bGUsICRib2R5KSA9IEBfOwotICAgICRib2R5ID0gIiAkYm9keSIgdW5sZXNzICgkYm9keSBlcSAnJyk7Ci0gICAgbXkgJERURGNvbW1lbnQgPSAnJzsKLSAgICBteSgkdmVyc2lvbiwgJGlzb2xhbmd1YWdlKSA9ICgkSFRNTF9WRVJTSU9OLCAnRU4nKTsKLSAgICBteSAlaXNvbGFuZ3VhZ2VzID0gKCAgJ2VuZ2xpc2gnLCAgJ0VOJyAgICwgJ1VTZW5nbGlzaCcsICdFTi5VUycKLSAgICAgICAgICAgICAgICAgICAgICAgICwgJ29yaWdpbmFsJywgJ0VOJyAgICwgJ2dlcm1hbicgICAsICdERScKLSAgICAgICAgICAgICAgICAgICAgICAgICwgJ2F1c3RyaWFuJywgJ0RFLkFUJywgJ2ZyZW5jaCcgICAsICdGUicKLSAgICAgICAgICAgICAgICAgICAgICAgICwgJ3NwYW5pc2gnLCAgJ0VTJyk7Ci0gICAgJGlzb2xhbmd1YWdlID0gJGlzb2xhbmd1YWdlc3skZGVmYXVsdF9sYW5ndWFnZX07Ci0gICAgJGlzb2xhbmd1YWdlID0gJ0VOJyB1bmxlc3MgJGlzb2xhbmd1YWdlOwotICAgICR0aXRsZSA9ICZwdXJpZnkoJHRpdGxlLDEpOwotICAgIGV2YWwoIlwkdGl0bGUgPSAiLiAkZGVmYXVsdF90aXRsZSApIHVubGVzcyAoJHRpdGxlKTsKLQotICAgICMgYWxsb3cgdXNlci1tb2RpZmljYXRpb24gb2YgdGhlIDxUSVRMRT4gdGFnOyB0aGFua3MgRGFuIFlvdW5nCi0gICAgaWYgKGRlZmluZWQgJmN1c3RvbV9USVRMRV9ob29rKSB7Ci0JJHRpdGxlID0gJmN1c3RvbV9USVRMRV9ob29rKCR0aXRsZSwgJHRvY19zZWNfdGl0bGUpOwotICAgIH0KLQotICAgIGlmICgkRE9DVFlQRSA9fiAvXC9cL1tcd1wuXStccyokLykgeyAjIGxhbmd1YWdlIHNwZWMgaW5jbHVkZWQKLQkkRFREY29tbWVudCA9ICI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgXCIkRE9DVFlQRVwiPlxuIjsKLSAgICB9IGVsc2UgewotCSREVERjb21tZW50ID0gIjwhRE9DVFlQRSBodG1sIFBVQkxJQyBcIiRET0NUWVBFLy8iCi0JICAgIC4gKCRJU09fTEFOR1VBR0UgPyAkSVNPX0xBTkdVQUdFIDogJGlzb2xhbmd1YWdlKSAuICJcIj5cbiI7Ci0gICAgfQotCi0gICAgJFNUWUxFU0hFRVQgPSAkRklMRS4iLmNzcyIgdW5sZXNzICRTVFlMRVNIRUVUOwotICAgIGlmICghJGNoYXJzZXQgJiYgJENIQVJTRVQpIHsgJGNoYXJzZXQgPSAkQ0hBUlNFVDsgJGNoYXJzZXQgPX4gcy9fL1wtL2dvOyB9Ci0KLSAgICBqb2luKCcnLCAoJERPQ1RZUEUgPyAkRFREY29tbWVudCA6ICcnICkKLQksIjxodG1sPlxuPGhlYWQ+XG48dGl0bGU+IiwgJHRpdGxlLCAiPC90aXRsZT5cbiIKLQksICZtZXRhX2luZm9ybWF0aW9uKCR0aXRsZSkKLQksICgkQ0hBUlNFVCAmJiAkSFRNTF9WRVJTSU9OIGdlICIyLjEiID8KLSAgICAgICAgICAgIjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PSRjaGFyc2V0XCI+XG4iCi0gICAgICAgICAgIDogIiIgKQotCSwgKCRCQVNFID8gIjxiYXNlIGhyZWY9XCIkQkFTRVwiPlxuIiA6ICIiICkKLQksICI8bGluayByZWw9XCJTVFlMRVNIRUVUXCIgaHJlZj1cIiRTVFlMRVNIRUVUXCI+IgotCSwgJG1vcmVfbGlua3NfbWFyawotCSwgIlxuPC9oZWFkPlxuPGJvZHkkYm9keT4iKTsKLX0KLQotMTsJIyBUaGlzIG11c3QgYmUgdGhlIGxhc3QgbGluZQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3BlcmwvbHR4bWFya3VwLnBlcmwgYi9kb2MvdG9vbHMvcGVybC9sdHhtYXJrdXAucGVybApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkwZTc5Yi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvcGVybC9sdHhtYXJrdXAucGVybAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMgTGFUZVgySFRNTCBzdXBwb3J0IGZvciB0aGUgbHR4bWFya3VwIHBhY2thZ2UuICBEb2Vzbid0IGRvIGluZGV4aW5nLgotCi1wYWNrYWdlIG1haW47Ci0KLQotc3ViIGx0eF9uZXh0X2FyZ3VtZW50ewotICAgIG15ICRwYXJhbTsKLSAgICAkcGFyYW0gPSBtaXNzaW5nX2JyYWNlcygpCi0gICAgICB1bmxlc3MgKChzLyRuZXh0X3BhaXJfcHJfcngvJHBhcmFtPSQyOycnL2VvKQotCSAgICAgIHx8KHMvJG5leHRfcGFpcl9yeC8kcGFyYW09JDI7JycvZW8pKTsKLSAgICByZXR1cm4gJHBhcmFtOwotfQotCi0KLXN1YiBkb19jbWRfbWFjcm97Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJG1hY3JvID0gbHR4X25leHRfYXJndW1lbnQoKTsKLSAgICByZXR1cm4gIjx0dCBjbGFzcz0nbWFjcm8nPiYjOTI7JG1hY3JvPC90dD4iIC4gJF87Ci19Ci0KLXN1YiBkb19jbWRfZW52ewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRlbnYgPSBsdHhfbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAiPHR0IGNsYXNzPSdlbnZpcm9ubWVudCc+JiM5MjskZW52PC90dD4iIC4gJF87Ci19Ci0KLXN1YiBsdHhfcHJvY2Vzc19wYXJhbXN7Ci0gICAgIyBIYW5kbGUgcHJvY2Vzc2luZyBvZiBccCBhbmQgXG9wIGZvciBwYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbnMgZm9yCi0gICAgIyBlbnZkZXNjIGFuZCBtYWNyb2Rlc2MuICBJdCdzIGRvbmUgdGhpcyB3YXkgdG8gYXZvaWQgZGVmaW5pbmcgZG9fY21kX3AoKQotICAgICMgYW5kIGRvX2NtZF9vcCgpIGZ1bmN0aW9ucywgd2hpY2ggd291bGQgYmUgaW50ZXJwcmV0ZWQgb3V0c2lkZSB0aGUgY29udGV4dAotICAgICMgaW4gd2hpY2ggdGhlc2UgY29tbWFuZHMgYXJlIGxlZ2FsLCBhbmQgY2F1c2UgTGFUZVgySFRNTCB0byB0aGluayB0aGV5J3JlCi0gICAgIyBkZWZpbmVkLiAgVGhpcyB3YXksIG90aGVyIHVzZXMgb2YgXHAgYW5kIFxvcCBhcmUgcHJvcGVybHkgZmxhZ2dlZCBhcwotICAgICMgdW5rbm93biBtYWNyb3MuCi0gICAgbXkgJHMgPSBAX1swXTsKLSAgICAkcyA9fiBzJVxcb3A8PChcZCspPj4oLispPDxcMT4+JTx0dD5bPC90dD48dmFyPiQyPC92YXI+PHR0Pl08L3R0PiU7Ci0gICAgd2hpbGUgKCRzID1+IC9cXHA8PChcZCspPj4oLispPDxcMT4+LykgewotCSRzID1+IHMlXFxwPDwoXGQrKT4+KC4rKTw8XDE+PiU8dHQ+ezwvdHQ+PHZhcj4kMjwvdmFyPjx0dD59PC90dD4lOwotICAgIH0KLSAgICByZXR1cm4gJHM7Ci19Ci0KLXN1YiBkb19lbnZfbWFjcm9kZXNjewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRtYWNybyA9IGx0eF9uZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHBhcmFtcyA9IGx0eF9wcm9jZXNzX3BhcmFtcyhsdHhfbmV4dF9hcmd1bWVudCgpKTsKLSAgICByZXR1cm4gIlxuPGRsIGNsYXNzPSdtYWNyb2Rlc2MnPiIKLSAgICAgICAgIC4gIlxuPGR0PjxiPjx0dCBjbGFzcz0nbWFjcm8nPiYjOTI7JG1hY3JvPC90dD48L2I+IgotICAgICAgICAgLiAiXG4gICAgJHBhcmFtcyIKLQkgLiAiXG48ZGQ+IgotCSAuICRfCi0JIC4gIjwvZGw+IjsKLX0KLQotc3ViIGRvX2Vudl9lbnZkZXNjewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRlbnYgPSBsdHhfbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRwYXJhbXMgPSBsdHhfcHJvY2Vzc19wYXJhbXMobHR4X25leHRfYXJndW1lbnQoKSk7Ci0gICAgcmV0dXJuICJcbjxkbCBjbGFzcz0nZW52ZGVzYyc+IgotICAgICAgICAgLiAiXG48ZHQ+PHR0PiYjOTI7YmVnaW57PGIgY2xhc3M9J2Vudmlyb25tZW50Jz4kZW52PC9iPn08L3R0PiIKLSAgICAgICAgIC4gIlxuICAgICRwYXJhbXMiCi0gICAgICAgICAuICJcbjxiciAvPjx0dD4mIzkyO2VuZHs8YiBjbGFzcz0nZW52aXJvbm1lbnQnPiRlbnY8L2I+fTwvdHQ+IgotCSAuICJcbjxkZD4iCi0JIC4gJF8KLQkgLiAiPC9kbD4iOwotfQotCi0xOwkJCQkjIE11c3QgZW5kIHdpdGggdGhpcywgYmVjYXVzZSBQZXJsIGlzIGJvZ3VzLgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3BlcmwvbWFudWFsLnBlcmwgYi9kb2MvdG9vbHMvcGVybC9tYW51YWwucGVybApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE2NWIzNi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvcGVybC9tYW51YWwucGVybAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMgLSotIHBlcmwgLSotCi0jCi0jIFRoaXMgaW1wbGVtZW50cyB0aGUgUHl0aG9uIG1hbnVhbCBjbGFzcy4gIEFsbCBpdCByZWFsbHkgbmVlZHMgdG8gZG8gaXQKLSMgbG9hZCB0aGUgInB5dGhvbiIgc3R5bGUuICBUaGUgc3R5bGUgY29kZSBpcyBub3QgbW92ZWQgaW50byB0aGUgY2xhc3MgY29kZQotIyBhdCB0aGlzIHRpbWUsIHNpbmNlIHdlIGV4cGVjdCBhZGRpdGlvbmFsIGRvY3VtZW50IGNsYXNzIHRvIGJlIGRldmVsb3BlZAotIyBmb3IgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGluIHRoZSBmdXR1cmUuICBBcHByb3ByaWF0ZSByZWxvY2F0aW9ucyB3aWxsCi0jIGJlIG1hZGUgYXQgdGhhdCB0aW1lLgotCi1wYWNrYWdlIG1haW47Ci0KLWRvX3JlcXVpcmVfcGFja2FnZSgicmVwb3J0Iik7Ci1kb19yZXF1aXJlX3BhY2thZ2UoImFsbHR0Iik7Ci1kb19yZXF1aXJlX3BhY2thZ2UoInB5dGhvbiIpOwotCi0xOwkJCQkjIHNoZWVzaC4uLi4KZGlmZiAtLWdpdCBhL2RvYy90b29scy9wZXJsL3B5dGhvbi5wZXJsIGIvZG9jL3Rvb2xzL3BlcmwvcHl0aG9uLnBlcmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNjE1Y2MuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3BlcmwvcHl0aG9uLnBlcmwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUxICswLDAgQEAKLSMgcHl0aG9uLnBlcmwgYnkgRnJlZCBMLiBEcmFrZSwgSnIuIDxmZHJha2VAYWNtLm9yZz4JCS0qLSBwZXJsIC0qLQotIwotIyBIZWF2aWx5IGJhc2VkIG9uIEd1aWRvIHZhbiBSb3NzdW0ncyBteWZvcm1hdC5wZXJsIChub3cgb2Jzb2xldGUpLgotIwotIyBFeHRlbnNpb24gdG8gTGFUZVgySFRNTCBmb3IgZG9jdW1lbnRzIHVzaW5nIG15Zm9ybWF0LnN0eS4KLSMgU3Vicm91dGluZXMgb2YgdGhlIGZvcm0gZG9fY21kXzxuYW1lPiBoZXJlIGRlZmluZSB0cmFuc2xhdGlvbnMKLSMgZm9yIExhVGVYIGNvbW1hbmRzIFw8bmFtZT4gZGVmaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyAuc3R5IGZpbGUuCi0KLXBhY2thZ2UgbWFpbjsKLQotdXNlIEZpbGU6OkJhc2VuYW1lOwotCi0KLXN1YiBuZXh0X2FyZ3VtZW50ewotICAgIG15ICRwYXJhbTsKLSAgICAkcGFyYW0gPSBtaXNzaW5nX2JyYWNlcygpCi0gICAgICB1bmxlc3MgKChzLyRuZXh0X3BhaXJfcHJfcngvJHBhcmFtPSQyOycnL2VvKQotCSAgICAgIHx8KHMvJG5leHRfcGFpcl9yeC8kcGFyYW09JDI7JycvZW8pKTsKLSAgICByZXR1cm4gJHBhcmFtOwotfQotCi1zdWIgbmV4dF9vcHRpb25hbF9hcmd1bWVudHsKLSAgICBteSgkcGFyYW0sJHJ4KSA9ICgnJywgIl5cXHMqKFxcWyhbXl1dKilcXF0pPyIpOwotICAgIHMvJHJ4LyRwYXJhbT0kMjsnJy9lbzsKLSAgICByZXR1cm4gJHBhcmFtOwotfQotCi1zdWIgbWFrZV9pY29uX2ZpbGVuYW1lKCQpewotICAgIG15KCRteW5hbWUsICRteWRpciwgJG15ZXh0KSA9IGZpbGVwYXJzZShAX1swXSwgJ1wuLionKTsKLSAgICBjaG9wICRteWRpcjsKLSAgICBpZiAoJG15ZGlyIGVxICcuJykgewotICAgICAgICAkbXlkaXIgPSAkSUNPTlNFUlZFUjsKLSAgICB9Ci0gICAgJG15ZXh0ID0gIi4kSU1BR0VfVFlQRSIKLSAgICAgIHVubGVzcyAkbXlleHQ7Ci0gICAgcmV0dXJuICIkbXlkaXIkZGQkbXluYW1lJG15ZXh0IjsKLX0KLQotc3ViIGdldF9saW5rX2ljb24oJCl7Ci0gICAgbXkgJHVybCA9IEBfWzBdOwotICAgIGlmICgkT0ZGX1NJVEVfTElOS19JQ09OICYmICgkdXJsID1+IC9eWy1hLXpBLVowLTkuXSs6LykpIHsKLSAgICAgICAgIyBhYnNvbHV0ZSBVUkw7IGFzc3VtZSBpdCBwb2ludHMgb2ZmLXNpdGUKLSAgICAgICAgbXkgJGljb24gPSBtYWtlX2ljb25fZmlsZW5hbWUoJE9GRl9TSVRFX0xJTktfSUNPTik7Ci0gICAgICAgIHJldHVybiAoIiA8aW1nIHNyYz0nJGljb24nXG4iCi0gICAgICAgICAgICAgICAgLiAiICBib3JkZXI9JzAnIGNsYXNzPSdvZmZzaXRlbGluayciCi0gICAgICAgICAgICAgICAgLiAoJE9GRl9TSVRFX0xJTktfSUNPTl9IRUlHSFQKLSAgICAgICAgICAgICAgICAgICA/ICIgaGVpZ2h0PSckT0ZGX1NJVEVfTElOS19JQ09OX0hFSUdIVCciCi0gICAgICAgICAgICAgICAgICAgOiAnJykKLSAgICAgICAgICAgICAgICAuICgkT0ZGX1NJVEVfTElOS19JQ09OX1dJRFRICi0gICAgICAgICAgICAgICAgICAgPyAiIHdpZHRoPSckT0ZGX1NJVEVfTElOS19JQ09OX1dJRFRIJyIKLSAgICAgICAgICAgICAgICAgICA6ICcnKQotICAgICAgICAgICAgICAgIC4gIiBhbHQ9J1tvZmYtc2l0ZSBsaW5rXSdcbiIKLSAgICAgICAgICAgICAgICAuICIgID4iKTsKLSAgICB9Ci0gICAgcmV0dXJuICcnOwotfQotCi0jIFRoaXMgaXMgYSBmYWlybHkgc2ltcGxlIGhhY2s7IGl0IHN1cHBvcnRzIFxsZXQgd2hlbiBpdCBpcyB1c2VkIHRvIGNyZWF0ZQotIyAob3IgcmVkZWZpbmUpIGEgbWFjcm8gdG8gZXhhY3RseSBiZSBzb21lIG90aGVyIG1hY3JvOiBcbGV0XG5ld25hbWU9XG9sZG5hbWUuCi0jIE1hbnkgcG9zc2libGUgdXNlcyBvZiBcbGV0IGFyZW4ndCBzdXBwb3J0ZWQgb3IgYXJlbid0IHN1cHBvcnRlZCBjb3JyZWN0bHkuCi0jCi1zdWIgZG9fY21kX2xldHsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkbWF0Y2hlZCA9IDA7Ci0gICAgcy9bXFxdKFthLXpBLVpdKylccyooPVxzKik/W1xcXShbYS16QS1aXSopLyRtYXRjaGVkPTE7ICcnL2U7Ci0gICAgaWYgKCRtYXRjaGVkKSB7Ci0JbXkoJG5ldywgJG9sZCkgPSAoJDEsICQzKTsKLQlldmFsICJzdWIgZG9fY21kXyRuZXcgeyBkb19jbWRfJG9sZCIgLiAnKEBfKTsgfSc7Ci0JcHJpbnQgIlxuZGVmaW5pbmcgaGFuZGxlciBmb3IgXFwkbmV3IHVzaW5nIFxcJG9sZFxuIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0Jcy9bXFxdKFthLXpBLVpdKylccyooPVxzKik/KFteXFxdKS8kbWF0Y2hlZD0xOyAnJy9lczsKLQlpZiAoJG1hdGNoZWQpIHsKLQkgICAgbXkoJG5ldywgJGNoYXIpID0gKCQxLCAkMyk7Ci0JICAgIGV2YWwgInN1YiBkb19jbWRfJG5ldyB7IFwiXFwkY2hhclwiIC4gXEBfWzBdOyB9IjsKLQkgICAgcHJpbnQgIlxuZGVmaW5pbmcgaGFuZGxlciBmb3IgXFwkbmV3IHRvIGluc2VydCAnJGNoYXInXG4iOwotCX0KLQllbHNlIHsKLQkgICAgd3JpdGVfd2FybmluZ3MoIkNvdWxkIG5vdCBpbnRlcnByZXQgXFxsZXQgY29uc3RydWN0Li4uIik7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gJF87Ci19Ci0KLQotIyB0aGUgb2xkZXIgdmVyc2lvbiBvZiBMYVRlWDJIVE1MIHdlIHVzZSBkb2Vzbid0IHN1cHBvcnQgdGhpcywgYnV0IHdlIHVzZSBpdDoKLQotc3ViIGRvX2NtZF90ZXh0YXNjaWl0aWxkZXsgJ34nIC4gQF9bMF07IH0KLQotCi0jIHdvcmRzIHR5cGVzZXQgaW4gYSBzcGVjaWFsIHdheSAobm90IGluIEhUTUwgdGhvdWdoKQotCi1zdWIgZG9fY21kX0FCQ3sgJ0FCQycgLiBAX1swXTsgfQotc3ViIGRvX2NtZF9VTklYeyAnVW5peCcuIEBfWzBdOyB9Ci1zdWIgZG9fY21kX0FTQ0lJeyAnQVNDSUknIC4gQF9bMF07IH0KLXN1YiBkb19jbWRfUE9TSVh7ICdQT1NJWCcgLiBAX1swXTsgfQotc3ViIGRvX2NtZF9DeyAnQycgLiBAX1swXTsgfQotc3ViIGRvX2NtZF9DcHB7ICdDKysnIC4gQF9bMF07IH0KLXN1YiBkb19jbWRfRU9GeyAnRU9GJyAuIEBfWzBdOyB9Ci1zdWIgZG9fY21kX05VTEx7ICc8dHQgY2xhc3M9ImNvbnN0YW50Ij5OVUxMPC90dD4nIC4gQF9bMF07IH0KLQotc3ViIGRvX2NtZF9leyAnJiM5MjsnIC4gQF9bMF07IH0KLQotJERFVkVMT1BFUl9BRERSRVNTID0gJyc7Ci0kU0hPUlRfVkVSU0lPTiA9ICcnOwotJFBBQ0tBR0VfVkVSU0lPTiA9ICcnOwotCi1zdWIgZG9fY21kX3ZlcnNpb257ICRQQUNLQUdFX1ZFUlNJT04gLiBAX1swXTsgfQotc3ViIGRvX2NtZF9zaG9ydHZlcnNpb257ICRTSE9SVF9WRVJTSU9OIC4gQF9bMF07IH0KLXN1YiBkb19jbWRfcmVsZWFzZXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICAkUEFDS0FHRV9WRVJTSU9OID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAkXzsKLX0KLQotc3ViIGRvX2NtZF9zZXRzaG9ydHZlcnNpb257Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgJFNIT1JUX1ZFUlNJT04gPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgcmV0dXJuICRfOwotfQotCi1zdWIgZG9fY21kX2F1dGhvcmFkZHJlc3N7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgJERFVkVMT1BFUl9BRERSRVNTID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAkXzsKLX0KLQotI3N1YiBkb19jbWRfZGV2ZWxvcGVyeyBkb19jbWRfYXV0aG9yKEBfWzBdKTsgfQotI3N1YiBkb19jbWRfZGV2ZWxvcGVyc3sgZG9fY21kX2F1dGhvcihAX1swXSk7IH0KLSNzdWIgZG9fY21kX2RldmVsb3BlcnNhZGRyZXNzeyBkb19jbWRfYXV0aG9yYWRkcmVzcyhAX1swXSk7IH0KLQotc3ViIGRvX2NtZF9oYWNrc2NvcmV7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAnXycgLiAkXzsKLX0KLQotc3ViIHVzZV93cmFwcGVyc3sKLSAgICBsb2NhbCgkXywkYmVmb3JlLCRhZnRlcikgPSBAXzsKLSAgICBteSAkc3R1ZmYgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgcmV0dXJuICRiZWZvcmUgLiAkc3R1ZmYgLiAkYWZ0ZXIgLiAkXzsKLX0KLQotJElOX0RFU0NfSEFORExFUiA9IDA7Ci1zdWIgZG9fY21kX29wdGlvbmFsewotICAgIGlmICgkSU5fREVTQ19IQU5ETEVSKSB7Ci0gICAgICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICI8L3Zhcj48YmlnPlxbPC9iaWc+PHZhcj4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8L3Zhcj48YmlnPlxdPC9iaWc+PHZhcj4iKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICI8YmlnPlxbPC9iaWc+IiwgIjxiaWc+XF08L2JpZz4iKTsKLSAgICB9Ci19Ci0KLSMgTG9naWNhbCBmb3JtYXR0aW5nIChzb21lIGJhc2VkIG9uIHRleGluZm8pLCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8KLSMgbWluaW1hbGlzdCBIVE1MLiAgVGhlICJtaW5pbWFsaXN0IiBpcyBwcmltYXJpbHkgdG8gcmVkdWNlIHRoZSBzaXplIG9mCi0jIG91dHB1dCBmaWxlcyBmb3IgdXNlcnMgdGhhdCByZWFkIHRoZW0gb3ZlciB0aGUgbmV0d29yayByYXRoZXIgdGhhbgotIyBmcm9tIGxvY2FsIHJlcG9zaXRvcmllcy4KLQotIyBcZmlsZSBhbmQgXHNhbXAgYXJlIGF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlIHNpbmNlIHRoZXkgc2NyZXcgdXAgZm9udGxvY2suCi0KLXN1YiBkb19jbWRfcHl0eXBleyByZXR1cm4gQF9bMF07IH0KLXN1YiBkb19jbWRfbWFrZXZhcnsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHNwYW4gY2xhc3M9Im1ha2V2YXIiPicsICc8L3NwYW4+Jyk7IH0KLXN1YiBkb19jbWRfY29kZXsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPGNvZGU+JywgJzwvY29kZT4nKTsgfQotc3ViIGRvX2NtZF9tb2R1bGV7Ci0gICAgcmV0dXJuIHVzZV93cmFwcGVycyhAX1swXSwgJzx0dCBjbGFzcz0ibW9kdWxlIj4nLCAnPC90dD4nKTsgfQotc3ViIGRvX2NtZF9rZXl3b3JkewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8dHQgY2xhc3M9ImtleXdvcmQiPicsICc8L3R0PicpOyB9Ci1zdWIgZG9fY21kX2V4Y2VwdGlvbnsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHR0IGNsYXNzPSJleGNlcHRpb24iPicsICc8L3R0PicpOyB9Ci1zdWIgZG9fY21kX2NsYXNzewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8dHQgY2xhc3M9ImNsYXNzIj4nLCAnPC90dD4nKTsgfQotc3ViIGRvX2NtZF9mdW5jdGlvbnsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHR0IGNsYXNzPSJmdW5jdGlvbiI+JywgJzwvdHQ+Jyk7IH0KLXN1YiBkb19jbWRfY29uc3RhbnR7Ci0gICAgcmV0dXJuIHVzZV93cmFwcGVycyhAX1swXSwgJzx0dCBjbGFzcz0iY29uc3RhbnQiPicsICc8L3R0PicpOyB9Ci1zdWIgZG9fY21kX21lbWJlcnsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHR0IGNsYXNzPSJtZW1iZXIiPicsICc8L3R0PicpOyB9Ci1zdWIgZG9fY21kX21ldGhvZHsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHR0IGNsYXNzPSJtZXRob2QiPicsICc8L3R0PicpOyB9Ci1zdWIgZG9fY21kX2NmdW5jdGlvbnsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHR0IGNsYXNzPSJjZnVuY3Rpb24iPicsICc8L3R0PicpOyB9Ci1zdWIgZG9fY21kX2NkYXRhewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8dHQgY2xhc3M9ImNkYXRhIj4nLCAnPC90dD4nKTsgfQotc3ViIGRvX2NtZF9jdHlwZXsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHR0IGNsYXNzPSJjdHlwZSI+JywgJzwvdHQ+Jyk7IH0KLXN1YiBkb19jbWRfcmVnZXhwewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8dHQgY2xhc3M9InJlZ2V4cCI+JywgJzwvdHQ+Jyk7IH0KLXN1YiBkb19jbWRfY2hhcmFjdGVyewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICciPHR0IGNsYXNzPSJjaGFyYWN0ZXIiPicsICc8L3R0PiInKTsgfQotc3ViIGRvX2NtZF9wcm9ncmFtewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8YiBjbGFzcz0icHJvZ3JhbSI+JywgJzwvYj4nKTsgfQotc3ViIGRvX2NtZF9wcm9ncmFtb3B0ewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8YiBjbGFzcz0icHJvZ3JhbW9wdCI+JywgJzwvYj4nKTsgfQotc3ViIGRvX2NtZF9sb25ncHJvZ3JhbW9wdHsKLSAgICAjIG5vdGUgdGhhdCB0aGUgLS0tIHdpbGwgYmUgbGF0ZXIgY29udmVydGVkIHRvIC0tIGJ5IExhVGVYMkhUTUwKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPGIgY2xhc3M9InByb2dyYW1vcHQiPi0tLScsICc8L2I+Jyk7IH0KLXN1YiBkb19jbWRfZW1haWx7Ci0gICAgcmV0dXJuIHVzZV93cmFwcGVycyhAX1swXSwgJzxzcGFuIGNsYXNzPSJlbWFpbCI+JywgJzwvc3Bhbj4nKTsgfQotc3ViIGRvX2NtZF9taW1ldHlwZXsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHNwYW4gY2xhc3M9Im1pbWV0eXBlIj4nLCAnPC9zcGFuPicpOyB9Ci1zdWIgZG9fY21kX3ZhcnsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAiPHZhcj4iLCAiPC92YXI+Iik7IH0KLXN1YiBkb19jbWRfZGZuewotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8aSBjbGFzcz0iZGZuIj4nLCAnPC9pPicpOyB9Ci1zdWIgZG9fY21kX2VtcGh7Ci0gICAgcmV0dXJuIHVzZV93cmFwcGVycyhAX1swXSwgJzxpPicsICc8L2k+Jyk7IH0KLXN1YiBkb19jbWRfZmlsZXsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPHNwYW4gY2xhc3M9ImZpbGUiPicsICc8L3NwYW4+Jyk7IH0KLXN1YiBkb19jbWRfZmlsZW5xewotICAgIHJldHVybiBkb19jbWRfZmlsZShAX1swXSk7IH0KLXN1YiBkb19jbWRfc2FtcHsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnIjx0dCBjbGFzcz0ic2FtcCI+JywgJzwvdHQ+IicpOyB9Ci1zdWIgZG9fY21kX2tiZHsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPGtiZD4nLCAnPC9rYmQ+Jyk7IH0KLXN1YiBkb19jbWRfc3Ryb25newotICAgIHJldHVybiB1c2Vfd3JhcHBlcnMoQF9bMF0sICc8Yj4nLCAnPC9iPicpOyB9Ci1zdWIgZG9fY21kX3RleHRiZnsKLSAgICByZXR1cm4gdXNlX3dyYXBwZXJzKEBfWzBdLCAnPGI+JywgJzwvYj4nKTsgfQotc3ViIGRvX2NtZF90ZXh0aXR7Ci0gICAgcmV0dXJuIHVzZV93cmFwcGVycyhAX1swXSwgJzxpPicsICc8L2k+Jyk7IH0KLQotc3ViIGRvX2NtZF9tb3JlYXJnc3sKLSAgICByZXR1cm4gJy4uLicgLiBAX1swXTsgfQotc3ViIGRvX2NtZF91bnNwZWNpZmllZHsKLSAgICByZXR1cm4gJy4uLicgLiBAX1swXTsgfQotCi0KLXN1YiBkb19jbWRfcmVmbW9kdWxlewotICAgICMgSW5zZXJ0IHRoZSByaWdodCBtYWdpYyB0byBqdW1wIHRvIHRoZSBtb2R1bGUgZGVmaW5pdGlvbi4KLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAka2V5ID0gbmV4dF9vcHRpb25hbF9hcmd1bWVudCgpOwotICAgIG15ICRtb2R1bGUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgJGtleSA9ICRtb2R1bGUKLSAgICAgICAgdW5sZXNzICRrZXk7Ci0gICAgcmV0dXJuICI8dHQgY2xhc3M9J21vZHVsZSc+PGEgaHJlZj0nbW9kdWxlLSRrZXkuaHRtbCc+JG1vZHVsZTwvYT48L3R0PiIKLSAgICAgIC4gJF87Ci19Ci0KLXN1YiBkb19jbWRfbmV3c2dyb3VwewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRuZXdzZ3JvdXAgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGljb24gPSBnZXRfbGlua19pY29uKCJuZXdzOiRuZXdzZ3JvdXAiKTsKLSAgICBteSAkc3R1ZmYgPSAiPGEgY2xhc3M9J25ld3Nncm91cCcgaHJlZj0nbmV3czokbmV3c2dyb3VwJz4iCi0gICAgICAuICIkbmV3c2dyb3VwJGljb248L2E+IjsKLSAgICByZXR1cm4gJHN0dWZmIC4gJF87Ci19Ci0KLXN1YiBkb19jbWRfZW52dmFyewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRlbnZ2YXIgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkoJG5hbWUsJGFuYW1lLCRhaHJlZikgPSBuZXdfbGlua19pbmZvKCk7Ci0gICAgIyBUaGUgPHR0PiBoZXJlIGlzIHJlYWxseSB0byBrZWVwIGJ1aWxkaW5kZXgucHkgZnJvbSBtYWtpbmcKLSAgICAjIHRoZSB2YXJpYWJsZSBuYW1lIGNhc2UtaW5zZW5zaXRpdmUuCi0gICAgYWRkX2luZGV4X2VudHJ5KCJlbnZpcm9ubWVudCB2YXJpYWJsZXMhJGVudnZhckA8dHQ+JGVudnZhcjwvdHQ+IiwKLQkJICAgICRhaHJlZik7Ci0gICAgYWRkX2luZGV4X2VudHJ5KCIkZW52dmFyIChlbnZpcm9ubWVudCB2YXJpYWJsZSkiLCAkYWhyZWYpOwotICAgICRhbmFtZSA9fiBzLzxhLzxhIGNsYXNzPSJlbnZ2YXIiLzsKLSAgICByZXR1cm4gIiRhbmFtZSRlbnZ2YXI8L2E+IiAuICRfOwotfQotCi1zdWIgZG9fY21kX3VybHsKLSAgICAjIHVzZSB0aGUgVVJMIGFzIGJvdGggdGV4dCBhbmQgaHlwZXJsaW5rCi0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJHVybCA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkaWNvbiA9IGdldF9saW5rX2ljb24oJHVybCk7Ci0gICAgJHVybCA9fiBzL34vJiMxMjY7L2c7Ci0gICAgcmV0dXJuICI8YSBjbGFzcz1cInVybFwiIGhyZWY9XCIkdXJsXCI+JHVybCRpY29uPC9hPiIgLiAkXzsKLX0KLQotc3ViIGRvX2NtZF9tYW5wYWdlewotICAgICMgdHdvIHBhcmFtZXRlcnM6ICBcbWFucGFnZXtuYW1lfXtzZWN0aW9ufQotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRwYWdlID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRzZWN0aW9uID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAiPHNwYW4gY2xhc3M9J21hbnBhZ2UnPjxpPiRwYWdlPC9pPigkc2VjdGlvbik8L3NwYW4+IiAuICRfOwotfQotCi0kUEVQX0ZPUk1BVCA9ICJodHRwOi8vcHl0aG9uLnNvdXJjZWZvcmdlLm5ldC9wZXBzL3BlcC1YWFhYLmh0bWwiOwotJFJGQ19GT1JNQVQgPSAiaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjWFhYWC50eHQiOwotCi1zdWIgZ2V0X3JmY191cmwoJCQpewotICAgIG15KCRyZmNudW0sICRmb3JtYXQpID0gQF87Ci0gICAgJHJmY251bSA9IHNwcmludGYoIiUwNGQiLCAkcmZjbnVtKTsKLSAgICAkZm9ybWF0ID0gIiRmb3JtYXQiOwotICAgICRmb3JtYXQgPX4gcy9YWFhYLyRyZmNudW0vOwotICAgIHJldHVybiAkZm9ybWF0OwotfQotCi1zdWIgZG9fY21kX3BlcHsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkcmZjbnVtYmVyID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRpZCA9ICJyZmNyZWYtIiAuICsrJGdsb2JhbHsnbWF4X2lkJ307Ci0gICAgbXkgJGhyZWYgPSBnZXRfcmZjX3VybCgkcmZjbnVtYmVyLCAkUEVQX0ZPUk1BVCk7Ci0gICAgbXkgJGljb24gPSBnZXRfbGlua19pY29uKCRocmVmKTsKLSAgICAjIFNhdmUgdGhlIHJlZmVyZW5jZQotICAgIG15ICRuc3RyID0gZ2VuX2luZGV4X2lkKCJQeXRob24gRW5oYW5jZW1lbnQgUHJvcG9zYWxzIVBFUCAkcmZjbnVtYmVyIiwgJycpOwotICAgICRpbmRleHskbnN0cn0gLj0gbWFrZV9oYWxmX2hyZWYoIiRDVVJSRU5UX0ZJTEUjJGlkIik7Ci0gICAgcmV0dXJuICgiPGEgY2xhc3M9XCJyZmNcIiBuYW1lPVwiJGlkXCJcbmhyZWY9XCIkaHJlZlwiPlBFUCAkcmZjbnVtYmVyIgotICAgICAgICAgICAgLiAiJGljb248L2E+IiAuICRfKTsKLX0KLQotc3ViIGRvX2NtZF9yZmN7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJHJmY251bWJlciA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkaWQgPSAicmZjcmVmLSIgLiArKyRnbG9iYWx7J21heF9pZCd9OwotICAgIG15ICRocmVmID0gZ2V0X3JmY191cmwoJHJmY251bWJlciwgJFJGQ19GT1JNQVQpOwotICAgIG15ICRpY29uID0gZ2V0X2xpbmtfaWNvbigkaHJlZik7Ci0gICAgIyBTYXZlIHRoZSByZWZlcmVuY2UKLSAgICBteSAkbnN0ciA9IGdlbl9pbmRleF9pZCgiUkZDIVJGQyAkcmZjbnVtYmVyIiwgJycpOwotICAgICRpbmRleHskbnN0cn0gLj0gbWFrZV9oYWxmX2hyZWYoIiRDVVJSRU5UX0ZJTEUjJGlkIik7Ci0gICAgcmV0dXJuICgiPGEgY2xhc3M9XCJyZmNcIiBuYW1lPVwiJGlkXCJcbmhyZWY9XCIkaHJlZlwiPlJGQyAkcmZjbnVtYmVyIgotICAgICAgICAgICAgLiAiJGljb248L2E+IiAuICRfKTsKLX0KLQotc3ViIGRvX2NtZF9jaXRldGl0bGV7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJHVybCA9IG5leHRfb3B0aW9uYWxfYXJndW1lbnQoKTsKLSAgICBteSAkdGl0bGUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGljb24gPSBnZXRfbGlua19pY29uKCR1cmwpOwotICAgIG15ICRyZXBsID0gJyc7Ci0gICAgaWYgKCR1cmwpIHsKLSAgICAgICAgJHJlcGwgPSAoIjxlbSBjbGFzcz0nY2l0ZXRpdGxlJz48YVxuIgotICAgICAgICAgICAgICAgICAuICIgaHJlZj0nJHVybCdcbiIKLSAgICAgICAgICAgICAgICAgLiAiIHRpdGxlPSckdGl0bGUnXG4iCi0gICAgICAgICAgICAgICAgIC4gIiA+JHRpdGxlJGljb248L2E+PC9lbT4iKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICRyZXBsID0gIjxlbSBjbGFzcz0nY2l0ZXRpdGxlJ1xuID4kdGl0bGU8L2VtPiI7Ci0gICAgfQotICAgIHJldHVybiAkcmVwbCAuICRfOwotfQotCi1zdWIgZG9fY21kX2RlcHJlY2F0ZWR7Ci0gICAgIyB0d28gcGFyYW1ldGVyczogIFxkZXByZWNhdGVke3ZlcnNpb259e3doYXR0b2RvfQotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRyZWxlYXNlID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRyZWFzb24gPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgcmV0dXJuICgnPGRpdiBjbGFzcz0idmVyc2lvbm5vdGUiPicKLSAgICAgICAgICAgIC4gIjxiPkRlcHJlY2F0ZWQgc2luY2UgcmVsZWFzZSAkcmVsZWFzZS48L2I+IgotICAgICAgICAgICAgLiAiXG4kcmVhc29uPC9kaXY+PHA+IgotICAgICAgICAgICAgLiAkXyk7Ci19Ci0KLXN1YiBkb19jbWRfdmVyc2lvbmFkZGVkewotICAgICMgb25lIHBhcmFtZXRlcjogIFx2ZXJzaW9uYWRkZWR7dmVyc2lvbn0KLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkcmVsZWFzZSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICByZXR1cm4gKCJcbjxzcGFuIGNsYXNzPSd2ZXJzaW9ubm90ZSc+TmV3IGluIHZlcnNpb24gJHJlbGVhc2UuPC9zcGFuPlxuIgotICAgICAgICAgICAgLiAkXyk7Ci19Ci0KLXN1YiBkb19jbWRfdmVyc2lvbmNoYW5nZWR7Ci0gICAgIyBvbmUgcGFyYW1ldGVyOiAgXHZlcnNpb25jaGFuZ2Vke3ZlcnNpb259Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGV4cGxhbmF0aW9uID0gbmV4dF9vcHRpb25hbF9hcmd1bWVudCgpOwotICAgIG15ICRyZWxlYXNlID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICR0ZXh0ID0gIkNoYW5nZWQgaW4gdmVyc2lvbiAkcmVsZWFzZS4iOwotICAgIGlmICgkZXhwbGFuYXRpb24pIHsKLSAgICAgICAgJHRleHQgPSAiQ2hhbmdlZCBpbiB2ZXJzaW9uICRyZWxlYXNlOlxuJGV4cGxhbmF0aW9uLiI7Ci0gICAgfQotICAgIHJldHVybiAiXG48c3BhbiBjbGFzcz0ndmVyc2lvbm5vdGUnPiR0ZXh0PC9zcGFuPlxuIiAuICRfOwotfQotCi0jCi0jIFRoZXNlIGZ1bmN0aW9uIGhhbmRsZSBwbGF0Zm9ybSBkZXBlbmRlbmN5IHRyYWNraW5nLgotIwotc3ViIGRvX2NtZF9wbGF0Zm9ybXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkcGxhdGZvcm0gPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgJE1vZHVsZVBsYXRmb3Jtc3siPHR0IGNsYXNzPSdtb2R1bGUnPiRUSElTX01PRFVMRTwvdHQ+In0gPSAkcGxhdGZvcm07Ci0gICAgJHBsYXRmb3JtID0gIk1hY2ludG9zaCIKLSAgICAgIGlmICRwbGF0Zm9ybSBlcSAnTWFjJzsKLSAgICByZXR1cm4gIlxuPHAgY2xhc3M9J2F2YWlsYWJpbGl0eSc+QXZhaWxhYmlsaXR5OiA8c3BhbiIKLSAgICAgIC4gIlxuIGNsYXNzPSdwbGF0Zm9ybSc+JHBsYXRmb3JtPC9zcGFuPi48L3A+XG4iIC4gJF87Ci19Ci0KLSRJR05PUkVfUExBVEZPUk1fQU5OT1RBVElPTiA9ICcnOwotc3ViIGRvX2NtZF9pZ25vcmVQbGF0Zm9ybUFubm90YXRpb257Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgJElHTk9SRV9QTEFURk9STV9BTk5PVEFUSU9OID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAkXzsKLX0KLQotCi0jIGluZGV4IGNvbW1hbmRzCi0KLSRJTkRFWF9TVUJJVEVNID0gIiI7Ci0KLXN1YiBnZXRfaW5kZXhzdWJpdGVtewotICAgIHJldHVybiAkSU5ERVhfU1VCSVRFTSA/ICIgJElOREVYX1NVQklURU0iIDogJyc7Ci19Ci0KLXN1YiBkb19jbWRfc2V0aW5kZXhzdWJpdGVtewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgICRJTkRFWF9TVUJJVEVNID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAkXzsKLX0KLQotc3ViIGRvX2NtZF93aXRoc3ViaXRlbXsKLSAgICAjIFdlIGNhbid0IHJlYWxseSBkbyB0aGUgcmlnaHQgdGhpbmcsIGJlY2F1c2UgTGFUZVgySFRNTCBkb2Vzbid0Ci0gICAgIyBkbyB0aGluZ3MgaW4gdGhlIHJpZ2h0IG9yZGVyLCBidXQgd2UgbmVlZCB0byBhdCBsZWFzdCBzdHJpcCB0aGlzIHN0dWZmCi0gICAgIyBvdXQsIGFuZCBsZWF2ZSBhbnl0aGluZyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgZXhwYW5kZWQgb3V0IHRvLgotICAgICMKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkb2xkc3ViaXRlbSA9ICRJTkRFWF9TVUJJVEVNOwotICAgICRJTkRFWF9TVUJJVEVNID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRzdHVmZiA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkYnJfaWQgPSArKyRnbG9iYWxzeydtYXhfaWQnfTsKLSAgICBteSAkbWFya2VyID0gIiRPJGJyX2lkJEMiOwotICAgIHJldHVybgotICAgICAgJHN0dWZmCi0gICAgICAuICJcXHNldGluZGV4c3ViaXRlbSRtYXJrZXIkb2xkc3ViaXRlbSRtYXJrZXIiCi0gICAgICAuICRfOwotfQotCi0jIFRoaXMgaXMgdGhlIHByb2xvZ3VlIG1hY3JvIHdoaWNoIGlzIHJlcXVpcmVkIHRvIHN0YXJ0IHdyaXRpbmcgdGhlCi0jIG1vZFxqb2JuYW1lLmlkeCBmaWxlOyB3ZSBjYW4ganVzdCBpZ25vcmUgaXQuICAoRGVmaW5pbmcgdGhpcyBzdXBwcmVzc2VzCi0jIGEgd2FybmluZyB0aGF0IFxtYWtlbW9kaW5kZXggaXMgdW5rbm93bi4pCi0jCi1zdWIgZG9fY21kX21ha2Vtb2RpbmRleHsgcmV0dXJuIEBfWzBdOyB9Ci0KLSMgV2UncmUgaW4gdGhlIGRvY3VtZW50IHN1YmRpcmVjdG9yeSB3aGVuIHRoaXMgaGFwcGVucyEKLSMKLW9wZW4oSURYRklMRSwgJz5pbmRleC5kYXQnKSB8fCBkaWUgIlxuJCFcbiI7Ci1vcGVuKElOVExBQkVMUywgJz5pbnRsYWJlbHMucGwnKSB8fCBkaWUgIlxuJCFcbiI7Ci1wcmludCBJTlRMQUJFTFMgIiVpbnRlcm5hbF9sYWJlbHMgPSAoKTtcbiI7Ci1wcmludCBJTlRMQUJFTFMgIjE7CQkjIGhhY2sgaW4gY2FzZSB0aGVyZSBhcmUgbm8gZW50cmllc1xuXG4iOwotCi0jIFVzaW5nIFwwIGZvciB0aGlzIGlzIGJhZCBiZWNhdXNlIHdlIGNhbid0IHVzZSBjb21tb24gdG9vbHMgdG8gd29yayB3aXRoIHRoZQotIyByZXN1bHRpbmcgZmlsZXMuICBUaGluZ3MgbGlrZSBncmVwIGNhbiBiZSB1c2VmdWwgd2l0aCB0aGlzIHN0dWZmIQotIwotJElEWEZJTEVfRklFTERfU0VQID0gIlwxIjsKLQotc3ViIHdyaXRlX2lkeGZpbGV7Ci0gICAgbXkgKCRhaHJlZiwgJHN0cikgPSBAXzsKLSAgICBwcmludCBJRFhGSUxFICRhaHJlZiwgJElEWEZJTEVfRklFTERfU0VQLCAkc3RyLCAiXG4iOwotfQotCi0KLXN1YiBnZW5fbGlua3sKLSAgICBteSgkbm9kZSwkdGFyZ2V0KSA9IEBfOwotICAgIHByaW50IElOVExBQkVMUyAiXCRpbnRlcm5hbF9sYWJlbHN7XCIkdGFyZ2V0XCJ9ID0gXCIkVVJMLyRub2RlXCI7XG4iOwotICAgIHJldHVybiAiPGEgaHJlZj0nJG5vZGUjJHRhcmdldCc+IjsKLX0KLQotc3ViIGFkZF9pbmRleF9lbnRyeXsKLSAgICAjIGFkZCBhbiBlbnRyeSB0byB0aGUgaW5kZXggc3RydWN0dXJlczsgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUKLSAgICBteSgkc3RyLCRhaHJlZikgPSBAXzsKLSAgICAkc3RyID0gZ2VuX2luZGV4X2lkKCRzdHIsICcnKTsKLSAgICAkaW5kZXh7JHN0cn0gLj0gJGFocmVmOwotICAgIHdyaXRlX2lkeGZpbGUoJGFocmVmLCAkc3RyKTsKLX0KLQotc3ViIG5ld19saW5rX2luZm97Ci0gICAgbXkgJG5hbWUgPSAibDJoLSIgLiArKyRnbG9iYWxzeydtYXhfaWQnfTsKLSAgICBteSAkYW5hbWUgPSAiPGEgbmFtZT0nJG5hbWUnPiI7Ci0gICAgbXkgJGFocmVmID0gZ2VuX2xpbmsoJENVUlJFTlRfRklMRSwgJG5hbWUpOwotICAgIHJldHVybiAoJG5hbWUsICRhbmFtZSwgJGFocmVmKTsKLX0KLQotJEluZGV4TWFjcm9QYXR0ZXJuID0gJyc7Ci1zdWIgZGVmaW5lX2luZGV4aW5nX21hY3JvewotICAgIG15ICRjb3VudCA9IEBfOwotICAgIG15ICRpID0gMDsKLSAgICBmb3IgKDsgJGkgPCAkY291bnQ7ICsrJGkpIHsKLQlteSAkbmFtZSA9IEBfWyRpXTsKLQlteSAkY21kID0gImlkeF9jbWRfJG5hbWUiOwotCWRpZSAiXG5ObyBmdW5jdGlvbiAkY21kKCkgZGVmaW5lZCFcbiIKLQkgIGlmICghZGVmaW5lZCAmJGNtZCk7Ci0JZXZhbCAoInN1YiBkb19jbWRfJG5hbWUgeyByZXR1cm4gcHJvY2Vzc19pbmRleF9tYWNyb3MoIgotCSAgICAgIC4gIlxAX1swXSwgJyRuYW1lJyk7IH0iKTsKLQlpZiAobGVuZ3RoKCRJbmRleE1hY3JvUGF0dGVybikgPT0gMCkgewotCSAgICAkSW5kZXhNYWNyb1BhdHRlcm4gPSAiJG5hbWUiOwotCX0KLQllbHNlIHsKLQkgICAgJEluZGV4TWFjcm9QYXR0ZXJuIC49ICJ8JG5hbWUiOwotCX0KLSAgICB9Ci19Ci0KLSRERUJVR19JTkRFWElORyA9IDA7Ci1zdWIgcHJvY2Vzc19pbmRleF9tYWNyb3N7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGNtZG5hbWUgPSBAX1sxXTsJIyBUaGlzIGlzIHdoYXQgdHJpZ2dlcmVkIHVzIGluIHRoZSBmaXJzdCBwbGFjZTsKLQkJCQkjIHdlIGtub3cgaXQncyByZWFsLCBzbyBqdXN0IHByb2Nlc3MgaXQuCi0gICAgbXkoJG5hbWUsJGFuYW1lLCRhaHJlZikgPSBuZXdfbGlua19pbmZvKCk7Ci0gICAgbXkgJGNtZCA9ICJpZHhfY21kXyRjbWRuYW1lIjsKLSAgICBwcmludCAiXG5JbmRleGluZzogXFwkY21kbmFtZSIKLSAgICAgIGlmICRERUJVR19JTkRFWElORzsKLSAgICAmJGNtZCgkYWhyZWYpOwkJIyBtb2RpZmllcyAkXyBhbmQgYWRkcyBpbmRleCBlbnRyaWVzCi0gICAgd2hpbGUgKC9eW1xzXG5dKlxcKCRJbmRleE1hY3JvUGF0dGVybik8LykgewotCSRjbWRuYW1lID0gIiQxIjsKLQlwcmludCAiIFxcJGNtZG5hbWUiCi0JICBpZiAkREVCVUdfSU5ERVhJTkc7Ci0JJGNtZCA9ICJpZHhfY21kXyRjbWRuYW1lIjsKLQlpZiAoIWRlZmluZWQgJiRjbWQpIHsKLQkgICAgbGFzdDsKLQl9Ci0JZWxzZSB7Ci0JICAgIHMvXltcc1xuXSpcXCRjbWRuYW1lLy87Ci0JICAgICYkY21kKCRhaHJlZik7Ci0JfQotICAgIH0KLSAgICBpZiAoL15bIFx0XHJcbl0vKSB7Ci0gICAgICAgICRfID0gc3Vic3RyKCRfLCAxKTsKLSAgICB9Ci0gICAgcmV0dXJuICIkYW5hbWUkYW5jaG9yX2ludmlzaWJsZV9tYXJrPC9hPiIgLiAkXzsKLX0KLQotZGVmaW5lX2luZGV4aW5nX21hY3JvKCdpbmRleCcpOwotc3ViIGlkeF9jbWRfaW5kZXh7Ci0gICAgbXkgJHN0ciA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBhZGRfaW5kZXhfZW50cnkoIiRzdHIiLCBAX1swXSk7Ci19Ci0KLWRlZmluZV9pbmRleGluZ19tYWNybygna3dpbmRleCcpOwotc3ViIGlkeF9jbWRfa3dpbmRleHsKLSAgICBteSAkc3RyID0gbmV4dF9hcmd1bWVudCgpOwotICAgIGFkZF9pbmRleF9lbnRyeSgiPHR0PiRzdHI8L3R0PiFrZXl3b3JkIiwgQF9bMF0pOwotICAgIGFkZF9pbmRleF9lbnRyeSgia2V5d29yZCE8dHQ+JHN0cjwvdHQ+IiwgQF9bMF0pOwotfQotCi1kZWZpbmVfaW5kZXhpbmdfbWFjcm8oJ2luZGV4aWknKTsKLXN1YiBpZHhfY21kX2luZGV4aWl7Ci0gICAgbXkgJHN0cjEgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHN0cjIgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgYWRkX2luZGV4X2VudHJ5KCIkc3RyMSEkc3RyMiIsIEBfWzBdKTsKLSAgICBhZGRfaW5kZXhfZW50cnkoIiRzdHIyISRzdHIxIiwgQF9bMF0pOwotfQotCi1kZWZpbmVfaW5kZXhpbmdfbWFjcm8oJ2luZGV4aWlpJyk7Ci1zdWIgaWR4X2NtZF9pbmRleGlpaXsKLSAgICBteSAkc3RyMSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkc3RyMiA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkc3RyMyA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBhZGRfaW5kZXhfZW50cnkoIiRzdHIxISRzdHIyICRzdHIzIiwgQF9bMF0pOwotICAgIGFkZF9pbmRleF9lbnRyeSgiJHN0cjIhJHN0cjMsICRzdHIxIiwgQF9bMF0pOwotICAgIGFkZF9pbmRleF9lbnRyeSgiJHN0cjMhJHN0cjEgJHN0cjIiLCBAX1swXSk7Ci19Ci0KLWRlZmluZV9pbmRleGluZ19tYWNybygnaW5kZXhpdicpOwotc3ViIGlkeF9jbWRfaW5kZXhpdnsKLSAgICBteSAkc3RyMSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkc3RyMiA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkc3RyMyA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkc3RyNCA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBhZGRfaW5kZXhfZW50cnkoIiRzdHIxISRzdHIyICRzdHIzICRzdHI0IiwgQF9bMF0pOwotICAgIGFkZF9pbmRleF9lbnRyeSgiJHN0cjIhJHN0cjMgJHN0cjQsICRzdHIxIiwgQF9bMF0pOwotICAgIGFkZF9pbmRleF9lbnRyeSgiJHN0cjMhJHN0cjQsICRzdHIxICRzdHIyIiwgQF9bMF0pOwotICAgIGFkZF9pbmRleF9lbnRyeSgiJHN0cjQhJCRzdHIxICRzdHIyICRzdHIzIiwgQF9bMF0pOwotfQotCi1kZWZpbmVfaW5kZXhpbmdfbWFjcm8oJ3R0aW5kZXgnKTsKLXN1YiBpZHhfY21kX3R0aW5kZXh7Ci0gICAgbXkgJHN0ciA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkZW50cnkgPSAkc3RyIC4gZ2V0X2luZGV4c3ViaXRlbSgpOwotICAgIGFkZF9pbmRleF9lbnRyeSgkZW50cnksIEBfWzBdKTsKLX0KLQotc3ViIG15X3R5cGVkX2luZGV4X2hlbHBlcnsKLSAgICBteSgkd29yZCwkYWhyZWYpID0gQF87Ci0gICAgbXkgJHN0ciA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBhZGRfaW5kZXhfZW50cnkoIiRzdHIgJHdvcmQiLCAkYWhyZWYpOwotICAgIGFkZF9pbmRleF9lbnRyeSgiJHdvcmQhJHN0ciIsICRhaHJlZik7Ci19Ci0KLWRlZmluZV9pbmRleGluZ19tYWNybygnc3RpbmRleCcsICdvcGluZGV4JywgJ2V4aW5kZXgnLCAnb2JpbmRleCcpOwotc3ViIGlkeF9jbWRfc3RpbmRleHsgbXlfdHlwZWRfaW5kZXhfaGVscGVyKCdzdGF0ZW1lbnQnLCBAX1swXSk7IH0KLXN1YiBpZHhfY21kX29waW5kZXh7IG15X3R5cGVkX2luZGV4X2hlbHBlcignb3BlcmF0b3InLCBAX1swXSk7IH0KLXN1YiBpZHhfY21kX2V4aW5kZXh7IG15X3R5cGVkX2luZGV4X2hlbHBlcignZXhjZXB0aW9uJywgQF9bMF0pOyB9Ci1zdWIgaWR4X2NtZF9vYmluZGV4eyBteV90eXBlZF9pbmRleF9oZWxwZXIoJ29iamVjdCcsIEBfWzBdKTsgfQotCi1kZWZpbmVfaW5kZXhpbmdfbWFjcm8oJ2JpZnVuY2luZGV4Jyk7Ci1zdWIgaWR4X2NtZF9iaWZ1bmNpbmRleHsKLSAgICBteSAkc3RyID0gbmV4dF9hcmd1bWVudCgpOwotICAgIGFkZF9pbmRleF9lbnRyeSgiPHR0IGNsYXNzPSdmdW5jdGlvbic+JHN0cigpPC90dD4gKGJ1aWx0LWluIGZ1bmN0aW9uKSIsCi0gICAgICAgICAgICAgICAgICAgIEBfWzBdKTsKLX0KLQotCi1zdWIgbWFrZV9tb2RfaW5kZXhfZW50cnl7Ci0gICAgbXkoJHN0ciwkZGVmaW5lKSA9IEBfOwotICAgIG15KCRuYW1lLCRhbmFtZSwkYWhyZWYpID0gbmV3X2xpbmtfaW5mbygpOwotICAgICMgZXF1aXZhbGVudCBvZiBhZGRfaW5kZXhfZW50cnkoKSB1c2luZyAkZGVmaW5lIGluc3RlYWQgb2YgJycKLSAgICAkYWhyZWYgPX4gcy9cI1stX2EtekEtWjAtOV0qXCIvXCIvCi0gICAgICBpZiAoJGRlZmluZSBlcSAnREVGJyk7Ci0gICAgJHN0ciA9IGdlbl9pbmRleF9pZCgkc3RyLCAkZGVmaW5lKTsKLSAgICAkaW5kZXh7JHN0cn0gLj0gJGFocmVmOwotICAgIHdyaXRlX2lkeGZpbGUoJGFocmVmLCAkc3RyKTsKLQotICAgIGlmICgkZGVmaW5lIGVxICdERUYnKSB7Ci0JIyBhZGQgdG8gdGhlIG1vZHVsZSBpbmRleAotICAgICAgICAkc3RyID1+IC8oPHR0Lio8XC90dD4pLzsKLSAgICAgICAgbXkgJG5zdHIgPSAkMTsKLQkkTW9kdWxlc3skbnN0cn0gLj0gJGFocmVmOwotICAgIH0KLSAgICByZXR1cm4gIiRhbmFtZSRhbmNob3JfaW52aXNpYmxlX21hcmsyPC9hPiI7Ci19Ci0KLQotJFRISVNfTU9EVUxFID0gJyc7Ci0kVEhJU19DTEFTUyA9ICcnOwotCi1zdWIgZGVmaW5lX21vZHVsZXsKLSAgICBteSgkd29yZCwkbmFtZSkgPSBAXzsKLSAgICBteSAkc2VjdGlvbl90YWcgPSBqb2luKCcnLCBAY3Vycl9zZWNfaWQpOwotICAgIGlmICgkd29yZCBuZSAiYnVpbHQtaW4iICYmICR3b3JkIG5lICJleHRlbnNpb24iCi0JJiYgJHdvcmQgbmUgInN0YW5kYXJkIiAmJiAkd29yZCBuZSAiIikgewotCXdyaXRlX3dhcm5pbmdzKCJCYWQgbW9kdWxlIHR5cGUgJyR3b3JkJyIKLQkJICAgICAgIC4gIiBmb3IgXFxkZWNsYXJlbW9kdWxlIChtb2R1bGUgJG5hbWUpIik7Ci0JJHdvcmQgPSAiIjsKLSAgICB9Ci0gICAgJHdvcmQgPSAiJHdvcmQgIiBpZiAkd29yZDsKLSAgICAkVEhJU19NT0RVTEUgPSAiJG5hbWUiOwotICAgICRJTkRFWF9TVUJJVEVNID0gIihpbiBtb2R1bGUgJG5hbWUpIjsKLSAgICBwcmludCAiWyRuYW1lXSI7Ci0gICAgcmV0dXJuIG1ha2VfbW9kX2luZGV4X2VudHJ5KAotICAgICAgICAiPHR0IGNsYXNzPSdtb2R1bGUnPiRuYW1lPC90dD4gKCR7d29yZH1tb2R1bGUpIiwgJ0RFRicpOwotfQotCi1zdWIgbXlfbW9kdWxlX2luZGV4X2hlbHBlcnsKLSAgICBsb2NhbCgkd29yZCwgJF8pID0gQF87Ci0gICAgbXkgJG5hbWUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgcmV0dXJuIGRlZmluZV9tb2R1bGUoJHdvcmQsICRuYW1lKSAuICRfOwotfQotCi1zdWIgZG9fY21kX21vZGluZGV4eyByZXR1cm4gbXlfbW9kdWxlX2luZGV4X2hlbHBlcignJywgQF8pOyB9Ci1zdWIgZG9fY21kX2JpbW9kaW5kZXh7IHJldHVybiBteV9tb2R1bGVfaW5kZXhfaGVscGVyKCdidWlsdC1pbicsIEBfKTsgfQotc3ViIGRvX2NtZF9leG1vZGluZGV4eyByZXR1cm4gbXlfbW9kdWxlX2luZGV4X2hlbHBlcignZXh0ZW5zaW9uJywgQF8pOyB9Ci1zdWIgZG9fY21kX3N0bW9kaW5kZXh7IHJldHVybiBteV9tb2R1bGVfaW5kZXhfaGVscGVyKCdzdGFuZGFyZCcsIEBfKTsgfQotCi1zdWIgcmVmX21vZHVsZV9pbmRleF9oZWxwZXJ7Ci0gICAgbXkoJHdvcmQsICRhaHJlZikgPSBAXzsKLSAgICBteSAkc3RyID0gbmV4dF9hcmd1bWVudCgpOwotICAgICR3b3JkID0gIiR3b3JkICIgaWYgJHdvcmQ7Ci0gICAgJHN0ciA9ICI8dHQgY2xhc3M9J21vZHVsZSc+JHN0cjwvdHQ+ICgke3dvcmR9bW9kdWxlKSI7Ci0gICAgIyBjYW4ndCB1c2UgYWRkX2luZGV4X2VudHJ5KCkgc2luY2UgdGhlIDJuZCBhcmcgdG8gZ2VuX2luZGV4X2lkKCkgaXMgdXNlZDsKLSAgICAjIGp1c3QgaW5saW5lIGl0IGFsbCBoZXJlCi0gICAgJHN0ciA9IGdlbl9pbmRleF9pZCgkc3RyLCAnUkVGJyk7Ci0gICAgJGluZGV4eyRzdHJ9IC49ICRhaHJlZjsKLSAgICB3cml0ZV9pZHhmaWxlKCRhaHJlZiwgJHN0cik7Ci19Ci0KLSMgdGhlc2Ugc2hvdWxkIGJlIGFkanVzdGVkIGEgYml0Li4uLgotZGVmaW5lX2luZGV4aW5nX21hY3JvKCdyZWZtb2RpbmRleCcsICdyZWZiaW1vZGluZGV4JywKLQkJICAgICAgJ3JlZmV4bW9kaW5kZXgnLCAncmVmc3Rtb2RpbmRleCcpOwotc3ViIGlkeF9jbWRfcmVmbW9kaW5kZXh7IHJldHVybiByZWZfbW9kdWxlX2luZGV4X2hlbHBlcignJywgQF8pOyB9Ci1zdWIgaWR4X2NtZF9yZWZiaW1vZGluZGV4eyByZXR1cm4gcmVmX21vZHVsZV9pbmRleF9oZWxwZXIoJ2J1aWx0LWluJywgQF8pOyB9Ci1zdWIgaWR4X2NtZF9yZWZleG1vZGluZGV4eyByZXR1cm4gcmVmX21vZHVsZV9pbmRleF9oZWxwZXIoJ2V4dGVuc2lvbicsIEBfKTsgfQotc3ViIGlkeF9jbWRfcmVmc3Rtb2RpbmRleHsgcmV0dXJuIHJlZl9tb2R1bGVfaW5kZXhfaGVscGVyKCdzdGFuZGFyZCcsIEBfKTsgfQotCi1zdWIgZG9fY21kX25vZGVuYW1leyByZXR1cm4gZG9fY21kX2xhYmVsKEBfKTsgfQotCi1zdWIgaW5pdF9teWZvcm1hdHsKLSAgICAkYW5jaG9yX2ludmlzaWJsZV9tYXJrID0gJyZuYnNwOyc7Ci0gICAgJGFuY2hvcl9pbnZpc2libGVfbWFyazIgPSAnJzsKLSAgICAkYW5jaG9yX21hcmsgPSAnJzsKLSAgICAkaWNvbnN7J2FuY2hvcl9tYXJrJ30gPSAnJzsKLX0KLWluaXRfbXlmb3JtYXQoKTsKLQotIyBDcmVhdGUgYW4gaW5kZXggZW50cnksIGJ1dCBpbmNsdWRlIHRoZSBzdHJpbmcgaW4gdGhlIHRhcmdldCBhbmNob3IKLSMgaW5zdGVhZCBvZiB0aGUgZHVtbXkgZmlsbGVyLgotIwotc3ViIG1ha2Vfc3RyX2luZGV4X2VudHJ5ewotICAgIG15KCRzdHIpID0gQF87Ci0gICAgbXkoJG5hbWUsJGFuYW1lLCRhaHJlZikgPSBuZXdfbGlua19pbmZvKCk7Ci0gICAgYWRkX2luZGV4X2VudHJ5KCRzdHIsICRhaHJlZik7Ci0gICAgcmV0dXJuICIkYW5hbWUkc3RyPC9hPiI7Ci19Ci0KLSRSRUZDT1VOVFNfTE9BREVEID0gMDsKLQotc3ViIGxvYWRfcmVmY291bnRzewotICAgICRSRUZDT1VOVFNfTE9BREVEID0gMTsKLQotICAgIG15ICRteW5hbWUsICRteWRpciwgJG15ZXh0OwotICAgICgkbXluYW1lLCAkbXlkaXIsICRteWV4dCkgPSBmaWxlcGFyc2UoX19GSUxFX18sICdcLi4qJyk7Ci0gICAgY2hvcCAkbXlkaXI7CQkJIyByZW1vdmUgdHJhaWxpbmcgJy8nCi0gICAgKCRteW5hbWUsICRteWRpciwgJG15ZXh0KSA9IGZpbGVwYXJzZSgkbXlkaXIsICdcLi4qJyk7Ci0gICAgY2hvcCAkbXlkaXI7CQkJIyByZW1vdmUgdHJhaWxpbmcgJy8nCi0gICAgJG15ZGlyID0gZ2V0Y3dkKCkgLiAiJGRkJG15ZGlyIgotICAgICAgdW5sZXNzICRteWRpciA9fiBzfF4vfC98OwotICAgIGxvY2FsICRfOwotICAgIG15ICRmaWxlbmFtZSA9ICIkbXlkaXIke2RkfWFwaSR7ZGR9cmVmY291bnRzLmRhdCI7Ci0gICAgb3BlbihSRUZDT1VOVF9GSUxFLCAiPCRmaWxlbmFtZSIpIHx8IGRpZSAiXG4kIVxuIjsKLSAgICBwcmludCAiW2xvYWRpbmcgQVBJIHJlZmNvdW50IGRhdGFdIjsKLSAgICB3aGlsZSAoPFJFRkNPVU5UX0ZJTEU+KSB7Ci0gICAgICAgIGlmICgvKFthLXpBLVowLTlfXSspOlB5T2JqZWN0XCo6KFthLXpBLVowLTlfXSopOigwfFstK10xfG51bGwpOiguKikkLykgewotICAgICAgICAgICAgbXkoJGZ1bmMsICRwYXJhbSwgJGNvdW50LCAkY29tbWVudCkgPSAoJDEsICQyLCAkMywgJDQpOwotICAgICAgICAgICAgI3ByaW50ICJcbiRmdW5jKCRwYXJhbSkgLS0+ICRjb3VudCI7Ci0gICAgICAgICAgICAkUkVGQ09VTlRTeyIkZnVuYzokcGFyYW0ifSA9ICRjb3VudDsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3ViIGdldF9yZWZjb3VudHsKLSAgICBteSAoJGZ1bmMsICRwYXJhbSkgPSBAXzsKLSAgICBsb2FkX3JlZmNvdW50cygpCi0gICAgICAgIHVubGVzcyAkUkVGQ09VTlRTX0xPQURFRDsKLSAgICByZXR1cm4gJFJFRkNPVU5UU3siJGZ1bmM6JHBhcmFtIn07Ci19Ci0KLXN1YiBkb19lbnZfY2Z1bmNkZXNjewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRyZXR1cm5fdHlwZSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkZnVuY3Rpb25fbmFtZSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkYXJnX2xpc3QgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGlkeCA9IG1ha2Vfc3RyX2luZGV4X2VudHJ5KAotICAgICAgICAiPHR0IGNsYXNzPSdjZnVuY3Rpb24nPiRmdW5jdGlvbl9uYW1lKCk8L3R0PiIgLiBnZXRfaW5kZXhzdWJpdGVtKCkpOwotICAgICRpZHggPX4gcy8gXCguKlwpLy87Ci0gICAgJGlkeCA9fiBzL1woXCkvLzsJCSMgPz8/PyAtIHdoeSBib3RoIG9mIHRoZXNlPwotICAgIG15ICRyZXN1bHRfcmMgPSBnZXRfcmVmY291bnQoJGZ1bmN0aW9uX25hbWUsICcnKTsKLSAgICBteSAkcmNpbmZvID0gJyc7Ci0gICAgaWYgKCRyZXN1bHRfcmMgZXEgJysxJykgewotICAgICAgICAkcmNpbmZvID0gJ05ldyByZWZlcmVuY2UnOwotICAgIH0KLSAgICBlbHNpZiAoJHJlc3VsdF9yYyBlcSAnMCcpIHsKLSAgICAgICAgJHJjaW5mbyA9ICdCb3Jyb3dlZCByZWZlcmVuY2UnOwotICAgIH0KLSAgICBlbHNpZiAoJHJlc3VsdF9yYyBlcSAnbnVsbCcpIHsKLSAgICAgICAgJHJjaW5mbyA9ICdBbHdheXMgPHR0IGNsYXNzPSJjb25zdGFudCI+TlVMTDwvdHQ+JzsKLSAgICB9Ci0gICAgaWYgKCRyY2luZm8gbmUgJycpIHsKLSAgICAgICAgJHJjaW5mbyA9ICggICJcbjxkaXYgY2xhc3M9XCJyZWZjb3VudC1pbmZvXCI+IgotICAgICAgICAgICAgICAgICAgIC4gIlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+UmV0dXJuIHZhbHVlOjwvc3Bhbj4iCi0gICAgICAgICAgICAgICAgICAgLiAiXG4gIDxzcGFuIGNsYXNzPVwidmFsdWVcIj4kcmNpbmZvLjwvc3Bhbj4iCi0gICAgICAgICAgICAgICAgICAgLiAiXG48L2Rpdj4iKTsKLSAgICB9Ci0gICAgcmV0dXJuICI8ZGw+PGR0PiRyZXR1cm5fdHlwZSA8Yj4kaWR4PC9iPig8dmFyPiRhcmdfbGlzdDwvdmFyPilcbjxkZD4iCi0gICAgICAgICAgIC4gJHJjaW5mbwotICAgICAgICAgICAuICRfCi0gICAgICAgICAgIC4gJzwvZGw+JzsKLX0KLQotc3ViIGRvX2Vudl9jc2ltcGxlbWFjcm9kZXNjewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRuYW1lID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRpZHggPSBtYWtlX3N0cl9pbmRleF9lbnRyeSgiPHR0IGNsYXNzPSdtYWNybyc+JG5hbWU8L3R0PiIpOwotICAgIHJldHVybiAiPGRsPjxkdD48Yj4kaWR4PC9iPlxuPGRkPiIKLSAgICAgICAgICAgLiAkXwotICAgICAgICAgICAuICc8L2RsPicKLX0KLQotc3ViIGRvX2Vudl9jdHlwZWRlc2N7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGluZGV4X25hbWUgPSBuZXh0X29wdGlvbmFsX2FyZ3VtZW50KCk7Ci0gICAgbXkgJHR5cGVfbmFtZSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICAkaW5kZXhfbmFtZSA9ICR0eXBlX25hbWUKLSAgICAgIHVubGVzcyAkaW5kZXhfbmFtZTsKLSAgICBteSgkbmFtZSwkYW5hbWUsJGFocmVmKSA9IG5ld19saW5rX2luZm8oKTsKLSAgICBhZGRfaW5kZXhfZW50cnkoIjx0dCBjbGFzcz0nY3R5cGUnPiRpbmRleF9uYW1lPC90dD4gKEMgdHlwZSkiLCAkYWhyZWYpOwotICAgIHJldHVybiAiPGRsPjxkdD48Yj48dHQgY2xhc3M9J2N0eXBlJz4kYW5hbWUkdHlwZV9uYW1lPC9hPjwvdHQ+PC9iPlxuPGRkPiIKLSAgICAgICAgICAgLiAkXwotICAgICAgICAgICAuICc8L2RsPicKLX0KLQotc3ViIGRvX2Vudl9jdmFyZGVzY3sKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkdmFyX3R5cGUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHZhcl9uYW1lID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRpZHggPSBtYWtlX3N0cl9pbmRleF9lbnRyeSgiPHR0IGNsYXNzPSdjZGF0YSc+JHZhcl9uYW1lPC90dD4iCi0JCQkJICAgLiBnZXRfaW5kZXhzdWJpdGVtKCkpOwotICAgICRpZHggPX4gcy8gXCguKlwpLy87Ci0gICAgcmV0dXJuICI8ZGw+PGR0PiR2YXJfdHlwZSA8Yj4kaWR4PC9iPlxuIgotICAgICAgICAgICAuICc8ZGQ+JwotICAgICAgICAgICAuICRfCi0gICAgICAgICAgIC4gJzwvZGw+JzsKLX0KLQotc3ViIGNvbnZlcnRfYXJncygkKXsKLSAgICBsb2NhbCgkSU5fREVTQ19IQU5ETEVSKSA9IDE7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgcmV0dXJuIHRyYW5zbGF0ZV9jb21tYW5kcygkXyk7Ci19Ci0KLXN1YiBkb19lbnZfZnVuY2Rlc2N7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGZ1bmN0aW9uX25hbWUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGFyZ19saXN0ID0gY29udmVydF9hcmdzKG5leHRfYXJndW1lbnQoKSk7Ci0gICAgbXkgJGlkeCA9IG1ha2Vfc3RyX2luZGV4X2VudHJ5KCI8dHQgY2xhc3M9J2Z1bmN0aW9uJz4kZnVuY3Rpb25fbmFtZSgpPC90dD4iCi0JCQkJICAgLiBnZXRfaW5kZXhzdWJpdGVtKCkpOwotICAgICRpZHggPX4gcy8gXCguKlwpLy87Ci0gICAgJGlkeCA9fiBzL1woXCk8XC90dD4vPFwvdHQ+LzsKLSAgICByZXR1cm4gIjxkbD48ZHQ+PGI+JGlkeDwvYj4oPHZhcj4kYXJnX2xpc3Q8L3Zhcj4pXG48ZGQ+IiAuICRfIC4gJzwvZGw+JzsKLX0KLQotc3ViIGRvX2Vudl9mdW5jZGVzY25pewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRmdW5jdGlvbl9uYW1lID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRhcmdfbGlzdCA9IGNvbnZlcnRfYXJncyhuZXh0X2FyZ3VtZW50KCkpOwotICAgIHJldHVybiAiPGRsPjxkdD48Yj48dHQgY2xhc3M9J2Z1bmN0aW9uJz4kZnVuY3Rpb25fbmFtZTwvdHQ+PC9iPiIKLSAgICAgIC4gIig8dmFyPiRhcmdfbGlzdDwvdmFyPilcbiIKLSAgICAgIC4gJzxkZD4nCi0gICAgICAuICRfCi0gICAgICAuICc8L2RsPic7Ci19Ci0KLXN1YiBkb19jbWRfZnVuY2xpbmV7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGZ1bmN0aW9uX25hbWUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGFyZ19saXN0ID0gY29udmVydF9hcmdzKG5leHRfYXJndW1lbnQoKSk7Ci0gICAgbXkgJHByZWZpeCA9ICI8dHQgY2xhc3M9J2Z1bmN0aW9uJz4kZnVuY3Rpb25fbmFtZSgpPC90dD4iOwotICAgIG15ICRpZHggPSBtYWtlX3N0cl9pbmRleF9lbnRyeSgkcHJlZml4IC4gZ2V0X2luZGV4c3ViaXRlbSgpKTsKLSAgICAkcHJlZml4ID1+IHMvXChcKS8vOwotCi0gICAgcmV0dXJuICI8ZHQ+PGI+JHByZWZpeDwvYj4oPHZhcj4kYXJnX2xpc3Q8L3Zhcj4pXG48ZGQ+IiAuICRfOwotfQotCi1zdWIgZG9fY21kX2Z1bmNsaW5lbml7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGZ1bmN0aW9uX25hbWUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGFyZ19saXN0ID0gY29udmVydF9hcmdzKG5leHRfYXJndW1lbnQoKSk7Ci0gICAgbXkgJHByZWZpeCA9ICI8dHQgY2xhc3M9J2Z1bmN0aW9uJz4kZnVuY3Rpb25fbmFtZTwvdHQ+IjsKLQotICAgIHJldHVybiAiPGR0PjxiPiRwcmVmaXg8L2I+KDx2YXI+JGFyZ19saXN0PC92YXI+KVxuPGRkPiIgLiAkXzsKLX0KLQotIyBDaGFuZ2UgdGhpcyBmbGFnIHRvIGluZGV4IHRoZSBvcGNvZGUgZW50cmllcy4gIEkgZG9uJ3QgdGhpbmsgaXQncyB2ZXJ5Ci0jIHVzZWZ1bCB0byBpbmRleCB0aGVtLCBzaW5jZSB0aGV5J3JlIG9ubHkgcHJlc2VudGVkIHRvIGRlc2NyaWJlIHRoZSBkaXMKLSMgbW9kdWxlLgotIwotJElOREVYX09QQ09ERVMgPSAwOwotCi1zdWIgZG9fZW52X29wY29kZWRlc2N7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJG9wY29kZV9uYW1lID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRhcmdfbGlzdCA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkaWR4OwotICAgIGlmICgkSU5ERVhfT1BDT0RFUykgewotCSRpZHggPSBtYWtlX3N0cl9pbmRleF9lbnRyeSgiPHR0IGNsYXNzPSdvcGNvZGUnPiRvcGNvZGVfbmFtZTwvdHQ+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiIChieXRlIGNvZGUgaW5zdHJ1Y3Rpb24pIik7Ci0JJGlkeCA9fiBzLyBcKGJ5dGUgY29kZSBpbnN0cnVjdGlvblwpLy87Ci0gICAgfQotICAgIGVsc2UgewotCSRpZHggPSAiPHR0IGNsYXNzPSdvcGNvZGUnPiRvcGNvZGVfbmFtZTwvdHQ+IjsKLSAgICB9Ci0gICAgbXkgJHN0dWZmID0gIjxkbD48ZHQ+PGI+JGlkeDwvYj4iOwotICAgIGlmICgkYXJnX2xpc3QpIHsKLQkkc3R1ZmYgLj0gIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzx2YXI+JGFyZ19saXN0PC92YXI+IjsKLSAgICB9Ci0gICAgcmV0dXJuICRzdHVmZiAuICJcbjxkZD4iIC4gJF8gLiAnPC9kbD4nOwotfQotCi1zdWIgZG9fZW52X2RhdGFkZXNjewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRkYXRhbmFtZSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkaWR4ID0gbWFrZV9zdHJfaW5kZXhfZW50cnkoIjx0dD4kZGF0YW5hbWU8L3R0PiIgLiBnZXRfaW5kZXhzdWJpdGVtKCkpOwotICAgICRpZHggPX4gcy8gXCguKlwpLy87Ci0gICAgcmV0dXJuICI8ZGw+PGR0PjxiPiRpZHg8L2I+XG48ZGQ+IgotICAgICAgICAgICAuICRfCi0JICAgLiAnPC9kbD4nOwotfQotCi1zdWIgZG9fZW52X2RhdGFkZXNjbml7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGlkeCA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBpZiAoISAkU1RSSU5HX0lOREVYX1RUKSB7Ci0JJGlkeCA9ICI8dHQ+JGlkeDwvdHQ+IjsKLSAgICB9Ci0gICAgcmV0dXJuICI8ZGw+PGR0PjxiPiRpZHg8L2I+XG48ZGQ+IiAuICRfIC4gJzwvZGw+JzsKLX0KLQotc3ViIGRvX2NtZF9kYXRhbGluZXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkZGF0YV9uYW1lID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRpZHggPSBtYWtlX3N0cl9pbmRleF9lbnRyeSgiPHR0PiRkYXRhX25hbWU8L3R0PiIgLiBnZXRfaW5kZXhzdWJpdGVtKCkpOwotICAgICRpZHggPX4gcy8gXCguKlwpLy87Ci0gICAgcmV0dXJuICI8ZHQ+PGI+JGlkeDwvYj48ZGQ+IiAuICRfOwotfQotCi1zdWIgZG9fY21kX2RhdGFsaW5lbml7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGRhdGFfbmFtZSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICByZXR1cm4gIjxkdD48Yj48dHQ+JGRhdGFfbmFtZTwvdHQ+PC9iPjxkZD4iIC4gJF87Ci19Ci0KLXN1YiBkb19lbnZfZXhjZGVzY3sKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkZXhjbmFtZSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkaWR4ID0gbWFrZV9zdHJfaW5kZXhfZW50cnkoIjx0dCBjbGFzcz0nZXhjZXB0aW9uJz4kZXhjbmFtZTwvdHQ+Iik7Ci0gICAgcmV0dXJuICI8ZGw+PGR0PjxiPmV4Y2VwdGlvbiAkaWR4PC9iPlxuPGRkPiIgLiAkXyAuICc8L2RsPicKLX0KLQotc3ViIGRvX2Vudl9mdWxsbGluZWl0ZW1zeyByZXR1cm4gZG9fZW52X2l0ZW1pemUoQF8pOyB9Ci0KLQotc3ViIGhhbmRsZV9jbGFzc2xpa2VfZGVzY3JpcHRvcnsKLSAgICBsb2NhbCgkXywgJHdoYXQpID0gQF87Ci0gICAgJFRISVNfQ0xBU1MgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGFyZ19saXN0ID0gY29udmVydF9hcmdzKG5leHRfYXJndW1lbnQoKSk7Ci0gICAgJGlkeCA9IG1ha2Vfc3RyX2luZGV4X2VudHJ5KAotCQkiPHR0IGNsYXNzPSckd2hhdCc+JFRISVNfQ0xBU1M8L3R0PiAoJHdoYXQgaW4gJFRISVNfTU9EVUxFKSIgKTsKLSAgICAkaWR4ID1+IHMvIFwoLipcKS8vOwotICAgIHJldHVybiAoIjxkbD48ZHQ+PGI+JHdoYXQgJGlkeDwvYj4oPHZhcj4kYXJnX2xpc3Q8L3Zhcj4pXG48ZGQ+IgotICAgICAgICAgICAgLiAkXwotICAgICAgICAgICAgLiAnPC9kbD4nKTsKLX0KLQotc3ViIGRvX2Vudl9jbGFzc2Rlc2N7Ci0gICAgcmV0dXJuIGhhbmRsZV9jbGFzc2xpa2VfZGVzY3JpcHRvcihAX1swXSwgImNsYXNzIik7Ci19Ci0KLXN1YiBkb19lbnZfZXhjY2xhc3NkZXNjewotICAgIHJldHVybiBoYW5kbGVfY2xhc3NsaWtlX2Rlc2NyaXB0b3IoQF9bMF0sICJleGNlcHRpb24iKTsKLX0KLQotCi1zdWIgZG9fZW52X21ldGhvZGRlc2N7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGNsYXNzX25hbWUgPSBuZXh0X29wdGlvbmFsX2FyZ3VtZW50KCk7Ci0gICAgJGNsYXNzX25hbWUgPSAkVEhJU19DTEFTUwotICAgICAgICB1bmxlc3MgJGNsYXNzX25hbWU7Ci0gICAgbXkgJG1ldGhvZCA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkYXJnX2xpc3QgPSBjb252ZXJ0X2FyZ3MobmV4dF9hcmd1bWVudCgpKTsKLSAgICBteSAkZXh0cmEgPSAnJzsKLSAgICBpZiAoJGNsYXNzX25hbWUpIHsKLQkkZXh0cmEgPSAiICgkY2xhc3NfbmFtZSBtZXRob2QpIjsKLSAgICB9Ci0gICAgbXkgJGlkeCA9IG1ha2Vfc3RyX2luZGV4X2VudHJ5KCI8dHQgY2xhc3M9J21ldGhvZCc+JG1ldGhvZCgpPC90dD4kZXh0cmEiKTsKLSAgICAkaWR4ID1+IHMvIFwoLipcKS8vOwotICAgICRpZHggPX4gcy9cKFwpLy87Ci0gICAgcmV0dXJuICI8ZGw+PGR0PjxiPiRpZHg8L2I+KDx2YXI+JGFyZ19saXN0PC92YXI+KVxuPGRkPiIgLiAkXyAuICc8L2RsPic7Ci19Ci0KLQotc3ViIGRvX2NtZF9tZXRob2RsaW5lewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRjbGFzc19uYW1lID0gbmV4dF9vcHRpb25hbF9hcmd1bWVudCgpOwotICAgICRjbGFzc19uYW1lID0gJFRISVNfQ0xBU1MKLSAgICAgICAgdW5sZXNzICRjbGFzc19uYW1lOwotICAgIG15ICRtZXRob2QgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGFyZ19saXN0ID0gY29udmVydF9hcmdzKG5leHRfYXJndW1lbnQoKSk7Ci0gICAgbXkgJGV4dHJhID0gJyc7Ci0gICAgaWYgKCRjbGFzc19uYW1lKSB7Ci0JJGV4dHJhID0gIiAoJGNsYXNzX25hbWUgbWV0aG9kKSI7Ci0gICAgfQotICAgIG15ICRpZHggPSBtYWtlX3N0cl9pbmRleF9lbnRyeSgiPHR0IGNsYXNzPSdtZXRob2QnPiRtZXRob2QoKTwvdHQ+JGV4dHJhIik7Ci0gICAgJGlkeCA9fiBzLyBcKC4qXCkvLzsKLSAgICAkaWR4ID1+IHMvXChcKS8vOwotICAgIHJldHVybiAiPGR0PjxiPiRpZHg8L2I+KDx2YXI+JGFyZ19saXN0PC92YXI+KVxuPGRkPiIKLSAgICAgICAgICAgLiAkXzsKLX0KLQotCi1zdWIgZG9fY21kX21ldGhvZGxpbmVuaXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBuZXh0X29wdGlvbmFsX2FyZ3VtZW50KCk7Ci0gICAgbXkgJG1ldGhvZCA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkYXJnX2xpc3QgPSBjb252ZXJ0X2FyZ3MobmV4dF9hcmd1bWVudCgpKTsKLSAgICByZXR1cm4gIjxkdD48Yj4kbWV0aG9kPC9iPig8dmFyPiRhcmdfbGlzdDwvdmFyPilcbjxkZD4iCi0gICAgICAgICAgIC4gJF87Ci19Ci0KLXN1YiBkb19lbnZfbWV0aG9kZGVzY25pewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG5leHRfb3B0aW9uYWxfYXJndW1lbnQoKTsKLSAgICBteSAkbWV0aG9kID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRhcmdfbGlzdCA9IGNvbnZlcnRfYXJncyhuZXh0X2FyZ3VtZW50KCkpOwotICAgIHJldHVybiAiPGRsPjxkdD48Yj4kbWV0aG9kPC9iPig8dmFyPiRhcmdfbGlzdDwvdmFyPilcbjxkZD4iCi0gICAgICAgICAgIC4gJF8KLQkgICAuICc8L2RsPic7Ci19Ci0KLQotc3ViIGRvX2Vudl9tZW1iZXJkZXNjewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRjbGFzcyA9IG5leHRfb3B0aW9uYWxfYXJndW1lbnQoKTsKLSAgICBteSAkbWVtYmVyID0gbmV4dF9hcmd1bWVudCgpOwotICAgICRjbGFzcyA9ICRUSElTX0NMQVNTCi0gICAgICAgIHVubGVzcyAkY2xhc3M7Ci0gICAgbXkgJGV4dHJhID0gJyc7Ci0gICAgJGV4dHJhID0gIiAoJGNsYXNzIGF0dHJpYnV0ZSkiCi0gICAgICAgIGlmICgkY2xhc3MgbmUgJycpOwotICAgIG15ICRpZHggPSBtYWtlX3N0cl9pbmRleF9lbnRyeSgiPHR0IGNsYXNzPSdtZW1iZXInPiRtZW1iZXI8L3R0PiRleHRyYSIpOwotICAgICRpZHggPX4gcy8gXCguKlwpLy87Ci0gICAgJGlkeCA9fiBzL1woXCkvLzsKLSAgICByZXR1cm4gIjxkbD48ZHQ+PGI+JGlkeDwvYj5cbjxkZD4iIC4gJF8gLiAnPC9kbD4nOwotfQotCi0KLXN1YiBkb19jbWRfbWVtYmVybGluZXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkY2xhc3MgPSBuZXh0X29wdGlvbmFsX2FyZ3VtZW50KCk7Ci0gICAgbXkgJG1lbWJlciA9IG5leHRfYXJndW1lbnQoKTsKLSAgICAkY2xhc3MgPSAkVEhJU19DTEFTUwotICAgICAgICB1bmxlc3MgJGNsYXNzOwotICAgIG15ICRleHRyYSA9ICcnOwotICAgICRleHRyYSA9ICIgKCRjbGFzcyBhdHRyaWJ1dGUpIgotICAgICAgICBpZiAoJGNsYXNzIG5lICcnKTsKLSAgICBteSAkaWR4ID0gbWFrZV9zdHJfaW5kZXhfZW50cnkoIjx0dCBjbGFzcz0nbWVtYmVyJz4kbWVtYmVyPC90dD4kZXh0cmEiKTsKLSAgICAkaWR4ID1+IHMvIFwoLipcKS8vOwotICAgICRpZHggPX4gcy9cKFwpLy87Ci0gICAgcmV0dXJuICI8ZHQ+PGI+JGlkeDwvYj48ZGQ+IiAuICRfOwotfQotCi1zdWIgZG9fZW52X21lbWJlcmRlc2NuaXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBuZXh0X29wdGlvbmFsX2FyZ3VtZW50KCk7Ci0gICAgbXkgJG1lbWJlciA9IG5leHRfYXJndW1lbnQoKTsKLSAgICByZXR1cm4gIjxkbD48ZHQ+PGI+PHR0IGNsYXNzPSdtZW1iZXInPiRtZW1iZXI8L3R0PjwvYj5cbjxkZD4iCi0gICAgICAgICAgIC4gJF8KLSAgICAgICAgICAgLiAnPC9kbD4nOwotfQotCi0KLXN1YiBkb19jbWRfbWVtYmVybGluZW5pewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG5leHRfb3B0aW9uYWxfYXJndW1lbnQoKTsKLSAgICBteSAkbWVtYmVyID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAiPGR0PjxiPjx0dCBjbGFzcz0nbWVtYmVyJz4kbWVtYmVyPC90dD48L2I+PGRkPiIgLiAkXzsKLX0KLQotQGNvbF9hbGlnbnMgPSAoJzx0ZD4nLCAnPHRkPicsICc8dGQ+JywgJzx0ZD4nKTsKLQotc3ViIGZpeF9mb250ewotICAgICMgZG8gYSBsaXR0bGUgbWFnaWMgb24gYSBmb250IG5hbWUgdG8gZ2V0IHRoZSByaWdodCBiZWhhdmlvciBpbiB0aGUgZmlyc3QKLSAgICAjIGNvbHVtbiBvZiB0aGUgb3V0cHV0IHRhYmxlCi0gICAgbXkgJGZvbnQgPSBAX1swXTsKLSAgICBpZiAoJGZvbnQgZXEgJ3RleHRybScpIHsKLQkkZm9udCA9ICcnOwotICAgIH0KLSAgICBlbHNpZiAoJGZvbnQgZXEgJ2ZpbGUnIHx8ICRmb250IGVxICdmaWxlbnEnKSB7Ci0JJGZvbnQgPSAndHQgY2xhc3M9ImZpbGUiJzsKLSAgICB9Ci0gICAgZWxzaWYgKCRmb250IGVxICdtZW1iZXInKSB7Ci0gICAgICAgICRmb250ID0gJ3R0IGNsYXNzPSJtZW1iZXIiJzsKLSAgICB9Ci0gICAgZWxzaWYgKCRmb250IGVxICdjbGFzcycpIHsKLSAgICAgICAgJGZvbnQgPSAndHQgY2xhc3M9ImNsYXNzIic7Ci0gICAgfQotICAgIGVsc2lmICgkZm9udCBlcSAnY29uc3RhbnQnKSB7Ci0gICAgICAgICRmb250ID0gJ3R0IGNsYXNzPSJjb25zdGFudCInOwotICAgIH0KLSAgICBlbHNpZiAoJGZvbnQgZXEgJ2tiZCcpIHsKLSAgICAgICAgJGZvbnQgPSAna2JkJzsKLSAgICB9Ci0gICAgZWxzaWYgKCRmb250IGVxICdwcm9ncmFtb3B0JykgewotICAgICAgICAkZm9udCA9ICdiJzsKLSAgICB9Ci0gICAgZWxzaWYgKCRmb250IGVxICdleGNlcHRpb24nKSB7Ci0gICAgICAgICRmb250ID0gJ3R0IGNsYXNzPSJleGNlcHRpb24iJzsKLSAgICB9Ci0gICAgcmV0dXJuICRmb250OwotfQotCi1zdWIgZmlndXJlX2NvbHVtbl9hbGlnbm1lbnR7Ci0gICAgbXkgJGEgPSBAX1swXTsKLSAgICBteSAkbWFyayA9IHN1YnN0cigkYSwgMCwgMSk7Ci0gICAgbXkgJHIgPSAnJzsKLSAgICBpZiAoJG1hcmsgZXEgJ2MnKQotICAgICAgeyAkciA9ICcgYWxpZ249ImNlbnRlciInOyB9Ci0gICAgZWxzaWYgKCRtYXJrIGVxICdyJykKLSAgICAgIHsgJHIgPSAnIGFsaWduPSJyaWdodCInOyB9Ci0gICAgZWxzaWYgKCRtYXJrIGVxICdsJykKLSAgICAgIHsgJHIgPSAnIGFsaWduPSJsZWZ0Iic7IH0KLSAgICBlbHNpZiAoJG1hcmsgZXEgJ3AnKQotICAgICAgeyAkciA9ICcgYWxpZ249ImxlZnQiJzsgfQotICAgIHJldHVybiAkcjsKLX0KLQotc3ViIHNldHVwX2NvbHVtbl9hbGlnbm1lbnRzewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15KCRzMSwkczIsJHMzLCRzNCkgPSBzcGxpdCgvW3xdLywkXyk7Ci0gICAgbXkgJGExID0gZmlndXJlX2NvbHVtbl9hbGlnbm1lbnQoJHMxKTsKLSAgICBteSAkYTIgPSBmaWd1cmVfY29sdW1uX2FsaWdubWVudCgkczIpOwotICAgIG15ICRhMyA9IGZpZ3VyZV9jb2x1bW5fYWxpZ25tZW50KCRzMyk7Ci0gICAgbXkgJGE0ID0gZmlndXJlX2NvbHVtbl9hbGlnbm1lbnQoJHM0KTsKLSAgICAkY29sX2FsaWduc1swXSA9ICI8dGQkYTEgdmFsaWduPVwiYmFzZWxpbmVcIj4iOwotICAgICRjb2xfYWxpZ25zWzFdID0gIjx0ZCRhMj4iOwotICAgICRjb2xfYWxpZ25zWzJdID0gIjx0ZCRhMz4iOwotICAgICRjb2xfYWxpZ25zWzNdID0gIjx0ZCRhND4iOwotICAgICMgcmV0dXJuIHRoZSBhbGlnbmVkIGhlYWRlciBzdGFydCB0YWdzCi0gICAgcmV0dXJuICgiPHRoJGExPiIsICI8dGgkYTI+IiwgIjx0aCRhMz4iLCAiPHRoJGE0PiIpOwotfQotCi1zdWIgZ2V0X3RhYmxlX2NvbDFfZm9udHN7Ci0gICAgbXkgJGZvbnQgPSAkZ2xvYmFsc3snbGluZWlmb250J307Ci0gICAgbXkgKCRzZm9udCwkZWZvbnQpID0gKCcnLCAnJyk7Ci0gICAgaWYgKCRmb250KSB7Ci0gICAgICAgICRzZm9udCA9ICI8JGZvbnQ+IjsKLSAgICAgICAgJGVmb250ID0gIjwvJGZvbnQ+IjsKLSAgICAgICAgJGVmb250ID1+IHMvIC4qPi8+LzsKLSAgICB9Ci0gICAgcmV0dXJuICgkc2ZvbnQsICRlZm9udCk7Ci19Ci0KLXN1YiBkb19lbnZfdGFibGVpaXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSgkdGgxLCR0aDIsJHRoMywkdGg0KSA9IHNldHVwX2NvbHVtbl9hbGlnbm1lbnRzKG5leHRfYXJndW1lbnQoKSk7Ci0gICAgbXkgJGZvbnQgPSBmaXhfZm9udChuZXh0X2FyZ3VtZW50KCkpOwotICAgIG15ICRoMSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkaDIgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgcy9bXHNcbl0rLy87Ci0gICAgJGdsb2JhbHN7J2xpbmVpZm9udCd9ID0gJGZvbnQ7Ci0gICAgbXkgJGExID0gJGNvbF9hbGlnbnNbMF07Ci0gICAgbXkgJGEyID0gJGNvbF9hbGlnbnNbMV07Ci0gICAgcy9cXGxpbmVpaTwvXFxsaW5laWlbJGExfCRhMl08L2c7Ci0gICAgcmV0dXJuICc8dGFibGUgYm9yZGVyIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4nCi0JICAgLiAiXG4gIDx0aGVhZD4iCi0JICAgLiAiXG4gICAgPHRyIGNsYXNzPVwidGFibGVoZWFkZXJcIj4iCi0JICAgLiAiXG4gICAgICAkdGgxPGI+JGgxPC9iPlwmbmJzcDs8L3RoPiIKLQkgICAuICJcbiAgICAgICR0aDI8Yj4kaDI8L2I+XCZuYnNwOzwvdGg+IgotCSAgIC4gIlxuICAgICAgPC90cj4iCi0JICAgLiAiXG4gICAgPC90aGVhZD4iCi0JICAgLiAiXG4gIDx0Ym9keSB2YWxpZ249J2Jhc2VsaW5lJz4iCi0JICAgLiAkXwotCSAgIC4gIlxuICAgIDwvdGJvZHk+IgotCSAgIC4gIlxuPC90YWJsZT4iOwotfQotCi1zdWIgZG9fZW52X2xvbmd0YWJsZWlpewotICAgIHJldHVybiBkb19lbnZfdGFibGVpaShAXyk7Ci19Ci0KLXN1YiBkb19jbWRfbGluZWlpewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRhbGlnbnMgPSBuZXh0X29wdGlvbmFsX2FyZ3VtZW50KCk7Ci0gICAgbXkgJGMxID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRjMiA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBzL1tcc1xuXSsvLzsKLSAgICBteSgkc2ZvbnQsJGVmb250KSA9IGdldF90YWJsZV9jb2wxX2ZvbnRzKCk7Ci0gICAgJGMyID0gJyZuYnNwOycgaWYgKCRjMiBlcSAnJyk7Ci0gICAgbXkoJGMxYWxpZ24sJGMyYWxpZ24pID0gc3BsaXQoJ1x8JywgJGFsaWducyk7Ci0gICAgbXkgJHBhZGRpbmcgPSAnJzsKLSAgICBpZiAoJGMxYWxpZ24gPX4gL2FsaWduPSJyaWdodCIvIHx8ICRjMSBlcSAnJykgewotICAgICAgICAkcGFkZGluZyA9ICcmbmJzcDsnOwotICAgIH0KLSAgICByZXR1cm4gIlxuICAgIDx0cj4kYzFhbGlnbiRzZm9udCRjMSRlZm9udCRwYWRkaW5nPC90ZD5cbiIKLSAgICAgICAgICAgLiAiICAgICAgICAkYzJhbGlnbiRjMjwvdGQ+IgotCSAgIC4gJF87Ci19Ci0KLXN1YiBkb19lbnZfdGFibGVpaWl7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkoJHRoMSwkdGgyLCR0aDMsJHRoNCkgPSBzZXR1cF9jb2x1bW5fYWxpZ25tZW50cyhuZXh0X2FyZ3VtZW50KCkpOwotICAgIG15ICRmb250ID0gZml4X2ZvbnQobmV4dF9hcmd1bWVudCgpKTsKLSAgICBteSAkaDEgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGgyID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRoMyA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBzL1tcc1xuXSsvLzsKLSAgICAkZ2xvYmFsc3snbGluZWlmb250J30gPSAkZm9udDsKLSAgICBteSAkYTEgPSAkY29sX2FsaWduc1swXTsKLSAgICBteSAkYTIgPSAkY29sX2FsaWduc1sxXTsKLSAgICBteSAkYTMgPSAkY29sX2FsaWduc1syXTsKLSAgICBzL1xcbGluZWlpaTwvXFxsaW5laWlpWyRhMXwkYTJ8JGEzXTwvZzsKLSAgICByZXR1cm4gJzx0YWJsZSBib3JkZXIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPicKLQkgICAuICJcbiAgPHRoZWFkPiIKLQkgICAuICJcbiAgICA8dHIgY2xhc3M9XCJ0YWJsZWhlYWRlclwiPiIKLQkgICAuICJcbiAgICAgICR0aDE8Yj4kaDE8L2I+XCZuYnNwOzwvdGg+IgotCSAgIC4gIlxuICAgICAgJHRoMjxiPiRoMjwvYj5cJm5ic3A7PC90aD4iCi0JICAgLiAiXG4gICAgICAkdGgzPGI+JGgzPC9iPlwmbmJzcDs8L3RoPiIKLQkgICAuICJcbiAgICAgIDwvdHI+IgotCSAgIC4gIlxuICAgIDwvdGhlYWQ+IgotCSAgIC4gIlxuICA8dGJvZHkgdmFsaWduPSdiYXNlbGluZSc+IgotCSAgIC4gJF8KLQkgICAuICJcbiAgICA8L3Rib2R5PiIKLQkgICAuICJcbjwvdGFibGU+IjsKLX0KLQotc3ViIGRvX2Vudl9sb25ndGFibGVpaWl7Ci0gICAgcmV0dXJuIGRvX2Vudl90YWJsZWlpaShAXyk7Ci19Ci0KLXN1YiBkb19jbWRfbGluZWlpaXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkYWxpZ25zID0gbmV4dF9vcHRpb25hbF9hcmd1bWVudCgpOwotICAgIG15ICRjMSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkYzIgPSBuZXh0X2FyZ3VtZW50KCk7IAotICAgIG15ICRjMyA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBzL1tcc1xuXSsvLzsKLSAgICBteSgkc2ZvbnQsJGVmb250KSA9IGdldF90YWJsZV9jb2wxX2ZvbnRzKCk7Ci0gICAgJGMzID0gJyZuYnNwOycgaWYgKCRjMyBlcSAnJyk7Ci0gICAgbXkoJGMxYWxpZ24sJGMyYWxpZ24sJGMzYWxpZ24pID0gc3BsaXQoJ1x8JywgJGFsaWducyk7Ci0gICAgbXkgJHBhZGRpbmcgPSAnJzsKLSAgICBpZiAoJGMxYWxpZ24gPX4gL2FsaWduPSJyaWdodCIvIHx8ICRjMSBlcSAnJykgewotICAgICAgICAkcGFkZGluZyA9ICcmbmJzcDsnOwotICAgIH0KLSAgICByZXR1cm4gIlxuICAgIDx0cj4kYzFhbGlnbiRzZm9udCRjMSRlZm9udCRwYWRkaW5nPC90ZD5cbiIKLSAgICAgICAgICAgLiAiICAgICAgICAkYzJhbGlnbiRjMjwvdGQ+XG4iCi0JICAgLiAiICAgICAgICAkYzNhbGlnbiRjMzwvdGQ+IgotCSAgIC4gJF87Ci19Ci0KLXN1YiBkb19lbnZfdGFibGVpdnsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSgkdGgxLCR0aDIsJHRoMywkdGg0KSA9IHNldHVwX2NvbHVtbl9hbGlnbm1lbnRzKG5leHRfYXJndW1lbnQoKSk7Ci0gICAgbXkgJGZvbnQgPSBmaXhfZm9udChuZXh0X2FyZ3VtZW50KCkpOwotICAgIG15ICRoMSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkaDIgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGgzID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRoNCA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBzL1tcc1xuXSsvLzsKLSAgICAkZ2xvYmFsc3snbGluZWlmb250J30gPSAkZm9udDsKLSAgICBteSAkYTEgPSAkY29sX2FsaWduc1swXTsKLSAgICBteSAkYTIgPSAkY29sX2FsaWduc1sxXTsKLSAgICBteSAkYTMgPSAkY29sX2FsaWduc1syXTsKLSAgICBteSAkYTQgPSAkY29sX2FsaWduc1szXTsKLSAgICBzL1xcbGluZWl2PC9cXGxpbmVpdlskYTF8JGEyfCRhM3wkYTRdPC9nOwotICAgIHJldHVybiAnPHRhYmxlIGJvcmRlciBhbGlnbj0iY2VudGVyIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI+JwotCSAgIC4gIlxuICA8dGhlYWQ+IgotCSAgIC4gIlxuICAgIDx0ciBjbGFzcz1cInRhYmxlaGVhZGVyXCI+IgotCSAgIC4gIlxuICAgICAgJHRoMTxiPiRoMTwvYj5cJm5ic3A7PC90aD4iCi0JICAgLiAiXG4gICAgICAkdGgyPGI+JGgyPC9iPlwmbmJzcDs8L3RoPiIKLQkgICAuICJcbiAgICAgICR0aDM8Yj4kaDM8L2I+XCZuYnNwOzwvdGg+IgotCSAgIC4gIlxuICAgICAgJHRoNDxiPiRoNDwvYj5cJm5ic3A7PC90aD4iCi0JICAgLiAiXG4gICAgICA8L3RyPiIKLQkgICAuICJcbiAgICA8L3RoZWFkPiIKLQkgICAuICJcbiAgPHRib2R5IHZhbGlnbj0nYmFzZWxpbmUnPiIKLQkgICAuICRfCi0JICAgLiAiXG4gICAgPC90Ym9keT4iCi0JICAgLiAiXG48L3RhYmxlPiI7Ci19Ci0KLXN1YiBkb19lbnZfbG9uZ3RhYmxlaXZ7Ci0gICAgcmV0dXJuIGRvX2Vudl90YWJsZWl2KEBfKTsKLX0KLQotc3ViIGRvX2NtZF9saW5laXZ7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJGFsaWducyA9IG5leHRfb3B0aW9uYWxfYXJndW1lbnQoKTsKLSAgICBteSAkYzEgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGMyID0gbmV4dF9hcmd1bWVudCgpOyAKLSAgICBteSAkYzMgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGM0ID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHMvW1xzXG5dKy8vOwotICAgIG15KCRzZm9udCwkZWZvbnQpID0gZ2V0X3RhYmxlX2NvbDFfZm9udHMoKTsKLSAgICAkYzQgPSAnJm5ic3A7JyBpZiAoJGM0IGVxICcnKTsKLSAgICBteSgkYzFhbGlnbiwkYzJhbGlnbiwkYzNhbGlnbiwkYzRhbGlnbikgPSBzcGxpdCgnXHwnLCAkYWxpZ25zKTsKLSAgICBteSAkcGFkZGluZyA9ICcnOwotICAgIGlmICgkYzFhbGlnbiA9fiAvYWxpZ249InJpZ2h0Ii8gfHwgJGMxIGVxICcnKSB7Ci0gICAgICAgICRwYWRkaW5nID0gJyZuYnNwOyc7Ci0gICAgfQotICAgIHJldHVybiAiXG4gICAgPHRyPiRjMWFsaWduJHNmb250JGMxJGVmb250JHBhZGRpbmc8L3RkPlxuIgotICAgICAgICAgICAuICIgICAgICAgICRjMmFsaWduJGMyPC90ZD5cbiIKLQkgICAuICIgICAgICAgICRjM2FsaWduJGMzPC90ZD5cbiIKLQkgICAuICIgICAgICAgICRjNGFsaWduJGM0PC90ZD4iCi0JICAgLiAkXzsKLX0KLQotCi0jIFRoZXNlIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIHRpdGxlIHBhZ2UgYXBwZWFyYW5jZTsKLSMgdGhleSBuZWVkIGEgbGl0dGxlIGJpdCBvZiBkb2N1bWVudGF0aW9uLgotIwotIyBJZiAkVElUTEVfUEFHRV9HUkFQSElDIGlzIHNldCwgaXQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIGEgZmlsZSBpbiB0aGUKLSMgJElDT05TRVJWRVIgZGlyZWN0b3J5LCBvciBpbmNsdWRlIHBhdGggaW5mb3JtYXRpb24gKG90aGVyIHRoYW4gIi4vIikuICBUaGUKLSMgZGVmYXVsdCBpbWFnZSB0eXBlIHdpbGwgYmUgYXNzdW1lZCBpZiBhbiBleHRlbnNpb24gaXMgbm90IHByb3ZpZGVkLgotIwotIyBJZiBzcGVjaWZpZWQsIHRoZSAidGl0bGUgcGFnZSIgd2lsbCBjb250YWluIHR3byBjb2x1bXM6IG9uZSBjb250YWluaW5nIHRoZQotIyB0aXRsZS9hdXRob3IvZXRjLiwgYW5kIHRoZSBvdGhlciBjb250YWluaW5nIHRoZSBncmFwaGljLiAgVXNlIHRoZSBvdGhlcgotIyBmb3VyIHZhcmlhYmxlcyBsaXN0ZWQgaGVyZSB0byBjb250cm9sIHNwZWNpZmljIGRldGFpbHMgb2YgdGhlIGxheW91dDsgYWxsCi0jIGFyZSBvcHRpb25hbC4KLSMKLSMgJFRJVExFX1BBR0VfR1JBUEhJQyA9ICJteS1jb21wYW55LWxvZ28iOwotIyAkVElUTEVfUEFHRV9HUkFQSElDX0NPTFdJRFRIID0gIjMwJSI7Ci0jICRUSVRMRV9QQUdFX0dSQVBISUNfV0lEVEggPSAxNTA7Ci0jICRUSVRMRV9QQUdFX0dSQVBISUNfSEVJR0hUID0gMTUwOwotIyAkVElUTEVfUEFHRV9HUkFQSElDX09OX1JJR0hUID0gMDsKLQotc3ViIG1ha2VfbXlfdGl0bGVwYWdlKCkgewotICAgIG15ICR0aGVfdGl0bGUgPSAiIjsKLSAgICBpZiAoJHRfdGl0bGUpIHsKLQkkdGhlX3RpdGxlIC49ICJcbjxoMT4kdF90aXRsZTwvaDE+IjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdyaXRlX3dhcm5pbmdzKCJcblRoaXMgZG9jdW1lbnQgaGFzIG5vIHRpdGxlLiIpOwotICAgIH0KLSAgICBpZiAoJHRfYXV0aG9yKSB7Ci0JaWYgKCR0X2F1dGhvclVSTCkgewotCSAgICBteSAkaHJlZiA9IHRyYW5zbGF0ZV9jb21tYW5kcygkdF9hdXRob3JVUkwpOwotCSAgICAkaHJlZiA9IG1ha2VfbmFtZWRfaHJlZignYXV0aG9yJywgJGhyZWYsCi0JCQkJICAgICI8Yj48Zm9udCBzaXplPScrMic+JHRfYXV0aG9yPC9mb250PjwvYj4iKTsKLQkgICAgJHRoZV90aXRsZSAuPSAiXG48cD4kaHJlZjwvcD4iOwotCX0KLSAgICAgICAgZWxzZSB7Ci0JICAgICR0aGVfdGl0bGUgLj0gKCJcbjxwPjxiPjxmb250IHNpemU9JysyJz4kdF9hdXRob3I8L2ZvbnQ+PC9iPjwvcD4iKTsKLQl9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICB3cml0ZV93YXJuaW5ncygiXG5UaGVyZSBpcyBubyBhdXRob3IgZm9yIHRoaXMgZG9jdW1lbnQuIik7Ci0gICAgfQotICAgIGlmICgkdF9pbnN0aXR1dGUpIHsKLSAgICAgICAgJHRoZV90aXRsZSAuPSAiXG48cD4kdF9pbnN0aXR1dGU8L3A+IjsKLSAgICB9Ci0gICAgaWYgKCRERVZFTE9QRVJfQUREUkVTUykgewotICAgICAgICAkdGhlX3RpdGxlIC49ICJcbjxwPiRERVZFTE9QRVJfQUREUkVTUzwvcD4iOwotICAgIH0KLSAgICBpZiAoJHRfYWZmaWwpIHsKLQkkdGhlX3RpdGxlIC49ICJcbjxwPjxpPiR0X2FmZmlsPC9pPjwvcD4iOwotICAgIH0KLSAgICBpZiAoJHRfZGF0ZSkgewotCSR0aGVfdGl0bGUgLj0gIlxuPHA+IjsKLQlpZiAoJFBBQ0tBR0VfVkVSU0lPTikgewotCSAgICAkdGhlX3RpdGxlIC49ICI8c3Ryb25nPlJlbGVhc2UgJFBBQ0tBR0VfVkVSU0lPTjwvc3Ryb25nPjxicj5cbiI7Ci0gICAgICAgIH0KLQkkdGhlX3RpdGxlIC49ICI8c3Ryb25nPiR0X2RhdGU8L3N0cm9uZz48L3A+IgotICAgIH0KLSAgICBpZiAoJHRfYWRkcmVzcykgewotCSR0aGVfdGl0bGUgLj0gIlxuPHA+JHRfYWRkcmVzczwvcD4iOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgJHRoZV90aXRsZSAuPSAiXG48cD4iOwotICAgIH0KLSAgICBpZiAoJHRfZW1haWwpIHsKLQkkdGhlX3RpdGxlIC49ICJcbjxwPiR0X2VtYWlsPC9wPiI7Ci0gICAgfQotICAgIHJldHVybiAkdGhlX3RpdGxlOwotfQotCi1zdWIgbWFrZV9teV90aXRsZWdyYXBoaWMoKSB7Ci0gICAgbXkgJGZpbGVuYW1lID0gbWFrZV9pY29uX2ZpbGVuYW1lKCRUSVRMRV9QQUdFX0dSQVBISUMpOwotICAgIG15ICRncmFwaGljID0gIjx0ZCBjbGFzcz1cInRpdGxlZ3JhcGhpY1wiIjsKLSAgICAkZ3JhcGhpYyAuPSAiIHdpZHRoPVwiJFRJVExFX1BBR0VfR1JBUEhJQ19DT0xXSURUSFwiIgotICAgICAgaWYgKCRUSVRMRV9QQUdFX0dSQVBISUNfQ09MV0lEVEgpOwotICAgICRncmFwaGljIC49ICI+PGltZyI7Ci0gICAgJGdyYXBoaWMgLj0gIiB3aWR0aD1cIiRUSVRMRV9QQUdFX0dSQVBISUNfV0lEVEhcIiIKLSAgICAgIGlmICgkVElUTEVfUEFHRV9HUkFQSElDX1dJRFRIKTsKLSAgICAkZ3JhcGhpYyAuPSAiIGhlaWdodD1cIiRUSVRMRV9QQUdFX0dSQVBISUNfSEVJR0hUXCIiCi0gICAgICBpZiAoJFRJVExFX1BBR0VfR1JBUEhJQ19IRUlHSFQpOwotICAgICRncmFwaGljIC49ICJcbiAgc3JjPVwiJGZpbGVuYW1lXCI+PC90ZD5cbiI7Ci0gICAgcmV0dXJuICRncmFwaGljOwotfQotCi1zdWIgZG9fY21kX21ha2V0aXRsZSB7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbXkgJHRoZV90aXRsZSA9ICJcbjxkaXYgY2xhc3M9XCJ0aXRsZXBhZ2VcIj4iOwotICAgIGlmICgkVElUTEVfUEFHRV9HUkFQSElDKSB7Ci0gICAgICAgIGlmICgkVElUTEVfUEFHRV9HUkFQSElDX09OX1JJR0hUKSB7Ci0gICAgICAgICAgICAkdGhlX3RpdGxlIC49ICgiXG48dGFibGUgYm9yZGVyPVwiMFwiIHdpZHRoPVwiMTAwJVwiPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIjx0ciBhbGlnbj1cInJpZ2h0XCI+XG48dGQ+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBtYWtlX215X3RpdGxlcGFnZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAuICI8L3RkPlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBtYWtlX215X3RpdGxlZ3JhcGhpYygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAuICI8L3RyPlxuPC90YWJsZT4iKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICR0aGVfdGl0bGUgLj0gKCJcbjx0YWJsZSBib3JkZXI9XCIwXCIgd2lkdGg9XCIxMDAlXCI+PHRyPlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBtYWtlX215X3RpdGxlZ3JhcGhpYygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAuICI8dGQ+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBtYWtlX215X3RpdGxlcGFnZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAuICI8L3RkPjwvdHI+XG48L3RhYmxlPiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAkdGhlX3RpdGxlIC49ICgiXG48Y2VudGVyPiIKLSAgICAgICAgICAgICAgICAgICAgICAgLiBtYWtlX215X3RpdGxlcGFnZSgpCi0gICAgICAgICAgICAgICAgICAgICAgIC4gIlxuPC9jZW50ZXI+Iik7Ci0gICAgfQotICAgICR0aGVfdGl0bGUgLj0gIlxuPC9kaXY+IjsKLSAgICByZXR1cm4gJHRoZV90aXRsZSAuICRfOwotICAgICR0aGVfdGl0bGUgLj0gIlxuPC9jZW50ZXI+PC9kaXY+IjsKLSAgICByZXR1cm4gJHRoZV90aXRsZSAuICRfIDsKLX0KLQotCi0jCi0jICBNb2R1bGUgc3lub3BzaXMgc3VwcG9ydAotIwotCi1yZXF1aXJlIFN5bm9wc2lzVGFibGU7Ci0KLXN1YiBnZXRfY2hhcHRlcl9pZCgpewotICAgIG15ICRpZCA9IGRvX2NtZF90aGVjaGFwdGVyKCcnKTsKLSAgICAkaWQgPX4gcy88U1BBTiBDTEFTUz0iYXJhYmljIj4oXGQrKTxcL1NQQU4+L1wxLzsKLSAgICAkaWQgPX4gcy9cLi8vOwotICAgIHJldHVybiAkaWQ7Ci19Ci0KLSMgJ2NoYXB0ZXInID0+ICdTeW5vcHNpc1RhYmxlIGluc3RhbmNlJwotJU1vZHVsZVN5bm9wc2VzID0gKCk7Ci0KLXN1YiBnZXRfc3lub3BzaXNfdGFibGUoJCl7Ci0gICAgbXkoJGNoYXApID0gQF87Ci0gICAgbXkgJGtleTsKLSAgICBmb3JlYWNoICRrZXkgKGtleXMgJU1vZHVsZVN5bm9wc2VzKSB7Ci0JaWYgKCRrZXkgZXEgJGNoYXApIHsKLQkgICAgcmV0dXJuICRNb2R1bGVTeW5vcHNlc3skY2hhcH07Ci0JfQotICAgIH0KLSAgICBteSAkc3QgPSBTeW5vcHNpc1RhYmxlLT5uZXcoKTsKLSAgICAkTW9kdWxlU3lub3BzZXN7JGNoYXB9ID0gJHN0OwotICAgIHJldHVybiAkc3Q7Ci19Ci0KLXN1YiBkb19jbWRfbW9kdWxlYXV0aG9yewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG5leHRfYXJndW1lbnQoKTsKLSAgICBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgcmV0dXJuICRfOwotfQotCi1zdWIgZG9fY21kX3NlY3Rpb25hdXRob3J7Ci0gICAgbG9jYWwoJF8pID0gQF87Ci0gICAgbmV4dF9hcmd1bWVudCgpOwotICAgIG5leHRfYXJndW1lbnQoKTsKLSAgICByZXR1cm4gJF87Ci19Ci0KLXN1YiBkb19jbWRfZGVjbGFyZW1vZHVsZXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAka2V5ID0gbmV4dF9vcHRpb25hbF9hcmd1bWVudCgpOwotICAgIG15ICR0eXBlID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRuYW1lID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICRzdCA9IGdldF9zeW5vcHNpc190YWJsZShnZXRfY2hhcHRlcl9pZCgpKTsKLSAgICAjCi0gICAgJGtleSA9ICRuYW1lIHVubGVzcyAka2V5OwotICAgICR0eXBlID0gJ2J1aWx0LWluJyBpZiAkdHlwZSBlcSAnYnVpbHRpbic7Ci0gICAgJHN0LT5kZWNsYXJlKCRuYW1lLCAka2V5LCAkdHlwZSk7Ci0gICAgZGVmaW5lX21vZHVsZSgkdHlwZSwgJG5hbWUpOwotICAgIHJldHVybiBhbmNob3JfbGFiZWwoIm1vZHVsZS0ka2V5IiwkQ1VSUkVOVF9GSUxFLCRfKQotfQotCi1zdWIgZG9fY21kX21vZHVsZXN5bm9wc2lzewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRzdCA9IGdldF9zeW5vcHNpc190YWJsZShnZXRfY2hhcHRlcl9pZCgpKTsKLSAgICAkc3QtPnNldF9zeW5vcHNpcygkVEhJU19NT0RVTEUsIHRyYW5zbGF0ZV9jb21tYW5kcyhuZXh0X2FyZ3VtZW50KCkpKTsKLSAgICByZXR1cm4gJF87Ci19Ci0KLXN1YiBkb19jbWRfbG9jYWxtb2R1bGV0YWJsZXsKLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAkY2hhcCA9IGdldF9jaGFwdGVyX2lkKCk7Ci0gICAgbXkgJHN0ID0gZ2V0X3N5bm9wc2lzX3RhYmxlKCRjaGFwKTsKLSAgICAkc3QtPnNldF9maWxlKCIkQ1VSUkVOVF9GSUxFIik7Ci0gICAgcmV0dXJuICI8dGV4Mmh0bWwtbG9jYWxtb2R1bGV0YWJsZT48JGNoYXA+XFx0YWJsZW9mY2hpbGRsaW5rc1tvZmZdIiAuICRfOwotfQotCi1zdWIgcHJvY2Vzc19hbGxfbG9jYWxtb2R1bGV0YWJsZXN7Ci0gICAgbXkgJGtleTsKLSAgICBteSAkc3QsICRmaWxlOwotICAgIGZvcmVhY2ggJGtleSAoa2V5cyAlTW9kdWxlU3lub3BzZXMpIHsKLSAgICAgICAgJHN0ID0gJE1vZHVsZVN5bm9wc2VzeyRrZXl9OwotICAgICAgICAkZmlsZSA9ICRzdC0+Z2V0X2ZpbGUoKTsKLSAgICAgICAgaWYgKCRmaWxlKSB7Ci0gICAgICAgICAgICBwcm9jZXNzX2xvY2FsbW9kdWxldGFibGVzX2luX2ZpbGUoJGZpbGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcHJpbnQgIlxuc3lub3BzaXMgdGFibGUgJGtleSBoYXMgbm8gZmlsZSBhc3NvY2lhdGlvbiI7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN1YiBwcm9jZXNzX2xvY2FsbW9kdWxldGFibGVzX2luX2ZpbGV7Ci0gICAgbXkgJGZpbGUgPSBAX1swXTsKLSAgICBvcGVuKE1ZRklMRSwgIjwkZmlsZSIpOwotICAgIGxvY2FsKCRfKTsKLSAgICBzeXNyZWFkKE1ZRklMRSwgJF8sIDEwMjQqMTAyNCk7Ci0gICAgY2xvc2UoTVlGSUxFKTsKLSAgICAjIG5lZWQgdG8gZ2V0IGNvbnRlbnRzIG9mIGZpbGUgaW4gJF8KLSAgICB3aGlsZSAoLzx0ZXgyaHRtbC1sb2NhbG1vZHVsZXRhYmxlPjwoXGQrKT4vKSB7Ci0JbXkgJG1hdGNoID0gJCY7Ci0JbXkgJGNoYXAgPSAkMTsKLQlteSAkc3QgPSBnZXRfc3lub3BzaXNfdGFibGUoJGNoYXApOwotCW15ICRkYXRhID0gJHN0LT50b2h0bWwoKTsKLQlzLyRtYXRjaC8kZGF0YS87Ci0gICAgfQotICAgIG9wZW4oTVlGSUxFLCI+JGZpbGUiKTsKLSAgICBwcmludCBNWUZJTEUgJF87Ci0gICAgY2xvc2UoTVlGSUxFKTsKLX0KLXN1YiBwcm9jZXNzX3B5dGhvbl9zdGF0ZXsKLSAgICBwcm9jZXNzX2FsbF9sb2NhbG1vZHVsZXRhYmxlcygpOwotfQotCi0KLSMKLSMgICJTZWUgYWxzbzoiIC0tIHJlZmVyZW5jZXMgcGxhY2VkIGF0IHRoZSBlbmQgb2YgYSBcc2VjdGlvbgotIwotCi1zdWIgZG9fZW52X3NlZWFsc297Ci0gICAgcmV0dXJuICI8ZGl2IGNsYXNzPSdzZWVhbHNvJz5cbiAgIgotICAgICAgLiAiPHAgY2xhc3M9J2hlYWRpbmcnPjxiPlNlZSBBbHNvOjwvYj48L3A+XG4iCi0gICAgICAuIEBfWzBdCi0gICAgICAuICc8L2Rpdj4nOwotfQotCi1zdWIgZG9fY21kX3NlZW1vZHVsZXsKLSAgICAjIEluc2VydCB0aGUgcmlnaHQgbWFnaWMgdG8ganVtcCB0byB0aGUgbW9kdWxlIGRlZmluaXRpb24uICBUaGlzIHNob3VsZAotICAgICMgd29yayBtb3N0IG9mIHRoZSB0aW1lLCBhdCBsZWFzdCBmb3IgcmVwZWF0IGJ1aWxkcy4uLi4KLSAgICBsb2NhbCgkXykgPSBAXzsKLSAgICBteSAka2V5ID0gbmV4dF9vcHRpb25hbF9hcmd1bWVudCgpOwotICAgIG15ICRtb2R1bGUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHRleHQgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHBlcmlvZCA9ICcuJzsKLSAgICAka2V5ID0gJG1vZHVsZQotICAgICAgICB1bmxlc3MgJGtleTsKLSAgICBpZiAoJHRleHQgPX4gL1wuJC8pIHsKLQkkcGVyaW9kID0gJyc7Ci0gICAgfQotICAgIHJldHVybiAnPGRsIGNvbXBhY3QgY2xhc3M9InNlZW1vZHVsZSI+JwotICAgICAgLiAiXG4gICAgPGR0Pk1vZHVsZSA8Yj48dHQgY2xhc3M9J21vZHVsZSc+PGEgaHJlZj0nbW9kdWxlLSRrZXkuaHRtbCc+IgotICAgICAgLiAiJG1vZHVsZTwvYT48L3R0Pjo8L2I+IgotICAgICAgLiAiXG4gICAgPGRkPiR0ZXh0JHBlcmlvZFxuICA8L2RsPiIKLSAgICAgIC4gJF87Ci19Ci0KLXN1YiBzdHJpcF9odG1sX21hcmt1cCgkKXsKLSAgICBteSAkc3RyID0gQF9bMF07Ci0gICAgbXkgJHMgPSAiJHN0ciI7Ci0gICAgJHMgPX4gcy88W2EtekEtWjAtOV0rKFxzK1thLXpBLVowLTldKyhccyo9XHMqKFwnW15cJ10qXCd8XCJbXlwiXSpcInxbYS16QS1aMC05XSspKT8pKlxzKj4vL2c7Ci0gICAgJHMgPX4gcy88XC9bYS16QS1aMC05XSs+Ly9nOwotICAgIHJldHVybiAkczsKLX0KLQotc3ViIGhhbmRsZV9yZmNsaWtlX3JlZmVyZW5jZXsKLSAgICBsb2NhbCgkXywgJHdoYXQsICRmb3JtYXQpID0gQF87Ci0gICAgbXkgJHJmY251bSA9IG5leHRfYXJndW1lbnQoKTsKLSAgICBteSAkdGl0bGUgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHRleHQgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHVybCA9IGdldF9yZmNfdXJsKCRyZmNudW0sICRmb3JtYXQpOwotICAgIG15ICRpY29uID0gZ2V0X2xpbmtfaWNvbigkdXJsKTsKLSAgICBteSAkYXR0cnRpdGxlID0gc3RyaXBfaHRtbF9tYXJrdXAoJHRpdGxlKTsKLSAgICByZXR1cm4gJzxkbCBjb21wYWN0IGNsYXNzPSJzZWVyZmMiPicKLSAgICAgIC4gIlxuICAgIDxkdD48YSBocmVmPVwiJHVybFwiIgotICAgICAgLiAiXG4gICAgICAgIHRpdGxlPVwiJGF0dHJ0aXRsZVwiIgotICAgICAgLiAiXG4gICAgICAgID4kd2hhdCAkcmZjbnVtLCA8ZW0+JHRpdGxlPC9lbT4kaWNvbjwvYT4iCi0gICAgICAuICJcbiAgICA8ZGQ+JHRleHRcbiAgPC9kbD4iCi0gICAgICAuICRfOwotfQotCi1zdWIgZG9fY21kX3NlZXBlcHsKLSAgICByZXR1cm4gaGFuZGxlX3JmY2xpa2VfcmVmZXJlbmNlKEBfWzBdLCAiUEVQIiwgJFBFUF9GT1JNQVQpOwotfQotCi1zdWIgZG9fY21kX3NlZXJmY3sKLSAgICByZXR1cm4gaGFuZGxlX3JmY2xpa2VfcmVmZXJlbmNlKEBfWzBdLCAiUkZDIiwgJFJGQ19GT1JNQVQpOwotfQotCi1zdWIgZG9fY21kX3NlZXRpdGxlewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICR1cmwgPSBuZXh0X29wdGlvbmFsX2FyZ3VtZW50KCk7Ci0gICAgbXkgJHRpdGxlID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15ICR0ZXh0ID0gbmV4dF9hcmd1bWVudCgpOwotICAgIGlmICgkdXJsKSB7Ci0gICAgICAgIG15ICRpY29uID0gZ2V0X2xpbmtfaWNvbigkdXJsKTsKLSAgICAgICAgcmV0dXJuICc8ZGwgY29tcGFjdCBjbGFzcz0ic2VldGl0bGUiPicKLSAgICAgICAgICAuICJcbiAgICA8ZHQ+PGVtIGNsYXNzPVwiY2l0ZXRpdGxlXCI+PGEgaHJlZj1cIiR1cmxcIiIKLSAgICAgICAgICAuICJcbiAgICAgICAgPiR0aXRsZSRpY29uPC9hPjwvZW0+IgotICAgICAgICAgIC4gIlxuICAgIDxkZD4kdGV4dFxuICA8L2RsPiIKLSAgICAgICAgICAuICRfOwotICAgIH0KLSAgICByZXR1cm4gJzxkbCBjb21wYWN0IGNsYXNzPSJzZWV0aXRsZSI+JwotICAgICAgLiAiXG4gICAgPGR0PjxlbSBjbGFzcz1cImNpdGV0aXRsZVwiIgotICAgICAgLiAiXG4gICAgICAgID4kdGl0bGU8L2VtPiIKLSAgICAgIC4gIlxuICAgIDxkZD4kdGV4dFxuICA8L2RsPiIKLSAgICAgIC4gJF87Ci19Ci0KLXN1YiBkb19jbWRfc2VldXJsewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICR1cmwgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJHRleHQgPSBuZXh0X2FyZ3VtZW50KCk7Ci0gICAgbXkgJGljb24gPSBnZXRfbGlua19pY29uKCR1cmwpOwotICAgIHJldHVybiAnPGRsIGNvbXBhY3QgY2xhc3M9InNlZXVybCI+JwotICAgICAgLiAiXG4gICAgPGR0PjxhIGhyZWY9XCIkdXJsXCIiCi0gICAgICAuICJcbiAgICAgICAgY2xhc3M9XCJ1cmxcIj4kdXJsJGljb248L2E+IgotICAgICAgLiAiXG4gICAgPGRkPiR0ZXh0XG4gIDwvZGw+IgotICAgICAgLiAkXzsKLX0KLQotc3ViIGRvX2NtZF9zZWV0ZXh0ewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICRjb250ZW50ID0gbmV4dF9hcmd1bWVudCgpOwotICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic2VldGV4dCI+PHA+JyAuICRjb250ZW50IC4gJzwvZGl2PicgLiAkXzsKLX0KLQotCi0jCi0jICBEZWZpbml0aW9uIGxpc3Qgc3VwcG9ydC4KLSMKLQotc3ViIGRvX2Vudl9kZWZpbml0aW9uc3sKLSAgICByZXR1cm4gIjxkbCBjbGFzcz0nZGVmaW5pdGlvbnMnPiIgLiBAX1swXSAuICI8L2RsPlxuIjsKLX0KLQotc3ViIGRvX2NtZF90ZXJtewotICAgIGxvY2FsKCRfKSA9IEBfOwotICAgIG15ICR0ZXJtID0gbmV4dF9hcmd1bWVudCgpOwotICAgIG15KCRuYW1lLCRhbmFtZSwkYWhyZWYpID0gbmV3X2xpbmtfaW5mbygpOwotICAgICMgY291bGQgZWFzaWx5IGFkZCBhbiBpbmRleCBlbnRyeSBoZXJlLi4uCi0gICAgcmV0dXJuICI8ZHQ+PGI+JGFuYW1lIiAuICR0ZXJtIC4gIjwvYT48L2I+XG48ZGQ+IiAuICRfOwotfQotCi0KLSMgSSBkb24ndCByZWNhbGwgZXhhY3RseSB3aHkgdGhpcyB3YXMgbmVlZGVkLCBidXQgaXQgd2FzIHZlcnkgbXVjaCBuZWVkZWQuCi0jIFdlJ2xsIHNlZSBpZiBhbnl0aGluZyBicmVha3Mgd2hlbiBJIG1vdmUgdGhlICJjb2RlIiBsaW5lIG91dCAtLSBzb21lCi0jIHRoaW5ncyBicm9rZSB3aXRoIGl0IGluLgotCi0jY29kZSAjIHt9Ci1wcm9jZXNzX2NvbW1hbmRzX3dyYXBfZGVmZXJyZWQoPDxfUkFXX0FSR19ERUZFUlJFRF9DTURTXyk7Ci1kZWNsYXJlbW9kdWxlICMgW10gIyB7fSAjIHt9Ci1tZW1iZXJsaW5lICMgW10gIyB7fQotbWV0aG9kbGluZSAjIFtdICMge30gIyB7fQotbW9kdWxlc3lub3BzaXMgIyB7fQotcGxhdGZvcm0gIyB7fQotc2FtcCAjIHt9Ci1zZXRpbmRleHN1Yml0ZW0gIyB7fQotd2l0aHN1Yml0ZW0gIyB7fSAjIHt9Ci1fUkFXX0FSR19ERUZFUlJFRF9DTURTXwotCi0KLSRhbGx0dF9zdGFydCA9ICc8ZGw+PGRkPjxwcmUgY2xhc3M9InZlcmJhdGltIj4nOwotJGFsbHR0X2VuZCA9ICc8L3ByZT48L2RsPic7Ci0KLXN1YiBkb19lbnZfYWxsdHQgewotICAgIGxvY2FsICgkXykgPSBAXzsKLSAgICBsb2NhbCgkY2xvc3VyZXMsJHJlb3BlbnMsQG9wZW5fYmxvY2tfdGFncyk7Ci0KLSAgICAjIGdldCB0aGUgdGFnLXN0cmluZ3MgZm9yIGFsbCBvcGVuIHRhZ3MKLSAgICBsb2NhbChAa2VlcF9vcGVuX3RhZ3MpID0gQCRvcGVuX3RhZ3NfUjsKLSAgICAoJGNsb3N1cmVzLCRyZW9wZW5zKSA9ICZwcmVzZXJ2ZV9vcGVuX3RhZ3MoKSBpZiAoQCRvcGVuX3RhZ3NfUik7Ci0KLSAgICAjIGdldCB0aGUgdGFncyBmb3IgdGV4dC1sZXZlbCB0YWdzIG9ubHkKLSAgICAkb3Blbl90YWdzX1IgPSBbIEBrZWVwX29wZW5fdGFncyBdOwotICAgIGxvY2FsKCRsb2NhbF9jbG9zdXJlcywgJGxvY2FsX3Jlb3BlbnMpOwotICAgICgkbG9jYWxfY2xvc3VyZXMsICRsb2NhbF9yZW9wZW5zLEBvcGVuX2Jsb2NrX3RhZ3MpCi0gICAgICA9ICZwcmVzZXJ2ZV9vcGVuX2Jsb2NrX3RhZ3MKLQlpZiAoQCRvcGVuX3RhZ3NfUik7Ci0KLSAgICAkb3Blbl90YWdzX1IgPSBbIEBvcGVuX2Jsb2NrX3RhZ3MgXTsKLQotICAgIGRvIHsKLQlsb2NhbCgkb3Blbl90YWdzX1IpID0gWyBAb3Blbl9ibG9ja190YWdzIF07Ci0JbG9jYWwoQHNhdmVfb3Blbl90YWdzKSA9ICgpOwotCi0JbG9jYWwoJGNudCkgPSArKyRnbG9iYWx7J21heF9pZCd9OwotCSRfID0gam9pbignJywiJE8kY250JENcXHR0JE8iLCArKyRnbG9iYWx7J21heF9pZCd9LCAkQwotCQksICRfICwgJE8sICRnbG9iYWx7J21heF9pZCd9LCAiJEMkTyRjbnQkQyIpOwotCi0JJF8gPSAmdHJhbnNsYXRlX2Vudmlyb25tZW50cygkXyk7Ci0JJF8gPSAmdHJhbnNsYXRlX2NvbW1hbmRzKCRfKSBpZiAoL1xcLyk7Ci0KLQkjIHByZXNlcnZlIHNwYWNlLXJ1bnMsIHVzaW5nICZuYnNwOwotCXdoaWxlIChzLyhcUykgKCArKS8kMSQyO1NQTW5ic3A7L2cpe307Ci0Jcy8oPEJSPikgLyQxO1NQTW5ic3A7L2c7Ci0KLQkkXyA9IGpvaW4oJycsICRjbG9zdXJlcywgJGFsbHR0X3N0YXJ0LCAkbG9jYWxfcmVvcGVucwotCQksICRfCi0JCSwgJmJhbGFuY2VfdGFncygpICMsICRsb2NhbF9jbG9zdXJlcwotCQksICRhbGx0dF9lbmQsICRyZW9wZW5zKTsKLQl1bmRlZiAkb3Blbl90YWdzX1I7IHVuZGVmIEBzYXZlX29wZW5fdGFnczsKLSAgICB9OwotICAgICRvcGVuX3RhZ3NfUiA9IFsgQGtlZXBfb3Blbl90YWdzIF07Ci0gICAgJF87Ci19Ci0KLQotMTsJCQkJIyBUaGlzIG11c3QgYmUgdGhlIGxhc3QgbGluZQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3B1c2gtZG9jcy5zaCBiL2RvYy90b29scy9wdXNoLWRvY3Muc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGMyMjdiY2YuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3B1c2gtZG9jcy5zaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLSMhIC9iaW4vc2gKLQotIyAgU2NyaXB0IHRvIHB1c2ggZG9jcyBmcm9tIG15IGRldmVsb3BtZW50IGFyZWEgdG8gU291cmNlRm9yZ2UsIHdoZXJlIHRoZQotIyAgdXBkYXRlLWRvY3Muc2ggc2NyaXB0IHVucGFja3MgdGhlbSBpbnRvIHRoZWlyIGZpbmFsIGRlc3RpbmF0aW9uLgotCi1UQVJHRVQ9cHl0aG9uLnNvdXJjZWZvcmdlLm5ldDovaG9tZS91c2Vycy9mZHJha2UvdG1wCi0KLUFERFJFU1NFUz0ncHl0aG9uLWRldkBweXRob24ub3JnIGRvYy1zaWdAcHl0aG9uLm9yZyBweXRob24tbGlzdEBweXRob24ub3JnJwotCi1FWFBMQU5BVElPTj0nJwotCi1pZiBbICIkMSIgPSAnLW0nIF0gOyB0aGVuCi0gICAgRVhQTEFOQVRJT049IiQyIgotICAgIHNoaWZ0IDIKLWVsaWYgWyAiJDEiIF0gOyB0aGVuCi0gICAgRVhQTEFOQVRJT049ImBjYXQgJDFgIgotICAgIHNoaWZ0IDEKLWZpCi0KLVNUQVJUPSJgcHdkYCIKLU1ZRElSPSJgZGlybmFtZSAkMGAiCi1jZCAiJE1ZRElSIgotTVlESVI9ImBwd2RgIgotCi1jZCAuLgotCi0jIG5vdyBpbiAuLi4vRG9jLwotbWFrZSAtLW5vLXByaW50LWRpcmVjdG9yeSB8fCBleGl0ICQ/Ci1tYWtlIC0tbm8tcHJpbnQtZGlyZWN0b3J5IGJ6aXBodG1sIHx8IGV4aXQgJD8KLVJFTEVBU0U9YGdyZXAgJ15SRUxFQVNFPScgTWFrZWZpbGUgfCBzZWQgJ3N8UkVMRUFTRT18fCdgCi1QQUNLQUdFPSJodG1sLSRSRUxFQVNFLnRhci5iejIiCi1zY3AgIiRQQUNLQUdFIiB0b29scy91cGRhdGUtZG9jcy5zaCAkVEFSR0VULyB8fCBleGl0ICQ/Ci1zc2ggcHl0aG9uLnNvdXJjZWZvcmdlLm5ldCB0bXAvdXBkYXRlLWRvY3Muc2ggJFBBQ0tBR0UgJyYmJyBybSB0bXAvdXBkYXRlLWRvY3Muc2ggfHwgZXhpdCAkPwotCi1NYWlsIC1zICdbZGV2ZWxvcG1lbnQgZG9jIHVwZGF0ZXNdJyAkQUREUkVTU0VTIDw8RU9GCi1UaGUgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkOgotCi0JaHR0cDovL3B5dGhvbi5zb3VyY2Vmb3JnZS5uZXQvZGV2ZWwtZG9jcy8KLQotJEVYUExBTkFUSU9OCi1FT0YKLWV4aXQgJD8KZGlmZiAtLWdpdCBhL2RvYy90b29scy9yZWZjb3VudHMucHkgYi9kb2MvdG9vbHMvcmVmY291bnRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWM5MDA3Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9yZWZjb3VudHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0iIiJTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgbG9hZGluZyB0aGUgcmVmZXJlbmNlIGNvdW50IGRhdGEgZmlsZS4iIiIKLV9fdmVyc2lvbl9fID0gJyRSZXZpc2lvbjogMS4xLjEuMSAkJwotCi1pbXBvcnQgb3MKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBzeXMKLQotCi0jIERldGVybWluZSB0aGUgZXhwZWN0ZWQgbG9jYXRpb24gb2YgdGhlIHJlZmVyZW5jZSBjb3VudCBmaWxlOgotdHJ5OgotICAgIHAgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi1leGNlcHQgTmFtZUVycm9yOgotICAgIHAgPSBzeXMucGF0aFswXQotcCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBwLCBvcy5wYXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwaSIsICJyZWZjb3VudHMuZGF0IikpCi1ERUZBVUxUX1BBVEggPSBwCi1kZWwgcAotCi0KLWRlZiBsb2FkKHBhdGg9REVGQVVMVF9QQVRIKToKLSAgICByZXR1cm4gbG9hZGZpbGUob3BlbihwYXRoKSkKLQotCi1kZWYgbG9hZGZpbGUoZnApOgotICAgIGQgPSB7fQotICAgIHdoaWxlIDE6Ci0gICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgbGluZSA9IHN0cmluZy5zdHJpcChsaW5lKQotICAgICAgICBpZiBsaW5lWzoxXSBpbiAoIiIsICIjIik6Ci0gICAgICAgICAgICAjIGJsYW5rIGxpbmVzIGFuZCBjb21tZW50cwotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcGFydHMgPSBzdHJpbmcuc3BsaXQobGluZSwgIjoiLCA0KQotICAgICAgICBmdW5jdGlvbiwgdHlwZSwgYXJnLCByZWZjb3VudCwgY29tbWVudCA9IHBhcnRzCi0gICAgICAgIGlmIHJlZmNvdW50ID09ICJudWxsIjoKLSAgICAgICAgICAgIHJlZmNvdW50ID0gTm9uZQotICAgICAgICBlbGlmIHJlZmNvdW50OgotICAgICAgICAgICAgcmVmY291bnQgPSBpbnQocmVmY291bnQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWZjb3VudCA9IE5vbmUKLSAgICAgICAgIwotICAgICAgICAjIEdldCB0aGUgZW50cnksIGNyZWF0aW5nIGl0IGlmIG5lZWRlZDoKLSAgICAgICAgIwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyeSA9IGRbZnVuY3Rpb25dCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGVudHJ5ID0gZFtmdW5jdGlvbl0gPSBFbnRyeShmdW5jdGlvbikKLSAgICAgICAgIwotICAgICAgICAjIFVwZGF0ZSB0aGUgZW50cnkgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBvciB0aGUgcmVzdWx0IGluZm9ybWF0aW9uLgotICAgICAgICAjCi0gICAgICAgIGlmIGFyZzoKLSAgICAgICAgICAgIGVudHJ5LmFyZ3MuYXBwZW5kKChhcmcsIHR5cGUsIHJlZmNvdW50KSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGVudHJ5LnJlc3VsdF90eXBlID0gdHlwZQotICAgICAgICAgICAgZW50cnkucmVzdWx0X3JlZnMgPSByZWZjb3VudAotICAgIHJldHVybiBkCi0KLQotY2xhc3MgRW50cnk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuYXJncyA9IFtdCi0gICAgICAgIHNlbGYucmVzdWx0X3R5cGUgPSAnJwotICAgICAgICBzZWxmLnJlc3VsdF9yZWZzID0gTm9uZQotCi0KLWRlZiBkdW1wKGQpOgotICAgICIiIkR1bXAgdGhlIGRhdGEgaW4gdGhlICdjYW5vbmljYWwnIGZvcm1hdCwgd2l0aCBmdW5jdGlvbnMgaW4KLSAgICBzb3J0ZWQgb3JkZXIuIiIiCi0gICAgaXRlbXMgPSBkLml0ZW1zKCkKLSAgICBpdGVtcy5zb3J0KCkKLSAgICBmaXJzdCA9IDEKLSAgICBmb3IgaywgZW50cnkgaW4gaXRlbXM6Ci0gICAgICAgIGlmIGZpcnN0OgotICAgICAgICAgICAgZmlyc3QgPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludAotICAgICAgICBzID0gZW50cnkubmFtZSArICI6JXM6JXM6JXM6IgotICAgICAgICBpZiBlbnRyeS5yZXN1bHRfcmVmcyBpcyBOb25lOgotICAgICAgICAgICAgciA9ICIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByID0gZW50cnkucmVzdWx0X3JlZnMKLSAgICAgICAgcHJpbnQgcyAlIChlbnRyeS5yZXN1bHRfdHlwZSwgIiIsIHIpCi0gICAgICAgIGZvciB0LCBuLCByIGluIGVudHJ5LmFyZ3M6Ci0gICAgICAgICAgICBpZiByIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgciA9ICIiCi0gICAgICAgICAgICBwcmludCBzICUgKHQsIG4sIHIpCi0KLQotZGVmIG1haW4oKToKLSAgICBkID0gbG9hZCgpCi0gICAgZHVtcChkKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvc2dtbGNvbnYvTWFrZWZpbGUgYi9kb2MvdG9vbHMvc2dtbGNvbnYvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwYTg0NmUuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3NnbWxjb252L01ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyBTaW1wbGUgbWFrZWZpbGUgdG8gY29udHJvbCBYTUwgZ2VuZXJhdGlvbiBmb3IgdGhlIGVudGlyZSBkb2N1bWVudCB0cmVlLgotIyBUaGlzIHNob3VsZCBiZSB1c2VkIGZyb20gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkgKERvYy8pLCBub3QgdGhlIGRpcmVjdG9yeQotIyB0aGF0IGFjdHVhbGx5IGNvbnRhaW5zIHRoaXMgZmlsZToKLSMKLSMgICQgcHdkCi0jICAuLi4vRG9jCi0jICAkIG1ha2UgLWYgdG9vbHMvc2dtbGNvbnYvTWFrZWZpbGUKLQotVE9QRElSPS4KLVRPT0xTRElSPXRvb2xzCi0KLVNHTUxSVUxFUz0uLi8kKFRPT0xTRElSKS9zZ21sY29udi9tYWtlLnJ1bGVzCi0jIFRoZSAnaW5zdCcgZGlyZWN0b3J5IGJyZWFrcyB0aGUgY29udmVyc2lvbiwgc28gc2tpcCBpdCBmb3Igbm93LgotU1VCRElSUz1hcGkgZGlzdCBleHQgbGliIG1hYyByZWYgdHV0Ci1TVUJNQUtFPSQoTUFLRSkgLWYgJChTR01MUlVMRVMpIFRPT0xTRElSPS4uLyQoVE9PTFNESVIpCi0KLWFsbDoJeG1sCi0KLS5QSE9OWTogZXNpcyB4bWwKLS5QSE9OWTogJChTVUJESVJTKQotCi14bWw6Ci0JZm9yIERJUiBpbiAkKFNVQkRJUlMpIDsgZG8gXAotCSAgICAoY2QgJCRESVI7ICQoU1VCTUFLRSkgeG1sKSB8fCBleGl0ICQkPyA7IGRvbmUKLQotZXNpczoKLQlmb3IgRElSIGluICQoU1VCRElSUykgOyBkbyBcCi0JICAgIChjZCAkJERJUjsgJChTVUJNQUtFKSBlc2lzKSB8fCBleGl0ICQkPyA7IGRvbmUKLQotZXNpczE6Ci0JZm9yIERJUiBpbiAkKFNVQkRJUlMpIDsgZG8gXAotCSAgICAoY2QgJCRESVI7ICQoU1VCTUFLRSkgZXNpczEpIHx8IGV4aXQgJCQ/IDsgZG9uZQotCi10YXJiYWxsOiAgeG1sCi0JdGFyIGNmIC0gdG9vbHMvc2dtbGNvbnYgKi8qLnhtbCB8IGd6aXAgLTkgPnhtbC0xLjUuMmIyLnRnegotCi1hcGk6Ci0JY2QgYXBpOyAkKFNVQk1BS0UpCi0KLWRpc3Q6Ci0JY2QgZGlzdDsgJChTVUJNQUtFKQotCi1leHQ6Ci0JY2QgZXh0OyAkKFNVQk1BS0UpCi0KLWluc3Q6Ci0JY2QgaW5zdDsgJChTVUJNQUtFKQotCi1saWI6Ci0JY2QgbGliOyAkKFNVQk1BS0UpCi0KLW1hYzoKLQljZCBtYWM7ICQoU1VCTUFLRSkKLQotcmVmOgotCWNkIHJlZjsgJChTVUJNQUtFKQotCi10dXQ6Ci0JY2QgdHV0OyAkKFNVQk1BS0UpCi0KLWNsZWFuOgotCWZvciBESVIgaW4gJChTVUJESVJTKSA7IGRvIFwKLQkgICAgKGNkICQkRElSOyAkKFNVQk1BS0UpIGNsZWFuKSA7IGRvbmUKLQotY2xvYmJlcjoKLQlmb3IgRElSIGluICQoU1VCRElSUykgOyBkbyBcCi0JICAgIChjZCAkJERJUjsgJChTVUJNQUtFKSBjbG9iYmVyKSA7IGRvbmUKZGlmZiAtLWdpdCBhL2RvYy90b29scy9zZ21sY29udi9SRUFETUUgYi9kb2MvdG9vbHMvc2dtbGNvbnYvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ2MjkzLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9zZ21sY29udi9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1UaGVzZSBzY3JpcHRzIGFuZCBNYWtlZmlsZSBmcmFnbWVudCBhcmUgdXNlZCB0byBjb252ZXJ0IHRoZSBQeXRob24KLWRvY3VtZW50YXRpb24gaW4gTGFUZVggZm9ybWF0IHRvIFhNTC4KLQotVGhpcyBtYXRlcmlhbCBpcyBwcmVsaW1pbmFyeSBhbmQgaW5jb21wbGV0ZS4gIFB5dGhvbiAyLjAgaXMgcmVxdWlyZWQuCi0KLVRvIGNvbnZlcnQgYWxsIGRvY3VtZW50cyB0byBYTUw6Ci0KLQljZCBEb2MvCi0JbWFrZSAtZiB0b29scy9zZ21sY29udi9NYWtlZmlsZQotCi1UbyBjb252ZXJ0IG9uZSBkb2N1bWVudCB0byBYTUw6Ci0KLQljZCBEb2MvPGRvY3VtZW50LWRpcj4KLQltYWtlIC1mIC4uL3Rvb2xzL3NnbWxjb252L21ha2UucnVsZXMgVE9PTFNESVI9Li4vdG9vbHMKLQotUGxlYXNlIHNlbmQgY29tbWVudHMgYW5kIGJ1ZyByZXBvcnRzIHRvIHB5dGhvbi1kb2NzQHB5dGhvbi5vcmcuCi0KLQotV2hhdCBkbyB0aGUgdG9vbHMgZG8/Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbGF0ZXgyZXNpcy5weQotICAgIFJlYWRzIGluIGEgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9uIHdyaXR0ZW4gaW4gWE1MCi0gICAgKGNvbnZlcnNpb24ueG1sKSwgcmVhZHMgYSBMYVRlWCBkb2N1bWVudCBmcmFnbWVudCwgYW5kIGludGVycHJldHMKLSAgICB0aGUgbWFya3VwIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbi4gIFRoZSBvdXRwdXQgaXMgYSBzdHJlYW0KLSAgICBvZiBFU0lTIGV2ZW50cyBsaWtlIHRob3NlIGNyZWF0ZWQgYnkgdGhlIG5zZ21scyBTR01MIHBhcnNlciwgYnV0Ci0gICAgaXMgKm5vdCogZ3VhcmFudGVlZCB0byByZXByZXNlbnQgYSBzaW5nbGUgdHJlZSEgIFRoaXMgaXMgZG9uZSB0bwotICAgIGFsbG93IGNvbnZlcnNpb24gcGVyIGVudGl0eSByYXRoZXIgdGhhbiBwZXIgZG9jdW1lbnQuICBTaW5jZSBtYW55Ci0gICAgb2YgdGhlIExhVGVYIGZpbGVzIGZvciB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24gY29udGFpbiB0d28KLSAgICBzZWN0aW9ucyBvbiBjbG9zZWx5IHJlbGF0ZWQgbW9kdWxlcywgaXQgaXMgaW1wb3J0YW50IHRvIGFsbG93IGJvdGgKLSAgICBvZiB0aGUgcmVzdWx0aW5nIDxzZWN0aW9uPiBlbGVtZW50cyB0byBleGlzdCBpbiB0aGUgc2FtZSBvdXRwdXQKLSAgICBzdHJlYW0uICBBZGRpdGlvbmFsbHksIHNpbmNlIGNvbW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEVTSVMsCi0gICAgY29tbWVudHMgYXJlIGNvbnZlcnRlZCB0byA8Q09NTUVOVD4gZWxlbWVudHMsIHdoaWNoIG1pZ2h0IGV4aXN0IGF0Ci0gICAgdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHRvcC1sZXZlbCBjb250ZW50IGVsZW1lbnRzLgotCi0gICAgVGhlIG91dHB1dCBvZiBsYXRleDJlc2lzLnB5IGdldHMgc2F2ZWQgYXMgPGZpbGVuYW1lPi5lc2lzMS4KLQotZG9jZml4ZXIucHkKLSAgICBUaGlzIGlzIHRoZSByZWFsbHkgcGFpbmZ1bCBwYXJ0IG9mIHRoZSBjb252ZXJzaW9uLiAgV2VsbCwgaXQncyB0aGUgCi0gICAgc2Vjb25kIHJlYWxseSBwYWluZnVsIHBhcnQsIGJ1dCBtb3JlIG9mIHRoZSBwYWluIGlzIHNwZWNpZmljIHRvCi0gICAgdGhlIHN0cnVjdHVyZSBvZiB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24gYW5kIGRlc2lyZWQgb3V0cHV0Ci0gICAgcmF0aGVyIHRoYW4gdG8gdGhlIHBhcnNpbmcgb2YgTGFUZVggbWFya3VwLgotCi0gICAgVGhpcyBzY3JpcHQgbG9hZHMgdGhlIEVTSVMgZGF0YSBjcmVhdGVkIGJ5IGxhdGV4MmVzaXMucHkgaW50byBhCi0gICAgRE9NIGRvY3VtZW50ICpmcmFnbWVudCogKHJlbWVtYmVyLCB0aGUgbGF0ZXgyZXNpcy5weSBvdXRwdXQgbWF5Ci0gICAgbm90IGJlIHdlbGwtZm9ybWVkKS4gIE9uY2UgbG9hZGVkLCBpdCB3YWxrcyBvdmVyIHRoZSB0cmVlIG1hbnkKLSAgICB0aW1lcyBsb29raW5nIGZvciBhIHZhcmlldHkgb2YgcG9zc2libGUgc3BlY2lmaWMKLSAgICBtaWNyby1jb252ZXJzaW9ucy4gIE1vc3Qgb2YgdGhlIGNvZGUgaXMgbm90IGluIGFueSB3YXkgImdlbmVyYWwiLgotICAgIEFmdGVyIHByb2Nlc3NpbmcgdGhlIGZyYWdtZW50LCBhIG5ldyBFU0lTIGRhdGEgc3RyZWFtIGlzIHdyaXR0ZW4KLSAgICBvdXQuICBMaWtlIHRoZSBpbnB1dCwgaXQgbWF5IG5vdCByZXByZXNlbnQgYSB3ZWxsLWZvcm1lZAotICAgIGRvY3VtZW50LCBidXQgZG9lcyByZXByZXNlbnQgYSBwYXJzZWQgZW50aXR5LgotCi0gICAgVGhlIG91dHB1dCBvZiBkb2NmaXhlci5weSBpcyB3aGF0IGdldHMgc2F2ZWQgaW4gPGZpbGVuYW1lPi5lc2lzLgotCi1lc2lzMnNnbWwucHkKLSAgICBSZWFkcyBhbiBFU0lTIHN0cmVhbSBhbmQgY29udmVydCB0byBTR01MIG9yIFhNTC4gIFRoaXMgYWxzbwotICAgIGNvbnZlcnRzIDxDT01NRU5UPiBlbGVtZW50cyB0byByZWFsIGNvbW1lbnRzLiAgVGhpcyB3b3JrcyBxdWlja2x5Ci0gICAgYmVjYXVzZSB0aGVyZSdzIG5vdCBtdWNoIHRvIGFjdHVhbGx5IGRvLgpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3NnbWxjb252L2NvbnZlcnNpb24ueG1sIGIvZG9jL3Rvb2xzL3NnbWxjb252L2NvbnZlcnNpb24ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzU5YmFkLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9zZ21sY29udi9jb252ZXJzaW9uLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDc1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+Ci08Y29udmVyc2lvbj4KLSAgPCEtLSBNaXNjZWxsYW5lb3VzLiAtLT4KLSAgPG1hY3JvIG5hbWU9ImRlY2xhcmVtb2R1bGUiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIG9wdGlvbmFsPSJ5ZXMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ibW9kdWxlc3lub3BzaXMiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0icGxhdGZvcm0iPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iZGVwcmVjYXRlZCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJ2ZXJzaW9uIi8+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJsYWJlbCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJub2RlbmFtZSIgb3V0cHV0bmFtZT0ibGFiZWwiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ibG9jYWxtb2R1bGV0YWJsZSIvPgotICA8bWFjcm8gbmFtZT0ibWFucGFnZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWN0aW9uIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9Im1vZHVsZSI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJtb2R1bGVhdXRob3IiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iZW1haWwiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iY2l0ZXRpdGxlIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImhyZWYiIG9wdGlvbmFsPSJ5ZXMiLz4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InJmYyI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJudW0iLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic2VjdGlvbmF1dGhvciIgb3V0cHV0bmFtZT0iYXV0aG9yIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImVtYWlsIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImF1dGhvciI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImF1dGhvcmFkZHJlc3MiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic2hvcnR2ZXJzaW9uIi8+Ci0gIDxtYWNybyBuYW1lPSJ2ZXJzaW9uYWRkZWQiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idmVyc2lvbiIvPgotICAgIDwvbWFjcm8+Ci0gIDwhLS0gVGhpcyBpcyBicm9rZW46ICB3ZSBuZWVkIHRvIHJlLW9yZGVyIHRoZSBvcHRpb25hbCBhbmQgcmVxdWlyZWQKLSAgICAgICBwYXJhbWV0ZXJzLCBtYWtpbmcgdGhlIG9wdGlvbmFsIHBhcmFtZXRlciB0aGUgY29udGVudCBmb3IgdGhlCi0gICAgICAgZWxlbWVudC4gIFRoZSBwcm9jZXNzb3IgaXMgbm90IHBvd2VyZnVsIGVub3VnaCB0byBoYW5kbGUgdGhpcy4KLSAgICAtLT4KLSAgPG1hY3JvIG5hbWU9InZlcnNpb25jaGFuZ2VkIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImhvdyIgb3B0aW9uYWw9InllcyIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idmVyc2lvbiIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPCEtLSBNb2R1bGUgcmVmZXJlbmNpbmcuIC0tPgotICA8bWFjcm8gbmFtZT0icmVmbW9kdWxlIiBvdXRwdXRuYW1lPSJtb2R1bGUiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iIiBvcHRpb25hbD0ieWVzIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJsaW5rIj55ZXM8L2F0dHJpYnV0ZT4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLQotICA8IS0tIEluZm9ybWF0aW9uIHVuaXRzLiAtLT4KLSAgPCEtLSBDIHRoaW5ncy4gLS0+Ci0gIDxlbnZpcm9ubWVudCBuYW1lPSJjZnVuY2Rlc2MiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIvPgotICAgIDxjaGlsZCBuYW1lPSJhcmdzIi8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgPGVudmlyb25tZW50IG5hbWU9ImN0eXBlZGVzYyI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJ0YWciIG9wdGlvbmFsPSJ5ZXMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICA8ZW52aXJvbm1lbnQgbmFtZT0iY3ZhcmRlc2MiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0KLSAgPCEtLSBQeXRob24gdGhpbmdzLiAtLT4KLSAgPG1hY3JvIG5hbWU9Im9wdGlvbmFsIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InVuc3BlY2lmaWVkIi8+Ci0gIDxtYWNybyBuYW1lPSJtb3JlYXJncyIvPgotICA8ZW52aXJvbm1lbnQgbmFtZT0iY2xhc3NkZXNjIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iYXJncyIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gIDxlbnZpcm9ubWVudCBuYW1lPSJkYXRhZGVzYyI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgPG1hY3JvIG5hbWU9ImRhdGFsaW5lIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8L21hY3JvPgotICA8ZW52aXJvbm1lbnQgbmFtZT0iZXhjZGVzYyI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLQotICA8ZW52aXJvbm1lbnQgbmFtZT0iZnVuY2Rlc2MiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIvPgotICAgIDxjaGlsZCBuYW1lPSJhcmdzIi8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgPG1hY3JvIG5hbWU9ImZ1bmNsaW5lIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iYXJncyIvPgotICAgIDwvbWFjcm8+Ci0gIDxlbnZpcm9ubWVudCBuYW1lPSJmdW5jZGVzY25pIiBvdXRwdXRuYW1lPSJmdW5jZGVzYyI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJpbmRleCI+bm88L2F0dHJpYnV0ZT4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iYXJncyIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gIDxtYWNybyBuYW1lPSJmdW5jbGluZW5pIiBvdXRwdXRuYW1lPSJmdW5jbGluZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJpbmRleCI+bm88L2F0dHJpYnV0ZT4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iYXJncyIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPGVudmlyb25tZW50IG5hbWU9Im1lbWJlcmRlc2MiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIG9wdGlvbmFsPSJ5ZXMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICA8ZW52aXJvbm1lbnQgbmFtZT0ibWVtYmVyZGVzY25pIiBvdXRwdXRuYW1lPSJtZW1iZXJkZXNjIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImluZGV4Ij5ubzwvYXR0cmlidXRlPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIG9wdGlvbmFsPSJ5ZXMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8L2Vudmlyb25tZW50PgotCi0gIDxlbnZpcm9ubWVudCBuYW1lPSJtZXRob2RkZXNjIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBvcHRpb25hbD0ieWVzIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPGNoaWxkIG5hbWU9ImFyZ3MiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICA8bWFjcm8gbmFtZT0ibWV0aG9kbGluZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgb3B0aW9uYWw9InllcyIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIvPgotICAgIDxjaGlsZCBuYW1lPSJhcmdzIi8+Ci0gICAgPC9tYWNybz4KLSAgPGVudmlyb25tZW50IG5hbWU9Im1ldGhvZGRlc2NuaSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJpbmRleCI+bm88L2F0dHJpYnV0ZT4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBvcHRpb25hbD0ieWVzIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPGNoaWxkIG5hbWU9ImFyZ3MiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICA8bWFjcm8gbmFtZT0ibWV0aG9kbGluZW5pIiBvdXRwdXRuYW1lPSJtZXRob2RsaW5lIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImluZGV4Ij5ubzwvYXR0cmlidXRlPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIG9wdGlvbmFsPSJ5ZXMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iYXJncyIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPGVudmlyb25tZW50IG5hbWU9Im9wY29kZWRlc2MiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idmFyIi8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLQotICA8IS0tICJTZWUgYWxzbzoiIHNlY3Rpb25zLiAtLT4KLSAgPG1hY3JvIG5hbWU9InNlZW1vZHVsZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWYiIG9wdGlvbmFsPSJ5ZXMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iZGVzY3JpcHRpb24iLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic2VlcGVwIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im51bWJlciIvPgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjaGlsZCBuYW1lPSJkZXNjcmlwdGlvbiIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJzZWVyZmMiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibnVtYmVyIi8+Ci0gICAgPGNoaWxkIG5hbWU9InRpdGxlIi8+Ci0gICAgPGNoaWxkIG5hbWU9ImRlc2NyaXB0aW9uIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InNlZXRleHQiPgotICAgIDxjaGlsZCBuYW1lPSJkZXNjcmlwdGlvbiIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJzZWV0aXRsZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJocmVmIiBvcHRpb25hbD0ieWVzIi8+Ci0gICAgPGNoaWxkIG5hbWU9InRpdGxlIi8+Ci0gICAgPGNoaWxkIG5hbWU9ImRlc2NyaXB0aW9uIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InNlZXVybCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJocmVmIi8+Ci0gICAgPGNoaWxkIG5hbWU9ImRlc2NyaXB0aW9uIi8+Ci0gICAgPC9tYWNybz4KLQotICA8IS0tIEluZGV4LWdlbmVyYXRpbmcgbWFya3VwLiAtLT4KLSAgPG1hY3JvIG5hbWU9ImluZGV4IiBvdXRwdXRuYW1lPSJpbmRleHRlcm0iPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idGVybTEiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iaW5kZXhpaSIgb3V0cHV0bmFtZT0iaW5kZXh0ZXJtIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9InRlcm0xIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXJtMiIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJpbmRleGlpaSIgb3V0cHV0bmFtZT0iaW5kZXh0ZXJtIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9InRlcm0xIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXJtMiIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idGVybTMiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iaW5kZXhpdiIgb3V0cHV0bmFtZT0iaW5kZXh0ZXJtIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9InRlcm0xIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXJtMiIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idGVybTMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9InRlcm00Ii8+Ci0gICAgPC9tYWNybz4KLQotICA8bWFjcm8gbmFtZT0idHRpbmRleCIgb3V0cHV0bmFtZT0iaW5kZXh0ZXJtIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9InN0eWxlIj50dDwvYXR0cmlidXRlPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idGVybTEiLz4KLSAgICA8L21hY3JvPgotCi0gIDxtYWNybyBuYW1lPSJyZWZtb2RpbmRleCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJtb2R1bGUiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic3Rtb2RpbmRleCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJtb2R1bGUiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0icmVmYmltb2RpbmRleCIgb3V0cHV0bmFtZT0icmVmbW9kaW5kZXgiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibW9kdWxlIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InJlZmV4bW9kaW5kZXgiIG91dHB1dG5hbWU9InJlZm1vZGluZGV4Ij4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im1vZHVsZSIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJyZWZzdG1vZGluZGV4IiBvdXRwdXRuYW1lPSJyZWZtb2RpbmRleCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJtb2R1bGUiLz4KLSAgICA8L21hY3JvPgotCi0gIDxtYWNybyBuYW1lPSJiaWZ1bmNpbmRleCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImV4aW5kZXgiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJvYmluZGV4Ij4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ia3dpbmRleCI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9Im9waW5kZXgiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJzdGluZGV4Ij4KLSAgICA8YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0id2l0aHN1Yml0ZW0iPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCIvPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic2V0aW5kZXhzdWJpdGVtIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiLz4KLSAgICA8L21hY3JvPgotCi0gIDwhLS0gRW50aXR5IG1hbmFnZW1lbnQuIC0tPgotICA8bWFjcm8gbmFtZT0iaW5jbHVkZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJzb3VyY2UiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iaW5wdXQiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ic291cmNlIi8+Ci0gICAgPC9tYWNybz4KLQotICA8IS0tIExhcmdlLXNjYWxlIGRvY3VtZW50IHN0cnVjdHVyZS4gLS0+Ci0gIDxtYWNybyBuYW1lPSJkb2N1bWVudGNsYXNzIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImNsYXNzbmFtZSIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPG1hY3JvIG5hbWU9InVzZXBhY2thZ2UiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ib3B0aW9ucyIgb3B0aW9uYWw9InllcyIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0icGtnIi8+Ci0gICAgPC9tYWNybz4KLQotICA8ZW52aXJvbm1lbnQgbmFtZT0iZG9jdW1lbnQiCi0gICAgICAgICAgICAgICBlbmRjbG9zZXM9ImNoYXB0ZXIgY2hhcHRlciogc2VjdGlvbiBzZWN0aW9uKgotICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZWN0aW9uIHN1YnNlY3Rpb24qCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN1YnNlY3Rpb24gc3Vic3Vic2VjdGlvbioKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoIHBhcmFncmFwaCogc3VicGFyYWdyYXBoIHN1YnBhcmFncmFwaCoiLz4KLQotICA8bWFjcm8gbmFtZT0iY2hhcHRlciIKLSAgICAgICAgIGNsb3Nlcz0iY2hhcHRlciBjaGFwdGVyKiBzZWN0aW9uIHNlY3Rpb24qIHN1YnNlY3Rpb24gc3Vic2VjdGlvbioKLSAgICAgICAgICAgICAgICAgc3Vic3Vic2VjdGlvbiBzdWJzdWJzZWN0aW9uKgotICAgICAgICAgICAgICAgICBwYXJhZ3JhcGggcGFyYWdyYXBoKiBzdWJwYXJhZ3JhcGggc3VicGFyYWdyYXBoKiI+Ci0gICAgPHRleHQ+Ci08L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9InRpdGxlIi8+Ci0gICAgPGNvbnRlbnQgaW1wbGllZD0ieWVzIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImNoYXB0ZXIqIiBvdXRwdXRuYW1lPSJjaGFwdGVyIgotICAgICAgICAgY2xvc2VzPSJjaGFwdGVyIGNoYXB0ZXIqIHNlY3Rpb24gc2VjdGlvbiogc3Vic2VjdGlvbiBzdWJzZWN0aW9uKgotICAgICAgICAgICAgICAgICBzdWJzdWJzZWN0aW9uIHN1YnN1YnNlY3Rpb24qCi0gICAgICAgICAgICAgICAgIHBhcmFncmFwaCBwYXJhZ3JhcGgqIHN1YnBhcmFncmFwaCBzdWJwYXJhZ3JhcGgqIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im51bWJlcmVkIj5ubzwvYXR0cmlidXRlPgotICAgIDx0ZXh0PgotPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPG1hY3JvIG5hbWU9InNlY3Rpb24iCi0gICAgICAgICBjbG9zZXM9InNlY3Rpb24gc2VjdGlvbiogc3Vic2VjdGlvbiBzdWJzZWN0aW9uKgotICAgICAgICAgICAgICAgICBzdWJzdWJzZWN0aW9uIHN1YnN1YnNlY3Rpb24qCi0gICAgICAgICAgICAgICAgIHBhcmFncmFwaCBwYXJhZ3JhcGgqIHN1YnBhcmFncmFwaCBzdWJwYXJhZ3JhcGgqIj4KLSAgICA8dGV4dD4KLTwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0idGl0bGUiLz4KLSAgICA8Y29udGVudCBpbXBsaWVkPSJ5ZXMiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic2VjdGlvbioiIG91dHB1dG5hbWU9InNlY3Rpb24iCi0gICAgICAgICBjbG9zZXM9InNlY3Rpb24gc2VjdGlvbiogc3Vic2VjdGlvbiBzdWJzZWN0aW9uKgotICAgICAgICAgICAgICAgICBzdWJzdWJzZWN0aW9uIHN1YnN1YnNlY3Rpb24qCi0gICAgICAgICAgICAgICAgIHBhcmFncmFwaCBwYXJhZ3JhcGgqIHN1YnBhcmFncmFwaCBzdWJwYXJhZ3JhcGgqIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im51bWJlcmVkIj5ubzwvYXR0cmlidXRlPgotICAgIDx0ZXh0PgotPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPG1hY3JvIG5hbWU9InN1YnNlY3Rpb24iCi0gICAgICAgICBjbG9zZXM9InN1YnNlY3Rpb24gc3Vic2VjdGlvbiogc3Vic3Vic2VjdGlvbiBzdWJzdWJzZWN0aW9uKgotICAgICAgICAgICAgICAgICBwYXJhZ3JhcGggcGFyYWdyYXBoKiBzdWJwYXJhZ3JhcGggc3VicGFyYWdyYXBoKiI+Ci0gICAgPHRleHQ+Ci08L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9InRpdGxlIi8+Ci0gICAgPGNvbnRlbnQgaW1wbGllZD0ieWVzIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InN1YnNlY3Rpb24qIiBvdXRwdXRuYW1lPSJzdWJzZWN0aW9uIgotICAgICAgICAgY2xvc2VzPSJzdWJzZWN0aW9uIHN1YnNlY3Rpb24qIHN1YnN1YnNlY3Rpb24gc3Vic3Vic2VjdGlvbioKLSAgICAgICAgICAgICAgICAgcGFyYWdyYXBoIHBhcmFncmFwaCogc3VicGFyYWdyYXBoIHN1YnBhcmFncmFwaCoiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ibnVtYmVyZWQiPm5vPC9hdHRyaWJ1dGU+Ci0gICAgPHRleHQ+Ci08L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9InRpdGxlIi8+Ci0gICAgPGNvbnRlbnQgaW1wbGllZD0ieWVzIi8+Ci0gICAgPC9tYWNybz4KLQotICA8bWFjcm8gbmFtZT0ic3Vic3Vic2VjdGlvbiIKLSAgICAgICAgIGNsb3Nlcz0ic3Vic3Vic2VjdGlvbiBzdWJzdWJzZWN0aW9uKgotICAgICAgICAgICAgICAgICBwYXJhZ3JhcGggcGFyYWdyYXBoKiBzdWJwYXJhZ3JhcGggc3VicGFyYWdyYXBoKiI+Ci0gICAgPHRleHQ+Ci08L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9InRpdGxlIi8+Ci0gICAgPGNvbnRlbnQgaW1wbGllZD0ieWVzIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InN1YnN1YnNlY3Rpb24qIiBvdXRwdXRuYW1lPSJzdWJzdWJzZWN0aW9uIgotICAgICAgICAgY2xvc2VzPSJzdWJzdWJzZWN0aW9uIHN1YnN1YnNlY3Rpb24qCi0gICAgICAgICAgICAgICAgIHBhcmFncmFwaCBwYXJhZ3JhcGgqIHN1YnBhcmFncmFwaCBzdWJwYXJhZ3JhcGgqIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im51bWJlcmVkIj5ubzwvYXR0cmlidXRlPgotICAgIDx0ZXh0PgotPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPG1hY3JvIG5hbWU9InBhcmFncmFwaCIKLSAgICAgICAgIGNsb3Nlcz0icGFyYWdyYXBoIHBhcmFncmFwaCogc3VicGFyYWdyYXBoIHN1YnBhcmFncmFwaCoiPgotICAgIDx0ZXh0PgotPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJwYXJhZ3JhcGgqIiBvdXRwdXRuYW1lPSJwYXJhZ3JhcGgiCi0gICAgICAgICBjbG9zZXM9InBhcmFncmFwaCBwYXJhZ3JhcGgqIHN1YnBhcmFncmFwaCBzdWJwYXJhZ3JhcGgqIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im51bWJlcmVkIj5ubzwvYXR0cmlidXRlPgotICAgIDx0ZXh0PgotPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPG1hY3JvIG5hbWU9InN1YnBhcmFncmFwaCIKLSAgICAgICAgIGNsb3Nlcz0ic3VicGFyYWdyYXBoIHN1YnBhcmFncmFwaCoiPgotICAgIDx0ZXh0PgotPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJzdWJwYXJhZ3JhcGgqIiBvdXRwdXRuYW1lPSJzdWJwYXJhZ3JhcGgiCi0gICAgICAgICBjbG9zZXM9InN1YnBhcmFncmFwaCBzdWJwYXJhZ3JhcGgqIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im51bWJlcmVkIj5ubzwvYXR0cmlidXRlPgotICAgIDx0ZXh0PgotPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJ0aXRsZSIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJ0aXRsZSI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0KLSAgPG1hY3JvIG5hbWU9ImFwcGVuZGl4IiBvdXRwdXRuYW1lPSJiYWNrLW1hdHRlciIKLSAgICAgICAgIGNsb3Nlcz0iY2hhcHRlciBjaGFwdGVyKiBzZWN0aW9uIHN1YnNlY3Rpb24gc3Vic3Vic2VjdGlvbgotICAgICAgICAgICAgICAgICBwYXJhZ3JhcGggc3VicGFyYWdyYXBoIi8+Ci0KLSAgPGVudmlyb25tZW50IG5hbWU9Imxpc3QiCi0gICAgICAgICAgICAgICBlbmRjbG9zZXM9Iml0ZW0iPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iYnVsbGV0Ii8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0Ii8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgPG1hY3JvIG5hbWU9Iml0ZW0iIGNsb3Nlcz0iaXRlbSI+Ci0gICAgPGNoaWxkIG5hbWU9ImxlYWRlciIgb3B0aW9uYWw9InllcyIvPgotICAgIDxjb250ZW50IGltcGxpZWQ9InllcyIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPG1hY3JvIG5hbWU9InJlZiI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWYiLz4KLSAgICA8L21hY3JvPgotCi0gIDxlbnZpcm9ubWVudCBuYW1lPSJkZXNjcmlwdGlvbiIgb3V0cHV0bmFtZT0iZGVzY3JpcHRpb25saXN0IgotICAgICAgICAgICAgICAgZW5kY2xvc2VzPSJpdGVtIi8+Ci0KLSAgPGVudmlyb25tZW50IG5hbWU9ImVudW1lcmF0ZSIgb3V0cHV0bmFtZT0iZW51bWVyYXRpb24iCi0gICAgICAgICAgICAgICBlbmRjbG9zZXM9Iml0ZW0iLz4KLQotICA8ZW52aXJvbm1lbnQgbmFtZT0iZnVsbGxpbmVpdGVtcyIKLSAgICAgICAgICAgICAgIGVuZGNsb3Nlcz0iaXRlbSIvPgotCi0gIDxlbnZpcm9ubWVudCBuYW1lPSJpdGVtaXplIgotICAgICAgICAgICAgICAgZW5kY2xvc2VzPSJpdGVtIi8+Ci0KLSAgPGVudmlyb25tZW50IG5hbWU9ImRlZmluaXRpb25zIiBvdXRwdXRuYW1lPSJkZWZpbml0aW9ubGlzdCIKLSAgICAgICAgICAgICAgIGVuY2xvc2VzPSJ0ZXJtIi8+Ci0gIDxtYWNybyBuYW1lPSJ0ZXJtIiBjbG9zZXM9ImRlZmluaXRpb24iPgotICAgIDwhLS0gbm90IHJlYWxseSBvcHRpb25hbCwgYnV0IHVzZXMgdGhlIFtdIHN5bnRheCAtLT4KLSAgICA8Y2hpbGQgbmFtZT0idGVybSIgb3B0aW9uYWw9InllcyIvPgotICAgIDxjaGlsZCBuYW1lPSJkZWZpbml0aW9uIiBpbXBsaWVkPSJ5ZXMiLz4KLSAgICA8L21hY3JvPgotCi0gIDxlbnZpcm9ubWVudCBuYW1lPSJhbGx0dCIgb3V0cHV0bmFtZT0idmVyYmF0aW0iLz4KLSAgPGVudmlyb25tZW50IG5hbWU9ImNvbW1lbnQiIHZlcmJhdGltPSJ5ZXMiLz4KLSAgPGVudmlyb25tZW50IG5hbWU9InZlcmJhdGltIiB2ZXJiYXRpbT0ieWVzIi8+Ci0gIDxlbnZpcm9ubWVudCBuYW1lPSJ2ZXJiYXRpbSoiIHZlcmJhdGltPSJ5ZXMiPgotICAgIDwhLS0gbm90IHVzZWQgYW55d2hlcmUsIGJ1dCBpdCdzIGEgc3RhbmRhcmQgTGFUZVhpc20gLS0+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJzcGFjZXMiPnZpc2libGU8L2F0dHJpYnV0ZT4KLSAgICA8L2Vudmlyb25tZW50PgotCi0gIDwhLS0gVGFibGUgbWFya3VwLiAtLT4KLSAgPG1hY3JvIG5hbWU9ImhsaW5lIi8+Ci0gIDxlbnZpcm9ubWVudCBuYW1lPSJ0YWJsZWlpIiBvdXRwdXRuYW1lPSJ0YWJsZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xzIj4yPC9hdHRyaWJ1dGU+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xzcGVjIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgotICAgIDxjaGlsZCBuYW1lPSJlbnRyeSIvPgotICAgIDx0ZXh0PgotICAgICAgICAgPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJlbnRyeSIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gIDxlbnZpcm9ubWVudCBuYW1lPSJsb25ndGFibGVpaSIgb3V0cHV0bmFtZT0idGFibGUiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iY29scyI+MjwvYXR0cmlidXRlPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iY29sc3BlYyIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3R5bGUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8dGV4dD4KLSAgICAgICAgIDwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICA8bWFjcm8gbmFtZT0ibGluZWlpIiBvdXRwdXRuYW1lPSJyb3ciPgotICAgIDxjaGlsZCBuYW1lPSJlbnRyeSIvPgotICAgIDx0ZXh0PgotICAgICAgICAgPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJlbnRyeSIvPgotICAgIDwvbWFjcm8+Ci0KLSAgPGVudmlyb25tZW50IG5hbWU9InRhYmxlaWlpIiBvdXRwdXRuYW1lPSJ0YWJsZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xzIj4zPC9hdHRyaWJ1dGU+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xzcGVjIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgotICAgIDxjaGlsZCBuYW1lPSJlbnRyeSIvPgotICAgIDx0ZXh0PgotICAgICAgICAgPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJlbnRyeSIvPgotICAgIDx0ZXh0PgotICAgICAgICAgPC90ZXh0PgotICAgIDxjaGlsZCBuYW1lPSJlbnRyeSIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gIDxlbnZpcm9ubWVudCBuYW1lPSJsb25ndGFibGVpaWkiIG91dHB1dG5hbWU9InRhYmxlIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImNvbHMiPjM8L2F0dHJpYnV0ZT4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImNvbHNwZWMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9InN0eWxlIi8+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPHRleHQ+Ci0gICAgICAgICA8L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPHRleHQ+Ci0gICAgICAgICA8L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgPG1hY3JvIG5hbWU9ImxpbmVpaWkiIG91dHB1dG5hbWU9InJvdyI+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPHRleHQ+Ci0gICAgICAgICA8L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPHRleHQ+Ci0gICAgICAgICA8L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPC9tYWNybz4KLQotICA8ZW52aXJvbm1lbnQgbmFtZT0idGFibGVpdiIgb3V0cHV0bmFtZT0idGFibGUiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iY29scyI+NDwvYXR0cmlidXRlPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0iY29sc3BlYyIvPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3R5bGUiLz4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8dGV4dD4KLSAgICAgICAgIDwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8dGV4dD4KLSAgICAgICAgIDwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8dGV4dD4KLSAgICAgICAgIDwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICA8ZW52aXJvbm1lbnQgbmFtZT0ibG9uZ3RhYmxlaXYiIG91dHB1dG5hbWU9InRhYmxlIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImNvbHMiPjQ8L2F0dHJpYnV0ZT4KLSAgICA8YXR0cmlidXRlIG5hbWU9ImNvbHNwZWMiLz4KLSAgICA8YXR0cmlidXRlIG5hbWU9InN0eWxlIi8+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPHRleHQ+Ci0gICAgICAgICA8L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPHRleHQ+Ci0gICAgICAgICA8L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPHRleHQ+Ci0gICAgICAgICA8L3RleHQ+Ci0gICAgPGNoaWxkIG5hbWU9ImVudHJ5Ii8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgPG1hY3JvIG5hbWU9ImxpbmVpdiIgb3V0cHV0bmFtZT0icm93Ij4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8dGV4dD4KLSAgICAgICAgIDwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8dGV4dD4KLSAgICAgICAgIDwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8dGV4dD4KLSAgICAgICAgIDwvdGV4dD4KLSAgICA8Y2hpbGQgbmFtZT0iZW50cnkiLz4KLSAgICA8L21hY3JvPgotCi0gIDwhLS0gVGhlc2UgYXJlIGhhbmRsZWQgYXQgYSBsYXRlciB0cmFuc2xhdGlvbiBzdGFnZSwgYXQgbGVhc3QgZm9yIG5vdy4gLS0+Ci0gIDxtYWNybyBuYW1lPSJDcHAiIG91dHB1dG5hbWU9IiI+Ci0gICAgPHRleHQ+QysrPC90ZXh0PgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJnZXEiIG91dHB1dG5hbWU9IiI+Ci0gICAgPGVudGl0eXJlZiBuYW1lPSJnZXEiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iTGFUZVgiIG91dHB1dG5hbWU9IiI+Ci0gICAgPHRleHQ+TGFUZVg8L3RleHQ+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9Imxkb3RzIiBvdXRwdXRuYW1lPSIiPgotICAgIDx0ZXh0Pi4uLjwvdGV4dD4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ibGVxIiBvdXRwdXRuYW1lPSIiPgotICAgIDxlbnRpdHlyZWYgbmFtZT0ibGVxIi8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9IlRlWCIgb3V0cHV0bmFtZT0iIj4KLSAgICA8dGV4dD5UZVg8L3RleHQ+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InZlcnNpb24iLz4KLQotICA8IS0tIERpc3R1dGlscyB0aGluZ3MuIC0tPgotICA8bWFjcm8gbmFtZT0iY29tbWFuZCI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJvcHRpb24iPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iZmlsZXZhciIgb3V0cHV0bmFtZT0idmFyIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9IlhYWCIgb3V0cHV0bmFtZT0iZWRpdG9yaWFsLWNvbW1lbnQiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotCi0gIDwhLS0gTWlzYy4gLS0+Ci0gIDxtYWNybyBuYW1lPSJlbXBoIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InN0cm9uZyI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJ0ZXh0cm0iPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0idGV4dHR0Ij4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImNvZGUiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iZXhjZXB0aW9uIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImtleXdvcmQiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic2FtcCI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJjbGFzcyI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJjZGF0YSI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJjZnVuY3Rpb24iPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iY3R5cGUiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0icHl0eXBlIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImNoYXJhY3RlciI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJjb25zdGFudCI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJlbnZ2YXIiIG91dHB1dG5hbWU9ImVudmFyIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImZpbGUiIG91dHB1dG5hbWU9ImZpbGVuYW1lIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImZpbGVucSIgb3V0cHV0bmFtZT0iZmlsZW5hbWUiPgotICAgIDxhdHRyaWJ1dGUgbmFtZT0icXVvdGUiPm5vPC9hdHRyaWJ1dGU+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJmdW5jdGlvbiI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJrYmQiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ibWFrZXZhciI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJtZXRob2QiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ibWVtYmVyIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9Im1pbWV0eXBlIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9Im5ld3Nncm91cCI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJwcm9ncmFtIiBvdXRwdXRuYW1lPSJjb21tYW5kIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InByb2dyYW1vcHQiIG91dHB1dG5hbWU9Im9wdGlvbiI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJsb25ncHJvZ3JhbW9wdCIgb3V0cHV0bmFtZT0ibG9uZ29wdGlvbiI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJyZWdleHAiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0idmFyIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9ImVtYWlsIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9InVybCI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJmb290bm90ZSI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJkZm4iIG91dHB1dG5hbWU9ImRlZmluZWR0ZXJtIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLQotICA8bWFjcm8gbmFtZT0ibWJveCI+Ci0gICAgPGNvbnRlbnQvPgotICAgIDwvbWFjcm8+Ci0KLSAgPCEtLSBtaW5pbWFsIG1hdGggc3R1ZmYgdG8gZ2V0IGJ5IC0tPgotICA8bWFjcm8gbmFtZT0icGkiLz4KLSAgPG1hY3JvIG5hbWU9InNxcnQiPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iZnJhYyIgb3V0cHV0bmFtZT0iZnJhY3Rpb24iPgotICAgIDxjaGlsZCBuYW1lPSJudW1lcmF0b3IiLz4KLSAgICA8Y2hpbGQgbmFtZT0iZGVub21pbmF0b3IiLz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0ic3VtIj4KLSAgICA8Y29udGVudC8+Ci0gICAgPC9tYWNybz4KLQotICA8IS0tIENvbnZlcnNpb25zIHRvIHRleHQ7IHBlcmhhcHMgY291bGQgYmUgZGlmZmVyZW50PyAgVGhlcmUncyAtLT4KLSAgPCEtLSBubyB3YXkgZm9yIGEgc3R5bGUgc2hlZXQgdG8gd29yayB3aXRoIHRoZXNlIHRoaXMgd2F5LgkgLS0+Ci0gIDxtYWNybyBuYW1lPSJBQkMiIG91dHB1dG5hbWU9IiI+Ci0gICAgPHRleHQ+QUJDPC90ZXh0PgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJBU0NJSSIgb3V0cHV0bmFtZT0iIj4KLSAgICA8dGV4dD5BU0NJSTwvdGV4dD4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iQyIgb3V0cHV0bmFtZT0iIj4KLSAgICA8dGV4dD5DPC90ZXh0PgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJFT0YiIG91dHB1dG5hbWU9IiI+Ci0gICAgPHRleHQ+RU9GPC90ZXh0PgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJlIiBvdXRwdXRuYW1lPSIiPgotICAgIDx0ZXh0Plw8L3RleHQ+Ci0gICAgPC9tYWNybz4KLSAgPG1hY3JvIG5hbWU9Ik5VTEwiIG91dHB1dG5hbWU9ImNvbnN0YW50Ij4KLSAgICA8dGV4dD5OVUxMPC90ZXh0PgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJQT1NJWCIgb3V0cHV0bmFtZT0iIj4KLSAgICA8dGV4dD5QT1NJWDwvdGV4dD4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0iVU5JWCIgb3V0cHV0bmFtZT0iIj4KLSAgICA8dGV4dD5Vbml4PC90ZXh0PgotICAgIDwvbWFjcm8+Ci0gIDxtYWNybyBuYW1lPSJ0ZXh0YXNjaWl0aWxkZSIgb3V0cHV0bmFtZT0iIj4KLSAgICA8dGV4dD5+PC90ZXh0PgotICAgIDwvbWFjcm8+Ci0KLSAgPCEtLSBUaGVzZSB3aWxsIGVuZCB1cCBkaXNhcHBlYXJpbmcgYXMgd2VsbCEgLS0+Ci0gIDxtYWNybyBuYW1lPSJjYXRjb2RlIiBvdXRwdXRuYW1lPSIiLz4KLSAgPG1hY3JvIG5hbWU9ImZpIiBvdXRwdXRuYW1lPSIiLz4KLSAgPG1hY3JvIG5hbWU9ImlmaHRtbCIgb3V0cHV0bmFtZT0iIi8+Ci0gIDxtYWNybyBuYW1lPSJpbmRleG5hbWUiIG91dHB1dG5hbWU9IiIvPgotICA8bWFjcm8gbmFtZT0ibGFiZWx3aWR0aCIgb3V0cHV0bmFtZT0iIi8+Ci0gIDxtYWNybyBuYW1lPSJsYXJnZSIgb3V0cHV0bmFtZT0iIi8+Ci0gIDxtYWNybyBuYW1lPSJsZWZ0bWFyZ2luIiBvdXRwdXRuYW1lPSIiLz4KLSAgPG1hY3JvIG5hbWU9Im1ha2VpbmRleCIgb3V0cHV0bmFtZT0iIi8+Ci0gIDxtYWNybyBuYW1lPSJtYWtlbW9kaW5kZXgiIG91dHB1dG5hbWU9IiIvPgotICA8bWFjcm8gbmFtZT0ibWFrZXRpdGxlIiBvdXRwdXRuYW1lPSIiLz4KLSAgPG1hY3JvIG5hbWU9Im5vaW5kZW50IiBvdXRwdXRuYW1lPSIiLz4KLSAgPG1hY3JvIG5hbWU9InByb3RlY3QiIG91dHB1dG5hbWU9IiIvPgotICA8bWFjcm8gbmFtZT0icmVuZXdjb21tYW5kIj4KLSAgICA8YXR0cmlidXRlIG5hbWU9Im1hY3JvIi8+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJuYXJncyIgb3B0aW9uYWw9InllcyIvPgotICAgIDxjb250ZW50Lz4KLSAgICA8L21hY3JvPgotICA8bWFjcm8gbmFtZT0idGFibGVvZmNvbnRlbnRzIiBvdXRwdXRuYW1lPSIiLz4KLSAgPG1hY3JvIG5hbWU9InZzcGFjZSI+Ci0gICAgPGF0dHJpYnV0ZSBuYW1lPSJzaXplIi8+Ci0gICAgPC9tYWNybz4KLTwvY29udmVyc2lvbj4KZGlmZiAtLWdpdCBhL2RvYy90b29scy9zZ21sY29udi9kb2NmaXhlci5weSBiL2RvYy90b29scy9zZ21sY29udi9kb2NmaXhlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDYzMjc2Yi4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvc2dtbGNvbnYvZG9jZml4ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMzICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24KLQotIiIiUGVyZm9ybSBtYXNzaXZlIHRyYW5zZm9ybWF0aW9ucyBvbiBhIGRvY3VtZW50IHRyZWUgY3JlYXRlZCBmcm9tIHRoZSBMYVRlWAotb2YgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uLCBhbmQgZHVtcCB0aGUgRVNJUyBkYXRhIGZvciB0aGUgdHJhbnNmb3JtZWQgdHJlZS4KLSIiIgotCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGVzaXN0b29scwotaW1wb3J0IHJlCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgc3lzCi1pbXBvcnQgeG1sLmRvbQotaW1wb3J0IHhtbC5kb20ubWluaWRvbQotCi1FTEVNRU5UID0geG1sLmRvbS5Ob2RlLkVMRU1FTlRfTk9ERQotRU5USVRZX1JFRkVSRU5DRSA9IHhtbC5kb20uTm9kZS5FTlRJVFlfUkVGRVJFTkNFX05PREUKLVRFWFQgPSB4bWwuZG9tLk5vZGUuVEVYVF9OT0RFCi0KLQotY2xhc3MgQ29udmVyc2lvbkVycm9yKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWV3cml0ZSA9IHN5cy5zdGRlcnIud3JpdGUKLXRyeToKLSAgICAjIFdlIGNhbiBvbmx5IGRvIHRoaXMgdHJpY2sgb24gVW5peCAoaWYgdHB1dCBpcyBvbiAkUEFUSCkhCi0gICAgaWYgc3lzLnBsYXRmb3JtICE9ICJwb3NpeCIgb3Igbm90IHN5cy5zdGRlcnIuaXNhdHR5KCk6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0gICAgaW1wb3J0IGNvbW1hbmRzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgYndyaXRlID0gZXdyaXRlCi1lbHNlOgotICAgIGRlZiBid3JpdGUocywgQk9MRE9OPWNvbW1hbmRzLmdldG91dHB1dCgidHB1dCBib2xkIiksCi0gICAgICAgICAgICAgICBCT0xET0ZGPWNvbW1hbmRzLmdldG91dHB1dCgidHB1dCBzZ3IwIikpOgotICAgICAgICBld3JpdGUoIiVzJXMlcyIgJSAoQk9MRE9OLCBzLCBCT0xET0ZGKSkKLQotCi1QQVJBX0VMRU1FTlQgPSAicGFyYSIKLQotREVCVUdfUEFSQV9GSVhFUiA9IDAKLQotaWYgREVCVUdfUEFSQV9GSVhFUjoKLSAgICBkZWYgcGFyYV9tc2cocyk6Ci0gICAgICAgIGV3cml0ZSgiKioqICVzXG4iICUgcykKLWVsc2U6Ci0gICAgZGVmIHBhcmFfbXNnKHMpOgotICAgICAgICBwYXNzCi0KLQotZGVmIGdldF9maXJzdF9lbGVtZW50KGRvYywgZ2kpOgotICAgIGZvciBuIGluIGRvYy5jaGlsZE5vZGVzOgotICAgICAgICBpZiBuLm5vZGVOYW1lID09IGdpOgotICAgICAgICAgICAgcmV0dXJuIG4KLQotZGVmIGV4dHJhY3RfZmlyc3RfZWxlbWVudChkb2MsIGdpKToKLSAgICBub2RlID0gZ2V0X2ZpcnN0X2VsZW1lbnQoZG9jLCBnaSkKLSAgICBpZiBub2RlIGlzIG5vdCBOb25lOgotICAgICAgICBkb2MucmVtb3ZlQ2hpbGQobm9kZSkKLSAgICByZXR1cm4gbm9kZQotCi0KLWRlZiBnZXRfZG9jdW1lbnRFbGVtZW50KG5vZGUpOgotICAgIHJlc3VsdCA9IE5vbmUKLSAgICBmb3IgY2hpbGQgaW4gbm9kZS5jaGlsZE5vZGVzOgotICAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBFTEVNRU5UOgotICAgICAgICAgICAgcmVzdWx0ID0gY2hpbGQKLSAgICByZXR1cm4gcmVzdWx0Ci0KLQotZGVmIHNldF90YWdOYW1lKGVsZW0sIGdpKToKLSAgICBlbGVtLm5vZGVOYW1lID0gZWxlbS50YWdOYW1lID0gZ2kKLQotCi1kZWYgZmluZF9hbGxfZWxlbWVudHMoZG9jLCBnaSk6Ci0gICAgbm9kZXMgPSBbXQotICAgIGlmIGRvYy5ub2RlTmFtZSA9PSBnaToKLSAgICAgICAgbm9kZXMuYXBwZW5kKGRvYykKLSAgICBmb3IgY2hpbGQgaW4gZG9jLmNoaWxkTm9kZXM6Ci0gICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IEVMRU1FTlQ6Ci0gICAgICAgICAgICBpZiBjaGlsZC50YWdOYW1lID09IGdpOgotICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChjaGlsZCkKLSAgICAgICAgICAgIGZvciBub2RlIGluIGNoaWxkLmdldEVsZW1lbnRzQnlUYWdOYW1lKGdpKToKLSAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQobm9kZSkKLSAgICByZXR1cm4gbm9kZXMKLQotZGVmIGZpbmRfYWxsX2NoaWxkX2VsZW1lbnRzKGRvYywgZ2kpOgotICAgIG5vZGVzID0gW10KLSAgICBmb3IgY2hpbGQgaW4gZG9jLmNoaWxkTm9kZXM6Ci0gICAgICAgIGlmIGNoaWxkLm5vZGVOYW1lID09IGdpOgotICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGNoaWxkKQotICAgIHJldHVybiBub2RlcwotCi0KLWRlZiBmaW5kX2FsbF9lbGVtZW50c19mcm9tX3NldChkb2MsIGdpX3NldCk6Ci0gICAgcmV0dXJuIF9fZmluZF9hbGxfZWxlbWVudHNfZnJvbV9zZXQoZG9jLCBnaV9zZXQsIFtdKQotCi1kZWYgX19maW5kX2FsbF9lbGVtZW50c19mcm9tX3NldChkb2MsIGdpX3NldCwgbm9kZXMpOgotICAgIGlmIGRvYy5ub2RlTmFtZSBpbiBnaV9zZXQ6Ci0gICAgICAgIG5vZGVzLmFwcGVuZChkb2MpCi0gICAgZm9yIGNoaWxkIGluIGRvYy5jaGlsZE5vZGVzOgotICAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBFTEVNRU5UOgotICAgICAgICAgICAgX19maW5kX2FsbF9lbGVtZW50c19mcm9tX3NldChjaGlsZCwgZ2lfc2V0LCBub2RlcykKLSAgICByZXR1cm4gbm9kZXMKLQotCi1kZWYgc2ltcGxpZnkoZG9jLCBmcmFnbWVudCk6Ci0gICAgIyBUcnkgdG8gcmF0aW9uYWxpemUgdGhlIGRvY3VtZW50IGEgYml0LCBzaW5jZSB0aGVzZSB0aGluZ3MgYXJlIHNpbXBseQotICAgICMgbm90IHZhbGlkIFNHTUwvWE1MIGRvY3VtZW50cyBhcyB0aGV5IHN0YW5kLCBhbmQgbmVlZCBhIGxpdHRsZSB3b3JrLgotICAgIGRvY3VtZW50Y2xhc3MgPSAiZG9jdW1lbnQiCi0gICAgaW5wdXRzID0gW10KLSAgICBub2RlID0gZXh0cmFjdF9maXJzdF9lbGVtZW50KGZyYWdtZW50LCAiZG9jdW1lbnRjbGFzcyIpCi0gICAgaWYgbm9kZSBpcyBub3QgTm9uZToKLSAgICAgICAgZG9jdW1lbnRjbGFzcyA9IG5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzc25hbWUiKQotICAgIG5vZGUgPSBleHRyYWN0X2ZpcnN0X2VsZW1lbnQoZnJhZ21lbnQsICJ0aXRsZSIpCi0gICAgaWYgbm9kZSBpcyBub3QgTm9uZToKLSAgICAgICAgaW5wdXRzLmFwcGVuZChub2RlKQotICAgICMgdXBkYXRlIHRoZSBuYW1lIG9mIHRoZSByb290IGVsZW1lbnQKLSAgICBub2RlID0gZ2V0X2ZpcnN0X2VsZW1lbnQoZnJhZ21lbnQsICJkb2N1bWVudCIpCi0gICAgaWYgbm9kZSBpcyBub3QgTm9uZToKLSAgICAgICAgc2V0X3RhZ05hbWUobm9kZSwgZG9jdW1lbnRjbGFzcykKLSAgICB3aGlsZSAxOgotICAgICAgICBub2RlID0gZXh0cmFjdF9maXJzdF9lbGVtZW50KGZyYWdtZW50LCAiaW5wdXQiKQotICAgICAgICBpZiBub2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBpbnB1dHMuYXBwZW5kKG5vZGUpCi0gICAgaWYgaW5wdXRzOgotICAgICAgICBkb2NlbGVtID0gZ2V0X2RvY3VtZW50RWxlbWVudChmcmFnbWVudCkKLSAgICAgICAgaW5wdXRzLnJldmVyc2UoKQotICAgICAgICBmb3Igbm9kZSBpbiBpbnB1dHM6Ci0gICAgICAgICAgICB0ZXh0ID0gZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpCi0gICAgICAgICAgICBkb2NlbGVtLmluc2VydEJlZm9yZSh0ZXh0LCBkb2NlbGVtLmZpcnN0Q2hpbGQpCi0gICAgICAgICAgICBkb2NlbGVtLmluc2VydEJlZm9yZShub2RlLCB0ZXh0KQotICAgICAgICBkb2NlbGVtLmluc2VydEJlZm9yZShkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIiksIGRvY2VsZW0uZmlyc3RDaGlsZCkKLSAgICB3aGlsZSBmcmFnbWVudC5maXJzdENoaWxkIGFuZCBmcmFnbWVudC5maXJzdENoaWxkLm5vZGVUeXBlID09IFRFWFQ6Ci0gICAgICAgIGZyYWdtZW50LnJlbW92ZUNoaWxkKGZyYWdtZW50LmZpcnN0Q2hpbGQpCi0KLQotZGVmIGNsZWFudXBfcm9vdF90ZXh0KGRvYyk6Ci0gICAgZGlzY2FyZHMgPSBbXQotICAgIHNraXAgPSAwCi0gICAgZm9yIG4gaW4gZG9jLmNoaWxkTm9kZXM6Ci0gICAgICAgIHByZXZza2lwID0gc2tpcAotICAgICAgICBza2lwID0gMAotICAgICAgICBpZiBuLm5vZGVUeXBlID09IFRFWFQgYW5kIG5vdCBwcmV2c2tpcDoKLSAgICAgICAgICAgIGRpc2NhcmRzLmFwcGVuZChuKQotICAgICAgICBlbGlmIG4ubm9kZU5hbWUgPT0gIkNPTU1FTlQiOgotICAgICAgICAgICAgc2tpcCA9IDEKLSAgICBmb3Igbm9kZSBpbiBkaXNjYXJkczoKLSAgICAgICAgZG9jLnJlbW92ZUNoaWxkKG5vZGUpCi0KLQotREVTQ1JJUFRPUl9FTEVNRU5UUyA9ICgKLSAgICAiY2Z1bmNkZXNjIiwgImN2YXJkZXNjIiwgImN0eXBlZGVzYyIsCi0gICAgImNsYXNzZGVzYyIsICJtZW1iZXJkZXNjIiwgIm1lbWJlcmRlc2NuaSIsICJtZXRob2RkZXNjIiwgIm1ldGhvZGRlc2NuaSIsCi0gICAgImV4Y2Rlc2MiLCAiZnVuY2Rlc2MiLCAiZnVuY2Rlc2NuaSIsICJvcGNvZGVkZXNjIiwKLSAgICAiZGF0YWRlc2MiLCAiZGF0YWRlc2NuaSIsCi0gICAgKQotCi1kZWYgZml4dXBfZGVzY3JpcHRvcnMoZG9jLCBmcmFnbWVudCk6Ci0gICAgc2VjdGlvbnMgPSBmaW5kX2FsbF9lbGVtZW50cyhmcmFnbWVudCwgInNlY3Rpb24iKQotICAgIGZvciBzZWN0aW9uIGluIHNlY3Rpb25zOgotICAgICAgICBmaW5kX2FuZF9maXhfZGVzY3JpcHRvcnMoZG9jLCBzZWN0aW9uKQotCi0KLWRlZiBmaW5kX2FuZF9maXhfZGVzY3JpcHRvcnMoZG9jLCBjb250YWluZXIpOgotICAgIGNoaWxkcmVuID0gY29udGFpbmVyLmNoaWxkTm9kZXMKLSAgICBmb3IgY2hpbGQgaW4gY2hpbGRyZW46Ci0gICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IEVMRU1FTlQ6Ci0gICAgICAgICAgICB0YWdOYW1lID0gY2hpbGQudGFnTmFtZQotICAgICAgICAgICAgaWYgdGFnTmFtZSBpbiBERVNDUklQVE9SX0VMRU1FTlRTOgotICAgICAgICAgICAgICAgIHJld3JpdGVfZGVzY3JpcHRvcihkb2MsIGNoaWxkKQotICAgICAgICAgICAgZWxpZiB0YWdOYW1lID09ICJzdWJzZWN0aW9uIjoKLSAgICAgICAgICAgICAgICBmaW5kX2FuZF9maXhfZGVzY3JpcHRvcnMoZG9jLCBjaGlsZCkKLQotCi1kZWYgcmV3cml0ZV9kZXNjcmlwdG9yKGRvYywgZGVzY3JpcHRvcik6Ci0gICAgIwotICAgICMgRG8gdGhlc2UgdGhpbmdzOgotICAgICMgICAxLiBBZGQgYW4gImluZGV4PSdubyciIGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudCBpZiB0aGUgdGFnTmFtZQotICAgICMgICAgICBlbmRzIGluICduaScsIHJlbW92aW5nIHRoZSAnbmknIGZyb20gdGhlIG5hbWUuCi0gICAgIyAgIDIuIENyZWF0ZSBhIDxzaWduYXR1cmU+IGZyb20gdGhlIG5hbWUgYXR0cmlidXRlCi0gICAgIyAgIDJhLkNyZWF0ZSBhbiA8YXJncz4gaWYgaXQgYXBwZWFycyB0byBiZSBhdmFpbGFibGUuCi0gICAgIyAgIDMuIENyZWF0ZSBhZGRpdGlvbmFsIDxzaWduYXR1cmU+cyBmcm9tIDwqbGluZXssbml9PiBlbGVtZW50cywKLSAgICAjICAgICAgaWYgZm91bmQuCi0gICAgIyAgIDQuIElmIGEgPHZlcnNpb25hZGRlZD4gaXMgZm91bmQsIG1vdmUgaXQgdG8gYW4gYXR0cmlidXRlIG9uIHRoZQotICAgICMgICAgICBkZXNjcmlwdG9yLgotICAgICMgICA1LiBNb3ZlIHJlbWFpbmluZyBjaGlsZCBub2RlcyB0byBhIDxkZXNjcmlwdGlvbj4gZWxlbWVudC4KLSAgICAjICAgNi4gUHV0IGl0IGJhY2sgdG9nZXRoZXIuCi0gICAgIwotICAgICMgMS4KLSAgICBkZXNjbmFtZSA9IGRlc2NyaXB0b3IudGFnTmFtZQotICAgIGluZGV4ID0gMQotICAgIGlmIGRlc2NuYW1lWy0yOl0gPT0gIm5pIjoKLSAgICAgICAgZGVzY25hbWUgPSBkZXNjbmFtZVs6LTJdCi0gICAgICAgIGRlc2NyaXB0b3Iuc2V0QXR0cmlidXRlKCJpbmRleCIsICJubyIpCi0gICAgICAgIHNldF90YWdOYW1lKGRlc2NyaXB0b3IsIGRlc2NuYW1lKQotICAgICAgICBpbmRleCA9IDAKLSAgICBkZXNjdHlwZSA9IGRlc2NuYW1lWzotNF0gIyByZW1vdmUgJ2Rlc2MnCi0gICAgbGluZW5hbWUgPSBkZXNjdHlwZSArICJsaW5lIgotICAgIGlmIG5vdCBpbmRleDoKLSAgICAgICAgbGluZW5hbWUgPSBsaW5lbmFtZSArICJuaSIKLSAgICAjIDIuCi0gICAgc2lnbmF0dXJlID0gZG9jLmNyZWF0ZUVsZW1lbnQoInNpZ25hdHVyZSIpCi0gICAgbmFtZSA9IGRvYy5jcmVhdGVFbGVtZW50KCJuYW1lIikKLSAgICBzaWduYXR1cmUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgICAiKSkKLSAgICBzaWduYXR1cmUuYXBwZW5kQ2hpbGQobmFtZSkKLSAgICBuYW1lLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZShkZXNjcmlwdG9yLmdldEF0dHJpYnV0ZSgibmFtZSIpKSkKLSAgICBkZXNjcmlwdG9yLnJlbW92ZUF0dHJpYnV0ZSgibmFtZSIpCi0gICAgIyAyYS4KLSAgICBpZiBkZXNjcmlwdG9yLmhhc0F0dHJpYnV0ZSgidmFyIik6Ci0gICAgICAgIGlmIGRlc2NuYW1lICE9ICJvcGNvZGVkZXNjIjoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgXAotICAgICAgICAgICAgICAgICAgImdvdCAndmFyJyBhdHRyaWJ1dGUgb24gZGVzY3JpcHRvciBvdGhlciB0aGFuIG9wY29kZWRlc2MiCi0gICAgICAgIHZhcmlhYmxlID0gZGVzY3JpcHRvci5nZXRBdHRyaWJ1dGUoInZhciIpCi0gICAgICAgIGlmIHZhcmlhYmxlOgotICAgICAgICAgICAgYXJncyA9IGRvYy5jcmVhdGVFbGVtZW50KCJhcmdzIikKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHZhcmlhYmxlKSkKLSAgICAgICAgICAgIHNpZ25hdHVyZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuICAgICIpKQotICAgICAgICAgICAgc2lnbmF0dXJlLmFwcGVuZENoaWxkKGFyZ3MpCi0gICAgICAgIGRlc2NyaXB0b3IucmVtb3ZlQXR0cmlidXRlKCJ2YXIiKQotICAgIG5ld2NoaWxkcmVuID0gW3NpZ25hdHVyZV0KLSAgICBjaGlsZHJlbiA9IGRlc2NyaXB0b3IuY2hpbGROb2RlcwotICAgIHBvcyA9IHNraXBfbGVhZGluZ19ub2RlcyhjaGlsZHJlbikKLSAgICBpZiBwb3MgPCBsZW4oY2hpbGRyZW4pOgotICAgICAgICBjaGlsZCA9IGNoaWxkcmVuW3Bvc10KLSAgICAgICAgaWYgY2hpbGQubm9kZU5hbWUgPT0gImFyZ3MiOgotICAgICAgICAgICAgIyBtb3ZlIDxhcmdzPiB0byA8c2lnbmF0dXJlPiwgb3IgcmVtb3ZlIGlmIGVtcHR5OgotICAgICAgICAgICAgY2hpbGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjaGlsZCkKLSAgICAgICAgICAgIGlmIGxlbihjaGlsZC5jaGlsZE5vZGVzKToKLSAgICAgICAgICAgICAgICBzaWduYXR1cmUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgICAiKSkKLSAgICAgICAgICAgICAgICBzaWduYXR1cmUuYXBwZW5kQ2hpbGQoY2hpbGQpCi0gICAgc2lnbmF0dXJlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICIpKQotICAgICMgMywgNC4KLSAgICBwb3MgPSBza2lwX2xlYWRpbmdfbm9kZXMoY2hpbGRyZW4sIHBvcykKLSAgICB3aGlsZSBwb3MgPCBsZW4oY2hpbGRyZW4pIFwKLSAgICAgICAgICBhbmQgY2hpbGRyZW5bcG9zXS5ub2RlTmFtZSBpbiAobGluZW5hbWUsICJ2ZXJzaW9uYWRkZWQiKToKLSAgICAgICAgaWYgY2hpbGRyZW5bcG9zXS50YWdOYW1lID09IGxpbmVuYW1lOgotICAgICAgICAgICAgIyB0aGlzIGlzIHJlYWxseSBhIHN1cHBsZW1lbnRhbCBzaWduYXR1cmUsIGNyZWF0ZSA8c2lnbmF0dXJlPgotICAgICAgICAgICAgb2xkY2hpbGQgPSBjaGlsZHJlbltwb3NdLmNsb25lTm9kZSgxKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNpZyA9IG1ldGhvZGxpbmVfdG9fc2lnbmF0dXJlKGRvYywgY2hpbGRyZW5bcG9zXSkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBwcmludCBvbGRjaGlsZC50b3htbCgpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIG5ld2NoaWxkcmVuLmFwcGVuZChzaWcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIDx2ZXJzaW9uYWRkZWQgYWRkZWQ9Li4uPgotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRBdHRyaWJ1dGUoCi0gICAgICAgICAgICAgICAgImFkZGVkIiwgY2hpbGRyZW5bcG9zXS5nZXRBdHRyaWJ1dGUoInZlcnNpb24iKSkKLSAgICAgICAgcG9zID0gc2tpcF9sZWFkaW5nX25vZGVzKGNoaWxkcmVuLCBwb3MgKyAxKQotICAgICMgNS4KLSAgICBkZXNjcmlwdGlvbiA9IGRvYy5jcmVhdGVFbGVtZW50KCJkZXNjcmlwdGlvbiIpCi0gICAgZGVzY3JpcHRpb24uYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKQotICAgIG5ld2NoaWxkcmVuLmFwcGVuZChkZXNjcmlwdGlvbikKLSAgICBtb3ZlX2NoaWxkcmVuKGRlc2NyaXB0b3IsIGRlc2NyaXB0aW9uLCBwb3MpCi0gICAgbGFzdCA9IGRlc2NyaXB0aW9uLmNoaWxkTm9kZXNbLTFdCi0gICAgaWYgbGFzdC5ub2RlVHlwZSA9PSBURVhUOgotICAgICAgICBsYXN0LmRhdGEgPSBzdHJpbmcucnN0cmlwKGxhc3QuZGF0YSkgKyAiXG4gICIKLSAgICAjIDYuCi0gICAgIyBzaG91bGQgaGF2ZSBub3RoaW5nIGJ1dCB3aGl0ZXNwYWNlIGFuZCBzaWduYXR1cmUgbGluZXMgaW4gPGRlc2NyaXB0b3I+OwotICAgICMgZGlzY2FyZCB0aGVtCi0gICAgd2hpbGUgZGVzY3JpcHRvci5jaGlsZE5vZGVzOgotICAgICAgICBkZXNjcmlwdG9yLnJlbW92ZUNoaWxkKGRlc2NyaXB0b3IuY2hpbGROb2Rlc1swXSkKLSAgICBmb3Igbm9kZSBpbiBuZXdjaGlsZHJlbjoKLSAgICAgICAgZGVzY3JpcHRvci5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuICAiKSkKLSAgICAgICAgZGVzY3JpcHRvci5hcHBlbmRDaGlsZChub2RlKQotICAgIGRlc2NyaXB0b3IuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKQotCi0KLWRlZiBtZXRob2RsaW5lX3RvX3NpZ25hdHVyZShkb2MsIG1ldGhvZGxpbmUpOgotICAgIHNpZ25hdHVyZSA9IGRvYy5jcmVhdGVFbGVtZW50KCJzaWduYXR1cmUiKQotICAgIHNpZ25hdHVyZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuICAgICIpKQotICAgIG5hbWUgPSBkb2MuY3JlYXRlRWxlbWVudCgibmFtZSIpCi0gICAgbmFtZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUobWV0aG9kbGluZS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSkpCi0gICAgbWV0aG9kbGluZS5yZW1vdmVBdHRyaWJ1dGUoIm5hbWUiKQotICAgIHNpZ25hdHVyZS5hcHBlbmRDaGlsZChuYW1lKQotICAgIGlmIGxlbihtZXRob2RsaW5lLmNoaWxkTm9kZXMpOgotICAgICAgICBhcmdzID0gZG9jLmNyZWF0ZUVsZW1lbnQoImFyZ3MiKQotICAgICAgICBzaWduYXR1cmUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgICAiKSkKLSAgICAgICAgc2lnbmF0dXJlLmFwcGVuZENoaWxkKGFyZ3MpCi0gICAgICAgIG1vdmVfY2hpbGRyZW4obWV0aG9kbGluZSwgYXJncykKLSAgICBzaWduYXR1cmUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgIikpCi0gICAgcmV0dXJuIHNpZ25hdHVyZQotCi0KLWRlZiBtb3ZlX2NoaWxkcmVuKG9yaWdpbiwgZGVzdCwgc3RhcnQ9MCk6Ci0gICAgY2hpbGRyZW4gPSBvcmlnaW4uY2hpbGROb2RlcwotICAgIHdoaWxlIHN0YXJ0IDwgbGVuKGNoaWxkcmVuKToKLSAgICAgICAgbm9kZSA9IGNoaWxkcmVuW3N0YXJ0XQotICAgICAgICBvcmlnaW4ucmVtb3ZlQ2hpbGQobm9kZSkKLSAgICAgICAgZGVzdC5hcHBlbmRDaGlsZChub2RlKQotCi0KLWRlZiBoYW5kbGVfYXBwZW5kaXgoZG9jLCBmcmFnbWVudCk6Ci0gICAgIyBtdXN0IGJlIGNhbGxlZCBhZnRlciBzaW1wbGZ5KCkgaWYgZG9jdW1lbnQgaXMgbXVsdGktcm9vdGVkIHRvIGJlZ2luIHdpdGgKLSAgICBkb2NlbGVtID0gZ2V0X2RvY3VtZW50RWxlbWVudChmcmFnbWVudCkKLSAgICB0b3BsZXZlbCA9IGRvY2VsZW0udGFnTmFtZSA9PSAibWFudWFsIiBhbmQgImNoYXB0ZXIiIG9yICJzZWN0aW9uIgotICAgIGFwcGVuZGljZXMgPSAwCi0gICAgbm9kZXMgPSBbXQotICAgIGZvciBub2RlIGluIGRvY2VsZW0uY2hpbGROb2RlczoKLSAgICAgICAgaWYgYXBwZW5kaWNlczoKLSAgICAgICAgICAgIG5vZGVzLmFwcGVuZChub2RlKQotICAgICAgICBlbGlmIG5vZGUubm9kZVR5cGUgPT0gRUxFTUVOVDoKLSAgICAgICAgICAgIGFwcG5vZGVzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYXBwZW5kaXgiKQotICAgICAgICAgICAgaWYgYXBwbm9kZXM6Ci0gICAgICAgICAgICAgICAgYXBwZW5kaWNlcyA9IDEKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBhcHBub2Rlc1swXS5wYXJlbnROb2RlCi0gICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGFwcG5vZGVzWzBdKQotICAgICAgICAgICAgICAgIHBhcmVudC5ub3JtYWxpemUoKQotICAgIGlmIG5vZGVzOgotICAgICAgICBtYXAoZG9jZWxlbS5yZW1vdmVDaGlsZCwgbm9kZXMpCi0gICAgICAgIGRvY2VsZW0uYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcblxuXG4iKSkKLSAgICAgICAgYmFjayA9IGRvYy5jcmVhdGVFbGVtZW50KCJiYWNrLW1hdHRlciIpCi0gICAgICAgIGRvY2VsZW0uYXBwZW5kQ2hpbGQoYmFjaykKLSAgICAgICAgYmFjay5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpCi0gICAgICAgIHdoaWxlIG5vZGVzIGFuZCBub2Rlc1swXS5ub2RlVHlwZSA9PSBURVhUIFwKLSAgICAgICAgICAgICAgYW5kIG5vdCBzdHJpbmcuc3RyaXAobm9kZXNbMF0uZGF0YSk6Ci0gICAgICAgICAgICBkZWwgbm9kZXNbMF0KLSAgICAgICAgbWFwKGJhY2suYXBwZW5kQ2hpbGQsIG5vZGVzKQotICAgICAgICBkb2NlbGVtLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSkKLQotCi1kZWYgaGFuZGxlX2xhYmVscyhkb2MsIGZyYWdtZW50KToKLSAgICBmb3IgbGFiZWwgaW4gZmluZF9hbGxfZWxlbWVudHMoZnJhZ21lbnQsICJsYWJlbCIpOgotICAgICAgICBpZCA9IGxhYmVsLmdldEF0dHJpYnV0ZSgiaWQiKQotICAgICAgICBpZiBub3QgaWQ6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBwYXJlbnQgPSBsYWJlbC5wYXJlbnROb2RlCi0gICAgICAgIHBhcmVudFRhZ05hbWUgPSBwYXJlbnQudGFnTmFtZQotICAgICAgICBpZiBwYXJlbnRUYWdOYW1lID09ICJ0aXRsZSI6Ci0gICAgICAgICAgICBwYXJlbnQucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImlkIiwgaWQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXJlbnQuc2V0QXR0cmlidXRlKCJpZCIsIGlkKQotICAgICAgICAjIG5vdywgcmVtb3ZlIDxsYWJlbCBpZD0iLi4uIi8+IGZyb20gcGFyZW50OgotICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGFiZWwpCi0gICAgICAgIGlmIHBhcmVudFRhZ05hbWUgPT0gInRpdGxlIjoKLSAgICAgICAgICAgIHBhcmVudC5ub3JtYWxpemUoKQotICAgICAgICAgICAgY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGROb2RlcwotICAgICAgICAgICAgaWYgY2hpbGRyZW5bLTFdLm5vZGVUeXBlID09IFRFWFQ6Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW5bLTFdLmRhdGEgPSBzdHJpbmcucnN0cmlwKGNoaWxkcmVuWy0xXS5kYXRhKQotCi0KLWRlZiBmaXh1cF90cmFpbGluZ193aGl0ZXNwYWNlKGRvYywgd3NtYXApOgotICAgIHF1ZXVlID0gW2RvY10KLSAgICB3aGlsZSBxdWV1ZToKLSAgICAgICAgbm9kZSA9IHF1ZXVlWzBdCi0gICAgICAgIGRlbCBxdWV1ZVswXQotICAgICAgICBpZiB3c21hcC5oYXNfa2V5KG5vZGUubm9kZU5hbWUpOgotICAgICAgICAgICAgd3MgPSB3c21hcFtub2RlLnRhZ05hbWVdCi0gICAgICAgICAgICBjaGlsZHJlbiA9IG5vZGUuY2hpbGROb2RlcwotICAgICAgICAgICAgY2hpbGRyZW4ucmV2ZXJzZSgpCi0gICAgICAgICAgICBpZiBjaGlsZHJlblswXS5ub2RlVHlwZSA9PSBURVhUOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzdHJpbmcucnN0cmlwKGNoaWxkcmVuWzBdLmRhdGEpICsgd3MKLSAgICAgICAgICAgICAgICBjaGlsZHJlblswXS5kYXRhID0gZGF0YQotICAgICAgICAgICAgY2hpbGRyZW4ucmV2ZXJzZSgpCi0gICAgICAgICAgICAjIGhhY2sgdG8gZ2V0IHRoZSB0aXRsZSBpbiBwbGFjZToKLSAgICAgICAgICAgIGlmIG5vZGUudGFnTmFtZSA9PSAidGl0bGUiIFwKLSAgICAgICAgICAgICAgIGFuZCBub2RlLnBhcmVudE5vZGUuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PSBFTEVNRU5UOgotICAgICAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZG9jLmNyZWF0ZVRleHQoIlxuICAiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5maXJzdENoaWxkKQotICAgICAgICBmb3IgY2hpbGQgaW4gbm9kZS5jaGlsZE5vZGVzOgotICAgICAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gRUxFTUVOVDoKLSAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoY2hpbGQpCi0KLQotZGVmIG5vcm1hbGl6ZShkb2MpOgotICAgIGZvciBub2RlIGluIGRvYy5jaGlsZE5vZGVzOgotICAgICAgICBpZiBub2RlLm5vZGVUeXBlID09IEVMRU1FTlQ6Ci0gICAgICAgICAgICBub2RlLm5vcm1hbGl6ZSgpCi0KLQotZGVmIGNsZWFudXBfdHJhaWxpbmdfcGFyZW5zKGRvYywgZWxlbWVudF9uYW1lcyk6Ci0gICAgZCA9IHt9Ci0gICAgZm9yIGdpIGluIGVsZW1lbnRfbmFtZXM6Ci0gICAgICAgIGRbZ2ldID0gZ2kKLSAgICByZXdyaXRlX2VsZW1lbnQgPSBkLmhhc19rZXkKLSAgICBxdWV1ZSA9IFtdCi0gICAgZm9yIG5vZGUgaW4gZG9jLmNoaWxkTm9kZXM6Ci0gICAgICAgIGlmIG5vZGUubm9kZVR5cGUgPT0gRUxFTUVOVDoKLSAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChub2RlKQotICAgIHdoaWxlIHF1ZXVlOgotICAgICAgICBub2RlID0gcXVldWVbMF0KLSAgICAgICAgZGVsIHF1ZXVlWzBdCi0gICAgICAgIGlmIHJld3JpdGVfZWxlbWVudChub2RlLnRhZ05hbWUpOgotICAgICAgICAgICAgY2hpbGRyZW4gPSBub2RlLmNoaWxkTm9kZXMKLSAgICAgICAgICAgIGlmIGxlbihjaGlsZHJlbikgPT0gMSBcCi0gICAgICAgICAgICAgICBhbmQgY2hpbGRyZW5bMF0ubm9kZVR5cGUgPT0gVEVYVDoKLSAgICAgICAgICAgICAgICBkYXRhID0gY2hpbGRyZW5bMF0uZGF0YQotICAgICAgICAgICAgICAgIGlmIGRhdGFbLTI6XSA9PSAiKCkiOgotICAgICAgICAgICAgICAgICAgICBjaGlsZHJlblswXS5kYXRhID0gZGF0YVs6LTJdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgY2hpbGQgaW4gbm9kZS5jaGlsZE5vZGVzOgotICAgICAgICAgICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IEVMRU1FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChjaGlsZCkKLQotCi1kZWYgY29udGVudHNfbWF0Y2gobGVmdCwgcmlnaHQpOgotICAgIGxlZnRfY2hpbGRyZW4gPSBsZWZ0LmNoaWxkTm9kZXMKLSAgICByaWdodF9jaGlsZHJlbiA9IHJpZ2h0LmNoaWxkTm9kZXMKLSAgICBpZiBsZW4obGVmdF9jaGlsZHJlbikgIT0gbGVuKHJpZ2h0X2NoaWxkcmVuKToKLSAgICAgICAgcmV0dXJuIDAKLSAgICBmb3IgbCwgciBpbiBtYXAoTm9uZSwgbGVmdF9jaGlsZHJlbiwgcmlnaHRfY2hpbGRyZW4pOgotICAgICAgICBub2RlVHlwZSA9IGwubm9kZVR5cGUKLSAgICAgICAgaWYgbm9kZVR5cGUgIT0gci5ub2RlVHlwZToKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGlmIG5vZGVUeXBlID09IEVMRU1FTlQ6Ci0gICAgICAgICAgICBpZiBsLnRhZ05hbWUgIT0gci50YWdOYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAgICAjIHNob3VsZCBjaGVjayBhdHRyaWJ1dGVzLCBidXQgdGhhdCdzIG5vdCBhIHByb2JsZW0gaGVyZQotICAgICAgICAgICAgaWYgbm90IGNvbnRlbnRzX21hdGNoKGwsIHIpOgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsaWYgbm9kZVR5cGUgPT0gVEVYVDoKLSAgICAgICAgICAgIGlmIGwuZGF0YSAhPSByLmRhdGE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgbm90IHF1aXRlIHJpZ2h0LCBidXQgZ29vZCBlbm91Z2gKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgcmV0dXJuIDEKLQotCi1kZWYgY3JlYXRlX21vZHVsZV9pbmZvKGRvYywgc2VjdGlvbik6Ci0gICAgIyBIZWF2eS4KLSAgICBub2RlID0gZXh0cmFjdF9maXJzdF9lbGVtZW50KHNlY3Rpb24sICJtb2R1bGVzeW5vcHNpcyIpCi0gICAgaWYgbm9kZSBpcyBOb25lOgotICAgICAgICByZXR1cm4KLSAgICBzZXRfdGFnTmFtZShub2RlLCAic3lub3BzaXMiKQotICAgIGxhc3RjaGlsZCA9IG5vZGUuY2hpbGROb2Rlc1stMV0KLSAgICBpZiBsYXN0Y2hpbGQubm9kZVR5cGUgPT0gVEVYVCBcCi0gICAgICAgYW5kIGxhc3RjaGlsZC5kYXRhWy0xOl0gPT0gIi4iOgotICAgICAgICBsYXN0Y2hpbGQuZGF0YSA9IGxhc3RjaGlsZC5kYXRhWzotMV0KLSAgICBtb2RhdXRob3IgPSBleHRyYWN0X2ZpcnN0X2VsZW1lbnQoc2VjdGlvbiwgIm1vZHVsZWF1dGhvciIpCi0gICAgaWYgbW9kYXV0aG9yOgotICAgICAgICBzZXRfdGFnTmFtZShtb2RhdXRob3IsICJhdXRob3IiKQotICAgICAgICBtb2RhdXRob3IuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKAotICAgICAgICAgICAgbW9kYXV0aG9yLmdldEF0dHJpYnV0ZSgibmFtZSIpKSkKLSAgICAgICAgbW9kYXV0aG9yLnJlbW92ZUF0dHJpYnV0ZSgibmFtZSIpCi0gICAgcGxhdGZvcm0gPSBleHRyYWN0X2ZpcnN0X2VsZW1lbnQoc2VjdGlvbiwgInBsYXRmb3JtIikKLSAgICBpZiBzZWN0aW9uLnRhZ05hbWUgPT0gInNlY3Rpb24iOgotICAgICAgICBtb2RpbmZvX3BvcyA9IDIKLSAgICAgICAgbW9kaW5mbyA9IGRvYy5jcmVhdGVFbGVtZW50KCJtb2R1bGVpbmZvIikKLSAgICAgICAgbW9kZGVjbCA9IGV4dHJhY3RfZmlyc3RfZWxlbWVudChzZWN0aW9uLCAiZGVjbGFyZW1vZHVsZSIpCi0gICAgICAgIG5hbWUgPSBOb25lCi0gICAgICAgIGlmIG1vZGRlY2w6Ci0gICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIikpCi0gICAgICAgICAgICBuYW1lID0gbW9kZGVjbC5hdHRyaWJ1dGVzWyJuYW1lIl0udmFsdWUKLSAgICAgICAgICAgIG5hbWVub2RlID0gZG9jLmNyZWF0ZUVsZW1lbnQoIm5hbWUiKQotICAgICAgICAgICAgbmFtZW5vZGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKG5hbWUpKQotICAgICAgICAgICAgbW9kaW5mby5hcHBlbmRDaGlsZChuYW1lbm9kZSkKLSAgICAgICAgICAgIHR5cGUgPSBtb2RkZWNsLmF0dHJpYnV0ZXMuZ2V0KCJ0eXBlIikKLSAgICAgICAgICAgIGlmIHR5cGU6Ci0gICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUudmFsdWUKLSAgICAgICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIikpCi0gICAgICAgICAgICAgICAgdHlwZW5vZGUgPSBkb2MuY3JlYXRlRWxlbWVudCgidHlwZSIpCi0gICAgICAgICAgICAgICAgdHlwZW5vZGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHR5cGUpKQotICAgICAgICAgICAgICAgIG1vZGluZm8uYXBwZW5kQ2hpbGQodHlwZW5vZGUpCi0gICAgICAgIHZlcnNpb25hZGRlZCA9IGV4dHJhY3RfZmlyc3RfZWxlbWVudChzZWN0aW9uLCAidmVyc2lvbmFkZGVkIikKLSAgICAgICAgaWYgdmVyc2lvbmFkZGVkOgotICAgICAgICAgICAgbW9kaW5mby5zZXRBdHRyaWJ1dGUoImFkZGVkIiwgdmVyc2lvbmFkZGVkLmdldEF0dHJpYnV0ZSgidmVyc2lvbiIpKQotICAgICAgICB0aXRsZSA9IGdldF9maXJzdF9lbGVtZW50KHNlY3Rpb24sICJ0aXRsZSIpCi0gICAgICAgIGlmIHRpdGxlOgotICAgICAgICAgICAgY2hpbGRyZW4gPSB0aXRsZS5jaGlsZE5vZGVzCi0gICAgICAgICAgICBpZiBsZW4oY2hpbGRyZW4pID49IDIgXAotICAgICAgICAgICAgICAgYW5kIGNoaWxkcmVuWzBdLm5vZGVOYW1lID09ICJtb2R1bGUiIFwKLSAgICAgICAgICAgICAgIGFuZCBjaGlsZHJlblswXS5jaGlsZE5vZGVzWzBdLmRhdGEgPT0gbmFtZToKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgaXQ7IG1vcnBoIHRoZSA8dGl0bGU+IGludG8gPHNob3J0LXN5bm9wc2lzPgotICAgICAgICAgICAgICAgIGZpcnN0X2RhdGEgPSBjaGlsZHJlblsxXQotICAgICAgICAgICAgICAgIGlmIGZpcnN0X2RhdGEuZGF0YVs6NF0gPT0gIiAtLS0iOgotICAgICAgICAgICAgICAgICAgICBmaXJzdF9kYXRhLmRhdGEgPSBzdHJpbmcubHN0cmlwKGZpcnN0X2RhdGEuZGF0YVs0Ol0pCi0gICAgICAgICAgICAgICAgc2V0X3RhZ05hbWUodGl0bGUsICJzaG9ydC1zeW5vcHNpcyIpCi0gICAgICAgICAgICAgICAgaWYgY2hpbGRyZW5bLTFdLm5vZGVUeXBlID09IFRFWFQgXAotICAgICAgICAgICAgICAgICAgIGFuZCBjaGlsZHJlblstMV0uZGF0YVstMTpdID09ICIuIjoKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5bLTFdLmRhdGEgPSBjaGlsZHJlblstMV0uZGF0YVs6LTFdCi0gICAgICAgICAgICAgICAgc2VjdGlvbi5yZW1vdmVDaGlsZCh0aXRsZSkKLSAgICAgICAgICAgICAgICBzZWN0aW9uLnJlbW92ZUNoaWxkKHNlY3Rpb24uY2hpbGROb2Rlc1swXSkKLSAgICAgICAgICAgICAgICB0aXRsZS5yZW1vdmVDaGlsZChjaGlsZHJlblswXSkKLSAgICAgICAgICAgICAgICBtb2RpbmZvX3BvcyA9IDAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXdyaXRlKCJtb2R1bGUgbmFtZSBpbiB0aXRsZSBkb2Vzbid0IG1hdGNoIgotICAgICAgICAgICAgICAgICAgICAgICAiIDxkZWNsYXJlbW9kdWxlLz47IG5vIDxzaG9ydC1zeW5vcHNpcy8+XG4iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXdyaXRlKCJVbmV4cGVjdGVkIGNvbmRpdGlvbjogPHNlY3Rpb24vPiB3aXRob3V0IDx0aXRsZS8+XG4iKQotICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIikpCi0gICAgICAgIG1vZGluZm8uYXBwZW5kQ2hpbGQobm9kZSkKLSAgICAgICAgaWYgdGl0bGUgYW5kIG5vdCBjb250ZW50c19tYXRjaCh0aXRsZSwgbm9kZSk6Ci0gICAgICAgICAgICAjIFRoZSBzaG9ydCBzeW5vcHNpcyBpcyBhY3R1YWxseSBkaWZmZXJlbnQsCi0gICAgICAgICAgICAjIGFuZCBuZWVkcyB0byBiZSBzdG9yZWQ6Ci0gICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIikpCi0gICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKHRpdGxlKQotICAgICAgICBpZiBtb2RhdXRob3I6Ci0gICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIikpCi0gICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKG1vZGF1dGhvcikKLSAgICAgICAgaWYgcGxhdGZvcm06Ci0gICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIikpCi0gICAgICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKHBsYXRmb3JtKQotICAgICAgICBtb2RpbmZvLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICIpKQotICAgICAgICBzZWN0aW9uLmluc2VydEJlZm9yZShtb2RpbmZvLCBzZWN0aW9uLmNoaWxkTm9kZXNbbW9kaW5mb19wb3NdKQotICAgICAgICBzZWN0aW9uLmluc2VydEJlZm9yZShkb2MuY3JlYXRlVGV4dE5vZGUoIlxuICAiKSwgbW9kaW5mbykKLSAgICAgICAgIwotICAgICAgICAjIFRoZSByZXN0IG9mIHRoaXMgcmVtb3ZlcyBleHRyYSBuZXdsaW5lcyBmcm9tIHdoZXJlIHdlIGN1dCBvdXQKLSAgICAgICAgIyBhIGxvdCBvZiBlbGVtZW50cy4gIEEgbG90IG9mIGNvZGUgZm9yIG1pbmltYWwgdmFsdWUsIGJ1dCBrZWVwcwotICAgICAgICAjIGtlZXBzIHRoZSBnZW5lcmF0ZWQgKk1MIGZyb20gYmVpbmcgdG9vIGZ1bm55IGxvb2tpbmcuCi0gICAgICAgICMKLSAgICAgICAgc2VjdGlvbi5ub3JtYWxpemUoKQotICAgICAgICBjaGlsZHJlbiA9IHNlY3Rpb24uY2hpbGROb2RlcwotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY2hpbGRyZW4pKToKLSAgICAgICAgICAgIG5vZGUgPSBjaGlsZHJlbltpXQotICAgICAgICAgICAgaWYgbm9kZS5ub2RlTmFtZSA9PSAibW9kdWxlaW5mbyI6Ci0gICAgICAgICAgICAgICAgbmV4dG5vZGUgPSBjaGlsZHJlbltpKzFdCi0gICAgICAgICAgICAgICAgaWYgbmV4dG5vZGUubm9kZVR5cGUgPT0gVEVYVDoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG5leHRub2RlLmRhdGEKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHN0cmluZy5sc3RyaXAoZGF0YSkpIDwgKGxlbihkYXRhKSAtIDQpOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dG5vZGUuZGF0YSA9ICJcblxuXG4iICsgc3RyaW5nLmxzdHJpcChkYXRhKQotCi0KLWRlZiBjbGVhbnVwX3N5bm9wc2VzKGRvYywgZnJhZ21lbnQpOgotICAgIGZvciBub2RlIGluIGZpbmRfYWxsX2VsZW1lbnRzKGZyYWdtZW50LCAic2VjdGlvbiIpOgotICAgICAgICBjcmVhdGVfbW9kdWxlX2luZm8oZG9jLCBub2RlKQotCi0KLWRlZiBmaXh1cF90YWJsZV9zdHJ1Y3R1cmVzKGRvYywgZnJhZ21lbnQpOgotICAgIGZvciB0YWJsZSBpbiBmaW5kX2FsbF9lbGVtZW50cyhmcmFnbWVudCwgInRhYmxlIik6Ci0gICAgICAgIGZpeHVwX3RhYmxlKGRvYywgdGFibGUpCi0KLQotZGVmIGZpeHVwX3RhYmxlKGRvYywgdGFibGUpOgotICAgICMgY3JlYXRlIHRoZSB0YWJsZSBoZWFkCi0gICAgdGhlYWQgPSBkb2MuY3JlYXRlRWxlbWVudCgidGhlYWQiKQotICAgIHJvdyA9IGRvYy5jcmVhdGVFbGVtZW50KCJyb3ciKQotICAgIG1vdmVfZWxlbWVudHNfYnlfbmFtZShkb2MsIHRhYmxlLCByb3csICJlbnRyeSIpCi0gICAgdGhlYWQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgICAiKSkKLSAgICB0aGVhZC5hcHBlbmRDaGlsZChyb3cpCi0gICAgdGhlYWQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgICAiKSkKLSAgICAjIGNyZWF0ZSB0aGUgdGFibGUgYm9keQotICAgIHRib2R5ID0gZG9jLmNyZWF0ZUVsZW1lbnQoInRib2R5IikKLSAgICBwcmV2X3JvdyA9IE5vbmUKLSAgICBsYXN0X3dhc19obGluZSA9IDAKLSAgICBjaGlsZHJlbiA9IHRhYmxlLmNoaWxkTm9kZXMKLSAgICBmb3IgY2hpbGQgaW4gY2hpbGRyZW46Ci0gICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IEVMRU1FTlQ6Ci0gICAgICAgICAgICB0YWdOYW1lID0gY2hpbGQudGFnTmFtZQotICAgICAgICAgICAgaWYgdGFnTmFtZSA9PSAiaGxpbmUiIGFuZCBwcmV2X3JvdyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBwcmV2X3Jvdy5zZXRBdHRyaWJ1dGUoInJvd3NlcCIsICIxIikKLSAgICAgICAgICAgIGVsaWYgdGFnTmFtZSA9PSAicm93IjoKLSAgICAgICAgICAgICAgICBwcmV2X3JvdyA9IGNoaWxkCi0gICAgIyBzYXZlIHRoZSByb3dzOgotICAgIHRib2R5LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgIikpCi0gICAgbW92ZV9lbGVtZW50c19ieV9uYW1lKGRvYywgdGFibGUsIHRib2R5LCAicm93Iiwgc2VwPSJcbiAgICAiKQotICAgICMgYW5kIHRvc3MgdGhlIHJlc3Q6Ci0gICAgd2hpbGUgY2hpbGRyZW46Ci0gICAgICAgIGNoaWxkID0gY2hpbGRyZW5bMF0KLSAgICAgICAgbm9kZVR5cGUgPSBjaGlsZC5ub2RlVHlwZQotICAgICAgICBpZiBub2RlVHlwZSA9PSBURVhUOgotICAgICAgICAgICAgaWYgc3RyaW5nLnN0cmlwKGNoaWxkLmRhdGEpOgotICAgICAgICAgICAgICAgIHJhaXNlIENvbnZlcnNpb25FcnJvcigidW5leHBlY3RlZCBmcmVlIGRhdGEgaW4gPCVzPjogJXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHRhYmxlLnRhZ05hbWUsIGNoaWxkLmRhdGEpKQotICAgICAgICAgICAgdGFibGUucmVtb3ZlQ2hpbGQoY2hpbGQpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBub2RlVHlwZSA9PSBFTEVNRU5UOgotICAgICAgICAgICAgaWYgY2hpbGQudGFnTmFtZSAhPSAiaGxpbmUiOgotICAgICAgICAgICAgICAgIHJhaXNlIENvbnZlcnNpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgPCVzPiBpbiB0YWJsZSIgJSBjaGlsZC50YWdOYW1lKQotICAgICAgICAgICAgdGFibGUucmVtb3ZlQ2hpbGQoY2hpbGQpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICByYWlzZSBDb252ZXJzaW9uRXJyb3IoCi0gICAgICAgICAgICAidW5leHBlY3RlZCAlcyBub2RlIGluIHRhYmxlIiAlIGNoaWxkLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICAjIG5vdGhpbmcgbGVmdCBpbiB0aGUgPHRhYmxlPjsgYWRkIHRoZSA8dGhlYWQ+IGFuZCA8dGJvZHk+Ci0gICAgdGdyb3VwID0gZG9jLmNyZWF0ZUVsZW1lbnQoInRncm91cCIpCi0gICAgdGdyb3VwLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICIpKQotICAgIHRncm91cC5hcHBlbmRDaGlsZCh0aGVhZCkKLSAgICB0Z3JvdXAuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgIikpCi0gICAgdGdyb3VwLmFwcGVuZENoaWxkKHRib2R5KQotICAgIHRncm91cC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuICAiKSkKLSAgICB0YWJsZS5hcHBlbmRDaGlsZCh0Z3JvdXApCi0gICAgIyBub3cgbWFrZSB0aGUgPGVudHJ5PnMgbG9vayBuaWNlOgotICAgIGZvciByb3cgaW4gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInJvdyIpOgotICAgICAgICBmaXh1cF9yb3coZG9jLCByb3cpCi0KLQotZGVmIGZpeHVwX3Jvdyhkb2MsIHJvdyk6Ci0gICAgZW50cmllcyA9IFtdCi0gICAgbWFwKGVudHJpZXMuYXBwZW5kLCByb3cuY2hpbGROb2Rlc1sxOl0pCi0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgIHJvdy5pbnNlcnRCZWZvcmUoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgICAgICAgICIpLCBlbnRyeSkKLSMgICAgcm93LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgICAiKSkKLQotCi1kZWYgbW92ZV9lbGVtZW50c19ieV9uYW1lKGRvYywgc291cmNlLCBkZXN0LCBuYW1lLCBzZXA9Tm9uZSk6Ci0gICAgbm9kZXMgPSBbXQotICAgIGZvciBjaGlsZCBpbiBzb3VyY2UuY2hpbGROb2RlczoKLSAgICAgICAgaWYgY2hpbGQubm9kZU5hbWUgPT0gbmFtZToKLSAgICAgICAgICAgIG5vZGVzLmFwcGVuZChjaGlsZCkKLSAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgc291cmNlLnJlbW92ZUNoaWxkKG5vZGUpCi0gICAgICAgIGRlc3QuYXBwZW5kQ2hpbGQobm9kZSkKLSAgICAgICAgaWYgc2VwOgotICAgICAgICAgICAgZGVzdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoc2VwKSkKLQotCi1SRUNVUlNFX0lOVE9fUEFSQV9DT05UQUlORVJTID0gKAotICAgICJjaGFwdGVyIiwgImFic3RyYWN0IiwgImVudW1lcmF0ZSIsCi0gICAgInNlY3Rpb24iLCAic3Vic2VjdGlvbiIsICJzdWJzdWJzZWN0aW9uIiwKLSAgICAicGFyYWdyYXBoIiwgInN1YnBhcmFncmFwaCIsICJiYWNrLW1hdHRlciIsCi0gICAgImhvd3RvIiwgIm1hbnVhbCIsCi0gICAgIml0ZW0iLCAiaXRlbWl6ZSIsICJmdWxsbGluZWl0ZW1zIiwgImVudW1lcmF0aW9uIiwgImRlc2NyaXB0aW9ubGlzdCIsCi0gICAgImRlZmluaXRpb25saXN0IiwgImRlZmluaXRpb24iLAotICAgICkKLQotUEFSQV9MRVZFTF9FTEVNRU5UUyA9ICgKLSAgICAibW9kdWxlaW5mbyIsICJ0aXRsZSIsICJ2ZXJiYXRpbSIsICJlbnVtZXJhdGUiLCAiaXRlbSIsCi0gICAgImludGVycHJldGVyLXNlc3Npb24iLCAiYmFjay1tYXR0ZXIiLCAiaW50ZXJhY3RpdmUtc2Vzc2lvbiIsCi0gICAgIm9wY29kZWRlc2MiLCAiY2xhc3NkZXNjIiwgImRhdGFkZXNjIiwKLSAgICAiZnVuY2Rlc2MiLCAibWV0aG9kZGVzYyIsICJleGNkZXNjIiwgIm1lbWJlcmRlc2MiLCAibWVtYmRlcmRlc2NuaSIsCi0gICAgImZ1bmNkZXNjbmkiLCAibWV0aG9kZGVzY25pIiwgImV4Y2Rlc2NuaSIsCi0gICAgInRhYmxlaWkiLCAidGFibGVpaWkiLCAidGFibGVpdiIsICJsb2NhbG1vZHVsZXRhYmxlIiwKLSAgICAic2VjdGlvbmF1dGhvciIsICJzZWVhbHNvIiwgIml0ZW1pemUiLAotICAgICMgaW5jbHVkZSA8cGFyYT4sIHNvIHdlIGNhbiBqdXN0IGRvIGl0IGFnYWluIHRvIGdldCBzdWJzZXF1ZW50IHBhcmFzOgotICAgIFBBUkFfRUxFTUVOVCwKLSAgICApCi0KLVBBUkFfTEVWRUxfUFJFQ0VFREVSUyA9ICgKLSAgICAic2V0aW5kZXhzdWJpdGVtIiwgImF1dGhvciIsCi0gICAgInN0aW5kZXgiLCAib2JpbmRleCIsICJDT01NRU5UIiwgImxhYmVsIiwgImlucHV0IiwgInRpdGxlIiwKLSAgICAidmVyc2lvbmFkZGVkIiwgInZlcnNpb25jaGFuZ2VkIiwgImRlY2xhcmVtb2R1bGUiLCAibW9kdWxlc3lub3BzaXMiLAotICAgICJtb2R1bGVhdXRob3IiLCAiaW5kZXh0ZXJtIiwgImxlYWRlciIsCi0gICAgKQotCi0KLWRlZiBmaXh1cF9wYXJhcyhkb2MsIGZyYWdtZW50KToKLSAgICBmb3IgY2hpbGQgaW4gZnJhZ21lbnQuY2hpbGROb2RlczoKLSAgICAgICAgaWYgY2hpbGQubm9kZU5hbWUgaW4gUkVDVVJTRV9JTlRPX1BBUkFfQ09OVEFJTkVSUzoKLSAgICAgICAgICAgIGZpeHVwX3BhcmFzX2hlbHBlcihkb2MsIGNoaWxkKQotICAgIGRlc2NyaXB0aW9ucyA9IGZpbmRfYWxsX2VsZW1lbnRzKGZyYWdtZW50LCAiZGVzY3JpcHRpb24iKQotICAgIGZvciBkZXNjcmlwdGlvbiBpbiBkZXNjcmlwdGlvbnM6Ci0gICAgICAgIGZpeHVwX3BhcmFzX2hlbHBlcihkb2MsIGRlc2NyaXB0aW9uKQotCi0KLWRlZiBmaXh1cF9wYXJhc19oZWxwZXIoZG9jLCBjb250YWluZXIsIGRlcHRoPTApOgotICAgICMgZG9jdW1lbnQgaXMgYWxyZWFkeSBub3JtYWxpemVkCi0gICAgY2hpbGRyZW4gPSBjb250YWluZXIuY2hpbGROb2RlcwotICAgIHN0YXJ0ID0gc2tpcF9sZWFkaW5nX25vZGVzKGNoaWxkcmVuKQotICAgIHdoaWxlIGxlbihjaGlsZHJlbikgPiBzdGFydDoKLSAgICAgICAgaWYgY2hpbGRyZW5bc3RhcnRdLm5vZGVOYW1lIGluIFJFQ1VSU0VfSU5UT19QQVJBX0NPTlRBSU5FUlM6Ci0gICAgICAgICAgICAjIFNvbWV0aGluZyB0byByZWN1cnNlIGludG86Ci0gICAgICAgICAgICBmaXh1cF9wYXJhc19oZWxwZXIoZG9jLCBjaGlsZHJlbltzdGFydF0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFBhcmFncmFwaCBtYXRlcmlhbDoKLSAgICAgICAgICAgIGJ1aWxkX3BhcmEoZG9jLCBjb250YWluZXIsIHN0YXJ0LCBsZW4oY2hpbGRyZW4pKQotICAgICAgICAgICAgaWYgREVCVUdfUEFSQV9GSVhFUiBhbmQgZGVwdGggPT0gMTA6Ci0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgc3RhcnQgPSBza2lwX2xlYWRpbmdfbm9kZXMoY2hpbGRyZW4sIHN0YXJ0ICsgMSkKLQotCi1kZWYgYnVpbGRfcGFyYShkb2MsIHBhcmVudCwgc3RhcnQsIGkpOgotICAgIGNoaWxkcmVuID0gcGFyZW50LmNoaWxkTm9kZXMKLSAgICBhZnRlciA9IHN0YXJ0ICsgMQotICAgIGhhdmVfbGFzdCA9IDAKLSAgICBCUkVBS19FTEVNRU5UUyA9IFBBUkFfTEVWRUxfRUxFTUVOVFMgKyBSRUNVUlNFX0lOVE9fUEFSQV9DT05UQUlORVJTCi0gICAgIyBDb2xsZWN0IGFsbCBjaGlsZHJlbiB1bnRpbCBcblxuKyBpcyBmb3VuZCBpbiBhIHRleHQgbm9kZSBvciBhCi0gICAgIyBtZW1iZXIgb2YgQlJFQUtfRUxFTUVOVFMgaXMgZm91bmQuCi0gICAgZm9yIGogaW4gcmFuZ2Uoc3RhcnQsIGkpOgotICAgICAgICBhZnRlciA9IGogKyAxCi0gICAgICAgIGNoaWxkID0gY2hpbGRyZW5bal0KLSAgICAgICAgbm9kZVR5cGUgPSBjaGlsZC5ub2RlVHlwZQotICAgICAgICBpZiBub2RlVHlwZSA9PSBFTEVNRU5UOgotICAgICAgICAgICAgaWYgY2hpbGQudGFnTmFtZSBpbiBCUkVBS19FTEVNRU5UUzoKLSAgICAgICAgICAgICAgICBhZnRlciA9IGoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbGlmIG5vZGVUeXBlID09IFRFWFQ6Ci0gICAgICAgICAgICBwb3MgPSBzdHJpbmcuZmluZChjaGlsZC5kYXRhLCAiXG5cbiIpCi0gICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICBhZnRlciA9IGoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgcG9zID49IDE6Ci0gICAgICAgICAgICAgICAgY2hpbGQuc3BsaXRUZXh0KHBvcykKLSAgICAgICAgICAgICAgICBicmVhawotICAgIGVsc2U6Ci0gICAgICAgIGhhdmVfbGFzdCA9IDEKLSAgICBpZiAoc3RhcnQgKyAxKSA+IGFmdGVyOgotICAgICAgICByYWlzZSBDb252ZXJzaW9uRXJyb3IoCi0gICAgICAgICAgICAiYnVpbGRfcGFyYSgpIGNvdWxkIG5vdCBpZGVudGlmeSBjb250ZW50IHRvIHR1cm4gaW50byBhIHBhcmFncmFwaCIpCi0gICAgaWYgY2hpbGRyZW5bYWZ0ZXIgLSAxXS5ub2RlVHlwZSA9PSBURVhUOgotICAgICAgICAjIHdlIG1heSBuZWVkIHRvIHNwbGl0IG9mZiB0cmFpbGluZyB3aGl0ZSBzcGFjZToKLSAgICAgICAgY2hpbGQgPSBjaGlsZHJlblthZnRlciAtIDFdCi0gICAgICAgIGRhdGEgPSBjaGlsZC5kYXRhCi0gICAgICAgIGlmIHN0cmluZy5yc3RyaXAoZGF0YSkgIT0gZGF0YToKLSAgICAgICAgICAgIGhhdmVfbGFzdCA9IDAKLSAgICAgICAgICAgIGNoaWxkLnNwbGl0VGV4dChsZW4oc3RyaW5nLnJzdHJpcChkYXRhKSkpCi0gICAgcGFyYSA9IGRvYy5jcmVhdGVFbGVtZW50KFBBUkFfRUxFTUVOVCkKLSAgICBwcmV2ID0gTm9uZQotICAgIGluZGV4ZXMgPSByYW5nZShzdGFydCwgYWZ0ZXIpCi0gICAgaW5kZXhlcy5yZXZlcnNlKCkKLSAgICBmb3IgaiBpbiBpbmRleGVzOgotICAgICAgICBub2RlID0gcGFyZW50LmNoaWxkTm9kZXNbal0KLSAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKG5vZGUpCi0gICAgICAgIHBhcmEuaW5zZXJ0QmVmb3JlKG5vZGUsIHByZXYpCi0gICAgICAgIHByZXYgPSBub2RlCi0gICAgaWYgaGF2ZV9sYXN0OgotICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocGFyYSkKLSAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG5cbiIpKQotICAgICAgICByZXR1cm4gbGVuKHBhcmVudC5jaGlsZE5vZGVzKQotICAgIGVsc2U6Ci0gICAgICAgIG5leHRub2RlID0gcGFyZW50LmNoaWxkTm9kZXNbc3RhcnRdCi0gICAgICAgIGlmIG5leHRub2RlLm5vZGVUeXBlID09IFRFWFQ6Ci0gICAgICAgICAgICBpZiBuZXh0bm9kZS5kYXRhIGFuZCBuZXh0bm9kZS5kYXRhWzBdICE9ICJcbiI6Ci0gICAgICAgICAgICAgICAgbmV4dG5vZGUuZGF0YSA9ICJcbiIgKyBuZXh0bm9kZS5kYXRhCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuZXdub2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpCi0gICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5ld25vZGUsIG5leHRub2RlKQotICAgICAgICAgICAgbmV4dG5vZGUgPSBuZXdub2RlCi0gICAgICAgICAgICBzdGFydCA9IHN0YXJ0ICsgMQotICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHBhcmEsIG5leHRub2RlKQotICAgICAgICByZXR1cm4gc3RhcnQgKyAxCi0KLQotZGVmIHNraXBfbGVhZGluZ19ub2RlcyhjaGlsZHJlbiwgc3RhcnQ9MCk6Ci0gICAgIiIiUmV0dXJuIGluZGV4IGludG8gY2hpbGRyZW4gb2YgYSBub2RlIGF0IHdoaWNoIHBhcmFncmFwaCBidWlsZGluZyBzaG91bGQKLSAgICBiZWdpbiBvciBhIHJlY3Vyc2l2ZSBjYWxsIHRvIGZpeHVwX3BhcmFzX2hlbHBlcigpIHNob3VsZCBiZSBtYWRlIChmb3IKLSAgICBzdWJzZWN0aW9ucywgZXRjLikuCi0KLSAgICBXaGVuIHRoZSByZXR1cm4gdmFsdWUgPj0gbGVuKGNoaWxkcmVuKSwgd2UndmUgYnVpbHQgYWxsIHRoZSBwYXJhcyB3ZSBjYW4KLSAgICBmcm9tIHRoaXMgbGlzdCBvZiBjaGlsZHJlbi4KLSAgICAiIiIKLSAgICBpID0gbGVuKGNoaWxkcmVuKQotICAgIHdoaWxlIGkgPiBzdGFydDoKLSAgICAgICAgIyBza2lwIG92ZXIgbGVhZGluZyBjb21tZW50cyBhbmQgd2hpdGVzcGFjZToKLSAgICAgICAgY2hpbGQgPSBjaGlsZHJlbltzdGFydF0KLSAgICAgICAgbm9kZVR5cGUgPSBjaGlsZC5ub2RlVHlwZQotICAgICAgICBpZiBub2RlVHlwZSA9PSBURVhUOgotICAgICAgICAgICAgZGF0YSA9IGNoaWxkLmRhdGEKLSAgICAgICAgICAgIHNob3J0ZW5lZCA9IHN0cmluZy5sc3RyaXAoZGF0YSkKLSAgICAgICAgICAgIGlmIHNob3J0ZW5lZDoKLSAgICAgICAgICAgICAgICBpZiBkYXRhICE9IHNob3J0ZW5lZDoKLSAgICAgICAgICAgICAgICAgICAgIyBicmVhayBpbnRvIHR3byBub2Rlczogd2hpdGVzcGFjZSBhbmQgbm9uLXdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQuc3BsaXRUZXh0KGxlbihkYXRhKSAtIGxlbihzaG9ydGVuZWQpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgKyAxCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0Ci0gICAgICAgICAgICAjIGFsbCB3aGl0ZXNwYWNlLCBqdXN0IHNraXAKLSAgICAgICAgZWxpZiBub2RlVHlwZSA9PSBFTEVNRU5UOgotICAgICAgICAgICAgdGFnTmFtZSA9IGNoaWxkLnRhZ05hbWUKLSAgICAgICAgICAgIGlmIHRhZ05hbWUgaW4gUkVDVVJTRV9JTlRPX1BBUkFfQ09OVEFJTkVSUzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQKLSAgICAgICAgICAgIGlmIHRhZ05hbWUgbm90IGluIFBBUkFfTEVWRUxfRUxFTUVOVFMgKyBQQVJBX0xFVkVMX1BSRUNFRURFUlM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0Ci0gICAgICAgIHN0YXJ0ID0gc3RhcnQgKyAxCi0gICAgcmV0dXJuIHN0YXJ0Ci0KLQotZGVmIGZpeHVwX3JmY19yZWZlcmVuY2VzKGRvYywgZnJhZ21lbnQpOgotICAgIGZvciByZmNub2RlIGluIGZpbmRfYWxsX2VsZW1lbnRzKGZyYWdtZW50LCAicmZjIik6Ci0gICAgICAgIHJmY25vZGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKAotICAgICAgICAgICAgIlJGQyAiICsgcmZjbm9kZS5nZXRBdHRyaWJ1dGUoIm51bSIpKSkKLQotCi1kZWYgZml4dXBfc2lnbmF0dXJlcyhkb2MsIGZyYWdtZW50KToKLSAgICBmb3IgY2hpbGQgaW4gZnJhZ21lbnQuY2hpbGROb2RlczoKLSAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gRUxFTUVOVDoKLSAgICAgICAgICAgIGFyZ3MgPSBjaGlsZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYXJncyIpCi0gICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICAgICAgZml4dXBfYXJncyhkb2MsIGFyZykKLSAgICAgICAgICAgICAgICBhcmcubm9ybWFsaXplKCkKLSAgICAgICAgICAgIGFyZ3MgPSBjaGlsZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiY29uc3RydWN0b3ItYXJncyIpCi0gICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICAgICAgZml4dXBfYXJncyhkb2MsIGFyZykKLSAgICAgICAgICAgICAgICBhcmcubm9ybWFsaXplKCkKLQotCi1kZWYgZml4dXBfYXJncyhkb2MsIGFyZ2xpc3QpOgotICAgIGZvciBjaGlsZCBpbiBhcmdsaXN0LmNoaWxkTm9kZXM6Ci0gICAgICAgIGlmIGNoaWxkLm5vZGVOYW1lID09ICJvcHRpb25hbCI6Ci0gICAgICAgICAgICAjIGZvdW5kIGl0OyBmaXggYW5kIHJldHVybgotICAgICAgICAgICAgYXJnbGlzdC5pbnNlcnRCZWZvcmUoZG9jLmNyZWF0ZVRleHROb2RlKCJbIiksIGNoaWxkKQotICAgICAgICAgICAgb3B0a2lkcyA9IGNoaWxkLmNoaWxkTm9kZXMKLSAgICAgICAgICAgIHdoaWxlIG9wdGtpZHM6Ci0gICAgICAgICAgICAgICAgayA9IG9wdGtpZHNbMF0KLSAgICAgICAgICAgICAgICBjaGlsZC5yZW1vdmVDaGlsZChrKQotICAgICAgICAgICAgICAgIGFyZ2xpc3QuaW5zZXJ0QmVmb3JlKGssIGNoaWxkKQotICAgICAgICAgICAgYXJnbGlzdC5pbnNlcnRCZWZvcmUoZG9jLmNyZWF0ZVRleHROb2RlKCJdIiksIGNoaWxkKQotICAgICAgICAgICAgYXJnbGlzdC5yZW1vdmVDaGlsZChjaGlsZCkKLSAgICAgICAgICAgIHJldHVybiBmaXh1cF9hcmdzKGRvYywgYXJnbGlzdCkKLQotCi1kZWYgZml4dXBfc2VjdGlvbmF1dGhvcnMoZG9jLCBmcmFnbWVudCk6Ci0gICAgZm9yIHNlY3RhdXRoIGluIGZpbmRfYWxsX2VsZW1lbnRzKGZyYWdtZW50LCAic2VjdGlvbmF1dGhvciIpOgotICAgICAgICBzZWN0aW9uID0gc2VjdGF1dGgucGFyZW50Tm9kZQotICAgICAgICBzZWN0aW9uLnJlbW92ZUNoaWxkKHNlY3RhdXRoKQotICAgICAgICBzZXRfdGFnTmFtZShzZWN0YXV0aCwgImF1dGhvciIpCi0gICAgICAgIHNlY3RhdXRoLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgKLSAgICAgICAgICAgIHNlY3RhdXRoLmdldEF0dHJpYnV0ZSgibmFtZSIpKSkKLSAgICAgICAgc2VjdGF1dGgucmVtb3ZlQXR0cmlidXRlKCJuYW1lIikKLSAgICAgICAgYWZ0ZXIgPSBzZWN0aW9uLmNoaWxkTm9kZXNbMl0KLSAgICAgICAgdGl0bGUgPSBzZWN0aW9uLmNoaWxkTm9kZXNbMV0KLSAgICAgICAgaWYgdGl0bGUubm9kZU5hbWUgIT0gInRpdGxlIjoKLSAgICAgICAgICAgIGFmdGVyID0gc2VjdGlvbi5jaGlsZE5vZGVzWzBdCi0gICAgICAgIHNlY3Rpb24uaW5zZXJ0QmVmb3JlKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICIpLCBhZnRlcikKLSAgICAgICAgc2VjdGlvbi5pbnNlcnRCZWZvcmUoc2VjdGF1dGgsIGFmdGVyKQotCi0KLWRlZiBmaXh1cF92ZXJiYXRpbXMoZG9jKToKLSAgICBmb3IgdmVyYmF0aW0gaW4gZmluZF9hbGxfZWxlbWVudHMoZG9jLCAidmVyYmF0aW0iKToKLSAgICAgICAgY2hpbGQgPSB2ZXJiYXRpbS5jaGlsZE5vZGVzWzBdCi0gICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IFRFWFQgXAotICAgICAgICAgICBhbmQgc3RyaW5nLmxzdHJpcChjaGlsZC5kYXRhKVs6M10gPT0gIj4+PiI6Ci0gICAgICAgICAgICBzZXRfdGFnTmFtZSh2ZXJiYXRpbSwgImludGVyYWN0aXZlLXNlc3Npb24iKQotCi0KLWRlZiBhZGRfbm9kZV9pZHMoZnJhZ21lbnQsIGNvdW50ZXI9MCk6Ci0gICAgZnJhZ21lbnQubm9kZV9pZCA9IGNvdW50ZXIKLSAgICBmb3Igbm9kZSBpbiBmcmFnbWVudC5jaGlsZE5vZGVzOgotICAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKLSAgICAgICAgaWYgbm9kZS5ub2RlVHlwZSA9PSBFTEVNRU5UOgotICAgICAgICAgICAgY291bnRlciA9IGFkZF9ub2RlX2lkcyhub2RlLCBjb3VudGVyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbm9kZS5ub2RlX2lkID0gY291bnRlcgotICAgIHJldHVybiBjb3VudGVyICsgMQotCi0KLVJFRk1PRElOREVYX0VMRU1FTlRTID0gKCdyZWZtb2RpbmRleCcsICdyZWZiaW1vZGluZGV4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdyZWZleG1vZGluZGV4JywgJ3JlZnN0bW9kaW5kZXgnKQotCi1kZWYgZml4dXBfcmVmbW9kaW5kZXhlcyhmcmFnbWVudCk6Ci0gICAgIyBMb2NhdGUgPHJlZiptb2RpbmRleD4uLi48Lz4gY28tbG9jYXRlZCB3aXRoIDxtb2R1bGU+Li4uPC8+LCBhbmQKLSAgICAjIHJlbW92ZSB0aGUgPHJlZiptb2RpbmRleD4sIHJlcGxhY2luZyBpdCB3aXRoIGluZGV4PWluZGV4IG9uIHRoZQotICAgICMgPG1vZHVsZT4gZWxlbWVudC4KLSAgICBub2RlcyA9IGZpbmRfYWxsX2VsZW1lbnRzX2Zyb21fc2V0KGZyYWdtZW50LCBSRUZNT0RJTkRFWF9FTEVNRU5UUykKLSAgICBkID0ge30KLSAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlCi0gICAgICAgIGRbcGFyZW50Lm5vZGVfaWRdID0gcGFyZW50Ci0gICAgZGVsIG5vZGVzCi0gICAgbWFwKGZpeHVwX3JlZm1vZGluZGV4ZXNfY2h1bmssIGQudmFsdWVzKCkpCi0KLQotZGVmIGZpeHVwX3JlZm1vZGluZGV4ZXNfY2h1bmsoY29udGFpbmVyKToKLSAgICAjIG5vZGUgaXMgcHJvYmFibHkgYSA8cGFyYT47IGxldCdzIHNlZSBob3cgb2Z0ZW4gaXQgaXNuJ3Q6Ci0gICAgaWYgY29udGFpbmVyLnRhZ05hbWUgIT0gUEFSQV9FTEVNRU5UOgotICAgICAgICBid3JpdGUoIi0tLSBmaXh1cF9yZWZtb2RpbmRleGVzX2NodW5rKCVzKVxuIiAlIGNvbnRhaW5lcikKLSAgICBtb2R1bGVfZW50cmllcyA9IGZpbmRfYWxsX2VsZW1lbnRzKGNvbnRhaW5lciwgIm1vZHVsZSIpCi0gICAgaWYgbm90IG1vZHVsZV9lbnRyaWVzOgotICAgICAgICByZXR1cm4KLSAgICBpbmRleF9lbnRyaWVzID0gZmluZF9hbGxfZWxlbWVudHNfZnJvbV9zZXQoY29udGFpbmVyLCBSRUZNT0RJTkRFWF9FTEVNRU5UUykKLSAgICByZW1vdmVzID0gW10KLSAgICBmb3IgZW50cnkgaW4gaW5kZXhfZW50cmllczoKLSAgICAgICAgY2hpbGRyZW4gPSBlbnRyeS5jaGlsZE5vZGVzCi0gICAgICAgIGlmIGxlbihjaGlsZHJlbikgIT0gMDoKLSAgICAgICAgICAgIGJ3cml0ZSgiLS0tIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciAlcyBub2RlOlxuIgotICAgICAgICAgICAgICAgICAgICUgZW50cnkudGFnTmFtZSkKLSAgICAgICAgICAgIGV3cml0ZShlbnRyeS50b3htbCgpICsgIlxuIikKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvdW5kID0gMAotICAgICAgICBtb2R1bGVfbmFtZSA9IGVudHJ5LmdldEF0dHJpYnV0ZSgibW9kdWxlIikKLSAgICAgICAgZm9yIG5vZGUgaW4gbW9kdWxlX2VudHJpZXM6Ci0gICAgICAgICAgICBpZiBsZW4obm9kZS5jaGlsZE5vZGVzKSAhPSAxOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0aGlzX25hbWUgPSBub2RlLmNoaWxkTm9kZXNbMF0uZGF0YQotICAgICAgICAgICAgaWYgdGhpc19uYW1lID09IG1vZHVsZV9uYW1lOgotICAgICAgICAgICAgICAgIGZvdW5kID0gMQotICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCJpbmRleCIsICJ5ZXMiKQotICAgICAgICBpZiBmb3VuZDoKLSAgICAgICAgICAgIHJlbW92ZXMuYXBwZW5kKGVudHJ5KQotICAgIGZvciBub2RlIGluIHJlbW92ZXM6Ci0gICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChub2RlKQotCi0KLWRlZiBmaXh1cF9iaWZ1bmNpbmRleGVzKGZyYWdtZW50KToKLSAgICBub2RlcyA9IGZpbmRfYWxsX2VsZW1lbnRzKGZyYWdtZW50LCAnYmlmdW5jaW5kZXgnKQotICAgIGQgPSB7fQotICAgICMgbWFrZSBzdXJlIHRoYXQgZWFjaCBwYXJlbnQgaXMgb25seSBwcm9jZXNzZWQgb25jZToKLSAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlCi0gICAgICAgIGRbcGFyZW50Lm5vZGVfaWRdID0gcGFyZW50Ci0gICAgZGVsIG5vZGVzCi0gICAgbWFwKGZpeHVwX2JpZnVuY2luZGV4ZXNfY2h1bmssIGQudmFsdWVzKCkpCi0KLQotZGVmIGZpeHVwX2JpZnVuY2luZGV4ZXNfY2h1bmsoY29udGFpbmVyKToKLSAgICByZW1vdmVzID0gW10KLSAgICBlbnRyaWVzID0gZmluZF9hbGxfY2hpbGRfZWxlbWVudHMoY29udGFpbmVyLCAiYmlmdW5jaW5kZXgiKQotICAgIGZ1bmN0aW9uX2VudHJpZXMgPSBmaW5kX2FsbF9jaGlsZF9lbGVtZW50cyhjb250YWluZXIsICJmdW5jdGlvbiIpCi0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgIGZ1bmN0aW9uX25hbWUgPSBlbnRyeS5nZXRBdHRyaWJ1dGUoIm5hbWUiKQotICAgICAgICBmb3VuZCA9IDAKLSAgICAgICAgZm9yIGZ1bmNfZW50cnkgaW4gZnVuY3Rpb25fZW50cmllczoKLSAgICAgICAgICAgIHQyID0gZnVuY19lbnRyeS5jaGlsZE5vZGVzWzBdLmRhdGEKLSAgICAgICAgICAgIGlmIHQyWy0yOl0gIT0gIigpIjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdDIgPSB0Mls6LTJdCi0gICAgICAgICAgICBpZiB0MiA9PSBmdW5jdGlvbl9uYW1lOgotICAgICAgICAgICAgICAgIGZ1bmNfZW50cnkuc2V0QXR0cmlidXRlKCJpbmRleCIsICJ5ZXMiKQotICAgICAgICAgICAgICAgIGZ1bmNfZW50cnkuc2V0QXR0cmlidXRlKCJtb2R1bGUiLCAiX19idWlsdGluX18iKQotICAgICAgICAgICAgICAgIGlmIG5vdCBmb3VuZDoKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSAxCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZXMuYXBwZW5kKGVudHJ5KQotICAgIGZvciBlbnRyeSBpbiByZW1vdmVzOgotICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoZW50cnkpCi0KLQotZGVmIGpvaW5fYWRqYWNlbnRfZWxlbWVudHMoY29udGFpbmVyLCBnaSk6Ci0gICAgcXVldWUgPSBbY29udGFpbmVyXQotICAgIHdoaWxlIHF1ZXVlOgotICAgICAgICBwYXJlbnQgPSBxdWV1ZS5wb3AoKQotICAgICAgICBpID0gMAotICAgICAgICBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZE5vZGVzCi0gICAgICAgIG5jaGlsZHJlbiA9IGxlbihjaGlsZHJlbikKLSAgICAgICAgd2hpbGUgaSA8IChuY2hpbGRyZW4gLSAxKToKLSAgICAgICAgICAgIGNoaWxkID0gY2hpbGRyZW5baV0KLSAgICAgICAgICAgIGlmIGNoaWxkLm5vZGVOYW1lID09IGdpOgotICAgICAgICAgICAgICAgIGlmIGNoaWxkcmVuW2krMV0ubm9kZU5hbWUgPT0gZ2k6Ci0gICAgICAgICAgICAgICAgICAgIGV3cml0ZSgiLS0tIG1lcmdpbmcgdHdvIDwlcy8+IGVsZW1lbnRzXG4iICUgZ2kpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGRyZW5baV0KLSAgICAgICAgICAgICAgICAgICAgbmV4dGNoaWxkID0gY2hpbGRyZW5baSsxXQotICAgICAgICAgICAgICAgICAgICBuZXh0Y2hpbGRyZW4gPSBuZXh0Y2hpbGQuY2hpbGROb2RlcwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBsZW4obmV4dGNoaWxkcmVuKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBuZXh0Y2hpbGRyZW5bMF0KLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGlsZC5yZW1vdmVDaGlsZChub2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuYXBwZW5kQ2hpbGQobm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKG5leHRjaGlsZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IEVMRU1FTlQ6Ci0gICAgICAgICAgICAgICAgcXVldWUuYXBwZW5kKGNoaWxkKQotICAgICAgICAgICAgaSA9IGkgKyAxCi0KLQotX3Rva2VuX3J4ID0gcmUuY29tcGlsZShyIlthLXpBLVpdW2EtekEtWjAtOS4tXSokIikKLQotZGVmIHdyaXRlX2VzaXMoZG9jLCBvZnAsIGtub3duZW1wdHkpOgotICAgIGZvciBub2RlIGluIGRvYy5jaGlsZE5vZGVzOgotICAgICAgICBub2RlVHlwZSA9IG5vZGUubm9kZVR5cGUKLSAgICAgICAgaWYgbm9kZVR5cGUgPT0gRUxFTUVOVDoKLSAgICAgICAgICAgIGdpID0gbm9kZS50YWdOYW1lCi0gICAgICAgICAgICBpZiBrbm93bmVtcHR5KGdpKToKLSAgICAgICAgICAgICAgICBpZiBub2RlLmhhc0NoaWxkTm9kZXMoKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWQtZW1wdHkgbm9kZSA8JXM+IGhhcyBjaGlsZHJlbiIgJSBnaQotICAgICAgICAgICAgICAgIG9mcC53cml0ZSgiZVxuIikKLSAgICAgICAgICAgIGZvciBrLCB2YWx1ZSBpbiBub2RlLmF0dHJpYnV0ZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBfdG9rZW5fcngubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgICAgICAgICBkdHlwZSA9ICJUT0tFTiIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBkdHlwZSA9ICJDREFUQSIKLSAgICAgICAgICAgICAgICBvZnAud3JpdGUoIkElcyAlcyAlc1xuIiAlIChrLCBkdHlwZSwgZXNpc3Rvb2xzLmVuY29kZSh2YWx1ZSkpKQotICAgICAgICAgICAgb2ZwLndyaXRlKCIoJXNcbiIgJSBnaSkKLSAgICAgICAgICAgIHdyaXRlX2VzaXMobm9kZSwgb2ZwLCBrbm93bmVtcHR5KQotICAgICAgICAgICAgb2ZwLndyaXRlKCIpJXNcbiIgJSBnaSkKLSAgICAgICAgZWxpZiBub2RlVHlwZSA9PSBURVhUOgotICAgICAgICAgICAgb2ZwLndyaXRlKCItJXNcbiIgJSBlc2lzdG9vbHMuZW5jb2RlKG5vZGUuZGF0YSkpCi0gICAgICAgIGVsaWYgbm9kZVR5cGUgPT0gRU5USVRZX1JFRkVSRU5DRToKLSAgICAgICAgICAgIG9mcC53cml0ZSgiJiVzXG4iICUgbm9kZS5ub2RlTmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgInVuc3VwcG9ydGVkIG5vZGUgdHlwZTogJXMiICUgbm9kZVR5cGUKLQotCi1kZWYgY29udmVydChpZnAsIG9mcCk6Ci0gICAgZXZlbnRzID0gZXNpc3Rvb2xzLnBhcnNlKGlmcCkKLSAgICB0b2t0eXBlLCBkb2MgPSBldmVudHMuZ2V0RXZlbnQoKQotICAgIGZyYWdtZW50ID0gZG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQotICAgIGV2ZW50cy5leHBhbmROb2RlKGZyYWdtZW50KQotCi0gICAgbm9ybWFsaXplKGZyYWdtZW50KQotICAgIHNpbXBsaWZ5KGRvYywgZnJhZ21lbnQpCi0gICAgaGFuZGxlX2xhYmVscyhkb2MsIGZyYWdtZW50KQotICAgIGhhbmRsZV9hcHBlbmRpeChkb2MsIGZyYWdtZW50KQotICAgIGZpeHVwX3RyYWlsaW5nX3doaXRlc3BhY2UoZG9jLCB7Ci0gICAgICAgICJhYnN0cmFjdCI6ICJcbiIsCi0gICAgICAgICJ0aXRsZSI6ICIiLAotICAgICAgICAiY2hhcHRlciI6ICJcblxuIiwKLSAgICAgICAgInNlY3Rpb24iOiAiXG5cbiIsCi0gICAgICAgICJzdWJzZWN0aW9uIjogIlxuXG4iLAotICAgICAgICAic3Vic3Vic2VjdGlvbiI6ICJcblxuIiwKLSAgICAgICAgInBhcmFncmFwaCI6ICJcblxuIiwKLSAgICAgICAgInN1YnBhcmFncmFwaCI6ICJcblxuIiwKLSAgICAgICAgfSkKLSAgICBjbGVhbnVwX3Jvb3RfdGV4dChkb2MpCi0gICAgY2xlYW51cF90cmFpbGluZ19wYXJlbnMoZnJhZ21lbnQsIFsiZnVuY3Rpb24iLCAibWV0aG9kIiwgImNmdW5jdGlvbiJdKQotICAgIGNsZWFudXBfc3lub3BzZXMoZG9jLCBmcmFnbWVudCkKLSAgICBmaXh1cF9kZXNjcmlwdG9ycyhkb2MsIGZyYWdtZW50KQotICAgIGZpeHVwX3ZlcmJhdGltcyhmcmFnbWVudCkKLSAgICBub3JtYWxpemUoZnJhZ21lbnQpCi0gICAgZml4dXBfcGFyYXMoZG9jLCBmcmFnbWVudCkKLSAgICBmaXh1cF9zZWN0aW9uYXV0aG9ycyhkb2MsIGZyYWdtZW50KQotICAgIGZpeHVwX3RhYmxlX3N0cnVjdHVyZXMoZG9jLCBmcmFnbWVudCkKLSAgICBmaXh1cF9yZmNfcmVmZXJlbmNlcyhkb2MsIGZyYWdtZW50KQotICAgIGZpeHVwX3NpZ25hdHVyZXMoZG9jLCBmcmFnbWVudCkKLSAgICBhZGRfbm9kZV9pZHMoZnJhZ21lbnQpCi0gICAgZml4dXBfcmVmbW9kaW5kZXhlcyhmcmFnbWVudCkKLSAgICBmaXh1cF9iaWZ1bmNpbmRleGVzKGZyYWdtZW50KQotICAgICMgVGFrZSBjYXJlIG9mIHVnbHkgaGFja3MgaW4gdGhlIExhVGVYIG1hcmt1cCB0byBhdm9pZCBMYVRlWCBhbmQKLSAgICAjIExhVGVYMkhUTUwgc2NyZXdpbmcgd2l0aCBHTlUtc3R5bGUgbG9uZyBvcHRpb25zICh0aGUgJy0tJyBwcm9ibGVtKS4KLSAgICBqb2luX2FkamFjZW50X2VsZW1lbnRzKGZyYWdtZW50LCAib3B0aW9uIikKLSAgICAjCi0gICAgZCA9IHt9Ci0gICAgZm9yIGdpIGluIGV2ZW50cy5wYXJzZXIuZ2V0X2VtcHRpZXMoKToKLSAgICAgICAgZFtnaV0gPSBnaQotICAgIGlmIGQuaGFzX2tleSgiYXV0aG9yIik6Ci0gICAgICAgIGRlbCBkWyJhdXRob3IiXQotICAgIGlmIGQuaGFzX2tleSgicmZjIik6Ci0gICAgICAgIGRlbCBkWyJyZmMiXQotICAgIGtub3duZW1wdHkgPSBkLmhhc19rZXkKLSAgICAjCi0gICAgdHJ5OgotICAgICAgICB3cml0ZV9lc2lzKGZyYWdtZW50LCBvZnAsIGtub3duZW1wdHkpCi0gICAgZXhjZXB0IElPRXJyb3IsIChlcnIsIG1zZyk6Ci0gICAgICAgICMgSWdub3JlIEVQSVBFOyBpdCBqdXN0IG1lYW5zIHRoYXQgd2hvZXZlciB3ZSdyZSB3cml0aW5nIHRvIHN0b3BwZWQKLSAgICAgICAgIyByZWFkaW5nLiAgVGhlIHJlc3Qgb2YgdGhlIG91dHB1dCB3b3VsZCBiZSBpZ25vcmVkLiAgQWxsIG90aGVyIGVycm9ycwotICAgICAgICAjIHNob3VsZCBzdGlsbCBiZSByZXBvcnRlZCwKLSAgICAgICAgaWYgZXJyICE9IGVycm5vLkVQSVBFOgotICAgICAgICAgICAgcmFpc2UKLQotCi1kZWYgbWFpbigpOgotICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKLSAgICAgICAgaWZwID0gc3lzLnN0ZGluCi0gICAgICAgIG9mcCA9IHN5cy5zdGRvdXQKLSAgICBlbGlmIGxlbihzeXMuYXJndikgPT0gMjoKLSAgICAgICAgaWZwID0gb3BlbihzeXMuYXJndlsxXSkKLSAgICAgICAgb2ZwID0gc3lzLnN0ZG91dAotICAgIGVsaWYgbGVuKHN5cy5hcmd2KSA9PSAzOgotICAgICAgICBpZnAgPSBvcGVuKHN5cy5hcmd2WzFdKQotICAgICAgICBpbXBvcnQgU3RyaW5nSU8KLSAgICAgICAgb2ZwID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgIGVsc2U6Ci0gICAgICAgIHVzYWdlKCkKLSAgICAgICAgc3lzLmV4aXQoMikKLSAgICBjb252ZXJ0KGlmcCwgb2ZwKQotICAgIGlmIGxlbihzeXMuYXJndikgPT0gMzoKLSAgICAgICAgZnAgPSBvcGVuKHN5cy5hcmd2WzJdLCAidyIpCi0gICAgICAgIGZwLndyaXRlKG9mcC5nZXR2YWx1ZSgpKQotICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgIG9mcC5jbG9zZSgpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL2RvYy90b29scy9zZ21sY29udi9lc2lzMnNnbWwucHkgYi9kb2MvdG9vbHMvc2dtbGNvbnYvZXNpczJzZ21sLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YmRhOTI5Li4wMDAwMDAwCi0tLSBhL2RvYy90b29scy9zZ21sY29udi9lc2lzMnNnbWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0iIiJDb252ZXJ0IEVTSVMgZXZlbnRzIHRvIFNHTUwgb3IgWE1MIG1hcmt1cC4KLQotVGhpcyBpcyBsaW1pdGVkLCBidXQgc2VlbXMgc3VmZmljaWVudCBmb3IgdGhlIEVTSVMgZ2VuZXJhdGVkIGJ5IHRoZQotbGF0ZXgyZXNpcy5weSBzY3JpcHQgd2hlbiBydW4gb3ZlciB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24uCi0iIiIKLQotIyBUaGlzIHNob3VsZCBoYXZlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSAqSU5QVVQqIHdhcwotIyBnZW5lcmF0ZWQgZnJvbSBhbiBTR01MIG9yIGFuIFhNTCBhcHBsaWNhdGlvbi4KLQotaW1wb3J0IGVycm5vCi1pbXBvcnQgZXNpc3Rvb2xzCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN0cmluZwotCi1mcm9tIHhtbC5zYXguc2F4dXRpbHMgaW1wb3J0IGVzY2FwZQotCi0KLUFVVE9DTE9TRSA9ICgpCi0KLUVNUFRJRVNfRklMRU5BTUUgPSAiLi4vc2dtbC9lbXB0aWVzLmRhdCIKLUxJU1RfRU1QVElFUyA9IDAKLQotCi1fZWxlbV9tYXAgPSB7fQotX2F0dHJfbWFwID0ge30KLV90b2tlbl9tYXAgPSB7fQotCi1fbm9ybWFsaXplX2Nhc2UgPSBzdHIKLQotZGVmIG1hcF9naShzZ21sZ2ksIG1hcCk6Ci0gICAgdW5jYXNlZCA9IF9ub3JtYWxpemVfY2FzZShzZ21sZ2kpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gbWFwW3VuY2FzZWRdCi0gICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgIG1hcFt1bmNhc2VkXSA9IHNnbWxnaQotICAgICAgICByZXR1cm4gc2dtbGdpCi0KLWRlZiBudWxsX21hcF9naShzZ21sZ2ksIG1hcCk6Ci0gICAgcmV0dXJuIHNnbWxnaQotCi0KLWRlZiBmb3JtYXRfYXR0cnMoYXR0cnMsIHhtbD0wKToKLSAgICBhdHRycyA9IGF0dHJzLml0ZW1zKCkKLSAgICBhdHRycy5zb3J0KCkKLSAgICBwYXJ0cyA9IFtdCi0gICAgYXBwZW5kID0gcGFydHMuYXBwZW5kCi0gICAgZm9yIG5hbWUsIHZhbHVlIGluIGF0dHJzOgotICAgICAgICBpZiB4bWw6Ci0gICAgICAgICAgICBhcHBlbmQoJyVzPSIlcyInICUgKG5hbWUsIGVzY2FwZSh2YWx1ZSkpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyB0aGlzIGlzIGEgbGl0dGxlIGJvZ3VzLCBidXQgc2hvdWxkIGRvIGZvciBub3cKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gdmFsdWUgYW5kIGlzbm10b2tlbih2YWx1ZSk6Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgZWxpZiBpc3Rva2VuKHZhbHVlKToKLSAgICAgICAgICAgICAgICBpZiB2YWx1ZSA9PSAibm8iICsgbmFtZToKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JXMiICUgKG5hbWUsIHZhbHVlKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXBwZW5kKCclcz0iJXMiJyAlIChuYW1lLCBlc2NhcGUodmFsdWUpKSkKLSAgICBpZiBwYXJ0czoKLSAgICAgICAgcGFydHMuaW5zZXJ0KDAsICcnKQotICAgIHJldHVybiBzdHJpbmcuam9pbihwYXJ0cykKLQotCi1fbm10b2tlbl9yeCA9IHJlLmNvbXBpbGUoIlthLXpdWy0uX2EtejAtOV0qJCIsIHJlLklHTk9SRUNBU0UpCi1kZWYgaXNubXRva2VuKHMpOgotICAgIHJldHVybiBfbm10b2tlbl9yeC5tYXRjaChzKSBpcyBub3QgTm9uZQotCi1fdG9rZW5fcnggPSByZS5jb21waWxlKCJbYS16MC05XVstLl9hLXowLTldKiQiLCByZS5JR05PUkVDQVNFKQotZGVmIGlzdG9rZW4ocyk6Ci0gICAgcmV0dXJuIF90b2tlbl9yeC5tYXRjaChzKSBpcyBub3QgTm9uZQotCi0KLWRlZiBjb252ZXJ0KGlmcCwgb2ZwLCB4bWw9MCwgYXV0b2Nsb3NlPSgpLCB2ZXJiYXRpbXM9KCkpOgotICAgIGlmIHhtbDoKLSAgICAgICAgYXV0b2Nsb3NlID0gKCkKLSAgICBhdHRycyA9IHt9Ci0gICAgbGFzdG9wZW5lZCA9IE5vbmUKLSAgICBrbm93bmVtcHRpZXMgPSBbXQotICAgIGtub3duZW1wdHkgPSAwCi0gICAgbGFzdGVtcHR5ID0gMAotICAgIGludmVyYmF0aW0gPSAwCi0gICAgd2hpbGUgMToKLSAgICAgICAgbGluZSA9IGlmcC5yZWFkbGluZSgpCi0gICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICB0eXBlID0gbGluZVswXQotICAgICAgICBkYXRhID0gbGluZVsxOl0KLSAgICAgICAgaWYgZGF0YSBhbmQgZGF0YVstMV0gPT0gIlxuIjoKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhWzotMV0KLSAgICAgICAgaWYgdHlwZSA9PSAiLSI6Ci0gICAgICAgICAgICBkYXRhID0gZXNpc3Rvb2xzLmRlY29kZShkYXRhKQotICAgICAgICAgICAgZGF0YSA9IGVzY2FwZShkYXRhKQotICAgICAgICAgICAgaWYgbm90IGludmVyYmF0aW06Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHN0cmluZy5yZXBsYWNlKGRhdGEsICItLS0iLCAiJm1kYXNoOyIpCi0gICAgICAgICAgICBvZnAud3JpdGUoZGF0YSkKLSAgICAgICAgICAgIGlmICJcbiIgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBsYXN0b3BlbmVkID0gTm9uZQotICAgICAgICAgICAga25vd25lbXB0eSA9IDAKLSAgICAgICAgICAgIGxhc3RlbXB0eSA9IDAKLSAgICAgICAgZWxpZiB0eXBlID09ICIoIjoKLSAgICAgICAgICAgIGlmIGRhdGEgPT0gIkNPTU1FTlQiOgotICAgICAgICAgICAgICAgIG9mcC53cml0ZSgiPCEtLSIpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGRhdGEgPSBtYXBfZ2koZGF0YSwgX2VsZW1fbWFwKQotICAgICAgICAgICAgaWYga25vd25lbXB0eSBhbmQgeG1sOgotICAgICAgICAgICAgICAgIG9mcC53cml0ZSgiPCVzJXMvPiIgJSAoZGF0YSwgZm9ybWF0X2F0dHJzKGF0dHJzLCB4bWwpKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb2ZwLndyaXRlKCI8JXMlcz4iICUgKGRhdGEsIGZvcm1hdF9hdHRycyhhdHRycywgeG1sKSkpCi0gICAgICAgICAgICBpZiBrbm93bmVtcHR5IGFuZCBkYXRhIG5vdCBpbiBrbm93bmVtcHRpZXM6Ci0gICAgICAgICAgICAgICAgIyBhY2N1bXVsYXRlIGtub3dsZWRnZSEKLSAgICAgICAgICAgICAgICBrbm93bmVtcHRpZXMuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBhdHRycyA9IHt9Ci0gICAgICAgICAgICBsYXN0b3BlbmVkID0gZGF0YQotICAgICAgICAgICAgbGFzdGVtcHR5ID0ga25vd25lbXB0eQotICAgICAgICAgICAga25vd25lbXB0eSA9IDAKLSAgICAgICAgICAgIGludmVyYmF0aW0gPSBkYXRhIGluIHZlcmJhdGltcwotICAgICAgICBlbGlmIHR5cGUgPT0gIikiOgotICAgICAgICAgICAgaWYgZGF0YSA9PSAiQ09NTUVOVCI6Ci0gICAgICAgICAgICAgICAgb2ZwLndyaXRlKCItLT4iKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBkYXRhID0gbWFwX2dpKGRhdGEsIF9lbGVtX21hcCkKLSAgICAgICAgICAgIGlmIHhtbDoKLSAgICAgICAgICAgICAgICBpZiBub3QgbGFzdGVtcHR5OgotICAgICAgICAgICAgICAgICAgICBvZnAud3JpdGUoIjwvJXM+IiAlIGRhdGEpCi0gICAgICAgICAgICBlbGlmIGRhdGEgbm90IGluIGtub3duZW1wdGllczoKLSAgICAgICAgICAgICAgICBpZiBkYXRhIGluIGF1dG9jbG9zZToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgbGFzdG9wZW5lZCA9PSBkYXRhOgotICAgICAgICAgICAgICAgICAgICBvZnAud3JpdGUoIjwvPiIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgb2ZwLndyaXRlKCI8LyVzPiIgJSBkYXRhKQotICAgICAgICAgICAgbGFzdG9wZW5lZCA9IE5vbmUKLSAgICAgICAgICAgIGxhc3RlbXB0eSA9IDAKLSAgICAgICAgICAgIGludmVyYmF0aW0gPSAwCi0gICAgICAgIGVsaWYgdHlwZSA9PSAiQSI6Ci0gICAgICAgICAgICBuYW1lLCB0eXBlLCB2YWx1ZSA9IHN0cmluZy5zcGxpdChkYXRhLCAiICIsIDIpCi0gICAgICAgICAgICBuYW1lID0gbWFwX2dpKG5hbWUsIF9hdHRyX21hcCkKLSAgICAgICAgICAgIGF0dHJzW25hbWVdID0gZXNpc3Rvb2xzLmRlY29kZSh2YWx1ZSkKLSAgICAgICAgZWxpZiB0eXBlID09ICJlIjoKLSAgICAgICAgICAgIGtub3duZW1wdHkgPSAxCi0gICAgICAgIGVsaWYgdHlwZSA9PSAiJiI6Ci0gICAgICAgICAgICBvZnAud3JpdGUoIiYlczsiICUgZGF0YSkKLSAgICAgICAgICAgIGtub3duZW1wdHkgPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICJ1bnJlY29nbml6ZWQgRVNJUyBldmVudCB0eXBlOiAnJXMnIiAlIHR5cGUKLQotICAgIGlmIExJU1RfRU1QVElFUzoKLSAgICAgICAgZHVtcF9lbXB0eV9lbGVtZW50X25hbWVzKGtub3duZW1wdGllcykKLQotCi1kZWYgZHVtcF9lbXB0eV9lbGVtZW50X25hbWVzKGtub3duZW1wdGllcyk6Ci0gICAgZCA9IHt9Ci0gICAgZm9yIGdpIGluIGtub3duZW1wdGllczoKLSAgICAgICAgZFtnaV0gPSBnaQotICAgIGtub3duZW1wdGllcy5hcHBlbmQoIiIpCi0gICAgaWYgb3MucGF0aC5pc2ZpbGUoRU1QVElFU19GSUxFTkFNRSk6Ci0gICAgICAgIGZwID0gb3BlbihFTVBUSUVTX0ZJTEVOQU1FKQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBnaSA9IHN0cmluZy5zdHJpcChsaW5lKQotICAgICAgICAgICAgaWYgZ2k6Ci0gICAgICAgICAgICAgICAgZFtnaV0gPSBnaQotICAgIGZwID0gb3BlbihFTVBUSUVTX0ZJTEVOQU1FLCAidyIpCi0gICAgZ2lsaXN0ID0gZC5rZXlzKCkKLSAgICBnaWxpc3Quc29ydCgpCi0gICAgZnAud3JpdGUoc3RyaW5nLmpvaW4oZ2lsaXN0LCAiXG4iKSkKLSAgICBmcC53cml0ZSgiXG4iKQotICAgIGZwLmNsb3NlKCkKLQotCi1kZWYgdXBkYXRlX2dpX21hcChtYXAsIG5hbWVzLCBmcm9tc2dtbD0xKToKLSAgICBmb3IgbmFtZSBpbiBzdHJpbmcuc3BsaXQobmFtZXMsICIsIik6Ci0gICAgICAgIGlmIGZyb21zZ21sOgotICAgICAgICAgICAgdW5jYXNlZCA9IHN0cmluZy5sb3dlcihuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdW5jYXNlZCA9IG5hbWUKLSAgICAgICAgbWFwW3VuY2FzZWRdID0gbmFtZQotCi0KLWRlZiBtYWluKCk6Ci0gICAgaW1wb3J0IGdldG9wdAotICAgIGltcG9ydCBzeXMKLSAgICAjCi0gICAgYXV0b2Nsb3NlID0gQVVUT0NMT1NFCi0gICAgeG1sID0gMQotICAgIHhtbGRlY2wgPSAwCi0gICAgZWxlbV9uYW1lcyA9ICcnCi0gICAgYXR0cl9uYW1lcyA9ICcnCi0gICAgdmFsdWVfbmFtZXMgPSAnJwotICAgIHZlcmJhdGltcyA9ICgndmVyYmF0aW0nLCAnaW50ZXJhY3RpdmUtc2Vzc2lvbicpCi0gICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiYWRlc3giLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0b2Nsb3NlPSIsICJkZWNsYXJlIiwgInNnbWwiLCAieG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRzLW1hcD0iLCAiYXR0cmlidXRlcy1tYXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzLW1hcD0iXSkKLSAgICBmb3Igb3B0LCBhcmcgaW4gb3B0czoKLSAgICAgICAgaWYgb3B0IGluICgiLWQiLCAiLS1kZWNsYXJlIik6Ci0gICAgICAgICAgICB4bWxkZWNsID0gMQotICAgICAgICBlbGlmIG9wdCA9PSAiLWUiOgotICAgICAgICAgICAgZ2xvYmFsIExJU1RfRU1QVElFUwotICAgICAgICAgICAgTElTVF9FTVBUSUVTID0gMQotICAgICAgICBlbGlmIG9wdCBpbiAoIi1zIiwgIi0tc2dtbCIpOgotICAgICAgICAgICAgeG1sID0gMAotICAgICAgICBlbGlmIG9wdCBpbiAoIi14IiwgIi0teG1sIik6Ci0gICAgICAgICAgICB4bWwgPSAxCi0gICAgICAgIGVsaWYgb3B0IGluICgiLWEiLCAiLS1hdXRvY2xvc2UiKToKLSAgICAgICAgICAgIGF1dG9jbG9zZSA9IHN0cmluZy5zcGxpdChhcmcsICIsIikKLSAgICAgICAgZWxpZiBvcHQgPT0gIi0tZWxlbWVudHMtbWFwIjoKLSAgICAgICAgICAgIGVsZW1fbmFtZXMgPSAoIiVzLCVzIiAlIChlbGVtX25hbWVzLCBhcmcpKVsxOl0KLSAgICAgICAgZWxpZiBvcHQgPT0gIi0tYXR0cmlidXRlcy1tYXAiOgotICAgICAgICAgICAgYXR0cl9uYW1lcyA9ICgiJXMsJXMiICUgKGF0dHJfbmFtZXMsIGFyZykpWzE6XQotICAgICAgICBlbGlmIG9wdCA9PSAiLS12YWx1ZXMtbWFwIjoKLSAgICAgICAgICAgIHZhbHVlX25hbWVzID0gKCIlcywlcyIgJSAodmFsdWVfbmFtZXMsIGFyZykpWzE6XQotICAgICMKLSAgICAjIG9wZW4gaW5wdXQgc3RyZWFtczoKLSAgICAjCi0gICAgaWYgbGVuKGFyZ3MpID09IDA6Ci0gICAgICAgIGlmcCA9IHN5cy5zdGRpbgotICAgICAgICBvZnAgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oYXJncykgPT0gMToKLSAgICAgICAgaWZwID0gb3BlbihhcmdzWzBdKQotICAgICAgICBvZnAgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgaWZwID0gb3BlbihhcmdzWzBdKQotICAgICAgICBvZnAgPSBvcGVuKGFyZ3NbMV0sICJ3IikKLSAgICBlbHNlOgotICAgICAgICB1c2FnZSgpCi0gICAgICAgIHN5cy5leGl0KDIpCi0gICAgIwotICAgICMgc2V0dXAgdGhlIG5hbWUgbWFwczoKLSAgICAjCi0gICAgaWYgZWxlbV9uYW1lcyBvciBhdHRyX25hbWVzIG9yIHZhbHVlX25hbWVzOgotICAgICAgICAjIGFzc3VtZSB0aGUgb3JpZ2luIHdhcyBTR01MOyBpZ25vcmUgY2FzZSBvZiB0aGUgbmFtZXMgZnJvbSB0aGUgRVNJUwotICAgICAgICAjIHN0cmVhbSBidXQgc2V0IHVwIGNvbnZlcnNpb24gdGFibGVzIHRvIGdldCB0aGUgY2FzZSByaWdodCBvbiBvdXRwdXQKLSAgICAgICAgZ2xvYmFsIF9ub3JtYWxpemVfY2FzZQotICAgICAgICBfbm9ybWFsaXplX2Nhc2UgPSBzdHJpbmcubG93ZXIKLSAgICAgICAgdXBkYXRlX2dpX21hcChfZWxlbV9tYXAsIHN0cmluZy5zcGxpdChlbGVtX25hbWVzLCAiLCIpKQotICAgICAgICB1cGRhdGVfZ2lfbWFwKF9hdHRyX21hcCwgc3RyaW5nLnNwbGl0KGF0dHJfbmFtZXMsICIsIikpCi0gICAgICAgIHVwZGF0ZV9naV9tYXAoX3ZhbHVlc19tYXAsIHN0cmluZy5zcGxpdCh2YWx1ZV9uYW1lcywgIiwiKSkKLSAgICBlbHNlOgotICAgICAgICBnbG9iYWwgbWFwX2dpCi0gICAgICAgIG1hcF9naSA9IG51bGxfbWFwX2dpCi0gICAgIwotICAgICMgcnVuIHRoZSBjb252ZXJzaW9uOgotICAgICMKLSAgICB0cnk6Ci0gICAgICAgIGlmIHhtbCBhbmQgeG1sZGVjbDoKLSAgICAgICAgICAgIG9wZi53cml0ZSgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvODg1OS0xIj8+XG4nKQotICAgICAgICBjb252ZXJ0KGlmcCwgb2ZwLCB4bWw9eG1sLCBhdXRvY2xvc2U9YXV0b2Nsb3NlLCB2ZXJiYXRpbXM9dmVyYmF0aW1zKQotICAgIGV4Y2VwdCBJT0Vycm9yLCAoZXJyLCBtc2cpOgotICAgICAgICBpZiBlcnIgIT0gZXJybm8uRVBJUEU6Ci0gICAgICAgICAgICByYWlzZQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvc2dtbGNvbnYvZXNpc3Rvb2xzLnB5IGIvZG9jL3Rvb2xzL3NnbWxjb252L2VzaXN0b29scy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODkzYWY3Ni4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvc2dtbGNvbnYvZXNpc3Rvb2xzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLSIiIk1pc2NlbGxhbmVvdXMgdXRpbGl0eSBmdW5jdGlvbnMgdXNlZnVsIGZvciBkZWFsaW5nIHdpdGggRVNJUyBzdHJlYW1zLiIiIgotCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLQotaW1wb3J0IHhtbC5kb20ucHVsbGRvbQotCi1pbXBvcnQgeG1sLnNheAotaW1wb3J0IHhtbC5zYXguaGFuZGxlcgotaW1wb3J0IHhtbC5zYXgueG1scmVhZGVyCi0KLQotX2RhdGFfbWF0Y2ggPSByZS5jb21waWxlKHIiW15cXF1bXlxcXSoiKS5tYXRjaAotCi1kZWYgZGVjb2RlKHMpOgotICAgIHIgPSAnJwotICAgIHdoaWxlIHM6Ci0gICAgICAgIG0gPSBfZGF0YV9tYXRjaChzKQotICAgICAgICBpZiBtOgotICAgICAgICAgICAgciA9IHIgKyBtLmdyb3VwKCkKLSAgICAgICAgICAgIHMgPSBzW20uZW5kKCk6XQotICAgICAgICBlbGlmIHNbMV0gPT0gIlxcIjoKLSAgICAgICAgICAgIHIgPSByICsgIlxcIgotICAgICAgICAgICAgcyA9IHNbMjpdCi0gICAgICAgIGVsaWYgc1sxXSA9PSAibiI6Ci0gICAgICAgICAgICByID0gciArICJcbiIKLSAgICAgICAgICAgIHMgPSBzWzI6XQotICAgICAgICBlbGlmIHNbMV0gPT0gIiUiOgotICAgICAgICAgICAgcyA9IHNbMjpdCi0gICAgICAgICAgICBuLCBzID0gcy5zcGxpdCgiOyIsIDEpCi0gICAgICAgICAgICByID0gciArIHVuaWNocihpbnQobikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiY2FuJ3QgaGFuZGxlICIgKyBgc2AKLSAgICByZXR1cm4gcgotCi0KLV9jaGFybWFwID0ge30KLWZvciBjIGluIG1hcChjaHIsIHJhbmdlKDI1NikpOgotICAgIF9jaGFybWFwW2NdID0gYwotX2NoYXJtYXBbIlxuIl0gPSByIlxuIgotX2NoYXJtYXBbIlxcIl0gPSByIlxcIgotZGVsIGMKLQotX251bGxfam9pbiA9ICcnLmpvaW4KLWRlZiBlbmNvZGUocyk6Ci0gICAgcmV0dXJuIF9udWxsX2pvaW4obWFwKF9jaGFybWFwLmdldCwgcykpCi0KLQotY2xhc3MgRVNJU1JlYWRlcih4bWwuc2F4LnhtbHJlYWRlci5YTUxSZWFkZXIpOgotICAgICIiIlNBWCBSZWFkZXIgd2hpY2ggcmVhZHMgZnJvbSBhbiBFU0lTIHN0cmVhbS4KLQotICAgIE5vIHZlcmlmaWNhdGlvbiBvZiB0aGUgZG9jdW1lbnQgc3RydWN0dXJlIGlzIHBlcmZvcm1lZCBieSB0aGUKLSAgICByZWFkZXI7IGEgZ2VuZXJhbCB2ZXJpZmllciBjb3VsZCBiZSB1c2VkIGFzIHRoZSB0YXJnZXQKLSAgICBDb250ZW50SGFuZGxlciBpbnN0YW5jZS4KLQotICAgICIiIgotICAgIF9kZWNsX2hhbmRsZXIgPSBOb25lCi0gICAgX2xleGljYWxfaGFuZGxlciA9IE5vbmUKLQotICAgIF9wdWJsaWNfaWQgPSBOb25lCi0gICAgX3N5c3RlbV9pZCA9IE5vbmUKLQotICAgIF9idWZmZXIgPSAiIgotICAgIF9pc19lbXB0eSA9IDAKLSAgICBfbGluZW5vID0gMAotICAgIF9zdGFydGVkID0gMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRlbnRIYW5kbGVyPU5vbmUsIGVycm9ySGFuZGxlcj1Ob25lKToKLSAgICAgICAgeG1sLnNheC54bWxyZWFkZXIuWE1MUmVhZGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX2F0dHJzID0ge30KLSAgICAgICAgc2VsZi5fYXR0cmlidXRlcyA9IEF0dHJpYnV0ZXMoc2VsZi5fYXR0cnMpCi0gICAgICAgIHNlbGYuX2xvY2F0b3IgPSBMb2NhdG9yKCkKLSAgICAgICAgc2VsZi5fZW1wdGllcyA9IHt9Ci0gICAgICAgIGlmIGNvbnRlbnRIYW5kbGVyOgotICAgICAgICAgICAgc2VsZi5zZXRDb250ZW50SGFuZGxlcihjb250ZW50SGFuZGxlcikKLSAgICAgICAgaWYgZXJyb3JIYW5kbGVyOgotICAgICAgICAgICAgc2VsZi5zZXRFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKQotCi0gICAgZGVmIGdldF9lbXB0aWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZW1wdGllcy5rZXlzKCkKLQotICAgICMKLSAgICAjICBYTUxSZWFkZXIgaW50ZXJmYWNlCi0gICAgIwotCi0gICAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgotICAgICAgICBzZWxmLl9sb2NhdG9yLl9wdWJsaWNfaWQgPSBzb3VyY2UuZ2V0UHVibGljSWQoKQotICAgICAgICBzZWxmLl9sb2NhdG9yLl9zeXN0ZW1faWQgPSBzb3VyY2UuZ2V0U3lzdGVtSWQoKQotICAgICAgICBmcCA9IHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuZ2V0Q29udGVudEhhbmRsZXIoKQotICAgICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgaGFuZGxlci5zdGFydERvY3VtZW50KCkKLSAgICAgICAgbGluZW5vID0gMAotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgdG9rZW4sIGRhdGEgPSBzZWxmLl9nZXRfdG9rZW4oZnApCi0gICAgICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBsaW5lbm8gPSBsaW5lbm8gKyAxCi0gICAgICAgICAgICBzZWxmLl9sb2NhdG9yLl9saW5lbm8gPSBsaW5lbm8KLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90b2tlbih0b2tlbiwgZGF0YSkKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuZ2V0Q29udGVudEhhbmRsZXIoKQotICAgICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgaGFuZGxlci5zdGFydERvY3VtZW50KCkKLQotICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEpOgotICAgICAgICBpZiBub3Qgc2VsZi5fc3RhcnRlZDoKLSAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLmdldENvbnRlbnRIYW5kbGVyKCkKLSAgICAgICAgICAgIGlmIGhhbmRsZXI6Ci0gICAgICAgICAgICAgICAgaGFuZGxlci5zdGFydERvY3VtZW50KCkKLSAgICAgICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSAxCi0gICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIgKyBkYXRhCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKLSAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KCJcbiIpCi0gICAgICAgIGlmIGxpbmVzOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNbOi0xXToKLSAgICAgICAgICAgICAgICBzZWxmLl9saW5lbm8gPSBzZWxmLl9saW5lbm8gKyAxCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9jYXRvci5fbGluZW5vID0gc2VsZi5fbGluZW5vCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGUgPSB4bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgIkVTSVMgaW5wdXQgbGluZSBjb250YWlucyBubyB0b2tlbiB0eXBlIG1hcmsiLAotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgc2VsZi5fbG9jYXRvcikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRFcnJvckhhbmRsZXIoKS5lcnJvcihlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90b2tlbihsaW5lWzBdLCBsaW5lWzE6XSkKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGxpbmVzWy0xXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gIiIKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuZ2V0Q29udGVudEhhbmRsZXIoKQotICAgICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgaGFuZGxlci5lbmREb2N1bWVudCgpCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9ICIiCi0KLSAgICBkZWYgX2dldF90b2tlbihzZWxmLCBmcCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgICAgICAgZSA9IFNBWEV4Y2VwdGlvbigiSS9PIGVycm9yIHJlYWRpbmcgaW5wdXQgc3RyZWFtIiwgZSkKLSAgICAgICAgICAgIHNlbGYuZ2V0RXJyb3JIYW5kbGVyKCkuZmF0YWxFcnJvcihlKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLSAgICAgICAgaWYgbGluZVstMV0gPT0gIlxuIjoKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotMV0KLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICBlID0geG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAiRVNJUyBpbnB1dCBsaW5lIGNvbnRhaW5zIG5vIHRva2VuIHR5cGUgbWFyayIsCi0gICAgICAgICAgICAgICAgTm9uZSwgc2VsZi5fbG9jYXRvcikKLSAgICAgICAgICAgIHNlbGYuZ2V0RXJyb3JIYW5kbGVyKCkuZXJyb3IoZSkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXR1cm4gbGluZVswXSwgbGluZVsxOl0KLQotICAgIGRlZiBfaGFuZGxlX3Rva2VuKHNlbGYsIHRva2VuLCBkYXRhKToKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuZ2V0Q29udGVudEhhbmRsZXIoKQotICAgICAgICBpZiB0b2tlbiA9PSAnLSc6Ci0gICAgICAgICAgICBpZiBkYXRhIGFuZCBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGhhbmRsZXIuY2hhcmFjdGVycyhkZWNvZGUoZGF0YSkpCi0gICAgICAgIGVsaWYgdG9rZW4gPT0gJyknOgotICAgICAgICAgICAgaWYgaGFuZGxlcjoKLSAgICAgICAgICAgICAgICBoYW5kbGVyLmVuZEVsZW1lbnQoZGVjb2RlKGRhdGEpKQotICAgICAgICBlbGlmIHRva2VuID09ICcoJzoKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX2VtcHR5OgotICAgICAgICAgICAgICAgIHNlbGYuX2VtcHRpZXNbZGF0YV0gPSAxCi0gICAgICAgICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGhhbmRsZXIuc3RhcnRFbGVtZW50KGRhdGEsIHNlbGYuX2F0dHJpYnV0ZXMpCi0gICAgICAgICAgICBzZWxmLl9hdHRycy5jbGVhcigpCi0gICAgICAgICAgICBzZWxmLl9pc19lbXB0eSA9IDAKLSAgICAgICAgZWxpZiB0b2tlbiA9PSAnQSc6Ci0gICAgICAgICAgICBuYW1lLCB2YWx1ZSA9IGRhdGEuc3BsaXQoJyAnLCAxKQotICAgICAgICAgICAgaWYgdmFsdWUgIT0gIklNUExJRUQiOgotICAgICAgICAgICAgICAgIHR5cGUsIHZhbHVlID0gdmFsdWUuc3BsaXQoJyAnLCAxKQotICAgICAgICAgICAgICAgIHNlbGYuX2F0dHJzW25hbWVdID0gKGRlY29kZSh2YWx1ZSksIHR5cGUpCi0gICAgICAgIGVsaWYgdG9rZW4gPT0gJyYnOgotICAgICAgICAgICAgIyBlbnRpdHkgcmVmZXJlbmNlIGluIFNBWD8KLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiB0b2tlbiA9PSAnPyc6Ci0gICAgICAgICAgICBpZiBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGlmICcgJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIGRhdGEgPSBzdHJpbmcuc3BsaXQoZGF0YSwgTm9uZSwgMSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIGRhdGEgPSBkYXRhLCAiIgotICAgICAgICAgICAgICAgIGhhbmRsZXIucHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwgZGVjb2RlKGRhdGEpKQotICAgICAgICBlbGlmIHRva2VuID09ICdOJzoKLSAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLmdldERUREhhbmRsZXIoKQotICAgICAgICAgICAgaWYgaGFuZGxlcjoKLSAgICAgICAgICAgICAgICBoYW5kbGVyLm5vdGF0aW9uRGVjbChkYXRhLCBzZWxmLl9wdWJsaWNfaWQsIHNlbGYuX3N5c3RlbV9pZCkKLSAgICAgICAgICAgIHNlbGYuX3B1YmxpY19pZCA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuX3N5c3RlbV9pZCA9IE5vbmUKLSAgICAgICAgZWxpZiB0b2tlbiA9PSAncCc6Ci0gICAgICAgICAgICBzZWxmLl9wdWJsaWNfaWQgPSBkZWNvZGUoZGF0YSkKLSAgICAgICAgZWxpZiB0b2tlbiA9PSAncyc6Ci0gICAgICAgICAgICBzZWxmLl9zeXN0ZW1faWQgPSBkZWNvZGUoZGF0YSkKLSAgICAgICAgZWxpZiB0b2tlbiA9PSAnZSc6Ci0gICAgICAgICAgICBzZWxmLl9pc19lbXB0eSA9IDEKLSAgICAgICAgZWxpZiB0b2tlbiA9PSAnQyc6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlID0gU0FYUGFyc2VFeGNlcHRpb24oInVua25vd24gRVNJUyB0b2tlbiBpbiBldmVudCBzdHJlYW0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHNlbGYuX2xvY2F0b3IpCi0gICAgICAgICAgICBzZWxmLmdldEVycm9ySGFuZGxlcigpLmVycm9yKGUpCi0KLSAgICBkZWYgc2V0Q29udGVudEhhbmRsZXIoc2VsZiwgaGFuZGxlcik6Ci0gICAgICAgIG9sZCA9IHNlbGYuZ2V0Q29udGVudEhhbmRsZXIoKQotICAgICAgICBpZiBvbGQ6Ci0gICAgICAgICAgICBvbGQuc2V0RG9jdW1lbnRMb2NhdG9yKE5vbmUpCi0gICAgICAgIGlmIGhhbmRsZXI6Ci0gICAgICAgICAgICBoYW5kbGVyLnNldERvY3VtZW50TG9jYXRvcihzZWxmLl9sb2NhdG9yKQotICAgICAgICB4bWwuc2F4LnhtbHJlYWRlci5YTUxSZWFkZXIuc2V0Q29udGVudEhhbmRsZXIoc2VsZiwgaGFuZGxlcikKLQotICAgIGRlZiBnZXRQcm9wZXJ0eShzZWxmLCBwcm9wZXJ0eSk6Ci0gICAgICAgIGlmIHByb3BlcnR5ID09IHhtbC5zYXguaGFuZGxlci5wcm9wZXJ0eV9sZXhpY2FsX2hhbmRsZXI6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbGV4aWNhbF9oYW5kbGVyCi0KLSAgICAgICAgZWxpZiBwcm9wZXJ0eSA9PSB4bWwuc2F4LmhhbmRsZXIucHJvcGVydHlfZGVjbGFyYXRpb25faGFuZGxlcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9kZWNsX2hhbmRsZXIKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgeG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uKCJ1bmtub3duIHByb3BlcnR5ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYHByb3BlcnR5YCkKLQotICAgIGRlZiBzZXRQcm9wZXJ0eShzZWxmLCBwcm9wZXJ0eSwgdmFsdWUpOgotICAgICAgICBpZiBwcm9wZXJ0eSA9PSB4bWwuc2F4LmhhbmRsZXIucHJvcGVydHlfbGV4aWNhbF9oYW5kbGVyOgotICAgICAgICAgICAgaWYgc2VsZi5fbGV4aWNhbF9oYW5kbGVyOgotICAgICAgICAgICAgICAgIHNlbGYuX2xleGljYWxfaGFuZGxlci5zZXREb2N1bWVudExvY2F0b3IoTm9uZSkKLSAgICAgICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgICAgIHZhbHVlLnNldERvY3VtZW50TG9jYXRvcihzZWxmLl9sb2NhdG9yKQotICAgICAgICAgICAgc2VsZi5fbGV4aWNhbF9oYW5kbGVyID0gdmFsdWUKLQotICAgICAgICBlbGlmIHByb3BlcnR5ID09IHhtbC5zYXguaGFuZGxlci5wcm9wZXJ0eV9kZWNsYXJhdGlvbl9oYW5kbGVyOgotICAgICAgICAgICAgaWYgc2VsZi5fZGVjbF9oYW5kbGVyOgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY2xfaGFuZGxlci5zZXREb2N1bWVudExvY2F0b3IoTm9uZSkKLSAgICAgICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgICAgIHZhbHVlLnNldERvY3VtZW50TG9jYXRvcihzZWxmLl9sb2NhdG9yKQotICAgICAgICAgICAgc2VsZi5fZGVjbF9oYW5kbGVyID0gdmFsdWUKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgeG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uKCkKLQotICAgIGRlZiBnZXRGZWF0dXJlKHNlbGYsIGZlYXR1cmUpOgotICAgICAgICBpZiBmZWF0dXJlID09IHhtbC5zYXguaGFuZGxlci5mZWF0dXJlX25hbWVzcGFjZXM6Ci0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHhtbC5zYXgueG1scmVhZGVyLlhNTFJlYWRlci5nZXRGZWF0dXJlKHNlbGYsIGZlYXR1cmUpCi0KLSAgICBkZWYgc2V0RmVhdHVyZShzZWxmLCBmZWF0dXJlLCBlbmFibGVkKToKLSAgICAgICAgaWYgZmVhdHVyZSA9PSB4bWwuc2F4LmhhbmRsZXIuZmVhdHVyZV9uYW1lc3BhY2VzOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeG1sLnNheC54bWxyZWFkZXIuWE1MUmVhZGVyLnNldEZlYXR1cmUoc2VsZiwgZmVhdHVyZSwgZW5hYmxlZCkKLQotCi1jbGFzcyBBdHRyaWJ1dGVzKHhtbC5zYXgueG1scmVhZGVyLkF0dHJpYnV0ZXNJbXBsKToKLSAgICAjIHNlbGYuX2F0dHJzIGhhcyB0aGUgZm9ybSB7bmFtZTogKHZhbHVlLCB0eXBlKX0KLQotICAgIGRlZiBnZXRUeXBlKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNbbmFtZV1bMV0KLQotICAgIGRlZiBnZXRWYWx1ZShzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW25hbWVdWzBdCi0KLSAgICBkZWYgZ2V0VmFsdWVCeVFOYW1lKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNbbmFtZV1bMF0KLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW25hbWVdWzBdCi0KLSAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6Ci0gICAgICAgIGlmIHNlbGYuX2F0dHJzLmhhc19rZXkobmFtZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNbbmFtZV1bMF0KLSAgICAgICAgcmV0dXJuIGRlZmF1bHQKLQotICAgIGRlZiBpdGVtcyhzZWxmKToKLSAgICAgICAgTCA9IFtdCi0gICAgICAgIGZvciBuYW1lLCAodmFsdWUsIHR5cGUpIGluIHNlbGYuX2F0dHJzLml0ZW1zKCk6Ci0gICAgICAgICAgICBMLmFwcGVuZCgobmFtZSwgdmFsdWUpKQotICAgICAgICByZXR1cm4gTAotCi0gICAgZGVmIHZhbHVlcyhzZWxmKToKLSAgICAgICAgTCA9IFtdCi0gICAgICAgIGZvciB2YWx1ZSwgdHlwZSBpbiBzZWxmLl9hdHRycy52YWx1ZXMoKToKLSAgICAgICAgICAgIEwuYXBwZW5kKHZhbHVlKQotICAgICAgICByZXR1cm4gTAotCi0KLWNsYXNzIExvY2F0b3IoeG1sLnNheC54bWxyZWFkZXIuTG9jYXRvcik6Ci0gICAgX2xpbmVubyA9IC0xCi0gICAgX3B1YmxpY19pZCA9IE5vbmUKLSAgICBfc3lzdGVtX2lkID0gTm9uZQotCi0gICAgZGVmIGdldExpbmVOdW1iZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9saW5lbm8KLQotICAgIGRlZiBnZXRQdWJsaWNJZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3B1YmxpY19pZAotCi0gICAgZGVmIGdldFN5c3RlbUlkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3lzdGVtX2lkCi0KLQotZGVmIHBhcnNlKHN0cmVhbV9vcl9zdHJpbmcsIHBhcnNlcj1Ob25lKToKLSAgICBpZiB0eXBlKHN0cmVhbV9vcl9zdHJpbmcpIGluIFt0eXBlKCIiKSwgdHlwZSh1IiIpXToKLSAgICAgICAgc3RyZWFtID0gb3BlbihzdHJlYW1fb3Jfc3RyaW5nKQotICAgIGVsc2U6Ci0gICAgICAgIHN0cmVhbSA9IHN0cmVhbV9vcl9zdHJpbmcKLSAgICBpZiBub3QgcGFyc2VyOgotICAgICAgICBwYXJzZXIgPSBFU0lTUmVhZGVyKCkKLSAgICByZXR1cm4geG1sLmRvbS5wdWxsZG9tLkRPTUV2ZW50U3RyZWFtKHN0cmVhbSwgcGFyc2VyLCAoMiAqKiAxNCkgLSAyMCkKZGlmZiAtLWdpdCBhL2RvYy90b29scy9zZ21sY29udi9sYXRleDJlc2lzLnB5IGIvZG9jL3Rvb2xzL3NnbWxjb252L2xhdGV4MmVzaXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDc0ZTFkYzcuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3NnbWxjb252L2xhdGV4MmVzaXMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NTUgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0iIiJHZW5lcmF0ZSBFU0lTIGV2ZW50cyBiYXNlZCBvbiBhIExhVGVYIHNvdXJjZSBkb2N1bWVudCBhbmQKLWNvbmZpZ3VyYXRpb24gZGF0YS4KLQotVGhlIGNvbnZlcnNpb24gaXMgbm90IHN0cm9uZyBlbm91Z2ggdG8gd29yayB3aXRoIGFyYml0cmFyeSBMYVRlWAotZG9jdW1lbnRzOyBpdCBoYXMgb25seSBiZWVuIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgaGlnaGx5IHN0eWxpemVkCi1tYXJrdXAgdXNlZCBpbiB0aGUgc3RhbmRhcmQgUHl0aG9uIGRvY3VtZW50YXRpb24uICBBIGxvdCBvZgotaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lmaWMgbWFya3VwIGlzIGVuY29kZWQgaW4gdGhlIGNvbnRyb2wgdGFibGUKLXBhc3NlZCB0byB0aGUgY29udmVydCgpIGZ1bmN0aW9uOyBjaGFuZ2luZyB0aGlzIHRhYmxlIGNhbiBhbGxvdyB0aGlzCi10b29sIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBMYVRlWCBtYXJrdXBzLgotCi1UaGUgZm9ybWF0IG9mIHRoZSB0YWJsZSBpcyBsYXJnZWx5IHVuZG9jdW1lbnRlZDsgc2VlIHRoZSBjb21tZW50ZWQKLWhlYWRlcnMgd2hlcmUgdGhlIHRhYmxlIGlzIHNwZWNpZmllZCBpbiBtYWluKCkuICBUaGVyZSBpcyBubyBwcm92aXNpb24gCi10byBsb2FkIGFuIGFsdGVybmF0ZSB0YWJsZSBmcm9tIGFuIGV4dGVybmFsIGZpbGUuCi0iIiIKLQotaW1wb3J0IGVycm5vCi1pbXBvcnQgZ2V0b3B0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN0cmluZwotaW1wb3J0IHN5cwotaW1wb3J0IFVzZXJMaXN0Ci1pbXBvcnQgeG1sLnNheC5zYXh1dGlscwotCi1mcm9tIHR5cGVzIGltcG9ydCBMaXN0VHlwZSwgU3RyaW5nVHlwZSwgVHVwbGVUeXBlCi0KLXRyeToKLSAgICBmcm9tIHhtbC5wYXJzZXJzLnhtbGxpYiBpbXBvcnQgWE1MUGFyc2VyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB4bWxsaWIgaW1wb3J0IFhNTFBhcnNlcgotCi0KLWZyb20gZXNpc3Rvb2xzIGltcG9ydCBlbmNvZGUKLQotCi1ERUJVRyA9IDAKLQotCi1jbGFzcyBMYVRlWEZvcm1hdEVycm9yKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIExhVGVYU3RhY2tFcnJvcihMYVRlWEZvcm1hdEVycm9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZm91bmQsIHN0YWNrKToKLSAgICAgICAgbXNnID0gImVudmlyb25tZW50IGNsb3NlIGZvciAlcyBkb2Vzbid0IG1hdGNoO1xuICBzdGFjayA9ICVzIiBcCi0gICAgICAgICAgICAgICUgKGZvdW5kLCBzdGFjaykKLSAgICAgICAgc2VsZi5mb3VuZCA9IGZvdW5kCi0gICAgICAgIHNlbGYuc3RhY2sgPSBzdGFja1s6XQotICAgICAgICBMYVRlWEZvcm1hdEVycm9yLl9faW5pdF9fKHNlbGYsIG1zZykKLQotDAotX2JlZ2luX2Vudl9yeCA9IHJlLmNvbXBpbGUociJbXFxdYmVnaW57KFtefV0qKX0iKQotX2VuZF9lbnZfcnggPSByZS5jb21waWxlKHIiW1xcXWVuZHsoW159XSopfSIpCi1fYmVnaW5fbWFjcm9fcnggPSByZS5jb21waWxlKHIiW1xcXShbYS16QS1aXStbKl0/KSA/KHt8XHMqXG4/KSIpCi1fY29tbWVudF9yeCA9IHJlLmNvbXBpbGUoIiUrID8oLiopXG5bIFx0XSoiKQotX3RleHRfcnggPSByZS5jb21waWxlKHIiW15dfiVcXHt9XSsiKQotX29wdGlvbmFsX3J4ID0gcmUuY29tcGlsZShyIlxzKltbXShbXl1dKilbXV0iKQotIyBfcGFyYW1ldGVyX3J4IGlzIHRoaXMgY29tcGxpY2F0ZWQgdG8gYWxsb3cgey4uLn0gaW5zaWRlIGEgcGFyYW1ldGVyOwotIyB0aGlzIGlzIHVzZWZ1bCB0byBtYXRjaCB0YWJ1bGFyIGxheW91dCBzcGVjaWZpY2F0aW9ucyBsaWtlIHtjfHB7MjRwdH19Ci1fcGFyYW1ldGVyX3J4ID0gcmUuY29tcGlsZSgiWyBcbl0qeygoW157fX1dfHtbXn1dKn0pKil9IikKLV90b2tlbl9yeCA9IHJlLmNvbXBpbGUociJbYS16QS1aXVthLXpBLVowLTkuLV0qJCIpCi1fc3RhcnRfZ3JvdXBfcnggPSByZS5jb21waWxlKCJbIFxuXSp7IikKLV9zdGFydF9vcHRpb25hbF9yeCA9IHJlLmNvbXBpbGUoIlsgXG5dKltbXSIpCi0KLQotRVNDQVBFRF9DSEFSUyA9ICIkJSNeIHt9Jn4iCi0KLQotZGVmIGRiZ21zZyhtc2cpOgotICAgIGlmIERFQlVHOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKG1zZyArICJcbiIpCi0KLWRlZiBwdXNoaW5nKG5hbWUsIHBvaW50LCBkZXB0aCk6Ci0gICAgZGJnbXNnKCJwdXNoaW5nIDwlcz4gYXQgJXMiICUgKG5hbWUsIHBvaW50KSkKLQotZGVmIHBvcHBpbmcobmFtZSwgcG9pbnQsIGRlcHRoKToKLSAgICBkYmdtc2coInBvcHBpbmcgPC8lcz4gYXQgJXMiICUgKG5hbWUsIHBvaW50KSkKLQotCi1jbGFzcyBfU3RhY2soVXNlckxpc3QuVXNlckxpc3QpOgotICAgIGRlZiBhcHBlbmQoc2VsZiwgZW50cnkpOgotICAgICAgICBpZiB0eXBlKGVudHJ5KSBpcyBub3QgU3RyaW5nVHlwZToKLSAgICAgICAgICAgIHJhaXNlIExhVGVYRm9ybWF0RXJyb3IoImNhbm5vdCBwdXNoIG5vbi1zdHJpbmcgb24gc3RhY2s6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBgZW50cnlgKQotICAgICAgICAjZGJnbXNnKCIlczwlcz4iICUgKCIgIipsZW4oc2VsZi5kYXRhKSwgZW50cnkpKQotICAgICAgICBzZWxmLmRhdGEuYXBwZW5kKGVudHJ5KQotCi0gICAgZGVmIHBvcChzZWxmLCBpbmRleD0tMSk6Ci0gICAgICAgIGVudHJ5ID0gc2VsZi5kYXRhW2luZGV4XQotICAgICAgICBkZWwgc2VsZi5kYXRhW2luZGV4XQotICAgICAgICAjZGJnbXNnKCIlczwvJXM+IiAlICgiICIqbGVuKHNlbGYuZGF0YSksIGVudHJ5KSkKLQotICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBpbmRleCk6Ci0gICAgICAgIGVudHJ5ID0gc2VsZi5kYXRhW2luZGV4XQotICAgICAgICBkZWwgc2VsZi5kYXRhW2luZGV4XQotICAgICAgICAjZGJnbXNnKCIlczwvJXM+IiAlICgiICIqbGVuKHNlbGYuZGF0YSksIGVudHJ5KSkKLQotCi1kZWYgbmV3X3N0YWNrKCk6Ci0gICAgaWYgREVCVUc6Ci0gICAgICAgIHJldHVybiBfU3RhY2soKQotICAgIHJldHVybiBbXQotCi0MCi1jbGFzcyBDb252ZXJzaW9uOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZnAsIG9mcCwgdGFibGUpOgotICAgICAgICBzZWxmLndyaXRlID0gb2ZwLndyaXRlCi0gICAgICAgIHNlbGYub2ZwID0gb2ZwCi0gICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQotICAgICAgICBzZWxmLmxpbmUgPSBzdHJpbmcuam9pbihtYXAoc3RyaW5nLnJzdHJpcCwgaWZwLnJlYWRsaW5lcygpKSwgIlxuIikKLSAgICAgICAgc2VsZi5wcmVhbWJsZSA9IDEKLQotICAgIGRlZiBjb252ZXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnN1YmNvbnZlcnQoKQotCi0gICAgZGVmIHN1YmNvbnZlcnQoc2VsZiwgZW5kY2hhcj1Ob25lLCBkZXB0aD0wKToKLSAgICAgICAgIwotICAgICAgICAjIFBhcnNlcyBjb250ZW50LCBpbmNsdWRpbmcgc3ViLXN0cnVjdHVyZXMsIHVudGlsIHRoZSBjaGFyYWN0ZXIKLSAgICAgICAgIyAnZW5kY2hhcicgaXMgZm91bmQgKHdpdGggbm8gb3BlbiBzdHJ1Y3R1cmVzKSwgb3IgdW50aWwgdGhlIGVuZAotICAgICAgICAjIG9mIHRoZSBpbnB1dCBkYXRhIGlzIGVuZGNoYXIgaXMgTm9uZS4KLSAgICAgICAgIwotICAgICAgICBzdGFjayA9IG5ld19zdGFjaygpCi0gICAgICAgIGxpbmUgPSBzZWxmLmxpbmUKLSAgICAgICAgd2hpbGUgbGluZToKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gZW5kY2hhciBhbmQgbm90IHN0YWNrOgotICAgICAgICAgICAgICAgIHNlbGYubGluZSA9IGxpbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotICAgICAgICAgICAgbSA9IF9jb21tZW50X3J4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIHRleHQgPSBtLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgaWYgdGV4dDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiKENPTU1FTlRcbi0gJXMgXG4pQ09NTUVOVFxuLVxcblxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZW5jb2RlKHRleHQpKQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lW20uZW5kKCk6XQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gX2JlZ2luX2Vudl9yeC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBuYW1lID0gbS5ncm91cCgxKQotICAgICAgICAgICAgICAgIGVudHJ5ID0gc2VsZi5nZXRfZW52X2VudHJ5KG5hbWUpCi0gICAgICAgICAgICAgICAgIyByZS13cml0ZSB0byB1c2UgdGhlIG1hY3JvIGhhbmRsZXIKLSAgICAgICAgICAgICAgICBsaW5lID0gciJcJXMgJXMiICUgKG5hbWUsIGxpbmVbbS5lbmQoKTpdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gX2VuZF9lbnZfcngubWF0Y2gobGluZSkKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgIyBlbmQgb2YgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICBlbnZuYW1lID0gbS5ncm91cCgxKQotICAgICAgICAgICAgICAgIGVudHJ5ID0gc2VsZi5nZXRfZW50cnkoZW52bmFtZSkKLSAgICAgICAgICAgICAgICB3aGlsZSBzdGFjayBhbmQgZW52bmFtZSAhPSBzdGFja1stMV0gXAotICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdGFja1stMV0gaW4gZW50cnkuZW5kY2xvc2VzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIpJXNcbiIgJSBzdGFjay5wb3AoKSkKLSAgICAgICAgICAgICAgICBpZiBzdGFjayBhbmQgZW52bmFtZSA9PSBzdGFja1stMV06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiklc1xuIiAlIGVudHJ5Lm91dHB1dG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGRlbCBzdGFja1stMV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBMYVRlWFN0YWNrRXJyb3IoZW52bmFtZSwgc3RhY2spCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbbS5lbmQoKTpdCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG0gPSBfYmVnaW5fbWFjcm9fcngubWF0Y2gobGluZSkKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgIyBzdGFydCBvZiBtYWNybwotICAgICAgICAgICAgICAgIG1hY3JvbmFtZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICBpZiBtYWNyb25hbWUgPT0gImMiOgotICAgICAgICAgICAgICAgICAgICAjIFVnaCEgIFRoaXMgaXMgYSBjb21iaW5pbmcgY2hhcmFjdGVyLi4uCi0gICAgICAgICAgICAgICAgICAgIGVuZHBvcyA9IG0uZW5kKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21iaW5pbmdfY2hhcigiYyIsIGxpbmVbZW5kcG9zXSkKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbZW5kcG9zICsgMTpdCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZW50cnkgPSBzZWxmLmdldF9lbnRyeShtYWNyb25hbWUpCi0gICAgICAgICAgICAgICAgaWYgZW50cnkudmVyYmF0aW06Ci0gICAgICAgICAgICAgICAgICAgICMgbWFnaWMgY2FzZSEKLSAgICAgICAgICAgICAgICAgICAgcG9zID0gc3RyaW5nLmZpbmQobGluZSwgIlxcZW5keyVzfSIgJSBtYWNyb25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgPSBsaW5lW20uZW5kKDEpOnBvc10KLSAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKGVudHJ5Lm5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiglc1xuIiAlIGVudHJ5Lm91dHB1dG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIi0lc1xuIiAlIGVuY29kZSh0ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiKSVzXG4iICUgZW50cnkub3V0cHV0bmFtZSkKLSAgICAgICAgICAgICAgICAgICAgc3RhY2sucG9wKCkKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbcG9zICsgbGVuKCJcXGVuZHslc30iICUgbWFjcm9uYW1lKTpdCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgd2hpbGUgc3RhY2sgYW5kIHN0YWNrWy0xXSBpbiBlbnRyeS5jbG9zZXM6Ci0gICAgICAgICAgICAgICAgICAgIHRvcCA9IHN0YWNrLnBvcCgpCi0gICAgICAgICAgICAgICAgICAgIHRvcGVudHJ5ID0gc2VsZi5nZXRfZW50cnkodG9wKQotICAgICAgICAgICAgICAgICAgICBpZiB0b3BlbnRyeS5vdXRwdXRuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiKSVzXG4tXFxuXG4iICUgdG9wZW50cnkub3V0cHV0bmFtZSkKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgaWYgZW50cnkub3V0cHV0bmFtZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZW50cnkuZW1wdHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJlXG4iKQotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICBwYXJhbXMsIG9wdGlvbmFsLCBlbXB0eSwgZW52aXJvbiA9IHNlbGYuc3RhcnRfbWFjcm8obWFjcm9uYW1lKQotICAgICAgICAgICAgICAgICMgcmlwIG9mZiB0aGUgbWFjcm9uYW1lCi0gICAgICAgICAgICAgICAgaWYgcGFyYW1zOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVttLmVuZCgxKTpdCi0gICAgICAgICAgICAgICAgZWxpZiBlbXB0eToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbbS5lbmQoMSk6XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lW20uZW5kKCk6XQotICAgICAgICAgICAgICAgIG9wZW5lZCA9IDAKLSAgICAgICAgICAgICAgICBpbXBsaWVkX2NvbnRlbnQgPSAwCi0KLSAgICAgICAgICAgICAgICAjIGhhbmRsZSBhdHRyaWJ1dGUgbWFwcGluZ3MgaGVyZToKLSAgICAgICAgICAgICAgICBmb3IgcGVudHJ5IGluIHBhcmFtczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcGVudHJ5LnR5cGUgPT0gImF0dHJpYnV0ZSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwZW50cnkub3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IF9vcHRpb25hbF9yeC5tYXRjaChsaW5lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG0gYW5kIGVudHJ5Lm91dHB1dG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lW20uZW5kKCk6XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmR1bXBfYXR0cihwZW50cnksIG0uZ3JvdXAoMSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBlbnRyeS50ZXh0IGFuZCBlbnRyeS5vdXRwdXRuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFsdWUgc3VwcGxpZWQgYnkgY29udmVyc2lvbiBzcGVjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZHVtcF9hdHRyKHBlbnRyeSwgcGVudHJ5LnRleHQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBfcGFyYW1ldGVyX3J4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIExhVGVYRm9ybWF0RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgcGFyYW1ldGVyICVzIGZvciAlczogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChwZW50cnkubmFtZSwgbWFjcm9uYW1lLCBgbGluZVs6MTAwXWApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudHJ5Lm91dHB1dG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZHVtcF9hdHRyKHBlbnRyeSwgbS5ncm91cCgxKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVttLmVuZCgpOl0KLSAgICAgICAgICAgICAgICAgICAgZWxpZiBwZW50cnkudHlwZSA9PSAiY2hpbGQiOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGVudHJ5Lm9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBfb3B0aW9uYWxfcngubWF0Y2gobGluZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVttLmVuZCgpOl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZW50cnkub3V0cHV0bmFtZSBhbmQgbm90IG9wZW5lZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZCA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiglc1xuIiAlIGVudHJ5Lm91dHB1dG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQobWFjcm9uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQocGVudHJ5Lm5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiglc1xuIiAlIHBlbnRyeS5uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCItJXNcbiIgJSBlbmNvZGUobS5ncm91cCgxKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiklc1xuIiAlIHBlbnRyeS5uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wb3AoKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5vdXRwdXRuYW1lIGFuZCBub3Qgb3BlbmVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWQgPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiglc1xuIiAlIGVudHJ5Lm91dHB1dG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChlbnRyeS5uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiglc1xuIiAlIHBlbnRyeS5uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChwZW50cnkubmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmUgPSBza2lwX3doaXRlKGxpbmUpWzE6XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnN1YmNvbnZlcnQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9IiwgbGVuKHN0YWNrKSArIGRlcHRoICsgMSlbMTpdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiKSVzXG4iICUgc3RhY2sucG9wKCkpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgcGVudHJ5LnR5cGUgPT0gImNvbnRlbnQiOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGVudHJ5LmltcGxpZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGllZF9jb250ZW50ID0gMQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5vdXRwdXRuYW1lIGFuZCBub3Qgb3BlbmVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWQgPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiglc1xuIiAlIGVudHJ5Lm91dHB1dG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChlbnRyeS5uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBza2lwX3doaXRlKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZVswXSAhPSAieyI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIExhVGVYRm9ybWF0RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBjb250ZW50IGZvciAiICsgbWFjcm9uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZSA9IGxpbmVbMTpdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc3ViY29udmVydCgifSIsIGxlbihzdGFjaykgKyBkZXB0aCArIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZSBhbmQgbGluZVswXSA9PSAifSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzE6XQotICAgICAgICAgICAgICAgICAgICBlbGlmIHBlbnRyeS50eXBlID09ICJ0ZXh0IiBhbmQgcGVudHJ5LnRleHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5vdXRwdXRuYW1lIGFuZCBub3Qgb3BlbmVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZCA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoZW50cnkubmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIoJXNcbiIgJSBlbnRyeS5vdXRwdXRuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgI2RiZ21zZygiLS0tIHRleHQ6ICVzIiAlIGBwZW50cnkudGV4dGApCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCItJXNcbiIgJSBlbmNvZGUocGVudHJ5LnRleHQpKQotICAgICAgICAgICAgICAgICAgICBlbGlmIHBlbnRyeS50eXBlID09ICJlbnRpdHlyZWYiOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiJiVzXG4iICUgcGVudHJ5Lm5hbWUpCi0gICAgICAgICAgICAgICAgaWYgZW50cnkub3V0cHV0bmFtZToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9wZW5lZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiglc1xuIiAlIGVudHJ5Lm91dHB1dG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoZW50cnkubmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGltcGxpZWRfY29udGVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiklc1xuIiAlIGVudHJ5Lm91dHB1dG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wb3AoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBsaW5lWzBdID09IGVuZGNoYXIgYW5kIG5vdCBzdGFjazoKLSAgICAgICAgICAgICAgICBzZWxmLmxpbmUgPSBsaW5lWzE6XQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxpbmUKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gIn0iOgotICAgICAgICAgICAgICAgICMgZW5kIG9mIG1hY3JvIG9yIGdyb3VwCi0gICAgICAgICAgICAgICAgbWFjcm9uYW1lID0gc3RhY2tbLTFdCi0gICAgICAgICAgICAgICAgaWYgbWFjcm9uYW1lOgotICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uID0gc2VsZi50YWJsZVttYWNyb25hbWVdCi0gICAgICAgICAgICAgICAgICAgIGlmIGNvbnZlcnNpb24ub3V0cHV0bmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCBpdCB3YXMganVzdCBhIGJhcmUgZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiklc1xuIiAlIGNvbnZlcnNpb24ub3V0cHV0bmFtZSkKLSAgICAgICAgICAgICAgICBkZWwgc3RhY2tbLTFdCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbMTpdCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gIn4iOgotICAgICAgICAgICAgICAgICMgZG9uJ3Qgd29ycnkgYWJvdXQgdGhlICJ0aWUiIGFzcGVjdCBvZiB0aGlzIGNvbW1hbmQKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZVsxOl0KLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCItIFxuIikKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGluZVswXSA9PSAieyI6Ci0gICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKCIiKQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzE6XQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBsaW5lWzBdID09ICJcXCIgYW5kIGxpbmVbMV0gaW4gRVNDQVBFRF9DSEFSUzoKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCItJXNcbiIgJSBlbmNvZGUobGluZVsxXSkpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbMjpdCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGxpbmVbOjJdID09IHIiXFwiOgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIihCUkVBS1xuKUJSRUFLXG4iKQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzI6XQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBsaW5lWzoyXSA9PSByIlxfIjoKLSAgICAgICAgICAgICAgICBsaW5lID0gIl8iICsgbGluZVsyOl0KLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGluZVs6Ml0gaW4gKHIiXCciLCByJ1wiJyk6Ci0gICAgICAgICAgICAgICAgIyBjb21iaW5pbmcgY2hhcmFjdGVycy4uLgotICAgICAgICAgICAgICAgIHNlbGYuY29tYmluaW5nX2NoYXIobGluZVsxXSwgbGluZVsyXSkKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZVszOl0KLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbSA9IF90ZXh0X3J4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIHRleHQgPSBlbmNvZGUobS5ncm91cCgpKQotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIi0lc1xuIiAlIHRleHQpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbbS5lbmQoKTpdCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlIGJlY2F1c2Ugb2YgXGl0ZW1bXQotICAgICAgICAgICAgIyBYWFggY2FuIHdlIGF4ZSB0aGlzPz8/Ci0gICAgICAgICAgICBpZiBsaW5lWzBdID09ICJdIjoKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCItXVxuIikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZVsxOl0KLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSBsb29wcwotICAgICAgICAgICAgZXh0cmEgPSAiIgotICAgICAgICAgICAgaWYgbGVuKGxpbmUpID4gMTAwOgotICAgICAgICAgICAgICAgIGV4dHJhID0gIi4uLiIKLSAgICAgICAgICAgIHJhaXNlIExhVGVYRm9ybWF0RXJyb3IoImNvdWxkIG5vdCBpZGVudGlmeSBtYXJrdXA6ICVzJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGBsaW5lWzoxMDBdYCwgZXh0cmEpKQotICAgICAgICB3aGlsZSBzdGFjazoKLSAgICAgICAgICAgIGVudHJ5ID0gc2VsZi5nZXRfZW50cnkoc3RhY2tbLTFdKQotICAgICAgICAgICAgaWYgZW50cnkuY2xvc2VzOgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiklc1xuLSVzXG4iICUgKGVudHJ5Lm91dHB1dG5hbWUsIGVuY29kZSgiXG4iKSkpCi0gICAgICAgICAgICAgICAgZGVsIHN0YWNrWy0xXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBzdGFjazoKLSAgICAgICAgICAgIHJhaXNlIExhVGVYRm9ybWF0RXJyb3IoImVsZW1lbnRzIHJlbWFpbiBvbiBzdGFjazogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0cmluZy5qb2luKHN0YWNrLCAiLCAiKSkKLSAgICAgICAgIyBvdGhlcndpc2Ugd2UganVzdCByYW4gb3V0IG9mIGlucHV0IGhlcmUuLi4KLQotICAgICMgVGhpcyBpcyBhIHJlYWxseSBsaW1pdGVkIHRhYmxlIG9mIGNvbWJpbmF0aW9ucywgYnV0IGl0IHdpbGwgaGF2ZQotICAgICMgdG8gZG8gZm9yIG5vdy4KLSAgICBfY29tYmluYXRpb25zID0gewotICAgICAgICAoImMiLCAiYyIpOiAweDAwRTcsCi0gICAgICAgICgiJyIsICJlIik6IDB4MDBFOSwKLSAgICAgICAgKCciJywgIm8iKTogMHgwMEY2LAotICAgICAgICB9Ci0KLSAgICBkZWYgY29tYmluaW5nX2NoYXIoc2VsZiwgcHJlZml4LCBjaGFyKToKLSAgICAgICAgb3JkaW5hbCA9IHNlbGYuX2NvbWJpbmF0aW9uc1socHJlZml4LCBjaGFyKV0KLSAgICAgICAgc2VsZi53cml0ZSgiLVxcJSUlZDtcbiIgJSBvcmRpbmFsKQotCi0gICAgZGVmIHN0YXJ0X21hY3JvKHNlbGYsIG5hbWUpOgotICAgICAgICBjb252ZXJzaW9uID0gc2VsZi5nZXRfZW50cnkobmFtZSkKLSAgICAgICAgcGFyYW1ldGVycyA9IGNvbnZlcnNpb24ucGFyYW1ldGVycwotICAgICAgICBvcHRpb25hbCA9IHBhcmFtZXRlcnMgYW5kIHBhcmFtZXRlcnNbMF0ub3B0aW9uYWwKLSAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMsIG9wdGlvbmFsLCBjb252ZXJzaW9uLmVtcHR5LCBjb252ZXJzaW9uLmVudmlyb25tZW50Ci0KLSAgICBkZWYgZ2V0X2VudHJ5KHNlbGYsIG5hbWUpOgotICAgICAgICBlbnRyeSA9IHNlbGYudGFibGUuZ2V0KG5hbWUpCi0gICAgICAgIGlmIGVudHJ5IGlzIE5vbmU6Ci0gICAgICAgICAgICBkYmdtc2coImdldF9lbnRyeSglcykgZmFpbGluZzsgYnVpbGRpbmcgZGVmYXVsdCBlbnRyeSEiICUgYG5hbWVgKQotICAgICAgICAgICAgIyBub3QgZGVmaW5lZDsgYnVpbGQgYSBkZWZhdWx0IGVudHJ5OgotICAgICAgICAgICAgZW50cnkgPSBUYWJsZUVudHJ5KG5hbWUpCi0gICAgICAgICAgICBlbnRyeS5oYXNfY29udGVudCA9IDEKLSAgICAgICAgICAgIGVudHJ5LnBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcigiY29udGVudCIpKQotICAgICAgICAgICAgc2VsZi50YWJsZVtuYW1lXSA9IGVudHJ5Ci0gICAgICAgIHJldHVybiBlbnRyeQotCi0gICAgZGVmIGdldF9lbnZfZW50cnkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGVudHJ5ID0gc2VsZi50YWJsZS5nZXQobmFtZSkKLSAgICAgICAgaWYgZW50cnkgaXMgTm9uZToKLSAgICAgICAgICAgICMgbm90IGRlZmluZWQ7IGJ1aWxkIGEgZGVmYXVsdCBlbnRyeToKLSAgICAgICAgICAgIGVudHJ5ID0gVGFibGVFbnRyeShuYW1lLCAxKQotICAgICAgICAgICAgZW50cnkuaGFzX2NvbnRlbnQgPSAxCi0gICAgICAgICAgICBlbnRyeS5wYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIoImNvbnRlbnQiKSkKLSAgICAgICAgICAgIGVudHJ5LnBhcmFtZXRlcnNbLTFdLmltcGxpZWQgPSAxCi0gICAgICAgICAgICBzZWxmLnRhYmxlW25hbWVdID0gZW50cnkKLSAgICAgICAgZWxpZiBub3QgZW50cnkuZW52aXJvbm1lbnQ6Ci0gICAgICAgICAgICByYWlzZSBMYVRlWEZvcm1hdEVycm9yKAotICAgICAgICAgICAgICAgIG5hbWUgKyAiIGlzIGRlZmluZWQgYXMgYSBtYWNybzsgZXhwZWN0ZWQgZW52aXJvbm1lbnQiKQotICAgICAgICByZXR1cm4gZW50cnkKLQotICAgIGRlZiBkdW1wX2F0dHIoc2VsZiwgcGVudHJ5LCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5vdCAocGVudHJ5Lm5hbWUgYW5kIHZhbHVlKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBfdG9rZW5fcngubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgZHR5cGUgPSAiVE9LRU4iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkdHlwZSA9ICJDREFUQSIKLSAgICAgICAgc2VsZi53cml0ZSgiQSVzICVzICVzXG4iICUgKHBlbnRyeS5uYW1lLCBkdHlwZSwgZW5jb2RlKHZhbHVlKSkpCi0KLQotZGVmIGNvbnZlcnQoaWZwLCBvZnAsIHRhYmxlKToKLSAgICBjID0gQ29udmVyc2lvbihpZnAsIG9mcCwgdGFibGUpCi0gICAgdHJ5OgotICAgICAgICBjLmNvbnZlcnQoKQotICAgIGV4Y2VwdCBJT0Vycm9yLCAoZXJyLCBtc2cpOgotICAgICAgICBpZiBlcnIgIT0gZXJybm8uRVBJUEU6Ci0gICAgICAgICAgICByYWlzZQotCi0KLWRlZiBza2lwX3doaXRlKGxpbmUpOgotICAgIHdoaWxlIGxpbmUgYW5kIGxpbmVbMF0gaW4gIiAlXG5cdFxyIjoKLSAgICAgICAgbGluZSA9IHN0cmluZy5sc3RyaXAobGluZVsxOl0pCi0gICAgcmV0dXJuIGxpbmUKLQotCi0KLWNsYXNzIFRhYmxlRW50cnk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGVudmlyb25tZW50PTApOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYub3V0cHV0bmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50Ci0gICAgICAgIHNlbGYuZW1wdHkgPSBub3QgZW52aXJvbm1lbnQKLSAgICAgICAgc2VsZi5oYXNfY29udGVudCA9IDAKLSAgICAgICAgc2VsZi52ZXJiYXRpbSA9IDAKLSAgICAgICAgc2VsZi5hdXRvX2Nsb3NlID0gMAotICAgICAgICBzZWxmLnBhcmFtZXRlcnMgPSBbXQotICAgICAgICBzZWxmLmNsb3NlcyA9IFtdCi0gICAgICAgIHNlbGYuZW5kY2xvc2VzID0gW10KLQotY2xhc3MgUGFyYW1ldGVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlLCBuYW1lPU5vbmUsIG9wdGlvbmFsPTApOgotICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5vcHRpb25hbCA9IG9wdGlvbmFsCi0gICAgICAgIHNlbGYudGV4dCA9ICcnCi0gICAgICAgIHNlbGYuaW1wbGllZCA9IDAKLQotCi1jbGFzcyBUYWJsZVBhcnNlcihYTUxQYXJzZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWJsZT1Ob25lKToKLSAgICAgICAgaWYgdGFibGUgaXMgTm9uZToKLSAgICAgICAgICAgIHRhYmxlID0ge30KLSAgICAgICAgc2VsZi5fX3RhYmxlID0gdGFibGUKLSAgICAgICAgc2VsZi5fX2N1cnJlbnQgPSBOb25lCi0gICAgICAgIHNlbGYuX19idWZmZXIgPSAnJwotICAgICAgICBYTUxQYXJzZXIuX19pbml0X18oc2VsZikKLQotICAgIGRlZiBnZXRfdGFibGUoc2VsZik6Ci0gICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLl9fdGFibGUudmFsdWVzKCk6Ci0gICAgICAgICAgICBpZiBlbnRyeS5lbnZpcm9ubWVudCBhbmQgbm90IGVudHJ5Lmhhc19jb250ZW50OgotICAgICAgICAgICAgICAgIHAgPSBQYXJhbWV0ZXIoImNvbnRlbnQiKQotICAgICAgICAgICAgICAgIHAuaW1wbGllZCA9IDEKLSAgICAgICAgICAgICAgICBlbnRyeS5wYXJhbWV0ZXJzLmFwcGVuZChwKQotICAgICAgICAgICAgICAgIGVudHJ5Lmhhc19jb250ZW50ID0gMQotICAgICAgICByZXR1cm4gc2VsZi5fX3RhYmxlCi0KLSAgICBkZWYgc3RhcnRfZW52aXJvbm1lbnQoc2VsZiwgYXR0cnMpOgotICAgICAgICBuYW1lID0gYXR0cnNbIm5hbWUiXQotICAgICAgICBzZWxmLl9fY3VycmVudCA9IFRhYmxlRW50cnkobmFtZSwgZW52aXJvbm1lbnQ9MSkKLSAgICAgICAgc2VsZi5fX2N1cnJlbnQudmVyYmF0aW0gPSBhdHRycy5nZXQoInZlcmJhdGltIikgPT0gInllcyIKLSAgICAgICAgaWYgYXR0cnMuaGFzX2tleSgib3V0cHV0bmFtZSIpOgotICAgICAgICAgICAgc2VsZi5fX2N1cnJlbnQub3V0cHV0bmFtZSA9IGF0dHJzLmdldCgib3V0cHV0bmFtZSIpCi0gICAgICAgIHNlbGYuX19jdXJyZW50LmVuZGNsb3NlcyA9IHN0cmluZy5zcGxpdChhdHRycy5nZXQoImVuZGNsb3NlcyIsICIiKSkKLSAgICBkZWYgZW5kX2Vudmlyb25tZW50KHNlbGYpOgotICAgICAgICBzZWxmLmVuZF9tYWNybygpCi0KLSAgICBkZWYgc3RhcnRfbWFjcm8oc2VsZiwgYXR0cnMpOgotICAgICAgICBuYW1lID0gYXR0cnNbIm5hbWUiXQotICAgICAgICBzZWxmLl9fY3VycmVudCA9IFRhYmxlRW50cnkobmFtZSkKLSAgICAgICAgc2VsZi5fX2N1cnJlbnQuY2xvc2VzID0gc3RyaW5nLnNwbGl0KGF0dHJzLmdldCgiY2xvc2VzIiwgIiIpKQotICAgICAgICBpZiBhdHRycy5oYXNfa2V5KCJvdXRwdXRuYW1lIik6Ci0gICAgICAgICAgICBzZWxmLl9fY3VycmVudC5vdXRwdXRuYW1lID0gYXR0cnMuZ2V0KCJvdXRwdXRuYW1lIikKLSAgICBkZWYgZW5kX21hY3JvKHNlbGYpOgotICAgICAgICBzZWxmLl9fdGFibGVbc2VsZi5fX2N1cnJlbnQubmFtZV0gPSBzZWxmLl9fY3VycmVudAotICAgICAgICBzZWxmLl9fY3VycmVudCA9IE5vbmUKLQotICAgIGRlZiBzdGFydF9hdHRyaWJ1dGUoc2VsZiwgYXR0cnMpOgotICAgICAgICBuYW1lID0gYXR0cnMuZ2V0KCJuYW1lIikKLSAgICAgICAgb3B0aW9uYWwgPSBhdHRycy5nZXQoIm9wdGlvbmFsIikgPT0gInllcyIKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIHAgPSBQYXJhbWV0ZXIoImF0dHJpYnV0ZSIsIG5hbWUsIG9wdGlvbmFsPW9wdGlvbmFsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcCA9IFBhcmFtZXRlcigiYXR0cmlidXRlIiwgb3B0aW9uYWw9b3B0aW9uYWwpCi0gICAgICAgIHNlbGYuX19jdXJyZW50LnBhcmFtZXRlcnMuYXBwZW5kKHApCi0gICAgICAgIHNlbGYuX19idWZmZXIgPSAnJwotICAgIGRlZiBlbmRfYXR0cmlidXRlKHNlbGYpOgotICAgICAgICBzZWxmLl9fY3VycmVudC5wYXJhbWV0ZXJzWy0xXS50ZXh0ID0gc2VsZi5fX2J1ZmZlcgotCi0gICAgZGVmIHN0YXJ0X2VudGl0eXJlZihzZWxmLCBhdHRycyk6Ci0gICAgICAgIG5hbWUgPSBhdHRyc1sibmFtZSJdCi0gICAgICAgIHAgPSBQYXJhbWV0ZXIoImVudGl0eXJlZiIsIG5hbWUpCi0gICAgICAgIHNlbGYuX19jdXJyZW50LnBhcmFtZXRlcnMuYXBwZW5kKHApCi0KLSAgICBkZWYgc3RhcnRfY2hpbGQoc2VsZiwgYXR0cnMpOgotICAgICAgICBuYW1lID0gYXR0cnNbIm5hbWUiXQotICAgICAgICBwID0gUGFyYW1ldGVyKCJjaGlsZCIsIG5hbWUsIGF0dHJzLmdldCgib3B0aW9uYWwiKSA9PSAieWVzIikKLSAgICAgICAgc2VsZi5fX2N1cnJlbnQucGFyYW1ldGVycy5hcHBlbmQocCkKLSAgICAgICAgc2VsZi5fX2N1cnJlbnQuZW1wdHkgPSAwCi0KLSAgICBkZWYgc3RhcnRfY29udGVudChzZWxmLCBhdHRycyk6Ci0gICAgICAgIHAgPSBQYXJhbWV0ZXIoImNvbnRlbnQiKQotICAgICAgICBwLmltcGxpZWQgPSBhdHRycy5nZXQoImltcGxpZWQiKSA9PSAieWVzIgotICAgICAgICBpZiBzZWxmLl9fY3VycmVudC5lbnZpcm9ubWVudDoKLSAgICAgICAgICAgIHAuaW1wbGllZCA9IDEKLSAgICAgICAgc2VsZi5fX2N1cnJlbnQucGFyYW1ldGVycy5hcHBlbmQocCkKLSAgICAgICAgc2VsZi5fX2N1cnJlbnQuaGFzX2NvbnRlbnQgPSAxCi0gICAgICAgIHNlbGYuX19jdXJyZW50LmVtcHR5ID0gMAotCi0gICAgZGVmIHN0YXJ0X3RleHQoc2VsZiwgYXR0cnMpOgotICAgICAgICBzZWxmLl9fY3VycmVudC5lbXB0eSA9IDAKLSAgICAgICAgc2VsZi5fX2J1ZmZlciA9ICcnCi0gICAgZGVmIGVuZF90ZXh0KHNlbGYpOgotICAgICAgICBwID0gUGFyYW1ldGVyKCJ0ZXh0IikKLSAgICAgICAgcC50ZXh0ID0gc2VsZi5fX2J1ZmZlcgotICAgICAgICBzZWxmLl9fY3VycmVudC5wYXJhbWV0ZXJzLmFwcGVuZChwKQotCi0gICAgZGVmIGhhbmRsZV9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLl9fYnVmZmVyID0gc2VsZi5fX2J1ZmZlciArIGRhdGEKLQotCi1kZWYgbG9hZF90YWJsZShmcCwgdGFibGU9Tm9uZSk6Ci0gICAgcGFyc2VyID0gVGFibGVQYXJzZXIodGFibGU9dGFibGUpCi0gICAgcGFyc2VyLmZlZWQoZnAucmVhZCgpKQotICAgIHBhcnNlci5jbG9zZSgpCi0gICAgcmV0dXJuIHBhcnNlci5nZXRfdGFibGUoKQotCi0KLWRlZiBtYWluKCk6Ci0gICAgZ2xvYmFsIERFQlVHCi0gICAgIwotICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgIkQiLCBbImRlYnVnIl0pCi0gICAgZm9yIG9wdCwgYXJnIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCBpbiAoIi1EIiwgIi0tZGVidWciKToKLSAgICAgICAgICAgIERFQlVHID0gREVCVUcgKyAxCi0gICAgaWYgbGVuKGFyZ3MpID09IDA6Ci0gICAgICAgIGlmcCA9IHN5cy5zdGRpbgotICAgICAgICBvZnAgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oYXJncykgPT0gMToKLSAgICAgICAgaWZwID0gb3BlbihhcmdzKQotICAgICAgICBvZnAgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgaWZwID0gb3BlbihhcmdzWzBdKQotICAgICAgICBvZnAgPSBvcGVuKGFyZ3NbMV0sICJ3IikKLSAgICBlbHNlOgotICAgICAgICB1c2FnZSgpCi0gICAgICAgIHN5cy5leGl0KDIpCi0KLSAgICB0YWJsZSA9IGxvYWRfdGFibGUob3Blbihvcy5wYXRoLmpvaW4oc3lzLnBhdGhbMF0sICdjb252ZXJzaW9uLnhtbCcpKSkKLSAgICBjb252ZXJ0KGlmcCwgb2ZwLCB0YWJsZSkKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3NnbWxjb252L21ha2UucnVsZXMgYi9kb2MvdG9vbHMvc2dtbGNvbnYvbWFrZS5ydWxlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1NzljNS4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvc2dtbGNvbnYvbWFrZS5ydWxlcworKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMgLSotIG1ha2VmaWxlIC0qLQotIwotIyBFeHRyYSBtYWdpYyBuZWVkZWQgYnkgdGhlIExhVGVYLT5YTUwgY29udmVyc2lvbiBwcm9jZXNzLiAgVGhpcyByZXF1aXJlcwotIyAkKFRPT0xTRElSKSB0byBiZSBwcm9wZXJseSBkZWZpbmVkLgotCi1ET0NGSVhFUj0JJChUT09MU0RJUikvc2dtbGNvbnYvZG9jZml4ZXIucHkKLUVTSVMyTUw9CSQoVE9PTFNESVIpL3NnbWxjb252L2VzaXMyc2dtbC5weQotTEFURVgyRVNJUz0JJChUT09MU0RJUikvc2dtbGNvbnYvbGF0ZXgyZXNpcy5weQotQ09OVkVSU0lPTj0JJChUT09MU0RJUikvc2dtbGNvbnYvY29udmVyc2lvbi54bWwKLQotRVNJU1RBUkdFVFM9CSQocGF0c3Vic3QgJS50ZXgsJS5lc2lzLCQod2lsZGNhcmQgKi50ZXgpKQotRVNJUzFUQVJHRVRTPQkkKHBhdHN1YnN0ICUudGV4LCUuZXNpczEsJCh3aWxkY2FyZCAqLnRleCkpCi1YTUxUQVJHRVRTPQkkKHBhdHN1YnN0ICUudGV4LCUueG1sLCQod2lsZGNhcmQgKi50ZXgpKQotCi1MMkVGTEFHUz0KLQotYWxsOgl4bWwKLQotZXNpczoJJChFU0lTVEFSR0VUUykKLWVzaXMxOgkkKEVTSVMxVEFSR0VUUykKLXhtbDoJJChYTUxUQVJHRVRTKQotCi1FU0lTVE9PTFM9CSQoVE9PTFNESVIpL3NnbWxjb252L2VzaXN0b29scy5weQotCi0kKEVTSVNUQVJHRVRTKTogJChMQVRFWDJFU0lTKSAkKERPQ0ZJWEVSKSAkKEVTSVNUT09MUykgJChDT05WRVJTSU9OKQotJChFU0lTMVRBUkdFVFMpOiAkKExBVEVYMkVTSVMpICQoQ09OVkVSU0lPTikKLSMgVGhpcyB2YXJpYW50IGlzIGVhc2llciB0byB3b3JrIHdpdGggd2hpbGUgZGVidWdnaW5nIHRoZSBjb252ZXJzaW9uIHNwZWM6Ci0jJChFU0lTVEFSR0VUUyk6ICQoTEFURVgyRVNJUykgJChET0NGSVhFUikgJChFU0lTVE9PTFMpCi0kKFhNTFRBUkdFVFMpOiAkKEVTSVMyTUwpCi0KLQotLlNVRkZJWEVTOiAuZXNpcyAuZXNpczEgLnRleCAueG1sCi0KLS50ZXguZXNpczE6Ci0JJChMQVRFWDJFU0lTKSAkKEwyRUZMQUdTKSAkPCAkQAotCi0uZXNpczEuZXNpczoKLQkkKERPQ0ZJWEVSKSAkPCAkQAotCi0uZXNpcy54bWw6Ci0JJChFU0lTMk1MKSAtLXhtbCAkPCAkQAotCi0KLWNsZWFuOgotCXJtIC1mICouZXNpcyAqLmVzaXMxCi0KLWNsb2JiZXI6IGNsZWFuCi0Jcm0gLWYgKi54bWwKZGlmZiAtLWdpdCBhL2RvYy90b29scy9zdXBwb3J0LnB5IGIvZG9jL3Rvb2xzL3N1cHBvcnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZjA0YTMuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3N1cHBvcnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotIiIiTWlzY2VsbGFuZW91cyBzdXBwb3J0IGNvZGUgc2hhcmVkIGJ5IHNvbWUgb2YgdGhlIHRvb2wgc2NyaXB0cy4KLQotVGhpcyBpbmNsdWRlcyBvcHRpb24gcGFyc2luZyBjb2RlLCBIVE1MIGZvcm1hdHRpbmcgY29kZSwgYW5kIGEgY291cGxlIG9mCi11c2VmdWwgaGVscGVycy4KLQotIiIiCi1fX3ZlcnNpb25fXyA9ICckUmV2aXNpb246IDEuMS4xLjEgJCcKLQotCi1pbXBvcnQgZ2V0b3B0Ci1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgT3B0aW9uczoKLSAgICBfX3Nob3J0X2FyZ3MgPSAiYTpjOmhvOiIKLSAgICBfX2xvbmdfYXJncyA9IFsKLSAgICAgICAgIyBzY3JpcHQgY29udHJvbHMKLSAgICAgICAgImNvbHVtbnM9IiwgImhlbHAiLCAib3V0cHV0PSIsCi0KLSAgICAgICAgIyBjb250ZW50IGNvbXBvbmVudHMKLSAgICAgICAgImFkZHJlc3M9IiwgImljb25zZXJ2ZXI9IiwKLSAgICAgICAgInRpdGxlPSIsICJ1cGxpbms9IiwgInVwdGl0bGU9Il0KLQotICAgIG91dHB1dGZpbGUgPSAiLSIKLSAgICBjb2x1bW5zID0gMQotICAgIGxldHRlcnMgPSAwCi0gICAgdXBsaW5rID0gIi4vIgotICAgIHVwdGl0bGUgPSAiUHl0aG9uIERvY3VtZW50YXRpb24gSW5kZXgiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuYXJncyA9IFtdCi0gICAgICAgIHNlbGYudmFyaWFibGVzID0geyJhZGRyZXNzIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpY29uc2VydmVyIjogImljb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImltZ3R5cGUiOiAiZ2lmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInRpdGxlIjogIkdsb2JhbCBNb2R1bGUgSW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICBkZWYgYWRkX2FyZ3Moc2VsZiwgc2hvcnQ9Tm9uZSwgbG9uZz1Ob25lKToKLSAgICAgICAgaWYgc2hvcnQ6Ci0gICAgICAgICAgICBzZWxmLl9fc2hvcnRfYXJncyA9IHNlbGYuX19zaG9ydF9hcmdzICsgc2hvcnQKLSAgICAgICAgaWYgbG9uZzoKLSAgICAgICAgICAgIHNlbGYuX19sb25nX2FyZ3MgPSBzZWxmLl9fbG9uZ19hcmdzICsgbG9uZwotCi0gICAgZGVmIHBhcnNlKHNlbGYsIGFyZ3MpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCBzZWxmLl9fc2hvcnRfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19sb25nX2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3I6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVycgotICAgICAgICAgICAgc2VsZi51c2FnZSgpCi0gICAgICAgICAgICBzeXMuZXhpdCgyKQotICAgICAgICBzZWxmLmFyZ3MgPSBzZWxmLmFyZ3MgKyBhcmdzCi0gICAgICAgIGZvciBvcHQsIHZhbCBpbiBvcHRzOgotICAgICAgICAgICAgaWYgb3B0IGluICgiLWEiLCAiLS1hZGRyZXNzIik6Ci0gICAgICAgICAgICAgICAgdmFsID0gc3RyaW5nLnN0cmlwKHZhbCkKLSAgICAgICAgICAgICAgICBpZiB2YWw6Ci0gICAgICAgICAgICAgICAgICAgIHZhbCA9ICI8YWRkcmVzcz5cbiVzXG48L2FkZHJlc3M+XG4iICUgdmFsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYudmFyaWFibGVzWyJhZGRyZXNzIl0gPSB2YWwKLSAgICAgICAgICAgIGVsaWYgb3B0IGluICgiLWgiLCAiLS1oZWxwIik6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2FnZSgpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoKQotICAgICAgICAgICAgZWxpZiBvcHQgaW4gKCItbyIsICItLW91dHB1dCIpOgotICAgICAgICAgICAgICAgIHNlbGYub3V0cHV0ZmlsZSA9IHZhbAotICAgICAgICAgICAgZWxpZiBvcHQgaW4gKCItYyIsICItLWNvbHVtbnMiKToKLSAgICAgICAgICAgICAgICBzZWxmLmNvbHVtbnMgPSBpbnQodmFsKQotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tdGl0bGUiOgotICAgICAgICAgICAgICAgIHNlbGYudmFyaWFibGVzWyJ0aXRsZSJdID0gdmFsLnN0cmlwKCkKLSAgICAgICAgICAgIGVsaWYgb3B0ID09ICItLXVwbGluayI6Ci0gICAgICAgICAgICAgICAgc2VsZi51cGxpbmsgPSB2YWwuc3RyaXAoKQotICAgICAgICAgICAgZWxpZiBvcHQgPT0gIi0tdXB0aXRsZSI6Ci0gICAgICAgICAgICAgICAgc2VsZi51cHRpdGxlID0gdmFsLnN0cmlwKCkKLSAgICAgICAgICAgIGVsaWYgb3B0ID09ICItLWljb25zZXJ2ZXIiOgotICAgICAgICAgICAgICAgIHNlbGYudmFyaWFibGVzWyJpY29uc2VydmVyIl0gPSB2YWwuc3RyaXAoKSBvciAiLiIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfb3B0aW9uKG9wdCwgdmFsKQotICAgICAgICBpZiBzZWxmLnVwbGluayBhbmQgc2VsZi51cHRpdGxlOgotICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbInVwbGlua2FsdCJdID0gInVwIgotICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbInVwbGlua2ljb24iXSA9ICJ1cCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudmFyaWFibGVzWyJ1cGxpbmthbHQiXSA9ICIiCi0gICAgICAgICAgICBzZWxmLnZhcmlhYmxlc1sidXBsaW5raWNvbiJdID0gImJsYW5rIgotICAgICAgICBzZWxmLnZhcmlhYmxlc1sidXBsaW5rIl0gPSBzZWxmLnVwbGluawotICAgICAgICBzZWxmLnZhcmlhYmxlc1sidXB0aXRsZSJdID0gc2VsZi51cHRpdGxlCi0KLSAgICBkZWYgaGFuZGxlX29wdGlvbihzZWxmLCBvcHQsIHZhbCk6Ci0gICAgICAgIHJhaXNlIGdldG9wdC5lcnJvcigib3B0aW9uICVzIG5vdCByZWNvZ25pemVkIiAlIG9wdCkKLQotICAgIGRlZiBnZXRfaGVhZGVyKHNlbGYpOgotICAgICAgICByZXR1cm4gSEVBRCAlIHNlbGYudmFyaWFibGVzCi0KLSAgICBkZWYgZ2V0X2Zvb3RlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIFRBSUwgJSBzZWxmLnZhcmlhYmxlcwotCi0gICAgZGVmIGdldF9vdXRwdXRfZmlsZShzZWxmLCBmaWxlbmFtZT1Ob25lKToKLSAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5vdXRwdXRmaWxlCi0gICAgICAgIGlmIGZpbGVuYW1lID09ICItIjoKLSAgICAgICAgICAgIHJldHVybiBzeXMuc3Rkb3V0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgInciKQotCi0KLU5BVklHQVRJT04gPSAnJydcCi08ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uIj4KLTx0YWJsZSB3aWR0aD0iMTAwJSUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMiI+Ci08dHI+Ci08dGQ+PGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGFsaWduPSJib3R0b20iIGJvcmRlcj0iMCIgYWx0PSIiCi0gc3JjPSIlKGljb25zZXJ2ZXIpcy9ibGFuay4lKGltZ3R5cGUpcyI+PC90ZD4KLTx0ZD48YSBocmVmPSIlKHVwbGluaylzIgotIHRpdGxlPSIlKHVwdGl0bGUpcyI+PGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGFsaWduPSJib3R0b20iIGJvcmRlcj0iMCIKLSBhbHQ9IiUodXBsaW5rYWx0KXMiCi0gc3JjPSIlKGljb25zZXJ2ZXIpcy8lKHVwbGlua2ljb24pcy4lKGltZ3R5cGUpcyI+PC9hPjwvdGQ+Ci08dGQ+PGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGFsaWduPSJib3R0b20iIGJvcmRlcj0iMCIgYWx0PSIiCi0gc3JjPSIlKGljb25zZXJ2ZXIpcy9ibGFuay4lKGltZ3R5cGUpcyI+PC90ZD4KLTx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSUiPiUodGl0bGUpczwvdGQ+Ci08dGQ+PGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGFsaWduPSJib3R0b20iIGJvcmRlcj0iMCIgYWx0PSIiCi0gc3JjPSIlKGljb25zZXJ2ZXIpcy9ibGFuay4lKGltZ3R5cGUpcyI+PC90ZD4KLTx0ZD48aW1nIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgYWxpZ249ImJvdHRvbSIgYm9yZGVyPSIwIiBhbHQ9IiIKLSBzcmM9IiUoaWNvbnNlcnZlcilzL2JsYW5rLiUoaW1ndHlwZSlzIj48L3RkPgotPHRkPjxpbWcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBhbGlnbj0iYm90dG9tIiBib3JkZXI9IjAiIGFsdD0iIgotIHNyYz0iJShpY29uc2VydmVyKXMvYmxhbmsuJShpbWd0eXBlKXMiPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08YiBjbGFzcz0ibmF2bGFiZWwiPlVwOjwvYj4gPHNwYW4gY2xhc3M9InNlY3RyZWYiPjxhIGhyZWY9IiUodXBsaW5rKXMiCi0gdGl0bGU9IiUodXB0aXRsZSlzIj4lKHVwdGl0bGUpczwvQT48L3NwYW4+Ci08YnI+PC9kaXY+Ci0nJycKLQotSEVBRCA9ICcnJ1wKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotICA8dGl0bGU+JSh0aXRsZSlzPC90aXRsZT4KLSAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiUodGl0bGUpcyI+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotICA8bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9ImxpYi9saWIuY3NzIj4KLTwvaGVhZD4KLTxib2R5PgotJycnICsgTkFWSUdBVElPTiArICcnJ1wKLTxocj4KLQotPGgyPiUodGl0bGUpczwvaDI+Ci0KLScnJwotCi1UQUlMID0gIjxocj5cbiIgKyBOQVZJR0FUSU9OICsgJycnXAotJShhZGRyZXNzKXM8L2JvZHk+Ci08L2h0bWw+Ci0nJycKZGlmZiAtLWdpdCBhL2RvYy90b29scy90ZW1wbGF0ZXMvaG93dG8udGV4IGIvZG9jL3Rvb2xzL3RlbXBsYXRlcy9ob3d0by50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjYjIxM2EuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RlbXBsYXRlcy9ob3d0by50ZXgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotXGRvY3VtZW50Y2xhc3N7aG93dG99Ci0KLSUgIFRoaXMgaXMgYSB0ZW1wbGF0ZSBmb3Igc2hvcnQgb3IgbWVkaXVtLXNpemUgUHl0aG9uLXJlbGF0ZWQgZG9jdW1lbnRzLCAKLSUgbW9zdGx5IG5vdGFibHkgdGhlIHNlcmllcyBvZiBIT1dUT3MsIGJ1dCBpdCBjYW4gYmUgdXNlZCBmb3IgYW55Ci0lIGRvY3VtZW50IHlvdSBsaWtlLiAgIAotCi0lIFRoZSB0aXRsZSBzaG91bGQgYmUgZGVzY3JpcHRpdmUgZW5vdWdoIGZvciBwZW9wbGUgdG8gYmUgYWJsZSB0byBmaW5kCi0lIHRoZSByZWxldmFudCBkb2N1bWVudC4gCi1cdGl0bGV7U3BhbW1pZnlpbmcgU3Byb2NrZXRzIGluIFB5dGhvbn0KLQotJSBJbmNyZW1lbnQgdGhlIHJlbGVhc2UgbnVtYmVyIHdoZW5ldmVyIHNpZ25pZmljYW50IGNoYW5nZXMgYXJlIG1hZGUuCi0lIFRoZSBhdXRob3IgYW5kL29yIGVkaXRvciBjYW4gZGVmaW5lICdzaWduaWZpY2FudCcgaG93ZXZlciB0aGV5IGxpa2UuCi1ccmVsZWFzZXswLjAwfQotCi0lIEF0IG1pbmltdW0sIGdpdmUgeW91ciBuYW1lIGFuZCBhbiBlLW1haWwgYWRkcmVzcy4gIFlvdSBjYW4gaW5jbHVkZSBhCi0lIHNuYWlsLW1haWwgYWRkcmVzcyBpZiB5b3UgbGlrZS4KLVxhdXRob3J7TWUsICdjYXVzZSBJIHdyb3RlIGl0fQotXGF1dGhvcmFkZHJlc3N7TWUsICdjYXVzZSBJJ20gc2VsZi1lbXBsb3llZC59Ci0KLVxiZWdpbntkb2N1bWVudH0KLVxtYWtldGl0bGUKLQotJSBUaGlzIG1ha2VzIHRoZSBBYnN0cmFjdCBnbyBvbiBhIHNlcGFyYXRlIHBhZ2UgaW4gdGhlIEhUTUwgdmVyc2lvbjsKLSUgaWYgYSBjb3B5cmlnaHQgbm90aWNlIGlzIHVzZWQsIGl0IHNob3VsZCBnbyBpbW1lZGlhdGVseSBhZnRlciB0aGlzLgotJQotXGlmaHRtbAotXGNoYXB0ZXIqe0Zyb250IE1hdHRlclxsYWJlbHtmcm9udH19Ci1cZmkKLQotJSBDb3B5cmlnaHQgc3RhdGVtZW50IHNob3VsZCBnbyBoZXJlLCBpZiBuZWVkZWQuCi0lIC4uLgotCi0lIFRoZSBhYnN0cmFjdCBzaG91bGQgYmUgYSBwYXJhZ3JhcGggb3IgdHdvIGxvbmcsIGFuZCBkZXNjcmliZSB0aGUKLSUgc2NvcGUgb2YgdGhlIGRvY3VtZW50LgotXGJlZ2lue2Fic3RyYWN0fQotXG5vaW5kZW50Ci1UaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdG8gc3BhbW1pZnkgc3Byb2NrZXRzLiAgSXQgaXMgYSB1c2VmdWwKLWV4YW1wbGUgb2YgYSBQeXRob24gSE9XVE8gZG9jdW1lbnQuICBJdCBpcyBub3QgZGVwZW5kZW50IG9uIGFueQotcGFydGljdWxhciBzcHJvY2tldCBpbXBsZW1lbnRhdGlvbiwgYW5kIGluY2x1ZGVzIGEgUHl0aG9uLWJhc2VkCi1pbXBsZW1lbnRhdGlvbiBpbiB0aGUgXG1vZHVsZXtzcHJ1bmtpdH0gbW9kdWxlLgotXGVuZHthYnN0cmFjdH0KLQotXHRhYmxlb2Zjb250ZW50cwotCi1TcGFtbWlmeWluZyBzcHJvY2tldHMgZnJvbSBQeXRob24gaXMgYm90aCBmdW4gYW5kIGVudGVydGFpbmluZy4KLUFwcGx5aW5nIHRoZSB0ZWNobmlxdWVzIGRlc2NyaWJlZCBoZXJlLCB5b3UgY2FuIGFsc28gZmlsbCB5b3VyIGhhcmQKLWRpc2sgcXVpdGUgZWZmZWN0aXZlbHkuCi0KLVxzZWN0aW9ue1doYXQgaXMgU3Byb2NrZXQgU3BhbW1pZmljYXRpb24/fQotCi1Zb3UgaGF2ZSB0byBhc2s/ICBJdCdzIHRoZSBvbmx5IHRoaW5nIHRvIGRvIHRvIHlvdXIgc3Byb2NrZXRzIQotCi0KLVxzZWN0aW9ue1doeSBVc2UgUHl0aG9uP30KLQotUHl0aG9uIGlzIGFuIGV4Y2VsbGVudCBsYW5ndWFnZSBmcm9tIHdoaWNoIHRvIHNwYW1taWZ5IHlvdXIgc3Byb2NrZXRzCi1zaW5jZSB5b3UgY2FuIGRvIGl0IG9uIGFueSBwbGF0Zm9ybS4KLQotCi1cc2VjdGlvbntTb2Z0d2FyZSBSZXF1aXJlbWVudHN9Ci0KLVlvdSBuZWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBzb2Z0d2FyZSBpbnN0YWxsZWQ6Ci0KLSUgVGhlIHtpdGVtaXplfSBlbnZpcm9ubWVudCB1c2VzIGEgYnVsbGV0IGZvciBlYWNoIFxpdGVtLiAgSWYgeW91IHdhbnQgdGhlIAotJSBcaXRlbSdzIG51bWJlcmVkLCB1c2UgdGhlIHtlbnVtZXJhdGV9IGVudmlyb25tZW50IGluc3RlYWQuCi1cYmVnaW57aXRlbWl6ZX0KLSAgXGl0ZW0gIFB5dGhvbiAxLjkuCi0gIFxpdGVtICBTb21lIHNwcm9ja2V0IGRlZmluaXRpb24gZmlsZXMuCi0gIFxpdGVtICBBdCBsZWFzdCBvbmUgc3Byb2NrZXQgc3lzdGVtIGltcGxlbWVudGF0aW9uLgotXGVuZHtpdGVtaXplfQotCi1Ob3RlIHRoYXQgdGhlIFxtb2R1bGV7c3BydW5raXR9IGlzIHByb3ZpZGVkIHdpdGggdGhpcyBwYWNrYWdlIGFuZAotaW1wbGVtZW50cyBBY3RpdmVTcHJvY2tldHMgaW4gUHl0aG9uLgotCi0KLSUgVGhlIHByZWNlZGluZyBzZWN0aW9ucyB3aWxsIGhhdmUgYmVlbiB3cml0dGVuIGluIGEgZ2VudGxlciwKLSUgaW50cm9kdWN0b3J5IHN0eWxlLiAgWW91IG1heSBhbHNvIHdpc2ggdG8gaW5jbHVkZSBhIHJlZmVyZW5jZQotJSBzZWN0aW9uLCBkb2N1bWVudGluZyBhbGwgdGhlIGZ1bmN0aW9ucy9leGNlcHRpb25zL2NvbnN0YW50cy4KLSUgT2Z0ZW4sIHRoZXNlIHdpbGwgYmUgcGxhY2VkIGluIHNlcGFyYXRlIGZpbGVzIGFuZCBpbnB1dCBsaWtlIHRoaXM6Ci0KLVxpbnB1dHttb2R1bGV9Ci0KLQotXGFwcGVuZGl4Ci0KLVxzZWN0aW9ue1RoaXMgaXMgYW4gQXBwZW5kaXh9Ci0KLVRvIGNyZWF0ZSBhbiBhcHBlbmRpeCBpbiBhIFB5dGhvbiBIT1dUTyBkb2N1bWVudCwgdXNlIG1hcmt1cCBsaWtlCi10aGlzOgotCi1cYmVnaW57dmVyYmF0aW19Ci1cYXBwZW5kaXgKLQotXHNlY3Rpb257VGhpcyBpcyBhbiBBcHBlbmRpeH0KLQotVG8gY3JlYXRlIGFuIGFwcGVuZGl4IGluIGEgUHl0aG9uIEhPV1RPIGRvY3VtZW50LCAuLi4uCi0KLQotXHNlY3Rpb257VGhpcyBpcyBhbm90aGVyfQotCi1KdXN0IGFkZCBhbm90aGVyIFxzZWN0aW9ue30sIGJ1dCBkb24ndCBzYXkgXGFwcGVuZGl4IGFnYWluLgotXGVuZHt2ZXJiYXRpbX0KLQotCi1cZW5ke2RvY3VtZW50fQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3RlbXBsYXRlcy9tYW51YWwudGV4IGIvZG9jL3Rvb2xzL3RlbXBsYXRlcy9tYW51YWwudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGM4ZWMyLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy90ZW1wbGF0ZXMvbWFudWFsLnRleAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLVxkb2N1bWVudGNsYXNze21hbnVhbH0KLQotXHRpdGxle0JpZyBQeXRob24gTWFudWFsfQotCi1cYXV0aG9ye1lvdXIgTmFtZSBIZXJlfQotCi0lIFBsZWFzZSBhdCBsZWFzdCBpbmNsdWRlIGEgbG9uZy1saXZlZCBlbWFpbCBhZGRyZXNzOwotJSB0aGUgcmVzdCBpcyBhdCB5b3VyIGRpc2NyZXRpb24uCi1cYXV0aG9yYWRkcmVzc3sKLQlPcmdhbml6YXRpb24gbmFtZSwgaWYgYXBwbGljYWJsZSBcXAotCVN0cmVldCBhZGRyZXNzLCBpZiB5b3Ugd2FudCB0byB1c2UgaXQgXFwKLQlFLW1haWw6IFxlbWFpbHt5b3VyLWVtYWlsQHlvdXIuZG9tYWlufQotfQotCi1cZGF0ZXtBcHJpbCAzMCwgMTk5OX0JCSUgdXBkYXRlIGJlZm9yZSByZWxlYXNlIQotCQkJCSUgVXNlIGFuIGV4cGxpY2l0IGRhdGUgc28gdGhhdCByZWZvcm1hdHRpbmcKLQkJCQklIGRvZXNuJ3QgY2F1c2UgYSBuZXcgZGF0ZSB0byBiZSB1c2VkLiAgU2V0dGluZwotCQkJCSUgdGhlIGRhdGUgdG8gXHRvZGF5IGNhbiBiZSB1c2VkIGR1cmluZyBkcmFmdAotCQkJCSUgc3RhZ2VzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGhhbmRsZSB2ZXJzaW9ucy4KLQotXHJlbGVhc2V7eC55fQkJCSUgcmVsZWFzZSB2ZXJzaW9uOyB0aGlzIGlzIHVzZWQgdG8gZGVmaW5lIHRoZQotCQkJCSUgXHZlcnNpb24gbWFjcm8KLQotXG1ha2VpbmRleAkJCSUgdGVsbCBcaW5kZXggdG8gYWN0dWFsbHkgd3JpdGUgdGhlIC5pZHggZmlsZQotXG1ha2Vtb2RpbmRleAkJCSUgSWYgdGhpcyBjb250YWlucyBhIGxvdCBvZiBtb2R1bGUgc2VjdGlvbnMuCi0KLQotXGJlZ2lue2RvY3VtZW50fQotCi1cbWFrZXRpdGxlCi0KLSUgVGhpcyBtYWtlcyB0aGUgY29udGVudHMgbW9yZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGZyb250IHBhZ2Ugb2YgdGhlIEhUTUwuCi1caWZodG1sCi1cY2hhcHRlcip7RnJvbnQgTWF0dGVyXGxhYmVse2Zyb250fX0KLVxmaQotCi0lXGlucHV0e2NvcHlyaWdodH0KLQotXGJlZ2lue2Fic3RyYWN0fQotCi1cbm9pbmRlbnQKLUJpZyBQeXRob24gaXMgYSBzcGVjaWFsIHZlcnNpb24gb2YgUHl0aG9uIGZvciB1c2VycyB3aG8gcmVxdWlyZSBsYXJnZXIgCi1rZXlzIG9uIHRoZWlyIGtleWJvYXJkcy4gIEl0IGFjY29tb2RhdGVzIHRoZWlyIHNwZWNpYWwgbmVlZHMgYnkgLi4uCi0KLVxlbmR7YWJzdHJhY3R9Ci0KLVx0YWJsZW9mY29udGVudHMKLQotCi1cY2hhcHRlcnsuLi59Ci0KLU15IGNoYXB0ZXIuCi0KLQotXGFwcGVuZGl4Ci1cY2hhcHRlcnsuLi59Ci0KLU15IGFwcGVuZGl4LgotCi1UaGUgXGNvZGV7XGUgYXBwZW5kaXh9IG1hcmt1cCBuZWVkIG5vdCBiZSByZXBlYXRlZCBmb3IgYWRkaXRpb25hbAotYXBwZW5kaWNlcy4KLQotCi0lCi0lICBUaGUgdWdseSAiJWJlZ2lue2xhdGV4b25seX0iIHBzZXVkby1lbnZpcm9ubWVudHMgYXJlIHJlYWxseSBqdXN0IHRvCi0lICBrZWVwIExhVGVYMkhUTUwgcXVpZXQgZHVyaW5nIHRoZSBccmVuZXdjb21tYW5ke30gbWFjcm9zOyB0aGV5J3JlCi0lICBub3QgcmVhbGx5IHZhbHVhYmxlLgotJQotJSAgSWYgeW91IGRvbid0IHdhbnQgdGhlIE1vZHVsZSBJbmRleCwgeW91IGNhbiByZW1vdmUgYWxsIG9mIHRoaXMgdXAKLSUgIHVudGlsIHRoZSBzZWNvbmQgXGlucHV0IGxpbmUuCi0lCi0lYmVnaW57bGF0ZXhvbmx5fQotXHJlbmV3Y29tbWFuZHtcaW5kZXhuYW1lfXtNb2R1bGUgSW5kZXh9Ci0lZW5ke2xhdGV4b25seX0KLVxpbnB1dHttb2Rcam9ibmFtZS5pbmR9CQklIE1vZHVsZSBJbmRleAotCi0lYmVnaW57bGF0ZXhvbmx5fQotXHJlbmV3Y29tbWFuZHtcaW5kZXhuYW1lfXtJbmRleH0KLSVlbmR7bGF0ZXhvbmx5fQotXGlucHV0e1xqb2JuYW1lLmluZH0JCQklIEluZGV4Ci0KLVxlbmR7ZG9jdW1lbnR9CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvdGVtcGxhdGVzL21vZHVsZS50ZXggYi9kb2MvdG9vbHMvdGVtcGxhdGVzL21vZHVsZS50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZDc2OWQuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RlbXBsYXRlcy9tb2R1bGUudGV4CisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLSUgVGVtcGxhdGUgZm9yIGEgbGlicmFyeSBtYW51YWwgc2VjdGlvbi4KLSUgUExFQVNFIFJFTU9WRSBUSEUgQ09NTUVOVFMgQUZURVIgVVNJTkcgVEhFIFRFTVBMQVRFCi0KLSUgPT09PSAwLiA9PT09Ci0lIENvcHkgdGhpcyBmaWxlIHRvIDxteWRpcj4vbGliPG15bW9kdWxlPi50ZXgsIGFuZCBlZGl0IHRoYXQgZmlsZQotJSBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucyBiZWxvdy4KLQotCi0lID09PT0gMS4gPT09PQotJSBUaGUgc2VjdGlvbiBwcm9sb2d1ZS4gIEdpdmUgdGhlIHNlY3Rpb24gYSB0aXRsZSBhbmQgcHJvdmlkZSBzb21lCi0lIG1ldGEtaW5mb3JtYXRpb24uICBSZWZlcmVuY2VzIHRvIHRoZSBtb2R1bGUgc2hvdWxkIHVzZQotJSBccmVmYmltb2RpbmRleCwgXHJlZnN0bW9kaW5kZXgsIFxyZWZleG1vZGluZGV4IG9yIFxyZWZtb2RpbmRleCwgYXMKLSUgYXBwcm9wcmlhdGUuCi0KLVxzZWN0aW9ue1xtb2R1bGV7c3BhbX0gLS0tCi0gICAgICAgICBTaG9ydCBkZXNjcml0aW9uLCBmb3Igc2VjdGlvbiB0aXRsZX0KLQotJSBDaG9vc2Ugb25lIG9mIHRoZXNlIHRvIHNwZWNpZnkgdGhlIG1vZHVsZSBtb2R1bGUgbmFtZS4gIElmIHRoZXJlJ3MKLSUgYW4gdW5kZXJzY29yZSBpbiB0aGUgbmFtZSwgdXNlCi0lIFxkZWNsYXJlbW9kdWxlW21vZG5hbWVdey4uLn17bW9kX25hbWV9IGluc3RlYWQuCi0lCi1cZGVjbGFyZW1vZHVsZXtidWlsdGlufXtzcGFtfQkJJSBzdGFuZGFyZCBsaWJyYXJ5LCBpbiBDCi1cZGVjbGFyZW1vZHVsZXtzdGFuZGFyZH17c3BhbX0JCSUgc3RhbmRhcmQgbGlicmFyeSwgaW4gUHl0aG9uCi1cZGVjbGFyZW1vZHVsZXtleHRlbnNpb259e3NwYW19CQklIG5vdCBzdGFuZGFyZCwgaW4gQwotXGRlY2xhcmVtb2R1bGV7fXtzcGFtfQkJCSUgbm90IHN0YW5kYXJkLCBpbiBQeXRob24KLQotJSBQb3J0YWJpbGl0eSBzdGF0ZW1lbnQ6ICBVbmNvbW1lbnQgYW5kIGZpbGwgaW4gdGhlIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZQotJSBhdmFpbGFiaWxpdHkgb2YgdGhlIG1vZHVsZS4gIFRoZSBwYXJhbWV0ZXIgY2FuIGJlIFVuaXgsIElSSVgsIFN1bk9TLCBNYWMsCi0lIFdpbmRvd3MsIG9yIGxvdHMgb2Ygb3RoZXIgc3R1ZmYuICBXaGVuIGBgTWFjJycgaXMgc3BlY2lmaWVkLCB0aGUgYXZhaWxhYmlsaXR5Ci0lIHN0YXRlbWVudCB3aWxsIHNheSBgYE1hY2ludG9zaCcnIGFuZCB0aGUgTW9kdWxlIEluZGV4IG1heSBzYXkgYGBNYWMnJy4KLSUgUGxlYXNlIHVzZSBhIG5hbWUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgd2hlbmV2ZXIgYXBwbGljYWJsZS4gIElmIHRoaXMKLSUgaXMgb21pdHRlZCwgbm8gYXZhaWxhYmlsaXR5IHN0YXRlbWVudCBpcyBwcm9kdWNlZCBvciBpbXBsaWVkLgotJQotJSAgIFxwbGF0Zm9ybXtVTklYfQotCi0lIFRoZXNlIGFwcGx5IHRvIGFsbCBtb2R1bGVzOgotCi1cbW9kdWxlYXV0aG9ye25hbWV9e2VtYWlsfQkJJSBBdXRob3Igb2YgdGhlIG1vZHVsZSBjb2RlOwotCQkJCQklIG9taXQgaWYgbm90IGtub3duLgotXHNlY3Rpb25hdXRob3J7bmFtZX17ZW1haWx9CQklIEF1dGhvciBvZiB0aGUgZG9jdW1lbnRhdGlvbiwKLQkJCQkJJSBldmVuIGlmIG5vdCBhIG1vZHVsZSBzZWN0aW9uLgotCi0KLSUgTGVhdmUgYXQgbGVhc3Qgb25lIGJsYW5rIGxpbmUgYWZ0ZXIgdGhpcywgdG8gc2ltcGxpZnkgYWQtaG9jIHRvb2xzCi0lIHRoYXQgYXJlIHNvbWV0aW1lcyB1c2VkIHRvIG1hc3NhZ2UgdGhlc2UgZmlsZXMuCi1cbW9kdWxlc3lub3BzaXN7VGhpcyBpcyBhIG9uZS1saW5lIGRlc2NyaXRpb24sIGZvciB0aGUgY2hhcHRlciBoZWFkZXIufQotCi0KLSUgPT09PSAyLiA9PT09Ci0lIEdpdmUgYSBzaG9ydCBvdmVydmlldyBvZiB3aGF0IHRoZSBtb2R1bGUgZG9lcy4KLSUgSWYgaXQgaXMgcGxhdGZvcm0gc3BlY2lmaWMsIG1lbnRpb24gdGhpcy4KLSUgTWVudGlvbiBvdGhlciBpbXBvcnRhbnQgcmVzdHJpY3Rpb25zIG9yIGdlbmVyYWwgb3BlcmF0aW5nIHByaW5jaXBsZXMuCi0lIEZvciBleGFtcGxlOgotCi1UaGUgXG1vZHVsZXtzcGFtfSBtb2R1bGUgZGVmaW5lcyBvcGVyYXRpb25zIGZvciBoYW5kbGluZyBjYW5zIG9mIFNwYW0uCi1JdCBrbm93cyB0aGUgZm91ciBnZW5lcmFsbHkgYXZhaWxhYmxlIFNwYW0gdmFyaWV0aWVzIGFuZCB1bmRlcnN0YW5kcwotYm90aCBjYW4gc2l6ZXMuCi0KLUJlY2F1c2Ugc3BhbWlmaWNhdGlvbiByZXF1aXJlcyBcVU5JWHt9IHByb2Nlc3MgbWFuYWdlbWVudCwgdGhlIG1vZHVsZQotaXMgb25seSBhdmFpbGFibGUgb24gZ2VudWluZSBcVU5JWHt9IHN5c3RlbXMuCi0KLQotJSA9PT09IDMuID09PT0KLSUgTGlzdCB0aGUgcHVibGljIGZ1bmN0aW9ucyBkZWZpbmVkIGJ5IHRoZSBtb2R1bGUuICBCZWdpbiB3aXRoIGEKLSUgc3RhbmRhcmQgcGhyYXNlLiAgWW91IG1heSBhbHNvIGxpc3QgdGhlIGV4Y2VwdGlvbnMgYW5kIG90aGVyIGRhdGEKLSUgaXRlbXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLCBpbnNvZmFyIGFzIHRoZXkgYXJlIGltcG9ydGFudCBmb3IgdGhlCi0lIHVzZXIuCi0KLVRoZSBcbW9kdWxle3NwYW19IG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotCi0lIC0tLS0gMy4xLiAtLS0tCi0lIEZvciBlYWNoIGZ1bmN0aW9uLCB1c2UgYSBgYGZ1bmNkZXNjJycgYmxvY2suICBUaGlzIGhhcyBleGFjdGx5IHR3bwotJSBwYXJhbWV0ZXJzIChlYWNoIHBhcmFtZXRlcnMgaXMgY29udGFpbmVkIGluIGEgc2V0IG9mIGN1cmx5IGJyYWNlcyk6Ci0lIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIGZ1bmN0aW9uIG5hbWUgKHRoaXMgYXV0b21hdGljYWxseQotJSBnZW5lcmF0ZXMgYW4gaW5kZXggZW50cnkpOyB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgZnVuY3Rpb24ncwotJSBhcmd1bWVudCBsaXN0LiAgSWYgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cywgdXNlIGFuIGVtcHR5IHBhaXIgb2YKLSUgY3VybHkgYnJhY2VzLiAgSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgc2VwYXJhdGUgdGhlCi0lIGFyZ3VtZW50cyB3aXRoIGJhY2tzbGFzaC1jb21tYS4gIE9wdGlvbmFsIHBhcnRzIG9mIHRoZSBwYXJhbWV0ZXIKLSUgbGlzdCBhcmUgY29udGFpbmVkIGluIFxvcHRpb25hbHsuLi59ICh0aGlzIGdlbmVyYXRlcyBhIHNldCBvZiBzcXVhcmUKLSUgYnJhY2tldHMgYXJvdW5kIGl0cyBwYXJhbWV0ZXIpLiAgQXJndW1lbnRzIGFyZSBhdXRvbWF0aWNhbGx5IHNldCBpbgotJSBpdGFsaWNzIGluIHRoZSBwYXJhbWV0ZXIgbGlzdC4gIEVhY2ggYXJndW1lbnQgc2hvdWxkIGJlIG1lbnRpb25lZCBhdAotJSBsZWFzdCBvbmNlIGluIHRoZSBkZXNjcmlwdGlvbjsgZWFjaCB1c2FnZSAoZXZlbiBpbnNpZGUgXGNvZGV7Li4ufSkKLSUgc2hvdWxkIGJlIGVuY2xvc2VkIGluIFx2YXJ7Li4ufS4KLQotXGJlZ2lue2Z1bmNkZXNjfXtvcGVufXtmaWxlbmFtZVxvcHRpb25hbHssIG1vZGVcb3B0aW9uYWx7LCBidWZmZXJzaXplfX19Ci1PcGVuIHRoZSBmaWxlIFx2YXJ7ZmlsZW5hbWV9IGFzIGEgY2FuIG9mIFNwYW0uICBUaGUgb3B0aW9uYWwKLVx2YXJ7bW9kZX0gYW5kIFx2YXJ7YnVmZmVyc2l6ZX0gYXJndW1lbnRzIHNwZWNpZnkgdGhlIHJlYWQvd3JpdGUgbW9kZQotKFxjb2RleydyJ30gKGRlZmF1bHQpIG9yIFxjb2Rleyd3J30pIGFuZCB0aGUgYnVmZmVyIHNpemUgKGRlZmF1bHQ6Ci1zeXN0ZW0gZGVwZW5kZW50KS4KLVxlbmR7ZnVuY2Rlc2N9Ci0KLSUgLS0tLSAzLjIuIC0tLS0KLSUgRGF0YSBpdGVtcyBhcmUgZGVzY3JpYmVkIHVzaW5nIGEgYGBkYXRhZGVzYycnIGJsb2NrLiAgVGhpcyBoYXMgb25seQotJSBvbmUgcGFyYW1ldGVyOiB0aGUgaXRlbSdzIG5hbWUuCi0KLVxiZWdpbntkYXRhZGVzY317Y2Fuc2l6ZX0KLVRoZSBkZWZhdWx0IGNhbiBzaXplLCBpbiBvdW5jZXMuICBMZWdhbCB2YWx1ZXMgYXJlIDcgYW5kIDEyLiAgVGhlCi1kZWZhdWx0IHZhcmllcyBwZXIgc3VwZXJtYXJrZXQuICBUaGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUgY2hhbmdlZAotb25jZSB0aGUgXGZ1bmN0aW9ue29wZW4oKX0gZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLgotXGVuZHtkYXRhZGVzY30KLQotJSAtLS0gMy4zLiAtLS0KLSUgRXhjZXB0aW9ucyBhcmUgZGVzY3JpYmVkIHVzaW5nIGEgYGBleGNkZXNjJycgYmxvY2suICBUaGlzIGhhcyBvbmx5Ci0lIG9uZSBwYXJhbWV0ZXI6IHRoZSBleGNlcHRpb24gbmFtZS4gIEV4Y2VwdGlvbnMgZGVmaW5lZCBhcyBjbGFzc2VzIGluCi0lIHRoZSBzb3VyY2UgY29kZSBzaG91bGQgYmUgZG9jdW1lbnRlZCB1c2luZyB0aGlzIGVudmlyb25tZW50LCBidXQKLSUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBtdXN0IGJlIG9tbWl0dGVkLgotCi1cYmVnaW57ZXhjZGVzY317ZXJyb3J9Ci1FeGNlcHRpb24gcmFpc2VkIHdoZW4gYW4gb3BlcmF0aW9uIGZhaWxzIGZvciBhIFNwYW0gc3BlY2lmaWMgcmVhc29uLgotVGhlIGV4Y2VwdGlvbiBhcmd1bWVudCBpcyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSByZWFzb24gb2YgdGhlCi1mYWlsdXJlLgotXGVuZHtleGNkZXNjfQotCi0lIC0tLS0gMy40LiAtLS0tCi0lIE90aGVyIHN0YW5kYXJkIGVudmlyb25tZW50czoKLSUKLSUgIGNsYXNzZGVzYwktIFB5dGhvbiBjbGFzc2VzOyBzYW1lIGFyZ3VtZW50cyBhcmUgZnVuY2Rlc2MKLSUgIG1ldGhvZGRlc2MJLSBtZXRob2RzLCBsaWtlIGZ1bmNkZXNjIGJ1dCBoYXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIAotJQkJICB0byBnaXZlIHRoZSB0eXBlIG5hbWU6IFxiZWdpbnttZXRob2RkZXNjfVtteXR5cGVde25hbWV9e2FyZ3N9Ci0lCQkgIEJ5IGRlZmF1bHQsIHRoZSB0eXBlIG5hbWUgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUKLSUJCSAgbGFzdCBjbGFzcyBkZWZpbmVkIHVzaW5nIGNsYXNzZGVzYy4gIFRoZSB0eXBlIG5hbWUKLSUJCSAgaXMgcmVxdWlyZWQgaWYgdGhlIHR5cGUgaXMgaW1wbGVtZW50ZWQgaW4gQyAoYmVjYXVzZSAKLSUJCSAgdGhlcmUncyBubyBjbGFzc2Rlc2MpIG9yIGlmIHRoZSBjbGFzcyBpc24ndCBkaXJlY3RseSAKLSUJCSAgZG9jdW1lbnRlZCAoaWYgaXQncyBwcml2YXRlKS4KLSUgIG1lbWJlcmRlc2MJLSBkYXRhIG1lbWJlcnMsIGxpa2UgZGF0YWRlc2MsIGJ1dCB3aXRoIGFuIG9wdGlvbmFsCi0lCQkgIHR5cGUgbmFtZSBsaWtlIG1ldGhvZGRlc2MuCi0KLQotJSA9PT09IDQuID09PT0KLSUgTm93IGlzIHByb2JhYmx5IGEgZ29vZCB0aW1lIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuICAoQWx0ZXJuYXRpdmVseSwKLSUgYW4gZXhhbXBsZSBnaXZpbmcgdGhlIGZsYXZvciBvZiB0aGUgbW9kdWxlIG1heSBiZSBnaXZlbiBiZWZvcmUgdGhlCi0lIGRldGFpbGVkIGxpc3Qgb2YgZnVuY3Rpb25zLikKLQotXHN1YnNlY3Rpb257RXhhbXBsZSBcbGFiZWx7c3BhbS1leGFtcGxlfX0KLQotVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBob3cgdG8gb3BlbiBhIGNhbiBvZiBzcGFtIHVzaW5nIHRoZQotXG1vZHVsZXtzcGFtfSBtb2R1bGUuCi0KLVxiZWdpbnt2ZXJiYXRpbX0KLT4+PiBpbXBvcnQgc3BhbQotPj4+IGNhbiA9IHNwYW0ub3BlbignL2V0Yy9wYXNzd2QnKQotPj4+IGNhbi5lbXB0eSgpCi0+Pj4gY2FuLmNsb3NlKCkKLVxlbmR7dmVyYmF0aW19Ci0lIE5vdGUgdGhhdCB0aGVyZSBpcyBubyB0cmFpbGluZyAiPj4+ICIgcHJvbXB0IHNob3duLgotCi0lID09PT0gNS4gPT09PQotJSBJZiB5b3VyIG1vZHVsZSBkZWZpbmVzIG5ldyBvYmplY3QgdHlwZXMgKGZvciBhIGJ1aWx0LWluIG1vZHVsZSkgb3IKLSUgY2xhc3NlcyAoZm9yIGEgbW9kdWxlIHdyaXR0ZW4gaW4gUHl0aG9uKSwgeW91IHNob3VsZCBsaXN0IHRoZQotJSBtZXRob2RzIGFuZCBpbnN0YW5jZSB2YXJpYWJsZXMgKGlmIGFueSkgb2YgZWFjaCB0eXBlIG9yIGNsYXNzIGluIGEKLSUgc2VwYXJhdGUgc3Vic2VjdGlvbi4KLQotXHN1YnNlY3Rpb257U3BhbSBPYmplY3RzfQotXGxhYmVse3NwYW0tb2JqZWN0c30KLSUgVGhpcyBsYWJlbCBpcyBnZW5lcmFsbHkgdXNlZnVsIGZvciByZWZlcmVuY2luZyB0aGlzIHNlY3Rpb24sIGJ1dCBpcwotJSBhbHNvIHVzZWQgdG8gZ2l2ZSBhIGZpbGVuYW1lIHdoZW4gZ2VuZXJhdGluZyBIVE1MLgotCi1TcGFtIG9iamVjdHMsIGFzIHJldHVybmVkIGJ5IFxmdW5jdGlvbntvcGVuKCl9IGFib3ZlLCBoYXZlIHRoZQotZm9sbG93aW5nIG1ldGhvZHM6Ci0KLVxiZWdpbnttZXRob2RkZXNjfVtzcGFtXXtlbXB0eX17fQotRW1wdHkgdGhlIGNhbiBpbnRvIHRoZSB0cmFzaC4KLVxlbmR7bWV0aG9kZGVzY30KZGlmZiAtLWdpdCBhL2RvYy90b29scy90ZXhpbnB1dHMvYm9pbGVycGxhdGUudGV4IGIvZG9jL3Rvb2xzL3RleGlucHV0cy9ib2lsZXJwbGF0ZS50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyOTZkYmQuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9ib2lsZXJwbGF0ZS50ZXgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1cYXV0aG9ye0d1aWRvIHZhbiBSb3NzdW1cXAotCUZyZWQgTC4gRHJha2UsIEpyLiwgZWRpdG9yfQotXGF1dGhvcmFkZHJlc3N7Ci0JXHN0cm9uZ3tQeXRob25MYWJzfVxcCi0JRS1tYWlsOiBcZW1haWx7cHl0aG9uLWRvY3NAcHl0aG9uLm9yZ30KLX0KLQotXGRhdGV7QXByaWwgMTUsIDIwMDF9CQklIFhYWCB1cGRhdGUgYmVmb3JlIHJlbGVhc2UhCi1ccmVsZWFzZXsyLjF9CQkJJSBzb2Z0d2FyZSByZWxlYXNlLCBub3QgZG9jdW1lbnRhdGlvbgotXHNldHNob3J0dmVyc2lvbnsyLjF9CQklIG1ham9yLm1pbm9yIG9ubHkgZm9yIHNvZnR3YXJlCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvdGV4aW5wdXRzL2NvcHlyaWdodC50ZXggYi9kb2MvdG9vbHMvdGV4aW5wdXRzL2NvcHlyaWdodC50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNDVkY2UuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9jb3B5cmlnaHQudGV4CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLVxiZWdpbntzbWFsbH0KLUNvcHlyaWdodCBcY29weXJpZ2h0e30gMjAwMSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLUNvcHlyaWdodCBcY29weXJpZ2h0e30gMjAwMCBCZU9wZW4uY29tLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotQ29weXJpZ2h0IFxjb3B5cmlnaHR7fSAxOTk1LTIwMDAgQ29ycG9yYXRpb24gZm9yIE5hdGlvbmFsIFJlc2VhcmNoIEluaXRpYXRpdmVzLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotQ29weXJpZ2h0IFxjb3B5cmlnaHR7fSAxOTkxLTE5OTUgU3RpY2h0aW5nIE1hdGhlbWF0aXNjaCBDZW50cnVtLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotJSViZWdpbntsYXRleG9ubHl9Ci1cdnNraXAgNG1tCi0lJWVuZHtsYXRleG9ubHl9Ci0KLVxjZW50ZXJsaW5le1xzdHJvbmd7QkVPUEVOLkNPTSBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgUFlUSE9OIDIuMH19Ci0KLVxjZW50ZXJsaW5le1xzdHJvbmd7QkVPUEVOIFBZVEhPTiBPUEVOIFNPVVJDRSBMSUNFTlNFIEFHUkVFTUVOVCBWRVJTSU9OIDF9fQotCi1cYmVnaW57ZW51bWVyYXRlfQotCi1caXRlbQotVGhpcyBMSUNFTlNFIEFHUkVFTUVOVCBpcyBiZXR3ZWVuIEJlT3Blbi5jb20gKGBgQmVPcGVuJycpLCBoYXZpbmcgYW4KLW9mZmljZSBhdCAxNjAgU2FyYXRvZ2EgQXZlbnVlLCBTYW50YSBDbGFyYSwgQ0EgOTUwNTEsIGFuZCB0aGUKLUluZGl2aWR1YWwgb3IgT3JnYW5pemF0aW9uIChgYExpY2Vuc2VlJycpIGFjY2Vzc2luZyBhbmQgb3RoZXJ3aXNlCi11c2luZyB0aGlzIHNvZnR3YXJlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybSBhbmQgaXRzIGFzc29jaWF0ZWQKLWRvY3VtZW50YXRpb24gKGBgdGhlIFNvZnR3YXJlJycpLgotCi1caXRlbQotU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBCZU9wZW4gUHl0aG9uIExpY2Vuc2UKLUFncmVlbWVudCwgQmVPcGVuIGhlcmVieSBncmFudHMgTGljZW5zZWUgYSBub24tZXhjbHVzaXZlLAotcm95YWx0eS1mcmVlLCB3b3JsZC13aWRlIGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBhbmFseXplLCB0ZXN0LCBwZXJmb3JtCi1hbmQvb3IgZGlzcGxheSBwdWJsaWNseSwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzLCBkaXN0cmlidXRlLCBhbmQKLW90aGVyd2lzZSB1c2UgdGhlIFNvZnR3YXJlIGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24sCi1wcm92aWRlZCwgaG93ZXZlciwgdGhhdCB0aGUgQmVPcGVuIFB5dGhvbiBMaWNlbnNlIGlzIHJldGFpbmVkIGluIHRoZQotU29mdHdhcmUsIGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24gcHJlcGFyZWQgYnkgTGljZW5zZWUuCi0KLVxpdGVtCi1CZU9wZW4gaXMgbWFraW5nIHRoZSBTb2Z0d2FyZSBhdmFpbGFibGUgdG8gTGljZW5zZWUgb24gYW4gYGBBUyBJUycnCi1iYXNpcy4gIEJFT1BFTiBNQUtFUyBOTyBSRVBSRVNFTlRBVElPTlMgT1IgV0FSUkFOVElFUywgRVhQUkVTUyBPUgotSU1QTElFRC4gIEJZIFdBWSBPRiBFWEFNUExFLCBCVVQgTk9UIExJTUlUQVRJT04sIEJFT1BFTiBNQUtFUyBOTyBBTkQKLURJU0NMQUlNUyBBTlkgUkVQUkVTRU5UQVRJT04gT1IgV0FSUkFOVFkgT0YgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MKLUZPUiBBTlkgUEFSVElDVUxBUiBQVVJQT1NFIE9SIFRIQVQgVEhFIFVTRSBPRiBUSEUgU09GVFdBUkUgV0lMTCBOT1QKLUlORlJJTkdFIEFOWSBUSElSRCBQQVJUWSBSSUdIVFMuCi0KLVxpdGVtCi1CRU9QRU4gU0hBTEwgTk9UIEJFIExJQUJMRSBUTyBMSUNFTlNFRSBPUiBBTlkgT1RIRVIgVVNFUlMgT0YgVEhFCi1TT0ZUV0FSRSBGT1IgQU5ZIElOQ0lERU5UQUwsIFNQRUNJQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBMT1NTCi1BUyBBIFJFU1VMVCBPRiBVU0lORywgTU9ESUZZSU5HIE9SIERJU1RSSUJVVElORyBUSEUgU09GVFdBUkUsIE9SIEFOWQotREVSSVZBVElWRSBUSEVSRU9GLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIFRIRVJFT0YuCi0KLVxpdGVtCi1UaGlzIExpY2Vuc2UgQWdyZWVtZW50IHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgdXBvbiBhIG1hdGVyaWFsCi1icmVhY2ggb2YgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zLgotCi1caXRlbQotVGhpcyBMaWNlbnNlIEFncmVlbWVudCBzaGFsbCBiZSBnb3Zlcm5lZCBieSBhbmQgaW50ZXJwcmV0ZWQgaW4gYWxsCi1yZXNwZWN0cyBieSB0aGUgbGF3IG9mIHRoZSBTdGF0ZSBvZiBDYWxpZm9ybmlhLCBleGNsdWRpbmcgY29uZmxpY3Qgb2YKLWxhdyBwcm92aXNpb25zLiAgTm90aGluZyBpbiB0aGlzIExpY2Vuc2UgQWdyZWVtZW50IHNoYWxsIGJlIGRlZW1lZCB0bwotY3JlYXRlIGFueSByZWxhdGlvbnNoaXAgb2YgYWdlbmN5LCBwYXJ0bmVyc2hpcCwgb3Igam9pbnQgdmVudHVyZQotYmV0d2VlbiBCZU9wZW4gYW5kIExpY2Vuc2VlLiAgVGhpcyBMaWNlbnNlIEFncmVlbWVudCBkb2VzIG5vdCBncmFudAotcGVybWlzc2lvbiB0byB1c2UgQmVPcGVuIHRyYWRlbWFya3Mgb3IgdHJhZGUgbmFtZXMgaW4gYSB0cmFkZW1hcmsKLXNlbnNlIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBvciBzZXJ2aWNlcyBvZiBMaWNlbnNlZSwgb3IgYW55Ci10aGlyZCBwYXJ0eS4gIEFzIGFuIGV4Y2VwdGlvbiwgdGhlIGBgQmVPcGVuIFB5dGhvbicnIGxvZ29zIGF2YWlsYWJsZQotYXQgaHR0cDovL3d3dy5weXRob25sYWJzLmNvbS9sb2dvcy5odG1sIG1heSBiZSB1c2VkIGFjY29yZGluZyB0byB0aGUKLXBlcm1pc3Npb25zIGdyYW50ZWQgb24gdGhhdCB3ZWIgcGFnZS4KLQotXGl0ZW0KLUJ5IGNvcHlpbmcsIGluc3RhbGxpbmcgb3Igb3RoZXJ3aXNlIHVzaW5nIHRoZSBzb2Z0d2FyZSwgTGljZW5zZWUKLWFncmVlcyB0byBiZSBib3VuZCBieSB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlCi1BZ3JlZW1lbnQuCi1cZW5ke2VudW1lcmF0ZX0KLQotCi1cY2VudGVybGluZXtcc3Ryb25ne0NOUkkgT1BFTiBTT1VSQ0UgR1BMLUNPTVBBVElCTEUgTElDRU5TRSBBR1JFRU1FTlR9fQotCi1QeXRob24gMS42LjEgaXMgbWFkZSBhdmFpbGFibGUgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgaW4KLUNOUkkncyBMaWNlbnNlIEFncmVlbWVudC4gIFRoaXMgQWdyZWVtZW50IHRvZ2V0aGVyIHdpdGggUHl0aG9uIDEuNi4xIG1heQotYmUgbG9jYXRlZCBvbiB0aGUgSW50ZXJuZXQgdXNpbmcgdGhlIGZvbGxvd2luZyB1bmlxdWUsIHBlcnNpc3RlbnQKLWlkZW50aWZpZXIgKGtub3duIGFzIGEgaGFuZGxlKTogMTg5NS4yMi8xMDEzLiAgVGhpcyBBZ3JlZW1lbnQgbWF5IGFsc28KLWJlIG9idGFpbmVkIGZyb20gYSBwcm94eSBzZXJ2ZXIgb24gdGhlIEludGVybmV0IHVzaW5nIHRoZSBmb2xsb3dpbmcKLVVSTDogXHVybHtodHRwOi8vaGRsLmhhbmRsZS5uZXQvMTg5NS4yMi8xMDEzfS4KLQotCi1cY2VudGVybGluZXtcc3Ryb25ne0NXSSBQRVJNSVNTSU9OUyBTVEFURU1FTlQgQU5EIERJU0NMQUlNRVJ9fQotCi1Db3B5cmlnaHQgXGNvcHlyaWdodHt9IDE5OTEgLSAxOTk1LCBTdGljaHRpbmcgTWF0aGVtYXRpc2NoIENlbnRydW0KLUFtc3RlcmRhbSwgVGhlIE5ldGhlcmxhbmRzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCi1kb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCi1wcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0Ci1ib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4KLXN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgU3RpY2h0aW5nIE1hdGhlbWF0aXNjaAotQ2VudHJ1bSBvciBDV0kgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8KLWRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvcgotcGVybWlzc2lvbi4KLQotU1RJQ0hUSU5HIE1BVEhFTUFUSVNDSCBDRU5UUlVNIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTwotVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgU1RJQ0hUSU5HIE1BVEhFTUFUSVNDSCBDRU5UUlVNIEJFIExJQUJMRQotRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLVdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTgotQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQKLU9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi1cZW5ke3NtYWxsfQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3RleGlucHV0cy9kaXN0dXRpbHMuc3R5IGIvZG9jL3Rvb2xzL3RleGlucHV0cy9kaXN0dXRpbHMuc3R5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDk4MGNmLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy90ZXhpbnB1dHMvZGlzdHV0aWxzLnN0eQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLSUKLSUgTGFUZVggY29tbWFuZHMgYW5kIG1hY3JvcyBuZWVkZWQgZm9yIHRoZSB0d28gRGlzdHV0aWxzIG1hbnVhbHMsCi0lIGluc3QudGV4IGFuZCBkaXN0LnRleC4KLSUKLSUgJElkOiBkaXN0dXRpbHMuc3R5LHYgMS4xLjEuMSAyMDAxLzA3LzE2IDExOjUzOjAzIG1zam9ncmVuIEV4cCAkCi0lCi0KLSUgTXkgZ3JpcGUgbGlzdCBhYm91dCB0aGUgUHl0aG9uIHN0eWxlIGZpbGVzOgotJSAgKiBJIHdhbnQgaXRhbGljcyBpbiB2ZXJiYXRpbSBlbnZpcm9ubWVudHMgZm9yIHZhcmlhYmxlCi0lICAgIHRleHQgKHZlcmJhdGltLnN0eT8pCi0lICAqIEkgaGF0ZSBlc2NhcGluZyB1bmRlcnNjb3JlcyAodXJsLnN0eSBmaXhlcyB0aGlzKQotCi0lICdcY29tbWFuZCcgaXMgZm9yIERpc3R1dGlscyBjb21tYW5kcyB3aGljaCwgZGVwZW5kaW5nIG9uIHlvdXIKLSUgcGVyc3BlY3RpdmUsIGFyZSBqdXN0IGFyZ3VtZW50cyB0byB0aGUgc2V0dXAgc2NyaXB0LCBvciBzdWItCi0lIGNvbW1hbmRzIG9mIHRoZSBzZXR1cCBzY3JpcHQsIG9yIHRoZSBjbGFzc2VzIHRoYXQgaW1wbGVtZW50Ci0lIGVhY2ggImNvbW1hbmQiLgotXG5ld2NvbW1hbmR7XGNvbW1hbmR9WzFde1xjb2RleyMxfX0KLQotJSAnXG9wdGlvbicgaXMgZm9yIERpc3R1dGlscyBvcHRpb25zICppbiogdGhlIHNldHVwIHNjcmlwdC4gIENvbW1hbmQtCi0lIGxpbmUgb3B0aW9ucyAqdG8qIHRoZSBzZXR1cCBzY3JpcHQgYXJlIG1hcmtlZCB1cCBpbiB0aGUgdXN1YWwKLSUgd2F5LCBpZS4gd2l0aCAnXHByb2dyYW1vcHQnIG9yICdcbG9uZ3Byb2dyYW1vcHQnCi1cbmV3Y29tbWFuZHtcb3B0aW9ufVsxXXtcdGV4dHNme1xzbWFsbHsjMX19fQotCi0lICdcZmlsZXZhcicgaXMgZm9yIHZhcmlhYmxlIGNvbXBvbmVudHMgb2YgZmlsZS9wYXRoIG5hbWVzIC0tIGVnLgotJSB3aGVuIHlvdSBwdXQgJ3ByZWZpeCcgaW4gYSBwYXRobmFtZSwgeW91IG1hcmsgaXQgdXAgd2l0aAotJSAnXGZpbGV2YXInIHNvIHRoYXQgaXQgc3RpbGwgbG9va3MgcGF0aG5hbWUtaXNoLCBidXQgaXMKLSUgZGlzdGluZ3Vpc2hlZCBmcm9tIHRoZSBsaXRlcmFsIHBhcnQgb2YgdGhlIHBhdGguICBGcmVkIHNheXMKLSUgdGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGp1c3QgZmluZSB3aXRoICdcdmFyJywgYnV0IEkgdmlvbGVudGx5Ci0lIGRpc2FncmVlLiAgUGlzdG9scyBhdCBkYXduIHdpbGwgc29ydCB0aGlzIG9uZSBvdXQuCi1cbmV3Y29tbWFuZHtcZmlsZXZhcn1bMV17e1x0ZXh0c2x7XGZpbGVucXsjMX19fX0KLQotJSBKdXN0IHdoaWxlIHRoZSBjb2RlIGFuZCBkb2NzIGFyZSBzdGlsbCB1bmRlciBkZXZlbG9wbWVudC4KLVxuZXdjb21tYW5ke1xYWFh9WzFde1x0ZXh0YmZ7KiojMSoqfX0KZGlmZiAtLWdpdCBhL2RvYy90b29scy90ZXhpbnB1dHMvZm5jeWNoYXAuc3R5IGIvZG9jL3Rvb2xzL3RleGlucHV0cy9mbmN5Y2hhcC5zdHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZDdiNzYuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9mbmN5Y2hhcC5zdHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MzMgKzAsMCBAQAotJSUlIERlcml2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgZm5jeWNoYXAuc3R5LAotJSUlIGJ1dCBjaGFuZ2VkIGBgVFdFTFYnJyB0byBgYFRXRUxWRScnLgotCi0lJSUgQ29weXJpZ2h0ICAgVWxmIEEuIExpbmRncmVuCi0lJSUgICAgICAgICAgICAgRGVwYXJ0bWVudCBvZiBBcHBsaWVkIEVsZWN0cm9uaWNzCi0lJSUgICAgICAgICAgICAgQ2hhbG1lcnMgVW5pdmVyc2l0eSBvZiBUZWNobm9sb2d5Ci0lJSUgICAgICAgICAgICAgUy00MTIgOTYgR290aGVuYnVyZywgU3dlZGVuCi0lJSUgICAgICAgICAgICAgRS1tYWlsIGxpbmRncmVuQGFlLmNoYWxtZXJzLnNlCi0lJSUKLSUlJSBOb3RlICAgICAgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gbW9kaWZ5IHRoaXMgZmlsZSB1bmRlcgotJSUlICAgICAgICAgICAgIHRoZSBjb25kaXRpb24gdGhhdCBpdCBpcyBzYXZlZCB1c2luZyBhbm90aGVyCi0lJSUgICAgICAgICAgICAgZmlsZSBhbmQgcGFja2FnZSBuYW1lLgotJSUlCi0lJSUgUmV2aXNpb24gICAgMS4xCi0lJSUKLSUlJSAgICAgICAgICAgICBKYW4uIDh0aCBNb2RpZmllZCBwYWNrYWdlIG5hbWUgYmFzZSBkYXRlIG9wdGlvbgotJSUlICAgICAgICAgICAgIEphbi4gMjJ0aCBNb2RpZmllZCBGbU4gYW5kIEZtVGkgZm9yIGVycm9yIGluIGJvb2suY2xzCi0lJSUgICAgICAgICAgICAgICAgICBcTWFrZVVwcGVyY2FzZXsjfS0+e1xNYWtlVXBwZXJjYXNlI30KLSUlJSAgICAgICAgICAgICBBcHIuIDZ0aCBNb2RpZmllZCBMZW5ueSBvcHRpb24gdG8gcHJldmVudCB1bmRlc2lyZWQgCi0lJSUgICAgICAgICAgICAgICAgICBza2lwIG9mIGxpbmUuCi0lJSUgICAgICAgICAgICAgTm92LiA4dGggRml4ZWQgXEBjaGFwYXBwIGZvciBBTVMKLSUlJSAgICAgICAgICAgICBGZWIuIDExdGggRml4ZWQgYXBwZW5kaXggcHJvYmxlbSByZWxhdGVkIHRvIEJqYXJuZQotJSUlIExhc3QgbW9kaWZpZWQgICAgRmViLiAxMXRoIDE5OTgKLQotXE5lZWRzVGVYRm9ybWF0e0xhVGVYMmV9WzE5OTUvMTIvMDFdCi1cUHJvdmlkZXNQYWNrYWdle2ZuY3ljaGFwfQotICAgICAgICAgICAgIFsxOTk3LzA0LzA2IHYxLjExCi0gICAgICAgICAgICAgICAgIExhVGVYIHBhY2thZ2UgKFJldmlzZWQgY2hhcHRlcnMpXQotCi0lJSUlIERFRklOSVRJT04gT0YgQ2hhcGFwcCB2YXJpYWJsZXMKLVxuZXdjb21tYW5ke1xDTlZ9e1xodWdlXGJmc2VyaWVzfQotXG5ld2NvbW1hbmR7XENoTmFtZVZhcn1bMV17XHJlbmV3Y29tbWFuZHtcQ05WfXsjMX19Ci0KLQotJSUlJSBERUZJTklUSU9OIE9GIFRoZUNoYXB0ZXIgdmFyaWFibGVzCi1cbmV3Y29tbWFuZHtcQ05vVn17XGh1Z2VcYmZzZXJpZXN9Ci1cbmV3Y29tbWFuZHtcQ2hOdW1WYXJ9WzFde1xyZW5ld2NvbW1hbmR7XENOb1Z9eyMxfX0KLQotXG5ld2lmXGlmVUNOCi1cVUNOZmFsc2UKLVxuZXdpZlxpZkxDTgotXExDTmZhbHNlCi1cZGVmXENoTmFtZUxvd2VyQ2FzZXtcTENOdHJ1ZVxVQ05mYWxzZX0KLVxkZWZcQ2hOYW1lVXBwZXJDYXNle1xVQ050cnVlXExDTmZhbHNlfQotXGRlZlxDaE5hbWVBc0lze1xVQ05mYWxzZVxMQ05mYWxzZX0KLQotJSUlJSUgRml4IGZvciBBTVNCb29rIDk3MTAwOAotCi1cQGlmdW5kZWZpbmVke0BjaGFwYXBwfXtcbGV0XEBjaGFwYXBwXGNoYXB0ZXJuYW1lfXt9Ci0KLQotJSUlJSUgRml4IGZvciBCamFybmUgYW5kIGFwcGVuZGl4IDk4MDIxMQotCi1cbmV3aWZcaWZpbmFwcAotXGluYXBwZmFsc2UKLVxyZW5ld2NvbW1hbmRcYXBwZW5kaXh7XHBhcgotICBcc2V0Y291bnRlcntjaGFwdGVyfXswfSUKLSAgXHNldGNvdW50ZXJ7c2VjdGlvbn17MH0lCi0gIFxpbmFwcHRydWUlCi0gIFxyZW5ld2NvbW1hbmRcQGNoYXBhcHB7XGFwcGVuZGl4bmFtZX0lCi0gIFxyZW5ld2NvbW1hbmRcdGhlY2hhcHRlcntcQEFscGhcY0BjaGFwdGVyfX0KLQotJSUlJSUKLQotXG5ld2NvbW1hbmR7XEZtTn1bMV17JQotXGlmVUNOCi0gICB7XE1ha2VVcHBlcmNhc2UjMX1cTENOZmFsc2UKLVxlbHNlCi0gICBcaWZMQ04KLSAgICAgIHtcTWFrZUxvd2VyY2FzZSMxfVxVQ05mYWxzZQotICAgXGVsc2UgIzEKLSAgIFxmaQotXGZpfQotCi0KLSUlJSUgREVGSU5JVElPTiBPRiBUaXRsZSB2YXJpYWJsZXMKLVxuZXdjb21tYW5ke1xDVFZ9e1xIdWdlXGJmc2VyaWVzfQotXG5ld2NvbW1hbmR7XENoVGl0bGVWYXJ9WzFde1xyZW5ld2NvbW1hbmR7XENUVn17IzF9fQotCi0lJSUlIERFRklOSVRJT04gT0YgdGhlIGJhc2ljIHJ1bGUgd2lkdGgKLVxuZXdsZW5ndGh7XFJXfQotXHNldGxlbmd0aHtcUld9ezFwdH0KLVxuZXdjb21tYW5ke1xDaFJ1bGVXaWR0aH1bMV17XHNldGxlbmd0aHtcUld9eyMxfX0KLQotXG5ld2lmXGlmVUNUCi1cVUNUZmFsc2UKLVxuZXdpZlxpZkxDVAotXExDVGZhbHNlCi1cZGVmXENoVGl0bGVMb3dlckNhc2V7XExDVHRydWVcVUNUZmFsc2V9Ci1cZGVmXENoVGl0bGVVcHBlckNhc2V7XFVDVHRydWVcTENUZmFsc2V9Ci1cZGVmXENoVGl0bGVBc0lze1xVQ1RmYWxzZVxMQ1RmYWxzZX0KLVxuZXdjb21tYW5ke1xGbVRpfVsxXXslCi1caWZVQ1QKLQotICAge1xNYWtlVXBwZXJjYXNlIzF9XExDVGZhbHNlCi1cZWxzZQotICAgXGlmTENUCi0gICAgICB7XE1ha2VMb3dlcmNhc2UjMX1cVUNUZmFsc2UKLSAgIFxlbHNlICMxCi0gICBcZmkKLVxmaX0KLQotCi0KLVxuZXdsZW5ndGh7XG15bGVufQotXG5ld2xlbmd0aHtcbXloaX0KLVxuZXdsZW5ndGh7XHB4fQotXG5ld2xlbmd0aHtccHl9Ci1cbmV3bGVuZ3Roe1xweXl9Ci1cbmV3bGVuZ3Roe1xweHh9Ci0KLQotXGRlZlxtZ2hydWxlZmlsbCMxe1xsZWF2ZXZtb2RlXGxlYWRlcnNcaHJ1bGVcQGhlaWdodCAjMVxoZmlsbFxrZXJuXHpAfQotCi1cbmV3Y29tbWFuZHtcRE9DSH17JQotICBcQ05WXEZtTntcQGNoYXBhcHB9XHNwYWNlIFxDTm9WXHRoZWNoYXB0ZXIKLSAgXHBhclxub2JyZWFrCi0gIFx2c2tpcCAyMFxwQAotICB9Ci1cbmV3Y29tbWFuZHtcRE9USX1bMV17JQotICAgIFxDVFZcRm1UaXsjMX1ccGFyXG5vYnJlYWsKLSAgICBcdnNraXAgNDBccEAKLSAgICB9Ci1cbmV3Y29tbWFuZHtcRE9USVN9WzFdeyUKLSAgICBcQ1RWXEZtVGl7IzF9XHBhclxub2JyZWFrCi0gICAgXHZza2lwIDQwXHBACi0gICAgfQotCi0lJSUlJSUgU09OTlkgREVGCi0KLVxEZWNsYXJlT3B0aW9ue1Nvbm55fXslCi0gIFxDaE5hbWVWYXJ7XExhcmdlXHNmfQotICBcQ2hOdW1WYXJ7XEh1Z2V9Ci0gIFxDaFRpdGxlVmFye1xMYXJnZVxzZn0KLSAgXENoUnVsZVdpZHRoezAuNXB0fQotICBcQ2hOYW1lVXBwZXJDYXNlCi0gIFxyZW5ld2NvbW1hbmR7XERPQ0h9eyUKLSAgICBccmFnZ2VkbGVmdAotICAgIFxDTlZcRm1Oe1xAY2hhcGFwcH1cc3BhY2UgXENOb1ZcdGhlY2hhcHRlcgotICAgIFxwYXJcbm9icmVhawotICAgIFx2c2tpcCA0MFxwQH0KLSAgXHJlbmV3Y29tbWFuZHtcRE9USX1bMV17JQotICAgIFxDVFZccmFnZ2VkbGVmdFxtZ2hydWxlZmlsbHtcUld9XHBhclxub2JyZWFrCi0gICAgXHZza2lwIDVccEAKLSAgICBcQ1RWXEZtVGl7IzF9XHBhclxub2JyZWFrCi0gICAgXG1naHJ1bGVmaWxse1xSV31ccGFyXG5vYnJlYWsKLSAgICBcdnNraXAgNDBccEB9Ci0gIFxyZW5ld2NvbW1hbmR7XERPVElTfVsxXXslCi0gICAgXENUVlxyYWdnZWRsZWZ0XG1naHJ1bGVmaWxse1xSV31ccGFyXG5vYnJlYWsKLSAgICBcdnNraXAgNVxwQAotICAgIFxDVFZcRm1UaXsjMX1ccGFyXG5vYnJlYWsKLSAgICBcbWdocnVsZWZpbGx7XFJXfVxwYXJcbm9icmVhawotICAgIFx2c2tpcCA0MFxwQH0KLX0KLQotJSUlJSUlIExFTk5ZIERFRgotCi1cRGVjbGFyZU9wdGlvbntMZW5ueX17JQotCi0gIFxDaE5hbWVWYXJ7XGZvbnRzaXplezE0fXsxNn1cdXNlZm9udHtPVDF9e3Bodn17bX17bn1cc2VsZWN0Zm9udH0KLSAgXENoTnVtVmFye1xmb250c2l6ZXs2MH17NjJ9XHVzZWZvbnR7T1QxfXtwdG19e219e259XHNlbGVjdGZvbnR9Ci0gIFxDaFRpdGxlVmFye1xIdWdlXGJmc2VyaWVzXHJtfQotICBcQ2hSdWxlV2lkdGh7MXB0fQotICBccmVuZXdjb21tYW5ke1xET0NIfXslCi0gICAgXHNldHRvd2lkdGh7XHB4fXtcQ05WXEZtTntcQGNoYXBhcHB9fQotICAgIFxhZGR0b2xlbmd0aHtccHh9ezJwdH0KLSAgICBcc2V0dG9oZWlnaHR7XHB5fXtcQ05WXEZtTntcQGNoYXBhcHB9fQotICAgIFxhZGR0b2xlbmd0aHtccHl9ezFwdH0KLQotICAgIFxzZXR0b3dpZHRoe1xteWxlbn17XENOVlxGbU57XEBjaGFwYXBwfVxzcGFjZVxDTm9WXHRoZWNoYXB0ZXJ9Ci0gICAgXGFkZHRvbGVuZ3Roe1xteWxlbn17MXB0fQotICAgIFxzZXR0b3dpZHRoe1xweHh9e1xDTm9WXHRoZWNoYXB0ZXJ9Ci0gICAgXGFkZHRvbGVuZ3Roe1xweHh9ey0xcHR9Ci0KLSAgICBcc2V0dG9oZWlnaHR7XHB5eX17XENOb1ZcdGhlY2hhcHRlcn0KLSAgICBcYWRkdG9sZW5ndGh7XHB5eX17LTJwdH0KLSAgICBcc2V0bGVuZ3Roe1xteWhpfXtccHl5fQotICAgIFxhZGR0b2xlbmd0aHtcbXloaX17LTFccHl9Ci0gICAgXHBhcgotICAgIFxwYXJib3hbYl17XHRleHR3aWR0aH17JQotICAgIFxydWxlW1xweV17XFJXfXtcbXloaX0lCi0gICAgXGhza2lwIC1cUlclCi0gICAgXHJ1bGVbXHB5eV17XHB4fXtcUld9JQotICAgIFxoc2tpcCAtXHB4JQotICAgIFxyYWdnZWRyaWdodCUKLSAgICBcQ05WXEZtTntcQGNoYXBhcHB9XHNwYWNlXENOb1ZcdGhlY2hhcHRlciUKLSAgICBcaHNraXAxcHQlCi0gICAgXG1naHJ1bGVmaWxse1xSV30lCi0gICAgXHJ1bGV7XFJXfXtccHl5fVxwYXJcbm9icmVhayUKLSAgICBcdnNraXAgLVxiYXNlbGluZXNraXAlCi0gICAgXHZza2lwIC1ccHl5JQotICAgIFxoc2tpcCBcbXlsZW4lCi0gICAgXG1naHJ1bGVmaWxse1xSV31ccGFyXG5vYnJlYWslCi0gICAgXHZza2lwIFxweXl9JQotICAgIFx2c2tpcCAyMFxwQH0KLSAKLQotICBccmVuZXdjb21tYW5ke1xET1RJfVsxXXslCi0gICAgXHJhZ2dlZHJpZ2h0Ci0gICAgXENUVlxGbVRpeyMxfVxwYXJcbm9icmVhawotICAgIFx2c2tpcCA0MFxwQH0KLQotICBccmVuZXdjb21tYW5ke1xET1RJU31bMV17JQotICAgIFxyYWdnZWRyaWdodAotICAgIFxDVFZcRm1UaXsjMX1ccGFyXG5vYnJlYWsKLSAgICBcdnNraXAgNDBccEB9Ci0gfQotCi0KLSUlJSUlJSUgR0xFTk4gREVGCi0KLQotXERlY2xhcmVPcHRpb257R2xlbm59eyUKLSAgXENoTmFtZVZhcntcYmZzZXJpZXNcTGFyZ2Vcc2Z9Ci0gIFxDaE51bVZhcntcSHVnZX0KLSAgXENoVGl0bGVWYXJ7XGJmc2VyaWVzXExhcmdlXHJtfQotICBcQ2hSdWxlV2lkdGh7MXB0fQotICBcQ2hOYW1lVXBwZXJDYXNlCi0gIFxDaFRpdGxlVXBwZXJDYXNlCi0gIFxyZW5ld2NvbW1hbmR7XERPQ0h9eyUKLSAgICBcc2V0dG9oZWlnaHR7XG15aGl9e1xDVFZcRm1UaXtUZXN0fX0KLSAgICBcc2V0bGVuZ3Roe1xweX17XGJhc2VsaW5lc2tpcH0KLSAgICBcYWRkdG9sZW5ndGh7XHB5fXtcUld9Ci0gICAgXGFkZHRvbGVuZ3Roe1xweX17XG15aGl9Ci0gICAgXHNldGxlbmd0aHtccHl5fXtccHl9Ci0gICAgXGFkZHRvbGVuZ3Roe1xweXl9ey0xXFJXfQotICAgICAKLSAgICBccmFnZ2VkcmlnaHQKLSAgICBcQ05WXEZtTntcQGNoYXBhcHB9XHNwYWNlXENOb1ZcdGhlY2hhcHRlcgotICAgIFxoc2tpcCAzcHRcbWdocnVsZWZpbGx7XFJXfVxydWxlWy0xXHB5eV17MlxSV317XHB5fVxwYXJcbm9icmVha30KLQotICBccmVuZXdjb21tYW5ke1xET1RJfVsxXXslCi0gICAgXGFkZHRvbGVuZ3Roe1xweXl9ey00cHR9Ci0gICAgXHNldHRvaGVpZ2h0e1xteWhpfXtcQ1RWXEZtVGl7IzF9fQotICAgIFxhZGR0b2xlbmd0aHtcbXloaX17XHB5fQotICAgIFxhZGR0b2xlbmd0aHtcbXloaX17LTFcUld9Ci0gICAgXHZza2lwIC0xXHB5eQotICAgIFxydWxlezJcUld9e1xteWhpfVxtZ2hydWxlZmlsbHtcUld9XGhza2lwIDJwdAotICAgIFxyYWdnZWRsZWZ0XENUVlxGbVRpeyMxfVxwYXJcbm9icmVhawotICAgIFx2c2tpcCA4MFxwQH0KLQotICBccmVuZXdjb21tYW5ke1xET1RJU31bMV17JQotICAgIFxzZXRsZW5ndGh7XHB5fXsxMHB0fQotICAgIFxzZXRsZW5ndGh7XHB5eX17XHB5fQotICAgIFxhZGR0b2xlbmd0aHtccHl5fXtcUld9Ci0gICAgXHNldGxlbmd0aHtcbXloaX17XGJhc2VsaW5lc2tpcH0KLSAgICBcYWRkdG9sZW5ndGh7XG15aGl9e1xweXl9Ci0gICAgXG1naHJ1bGVmaWxse1xSV31ccnVsZVstMVxweV17MlxSV317XHB5eX1ccGFyXG5vYnJlYWsKLSUgICAgXGFkZHRvbGVuZ3Roe317fQotXHZza2lwIC0xXGJhc2VsaW5lc2tpcAotICAgIFxydWxlezJcUld9e1xteWhpfVxtZ2hydWxlZmlsbHtcUld9XGhza2lwIDJwdAotICAgIFxyYWdnZWRsZWZ0XENUVlxGbVRpeyMxfVxwYXJcbm9icmVhawotICAgIFx2c2tpcCA2MFxwQH0KLSAgfQotCi0lJSUlJSUlIENPTk5ZIERFRgotCi1cRGVjbGFyZU9wdGlvbntDb25ueX17JQotICBcQ2hOYW1lVXBwZXJDYXNlCi0gIFxDaFRpdGxlVXBwZXJDYXNlICAKLSAgXENoTmFtZVZhcntcY2VudGVyaW5nXEh1Z2Vccm1cYmZzZXJpZXN9Ci0gIFxDaE51bVZhcntcSHVnZX0KLSAgXENoVGl0bGVWYXJ7XGNlbnRlcmluZ1xIdWdlXHJtfQotICBcQ2hSdWxlV2lkdGh7MnB0fQotCi0gIFxyZW5ld2NvbW1hbmR7XERPQ0h9eyUKLSAgICBcbWdocnVsZWZpbGx7M1xSV31ccGFyXG5vYnJlYWsKLSAgICBcdnNraXAgLTAuNVxiYXNlbGluZXNraXAKLSAgICBcbWdocnVsZWZpbGx7XFJXfVxwYXJcbm9icmVhawotICAgIFxDTlZcRm1Oe1xAY2hhcGFwcH1cc3BhY2UgXENOb1ZcdGhlY2hhcHRlcgotICAgIFxwYXJcbm9icmVhawotICAgIFx2c2tpcCAtMC41XGJhc2VsaW5lc2tpcAotICAgfQotICBccmVuZXdjb21tYW5ke1xET1RJfVsxXXslCi0gICAgXG1naHJ1bGVmaWxse1xSV31ccGFyXG5vYnJlYWsKLSAgICBcQ1RWXEZtVGl7IzF9XHBhclxub2JyZWFrCi0gICAgXHZza2lwIDYwXHBACi0gICAgfQotICBccmVuZXdjb21tYW5ke1xET1RJU31bMV17JQotICAgIFxtZ2hydWxlZmlsbHtcUld9XHBhclxub2JyZWFrCi0gICAgXENUVlxGbVRpeyMxfVxwYXJcbm9icmVhawotICAgIFx2c2tpcCA2MFxwQAotICAgIH0KLSAgfQotCi0lJSUlJSUlIFJFSk5FIERFRgotCi1cRGVjbGFyZU9wdGlvbntSZWpuZX17JQotCi0gIFxDaE5hbWVVcHBlckNhc2UKLSAgXENoVGl0bGVVcHBlckNhc2UgIAotICBcQ2hOYW1lVmFye1xjZW50ZXJpbmdcTGFyZ2Vccm19Ci0gIFxDaE51bVZhcntcSHVnZX0KLSAgXENoVGl0bGVWYXJ7XGNlbnRlcmluZ1xIdWdlXHJtfQotICBcQ2hSdWxlV2lkdGh7MXB0fQotICBccmVuZXdjb21tYW5ke1xET0NIfXslCi0gICAgXHNldHRvaGVpZ2h0e1xweX17XENOb1ZcdGhlY2hhcHRlcn0KLSAgICBcYWRkdG9sZW5ndGh7XHB5fXstMXB0fQotICAgIFxDTlZcRm1Oe1xAY2hhcGFwcH1ccGFyXG5vYnJlYWsKLSAgICBcdnNraXAgMjBccEAKLSAgICBcc2V0bGVuZ3Roe1xteWhpfXsyXGJhc2VsaW5lc2tpcH0KLSAgICBcc2V0bGVuZ3Roe1xweH17XG15aGl9Ci0gICAgXGFkZHRvbGVuZ3Roe1xweH17LTFcUld9Ci0gICAgXHJ1bGVbLTFccHhde1xSV317XG15aGl9XG1naHJ1bGVmaWxse1xSV31caHNraXAKLSAgICAxMHB0XHJhaXNlYm94ey0wLjVccHl9e1xDTm9WXHRoZWNoYXB0ZXJ9XGhza2lwCi0xMHB0XG1naHJ1bGVmaWxse1xSV31ccnVsZVstMVxweF17XFJXfXtcbXloaX1ccGFyXG5vYnJlYWsKLSAgICAgXHZza2lwIC0xXHBACi0gICAgfQotICBccmVuZXdjb21tYW5ke1xET1RJfVsxXXslCi0gICAgXHNldGxlbmd0aHtcbXlsZW59e1x0ZXh0d2lkdGh9Ci0gICAgXGFkZHRvbGVuZ3Roe1xteWxlbn17LTJcUld9Ci0gICAge1x2cnVsZSB3aWR0aFxSV31ccGFyYm94e1xteWxlbn17XENUVlxGbVRpeyMxfX17XHZydWxlCi13aWR0aFxSV31ccGFyXG5vYnJlYWsKLSAgICBcdnNraXAKLS0xcHRccnVsZXtcUld9ezJcYmFzZWxpbmVza2lwfVxtZ2hydWxlZmlsbHtcUld9XHJ1bGV7XFJXfXsyXGJhc2VsaW5lc2tpcH0KLSAgICBcdnNraXAgNjBccEAKLSAgICB9Ci0gIFxyZW5ld2NvbW1hbmR7XERPVElTfVsxXXslCi0gICAgXHNldGxlbmd0aHtccHl9e1xmYm94cnVsZX0KLSAgICBcc2V0bGVuZ3Roe1xmYm94cnVsZX17XFJXfQotICAgIFxzZXRsZW5ndGh7XG15bGVufXtcdGV4dHdpZHRofQotICAgIFxhZGR0b2xlbmd0aHtcbXlsZW59ey0yXFJXfQotICAgIFxmYm94e1xwYXJib3h7XG15bGVufXtcdnNraXAKLTJcYmFzZWxpbmVza2lwXENUVlxGbVRpeyMxfVxwYXJcbm9icmVha1x2c2tpcCBcYmFzZWxpbmVza2lwfX0gCi0gICAgXHNldGxlbmd0aHtcZmJveHJ1bGV9e1xweX0KLSAgICBcdnNraXAgNjBccEAKLSAgICB9Ci0gIH0KLQotCi0lJSUlJSUlIEJKQVJORSBERUYKLQotXERlY2xhcmVPcHRpb257Qmphcm5lfXslCi0gIFxDaE5hbWVVcHBlckNhc2UKLSAgXENoVGl0bGVVcHBlckNhc2UgIAotICBcQ2hOYW1lVmFye1xyYWdnZWRsZWZ0XG5vcm1hbHNpemVccm19Ci0gIFxDaE51bVZhcntccmFnZ2VkbGVmdCBcYmZzZXJpZXNcTGFyZ2V9Ci0gIFxDaFRpdGxlVmFye1xyYWdnZWRsZWZ0IFxMYXJnZVxybX0KLSAgXENoUnVsZVdpZHRoezFwdH0KLQotCi0lJSBOb3RlIHRoZWNoYXB0ZXIgLT4gY0BjaGFwdGVyIGZpeCBhcHBlbmRpeCBidWcKLQotICBcbmV3Y291bnRlcntBbHBoYUNudH0KLSAgXG5ld2NvdW50ZXJ7QWxwaGFEZWNDbnR9Ci0gIFxuZXdjb21tYW5ke1xBbHBoYU5vfXslCi0gICAgXGlmY2FzZVxudW1iZXJcdGhlQWxwaGFDbnQKLSAgICAgIFxpZm51bVxjQGNoYXB0ZXI9MAotICAgICAgICBaRVJPXGVsc2V7fVxmaQotICAgIFxvciBPTkVcb3IgVFdPXG9yIFRIUkVFXG9yIEZPVVJcb3IgRklWRQotICAgIFxvciBTSVhcb3IgU0VWRU5cb3IgRUlHSFRcb3IgTklORVxvciBURU4KLSAgICBcb3IgRUxFVkVOXG9yIFRXRUxWRVxvciBUSElSVEVFTlxvciBGT1VSVEVFTlxvciBGSUZURUVOCi0gICAgXG9yIFNJWFRFRU5cb3IgU0VWRU5URUVOXG9yIEVJR0hURUVOXG9yIE5JTkVURUVOXGZpCi19Ci0KLSAgXG5ld2NvbW1hbmR7XEFscGhhRGVjTm99eyUKLSAgICBcc2V0Y291bnRlcntBbHBoYURlY0NudH17MH0KLSAgICBcQHdoaWxlbnVtXG51bWJlclx0aGVBbHBoYUNudD4wXGRvCi0gICAgICB7XGFkZHRvY291bnRlcntBbHBoYUNudH17LTEwfQotICAgICAgIFxhZGR0b2NvdW50ZXJ7QWxwaGFEZWNDbnR9ezF9fQotICAgICBcaWZudW1cbnVtYmVyXHRoZUFscGhhQ250PTAKLSAgICAgXGVsc2UKLSAgICAgICBcYWRkdG9jb3VudGVye0FscGhhRGVjQ250fXstMX0KLSAgICAgICBcYWRkdG9jb3VudGVye0FscGhhQ250fXsxMH0KLSAgICAgXGZpCi0gICAgIAotICAgICAKLSAgICBcaWZjYXNlXG51bWJlclx0aGVBbHBoYURlY0NudFxvciBURU5cb3IgVFdFTlRZXG9yIFRISVJUWVxvcgotICAgIEZPUlRZXG9yIEZJRlRZXG9yIFNJWFRZXG9yIFNFVkVOVFlcb3IgRUlHSFRZXG9yIE5JTkVUWVxmaQotICAgIH0KLSAgXG5ld2NvbW1hbmR7XFRoZUFscGhhQ2hhcHRlcn17JQotICAgIAotICAgIFxpZmluYXBwIAotICAgICAgXHRoZWNoYXB0ZXIKLSAgICBcZWxzZQotICAgICAgXHNldGNvdW50ZXJ7QWxwaGFDbnR9e1xjQGNoYXB0ZXJ9Ci0gICAgICBcaWZudW1cY0BjaGFwdGVyPDIwCi0gICAgICAgIFxBbHBoYU5vCi0gICAgICBcZWxzZQotICAgICAgICBcQWxwaGFEZWNOb1xBbHBoYU5vCi0gICAgICBcZmkKLSAgICBcZmkKLSAgICB9ICAKLSAgXHJlbmV3Y29tbWFuZHtcRE9DSH17JQotICAgIFxtZ2hydWxlZmlsbHtcUld9XHBhclxub2JyZWFrCi0gICAgXENOVlxGbU57XEBjaGFwYXBwfVxwYXJcbm9icmVhayAKLSAgICBcQ05vVlxUaGVBbHBoYUNoYXB0ZXJccGFyXG5vYnJlYWsKLSAgICBcdnNraXAgLTFcYmFzZWxpbmVza2lwXHZza2lwIDVwdFxtZ2hydWxlZmlsbHtcUld9XHBhclxub2JyZWFrCi0gICAgXHZza2lwIDIwXHBACi0gICAgfQotICBccmVuZXdjb21tYW5ke1xET1RJfVsxXXslCi0gICAgXENUVlxGbVRpeyMxfVxwYXJcbm9icmVhawotICAgIFx2c2tpcCA0MFxwQAotICAgIH0KLSAgXHJlbmV3Y29tbWFuZHtcRE9USVN9WzFdeyUKLSAgICBcQ1RWXEZtVGl7IzF9XHBhclxub2JyZWFrCi0gICAgXHZza2lwIDQwXHBACi0gICAgfQotfQotCi1cRGVjbGFyZU9wdGlvbip7JQotICBcUGFja2FnZVdhcm5pbmd7ZmFuY3ljaGFwdGVyfXt1bmtub3duIHN0eWxlIG9wdGlvbn0KLSAgfQotCi1cUHJvY2Vzc09wdGlvbnMqIFxyZWxheAotCi1cZGVmXEBtYWtlY2hhcHRlcmhlYWQjMXslCi0gIFx2c3BhY2UqezUwXHBAfSUKLSAge1xwYXJpbmRlbnQgXHpAIFxyYWdnZWRyaWdodCBcbm9ybWFsZm9udAotICAgIFxpZm51bSBcY0BzZWNudW1kZXB0aCA+XG1AbmUKLSAgICAgIFxET0NICi0gICAgXGZpCi0gICAgXGludGVybGluZXBlbmFsdHlcQE0KLSAgICBcRE9USXsjMX0KLSAgfX0KLVxkZWZcQHNjaGFwdGVyIzF7XGlmQHR3b2NvbHVtbgotICAgICAgICAgICAgICAgICAgIFxAdG9wbmV3cGFnZVtcQG1ha2VzY2hhcHRlcmhlYWR7IzF9XSUKLSAgICAgICAgICAgICAgICAgXGVsc2UKLSAgICAgICAgICAgICAgICAgICBcQG1ha2VzY2hhcHRlcmhlYWR7IzF9JQotICAgICAgICAgICAgICAgICAgIFxAYWZ0ZXJoZWFkaW5nCi0gICAgICAgICAgICAgICAgIFxmaX0KLVxkZWZcQG1ha2VzY2hhcHRlcmhlYWQjMXslCi0gIFx2c3BhY2UqezUwXHBAfSUKLSAge1xwYXJpbmRlbnQgXHpAIFxyYWdnZWRyaWdodAotICAgIFxub3JtYWxmb250Ci0gICAgXGludGVybGluZXBlbmFsdHlcQE0KLSAgICBcRE9USVN7IzF9Ci0gICAgXHZza2lwIDQwXHBACi0gIH19Ci0KLVxlbmRpbnB1dAotCi0KZGlmZiAtLWdpdCBhL2RvYy90b29scy90ZXhpbnB1dHMvaG93dG8uY2xzIGIvZG9jL3Rvb2xzL3RleGlucHV0cy9ob3d0by5jbHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5OWI0YWUuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9ob3d0by5jbHMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotJQotJSBob3d0by5jbHMgZm9yIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbgotJQotCi1cTmVlZHNUZVhGb3JtYXR7TGFUZVgyZX1bMTk5NS8xMi8wMV0KLVxQcm92aWRlc0NsYXNze2hvd3RvfQotICAgICAgICAgICAgIFsxOTk4LzAyLzI1IERvY3VtZW50IGNsYXNzIChQeXRob24gSE9XVE8pXQotCi1cUmVxdWlyZVBhY2thZ2V7cHlwYXBlcn0KLQotJSBDaGFuZ2UgdGhlIG9wdGlvbnMgaGVyZSB0byBnZXQgYSBkaWZmZXJlbnQgc2V0IG9mIGJhc2ljIG9wdGlvbnMsICBUaGlzCi0lIGlzIHdoZXJlIHRvIGFkZCB0aGluZ3MgbGlrZSAiYTRwYXBlciIgb3IgIjEwcHQiLgotJQotXExvYWRDbGFzc1t0d29zaWRlXXthcnRpY2xlfQotCi1cc2V0Y291bnRlcntzZWNudW1kZXB0aH17MX0KLQotJSBPcHRpb25hbCBwYWNrYWdlczoKLSUKLSUgSWYgcHJvY2Vzc2luZyBvZiB0aGVzZSBkb2N1bWVudHMgZmFpbHMgYXQgeW91ciBUZVggaW5zdGFsbGF0aW9uLAotJSB0aGVzZSBtYXkgYmUgY29tbWVudGVkIG91dCAoaW5kZXBlbmRlbnRseSkgdG8gbWFrZSB0aGluZ3Mgd29yay4KLSUgVGhlc2UgYXJlIGJvdGggc3VwcGxpZWQgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSB0ZVRlWAotJSBkaXN0cmlidXRpb24uCi0lCi0lIFRoZSAiZmFuY3loZHIiIHBhY2thZ2UgbWFrZXMgbmljZXIgcGFnZSBmb290ZXJzIHJlYXNvbmFibGUgdG8KLSUgaW1wbGVtZW50LCBhbmQgaXMgdXNlZCB0byBwdXQgdGhlIGNoYXB0ZXIgYW5kIHNlY3Rpb24gaW5mb3JtYXRpb24gaW4gCi0lIHRoZSBmb290ZXJzLgotJQotXFJlcXVpcmVQYWNrYWdle2ZhbmN5aGRyfVx0eXBlb3V0e1VzaW5nIGZhbmNpZXIgZm9vdGVycyB0aGFuIHVzdWFsLn0KLQotCi0lIFJlcXVpcmVkIHBhY2thZ2U6Ci0lCi0lIFRoaXMgZ2l2ZXMgdXMgYWxsIHRoZSBQeXRob24tc3BlY2lmaWMgbWFya3VwIHRoYXQgd2UgcmVhbGx5IHdhbnQuCi0lIFRoaXMgc2hvdWxkIGNvbWUgbGFzdC4gIERvIG5vdCBjaGFuZ2UgdGhpcy4KLSUKLVxSZXF1aXJlUGFja2FnZXtweXRob259Ci0KLSUgc3VwcG9ydCBmb3IgbW9kdWxlIHN5bm9wc2lzIHNlY3Rpb25zOgotXG5ld2NvbW1hbmR7XHB5QE1vZFN5bm9wc2lzRmlsZW5hbWV9e1xqb2JuYW1lLnN5bn0KLQotCi0lIG5lZWQgdG8gZG8gb25lIG9mIHRoZXNlLi4uLgotXG5ld2NvbW1hbmR7XHB5QGRvSG9yaXpvbnRhbFJ1bGV9e1xydWxle1x0ZXh0d2lkdGh9ezFwdH19Ci0KLQotJSBDaGFuZ2UgdGhlIHRpdGxlIHBhZ2UgdG8gbG9vayBhIGJpdCBiZXR0ZXIsIGFuZCBmaXQgaW4gd2l0aCB0aGUKLSUgZm5jeWNoYXAgYGBCamFybmUnJyBzdHlsZSBhIGJpdCBiZXR0ZXIuCi0lCi1ccmVuZXdjb21tYW5ke1xtYWtldGl0bGV9ewotICBccHlAZG9Ib3Jpem9udGFsUnVsZQotICBcQGlmdW5kZWZpbmVke3BkZmluZm99e317ewotICAgICUgVGhpcyBcZGVmIGlzIHJlcXVpcmVkIHRvIGRlYWwgd2l0aCBtdWx0aS1saW5lIGF1dGhvcnM7IGl0Ci0gICAgJSBjaGFuZ2VzIFxcIHRvICcsICcgKGNvbW1hLXNwYWNlKSwgbWFraW5nIGl0IHBhc3MgbXVzdGVyIGZvcgotICAgICUgZ2VuZXJhdGluZyBkb2N1bWVudCBpbmZvIGluIHRoZSBQREYgZmlsZS4KLSAgICBcZGVmXFx7LCB9Ci0gICAgXHBkZmluZm97Ci0gICAgICAvQXV0aG9yIChcQGF1dGhvcikKLSAgICAgIC9UaXRsZSAoXEB0aXRsZSkKLSAgICB9Ci0gIH19Ci0gIFxiZWdpbntmbHVzaHJpZ2h0fQotICAgIHtccm1cSHVnZVxweUBIZWFkZXJGYW1pbHkgXEB0aXRsZX0gXHBhcgotICAgIHtcZW1cbGFyZ2VccHlASGVhZGVyRmFtaWx5IFxweUByZWxlYXNlfSBccGFyCi0gICAgXHZzcGFjZXsyNXB0fQotICAgIHtcTGFyZ2VccHlASGVhZGVyRmFtaWx5IFxAYXV0aG9yfSBccGFyCi0gICAgXHZzcGFjZXsyNXB0fQotICAgIFxAZGF0ZSBccGFyCi0gICAgXHB5QGF1dGhvcmFkZHJlc3MgXHBhcgotICBcZW5ke2ZsdXNocmlnaHR9Ci0gIFxAdGhhbmtzCi0gIFxzZXRjb3VudGVye2Zvb3Rub3RlfXswfQotICBcbGV0XHRoYW5rc1xyZWxheFxsZXRcbWFrZXRpdGxlXHJlbGF4Ci0gIFxnZGVmXEB0aGFua3N7fVxnZGVmXEBhdXRob3J7fVxnZGVmXEB0aXRsZXt9Ci19Ci0KLQotXGxldFxweUBPbGRUYWJsZW9mY29udGVudHM9XHRhYmxlb2Zjb250ZW50cwotXHJlbmV3Y29tbWFuZHtcdGFibGVvZmNvbnRlbnRzfXsKLSAgXGJlZ2luZ3JvdXAKLSAgICBccGFyc2tpcCA9IDBtbQotICAgIFxweUBPbGRUYWJsZW9mY29udGVudHMKLSAgXGVuZGdyb3VwCi0gIFxweUBkb0hvcml6b250YWxSdWxlCi0gIFx2c3BhY2V7MTJwdH0KLSAgXHB5QGRvaW5nQHBhZ2VAdGFyZ2V0c3RydWUKLX0gIAotCi0lIEZpeCB0aGUgdGhlaW5kZXggZW52aXJvbm1lbnQgdG8gYWRkIGFuIGVudHJ5IHRvIHRoZSBUYWJsZSBvZgotJSBDb250ZW50czsgdGhpcyBpcyBtdWNoIG5pY2VyIHRoYW4ganVzdCBoYXZpbmcgdG8ganVtcCB0byB0aGUgZW5kIG9mCi0lIHRoZSBib29rIGFuZCBmbGlwIGFyb3VuZCwgZXNwZWNpYWxseSB3aXRoIG11bHRpcGxlIGluZGV4ZXMuCi0lCi1cbGV0XHB5QE9sZFRoZWluZGV4PVx0aGVpbmRleAotXHJlbmV3Y29tbWFuZHtcdGhlaW5kZXh9ewotICBcY2xlYXJwYWdlCi0gIFxweUBPbGRUaGVpbmRleAotICBcYWRkY29udGVudHNsaW5le3RvY317c2VjdGlvbn17XGluZGV4bmFtZX0KLX0KLQotXEBpZnVuZGVmaW5lZHtmYW5jeWhmfXsKLSAgXHBhZ2VzdHlsZXtwbGFpbn19ewotICBccGFnZXN0eWxle25vcm1hbH19CQklIHN0YXJ0IHRoaXMgd2F5OyBjaGFuZ2UgZm9yCi1ccGFnZW51bWJlcmluZ3thcmFiaWN9CQklIFRvQyAmIGNoYXB0ZXJzCi1cc2V0Y291bnRlcntzZWNudW1kZXB0aH17Mn0KLQotXHRoaXNwYWdlc3R5bGV7ZW1wdHl9CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvdGV4aW5wdXRzL2x0eG1hcmt1cC5zdHkgYi9kb2MvdG9vbHMvdGV4aW5wdXRzL2x0eG1hcmt1cC5zdHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NjFkNzAuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9sdHhtYXJrdXAuc3R5CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotJSBDcmVhdGVkIGJ5IEZyZWQgTC4gRHJha2UsIEpyLiA8ZmRyYWtlQGFjbS5vcmc+LCBhcyBwYXJ0IG9mIHRoZQotJSBQeXRob24gRG9jdW1lbnRhdGlvbiBQcm9qZWN0LgotJQotJSBEZWZpbmUgc29tZSBzaW1wbGUgbWFya3VwIGZvciB0aGUgTGFUZVggY29tbWFuZCBkb2N1bWVudGF0aW9uOgotCi1cUHJvdmlkZXNQYWNrYWdle2x0eG1hcmt1cH0KLVxSZXF1aXJlUGFja2FnZXtweXRob259ICAgICAgJSBmdWxsbGluZWl0ZW1zIGVudmlyb25tZW50Ci0KLSUgVGhlc2UgdHdvIG1hY3JvcyBhcmUgdXNlZCBpbiBjb25zdHJ1Y3RpbmcgdGhlIGxhc3QgcGFyYW1ldGVyIHRvIHRoZQotJSBlbnZkZXNjIGFuZCBtYWNyb2Rlc2MgZW52aXJvbm1lbnRzLgotCi1cbmV3Y29tbWFuZHtccHlAbHR4QG9wdHBhcmFtfVsxXXt7W31cdmFyeyMxfXtdfX0KLVxuZXdjb21tYW5ke1xweUBsdHhAcGFyYW19WzFde1x7XHZhcnsjMX1cfX0KLQotXG5ld2Vudmlyb25tZW50e2VudmRlc2N9WzJdewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcaXRlbVtcY29kZXtcZSBiZWdpblx7e1xiZnNlcmllcyAjMX1cfXslCi0gICAgICBcbGV0XG9wPVxweUBsdHhAb3B0cGFyYW0lCi0gICAgICBcbGV0XHA9XHB5QGx0eEBwYXJhbSUKLSAgICAgIFxsZXRcdW5zcGVjaWZpZWQ9XHB5QHVuc3BlY2lmaWVkJQotICAgICAgXGxldFxtb3JlYXJncz1ccHlAbW9yZWFyZ3MlCi0gICAgICAgICAjMn19XQotICAgIFxpdGVtW1xjb2Rle1xlIGVuZFx7e1xiZnNlcmllcyAjMX1cfX1dCi0gICAgXGluZGV4eyMxIGVudmlyb25tZW50QFxpZHhjb2RleyMxfSBlbnZpcm9ubWVudH0KLSAgICBcaW5kZXh7ZW52aXJvbm1lbnRzISMxQFxpZHhjb2RleyMxfX0KLX17XGVuZHtmdWxsbGluZWl0ZW1zfX0KLQotXG5ld2Vudmlyb25tZW50e21hY3JvZGVzY31bMl17Ci0gIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgIFxpdGVtW1xjb2Rle3tcZVxiZnNlcmllcyMxfXslCi0gICAgICBcbGV0XG9wPVxweUBsdHhAb3B0cGFyYW0lCi0gICAgICBcbGV0XHA9XHB5QGx0eEBwYXJhbSUKLSAgICAgIFxsZXRcdW5zcGVjaWZpZWQ9XHB5QHVuc3BlY2lmaWVkJQotICAgICAgXGxldFxtb3JlYXJncz1ccHlAbW9yZWFyZ3MlCi0gICAgICAjMn19XQotICAgIFxpbmRleHsjMUBcaWR4Y29kZXtcZSAjMX19Ci19e1xlbmR7ZnVsbGxpbmVpdGVtc319Ci0KLVxuZXdjb21tYW5ke1xlbnZ9WzFde1xjb2RleyMxfX0KLVxuZXdjb21tYW5ke1xtYWNyb31bMV17XGNvZGV7XGUjMX19CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvdGV4aW5wdXRzL21hbnVhbC5jbHMgYi9kb2MvdG9vbHMvdGV4aW5wdXRzL21hbnVhbC5jbHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4OWNhZTEuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9tYW51YWwuY2xzCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLSUKLSUgbWFudWFsLmNscyBmb3IgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uCi0lCi0KLVxOZWVkc1RlWEZvcm1hdHtMYVRlWDJlfVsxOTk1LzEyLzAxXQotXFByb3ZpZGVzQ2xhc3N7bWFudWFsfQotICAgICAgICAgICAgIFsxOTk4LzAzLzAzIERvY3VtZW50IGNsYXNzIChQeXRob24gbWFudWFsKV0KLQotXFJlcXVpcmVQYWNrYWdle3B5cGFwZXJ9Ci0KLSUgQ2hhbmdlIHRoZSBvcHRpb25zIGhlcmUgdG8gZ2V0IGEgZGlmZmVyZW50IHNldCBvZiBiYXNpYyBvcHRpb25zLCBidXQgb25seQotJSBpZiB5b3UgaGF2ZSB0by4gIFBhcGVyIGFuZCBmb250IHNpemUgc2hvdWxkIGJlIGFkanVzdGVkIGluIHB5cGFwZXIuc3R5LgotJQotXExvYWRDbGFzc1tccHlAcGFwZXIsXHB5QHB0c2l6ZSx0d29zaWRlLG9wZW5yaWdodF17cmVwb3J0fQotCi1cc2V0Y291bnRlcntzZWNudW1kZXB0aH17Mn0KLQotJSBPcHRpb25hbCBwYWNrYWdlczoKLSUKLSUgSWYgcHJvY2Vzc2luZyBvZiB0aGVzZSBkb2N1bWVudHMgZmFpbHMgYXQgeW91ciBUZVggaW5zdGFsbGF0aW9uLAotJSB0aGVzZSBtYXkgYmUgY29tbWVudGVkIG91dCAoaW5kZXBlbmRlbnRseSkgdG8gbWFrZSB0aGluZ3Mgd29yay4KLSUgVGhlc2UgYXJlIGJvdGggc3VwcGxpZWQgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSB0ZVRlWAotJSBkaXN0cmlidXRpb24uCi0lCi0lIFRoZSAiZmFuY3loZHIiIHBhY2thZ2UgbWFrZXMgbmljZXIgcGFnZSBmb290ZXJzIHJlYXNvbmFibGUgdG8KLSUgaW1wbGVtZW50LCBhbmQgaXMgdXNlZCB0byBwdXQgdGhlIGNoYXB0ZXIgYW5kIHNlY3Rpb24gaW5mb3JtYXRpb24gaW4gCi0lIHRoZSBmb290ZXJzLgotJQotXFJlcXVpcmVQYWNrYWdle2ZhbmN5aGRyfVx0eXBlb3V0e1VzaW5nIGZhbmNpZXIgZm9vdGVycyB0aGFuIHVzdWFsLn0KLQotCi0lIFJlcXVpcmVkIHBhY2thZ2VzOgotJQotJSBUaGUgImZuY3ljaGFwIiBwYWNrYWdlIGlzIHVzZWQgdG8gZ2V0IHRoZSBuaWNlIGNoYXB0ZXIgaGVhZGVycy4gIFRoZQotJSAuc3R5IGZpbGUgaXMgZGlzdHJpYnV0ZWQgd2l0aCBQeXRob24sIHNvIHlvdSBzaG91bGQgbm90IG5lZWQgdG8gZGlzYWJsZQotJSBpdC4gIFlvdSdkIGFsc28gZW5kIHVwIHdpdGggYSBtaXhlZCBwYWdlIHN0eWxlOyB1Z2xpZXIgdGhhbiBzdG9jayBMYVRlWCEKLSUKLVxSZXF1aXJlUGFja2FnZVtCamFybmVde2ZuY3ljaGFwfVx0eXBlb3V0e1VzaW5nIGZhbmN5IGNoYXB0ZXIgaGVhZGluZ3MufQotJSBEbyBob3Jpem9udGFsIHJ1bGVzIGl0IHRoaXMgd2F5IHRvIG1hdGNoOgotXG5ld2NvbW1hbmR7XHB5QGRvSG9yaXpvbnRhbFJ1bGV9e1xtZ2hydWxlZmlsbHtcUld9fQotJQotJQotJSBUaGlzIGdpdmVzIHVzIGFsbCB0aGUgUHl0aG9uLXNwZWNpZmljIG1hcmt1cCB0aGF0IHdlIHJlYWxseSB3YW50LgotJSBUaGlzIHNob3VsZCBjb21lIGxhc3QuICBEbyBub3QgY2hhbmdlIHRoaXMuCi0lCi1cUmVxdWlyZVBhY2thZ2V7cHl0aG9ufQotCi0lIHN1cHBvcnQgZm9yIG1vZHVsZSBzeW5vcHNpcyBzZWN0aW9uczoKLVxuZXdjb21tYW5ke1xweUBNb2RTeW5vcHNpc0ZpbGVuYW1lfXtcam9ibmFtZVx0aGVjaGFwdGVyLnN5bn0KLVxsZXRccHlAT2xkQ2hhcHRlcj1cY2hhcHRlcgotXHJlbmV3Y29tbWFuZHtcY2hhcHRlcn17Ci0gIFxweUBQcm9jZXNzTW9kU3lub3BzaXMKLSAgXHB5QGNsb3NlTW9kU3lub3BzaXNGaWxlCi0gIFxweUBPbGRDaGFwdGVyCi19Ci0KLQotJSBDaGFuZ2UgdGhlIHRpdGxlIHBhZ2UgdG8gbG9vayBhIGJpdCBiZXR0ZXIsIGFuZCBmaXQgaW4gd2l0aCB0aGUKLSUgZm5jeWNoYXAgYGBCamFybmUnJyBzdHlsZSBhIGJpdCBiZXR0ZXIuCi0lCi1ccmVuZXdjb21tYW5ke1xtYWtldGl0bGV9eyUKLSAgXGJlZ2lue3RpdGxlcGFnZX0lCi0gICAgXGxldFxmb290bm90ZXNpemVcc21hbGwKLSAgICBcbGV0XGZvb3Rub3RlcnVsZVxyZWxheAotICAgIFxweUBkb0hvcml6b250YWxSdWxlJQotICAgIFxAaWZ1bmRlZmluZWR7cGRmaW5mb317fXt7Ci0gICAgICAlIFRoaXMgXGRlZiBpcyByZXF1aXJlZCB0byBkZWFsIHdpdGggbXVsdGktbGluZSBhdXRob3JzOyBpdAotICAgICAgJSBjaGFuZ2VzIFxcIHRvICcsICcgKGNvbW1hLXNwYWNlKSwgbWFraW5nIGl0IHBhc3MgbXVzdGVyIGZvcgotICAgICAgJSBnZW5lcmF0aW5nIGRvY3VtZW50IGluZm8gaW4gdGhlIFBERiBmaWxlLgotICAgICAgXGRlZlxceywgfQotICAgICAgXHBkZmluZm97Ci0gICAgICAgIC9BdXRob3IgKFxAYXV0aG9yKQotICAgICAgICAvVGl0bGUgKFxAdGl0bGUpCi0gICAgICB9Ci0gICAgfX0KLSAgICBcYmVnaW57Zmx1c2hyaWdodH0lCi0gICAgICB7XHJtXEh1Z2VccHlASGVhZGVyRmFtaWx5IFxAdGl0bGUgXHBhcn0lCi0gICAgICB7XGVtXExBUkdFXHB5QEhlYWRlckZhbWlseSBccHlAcmVsZWFzZSBccGFyfQotICAgICAgXHZmaWxsCi0gICAgICB7XExBUkdFXHB5QEhlYWRlckZhbWlseSBcQGF1dGhvciBccGFyfQotICAgICAgXHZmaWxsXHZmaWxsCi0gICAgICB7XGxhcmdlCi0gICAgICAgXEBkYXRlIFxwYXIKLSAgICAgICBcdmZpbGwKLSAgICAgICBccHlAYXV0aG9yYWRkcmVzcyBccGFyCi0gICAgICB9JQotICAgIFxlbmR7Zmx1c2hyaWdodH0lXHBhcgotICAgIFxAdGhhbmtzCi0gIFxlbmR7dGl0bGVwYWdlfSUKLSAgXHNldGNvdW50ZXJ7Zm9vdG5vdGV9ezB9JQotICBcbGV0XHRoYW5rc1xyZWxheFxsZXRcbWFrZXRpdGxlXHJlbGF4Ci0gIFxnZGVmXEB0aGFua3N7fVxnZGVmXEBhdXRob3J7fVxnZGVmXEB0aXRsZXt9Ci19Ci0KLQotJSBDYXRjaCB0aGUgZW5kIG9mIHRoZSB7YWJzdHJhY3R9IGVudmlyb25tZW50LCBidXQgaGVyZSBtYWtlIHN1cmUgdGhlCi0lIGFic3RyYWN0IGlzIGZvbGxvd2VkIGJ5IGEgYmxhbmsgcGFnZSBpZiB0aGUgJ29wZW5yaWdodCcgb3B0aW9uIGlzIHVzZWQuCi0lCi1cbGV0XHB5QE9sZEVuZEFic3RyYWN0PVxlbmRhYnN0cmFjdAotXHJlbmV3Y29tbWFuZHtcZW5kYWJzdHJhY3R9ewotICBcaWZAb3BlbnJpZ2h0Ci0gICAgXGlmb2RkXHZhbHVle3BhZ2V9Ci0gICAgICBcdHlwZW91dHtBZGRpbmcgYmxhbmsgcGFnZSBhZnRlciB0aGUgYWJzdHJhY3QufQotICAgICAgXHZmaWxccGFnZWJyZWFrCi0gICAgXGZpCi0gIFxmaQotICBccHlAT2xkRW5kQWJzdHJhY3QKLX0KLQotJSBUaGlzIHdyYXBzIHRoZSBcdGFibGVvZmNvbnRlbnRzIG1hY3JvIHdpdGggYWxsIHRoZSBtYWdpYyB0byBnZXQgdGhlCi0lIHNwYWNpbmcgcmlnaHQgYW5kIGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBwYWdlcyBpZiB0aGUgJ29wZW5yaWdodCcKLSUgb3B0aW9uIGhhcyBiZWVuIHVzZWQuICBUaGlzIGVsaW1pbmF0ZXMgYSBmYWlyIGFtb3VudCBvZiBjcnVkIGluIHRoZQotJSBpbmRpdmlkdWFsIGRvY3VtZW50IGZpbGVzLgotJQotXGxldFxweUBPbGRUYWJsZW9mY29udGVudHM9XHRhYmxlb2Zjb250ZW50cwotXHJlbmV3Y29tbWFuZHtcdGFibGVvZmNvbnRlbnRzfXslCi0gIFxzZXRjb3VudGVye3BhZ2V9ezF9JQotICBccGFnZWJyZWFrJQotICBccGFnZXN0eWxle3BsYWlufSUKLSAgeyUKLSAgICBccGFyc2tpcCA9IDBtbSUKLSAgICBccHlAT2xkVGFibGVvZmNvbnRlbnRzJQotICAgIFxpZkBvcGVucmlnaHQlCi0gICAgICBcaWZvZGRcdmFsdWV7cGFnZX0lCi0gICAgICAgIFx0eXBlb3V0e0FkZGluZyBibGFuayBwYWdlIGFmdGVyIHRoZSB0YWJsZSBvZiBjb250ZW50cy59JQotICAgICAgICBccGFnZWJyZWFrXGhzcGFjZXswcHR9JQotICAgICAgXGZpJQotICAgIFxmaSUKLSAgICBcY2xlYXJkb3VibGVwYWdlJQotICB9JQotICBccGFnZW51bWJlcmluZ3thcmFiaWN9JQotICBcQGlmdW5kZWZpbmVke2ZhbmN5aGZ9e317XHBhZ2VzdHlsZXtub3JtYWx9fSUKLSAgXHB5QGRvaW5nQHBhZ2VAdGFyZ2V0c3RydWUlCi19Ci0lIFRoaXMgaXMgbmVlZGVkIHRvIGdldCB0aGUgd2lkdGggb2YgdGhlIHNlY3Rpb24gIyBhcmVhIHdpZGUgZW5vdWdoIGluIHRoZQotJSBsaWJyYXJ5IHJlZmVyZW5jZS4gIERvaW5nIGl0IGhlcmUga2VlcHMgaXQgdGhlIHNhbWUgZm9yIGFsbCB0aGUgbWFudWFscy4KLSUKLVxyZW5ld2NvbW1hbmQqXGxAc2VjdGlvbntcQGRvdHRlZHRvY2xpbmV7MX17MS41ZW19ezIuNmVtfX0KLVxyZW5ld2NvbW1hbmQqXGxAc3Vic2VjdGlvbntcQGRvdHRlZHRvY2xpbmV7Mn17NC4xZW19ezMuNWVtfX0KLVxzZXRjb3VudGVye3RvY2RlcHRofXsxfQotCi0KLSUgRml4IHRoZSB0aGVpbmRleCBlbnZpcm9ubWVudCB0byBhZGQgYW4gZW50cnkgdG8gdGhlIFRhYmxlIG9mCi0lIENvbnRlbnRzOyB0aGlzIGlzIG11Y2ggbmljZXIgdGhhbiBqdXN0IGhhdmluZyB0byBqdW1wIHRvIHRoZSBlbmQgb2YKLSUgdGhlIGJvb2sgYW5kIGZsaXAgYXJvdW5kLCBlc3BlY2lhbGx5IHdpdGggbXVsdGlwbGUgaW5kZXhlcy4KLSUKLVxsZXRccHlAT2xkVGhlaW5kZXg9XHRoZWluZGV4Ci1ccmVuZXdjb21tYW5ke1x0aGVpbmRleH17Ci0gIFxjbGVhcmRvdWJsZXBhZ2UKLSAgXHB5QE9sZFRoZWluZGV4Ci0gIFxhZGRjb250ZW50c2xpbmV7dG9jfXtjaGFwdGVyfXtcaW5kZXhuYW1lfQotfQpkaWZmIC0tZ2l0IGEvZG9jL3Rvb2xzL3RleGlucHV0cy9weXBhcGVyLnN0eSBiL2RvYy90b29scy90ZXhpbnB1dHMvcHlwYXBlci5zdHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NTk2MzcuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9weXBhcGVyLnN0eQorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLSUKLSUgIENoYW5nZSB0aGlzIHRvIHNheSBhNHBhcGVyIGluc3RlYWQgb2YgbGV0dGVycGFwZXIgaWYgeW91IHdhbnQgQTQuICBUaGVzZQotJSAgYXJlIHRoZSBsYXRleCBkZWZhdWx0cy4KLSUKLVxuZXdjb21tYW5ke1xweUBwYXBlcn17bGV0dGVycGFwZXJ9Ci1cbmV3Y29tbWFuZHtccHlAcHRzaXplfXsxMHB0fQotCi0lICBUaGVzZSBzZXQgdXAgdGhlIGZvbnRzIGZvciB0aGUgZG9jdW1lbnRzLgotJQotJSAgVGhlICJ0aW1lcyIgcGFja2FnZSBtYWtlcyB0aGUgZGVmYXVsdCBmb250IHRoZSBQb3N0U2NyaXB0IFRpbWVzCi0lICBmb250LCB3aGljaCBtYWtlcyBmb3Igc21hbGxlciBQb3N0U2NyaXB0IGFuZCBhIGZvbnQgdGhhdCBtb3JlIHBlb3BsZSAKLSUgIGxpa2UuCi0lCi0lICBUaGUgImF2YW50IiBwYWNrYWdlIGNhdXNlcyB0aGUgQXZhbnRHYXJkZSBmb250IHRvIGJlIHVzZWQgZm9yCi0lICBzYW5zLXNlcmlmIHRleHQsIGluc3RlYWQgb2YgdGhlIHVnbGllciBIZWx2ZXRpY2Egc2V0IHVwIGJ5IHRoZSAidGltZXMiCi0lICBwYWNrYWdlLgotJQotXFJlcXVpcmVQYWNrYWdle3RpbWVzfVx0eXBlb3V0e1VzaW5nIFRpbWVzIGluc3RlYWQgb2YgQ29tcHV0ZXIgTW9kZXJuLn0KZGlmZiAtLWdpdCBhL2RvYy90b29scy90ZXhpbnB1dHMvcHl0aG9uLmlzdCBiL2RvYy90b29scy90ZXhpbnB1dHMvcHl0aG9uLmlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZmYTBmOS4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvdGV4aW5wdXRzL3B5dGhvbi5pc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1saW5lX21heCAxMDAKLWhlYWRpbmdzX2ZsYWcgMQotaGVhZGluZ19wcmVmaXggIiAgXFxiaWdsZXR0ZXIgIgotCi1wcmVhbWJsZSAiXFxiZWdpbnt0aGVpbmRleH0KLVxcZGVmXFxiaWdsZXR0ZXIjMXt7XFxMYXJnZVxcc2ZmYW1pbHkjMX1cXG5vcGFnZWJyZWFrXFx2c3BhY2V7MW1tfX0KLQotIgotCi1zeW1oZWFkX3Bvc2l0aXZlICJ7U3ltYm9sc30iCi1udW1oZWFkX3Bvc2l0aXZlICJ7TnVtYmVyc30iCmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvdGV4aW5wdXRzL3B5dGhvbi5zdHkgYi9kb2MvdG9vbHMvdGV4aW5wdXRzL3B5dGhvbi5zdHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNjFkODcuLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RleGlucHV0cy9weXRob24uc3R5CisrKyAvZGV2L251bGwKQEAgLTEsMTA4MiArMCwwIEBACi0lCi0lIHB5dGhvbi5zdHkgZm9yIHRoZSBQeXRob24gZG9jdW1tZW50YXRpb24gIFt3b3JrcyBvbmx5IHdpdGggd2l0aCBMYXRleDJlXQotJQotCi1cTmVlZHNUZVhGb3JtYXR7TGFUZVgyZX1bMTk5NS8xMi8wMV0KLVxQcm92aWRlc1BhY2thZ2V7cHl0aG9ufQotICAgICAgICAgICAgIFsxOTk4LzAxLzExIExhVGVYIHBhY2thZ2UgKFB5dGhvbiBtYXJrdXApXQotCi1cUmVxdWlyZVBhY2thZ2V7bG9uZ3RhYmxlfQotCi0lIFVuY29tbWVudCB0aGVzZSB0d28gbGluZXMgdG8gaWdub3JlIHRoZSBwYXBlciBzaXplIGFuZCBtYWtlIHRoZSBwYWdlIAotJSBzaXplIG1vcmUgbGlrZSBhIHR5cGljYWwgcHVibGlzaGVkIG1hbnVhbC4KLSVccmVuZXdjb21tYW5ke1xwYXBlcmhlaWdodH17OWlufQotJVxyZW5ld2NvbW1hbmR7XHBhcGVyd2lkdGh9ezguNWlufSAgICUgdHlwaWNhbCBzcXVhcmlzaCBtYW51YWwKLSVccmVuZXdjb21tYW5ke1xwYXBlcndpZHRofXs3aW59ICAgICAlIE8nUmVpbGx5IGBgUHJvZ3JhbW1taW5nIFB5dGhvbicnCi0KLSUgVGhlc2UgcGFja2FnZXMgY2FuIGJlIHVzZWQgdG8gYWRkIG1hcmdpbmFsIGFubm90YXRpb25zIHdoaWNoIGluZGljYXRlCi0lIGluZGV4IGVudHJpZXMgYW5kIGxhYmVsczsgdXNlZnVsIGZvciByZXZpZXdpbmcgdGhpcyBtZXNzeSBkb2N1bWVudGF0aW9uIQotJQotJVxSZXF1aXJlUGFja2FnZXtzaG93a2V5c30KLSVcUmVxdWlyZVBhY2thZ2V7c2hvd2lkeH0KLQotJSBmb3IgUERGIG91dHB1dCwgdXNlIG1heGltYWwgY29tcHJlc3Npb24gJiBhIGxvdCBvZiBvdGhlciBzdHVmZgotJSAodGVzdCBmb3IgUERGIHJlY29tbWVuZGVkIGJ5IFRhbm1veSBCaGF0dGFjaGFyeWEgPHRhbm1veUBxY2QubGFubC5nb3Y+KQotJQotXG5ld2lmXGlmcHlAZG9pbmdAcGFnZUB0YXJnZXRzCi1ccHlAZG9pbmdAcGFnZUB0YXJnZXRzZmFsc2UKLQotXGlmeFxwZGZvdXRwdXRcdW5kZWZpbmVkXGVsc2VcaWZjYXNlXHBkZm91dHB1dAotXGVsc2UKLSAgXGlucHV0e3BkZmNvbG9yfQotICBcbGV0XHB5QExpbmtDb2xvcj1cTmF2eUJsdWUKLSAgXGxldFxweUBOb3JtYWxDb2xvcj1cQmxhY2sKLSAgXHBkZmNvbXByZXNzbGV2ZWw9OQotICBccGRmcGFnZXdpZHRoPVxwYXBlcndpZHRoICAgICUgcGFnZSB3aWR0aCBvZiBQREYgb3V0cHV0Ci0gIFxwZGZwYWdlaGVpZ2h0PVxwYXBlcmhlaWdodCAgJSBwYWdlIGhlaWdodCBvZiBQREYgb3V0cHV0Ci0gICUKLSAgJSBQYWQgdGhlIG51bWJlciB3aXRoICcwJyB0byAzIGRpZ2l0cyB3aWRlIHNvIG5vIHBhZ2UgbmFtZSBpcyBhIHByZWZpeAotICAlIG9mIGFueSBvdGhlci4KLSAgJQotICBcbmV3Y29tbWFuZHtccHlAdGFyZ2V0bm99WzFde1xpZm51bSMxPDEwMCAwXGZpXGlmbnVtIzE8MTAgMFxmaSMxfQotICBcbmV3Y29tbWFuZHtccHlAcGFnZW5vfXtccHlAdGFyZ2V0bm9cdGhlcGFnZX0KLSAgJQotICAlIFRoaXMgZGVmaW5pdGlvbiBhbGxvd3MgdGhlIGVudHJpZXMgaW4gdGhlIHBhZ2UtdmlldyBvZiB0aGUgVG9DIHRvIGJlCi0gICUgYWN0aXZlIGxpbmtzLiAgU29tZSB3b3JrLCBzb21lIGRvbid0LgotICAlCi0gIFxsZXRccHlAT2xkQ29udGVudHNsaW5lPVxjb250ZW50c2xpbmUKLSAgJQotICAlIE1hY3JvIHRoYXQgdGFrZXMgdHdvIGFyZ3M6IHRoZSBuYW1lIHRvIGxpbmsgdG8gYW5kIHRoZSBjb250ZW50IG9mCi0gICUgdGhlIGxpbmsuICBUaGlzIHRha2VzIGNhcmUgb2YgdGhlIFBERiBtYWdpYywgZ2V0dGluZyB0aGUgY29sb3JzCi0gICUgdGhlIHNhbWUgZm9yIGVhY2ggbGluaywgYW5kIGF2b2lkcyBoYXZpbmcgbG90cyBvZiBnYXJiYWdlIGFsbCBvdmVyIAotICAlIHRoaXMgc3R5bGUgZmlsZS4KLSAgXG5ld2NvbW1hbmR7XHB5QGxpbmtUb05hbWV9WzJdeyUKLSAgICBccGRmYW5ub3RsaW5rIGF0dHJ7L0JvcmRlciBbMCAwIDBdfSBnb3RvIG5hbWV7IzF9JQotICAgICAgXHB5QExpbmtDb2xvciMyXHB5QE5vcm1hbENvbG9yJQotICAgIFxwZGZlbmRsaW5rJQotICB9ICAgIAotICAlIENvbXB1dGUgdGhlIHBhZGRlZCBwYWdlIG51bWJlciBzZXBhcmF0ZWx5IHNpbmNlIHdlIGVuZCB1cCB3aXRoIGEgcGFpciBvZgotICAlIFxyZWxheCB0b2tlbnM7IHRoaXMgZ2V0cyB0aGUgcmlnaHQgc3RyaW5nIGNvbXB1dGVkIGFuZCB3b3Jrcy4KLSAgXHJlbmV3Y29tbWFuZHtcY29udGVudHNsaW5lfVszXXslCi0gICAgXGRlZlxteUBwYWdlbm97XHB5QHRhcmdldG5veyMzfX0lCi0gICAgXHB5QE9sZENvbnRlbnRzbGluZXsjMX17XHB5QGxpbmtUb05hbWV7cGFnZVxteUBwYWdlbm99eyMyfX17IzN9JQotICB9Ci0gIFxBdEVuZERvY3VtZW50ewotICAgIFxJbnB1dElmRmlsZUV4aXN0c3tcam9ibmFtZS5ia219e1xwZGZjYXRhbG9ney9QYWdlTW9kZSAvVXNlT3V0bGluZXN9fXt9Ci0gIH0KLSAgXG5ld2NvbW1hbmR7XHB5QHRhcmdldH1bMV17JQotICAgIFxpZnB5QGRvaW5nQHBhZ2VAdGFyZ2V0cyUKLSAgICAgIHtccGRmZGVzdCBuYW1leyMxfSB4eXp9JQotICAgIFxmaSUKLSAgfQotICBcbGV0XHB5QE9sZExhYmVsPVxsYWJlbAotICBccmVuZXdjb21tYW5ke1xsYWJlbH1bMV17JQotICAgIFxweUBPbGRMYWJlbHsjMX0lCi0gICAgXHB5QHRhcmdldHtsYWJlbC0jMX0lCi0gIH0KLSAgJSBUaGlzIHN0dWZmIGFkZHMgYSBwYWdlIyBkZXN0aW5hdGlvbiB0byBldmVyeSBQREYgcGFnZSwgd2hlcmUgIyBpcyB0aHJlZQotICAlIGRpZ2l0cyB3aWRlLCBwYWRkZWQgd2l0aCBsZWFkaW5nIHplcm9zLiAgVGhpcyBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGgKLSAgJSB0aGUgZnJvbnRtYXR0ZXIsIGJ1dCBkb2VzIGZpbmUgd2l0aCB0aGUgYm9keS4KLSAgJQotICAlIFRoaXMgaXMgKmhlYXZpbHkqIGJhc2VkIG9uIHRoZSBoeXBlcnJlZiBwYWNrYWdlLgotICAlCi0gIFxkZWZcQGJlZ2luZHZpeyUKLSAgICBcdW52Ym94IFxAYmVnaW5kdmlib3gKLSAgICBcQGh5cGVyZml4aGVhZAotICB9Ci0gIFxkZWZcQGh5cGVyZml4aGVhZHslCi0gICBcbGV0XEhAb2xkQHRoZWhlYWRcQHRoZWhlYWQKLSAgICAgICBcZ2xvYmFsXGRlZlxAZm9ve1xweUB0YXJnZXR7cGFnZVxweUBwYWdlbm99fSUKLSAgICAgXGV4cGFuZGFmdGVyXGlmeFxleHBhbmRhZnRlclxAZW1wdHlcSEBvbGRAdGhlaGVhZAotICAgICAgIFxkZWZcSEBvbGRAdGhlaGVhZHtcaGZpbH1cZmkKLSAgICBcZGVmXEB0aGVoZWFke1xAZm9vXHJlbGF4XEhAb2xkQHRoZWhlYWR9JQotICB9Ci1cZmlcZmkKLQotJSBJbmNyZWFzZSBwcmludGFibGUgcGFnZSBzaXplIChjb3BpZWQgZnJvbSBmdWxscGFnZS5zdHkpCi1cdG9wbWFyZ2luIDBwdAotXGFkdmFuY2UgXHRvcG1hcmdpbiBieSAtXGhlYWRoZWlnaHQKLVxhZHZhbmNlIFx0b3BtYXJnaW4gYnkgLVxoZWFkc2VwCi0KLSUgYXR0ZW1wdCB0byB3b3JrIGEgbGl0dGxlIGJldHRlciBmb3IgQTQgdXNlcnMKLVx0ZXh0aGVpZ2h0IFxwYXBlcmhlaWdodAotXGFkdmFuY2VcdGV4dGhlaWdodCBieSAtMmluCi0KLVxvZGRzaWRlbWFyZ2luIDBwdAotXGV2ZW5zaWRlbWFyZ2luIDBwdAotJVxldmVuc2lkZW1hcmdpbiAtLjI1aW4gICUgZm9yIGBgbWFudWFsIHNpemUnJyBkb2N1bWVudHMKLVxtYXJnaW5wYXJ3aWR0aCAwLjVpbgotCi1cdGV4dHdpZHRoIFxwYXBlcndpZHRoCi1cYWR2YW5jZVx0ZXh0d2lkdGggYnkgLTJpbgotCi0KLSUgU3R5bGUgcGFyYW1ldGVycyBhbmQgbWFjcm9zIHVzZWQgYnkgbW9zdCBkb2N1bWVudHMgaGVyZQotXHJhZ2dlZGJvdHRvbQotXHNsb3BweQotXHBhcmluZGVudCA9IDBtbQotXHBhcnNraXAgPSAybW0KLVxoYmFkbmVzcyA9IDUwMDAgICAgICAgICAgICAgICAgJSBkb24ndCBwcmludCB0cml2aWFsIGdyaXBlcwotCi1ccGFnZXN0eWxle2VtcHR5fSAgICAgICAgICAgICAgICUgc3RhcnQgdGhpcyB3YXk7IGNoYW5nZSBmb3IKLVxwYWdlbnVtYmVyaW5ne3JvbWFufSAgICAgICAgICAgJSBUb0MgJiBjaGFwdGVycwotCi0lIFVzZSB0aGlzIHRvIHNldCB0aGUgZm9udCBmYW1pbHkgZm9yIGhlYWRlcnMgYW5kIG90aGVyIGRlY29yOgotXG5ld2NvbW1hbmR7XHB5QEhlYWRlckZhbWlseX17XHNmZmFtaWx5fQotCi0lIFJlZGVmaW5lIHRoZSAnbm9ybWFsJyBoZWFkZXIvZm9vdGVyIHN0eWxlIHdoZW4gdXNpbmcgImZhbmN5aGRyIiBwYWNrYWdlOgotXEBpZnVuZGVmaW5lZHtmYW5jeWhmfXt9ewotICAlIFVzZSBccGFnZXN0eWxle25vcm1hbH0gYXMgdGhlIHByaW1hcnkgcGFnZXN0eWxlIGZvciB0ZXh0LgotICBcZmFuY3lwYWdlc3R5bGV7bm9ybWFsfXsKLSAgICBcZmFuY3loZnt9Ci0gICAgXGZhbmN5Zm9vdFtMRSxST117e1xweUBIZWFkZXJGYW1pbHlcdGhlcGFnZX19Ci0gICAgXGZhbmN5Zm9vdFtMT117e1xweUBIZWFkZXJGYW1pbHlcbm91cHBlcmNhc2V7XHJpZ2h0bWFya319fQotICAgIFxmYW5jeWZvb3RbUkVde3tccHlASGVhZGVyRmFtaWx5XG5vdXBwZXJjYXNle1xsZWZ0bWFya319fQotICAgIFxyZW5ld2NvbW1hbmR7XGhlYWRydWxld2lkdGh9ezBwdH0KLSAgICBccmVuZXdjb21tYW5ke1xmb290cnVsZXdpZHRofXswLjRwdH0KLSAgfQotICAlIFVwZGF0ZSB0aGUgcGxhaW4gc3R5bGUgc28gd2UgZ2V0IHRoZSBwYWdlIG51bWJlciAmIGZvb3RlciBsaW5lLAotICAlIGJ1dCBub3QgYSBjaGFwdGVyIG9yIHNlY3Rpb24gdGl0bGUuICBUaGlzIGlzIHRvIGtlZXAgdGhlIGZpcnN0Ci0gICUgcGFnZSBvZiBhIGNoYXB0ZXIgYW5kIHRoZSBibGFuayBwYWdlIGJldHdlZW4gY2hhcHRlcnMgYGNsZWFuLicKLSAgXGZhbmN5cGFnZXN0eWxle3BsYWlufXsKLSAgICBcZmFuY3loZnt9Ci0gICAgXGZhbmN5Zm9vdFtMRSxST117e1xweUBIZWFkZXJGYW1pbHlcdGhlcGFnZX19Ci0gICAgXHJlbmV3Y29tbWFuZHtcaGVhZHJ1bGV3aWR0aH17MHB0fQotICAgIFxyZW5ld2NvbW1hbmR7XGZvb3RydWxld2lkdGh9ezAuNHB0fQotICB9Ci0gICUgUmVkZWZpbmUgXGNsZWFyZG91YmxlcGFnZSBzbyB0aGF0IHRoZSBibGFuayBwYWdlIGJldHdlZW4gY2hhcHRlcnMKLSAgJSBnZXRzIHRoZSBwbGFpbiBzdHlsZSBhbmQgbm90IHRoZSBmYW5jeSBzdHlsZS4gIFRoaXMgaXMgZGVzY3JpYmVkCi0gICUgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmYW5jeWhkciBwYWNrYWdlIGJ5IFBpZXQgdm9uIE9vc3RydW0uCi0gIFxAaWZ1bmRlZmluZWR7Y2hhcHRlcn17fXsKLSAgICBccmVuZXdjb21tYW5ke1xjbGVhcmRvdWJsZXBhZ2V9ewotICAgICAgXGNsZWFycGFnZVxpZkBvcGVucmlnaHQgXGlmb2RkXGNAcGFnZVxlbHNlCi0gICAgICBcaGJveHt9Ci0gICAgICBcdGhpc3BhZ2VzdHlsZXtwbGFpbn0KLSAgICAgIFxuZXdwYWdlCi0gICAgICBcaWZAdHdvY29sdW1uXGhib3h7fVxuZXdwYWdlXGZpXGZpXGZpCi0gICAgfQotICB9Ci19Ci0KLSUgVGhpcyBzZXRzIHVwIHRoZSB7dmVyYmF0aW19IGVudmlyb25tZW50IHRvIGJlIGluZGVudGVkIGFuZCBhIG1pbmlwYWdlLAotJSBhbmQgdG8gaGF2ZSBhbGwgdGhlIG90aGVyIG1vc3RseSBuaWNlIHByb3BlcnRpZXMgdGhhdCB3ZSB3YW50IGZvcgotJSBjb2RlIHNhbXBsZXMuCi0KLVxsZXRccHlAT2xkVmVyYmF0aW09XHZlcmJhdGltCi1cbGV0XHB5QE9sZEVuZFZlcmJhdGltPVxlbmR2ZXJiYXRpbQotXFJlcXVpcmVQYWNrYWdle3ZlcmJhdGltfQotCi0lIFZhcmlhYmxlIHVzZWQgYnkgYmVnaW4gY29kZSBjb21tYW5kCi1cbmV3bGVuZ3Roe1xweUBjb2Rld2lkdGh9Ci0KLVxyZW5ld2NvbW1hbmR7XHZlcmJhdGltfXslCi0gIFxzZXRsZW5ndGh7XHBhcmluZGVudH17MWNtfSUKLSAgJSBDYWxjdWxhdGUgdGhlIHRleHQgd2lkdGggZm9yIHRoZSBtaW5pcGFnZToKLSAgXHNldGxlbmd0aHtccHlAY29kZXdpZHRofXtcbGluZXdpZHRofSUKLSAgXGFkZHRvbGVuZ3Roe1xweUBjb2Rld2lkdGh9ey1ccGFyaW5kZW50fSUKLSAgJQotICBccGFyXGluZGVudCUKLSAgXGJlZ2lue21pbmlwYWdlfVt0XXtccHlAY29kZXdpZHRofSUKLSAgICBcc21hbGwlCi0gICAgXHB5QE9sZFZlcmJhdGltJQotfQotXHJlbmV3Y29tbWFuZHtcZW5kdmVyYmF0aW19eyUKLSAgICBccHlAT2xkRW5kVmVyYmF0aW0lCi0gIFxlbmR7bWluaXBhZ2V9JQotfQotCi0lIFRoaXMgZG9lcyBhIHNpbWlsYXIgdGhpbmcgZm9yIHRoZSB7YWxsdHR9IGVudmlyb25tZW50OgotXFJlcXVpcmVQYWNrYWdle2FsbHR0fQotXGxldFxweUBPbGRBbGxUVD1cYWxsdHQKLVxsZXRccHlAT2xkRW5kQWxsVFQ9XGVuZGFsbHR0Ci0KLVxyZW5ld2NvbW1hbmR7XGFsbHR0fXslCi0gIFxzZXRsZW5ndGh7XHBhcmluZGVudH17MWNtfSUKLSAgJSBDYWxjdWxhdGUgdGhlIHRleHQgd2lkdGggZm9yIHRoZSBtaW5pcGFnZToKLSAgXHNldGxlbmd0aHtccHlAY29kZXdpZHRofXtcbGluZXdpZHRofSUKLSAgXGFkZHRvbGVuZ3Roe1xweUBjb2Rld2lkdGh9ey1ccGFyaW5kZW50fSUKLSAgJQotICBccGFyXGluZGVudCUKLSAgXGJlZ2lue21pbmlwYWdlfVt0XXtccHlAY29kZXdpZHRofSUKLSAgICBcc21hbGwlCi0gICAgXHB5QE9sZEFsbFRUJQotfQotXHJlbmV3Y29tbWFuZHtcZW5kYWxsdHR9eyUKLSAgICBccHlAT2xkRW5kQWxsVFQlCi0gIFxlbmR7bWluaXBhZ2V9JQotfQotCi0KLVxuZXdjb21tYW5ke1xweUBtb2R1bGViYWRrZXl9e3stLWp1c3Qtc29tZS1qdW5rLS19fQotCi0KLSUlICBMb3RzIG9mIGluZGV4LWVudHJ5IGdlbmVyYXRpb24gc3VwcG9ydC4KLQotJSBDb21tYW5kIHRvIHdyYXAgYXJvdW5kIHN0dWZmIHRoYXQgcmVmZXJzIHRvIGZ1bmN0aW9uIC8gbW9kdWxlIC8KLSUgYXR0cmlidXRlIG5hbWVzICBpbiB0aGUgaW5kZXguICBEZWZhdWx0IGJlaGF2aW9yOiBsaWtlIFxjb2Rle30uICBUbwotJSBqdXN0IGtlZXAgdGhlIGluZGV4IGVudHJpZXMgaW4gdGhlIHJvbWFuIGZvbnQsIHVuY29tbWVudCB0aGUgc2Vjb25kCi0lIGRlZmluaXRpb247IGl0IG1hdGNoZXMgTydSZWlsbHkgc3R5bGUgbW9yZS4KLSUKLVxuZXdjb21tYW5ke1xweUBpZHhjb2RlfVsxXXtcdGV4dHR0eyMxfX0KLSVccmVuZXdjb21tYW5ke1xweUBpZHhjb2RlfVsxXXsjMX0KLQotJSBDb21tYW5kIHRvIGdlbmVyYXRlIHR3byBpbmRleCBlbnRyaWVzICh1c2luZyBzdWJlbnRyaWVzKQotXG5ld2NvbW1hbmR7XGluZGV4aWl9WzJde1xpbmRleHsjMSEjMn1caW5kZXh7IzIhIzF9fQotCi0lIEFuZCB0aHJlZSBlbnRyaWVzICh1c2luZyBvbmx5IG9uZSBsZXZlbCBvZiBzdWJlbnRyaWVzKQotXG5ld2NvbW1hbmR7XGluZGV4aWlpfVszXXtcaW5kZXh7IzEhIzIgIzN9XGluZGV4eyMyISMzLCAjMX1caW5kZXh7IzMhIzEgIzJ9fQotCi0lIEFuZCBmb3VyIChhZ2FpbiwgdXNpbmcgb25seSBvbmUgbGV2ZWwgb2Ygc3ViZW50cmllcykKLVxuZXdjb21tYW5ke1xpbmRleGl2fVs0XXsKLVxpbmRleHsjMSEjMiAjMyAjNH0KLVxpbmRleHsjMiEjMyAjNCwgIzF9Ci1caW5kZXh7IzMhIzQsICMxICMyfQotXGluZGV4eyM0ISMxICMyICMzfQotfQotCi0lIENvbW1hbmQgdG8gZ2VuZXJhdGUgYSByZWZlcmVuY2UgdG8gYSBmdW5jdGlvbiwgc3RhdGVtZW50LCBrZXl3b3JkLAotJSBvcGVyYXRvci4KLVxuZXdjb21tYW5ke1xrd2luZGV4fVsxXXtcaW5kZXhpaXtrZXl3b3JkfXsjMUB7XHB5QGlkeGNvZGV7IzF9fX19Ci1cbmV3Y29tbWFuZHtcc3RpbmRleH1bMV17XGluZGV4aWl7c3RhdGVtZW50fXsjMUB7XHB5QGlkeGNvZGV7IzF9fX19Ci1cbmV3Y29tbWFuZHtcb3BpbmRleH1bMV17XGluZGV4aWl7b3BlcmF0b3J9eyMxQHtccHlAaWR4Y29kZXsjMX19fX0KLVxuZXdjb21tYW5ke1xleGluZGV4fVsxXXtcaW5kZXhpaXtleGNlcHRpb259eyMxQHtccHlAaWR4Y29kZXsjMX19fX0KLVxuZXdjb21tYW5ke1xvYmluZGV4fVsxXXtcaW5kZXhpaXtvYmplY3R9eyMxfX0KLVxuZXdjb21tYW5ke1xiaWZ1bmNpbmRleH1bMV17JQotICBcaW5kZXh7IzFAe1xweUBpZHhjb2RleyMxKCl9fSAoYnVpbHQtaW4gZnVuY3Rpb24pfX0KLQotJSBBZGQgYW4gaW5kZXggZW50cnkgZm9yIGEgbW9kdWxlCi1cbmV3Y29tbWFuZHtccHlAcmVmbW9kdWxlfVsyXXtcaW5kZXh7IzFAe1xweUBpZHhjb2RleyMxfX0gKCMybW9kdWxlKX19Ci1cbmV3Y29tbWFuZHtccmVmbW9kaW5kZXh9WzFde1xweUByZWZtb2R1bGV7IzF9e319Ci1cbmV3Y29tbWFuZHtccmVmYmltb2RpbmRleH1bMV17XHB5QHJlZm1vZHVsZXsjMX17YnVpbHQtaW4gfX0KLVxuZXdjb21tYW5ke1xyZWZleG1vZGluZGV4fVsxXXtccHlAcmVmbW9kdWxleyMxfXtleHRlbnNpb24gfX0KLVxuZXdjb21tYW5ke1xyZWZzdG1vZGluZGV4fVsxXXtccHlAcmVmbW9kdWxleyMxfXtzdGFuZGFyZCB9fQotCi0lIFJlZmVyIHRvIGEgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiB1c2luZyBhIGh5cGVybGluayBvZiB0aGUgbW9kdWxlJ3MKLSUgbmFtZSwgYXQgbGVhc3QgaWYgd2UncmUgYnVpbGRpbmcgUERGOgotXEBpZnVuZGVmaW5lZHtwZGZhbm5vdGxpbmt9eyUKLSAgXG5ld2NvbW1hbmR7XHJlZm1vZHVsZX1bMl1bXHB5QG1vZHVsZWJhZGtleV17XG1vZHVsZXsjMn19Ci19eyUKLSAgXG5ld2NvbW1hbmR7XHJlZm1vZHVsZX1bMl1bXHB5QG1vZHVsZWJhZGtleV17JQotICAgIFxpZnhccHlAbW9kdWxlYmFka2V5IzFcZGVmXHB5QG1vZHVsZWtleXsjMn1cZWxzZVxkZWZccHlAbW9kdWxla2V5eyMxfVxmaSUKLSAgICBccHlAbGlua1RvTmFtZXtsYWJlbC1tb2R1bGUtXHB5QG1vZHVsZWtleX17XG1vZHVsZXsjMn19JQotICB9Ci19Ci0KLSUgc3VwcG9ydCBmb3IgdGhlIG1vZHVsZSBpbmRleAotXG5ld2lmXGlmcHlAVXNlTW9kdWxlSW5kZXgKLVxweUBVc2VNb2R1bGVJbmRleGZhbHNlCi0KLVxuZXdjb21tYW5ke1xtYWtlbW9kaW5kZXh9ewotICBcbmV3d3JpdGVcbW9kaW5kZXhmaWxlCi0gIFxvcGVub3V0XG1vZGluZGV4ZmlsZT1tb2Rcam9ibmFtZS5pZHgKLSAgXHB5QFVzZU1vZHVsZUluZGV4dHJ1ZQotfQotCi0lIEFkZCB0aGUgZGVmaW5pbmcgZW50cnkgZm9yIGEgbW9kdWxlCi1cbmV3Y29tbWFuZHtccHlAbW9kaW5kZXh9WzJdeyUKLSAgXHJlbmV3Y29tbWFuZHtccHlAdGhpc21vZHVsZX17IzF9Ci0gIFxzZXRpbmRleHN1Yml0ZW17KGluIG1vZHVsZSAjMSl9JQotICBcaW5kZXh7IzFAe1xweUBpZHhjb2RleyMxfX0gKCMybW9kdWxlKXx0ZXh0YmZ9JQotICBcaWZweUBVc2VNb2R1bGVJbmRleCUKLSAgICBcQGlmdW5kZWZpbmVke3B5QG1vZHBsYXRAXHB5QHRoaXNtb2R1bGVrZXl9ewotICAgICAgXHdyaXRlXG1vZGluZGV4ZmlsZXtccHJvdGVjdFxpbmRleGVudHJ5eyMxQHtcdGV4dHR0eyMxfX19e1x0aGVwYWdlfX0lCi0gICAgfXtcd3JpdGVcbW9kaW5kZXhmaWxle1xwcm90ZWN0XGluZGV4ZW50cnl7IzFAe1x0ZXh0dHR7IzF9ICUKLSAgICAgICAgXGVtcGh7KFxweUBwbGF0Zm9ybW9mW1xweUB0aGlzbW9kdWxla2V5XXt9KX19fXtcdGhlcGFnZX19JQotICAgIH0KLSAgXGZpJQotfQotCi0lICoqKiBYWFggKioqIFRIRSBORVhUIEZPVVIgTUFDUk9TIEFSRSBOT1cgT0JTT0xFVEUgISEhICoqKgotCi0lIGJ1aWx0LWluICYgUHl0aG9uIG1vZHVsZXMgaW4gdGhlIG1haW4gZGlzdHJpYnV0aW9uCi1cbmV3Y29tbWFuZHtcYmltb2RpbmRleH1bMV17XHB5QG1vZGluZGV4eyMxfXtidWlsdC1pbiB9JQotICBcdHlwZW91dHsqKiogTUFDUk8gYmltb2RpbmRleCBJUyBPQlNPTEVURSAtLSBVU0UgZGVjbGFyZW1vZHVsZSBJTlNURUFEIX19Ci1cbmV3Y29tbWFuZHtcc3Rtb2RpbmRleH1bMV17XHB5QG1vZGluZGV4eyMxfXtzdGFuZGFyZCB9JQotICBcdHlwZW91dHsqKiogTUFDUk8gc3Rtb2RpbmRleCBJUyBPQlNPTEVURSAtLSBVU0UgZGVjbGFyZW1vZHVsZSBJTlNURUFEIX19Ci0KLSUgUHl0aG9uICYgZXh0ZW5zaW9uIG1vZHVsZXMgb3V0c2lkZSB0aGUgbWFpbiBkaXN0cmlidXRpb24KLVxuZXdjb21tYW5ke1xtb2RpbmRleH1bMV17XHB5QG1vZGluZGV4eyMxfXt9JQotICBcdHlwZW91dHsqKiogTUFDUk8gbW9kaW5kZXggSVMgT0JTT0xFVEUgLS0gVVNFIGRlY2xhcmVtb2R1bGUgSU5TVEVBRCF9fQotXG5ld2NvbW1hbmR7XGV4bW9kaW5kZXh9WzFde1xweUBtb2RpbmRleHsjMX17ZXh0ZW5zaW9uIH0lCi0gIFx0eXBlb3V0eyoqKiBNQUNSTyBleG1vZGluZGV4IElTIE9CU09MRVRFIC0tIFVTRSBkZWNsYXJlbW9kdWxlIElOU1RFQUQhfX0KLQotJSBBZGRpdGlvbmFsIHN0cmluZyBmb3IgYW4gaW5kZXggZW50cnkKLVxuZXdpZlxpZnB5QHVzaW5nc3ViaXRlbVxweUB1c2luZ3N1Yml0ZW1mYWxzZQotXG5ld2NvbW1hbmR7XHB5QGluZGV4c3ViaXRlbX17fQotXG5ld2NvbW1hbmR7XHNldGluZGV4c3ViaXRlbX1bMV17XHJlbmV3Y29tbWFuZHtccHlAaW5kZXhzdWJpdGVtfXsgIzF9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHB5QHVzaW5nc3ViaXRlbXRydWV9Ci1cbmV3Y29tbWFuZHtcdHRpbmRleH1bMV17JQotICBcaWZweUB1c2luZ3N1Yml0ZW0KLSAgICBcaW5kZXh7IzFAe1xweUBpZHhjb2RleyMxfX1ccHlAaW5kZXhzdWJpdGVtfSUKLSAgXGVsc2UlCi0gICAgXGluZGV4eyMxQHtccHlAaWR4Y29kZXsjMX19fSUKLSAgXGZpJQotfQotXG5ld2NvbW1hbmR7XHdpdGhzdWJpdGVtfVsyXXslCi0gIFxiZWdpbmdyb3VwJQotICAgIFxkZWZcdHRpbmRleCMjMXtcaW5kZXh7IyMxQHtccHlAaWR4Y29kZXsjIzF9fSAjMX19JQotICAgICMyJQotICBcZW5kZ3JvdXAlCi19Ci0KLQotJSBNb2R1bGUgc3lub3BzaXMgcHJvY2Vzc2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJQotXG5ld2NvbW1hbmR7XHB5QHRoaXNjbGFzc317fQotXG5ld2NvbW1hbmR7XHB5QHRoaXNtb2R1bGV9e30KLVxuZXdjb21tYW5ke1xweUB0aGlzbW9kdWxla2V5fXt9Ci1cbmV3Y29tbWFuZHtccHlAdGhpc21vZHVsZXR5cGV9e30KLQotXG5ld2NvbW1hbmR7XHB5QHN0YW5kYXJkSW5kZXhNb2R1bGV9WzFde1xweUBtb2RpbmRleHsjMX17c3RhbmRhcmQgfX0KLVxuZXdjb21tYW5ke1xweUBidWlsdGluSW5kZXhNb2R1bGV9WzFde1xweUBtb2RpbmRleHsjMX17YnVpbHQtaW4gfX0KLVxuZXdjb21tYW5ke1xweUBleHRlbnNpb25JbmRleE1vZHVsZX1bMV17XHB5QG1vZGluZGV4eyMxfXtleHRlbnNpb24gfX0KLVxuZXdjb21tYW5ke1xweUBJbmRleE1vZHVsZX1bMV17XHB5QG1vZGluZGV4eyMxfXt9fQotCi1cbmV3aWZcaWZweUBIYXZlTW9kU3lub3BzaXMgICAgICAgXHB5QEhhdmVNb2RTeW5vcHNpc2ZhbHNlCi1cbmV3aWZcaWZweUBNb2RTeW5vcHNpc0ZpbGVJc09wZW4gXHB5QE1vZFN5bm9wc2lzRmlsZUlzT3BlbmZhbHNlCi1cbmV3aWZcaWZweUBIYXZlTW9kUGxhdGZvcm0gICAgICAgXHB5QEhhdmVNb2RQbGF0Zm9ybWZhbHNlCi0KLSUgXGRlY2xhcmVtb2R1bGVba2V5XXt0eXBlfXtuYW1lfQotXG5ld2NvbW1hbmR7XGRlY2xhcmVtb2R1bGV9WzNdW1xweUBtb2R1bGViYWRrZXldewotICBccHlAb3Blbk1vZFN5bm9wc2lzRmlsZQotICBccmVuZXdjb21tYW5ke1xweUB0aGlzbW9kdWxldHlwZX17IzJ9Ci0gIFxpZnhccHlAbW9kdWxlYmFka2V5IzEKLSAgICBccmVuZXdjb21tYW5ke1xweUB0aGlzbW9kdWxla2V5fXsjM30KLSAgXGVsc2UKLSAgICBccmVuZXdjb21tYW5ke1xweUB0aGlzbW9kdWxla2V5fXsjMX0KLSAgXGZpCi0gIFxAaWZ1bmRlZmluZWR7cHlAIzJJbmRleE1vZHVsZX17JQotICAgIFx0eXBlb3V0eyoqKiBNQUNSTyBkZWNsYXJlbW9kdWxlIGNhbGxlZCB3aXRoIHVua25vd24gbW9kdWxlIHR5cGU6IGAjMid9Ci0gICAgXHB5QEluZGV4TW9kdWxleyMzfSUKLSAgfXslCi0gICAgXGNzbmFtZSBweUAjMkluZGV4TW9kdWxlXGVuZGNzbmFtZXsjM30lCi0gIH0KLSAgXGxhYmVse21vZHVsZS1ccHlAdGhpc21vZHVsZWtleX0KLX0KLVxuZXdpZlxpZnB5QE1vZFBsYXRmb3JtRmlsZUlzT3BlbiBccHlATW9kUGxhdGZvcm1GaWxlSXNPcGVuZmFsc2UKLVxuZXdjb21tYW5ke1xweUBNb2RQbGF0Zm9ybUZpbGVuYW1lfXtcam9ibmFtZS5wbGF9Ci1cbmV3Y29tbWFuZHtccGxhdGZvcm19WzFdewotICBcaWZweUBNb2RQbGF0Zm9ybUZpbGVJc09wZW5cZWxzZQotICAgIFxuZXd3cml0ZVxweUBNb2RQbGF0Zm9ybUZpbGUKLSAgICBcb3Blbm91dFxweUBNb2RQbGF0Zm9ybUZpbGU9XHB5QE1vZFBsYXRmb3JtRmlsZW5hbWUKLSAgICBccHlATW9kUGxhdGZvcm1GaWxlSXNPcGVudHJ1ZQotICBcZmkKLX0KLVxJbnB1dElmRmlsZUV4aXN0c3tcam9ibmFtZS5wbGF9e317fQotXG5ld2NvbW1hbmR7XHB5QHBsYXRmb3Jtb2Z9WzJdW1xweUBtb2R1bGViYWRrZXldeyUKLSAgXGlmeFxweUBtb2R1bGViYWRrZXkjMSBcZGVmXHB5QGtleXsjMn0lCi0gIFxlbHNlIFxkZWZccHlAa2V5eyMxfSUKLSAgXGZpJQotICBcY3NuYW1lIHB5QG1vZHBsYXRAXHB5QGtleVxlbmRjc25hbWUlCi19Ci1cbmV3Y29tbWFuZHtcaWdub3JlUGxhdGZvcm1Bbm5vdGF0aW9ufVsxXXt9Ci0KLSUgXG1vZHVsZWF1dGhvcntuYW1lfXtlbWFpbH0KLVxuZXdjb21tYW5ke1xtb2R1bGVhdXRob3J9WzJde30KLQotJSBcc2VjdGlvbmF1dGhvcntuYW1lfXtlbWFpbH0KLVxuZXdjb21tYW5ke1xzZWN0aW9uYXV0aG9yfVsyXXt9Ci0KLQotXG5ld2NvbW1hbmR7XHB5QGRlZnN5bm9wc2lzfXtNb2R1bGUgaGFzIG5vIHN5bm9wc2lzLn0KLVxuZXdjb21tYW5ke1xweUBtb2R1bGVzeW5vcHNpc317XHB5QGRlZnN5bm9wc2lzfQotXG5ld2NvbW1hbmR7XG1vZHVsZXN5bm9wc2lzfVsxXXsKLSAgXHB5QEhhdmVNb2RTeW5vcHNpc3RydWUKLSAgXHJlbmV3Y29tbWFuZHtccHlAbW9kdWxlc3lub3BzaXN9eyMxfQotfQotCi0lIGRlZmluZSB0aGUgZmlsZQotXG5ld3dyaXRlXHB5QE1vZFN5bm9wc2lzRmlsZQotCi0lIGhhY2tlZCBmcm9tIFxhZGR0b2NvbnRlbnRzIGZyb20gbGF0ZXgubHR4OgotXGxvbmdcZGVmXHB5QHdyaXRlTW9kU3lub3BzaXNGaWxlIzF7JQotICBccHJvdGVjdGVkQHdyaXRlXHB5QE1vZFN5bm9wc2lzRmlsZSUKLSAgICAgIHtcbGV0XGxhYmVsXEBnb2JibGUgXGxldFxpbmRleFxAZ29iYmxlIFxsZXRcZ2xvc3NhcnlcQGdvYmJsZX0lCi0gICAgICB7XHN0cmluZyMxfSUKLX0KLVxuZXdjb21tYW5ke1xweUBjbG9zZU1vZFN5bm9wc2lzRmlsZX17Ci0gIFxpZnB5QE1vZFN5bm9wc2lzRmlsZUlzT3BlbgotICAgIFxjbG9zZW91dFxweUBNb2RTeW5vcHNpc0ZpbGUKLSAgICBccHlATW9kU3lub3BzaXNGaWxlSXNPcGVuZmFsc2UKLSAgXGZpCi19Ci1cbmV3Y29tbWFuZHtccHlAb3Blbk1vZFN5bm9wc2lzRmlsZX17Ci0gIFxpZnB5QE1vZFN5bm9wc2lzRmlsZUlzT3BlblxlbHNlCi0gICAgXG9wZW5vdXRccHlATW9kU3lub3BzaXNGaWxlPVxweUBNb2RTeW5vcHNpc0ZpbGVuYW1lCi0gICAgXHB5QE1vZFN5bm9wc2lzRmlsZUlzT3BlbnRydWUKLSAgXGZpCi19Ci0KLVxuZXdjb21tYW5ke1xweUBQcm9jZXNzTW9kU3lub3BzaXN9ewotICBcaWZweUBIYXZlTW9kU3lub3BzaXMKLSAgICBccHlAd3JpdGVNb2RTeW5vcHNpc0ZpbGV7XG1vZHVsZXN5bm9wc2lzJQotICAgICAge1xweUB0aGlzbW9kdWxla2V5fXtccHlAdGhpc21vZHVsZX0lCi0gICAgICB7XHB5QHRoaXNtb2R1bGV0eXBlfXtccHlAbW9kdWxlc3lub3BzaXN9fSUKLSAgICBccHlASGF2ZU1vZFN5bm9wc2lzZmFsc2UKLSAgXGZpCi0gIFxyZW5ld2NvbW1hbmR7XHB5QG1vZHVsZXN5bm9wc2lzfXtccHlAZGVmc3lub3BzaXN9Ci19Ci1cQXRFbmREb2N1bWVudHtccHlAUHJvY2Vzc01vZFN5bm9wc2lzXHB5QGNsb3NlTW9kU3lub3BzaXNGaWxlfQotCi0KLVxsb25nXGRlZlxweUB3cml0ZU1vZFBsYXRmb3JtRmlsZSMxeyUKLSAgXHByb3RlY3RlZEB3cml0ZVxweUBNb2RQbGF0Zm9ybUZpbGUlCi0gICAge1xsZXRcbGFiZWxcQGdvYmJsZSBcbGV0XGluZGV4XEBnb2JibGUgXGxldFxnbG9zc2FyeVxAZ29iYmxlfSUKLSAgICB7XHN0cmluZyMxfSUKLX0KLQotCi1cbmV3Y29tbWFuZHtcbG9jYWxtb2R1bGV0YWJsZX17Ci0gIFxJZkZpbGVFeGlzdHN7XHB5QE1vZFN5bm9wc2lzRmlsZW5hbWV9ewotICAgIFxiZWdpbntzeW5vcHNpc3RhYmxlfQotICAgICAgXGlucHV0e1xweUBNb2RTeW5vcHNpc0ZpbGVuYW1lfQotICAgIFxlbmR7c3lub3BzaXN0YWJsZX0KLSAgfXt9Ci19Ci0KLVxAaWZ1bmRlZmluZWR7cGRmb3V0cHV0fXsKLSAgXG5ld2NvbW1hbmR7XHB5QE1vZFN5bm9wc2lzU3VtbWFyeX1bNF17XGJmY29kZXsjMn0gJiAjNFxcfQotfXsKLSAgXG5ld2NvbW1hbmR7XHB5QE1vZFN5bm9wc2lzU3VtbWFyeX1bNF17JQotICAgIFxweUBsaW5rVG9OYW1le2xhYmVsLW1vZHVsZS0jMX17XGJmY29kZXsjMn19ICYgIzRcXAotICB9Ci19Ci1cbmV3ZW52aXJvbm1lbnR7c3lub3BzaXN0YWJsZX17Ci0gICUga2V5LCBuYW1lLCB0eXBlLCBzeW5vcHNpcwotICBcbGV0XG1vZHVsZXN5bm9wc2lzPVxweUBNb2RTeW5vcHNpc1N1bW1hcnkKLSAgXGJlZ2lue3RhYnVsYXJ9e2xsfQotfXsKLSAgXGVuZHt0YWJ1bGFyfQotfQotJQotJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLVxuZXdjb21tYW5ke1xweUByZXNldH17Ci0gIFxweUB1c2luZ3N1Yml0ZW1mYWxzZQotICBccHlAUHJvY2Vzc01vZFN5bm9wc2lzCi0gIFxyZW5ld2NvbW1hbmR7XHB5QHRoaXNjbGFzc317fQotICBccmVuZXdjb21tYW5ke1xweUB0aGlzbW9kdWxlfXt9Ci0gIFxyZW5ld2NvbW1hbmR7XHB5QHRoaXNtb2R1bGVrZXl9e30KLSAgXHJlbmV3Y29tbWFuZHtccHlAdGhpc21vZHVsZXR5cGV9e30KLX0KLQotJSBBdWdtZW50IHRoZSBzZWN0aW9uaW5nIGNvbW1hbmRzIHVzZWQgdG8gZ2V0IG91ciBvd24gZm9udCBmYW1pbHkgaW4gcGxhY2UsCi0lIGFuZCByZXNldCBzb21lIGludGVybmFsIGRhdGEgaXRlbXM6Ci1ccmVuZXdjb21tYW5ke1xzZWN0aW9ufXtccHlAcmVzZXQlCi0gICAgICAgICAgICAgICAgICAgICAgICBcQHN0YXJ0c2VjdGlvbntzZWN0aW9ufXsxfXtcekB9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey0zLjVleCBcQHBsdXMgLTFleCBcQG1pbnVzIC0uMmV4fSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsyLjNleCBcQHBsdXMuMmV4fSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtccmVzZXRAZm9udFxMYXJnZVxweUBIZWFkZXJGYW1pbHl9fQotXHJlbmV3Y29tbWFuZHtcc3Vic2VjdGlvbn17XEBzdGFydHNlY3Rpb257c3Vic2VjdGlvbn17Mn17XHpAfSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHstMy4yNWV4XEBwbHVzIC0xZXggXEBtaW51cyAtLjJleH0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MS41ZXggXEBwbHVzIC4yZXh9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyZXNldEBmb250XGxhcmdlXHB5QEhlYWRlckZhbWlseX19Ci1ccmVuZXdjb21tYW5ke1xzdWJzdWJzZWN0aW9ufXtcQHN0YXJ0c2VjdGlvbntzdWJzdWJzZWN0aW9ufXszfXtcekB9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey0zLjI1ZXhcQHBsdXMgLTFleCBcQG1pbnVzIC0uMmV4fSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsxLjVleCBcQHBsdXMgLjJleH0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJlc2V0QGZvbnRcbm9ybWFsc2l6ZVxweUBIZWFkZXJGYW1pbHl9fQotXHJlbmV3Y29tbWFuZHtccGFyYWdyYXBofXtcQHN0YXJ0c2VjdGlvbntwYXJhZ3JhcGh9ezR9e1x6QH0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7My4yNWV4IFxAcGx1czFleCBcQG1pbnVzLjJleH0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LTFlbX0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJlc2V0QGZvbnRcbm9ybWFsc2l6ZVxweUBIZWFkZXJGYW1pbHl9fQotXHJlbmV3Y29tbWFuZHtcc3VicGFyYWdyYXBofXtcQHN0YXJ0c2VjdGlvbntzdWJwYXJhZ3JhcGh9ezV9e1xwYXJpbmRlbnR9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezMuMjVleCBcQHBsdXMxZXggXEBtaW51cyAuMmV4fSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHstMWVtfSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtccmVzZXRAZm9udFxub3JtYWxzaXplXHB5QEhlYWRlckZhbWlseX19Ci0KLQotJSBUaGlzIGdldHMgdGhlIHVuZGVyc2NvcmVzIGNsb3NlciB0byB0aGUgcmlnaHQgd2lkdGg7IHRoZSBvbmx5IGNoYW5nZQotJSBmcm9tIHN0YW5kYXJkIExhVGVYIGlzIHRoZSB3aWR0aCBzcGVjaWZpZWQuCi0KLVxEZWNsYXJlVGV4dENvbW1hbmREZWZhdWx0e1x0ZXh0dW5kZXJzY29yZX17JQotICBcbGVhdmV2bW9kZSBca2Vybi4wNmVtXHZib3h7XGhydWxlXEB3aWR0aC41NWVtfX0KLQotJSBVbmRlcnNjb3JlIGhhY2sgKG9ubHkgYWN0IGxpa2Ugc3Vic2NyaXB0IG9wZXJhdG9yIGlmIGluIG1hdGggbW9kZSkKLSUKLSUgVGhlIGZvbGxvd2luZyBpcyBkdWUgdG8gTWFyayBXb29kaW5nICh0aGUgb2xkIHZlcnNpb24gZGlkbid0IHdvcmsgd2l0aAotJSBMYXRleCAyZS4KLQotXERlY2xhcmVSb2J1c3RDb21tYW5kXGhhY2tzY29yZXslCi0gIFxpZm1tb2RlX1xlbHNlXHRleHR1bmRlcnNjb3JlXGZpJQotfQotXGJlZ2luZ3JvdXAKLVxjYXRjb2RlYFxfXGFjdGl2ZQotXGRlZlxuZXh0eyUKLSAgXEF0QmVnaW5Eb2N1bWVudHtcY2F0Y29kZWBcX1xhY3RpdmVcZGVmX3tcaGFja3Njb3Jle319fSUKLX0KLVxleHBhbmRhZnRlclxlbmRncm91cFxuZXh0Ci0KLQotJSBOb3cgZm9yIGEgbG90IG9mIHNlbWFudGljYWxseS1sb2FkZWQgZW52aXJvbm1lbnRzIHRoYXQgZG8gYSB0b24gb2YgbWFnaWNhbAotJSB0aGluZ3MgdG8gZ2V0IHRoZSByaWdodCBmb3JtYXR0aW5nIGFuZCBpbmRleCBlbnRyaWVzIGZvciB0aGUgc3R1ZmYgaW4KLSUgUHl0aG9uIG1vZHVsZXMgYW5kIEMgQVBJLgotCi0KLSUge2Z1bGxsaW5laXRlbXN9IGlzIHVzZWQgaW4gb25lIHBsYWNlIGluIGxpYnJlZ2V4LnRleCwgYnV0IGlzIHJlYWxseSBmb3IKLSUgaW50ZXJuYWwgdXNlIGluIHRoaXMgZmlsZS4KLSUKLVxuZXdjb21tYW5ke1xweUBpdGVtbmV3bGluZX1bMV17JQotICBcQHRlbXBkaW1hXGxpbmV3aWR0aCUKLSAgXGFkdmFuY2VcQHRlbXBkaW1hIFxsZWZ0bWFyZ2luXG1ha2Vib3hbXEB0ZW1wZGltYV1bbF17IzF9JQotfQotCi1cbmV3ZW52aXJvbm1lbnR7ZnVsbGxpbmVpdGVtc317Ci0gIFxiZWdpbntsaXN0fXt9e1xsYWJlbHdpZHRoIFxsZWZ0bWFyZ2luIFxsYWJlbHNlcCAwcHQKLSAgICAgICAgICAgICAgICAgXHJpZ2h0bWFyZ2luIDBwdCBcdG9wc2VwIC1ccGFyc2tpcCBccGFydG9wc2VwIFxwYXJza2lwCi0gICAgICAgICAgICAgICAgIFxpdGVtc2VwIC1ccGFyc2VwCi0gICAgICAgICAgICAgICAgIFxsZXRcbWFrZWxhYmVsPVxweUBpdGVtbmV3bGluZX0KLX17XGVuZHtsaXN0fX0KLQotJSBcb3B0aW9uYWwgaXMgbW9zdGx5IGZvciB1c2UgaW4gdGhlIGFyZ3VtZW50cyBwYXJhbWV0ZXJzIHRvIHRoZSB2YXJpb3VzCi0lIHsqZGVzY30gZW52aXJvbm1lbnRzIGRlZmluZWQgYmVsb3csIGJ1dCBtYXkgYmUgdXNlZCBlbHNld2hlcmUuICBLbm93biB0bwotJSBiZSB1c2VkIGluIHRoZSBkZWJ1Z2dlciBjaGFwdGVyLgotJQotJSBUeXBpY2FsIHVzYWdlOgotJQotJSAgICAgXGJlZ2lue2Z1bmNkZXNjfXtteWZ1bmN9e3JlcXBhcm1cb3B0aW9uYWx7LCBvcHRwYXJtfX0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl4gICAgICAgXl5eCi0lICAgICAgICAgICAgICAgICAgICAgICAgICBObyBzcGFjZSBoZXJlICAgICAgIE5vIHNwYWNlIGhlcmUKLSUKLSUgV2hlbiBhIGZ1bmN0aW9uIGhhcyBtdWx0aXBsZSBvcHRpb25hbCBwYXJhbWV0ZXJzLCBcb3B0aW9uYWwgc2hvdWxkIGJlCi0lIG5lc3RlZCwgbm90IGNoYWluZWQuICBUaGlzIGlzIHJpZ2h0OgotJQotJSAgICAgXGJlZ2lue2Z1bmNkZXNjfXtteWZ1bmN9e1xvcHRpb25hbHtwYXJtMVxvcHRpb25hbHssIHBhcm0yfX19Ci0lCi1cbGV0XHB5QGJhZGtleT1cQHVuZGVmaW5lZAotCi1cbmV3Y29tbWFuZHtcb3B0aW9uYWx9WzFdeyUKLSAge1x0ZXh0bm9ybWFse1xMYXJnZVt9fXsjMX1caHNwYWNlezAuNW1tfXtcdGV4dG5vcm1hbHtcTGFyZ2VdfX19Ci0KLSUgVGhpcyBjYW4gYmUgdXNlZCB3aGVuIGEgZnVuY3Rpb24gb3IgbWV0aG9kIGFjY2VwdHMgYW4gdmFyeWluZyBudW1iZXIgCi0lIG9mIGFyZ3VtZW50cywgc3VjaCBhcyBieSB1c2luZyB0aGUgKmFyZ3Mgc3ludGF4IGluIHRoZSBwYXJhbWV0ZXIgbGlzdC4KLVxuZXdjb21tYW5ke1xweUBtb3JlYXJnc317Li4ufQotCi0lIFRoaXMgY2FuIGJlIHVzZWQgd2hlbiB5b3UgZG9uJ3Qgd2FudCB0byBkb2N1bWVudCB0aGUgcGFyYW1ldGVycyB0byBhIAotJSBmdW5jdGlvbiBvciBtZXRob2QsIGJ1dCBzaW1wbHkgc3RhdGUgdGhhdCBpdCdzIGFuIGFsaWFzIGZvcgotJSBzb21ldGhpbmcgZWxzZS4KLVxuZXdjb21tYW5ke1xweUB1bnNwZWNpZmllZH17Li4ufQotCi0lIEMgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57Y2Z1bmNkZXNjfVtyZWZjb3VudF17dHlwZX17bmFtZX17YXJnbGlzdH0KLSUgTm90ZSB0aGF0IHRoZSBbcmVmY291bnRdIHNsb3Qgc2hvdWxkIG9ubHkgYmUgZmlsbGVkIGluIGJ5Ci0lIHRvb2xzL2Fubm8tYXBpLnB5OyBpdCBwdWxscyB0aGUgdmFsdWUgZnJvbSB0aGUgcmVmY291bnRzIGRhdGFiYXNlLgotXG5ld2Vudmlyb25tZW50e2NmdW5jZGVzY31bNF1bXHB5QGJhZGtleV17Ci0gIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgIFxpdGVtW1xjb2RleyMyIFxiZmNvZGV7IzN9KFxweUB2YXJ2YXJzeyM0fSl9XGluZGV4eyMzQHtccHlAaWR4Y29kZXsjMygpfX19XQotICAgIFxpZngjMVxAdW5kZWZpbmVkXGVsc2UlCi0gICAgICBcZW1waHtSZXR1cm4gdmFsdWU6IFx0ZXh0YmZ7IzF9Ln1cXAotICAgIFxmaQotfXtcZW5ke2Z1bGxsaW5laXRlbXN9fQotCi0lIEMgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57Y3ZhcmRlc2N9e3R5cGV9e25hbWV9Ci1cbmV3ZW52aXJvbm1lbnR7Y3ZhcmRlc2N9WzJdewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcaXRlbVtcY29kZXsjMSBcYmZjb2RleyMyfX1caW5kZXh7IzJAe1xweUBpZHhjb2RleyMyfX19XQotfXtcZW5ke2Z1bGxsaW5laXRlbXN9fQotCi0lIEMgZGF0YSB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57Y3R5cGVkZXNjfVtpbmRleCBuYW1lXXt0eXBlZGVmIG5hbWV9Ci1cbmV3ZW52aXJvbm1lbnR7Y3R5cGVkZXNjfVsyXVtccHlAYmFka2V5XXsKLSAgXGJlZ2lue2Z1bGxsaW5laXRlbXN9Ci0gICAgXGl0ZW1bXGJmY29kZXsjMn0lCi0gICAgXGlmeCMxXEB1bmRlZmluZWQlCi0gICAgICBcaW5kZXh7IzJAe1xweUBpZHhjb2RleyMyfX0gKEMgdHlwZSl9Ci0gICAgXGVsc2UlCi0gICAgICBcaW5kZXh7IzJAe1xweUBpZHhjb2RleyMxfX0gKEMgdHlwZSl9Ci0gICAgXGZpXQotfXtcZW5ke2Z1bGxsaW5laXRlbXN9fQotCi0lIEZ1bmt5IG1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57Y3NpbXBsZW1hY3JvfXtuYW1lfQotJSAtLSAic2ltcGxlIiBiZWNhdXNlIGl0IGhhcyBubyBhcmdzOyBOT1QgZm9yIGNvbnN0YW50IGRlZmluaXRpb25zIQotXG5ld2Vudmlyb25tZW50e2NzaW1wbGVtYWNyb2Rlc2N9WzFdewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcaXRlbVtcYmZjb2RleyMxfVxpbmRleHsjMUB7XHB5QGlkeGNvZGV7IzF9fSAobWFjcm8pfV0KLX17XGVuZHtmdWxsbGluZWl0ZW1zfX0KLQotJSBzaW1wbGUgZnVuY3Rpb25zIChub3QgbWV0aG9kcykgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSUgXGJlZ2lue2Z1bmNkZXNjfXtuYW1lfXthcmdzfQotXG5ld2NvbW1hbmR7XGZ1bmNsaW5lfVsyXXslCi0gIFxmdW5jbGluZW5peyMxfXsjMn0lCi0gIFxpbmRleHsjMUB7XHB5QGlkeGNvZGV7IzEoKX19IChpbiBtb2R1bGUgXHB5QHRoaXNtb2R1bGUpfX0KLVxuZXdlbnZpcm9ubWVudHtmdW5jZGVzY31bMl17Ci0gIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgIFxmdW5jbGluZXsjMX17IzJ9Ci19e1xlbmR7ZnVsbGxpbmVpdGVtc319Ci0KLSUgc2ltaWxhciB0byB7ZnVuY2Rlc2N9LCBidXQgZG9lc24ndCBhZGQgdG8gdGhlIGluZGV4Ci1cbmV3Y29tbWFuZHtcZnVuY2xpbmVuaX1bMl17XGl0ZW1bXGNvZGV7XGJmY29kZXsjMX0oXHB5QHZhcnZhcnN7IzJ9KX1dfQotXG5ld2Vudmlyb25tZW50e2Z1bmNkZXNjbml9WzJdewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcZnVuY2xpbmVuaXsjMX17IzJ9Ci19e1xlbmR7ZnVsbGxpbmVpdGVtc319Ci0KLSUgY2xhc3NlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0lIFxiZWdpbntjbGFzc2Rlc2N9e25hbWV9e2NvbnN0cnVjdG9yIGFyZ3N9Ci1cbmV3ZW52aXJvbm1lbnR7Y2xhc3NkZXNjfVsyXXsKLSAgJSBVc2luZyBccmVuZXdjb21tYW5kIGRvZXNuJ3Qgd29yayBmb3IgdGhpcywgZm9yIHVua25vd24gcmVhc29uczoKLSAgXGdsb2JhbFxkZWZccHlAdGhpc2NsYXNzeyMxfQotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcaXRlbVtcc3Ryb25ne2NsYXNzIH1cY29kZXtcYmZjb2RleyMxfShccHlAdmFydmFyc3sjMn0pfSUKLSAgICAgIFxpbmRleHsjMUB7XHB5QGlkeGNvZGV7IzF9fSAoY2xhc3MgaW4gXHB5QHRoaXNtb2R1bGUpfV0KLX17XGVuZHtmdWxsbGluZWl0ZW1zfX0KLQotJSBcYmVnaW57ZXhjY2xhc3NkZXNjfXtuYW1lfXtjb25zdHJ1Y3RvciBhcmdzfQotJSBidXQgaW5kZXhlcyBhcyBhbiBleGNlcHRpb24KLVxuZXdlbnZpcm9ubWVudHtleGNjbGFzc2Rlc2N9WzJdewotICAlIFVzaW5nIFxyZW5ld2NvbW1hbmQgZG9lc24ndCB3b3JrIGZvciB0aGlzLCBmb3IgdW5rbm93biByZWFzb25zOgotICBcZ2xvYmFsXGRlZlxweUB0aGlzY2xhc3N7IzF9Ci0gIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgIFxpdGVtW1xzdHJvbmd7ZXhjZXB0aW9uIH1cY29kZXtcYmZjb2RleyMxfShccHlAdmFydmFyc3sjMn0pfSUKLSAgICAgIFxpbmRleHsjMUB7XHB5QGlkeGNvZGV7IzF9fSAoZXhjZXB0aW9uIGluIFxweUB0aGlzbW9kdWxlKX1dCi19e1xlbmR7ZnVsbGxpbmVpdGVtc319Ci0KLQotXGxldFxweUBjbGFzc2JhZGtleT1cQHVuZGVmaW5lZAotCi0lIG9iamVjdCBtZXRob2QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57bWV0aG9kZGVzY31bY2xhc3NuYW1lXXttZXRob2RuYW1lfXthcmdzfQotXG5ld2NvbW1hbmR7XG1ldGhvZGxpbmV9WzNdW1xAdW5kZWZpbmVkXXsKLSAgXG1ldGhvZGxpbmVuaXsjMn17IzN9Ci0gIFxpZngjMVxAdW5kZWZpbmVkCi0gICAgXGluZGV4eyMyQHtccHlAaWR4Y29kZXsjMigpfX0gKFxweUB0aGlzY2xhc3NcIG1ldGhvZCl9Ci0gIFxlbHNlCi0gICAgXGluZGV4eyMyQHtccHlAaWR4Y29kZXsjMigpfX0gKCMxIG1ldGhvZCl9Ci0gIFxmaQotfQotXG5ld2Vudmlyb25tZW50e21ldGhvZGRlc2N9WzNdW1xAdW5kZWZpbmVkXXsKLSAgXGJlZ2lue2Z1bGxsaW5laXRlbXN9Ci0gICAgXGlmeCMxXEB1bmRlZmluZWQKLSAgICAgIFxtZXRob2RsaW5leyMyfXsjM30KLSAgICBcZWxzZQotICAgICAgXGRlZlxweUB0aGlzY2xhc3N7IzF9Ci0gICAgICBcbWV0aG9kbGluZXsjMn17IzN9Ci0gICAgXGZpCi19e1xlbmR7ZnVsbGxpbmVpdGVtc319Ci0KLSUgc2ltaWxhciB0byB7bWV0aG9kZGVzY30sIGJ1dCBkb2Vzbid0IGFkZCB0byB0aGUgaW5kZXgKLSUgKG5ldmVyIGFjdHVhbGx5IHVzZXMgdGhlIG9wdGlvbmFsIGFyZ3VtZW50KQotXG5ld2NvbW1hbmR7XG1ldGhvZGxpbmVuaX1bM11bXHB5QGNsYXNzYmFka2V5XXslCi0gIFxpdGVtW1xjb2Rle1xiZmNvZGV7IzJ9KFxweUB2YXJ2YXJzeyMzfSl9XX0KLVxuZXdlbnZpcm9ubWVudHttZXRob2RkZXNjbml9WzNdW1xweUBjbGFzc2JhZGtleV17Ci0gIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgIFxtZXRob2RsaW5lbml7IzJ9eyMzfQotfXtcZW5ke2Z1bGxsaW5laXRlbXN9fQotCi0lIG9iamVjdCBkYXRhIGF0dHJpYnV0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57bWVtYmVyZGVzY31bY2xhc3NuYW1lXXttZW1iZXJuYW1lfQotXG5ld2NvbW1hbmR7XG1lbWJlcmxpbmV9WzJdW1xweUBjbGFzc2JhZGtleV17JQotICBcaWZ4IzFcQHVuZGVmaW5lZAotICAgIFxtZW1iZXJsaW5lbml7IzJ9Ci0gICAgXGluZGV4eyMyQHtccHlAaWR4Y29kZXsjMn19IChccHlAdGhpc2NsYXNzXCBhdHRyaWJ1dGUpfQotICBcZWxzZQotICAgIFxtZW1iZXJsaW5lbml7IzJ9Ci0gICAgXGluZGV4eyMyQHtccHlAaWR4Y29kZXsjMn19ICgjMSBhdHRyaWJ1dGUpfQotICBcZmkKLX0KLVxuZXdlbnZpcm9ubWVudHttZW1iZXJkZXNjfVsyXVtccHlAY2xhc3NiYWRrZXldewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcaWZ4IzFcQHVuZGVmaW5lZAotICAgICAgXG1lbWJlcmxpbmV7IzJ9Ci0gICAgXGVsc2UKLSAgICAgIFxkZWZccHlAdGhpc2NsYXNzeyMxfQotICAgICAgXG1lbWJlcmxpbmV7IzJ9Ci0gICAgXGZpCi19e1xlbmR7ZnVsbGxpbmVpdGVtc319Ci0KLSUgc2ltaWxhciB0byB7bWVtYmVyZGVzY30sIGJ1dCBkb2Vzbid0IGFkZCB0byB0aGUgaW5kZXgKLSUgKG5ldmVyIGFjdHVhbGx5IHVzZXMgdGhlIG9wdGlvbmFsIGFyZ3VtZW50KQotXG5ld2NvbW1hbmR7XG1lbWJlcmxpbmVuaX1bMl1bXHB5QGNsYXNzYmFka2V5XXtcaXRlbVtcYmZjb2RleyMyfV19Ci1cbmV3ZW52aXJvbm1lbnR7bWVtYmVyZGVzY25pfVsyXVtccHlAY2xhc3NiYWRrZXldewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcbWVtYmVybGluZW5peyMyfQotfXtcZW5ke2Z1bGxsaW5laXRlbXN9fQotCi0lIEZvciBleGNlcHRpb25zOiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57ZXhjZGVzY317bmFtZX0KLSUgIC0tIGZvciBjb25zdHJ1Y3RvciBpbmZvcm1hdGlvbiwgdXNlIGV4Y2NsYXNzZGVzYyBpbnN0ZWFkCi1cbmV3ZW52aXJvbm1lbnR7ZXhjZGVzY31bMV17Ci0gIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgIFxpdGVtW1xzdHJvbmd7ZXhjZXB0aW9uIH1cYmZjb2RleyMxfSUKLSAgICAgICAgICBcaW5kZXh7IzFAe1xweUBpZHhjb2RleyMxfX0gKGV4Y2VwdGlvbiBpbiBccHlAdGhpc21vZHVsZSl9XQotfXtcZW5ke2Z1bGxsaW5laXRlbXN9fQotCi0lIE1vZHVsZSBkYXRhIG9yIGNvbnN0YW50czogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJSBcYmVnaW57ZGF0YWRlc2N9e25hbWV9Ci1cbmV3Y29tbWFuZHtcZGF0YWxpbmV9WzFdeyUKLSAgXGRhdGFsaW5lbml7IzF9XGluZGV4eyMxQHtccHlAaWR4Y29kZXsjMX19IChkYXRhIGluIFxweUB0aGlzbW9kdWxlKX19Ci1cbmV3ZW52aXJvbm1lbnR7ZGF0YWRlc2N9WzFdewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcZGF0YWxpbmV7IzF9Ci19e1xlbmR7ZnVsbGxpbmVpdGVtc319Ci0KLSUgc2ltaWxhciB0byB7ZGF0YWRlc2N9LCBidXQgZG9lc24ndCBhZGQgdG8gdGhlIGluZGV4Ci1cbmV3Y29tbWFuZHtcZGF0YWxpbmVuaX1bMV17XGl0ZW1bXGJmY29kZXsjMX1dXG5vcGFnZWJyZWFrfQotXG5ld2Vudmlyb25tZW50e2RhdGFkZXNjbml9WzFdewotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcZGF0YWxpbmVuaXsjMX0KLX17XGVuZHtmdWxsbGluZWl0ZW1zfX0KLQotJSBieXRlY29kZSBpbnN0cnVjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSUgXGJlZ2lue29wY29kZWRlc2N9e25hbWV9e3Zhcn0KLSUgLS0ge3Zhcn0gbWF5IGJlIHt9Ci1cbmV3ZW52aXJvbm1lbnR7b3Bjb2RlZGVzY31bMl17Ci0gIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgIFxpdGVtW1xiZmNvZGV7IzF9XHF1YWRcdmFyeyMyfV0KLX17XGVuZHtmdWxsbGluZWl0ZW1zfX0KLQotCi1cbmV3Y29tbWFuZHtcbm9kZW5hbWV9WzFde1xsYWJlbHsjMX19Ci0KLSUgRm9yIHRoZXNlIGNvbW1hbmRzLCB1c2UgXGNvbW1hbmR7fSB0byBnZXQgdGhlIHR5cG9ncmFwaHkgcmlnaHQsIG5vdCAKLSUge1xjb21tYW5kfS4gIFRoaXMgd29ya3MgYmV0dGVyIHdpdGggdGhlIHRleGluZm8gdHJhbnNsYXRpb24uCi1cbmV3Y29tbWFuZHtcQUJDfXt7XHNjIGFiY319Ci1cbmV3Y29tbWFuZHtcVU5JWH17e1xzYyBVbml4fX0KLVxuZXdjb21tYW5ke1xQT1NJWH17UE9TSVh9Ci1cbmV3Y29tbWFuZHtcQVNDSUl9e3tcc2MgYXNjaWl9fQotXG5ld2NvbW1hbmR7XENwcH17Q1xwcm90ZWN0XHJhaXNlYm94ey4xOGV4fXsrK319Ci1cbmV3Y29tbWFuZHtcQ317Q30KLVxuZXdjb21tYW5ke1xFT0Z9e3tcc2MgZW9mfX0KLVxuZXdjb21tYW5ke1xOVUxMfXtcY29uc3RhbnR7TlVMTH19Ci0KLSUgQWxzbyBmb3IgY29uc2lzdGVuY3k6IHNwZWxsIFB5dGhvbiAiUHl0aG9uIiwgbm90ICJweXRob24iIQotCi0lIGNvZGUgaXMgdGhlIG1vc3QgZGlmZmljdWx0IG9uZS4uLgotXG5ld2NvbW1hbmR7XGNvZGV9WzFde1x0ZXh0cm17XEB2b2JleXNwYWNlc1xAbm9saWdzXGRlZlx7e1xjaGFyYFx7fVxkZWZcfXtcY2hhcmBcfX1cZGVmXH57XGNoYXJgXH59XGRlZlxee1xjaGFyYFxefVxkZWZcZXtcY2hhcmBcXH1cZGVmXCR7XGNoYXJgXCR9XGRlZlwje1xjaGFyYFwjfVxkZWZcJntcY2hhcmBcJn1cZGVmXCV7XGNoYXJgXCV9JQotXHRleHR0dHsjMX19fQotCi1cbmV3Y29tbWFuZHtcYmZjb2RlfVsxXXtcY29kZXtcYmZzZXJpZXMjMX19ICUgYm9sZC1mYWNlZCBjb2RlIGZvbnQKLVxuZXdjb21tYW5ke1xrYmR9WzFde1xjb2RleyMxfX0KLVxuZXdjb21tYW5ke1xzYW1wfVsxXXtgXGNvZGV7IzF9J30KLSUgVGhpcyB3ZWlyZCBkZWZpbml0aW9uIG9mIFx2YXJ7fSBhbGxvd3MgaXQgdG8gYWx3YXlzIGFwcGVhciBpbiByb21hbgotJSBpdGFsaWNzLCBhbmQgd29uJ3QgZ2V0IGZ1bmt5IGluIGNvZGUgZnJhZ21lbnRzIHdoZW4gd2UgcGxheSBhcm91bmQKLSUgd2l0aCBmb250cy4gIFRoaXMgYWxzbyB3b3JrcyBkaXJlY3RseSBpbiBtYXRoIG1vZGUuCi1cbmV3Y29tbWFuZHtcdmFyfVsxXXslCi0gIFxpZm1tb2RlJQotICAgIFxoYm94e1xub3JtYWxzaXplXHRleHRybXtcdGV4dGl0eyMxXC99fX0lCi0gIFxlbHNlJQotICAgIFxub3JtYWxzaXplXHRleHRybXtcdGV4dGl0eyMxXC99fSUKLSAgXGZpJQotfQotXHJlbmV3Y29tbWFuZHtcZW1waH1bMV17e1xlbSAjMX19Ci1cbmV3Y29tbWFuZHtcZGZufVsxXXtcZW1waHsjMX19Ci1cbmV3Y29tbWFuZHtcc3Ryb25nfVsxXXt7XGJmICMxfX0KLSUgbGV0J3MgZXhwZXJpbWVudCB3aXRoIGEgbmV3IGZvbnQ6Ci1cbmV3Y29tbWFuZHtcZmlsZX1bMV17YHtcc21hbGxcdGV4dHNmeyMxfX0nfQotXG5ld2NvbW1hbmR7XGZpbGVucX1bMV17e1xzbWFsbFx0ZXh0c2Z7IzF9fX0KLQotJSBVc2UgdGhpcyBkZWYvcmVkZWYgYXBwcm9hY2ggZm9yIFx1cmx7fSBzaW5jZSBoeXBlcnJlZiBkZWZpbmVkIHRoaXMgYWxyZWFkeSwKLSUgYnV0IG9ubHkgaWYgd2UgYWN0dWFsbHkgdXNlZCBoeXBlcnJlZjoKLVxAaWZ1bmRlZmluZWR7cGRmYW5ub3RsaW5rfXsKLSAgXG5ld2NvbW1hbmR7XHB5QHVybH1bMV17XG1ib3h7XHNtYWxsXHRleHRzZnsjMX19fQotfXsKLSAgXG5ld2NvbW1hbmR7XHB5QHVybH1bMV17eyUKLSAgICBccGRmYW5ub3RsaW5rIGF0dHJ7L0JvcmRlciBbMCAwIDBdfSB1c2Vyey9TIC9VUkkgL1VSSSAoIzEpfSUKLSAgICBccHlATGlua0NvbG9yJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIG9mIHRoZSBsaW5rIHRleHQKLSAgICBcbWJveHtcc21hbGxcdGV4dHNmeyMxfX0lCi0gICAgXHB5QE5vcm1hbENvbG9yJSAgICAgICAgICAgICAgICAgICAgVHVybiBpdCBiYWNrIG9mZjsgdGhlc2UgYXJlIGRlY2xhcmF0aXZlCi0gICAgXHBkZmVuZGxpbmt9JSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGRvbid0IGFwcGVhciBib3VuZCB0byB0aGUgY3VycmVudAotICB9JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgImJveCIuCi19Ci1cbGV0XHVybD1ccHlAdXJsCi1cbmV3Y29tbWFuZHtcZW1haWx9WzFde3tcc21hbGxcdGV4dHNmeyMxfX19Ci1cbmV3Y29tbWFuZHtcbmV3c2dyb3VwfVsxXXt7XHNtYWxsXHRleHRzZnsjMX19fQotCi1cbmV3Y29tbWFuZHtccHlAdmFydmFyc31bMV17eyUKLSAge1xsZXRcdW5zcGVjaWZpZWQ9XHB5QHVuc3BlY2lmaWVkJQotICAgXGxldFxtb3JlYXJncz1ccHlAbW9yZWFyZ3MlCi0gICBcdmFyeyMxfX19fQotCi0lIEknZCByZWFsbHkgbGlrZSB0byBnZXQgcmlkIG9mIHRoaXMhCi1cbmV3aWZcaWZ0ZXhpXHRleGlmYWxzZQotCi0lIFRoaXMgaXMgdXNlZCB0byBnZXQgbDJoIHRvIHB1dCB0aGUgY29weXJpZ2h0IGFuZCBhYnN0cmFjdCBvbgotJSBhIHNlcGFyYXRlIEhUTUwgcGFnZS4KLVxuZXdpZlxpZmh0bWxcaHRtbGZhbHNlCi0KLQotJSBUaGVzZSBzaG91bGQgYmUgdXNlZCBmb3IgYWxsIHJlZmVyZW5jZXMgdG8gaWRlbnRpZmllcnMgd2hpY2ggYXJlCi0lIHVzZWQgdG8gcmVmZXIgdG8gaW5zdGFuY2VzIG9mIHNwZWNpZmljIGxhbmd1YWdlIGNvbnN0cnVjdHMuICBTZWUgdGhlCi0lIG5hbWVzIGZvciBzcGVjaWZpYyBzZW1hbnRpYyBhc3NpZ25tZW50cy4KLSUKLSUgRm9yIG5vdywgZG9uJ3QgZG8gYW55dGhpbmcgcmVhbGx5IGZhbmN5IHdpdGggdGhlbTsganVzdCB1c2UgdGhlbSBhcwotJSBsb2dpY2FsIG1hcmt1cC4gIFRoaXMgbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuCi0lCi1cbmV3Y29tbWFuZHtcbW9kdWxlfVsxXXtcdGV4dHR0eyMxfX0KLVxuZXdjb21tYW5ke1xrZXl3b3JkfVsxXXtcdGV4dHR0eyMxfX0KLVxuZXdjb21tYW5ke1xleGNlcHRpb259WzFde1x0ZXh0dHR7IzF9fQotXG5ld2NvbW1hbmR7XGNsYXNzfVsxXXtcdGV4dHR0eyMxfX0KLVxuZXdjb21tYW5ke1xmdW5jdGlvbn1bMV17XHRleHR0dHsjMX19Ci1cbmV3Y29tbWFuZHtcbWVtYmVyfVsxXXtcdGV4dHR0eyMxfX0KLVxuZXdjb21tYW5ke1xtZXRob2R9WzFde1x0ZXh0dHR7IzF9fQotCi1cbmV3Y29tbWFuZHtccHl0eXBlfVsxXXsjMX0gICAgICAgICAgICAgJSBidWlsdC1pbiBQeXRob24gdHlwZQotCi1cbmV3Y29tbWFuZHtcY2Z1bmN0aW9ufVsxXXtcdGV4dHR0eyMxfX0KLVxuZXdjb21tYW5ke1xjdHlwZX1bMV17XHRleHR0dHsjMX19ICAgICAlIEMgc3RydWN0IG9yIHR5cGVkZWYgbmFtZQotXG5ld2NvbW1hbmR7XGNkYXRhfVsxXXtcdGV4dHR0eyMxfX0gICAgICUgQyB2YXJpYWJsZSwgdHlwaWNhbGx5IGdsb2JhbAotCi1cbmV3Y29tbWFuZHtcbWltZXR5cGV9WzFde3tcc21hbGxcdGV4dHNmeyMxfX19Ci0lIFRoZSBcISBpcyBhICJuZWdhdGl2ZSB0aGluIHNwYWNlIiBpbiBtYXRoIG1vZGUuCi1cbmV3Y29tbWFuZHtccmVnZXhwfVsxXXslCi0gIHtcdGlueSRee15cbGNlaWx9XCFcISQlCi0gICB7XG5vcm1hbHNpemVcY29kZXsjMX19JQotICAgJFwhXHJmbG9vclwhJCUKLSAgfX0KLVxuZXdjb21tYW5ke1xlbnZ2YXJ9WzFdeyUKLSAgIzElCi0gIFxpbmRleHsjMUB7IzF9fSUKLSAgXGluZGV4e2Vudmlyb25tZW50IHZhcmlhYmxlcyF7IzF9fSUKLX0KLVxuZXdjb21tYW5ke1xtYWtldmFyfVsxXXsjMX0gICAgICAgICAgICAlIHZhcmlhYmxlIGluIGEgTWFrZWZpbGUKLVxuZXdjb21tYW5ke1xjaGFyYWN0ZXJ9WzFde1xzYW1weyMxfX0KLQotJSBjb25zdGFudHMgZGVmaW5lZCBpbiBQeXRob24gbW9kdWxlcyBvciBDIGhlYWRlcnMsIG5vdCBsYW5ndWFnZSBjb25zdGFudHM6Ci1cbmV3Y29tbWFuZHtcY29uc3RhbnR9WzFde1xjb2RleyMxfX0gICAgJSBtYW5pZmVzdCBjb25zdGFudCwgbm90IHN5bnRhY3RpYwotCi1cbmV3Y29tbWFuZHtcbWFucGFnZX1bMl17e1xlbXBoeyMxfSgjMil9fQotXG5ld2NvbW1hbmR7XHBlcH1bMV17UEVQICMxXGluZGV4e1B5dGhvbiBFbmhhbmNlbWVudCBQcm9wb3NhbHMhUEVQICMxfX0KLVxuZXdjb21tYW5ke1xyZmN9WzFde1JGQyAjMVxpbmRleHtSRkMhUkZDICMxfX0KLVxuZXdjb21tYW5ke1xwcm9ncmFtfVsxXXtcc3Ryb25neyMxfX0KLVxuZXdjb21tYW5ke1xwcm9ncmFtb3B0fVsxXXtcc3Ryb25neyMxfX0KLSUgTm90ZSB0aGF0IFxsb25ncHJvZ3JhbW9wdCBwcm92aWRlcyB0aGUgJy0tJyEKLVxuZXdjb21tYW5ke1xsb25ncHJvZ3JhbW9wdH1bMV17XHN0cm9uZ3ste30tIzF9fQotCi0lIGNpdGVkIHRpdGxlczogIFxjaXRldGl0bGV7VGl0bGUgb2YgV29ya30KLSUgICAgICAgb25saW5lOiAgXGNpdGV0aXRsZVt1cmwtdG8tcmVzb3VyY2Vde1RpdGxlIG9mIFdvcmt9Ci1cbmV3Y29tbWFuZHtcY2l0ZXRpdGxlfVsyXVtVUkxde1xlbXBoeyMyfX0KLQotCi0lIERlcHJlY2F0aW9uIHN0dWZmLgotJSBTaG91bGQgYmUgZXh0ZW5kZWQgdG8gYWxsb3cgYW4gaW5kZXggLyBsaXN0IG9mIGRlcHJlY2F0ZWQgc3R1ZmYuICBCdXQKLSUgdGhlcmUncyBhIGxvdCBvZiBzdHVmZiB0aGF0IG5lZWRzIHRvIGJlIGRvbmUgdG8gbWFrZSB0aGF0IGF1dG9tYXRhYmxlLgotJQotJSBGaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlbGVhc2UgbnVtYmVyIHRoYXQgZGVwcmVjYXRlcyB0aGUgZmVhdHVyZSwgdGhlCi0lIHNlY29uZCBpcyB0aGUgYWN0aW9uIHRoZSBzaG91bGQgYmUgdGFrZW4gYnkgdXNlcnMgb2YgdGhlIGZlYXR1cmUuCi0lCi0lIEV4YW1wbGU6Ci0lICBcZGVwcmVjYXRlZHsxLjUuMX17VXNlIFxtZXRob2R7ZnJvYm5pY2F0ZSgpfSBpbnN0ZWFkLn0KLSUKLVxuZXdjb21tYW5ke1xkZXByZWNhdGVkfVsyXXslCi0gIFxzdHJvbmd7RGVwcmVjYXRlZCBzaW5jZSByZWxlYXNlICMxLn0gICMyXHBhcn0KLQotJSBOZXcgc3R1ZmYuCi0lIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gbWFyayB0aGluZ3Mgd2hpY2ggaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZQotJSBkZXZlbG9wbWVudCB0cmVlIGJ1dCB0aGF0IGFyZW4ndCBpbiB0aGUgcmVsZWFzZSwgYnV0IGFyZSBkb2N1bWVudGVkLgotJSBUaGlzIGFsbG93cyByZWxlYXNlIG9mIGRvY3VtZW50YXRpb24gdGhhdCBhbHJlYWR5IGluY2x1ZGVzIHVwZGF0ZWQKLSUgZGVzY3JpcHRpb25zLiAgUGxhY2UgYXQgZW5kIG9mIGRlc2NyaXB0b3IgZW52aXJvbm1lbnQuCi0lCi0lIEV4YW1wbGU6Ci0lICBcdmVyc2lvbmFkZGVkezEuNS4yfQotJSAgXHZlcnNpb25jaGFuZ2VkW3Nob3J0IGV4cGxhbmF0aW9uXXsyLjB9Ci0lCi1cbmV3Y29tbWFuZHtcdmVyc2lvbmFkZGVkfVsxXXslCi0gIHsgIE5ldyBpbiB2ZXJzaW9uICMxLiAgfX0KLVxuZXdjb21tYW5ke1x2ZXJzaW9uY2hhbmdlZH1bMl1bXHB5QGJhZGtleV17JQotICBcaWZ4IzFcQHVuZGVmaW5lZCUKLSAgICB7ICBDaGFuZ2VkIGluIHZlcnNpb24gIzIuICB9JQotICBcZWxzZSUKLSAgICB7ICBDaGFuZ2VkIGluIHZlcnNpb24gIzI6XCAjMS4gIH0lCi0gIFxmaSUKLX0KLQotCi0lIFRhYmxlcy4KLSUKLVxuZXdlbnZpcm9ubWVudHt0YWJsZWlpfVs0XXslCi0gIFxiZWdpbntjZW50ZXJ9JQotICAgIFxkZWZcbGluZWlpIyMxIyMye1xjc25hbWUjMlxlbmRjc25hbWV7IyMxfSYjIzJcXH0lCi0gICAgXGJlZ2lue3RhYnVsYXJ9eyMxfVxzdHJvbmd7IzN9JlxzdHJvbmd7IzR9IFxcKiBcaGxpbmUlCi19eyUKLSAgICBcZW5ke3RhYnVsYXJ9JQotICBcZW5ke2NlbnRlcn0lCi19Ci0KLVxuZXdlbnZpcm9ubWVudHtsb25ndGFibGVpaX1bNF17JQotICBcYmVnaW57Y2VudGVyfSUKLSAgICBcZGVmXGxpbmVpaSMjMSMjMntcY3NuYW1lIzJcZW5kY3NuYW1leyMjMX0mIyMyXFx9JQotICAgIFxiZWdpbntsb25ndGFibGV9W2NdeyMxfVxzdHJvbmd7IzN9JlxzdHJvbmd7IzR9IFxcKiBcaGxpbmVcZW5kaGVhZCUKLX17JQotICAgIFxlbmR7bG9uZ3RhYmxlfSUKLSAgXGVuZHtjZW50ZXJ9JQotfQotCi1cbmV3ZW52aXJvbm1lbnR7dGFibGVpaWl9WzVdeyUKLSAgXGJlZ2lue2NlbnRlcn0lCi0gICAgXGRlZlxsaW5laWlpIyMxIyMyIyMze1xjc25hbWUjMlxlbmRjc25hbWV7IyMxfSYjIzImIyMzXFx9JQotICAgIFxiZWdpbnt0YWJ1bGFyfXsjMX1cc3Ryb25neyMzfSZcc3Ryb25neyM0fSZcc3Ryb25neyM1fSBcXCUKLSAgICAgIFxobGluZSUKLX17JQotICAgIFxlbmR7dGFidWxhcn0lCi0gIFxlbmR7Y2VudGVyfSUKLX0KLQotXG5ld2Vudmlyb25tZW50e2xvbmd0YWJsZWlpaX1bNV17JQotICBcYmVnaW57Y2VudGVyfSUKLSAgICBcZGVmXGxpbmVpaWkjIzEjIzIjIzN7XGNzbmFtZSMyXGVuZGNzbmFtZXsjIzF9JiMjMiYjIzNcXH0lCi0gICAgXGJlZ2lue2xvbmd0YWJsZX1bY117IzF9XHN0cm9uZ3sjM30mXHN0cm9uZ3sjNH0mXHN0cm9uZ3sjNX0gXFwlCi0gICAgICBcaGxpbmVcZW5kaGVhZCUKLX17JQotICAgIFxlbmR7bG9uZ3RhYmxlfSUKLSAgXGVuZHtjZW50ZXJ9JQotfQotCi1cbmV3ZW52aXJvbm1lbnR7dGFibGVpdn1bNl17JQotICBcYmVnaW57Y2VudGVyfSUKLSAgICBcZGVmXGxpbmVpdiMjMSMjMiMjMyMjNHtcY3NuYW1lIzJcZW5kY3NuYW1leyMjMX0mIyMyJiMjMyYjIzRcXH0lCi0gICAgXGJlZ2lue3RhYnVsYXJ9eyMxfVxzdHJvbmd7IzN9JlxzdHJvbmd7IzR9JlxzdHJvbmd7IzV9JlxzdHJvbmd7IzZ9IFxcJQotICAgICAgXGhsaW5lJQotfXslCi0gICAgXGVuZHt0YWJ1bGFyfSUKLSAgXGVuZHtjZW50ZXJ9JQotfQotCi1cbmV3ZW52aXJvbm1lbnR7bG9uZ3RhYmxlaXZ9WzZdeyUKLSAgXGJlZ2lue2NlbnRlcn0lCi0gICAgXGRlZlxsaW5laXYjIzEjIzIjIzMjIzR7XGNzbmFtZSMyXGVuZGNzbmFtZXsjIzF9JiMjMiYjIzMmIyM0XFx9JQotICAgIFxiZWdpbntsb25ndGFibGV9W2NdeyMxfVxzdHJvbmd7IzN9JlxzdHJvbmd7IzR9JlxzdHJvbmd7IzV9JlxzdHJvbmd7IzZ9JQotICAgICAgXFwlCi0gICAgICBcaGxpbmVcZW5kaGVhZCUKLX17JQotICAgIFxlbmR7bG9uZ3RhYmxlfSUKLSAgXGVuZHtjZW50ZXJ9JQotfQotCi0lIENyb3NzLXJlZmVyZW5jaW5nIChBTUssIG5ldyBpbXBsLiBGTEQpCi0lIFNhbXBsZSB1c2FnZToKLSUgIFxiZWdpbntzZWVhbHNvfQotJSAgICBcc2VlbW9kdWxle3JhbmR9e1VuaWZvcm0gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IufTsgJSBNb2R1bGUgeHJlZgotJSAgICBcc2VldGV4dHtcZW1waHtFbmN5Y2xvcGVkaWEgQnJpdGFubmljYX19LiAgICAgICAgICAgJSBSZWYgdG8gYSBib29rCi0lIAotJSAgICAlIEEgZnVua3kgY2FzZTogbW9kdWxlIG5hbWUgY29udGFpbnMgJ18nOyBoYXZlIHRvIHN1cHBseSBhbiBvcHRpb25hbCBrZXkKLSUgICAgXHNlZW1vZHVsZVtjb3B5cmVnXXtjb3B5X3JlZ317SW50ZXJmYWNlIGNvbnN0cnVjdG9yIHJlZ2lzdHJhdGlvbiBmb3IKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG1vZHVsZXtwaWNrbGV9Ln0KLSUgIFxlbmR7c2VlYWxzb30KLSUKLSUgTm90ZSB0aGF0IHRoZSBsYXN0IHBhcmFtZXRlciBmb3IgXHNlZW1vZHVsZSBhbmQgXHNlZXRleHQgc2hvdWxkIGJlIGNvbXBsZXRlCi0lIHNlbnRlbmNlcyBhbmQgYmUgdGVybWluYXRlZCB3aXRoIHRoZSBwcm9wZXIgcHVuY3R1YXRpb24uCi0KLVxAaWZ1bmRlZmluZWR7cGRmYW5ub3RsaW5rfXslCi0gIFxuZXdjb21tYW5ke1xweUBzZWVtb2R1bGV9WzNdW1xweUBtb2R1bGViYWRrZXldeyUKLSAgICBccGFyJQotICAgIFxpZnhccHlAbW9kdWxlYmFka2V5IzFcZGVmXHB5QG1vZHVsZWtleXsjMn1cZWxzZVxkZWZccHlAbW9kdWxla2V5eyMxfVxmaSUKLSAgICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICAgIFxpdGVtW01vZHVsZSBcbW9kdWxleyMyfSAoc2VjdGlvbiBccmVme21vZHVsZS1ccHlAbW9kdWxla2V5fSk6XQotICAgICAgIzMKLSAgICBcZW5ke2Z1bGxsaW5laXRlbXN9Ci0gIH0KLX17XG5ld2NvbW1hbmR7XHB5QHNlZW1vZHVsZX1bM11bXHB5QG1vZHVsZWJhZGtleV17JQotICAgIFxwYXIlCi0gICAgXGlmeFxweUBtb2R1bGViYWRrZXkjMVxkZWZccHlAbW9kdWxla2V5eyMyfVxlbHNlXGRlZlxweUBtb2R1bGVrZXl7IzF9XGZpJQotICAgIFxiZWdpbntmdWxsbGluZWl0ZW1zfQotICAgICAgXGl0ZW1bXHB5QGxpbmtUb05hbWV7bGFiZWwtbW9kdWxlLVxweUBtb2R1bGVrZXl9e01vZHVsZSBcbW9kdWxleyMyfX0KLSAgICAgICAgICAgIChzZWN0aW9uIFxyZWZ7bW9kdWxlLVxweUBtb2R1bGVrZXl9KTpdCi0gICAgICAjMwotICAgIFxlbmR7ZnVsbGxpbmVpdGVtc30KLSAgfQotfQotJSBcc2VldGl0bGVbdXJsXXt0aXRsZX17d2h5IGl0J3MgaW50ZXJlc3Rpbmd9Ci1cbmV3Y29tbWFuZHtccHlAc2VldGl0bGV9WzNdW1xweUBtb2R1bGViYWRrZXldeyUKLSAgXHBhcgotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcaXRlbVtcY2l0ZXRpdGxleyMyfV0KLSAgICBcaWZ4XHB5QG1vZHVsZWJhZGtleSMxXGVsc2UKLSAgICAgIFxpdGVtW3tcc21hbGx7KFx1cmx7IzF9KX19XQotICAgIFxmaQotICAgICMzCi0gIFxlbmR7ZnVsbGxpbmVpdGVtc30KLX0KLSUgXHNlZXBlcHtudW1iZXJ9e3RpdGxlfXt3aHkgaXQncyBpbnRlcmVzdGluZ30KLVxuZXdjb21tYW5ke1xweUBzZWVwZXB9WzNdeyUKLSAgXHBhciUKLSAgXGJlZ2lue2Z1bGxsaW5laXRlbXN9Ci0gICAgXGl0ZW1bXHBlcHsjMX0sIGBgXGVtcGh7IzJ9JyddCi0gICAgIzMKLSAgXGVuZHtmdWxsbGluZWl0ZW1zfQotfQotJSBcc2VlcmZje251bWJlcn17dGl0bGV9e3doeSBpdCdzIGludGVyZXN0aW5nfQotXG5ld2NvbW1hbmR7XHB5QHNlZXJmY31bM117JQotICBccGFyJQotICBcYmVnaW57ZnVsbGxpbmVpdGVtc30KLSAgICBcaXRlbVtccmZjeyMxfSwgYGBcZW1waHsjMn0nJ10KLSAgICAjMwotICBcZW5ke2Z1bGxsaW5laXRlbXN9Ci19Ci0lIFxzZWV1cmx7dXJsfXt3aHkgaXQncyBpbnRlcmVzdGluZ30KLVxuZXdjb21tYW5ke1xweUBzZWV1cmx9WzJdeyUKLSAgXHBhciUKLSAgXGJlZ2lue2Z1bGxsaW5laXRlbXN9Ci0gICAgXGl0ZW1bXHVybHsjMX1dCi0gICAgIzIKLSAgXGVuZHtmdWxsbGluZWl0ZW1zfQotfQotXG5ld2Vudmlyb25tZW50e3NlZWFsc299WzBdewotICBccGFyCi0gIFxzdHJvbmd7U2VlIEFsc286fVxwYXIKLSAgXGRlZlxzZWV0ZXh0IyMxe1xwYXJ7IyMxfX0KLSAgXGxldFxzZWVtb2R1bGU9XHB5QHNlZW1vZHVsZQotICBcbGV0XHNlZXBlcD1ccHlAc2VlcGVwCi0gIFxsZXRcc2VlcmZjPVxweUBzZWVyZmMKLSAgXGxldFxzZWV0aXRsZT1ccHlAc2VldGl0bGUKLSAgXGxldFxzZWV1cmw9XHB5QHNlZXVybAotfXtccGFyfQotCi0KLSUgQWxsb3cgdGhlIFB5dGhvbiByZWxlYXNlIG51bWJlciB0byBiZSBzcGVjaWZpZWQgaW5kZXBlbmRlbnRseSBvZiB0aGUKLSUgXGRhdGV7fS4gIFRoaXMgYWxsb3dzIHRoZSBkYXRlIHRvIHJlZmxlY3QgdGhlIGRvY3VtZW50J3MgZGF0ZSBhbmQKLSUgcmVsZWFzZSB0byBzcGVjaWZ5IHRoZSBQeXRob24gcmVsZWFzZSB0aGF0IGlzIGRvY3VtZW50ZWQuCi0lCi1cbmV3Y29tbWFuZHtccHlAcmVsZWFzZX17fQotXG5ld2NvbW1hbmR7XHZlcnNpb259e30KLVxuZXdjb21tYW5ke1xzaG9ydHZlcnNpb259e30KLVxuZXdjb21tYW5ke1xyZWxlYXNlbmFtZX17UmVsZWFzZX0KLVxuZXdjb21tYW5ke1xyZWxlYXNlfVsxXXslCi0gIFxyZW5ld2NvbW1hbmR7XHB5QHJlbGVhc2V9e1xyZWxlYXNlbmFtZVxzcGFjZVx2ZXJzaW9ufSUKLSAgXHJlbmV3Y29tbWFuZHtcdmVyc2lvbn17IzF9fQotXG5ld2NvbW1hbmR7XHNldHNob3J0dmVyc2lvbn1bMV17JQotICBccmVuZXdjb21tYW5ke1xzaG9ydHZlcnNpb259eyMxfX0KLQotJSBBbGxvdyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBhdXRob3IncyBhZGRyZXNzIHNlcGFyYXRlbHkgZnJvbSB0aGUKLSUgYXV0aG9yJ3MgbmFtZS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IHRoZW0gZGlmZmVyZW50bHksIHdoaWNoCi0lIGlzIGEgZ29vZCB0aGluZy4KLSUKLVxuZXdjb21tYW5ke1xweUBhdXRob3JhZGRyZXNzfXt9Ci1cbmV3Y29tbWFuZHtcYXV0aG9yYWRkcmVzc31bMV17XHJlbmV3Y29tbWFuZHtccHlAYXV0aG9yYWRkcmVzc317IzF9fQotXGxldFxkZXZlbG9wZXJzYWRkcmVzcz1cYXV0aG9yYWRkcmVzcwotXGxldFxkZXZlbG9wZXI9XGF1dGhvcgotXGxldFxkZXZlbG9wZXJzPVxhdXRob3IKLQotJSBUaGlzIHNldHMgdXAgdGhlIGZhbmN5IGNoYXB0ZXIgaGVhZGluZ3MgdGhhdCBtYWtlIHRoZSBkb2N1bWVudHMgbG9vawotJSBhdCBsZWFzdCBhIGxpdHRsZSBiZXR0ZXIgdGhhbiB0aGUgdXN1YWwgTGFUZVggb3V0cHV0LgotJQotXEBpZnVuZGVmaW5lZHtDaFRpdGxlVmFyfXt9ewotICBcQ2hOYW1lVmFye1xyYWdnZWRsZWZ0XG5vcm1hbHNpemVccHlASGVhZGVyRmFtaWx5fQotICBcQ2hOdW1WYXJ7XHJhZ2dlZGxlZnQgXGJmc2VyaWVzXExhcmdlXHB5QEhlYWRlckZhbWlseX0KLSAgXENoVGl0bGVWYXJ7XHJhZ2dlZGxlZnQgXHJtXEh1Z2VccHlASGVhZGVyRmFtaWx5fQotICAlIFRoaXMgY3JlYXRlcyBjaGFwdGVyIGhlYWRzIHdpdGhvdXQgdGhlIGxlYWRpbmcgXHZzcGFjZSp7fToKLSAgXGRlZlxAbWFrZWNoYXB0ZXJoZWFkIzF7JQotICAgIHtccGFyaW5kZW50IFx6QCBccmFnZ2VkcmlnaHQgXG5vcm1hbGZvbnQKLSAgICAgIFxpZm51bSBcY0BzZWNudW1kZXB0aCA+XG1AbmUKLSAgICAgICAgXERPQ0gKLSAgICAgIFxmaQotICAgICAgXGludGVybGluZXBlbmFsdHlcQE0KLSAgICAgIFxET1RJeyMxfQotICAgIH0KLSAgfQotfQotCi0KLSUgRGVmaW5pdGlvbiBsaXN0czsgcmVxdWVzdGVkIGJ5IEFNSyBmb3IgSE9XVE8gZG9jdW1lbnRzLiAgUHJvYmFibHkgdXNlZnVsCi0lIGVsc2V3aGVyZSBhcyB3ZWxsLCBzbyBrZWVwIGluIGluIHRoZSBnZW5lcmFsIHN0eWxlIHN1cHBvcnQuCi0lCi1cbmV3ZW52aXJvbm1lbnR7ZGVmaW5pdGlvbnN9eyUKLSAgXGJlZ2lue2Rlc2NyaXB0aW9ufSUKLSAgXGRlZlx0ZXJtIyMxe1xpdGVtWyMjMV1cbWJveHt9XFwqWzBtbV19Ci19eyUKLSAgXGVuZHtkZXNjcmlwdGlvbn0lCi19Ci0KLSUgVGVsbCBUZVggYWJvdXQgcGF0aG9sb2dpY2FsIGh5cGhlbmF0aW9uIGNhc2VzOgotXGh5cGhlbmF0aW9ue0Jhc2UtSFRUUC1SZS1xdWVzdC1IYW5kLWxlcn0KZGlmZiAtLWdpdCBhL2RvYy90b29scy90ZXhpbnB1dHMvcmVwb3J0aW5nYnVncy50ZXggYi9kb2MvdG9vbHMvdGV4aW5wdXRzL3JlcG9ydGluZ2J1Z3MudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDY0NzBhLi4wMDAwMDAwCi0tLSBhL2RvYy90b29scy90ZXhpbnB1dHMvcmVwb3J0aW5nYnVncy50ZXgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1cbGFiZWx7cmVwb3J0aW5nLWJ1Z3N9Ci0KLVB5dGhvbiBpcyBhIG1hdHVyZSBwcm9ncmFtbWluZyBsYW5ndWFnZSB3aGljaCBoYXMgZXN0YWJsaXNoZWQgYQotcmVwdXRhdGlvbiBmb3Igc3RhYmlsaXR5LiAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gdGhpcyByZXB1dGF0aW9uLCB0aGUKLWRldmVsb3BlcnMgd291bGQgbGlrZSB0byBrbm93IG9mIGFueSBkZWZpY2llbmNpZXMgeW91IGZpbmQgaW4gUHl0aG9uCi1vciBpdHMgZG9jdW1lbnRhdGlvbi4KLQotQWxsIGJ1ZyByZXBvcnRzIHNob3VsZCBiZSBzdWJtaXR0ZWQgdmlhIHRoZSBQeXRob24gQnVnIFRyYWNrZXIgb24KLVNvdXJjZUZvcmdlIChcdXJse2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvYnVncy8/Z3JvdXBfaWQ9NTQ3MH0pLiAgVGhlCi1idWcgdHJhY2tlciBvZmZlcnMgYSBXZWIgZm9ybSB3aGljaCBhbGxvd3MgcGVydGluZW50IGluZm9ybWF0aW9uIHRvIGJlCi1lbnRlcmVkIGFuZCBzdWJtaXR0ZWQgdG8gdGhlIGRldmVsb3BlcnMuCi0KLUJlZm9yZSBzdWJtaXR0aW5nIGEgcmVwb3J0LCBwbGVhc2UgbG9nIGludG8gU291cmNlRm9yZ2UgaWYgeW91IGFyZSBhCi1tZW1iZXI7IHRoaXMgd2lsbCBtYWtlIGl0IHBvc3NpYmxlIGZvciB0aGUgZGV2ZWxvcGVycyB0byBjb250YWN0IHlvdQotZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaWYgbmVlZGVkLiAgSWYgeW91IGFyZSBub3QgYSBTb3VyY2VGb3JnZQotbWVtYmVyIGJ1dCB3b3VsZCBub3QgbWluZCB0aGUgZGV2ZWxvcGVycyBjb250YWN0aW5nIHlvdSwgeW91IG1heQotaW5jbHVkZSB5b3VyIGVtYWlsIGFkZHJlc3MgaW4geW91ciBidWcgZGVzY3JpcHRpb24uICBJbiB0aGlzIGNhc2UsCi1wbGVhc2UgcmVhbGl6ZSB0aGF0IHRoZSBpbmZvcm1hdGlvbiBpcyBwdWJsaWNhbGx5IGF2YWlsYWJsZSBhbmQgY2Fubm90Ci1iZSBwcm90ZWN0ZWQuCi0KLVRoZSBmaXJzdCBzdGVwIGluIGZpbGluZyBhIHJlcG9ydCBpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcHJvYmxlbQotaGFzIGFscmVhZHkgYmVlbiByZXBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaW4gZG9pbmcgc28sIGFzaWRlIGZyb20KLXNhdmluZyB0aGUgZGV2ZWxvcGVycyB0aW1lLCBpcyB0aGF0IHlvdSBsZWFybiB3aGF0IGhhcyBiZWVuIGRvbmUgdG8KLWZpeCBpdDsgaXQgbWF5IGJlIHRoYXQgdGhlIHByb2JsZW0gaGFzIGFscmVhZHkgYmVlbiBmaXhlZCBmb3IgdGhlIG5leHQKLXJlbGVhc2UsIG9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgbmVlZGVkIChpbiB3aGljaCBjYXNlIHlvdSBhcmUKLXdlbGNvbWUgdG8gcHJvdmlkZSBpdCBpZiB5b3UgY2FuISkuICBUbyBkbyB0aGlzLCBzZWFyY2ggdGhlIGJ1ZwotZGF0YWJhc2UgdXNpbmcgdGhlIHNlYXJjaCBib3ggbmVhciB0aGUgYm90dG9tIG9mIHRoZSBwYWdlLgotCi1JZiB0aGUgcHJvYmxlbSB5b3UncmUgcmVwb3J0aW5nIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBidWcgdHJhY2tlciwgZ28KLWJhY2sgdG8gdGhlIFB5dGhvbiBCdWcgVHJhY2tlcgotKFx1cmx7aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9idWdzLz9ncm91cF9pZD01NDcwfSkuICBTZWxlY3QgdGhlCi1gYFN1Ym1pdCBhIEJ1ZycnIGxpbmsgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSB0byBvcGVuIHRoZSBidWcgcmVwb3J0aW5nCi1mb3JtLgotCi1UaGUgc3VibWlzc2lvbiBmb3JtIGhhcyBhIG51bWJlciBvZiBmaWVsZHMuICBUaGUgb25seSBmaWVsZHMgdGhhdCBhcmUKLXJlcXVpcmVkIGFyZSB0aGUgYGBTdW1tYXJ5JycgYW5kIGBgRGV0YWlscycnIGZpZWxkcy4gIEZvciB0aGUgc3VtbWFyeSwKLWVudGVyIGEgXGVtcGh7dmVyeX0gc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIHByb2JsZW07IGxlc3MgdGhhbiB0ZW4KLXdvcmRzIGlzIGdvb2QuICBJbiB0aGUgRGV0YWlscyBmaWVsZCwgZGVzY3JpYmUgdGhlIHByb2JsZW0gaW4gZGV0YWlsLAotaW5jbHVkaW5nIHdoYXQgeW91IGV4cGVjdGVkIHRvIGhhcHBlbiBhbmQgd2hhdCBkaWQgaGFwcGVuLiAgQmUgc3VyZSB0bwotaW5jbHVkZSB0aGUgdmVyc2lvbiBvZiBQeXRob24geW91IHVzZWQsIHdoZXRoZXIgYW55IGV4dGVuc2lvbiBtb2R1bGVzCi13ZXJlIGludm9sdmVkLCBhbmQgd2hhdCBoYXJkd2FyZSBhbmQgc29mdHdhcmUgcGxhdGZvcm0geW91IHdlcmUgdXNpbmcKLShpbmNsdWRpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbiBhcyBhcHByb3ByaWF0ZSkuCi0KLVRoZSBvbmx5IG90aGVyIGZpZWxkIHRoYXQgeW91IG1heSB3YW50IHRvIHNldCBpcyB0aGUgYGBDYXRlZ29yeScnCi1maWVsZCwgd2hpY2ggYWxsb3dzIHlvdSB0byBwbGFjZSB0aGUgYnVnIHJlcG9ydCBpbnRvIGEgYnJvYWQgY2F0ZWdvcnkKLShzdWNoIGFzIGBgRG9jdW1lbnRhdGlvbicnIG9yIGBgTGlicmFyeScnKS4KLQotRWFjaCBidWcgcmVwb3J0IHdpbGwgYmUgYXNzaWduZWQgdG8gYSBkZXZlbG9wZXIgd2hvIHdpbGwgZGV0ZXJtaW5lCi13aGF0IG5lZWRzIHRvIGJlIGRvbmUgdG8gY29ycmVjdCB0aGUgcHJvYmxlbS4gIElmIHlvdSBoYXZlIGEKLVNvdXJjZUZvcmdlIGFjY291bnQgYW5kIGxvZ2dlZCBpbiB0byByZXBvcnQgdGhlIHByb2JsZW0sIHlvdSB3aWxsCi1yZWNlaXZlIGFuIHVwZGF0ZSBlYWNoIHRpbWUgYWN0aW9uIGlzIHRha2VuIG9uIHRoZSBidWcuCi0KLQotXGJlZ2lue3NlZWFsc299Ci0gIFxzZWV0aXRsZVtodHRwOi8vd3d3LW1pY2UuY3MudWNsLmFjLnVrL211bHRpbWVkaWEvc29mdHdhcmUvZG9jdW1lbnRhdGlvbi9SZXBvcnRpbmdCdWdzLmh0bWxde0hvdwotICAgICAgICB0byBSZXBvcnQgQnVncyBFZmZlY3RpdmVseX17QXJ0aWNsZSB3aGljaCBnb2VzIGludG8gc29tZQotICAgICAgICBkZXRhaWwgYWJvdXQgaG93IHRvIGNyZWF0ZSBhIHVzZWZ1bCBidWcgcmVwb3J0LiAgVGhpcwotICAgICAgICBkZXNjcmliZXMgd2hhdCBraW5kIG9mIGluZm9ybWF0aW9uIGlzIHVzZWZ1bCBhbmQgd2h5IGl0IGlzCi0gICAgICAgIHVzZWZ1bC59Ci0KLSAgXHNlZXRpdGxlW2h0dHA6Ly93d3cubW96aWxsYS5vcmcvcXVhbGl0eS9idWctd3JpdGluZy1ndWlkZWxpbmVzLmh0bWxde0J1ZwotICAgICAgICBXcml0aW5nIEd1aWRlbGluZXN9e0luZm9ybWF0aW9uIGFib3V0IHdyaXRpbmcgYSBnb29kIGJ1ZwotICAgICAgICByZXBvcnQuICBTb21lIG9mIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIE1vemlsbGEgcHJvamVjdCwgYnV0Ci0gICAgICAgIGRlc2NyaWJlcyBnZW5lcmFsIGdvb2QgcHJhY3RpY2VzLn0KLVxlbmR7c2VlYWxzb30KZGlmZiAtLWdpdCBhL2RvYy90b29scy90b2MyYmttLnB5IGIvZG9jL3Rvb2xzL3RvYzJia20ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQ1YzdlZjguLjAwMDAwMDAKLS0tIGEvZG9jL3Rvb2xzL3RvYzJia20ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0iIiJDb252ZXJ0IGEgTGFUZVggLnRvYyBmaWxlIHRvIHNvbWUgUERGVGVYIG1hZ2ljIHRvIGNyZWF0ZSB0aGF0IG5lYXQgb3V0bGluZS4KLQotVGhlIG91dHB1dCBmaWxlIGhhcyBhbiBleHRlbnNpb24gb2YgJy5ia20nIGluc3RlYWQgb2YgJy5vdXQnLCBzaW5jZSBoeXBlcnJlZgotYWxyZWFkeSB1c2VzIHRoYXQgZXh0ZW5zaW9uLgotIiIiCi0KLWltcG9ydCBnZXRvcHQKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgc3lzCi0KLQotIyBFbmNoIGl0ZW0gaW4gYW4gZW50cnkgaXMgYSB0dXBsZSBvZjoKLSMKLSMgICBTZWN0aW9uICMsICBUaXRsZSBTdHJpbmcsICBQYWdlICMsICBMaXN0IG9mIFN1Yi1lbnRyaWVzCi0jCi0jIFRoZSByZXR1cm4gdmFsdWUgb2YgcGFyc2VfdG9jKCkgaXMgc3VjaCBhIHR1cGxlLgotCi1jbGluZV9yZSA9IHIiIiJeCi1cXGNvbnRlbnRzbGluZVwgXHsoW2Etel0qKX0gICAgICAgICAgICAgIyB0eXBlIG9mIHNlY3Rpb24gaW4gJDEKLVx7KD86XFxudW1iZXJsaW5lXCBceyhbMC05LkEtWl0rKX0pPyAgICAgIyBzZWN0aW9uIG51bWJlcgotKC4qKX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGl0bGUgc3RyaW5nCi1ceyhcZCspfSQiIiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwYWdlIG51bWJlcgotCi1jbGluZV9yeCA9IHJlLmNvbXBpbGUoY2xpbmVfcmUsIHJlLlZFUkJPU0UpCi0KLU9VVEVSX1RPX0lOTkVSID0gLTEKLQotX3RyYW5zaXRpb25fbWFwID0gewotICAgICgnY2hhcHRlcicsICdzZWN0aW9uJyk6IE9VVEVSX1RPX0lOTkVSLAotICAgICgnc2VjdGlvbicsICdzdWJzZWN0aW9uJyk6IE9VVEVSX1RPX0lOTkVSLAotICAgICgnc3Vic2VjdGlvbicsICdzdWJzdWJzZWN0aW9uJyk6IE9VVEVSX1RPX0lOTkVSLAotICAgICgnc3Vic3Vic2VjdGlvbicsICdzdWJzZWN0aW9uJyk6IDEsCi0gICAgKCdzdWJzZWN0aW9uJywgJ3NlY3Rpb24nKTogMSwKLSAgICAoJ3NlY3Rpb24nLCAnY2hhcHRlcicpOiAxLAotICAgICgnc3Vic2VjdGlvbicsICdjaGFwdGVyJyk6IDIsCi0gICAgKCdzdWJzdWJzZWN0aW9uJywgJ3NlY3Rpb24nKTogMiwKLSAgICAoJ3N1YnN1YnNlY3Rpb24nLCAnY2hhcHRlcicpOiAzLAotICAgIH0KLQotSU5DTFVERURfTEVWRUxTID0gKCJjaGFwdGVyIiwgInNlY3Rpb24iLCAic3Vic2VjdGlvbiIsICJzdWJzdWJzZWN0aW9uIikKLQotCi1kZWYgcGFyc2VfdG9jKGZwLCBiaWdwYXJ0PU5vbmUpOgotICAgIHRvYyA9IHRvcCA9IFtdCi0gICAgc3RhY2sgPSBbdG9jXQotICAgIGxldmVsID0gYmlncGFydCBvciAnY2hhcHRlcicKLSAgICBsaW5lbm8gPSAwCi0gICAgd2hpbGUgMToKLSAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBsaW5lbm8gPSBsaW5lbm8gKyAxCi0gICAgICAgIG0gPSBjbGluZV9yeC5tYXRjaChsaW5lKQotICAgICAgICBpZiBtOgotICAgICAgICAgICAgc3R5cGUsIHNudW0sIHRpdGxlLCBwYWdlbm8gPSBtLmdyb3VwKDEsIDIsIDMsIDQpCi0gICAgICAgICAgICB0aXRsZSA9IGNsZWFuX3RpdGxlKHRpdGxlKQotICAgICAgICAgICAgZW50cnkgPSAoc3R5cGUsIHNudW0sIHRpdGxlLCBzdHJpbmcuYXRvaShwYWdlbm8pLCBbXSkKLSAgICAgICAgICAgIGlmIHN0eXBlID09IGxldmVsOgotICAgICAgICAgICAgICAgIHRvYy5hcHBlbmQoZW50cnkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHN0eXBlIG5vdCBpbiBJTkNMVURFRF9MRVZFTFM6Ci0gICAgICAgICAgICAgICAgICAgICMgd2UgZG9uJ3Qgd2FudCBwYXJhZ3JhcGhzICYgc3VicGFyYWdyYXBocwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IF90cmFuc2l0aW9uX21hcFsobGV2ZWwsIHN0eXBlKV0KLSAgICAgICAgICAgICAgICBpZiBkaXJlY3Rpb24gPT0gT1VURVJfVE9fSU5ORVI6Ci0gICAgICAgICAgICAgICAgICAgIHRvYyA9IHRvY1stMV1bLTFdCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrLmluc2VydCgwLCB0b2MpCi0gICAgICAgICAgICAgICAgICAgIHRvYy5hcHBlbmQoZW50cnkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZGlyZWN0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBzdGFja1swXQotICAgICAgICAgICAgICAgICAgICAgICAgdG9jID0gc3RhY2tbMF0KLSAgICAgICAgICAgICAgICAgICAgdG9jLmFwcGVuZChlbnRyeSkKLSAgICAgICAgICAgICAgICBsZXZlbCA9IHN0eXBlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJsLiVzOiAiICsgbGluZSkKLSAgICByZXR1cm4gdG9wCi0KLQotaGFja3Njb3JlX3J4ID0gcmUuY29tcGlsZShyIlxcaGFja3Njb3JlXHMqe1tefV0qfSIpCi1yYWlzZWJveF9yeCA9IHJlLmNvbXBpbGUociJcXHJhaXNlYm94XHMqe1tefV0qfSIpCi10aXRsZV9yeCA9IHJlLmNvbXBpbGUociJcXChbYS16QS1aXSkrXHMrIikKLXRpdGxlX3RyYW5zID0gc3RyaW5nLm1ha2V0cmFucygiIiwgIiIpCi0KLWRlZiBjbGVhbl90aXRsZSh0aXRsZSk6Ci0gICAgdGl0bGUgPSByYWlzZWJveF9yeC5zdWIoIiIsIHRpdGxlKQotICAgIHRpdGxlID0gaGFja3Njb3JlX3J4LnN1YihyIlxcXyIsIHRpdGxlKQotICAgIHBvcyA9IDAKLSAgICB3aGlsZSAxOgotICAgICAgICBtID0gdGl0bGVfcnguc2VhcmNoKHRpdGxlLCBwb3MpCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgICBzdGFydCA9IG0uc3RhcnQoKQotICAgICAgICAgICAgaWYgdGl0bGVbc3RhcnQ6c3RhcnQrMTVdICE9ICJcXHRleHR1bmRlcnNjb3JlIjoKLSAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlWzpzdGFydF0gKyB0aXRsZVttLmVuZCgpOl0KLSAgICAgICAgICAgIHBvcyA9IHN0YXJ0ICsgMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnJlYWsKLSAgICB0aXRsZSA9IHN0cmluZy50cmFuc2xhdGUodGl0bGUsIHRpdGxlX3RyYW5zLCAie30iKQotICAgIHJldHVybiB0aXRsZQotCi0KLWRlZiB3cml0ZV90b2ModG9jLCBmcCk6Ci0gICAgZm9yIGVudHJ5IGluIHRvYzoKLSAgICAgICAgd3JpdGVfdG9jX2VudHJ5KGVudHJ5LCBmcCwgMCkKLQotZGVmIHdyaXRlX3RvY19lbnRyeShlbnRyeSwgZnAsIGxheWVyKToKLSAgICBzdHlwZSwgc251bSwgdGl0bGUsIHBhZ2VubywgdG9jID0gZW50cnkKLSAgICBzID0gIlxccGRmb3V0bGluZSBnb3RvIG5hbWV7cGFnZSUwM2R9IiAlIHBhZ2VubwotICAgIGlmIHRvYzoKLSAgICAgICAgcyA9ICIlcyBjb3VudCAtJWQiICUgKHMsIGxlbih0b2MpKQotICAgIGlmIHNudW06Ci0gICAgICAgIHRpdGxlID0gIiVzICVzIiAlIChzbnVtLCB0aXRsZSkKLSAgICBzID0gIiVzIHslc31cbiIgJSAocywgdGl0bGUpCi0gICAgZnAud3JpdGUocykKLSAgICBmb3IgZW50cnkgaW4gdG9jOgotICAgICAgICB3cml0ZV90b2NfZW50cnkoZW50cnksIGZwLCBsYXllciArIDEpCi0KLQotZGVmIHByb2Nlc3MoaWZuLCBvZm4sIGJpZ3BhcnQ9Tm9uZSk6Ci0gICAgdG9jID0gcGFyc2VfdG9jKG9wZW4oaWZuKSwgYmlncGFydCkKLSAgICB3cml0ZV90b2ModG9jLCBvcGVuKG9mbiwgInciKSkKLQotCi1kZWYgbWFpbigpOgotICAgIGJpZ3BhcnQgPSBOb25lCi0gICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiYzoiKQotICAgIGlmIG9wdHM6Ci0gICAgICAgIGJpZ3BhcnQgPSBvcHRzWzBdWzFdCi0gICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgIHVzYWdlKCkKLSAgICAgICAgc3lzLmV4aXQoMikKLSAgICBmb3IgZmlsZW5hbWUgaW4gYXJnczoKLSAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKLSAgICAgICAgZXh0ID0gZXh0IG9yICIudG9jIgotICAgICAgICBwcm9jZXNzKGJhc2UgKyBleHQsIGJhc2UgKyAiLmJrbSIsIGJpZ3BhcnQpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL2RvYy90b29scy91cGRhdGUtZG9jcy5zaCBiL2RvYy90b29scy91cGRhdGUtZG9jcy5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzk2NTJhYy4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvdXBkYXRlLWRvY3Muc2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jISAvYmluL3NoCi0KLSMgU2NyaXB0IHdoaWNoIGluc3RhbGxzIGEgZGV2ZWxvcG1lbnQgc25hcHNob3Qgb2YgdGhlIGRvY3VtZW50YXRpb24KLSMgaW50byB0aGUgIlB5dGhvbiBAIFNvdXJjZUZvcmdlIiB3ZWJzaXRlLgotIwotIyBUaGUgcHVzaC1kb2NzLnNoIHNjcmlwdCBwdXNoZXMgdGhpcyB0byB0aGUgU291cmNlRm9yZ2Ugd2hlbiBuZWVkZWQKLSMgYW5kIHJlbW92ZXMgaXQgd2hlbiBkb25lLgotCi1pZiBbIC16ICIkSE9NRSIgXSA7IHRoZW4KLSAgICBIT01FPWBncmVwIGZkcmFrZSAvZXRjL3Bhc3N3ZCB8IHNlZCAnc3xeLio6XChbXjpdKlwpOlteOl0qJHxcMXwnYAotICAgIGV4cG9ydCBIT01FCi1maQotCi1VUERBVEVTPSIkSE9NRS90bXAvJDEiCi0KLWNkIC9ob21lL2dyb3Vwcy9weXRob24vaHRkb2NzIHx8IGV4aXQgJD8KLXJtIC1yZiBkZXZlbC1kb2NzIHx8IGV4aXQgJD8KLW1rZGlyIGRldmVsLWRvY3MgfHwgZXhpdCAkPwotY2QgZGV2ZWwtZG9jcyB8fCBleGl0ICQ/Ci0oYnppcDIgLWRjICIkVVBEQVRFUyIgfCB0YXIgeGYgLSkgfHwgZXhpdCAkPwotcm0gIiRVUERBVEVTIiB8fCBleGl0ICQ/CmRpZmYgLS1naXQgYS9kb2MvdG9vbHMvd2hpY2hsaWJzIGIvZG9jL3Rvb2xzL3doaWNobGlicwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTBkNDRlZS4uMDAwMDAwMAotLS0gYS9kb2MvdG9vbHMvd2hpY2hsaWJzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIS9iaW4vc2gKLXNlZCAtbiAncyVeXFxpbnB1dHtcKGxpYlthLXpBLVowLTlfXSpcKX0uKiUuLi9saWIvXDEudGV4JXAnIC4uL2xpYi9saWIudGV4CmRpZmYgLS1naXQgYS9zZXR1cC5jZmcgYi9zZXR1cC5jZmcKaW5kZXggNTQ1MDU0NC4uOTJlNjU2OCAxMDA2NDQKLS0tIGEvc2V0dXAuY2ZnCisrKyBiL3NldHVwLmNmZwpAQCAtNCw3ICs0LDcgQEAKICMgYmRpc3RfcnBtIHNldHRpbmdzIGNvbnRyaWJ1dGVkIGJ5IE1paGFpIEliYW5lc2N1IDxtaXNhQHJlZGhhdC5jb20+CiBbYmRpc3RfcnBtXQogcmVsZWFzZSA9IDEKLWJ1aWxkLXJlcXVpcmVzID0gbHlueCBvcGVuc3NsLWRldmVsIHB5dGhvbi1kZXZlbCBwZXJsIHRldGV4LWR2aXBzIHRldGV4LWxhdGV4CitidWlsZC1yZXF1aXJlcyA9IGx5bnggb3BlbnNzbC1kZXZlbCBweXRob24tZGV2ZWwgcHl0aG9uLXNwaGlueAogZ3JvdXAgPSBEZXZlbG9wbWVudC9MaWJyYXJpZXMKIGJ1aWxkX3NjcmlwdCA9IHJwbS9idWlsZF9zY3JpcHQKLWRvYy1maWxlcyA9IGRvYy9weU9wZW5TU0wudHh0IGRvYy9weU9wZW5TU0wucHMgZG9jL2h0bWwKK2RvYy1maWxlcyA9IGRvYy9fYnVpbGQvaHRtbAo=