Name: series-workflowj8hr6 Phase: Succeeded StartedAt: 2026-08-02 21:53:22 +0000 UTC FinishedAt: 2026-08-03 01:58:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[0] Phase: Succeeded StartedAt: 2026-08-02 21:53:22 +0000 UTC FinishedAt: 2026-08-02 21:56:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 21:53:22 +0000 UTC FinishedAt: 2026-08-02 21:56:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_DIGITAL_TV_SUPPORT", "MEDIA_USB_SUPPORT", "DVB_CORE", "DVB_TTUSB_DEC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_DIGITAL_TV_SUPPORT", "MEDIA_USB_SUPPORT", "DVB_CORE", "DVB_TTUSB_DEC" ], "series_id": "986ad262-9151-45d4-8775-4f1fce1c05c3" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ttusb_dec_probe", "ttusbdecfe_dvbt_attach", "ttusbdecfe_dvbs_attach" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfRElHSVRBTF9UVl9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX1VTQl9TVVBQT1JUJiMzNDssCiAgICAmIzM0O0RWQl9DT1JFJiMzNDssCiAgICAmIzM0O0RWQl9UVFVTQl9ERUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0dHVzYl9kZWNfcHJvYmUmIzM0OywKICAgICYjMzQ7dHR1c2JkZWNmZV9kdmJ0X2F0dGFjaCYjMzQ7LAogICAgJiMzNDt0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIG92ZXJmbG93IGluIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYCBieSBhZGRpbmcgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciBhbmQgY2hlY2tpbmcgdGhlIGxlbmd0aCBiZWZvcmUgY29weWluZyB0aGUgcmVzdWx0IG9mIGEgVVNCIGNvbW1hbmQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBtZWRpYSBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NGZjNzdmMzMzZThmZTdhOGM2Y2E1Mjk4NTg1ODhiYjFmODgyN2Q1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMTo1NDo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcbmluZGV4IDgyNWEzODc1OTg5ZDMuLjQxZTk1MDFjZDU2MTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1xuQEAgLTMxNCw3ICYjNDM7MzE0LDggQEAgc3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuIFxuIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXG4gXHRcdFx0XHQgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLFxuLVx0XHRcdFx0ICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSlcbiYjNDM7XHRcdFx0XHQgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxuJiM0MztcdFx0XHRcdCAgaW50IGNtZF9yZXN1bHRfbGVuKVxuIHtcbiBcdGludCByZXN1bHQsIGFjdHVhbF9sZW47XG4gXHR1OCAqYjtcbkBAIC0zNjEsMTUgJiM0MzszNjIsMjYgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKHN0cnVjdCB0dHVzYl9kZWMgKmRlYywgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0ICAgICAgIF9fZnVuY19fLCByZXN1bHQpO1xuIFx0XHRnb3RvIGVycl9tdXRleF91bmxvY2s7XG4gXHR9IGVsc2Uge1xuJiM0MztcdFx0aW50IHJsZW4gPSAwO1xuJiM0MztcbiBcdFx0aWYgKGRlYnVnKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fREVCVUcgXCYjMzQ7JXM6IHJlc3VsdDogJSpwaFxcblwmIzM0OyxcbiBcdFx0XHQgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHRpZiAoYWN0dWFsX2xlbiBcdTAwM2U9IDQpIHtcbiYjNDM7XHRcdFx0cmxlbiA9IGJbM107XG4mIzQzO1x0XHRcdGlmIChybGVuIFx1MDAzZSBhY3R1YWxfbGVuIC0gNClcbiYjNDM7XHRcdFx0XHRybGVuID0gYWN0dWFsX2xlbiAtIDQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKGNtZF9yZXN1bHQgXHUwMDI2XHUwMDI2IHJsZW4gXHUwMDNlIGNtZF9yZXN1bHRfbGVuKVxuJiM0MztcdFx0XHRybGVuID0gY21kX3Jlc3VsdF9sZW47XG4mIzQzO1xuIFx0XHRpZiAocmVzdWx0X2xlbmd0aClcbi1cdFx0XHQqcmVzdWx0X2xlbmd0aCA9IGJbM107XG4tXHRcdGlmIChjbWRfcmVzdWx0IFx1MDAyNlx1MDAyNiBiWzNdIFx1MDAzZSAwKVxuLVx0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBiWzNdKTtcbiYjNDM7XHRcdFx0KnJlc3VsdF9sZW5ndGggPSBybGVuO1xuJiM0MztcdFx0aWYgKGNtZF9yZXN1bHQgXHUwMDI2XHUwMDI2IHJsZW4gXHUwMDNlIDApXG4mIzQzO1x0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBybGVuKTtcbiBcdH1cbiBcbiBlcnJfbXV0ZXhfdW5sb2NrOlxuQEAgLTM4OSw3ICYjNDM7NDAxLDggQEAgc3RhdGljIGludCB0dHVzYl9kZWNfZ2V0X3N0Yl9zdGF0ZSAoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCB1bnNpZ25lZCBpbnQgKm1vZGUsXG4gXG4gXHRkcHJpbnRrKFwmIzM0OyVzXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgXHUwMDI2Y19sZW5ndGgsIGMpO1xuJiM0MztcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDA4LCAwLCBOVUxMLCBcdTAwMjZjX2xlbmd0aCwgYyxcbiYjNDM7XHRcdFx0XHRcdHNpemVvZihjKSk7XG4gXHRpZiAocmVzdWx0KVxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFxuQEAgLTQ0OCw3ICYjNDM7NDYxLDcgQEAgc3RhdGljIHZvaWQgdHR1c2JfZGVjX3NldF9waWRzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdG1lbWNweShcdTAwMjZiWzJdLCBcdTAwMjZhdWRpbywgMik7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2dmlkZW8sIDIpO1xuIFxuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4mIzQzO1x0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkdmJfZmlsdGVyX3BlczJ0c19pbml0KFx1MDAyNmRlYy1cdTAwM2VhX3BlczJ0cywgZGVjLVx1MDAzZXBpZFtETVhfUEVTX0FVRElPXSxcbiBcdFx0XHQgICAgICAgdHR1c2JfZGVjX2F1ZGlvX3BlczJ0c19jYiwgZGVjKTtcbkBAIC05MDIsNyAmIzQzOzkxNSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2Uoc3RydWN0IHR0dXNiX2RlYyAqZGVjLFxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFRUVVNCX0RFQ19JTlRFUkZBQ0VfSU46XG4gXHRcdFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODAsIHNpemVvZihiKSxcbi1cdFx0XHRcdFx0XHRcdGIsIE5VTEwsIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0XHRcdGIsIE5VTEwsIE5VTEwsIDApO1xuIFx0XHRcdGlmIChyZXN1bHQpXG4gXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0XHRcdHJlc3VsdCA9IHVzYl9zZXRfaW50ZXJmYWNlKGRlYy1cdTAwM2V1ZGV2LCAwLCA4KTtcbkBAIC0xMDIxLDcgJiM0MzsxMDM0LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfc3RhcnRfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXG4gXHR9XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MCwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXHRpZiAocmVzdWx0KVxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFxuQEAgLTEwNTYsNyAmIzQzOzEwNjksNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF9zZWNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXHRtZW1jcHkoXHUwMDI2YjBbNV0sIFx1MDAyNmR2YmRteGZlZWQtXHUwMDNlZmlsdGVyLVx1MDAzZWZpbHRlci5maWx0ZXJfdmFsdWVbMF0sIDEpO1xuIFxuIFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NjAsIHNpemVvZihiMCksIGIwLFxuLVx0XHRcdFx0XHRcdTAwMjZjX2xlbmd0aCwgYyk7XG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZjX2xlbmd0aCwgYywgc2l6ZW9mKGMpKTtcbiBcbiBcdGlmICghcmVzdWx0KSB7XG4gXHRcdGlmIChjX2xlbmd0aCA9PSAyKSB7XG5AQCAtMTExNCw3ICYjNDM7MTEyNyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3BfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXHRzdHJ1Y3QgdHR1c2JfZGVjICpkZWMgPSBkdmJkbXhmZWVkLVx1MDAzZWRlbXV4LVx1MDAzZXByaXY7XG4gXHR1OCBiMFtdID0geyAweDAwIH07XG4gXG4tXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkZWMtXHUwMDNlcHZhX3N0cmVhbV9jb3VudC0tO1xuIFxuQEAgLTExMzUsNyAmIzQzOzExNDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdG9wX3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcbiBcdGxpc3RfZGVsKFx1MDAyNmZpbmZvLVx1MDAzZWZpbHRlcl9pbmZvX2xpc3QpO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZWMtXHUwMDNlZmlsdGVyX2luZm9fbGlzdF9sb2NrLCBmbGFncyk7XG4gXHRrZnJlZShmaW5mbyk7XG4tXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkZWMtXHUwMDNlZmlsdGVyX3N0cmVhbV9jb3VudC0tO1xuIFxuQEAgLTEyMzgsNyAmIzQzOzEyNTEsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2luaXRfcmMoIHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdGlmICh1c2Jfc3VibWl0X3VyYihkZWMtXHUwMDNlaXJxX3VyYiwgR0ZQX0tFUk5FTCkpXG4gXHRcdHByaW50ayhcJiMzNDslczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkXFxuXCYjMzQ7LF9fZnVuY19fKTtcbiBcdC8qIGVuYWJsZSBpcnEgcGlwZSAqL1xuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsMHhiMCxzaXplb2YoYiksYixOVUxMLE5VTEwpO1xuJiM0MztcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweGIwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTEzNTQsNyAmIzQzOzEzNjcsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19ib290X2RzcChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMpXG4gXHRmaXJtd2FyZV9jc3VtX25zID0gaHRvbnMoZmlybXdhcmVfY3N1bSk7XG4gXHRtZW1jcHkoXHUwMDI2YjBbNl0sIFx1MDAyNmZpcm13YXJlX2NzdW1fbnMsIDIpO1xuIFxuLVx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTtcbiYjNDM7XHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0aWYgKHJlc3VsdCkge1xuIFx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTtcbkBAIC0xMzk1LDcgJiM0MzsxNDA4LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfYm9vdF9kc3Aoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDQzLCBzaXplb2YoYjEpLCBiMSwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTtcbiBcdGtmcmVlKGIpO1xuQEAgLTE2MjEsMTAgJiM0MzsxNjM0LDE0IEBAIHN0YXRpYyB2b2lkIHR0dXNiX2RlY19leGl0X2ZpbHRlcnMoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxuIFxuIHN0YXRpYyBpbnQgZmVfc2VuZF9jb21tYW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBjb25zdCB1OCBjb21tYW5kLFxuIFx0XHRcdCAgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLFxuLVx0XHRcdCAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKVxuJiM0MztcdFx0XHQgICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSxcbiYjNDM7XHRcdFx0ICAgaW50IGNtZF9yZXN1bHRfbGVuKVxuIHtcbiBcdHN0cnVjdCB0dHVzYl9kZWMqIGRlYyA9IGZlLVx1MDAzZWR2Yi1cdTAwM2Vwcml2O1xuLVx0cmV0dXJuIHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCBjb21tYW5kLCBwYXJhbV9sZW5ndGgsIHBhcmFtcywgcmVzdWx0X2xlbmd0aCwgY21kX3Jlc3VsdCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgY29tbWFuZCwgcGFyYW1fbGVuZ3RoLCBwYXJhbXMsXG4mIzQzO1x0XHRcdFx0ICAgICAgcmVzdWx0X2xlbmd0aCwgY21kX3Jlc3VsdCxcbiYjNDM7XHRcdFx0XHQgICAgICBjbWRfcmVzdWx0X2xlbik7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXG5pbmRleCAyMTUyMjEzNzBjMTkzLi5iMDEzZDZkZmNiZWU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xuQEAgLTQ0LDcgJiM0Mzs0NCw4IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJ0X3JlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLFxuIFxuIFx0KnN0YXR1cz0wO1xuIFxuLVx0cmV0PXN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXHUwMDI2bGVuLCByZXN1bHQpO1xuJiM0MztcdHJldCA9IHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXHUwMDI2bGVuLCByZXN1bHQsXG4mIzQzO1x0XHRcdFx0XHQgIHNpemVvZihyZXN1bHQpKTtcbiBcdGlmKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC04NSw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4gXG4gXHRfX2JlMzIgZnJlcSA9IGh0b25sKHAtXHUwMDNlZnJlcXVlbmN5IC8gMTAwMCk7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2ZnJlcSwgc2l6ZW9mICh1MzIpKTtcbi1cdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4mIzQzO1x0c3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xMzAsNyAmIzQzOzEzMSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJzX3NldF9mcm9udGVuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSlcbiBcdGxuYl92b2x0YWdlID0gaHRvbmwoc3RhdGUtXHUwMDNldm9sdGFnZSk7XG4gXHRtZW1jcHkoXHUwMDI2YlsyOF0sIFx1MDAyNmxuYl92b2x0YWdlLCBzaXplb2YodTMyKSk7XG4gXG4tXHRzdGF0ZS1cdTAwM2Vjb25maWctXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTQ5LDcgJiM0MzsxNTAsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19kaXNlcWNfc2VuZF9tYXN0ZXJfY21kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBzdHJ1Y1xuIFxuIFx0c3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MixcbiBcdFx0XHRcdCAgICBzaXplb2YoYikgLSAoNiAtIGNtZC1cdTAwM2Vtc2dfbGVuKSwgYixcbi1cdFx0XHRcdCAgICBOVUxMLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgICAgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaCBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmhcbmluZGV4IDczODI4YmIyMjU4YzkuLjk2NjAwYWQ0YzIzNmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXG5AQCAtMTQsNyAmIzQzOzE0LDggQEAgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnXG4ge1xuIFx0aW50ICgqc2VuZF9jb21tYW5kKShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0XHQgICAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sXG4tXHRcdFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTtcbiYjNDM7XHRcdFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxuJiM0MztcdFx0XHQgICAgaW50IGNtZF9yZXN1bHRfbGVuKTtcbiB9O1xuIFxuIGV4dGVybiBzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfVVNCX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7RFZCX0NPUkUmIzM0OywKICAgICYjMzQ7RFZCX1RUVVNCX0RFQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3R0dXNiX2RlY19wcm9iZSYjMzQ7LAogICAgJiMzNDt0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoJiMzNDssCiAgICAmIzM0O3R0dXNiZGVjZmVfZHZic19hdHRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKGR1bW15X2hjZC9yYXctZ2FkZ2V0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0ZmM3N2YzMzNlOGZlN2E4YzZjYTUyOTg1ODU4OGJiMWY4ODI3ZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyIDIxOjU0OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jCmluZGV4IDgyNWEzODc1OTg5ZDMuLjQxZTk1MDFjZDU2MTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMKQEAgLTMxNCw3ICYjNDM7MzE0LDggQEAgc3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQogCiBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLAogCQkJCSAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sCi0JCQkJICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSkKJiM0MzsJCQkJICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSwKJiM0MzsJCQkJICBpbnQgY21kX3Jlc3VsdF9sZW4pCiB7CiAJaW50IHJlc3VsdCwgYWN0dWFsX2xlbjsKIAl1OCAqYjsKQEAgLTM2MSwxNSAmIzQzOzM2MiwyNiBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLAogCQkgICAgICAgX19mdW5jX18sIHJlc3VsdCk7CiAJCWdvdG8gZXJyX211dGV4X3VubG9jazsKIAl9IGVsc2UgewomIzQzOwkJaW50IHJsZW4gPSAwOwomIzQzOwogCQlpZiAoZGVidWcpIHsKIAkJCXByaW50ayhLRVJOX0RFQlVHICYjMzQ7JXM6IHJlc3VsdDogJSpwaFxuJiMzNDssCiAJCQkgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpOwogCQl9CiAKJiM0MzsJCWlmIChhY3R1YWxfbGVuICZndDs9IDQpIHsKJiM0MzsJCQlybGVuID0gYlszXTsKJiM0MzsJCQlpZiAocmxlbiAmZ3Q7IGFjdHVhbF9sZW4gLSA0KQomIzQzOwkJCQlybGVuID0gYWN0dWFsX2xlbiAtIDQ7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpZiAoY21kX3Jlc3VsdCAmYW1wOyZhbXA7IHJsZW4gJmd0OyBjbWRfcmVzdWx0X2xlbikKJiM0MzsJCQlybGVuID0gY21kX3Jlc3VsdF9sZW47CiYjNDM7CiAJCWlmIChyZXN1bHRfbGVuZ3RoKQotCQkJKnJlc3VsdF9sZW5ndGggPSBiWzNdOwotCQlpZiAoY21kX3Jlc3VsdCAmYW1wOyZhbXA7IGJbM10gJmd0OyAwKQotCQkJbWVtY3B5KGNtZF9yZXN1bHQsICZhbXA7Yls0XSwgYlszXSk7CiYjNDM7CQkJKnJlc3VsdF9sZW5ndGggPSBybGVuOwomIzQzOwkJaWYgKGNtZF9yZXN1bHQgJmFtcDsmYW1wOyBybGVuICZndDsgMCkKJiM0MzsJCQltZW1jcHkoY21kX3Jlc3VsdCwgJmFtcDtiWzRdLCBybGVuKTsKIAl9CiAKIGVycl9tdXRleF91bmxvY2s6CkBAIC0zODksNyAmIzQzOzQwMSw4IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX2dldF9zdGJfc3RhdGUgKHN0cnVjdCB0dHVzYl9kZWMgKmRlYywgdW5zaWduZWQgaW50ICptb2RlLAogCiAJZHByaW50aygmIzM0OyVzXG4mIzM0OywgX19mdW5jX18pOwogCi0JcmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4MDgsIDAsIE5VTEwsICZhbXA7Y19sZW5ndGgsIGMpOwomIzQzOwlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgJmFtcDtjX2xlbmd0aCwgYywKJiM0MzsJCQkJCXNpemVvZihjKSk7CiAJaWYgKHJlc3VsdCkKIAkJcmV0dXJuIHJlc3VsdDsKIApAQCAtNDQ4LDcgJiM0Mzs0NjEsNyBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfc2V0X3BpZHMoc3RydWN0IHR0dXNiX2RlYyAqZGVjKQogCW1lbWNweSgmYW1wO2JbMl0sICZhbXA7YXVkaW8sIDIpOwogCW1lbWNweSgmYW1wO2JbNF0sICZhbXA7dmlkZW8sIDIpOwogCi0JdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7CiYjNDM7CXR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDUwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApOwogCiAJZHZiX2ZpbHRlcl9wZXMydHNfaW5pdCgmYW1wO2RlYy0mZ3Q7YV9wZXMydHMsIGRlYy0mZ3Q7cGlkW0RNWF9QRVNfQVVESU9dLAogCQkJICAgICAgIHR0dXNiX2RlY19hdWRpb19wZXMydHNfY2IsIGRlYyk7CkBAIC05MDIsNyAmIzQzOzkxNSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2Uoc3RydWN0IHR0dXNiX2RlYyAqZGVjLAogCQkJYnJlYWs7CiAJCWNhc2UgVFRVU0JfREVDX0lOVEVSRkFDRV9JTjoKIAkJCXJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYiksCi0JCQkJCQkJYiwgTlVMTCwgTlVMTCk7CiYjNDM7CQkJCQkJCWIsIE5VTEwsIE5VTEwsIDApOwogCQkJaWYgKHJlc3VsdCkKIAkJCQlyZXR1cm4gcmVzdWx0OwogCQkJcmVzdWx0ID0gdXNiX3NldF9pbnRlcmZhY2UoZGVjLSZndDt1ZGV2LCAwLCA4KTsKQEAgLTEwMjEsNyAmIzQzOzEwMzQsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF90c19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZCkKIAogCX0KIAotCXJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7CiYjNDM7CXJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7CiAJaWYgKHJlc3VsdCkKIAkJcmV0dXJuIHJlc3VsdDsKIApAQCAtMTA1Niw3ICYjNDM7MTA2OSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0YXJ0X3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZCkKIAltZW1jcHkoJmFtcDtiMFs1XSwgJmFtcDtkdmJkbXhmZWVkLSZndDtmaWx0ZXItJmd0O2ZpbHRlci5maWx0ZXJfdmFsdWVbMF0sIDEpOwogCiAJcmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NjAsIHNpemVvZihiMCksIGIwLAotCQkJCQkmYW1wO2NfbGVuZ3RoLCBjKTsKJiM0MzsJCQkJCSZhbXA7Y19sZW5ndGgsIGMsIHNpemVvZihjKSk7CiAKIAlpZiAoIXJlc3VsdCkgewogCQlpZiAoY19sZW5ndGggPT0gMikgewpAQCAtMTExNCw3ICYjNDM7MTEyNyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3BfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpCiAJc3RydWN0IHR0dXNiX2RlYyAqZGVjID0gZHZiZG14ZmVlZC0mZ3Q7ZGVtdXgtJmd0O3ByaXY7CiAJdTggYjBbXSA9IHsgMHgwMCB9OwogCi0JdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTsKJiM0MzsJdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMLCAwKTsKIAogCWRlYy0mZ3Q7cHZhX3N0cmVhbV9jb3VudC0tOwogCkBAIC0xMTM1LDcgJiM0MzsxMTQ4LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfc3RvcF9zZWNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpCiAJbGlzdF9kZWwoJmFtcDtmaW5mby0mZ3Q7ZmlsdGVyX2luZm9fbGlzdCk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2RlYy0mZ3Q7ZmlsdGVyX2luZm9fbGlzdF9sb2NrLCBmbGFncyk7CiAJa2ZyZWUoZmluZm8pOwotCXR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7CiYjNDM7CXR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7CiAKIAlkZWMtJmd0O2ZpbHRlcl9zdHJlYW1fY291bnQtLTsKIApAQCAtMTIzOCw3ICYjNDM7MTI1MSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfaW5pdF9yYyggc3RydWN0IHR0dXNiX2RlYyAqZGVjKQogCWlmICh1c2Jfc3VibWl0X3VyYihkZWMtJmd0O2lycV91cmIsIEdGUF9LRVJORUwpKQogCQlwcmludGsoJiMzNDslczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkXG4mIzM0OyxfX2Z1bmNfXyk7CiAJLyogZW5hYmxlIGlycSBwaXBlICovCi0JdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsMHhiMCxzaXplb2YoYiksYixOVUxMLE5VTEwpOwomIzQzOwl0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHhiMCwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTM1NCw3ICYjNDM7MTM2Nyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX2Jvb3RfZHNwKHN0cnVjdCB0dHVzYl9kZWMgKmRlYykKIAlmaXJtd2FyZV9jc3VtX25zID0gaHRvbnMoZmlybXdhcmVfY3N1bSk7CiAJbWVtY3B5KCZhbXA7YjBbNl0sICZhbXA7ZmlybXdhcmVfY3N1bV9ucywgMik7CiAKLQlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpOwomIzQzOwlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApOwogCiAJaWYgKHJlc3VsdCkgewogCQlyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTsKQEAgLTEzOTUsNyAmIzQzOzE0MDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19ib290X2RzcChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMpCiAJCX0KIAl9CiAKLQlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwpOwomIzQzOwlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwsIDApOwogCiAJcmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSk7CiAJa2ZyZWUoYik7CkBAIC0xNjIxLDEwICYjNDM7MTYzNCwxNCBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfZXhpdF9maWx0ZXJzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYykKIAogc3RhdGljIGludCBmZV9zZW5kX2NvbW1hbmQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGNvbnN0IHU4IGNvbW1hbmQsCiAJCQkgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSwKLQkJCSAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKQomIzQzOwkJCSAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLAomIzQzOwkJCSAgIGludCBjbWRfcmVzdWx0X2xlbikKIHsKIAlzdHJ1Y3QgdHR1c2JfZGVjKiBkZWMgPSBmZS0mZ3Q7ZHZiLSZndDtwcml2OwotCXJldHVybiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgY29tbWFuZCwgcGFyYW1fbGVuZ3RoLCBwYXJhbXMsIHJlc3VsdF9sZW5ndGgsIGNtZF9yZXN1bHQpOwomIzQzOwomIzQzOwlyZXR1cm4gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIGNvbW1hbmQsIHBhcmFtX2xlbmd0aCwgcGFyYW1zLAomIzQzOwkJCQkgICAgICByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0LAomIzQzOwkJCQkgICAgICBjbWRfcmVzdWx0X2xlbik7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMKaW5kZXggMjE1MjIxMzcwYzE5My4uYjAxM2Q2ZGZjYmVlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jCkBAIC00NCw3ICYjNDM7NDQsOCBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKIAogCSpzdGF0dXM9MDsKIAotCXJldD1zdGF0ZS0mZ3Q7Y29uZmlnLSZndDtzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgJmFtcDtsZW4sIHJlc3VsdCk7CiYjNDM7CXJldCA9IHN0YXRlLSZndDtjb25maWctJmd0O3NlbmRfY29tbWFuZChmZSwgMHg3Mywgc2l6ZW9mKGIpLCBiLCAmYW1wO2xlbiwgcmVzdWx0LAomIzQzOwkJCQkJICBzaXplb2YocmVzdWx0KSk7CiAJaWYocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC04NSw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiAKIAlfX2JlMzIgZnJlcSA9IGh0b25sKHAtJmd0O2ZyZXF1ZW5jeSAvIDEwMDApOwogCW1lbWNweSgmYW1wO2JbNF0sICZhbXA7ZnJlcSwgc2l6ZW9mICh1MzIpKTsKLQlzdGF0ZS0mZ3Q7Y29uZmlnLSZndDtzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7CiYjNDM7CXN0YXRlLSZndDtjb25maWctJmd0O3NlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTMwLDcgJiM0MzsxMzEsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiAJbG5iX3ZvbHRhZ2UgPSBodG9ubChzdGF0ZS0mZ3Q7dm9sdGFnZSk7CiAJbWVtY3B5KCZhbXA7YlsyOF0sICZhbXA7bG5iX3ZvbHRhZ2UsIHNpemVvZih1MzIpKTsKIAotCXN0YXRlLSZndDtjb25maWctJmd0O3NlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMKTsKJiM0MzsJc3RhdGUtJmd0O2NvbmZpZy0mZ3Q7c2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNDksNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJzX2Rpc2VxY19zZW5kX21hc3Rlcl9jbWQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjCiAKIAlzdGF0ZS0mZ3Q7Y29uZmlnLSZndDtzZW5kX2NvbW1hbmQoZmUsIDB4NzIsCiAJCQkJICAgIHNpemVvZihiKSAtICg2IC0gY21kLSZndDttc2dfbGVuKSwgYiwKLQkJCQkgICAgTlVMTCwgTlVMTCk7CiYjNDM7CQkJCSAgICBOVUxMLCBOVUxMLCAwKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaCBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmgKaW5kZXggNzM4MjhiYjIyNThjOS4uOTY2MDBhZDRjMjM2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oCkBAIC0xNCw3ICYjNDM7MTQsOCBAQCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcKIHsKIAlpbnQgKCpzZW5kX2NvbW1hbmQpKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBjb25zdCB1OCBjb21tYW5kLAogCQkJICAgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLAotCQkJICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTsKJiM0MzsJCQkgICAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10sCiYjNDM7CQkJICAgIGludCBjbWRfcmVzdWx0X2xlbik7CiB9OwogCiBleHRlcm4gc3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIERyaXZlciBQYXRjaCBmb3IgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY2AgYW5kIGBkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgdGhleSYjMzk7dmUgYWRkZWQgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciB0byBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYW5kIGBmZV9zZW5kX2NvbW1hbmRgLiBUaGUgZ29hbCBpcyBjbGVhcmx5IHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cyBkdXJpbmcgVVNCIGNvbW1hbmQgcmVzdWx0IGNvcHlpbmcuIFRoZSBjb2RlIGluY2x1ZGVzIGEgY2hlY2s6IGBpZiAoY21kX3Jlc3VsdCAmYW1wOyZhbXA7IHJsZW4gJmd0OyBjbWRfcmVzdWx0X2xlbikgcmxlbiA9IGNtZF9yZXN1bHRfbGVuO2AgYmVmb3JlIHRoZSBgbWVtY3B5YC4gU21hcnQuIFByZXZlbnRpbmcgdGhhdCBraW5kIG9mIG92ZXJmbG93IGlzIGFsd2F5cyBnb29kLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIFVTQiBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGV4cGxvaXRhYmlsaXR5IGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gQ2FuIHRoaXMgZHJpdmVyIGJlIHJlYWNoZWQgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBvciBgcmF3LWdhZGdldGAgd2l0aCBTeXprYWxsZXI/IFN5emthbGxlciYjMzk7cyBnb3QgdGhvc2UgYHN5el91c2JfY29ubmVjdGAgY2FsbHMgYW5kIG90aGVycyB3aGljaCBhcmUgcHJldHR5IGVmZmVjdGl2ZSBmb3IgVVNCIGRyaXZlciBmdXp6aW5nLiBHb29kLiBCdXQgd2FpdOKApiBpcyB0aGlzIGV2ZW4gYSAqbWVkaWEqIGRyaXZlcj8gWWVzLCB0aGUgcGF0aCBjb25maXJtcyBpdC4gSSBzaG91bGQgaGF2ZSBzZWVuIHRoYXQgaW1tZWRpYXRlbHkuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uLiBJcyBgdHR1c2ItZGVjYCBlbmFibGVkIGluIGNvbW1vbiBrZXJuZWxzLCBvciBkb2VzIGl0IG5lZWQgc3BlY2lhbCBjb25maWd1cmF0aW9uIHRvIGJlIHVzZWQ/IFRpbWUgdG8gcHVsbCB1cCBgZ3JlcHBlcmAgYW5kIGh1bnQgZG93biB0aGUgS2NvbmZpZyBlbnRyaWVzIGZvciBgdHR1c2ItZGVjYCB0byBkZXRlcm1pbmUgaG93IHJlYWNoYWJsZSBpdCBpcyB3aXRoaW4gdmFyaW91cyBzdGFuZGFyZCBjb25maWd1cmF0aW9ucy4gR290dGEgc2VlIGhvdyBicm9hZGx5IHRoaXMgcHJvdGVjdGlvbiBhcHBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R0dXNiLWRlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi9LY29uZmlnPTUwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1idWRnZXQvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZzo1MTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdXNiL0tjb25maWctNTItXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvTWFrZWZpbGU9MTM9b2JqLXkgJiM0Mzs9IHR0dXNiLWJ1ZGdldC9cbmRyaXZlcnMvbWVkaWEvdXNiL01ha2VmaWxlOjE0Om9iai15ICYjNDM7PSB0dHVzYi1kZWMvXG5kcml2ZXJzL21lZGlhL3VzYi9NYWtlZmlsZS0xNS1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTY1MT1zdGF0aWMgaW50IHR0dXNiX2RlY19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTcwNy1cdGlmIChkZWMtXHUwMDNlZmUgPT0gTlVMTCkge1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3MDg6XHRcdHByaW50ayhcJiMzNDtkdmItdHR1c2ItZGVjOiBBIGZyb250ZW5kIGRyaXZlciB3YXMgbm90IGZvdW5kIGZvciBkZXZpY2UgWyUwNHg6JTA0eF1cXG5cJiMzNDssXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTcwOS1cdFx0ICAgICAgIGxlMTZfdG9fY3B1KGRlYy1cdTAwM2V1ZGV2LVx1MDAzZWRlc2NyaXB0b3IuaWRWZW5kb3IpLFxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzU5PXN0YXRpYyB2b2lkIHR0dXNiX2RlY19zZXRfbW9kZWwoc3RydWN0IHR0dXNiX2RlYyAqZGVjLFxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzY2LVx0XHRkZWMtXHUwMDNlbW9kZWxfbmFtZSA9IFwmIzM0O0RFQzIwMDAtdFwmIzM0OztcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzY3Olx0XHRkZWMtXHUwMDNlZmlybXdhcmVfbmFtZSA9IFwmIzM0O2R2Yi10dHVzYi1kZWMtMjAwMHQuZndcJiMzNDs7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc2OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTE3NzEtXHRcdGRlYy1cdTAwM2Vtb2RlbF9uYW1lID0gXCYjMzQ7REVDMjU0MC10XCYjMzQ7O1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3NzI6XHRcdGRlYy1cdTAwM2VmaXJtd2FyZV9uYW1lID0gXCYjMzQ7ZHZiLXR0dXNiLWRlYy0yNTQwdC5md1wmIzM0OztcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzczLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc3Ni1cdFx0ZGVjLVx1MDAzZW1vZGVsX25hbWUgPSBcJiMzNDtERUMzMDAwLXNcJiMzNDs7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MTc3NzpcdFx0ZGVjLVx1MDAzZWZpcm13YXJlX25hbWUgPSBcJiMzNDtkdmItdHR1c2ItZGVjLTMwMDBzLmZ3XCYjMzQ7O1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTE3NzgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzkwPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3OTE6XHQubmFtZVx0XHQ9IFwmIzM0O3R0dXNiLWRlY1wmIzM0OyxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkyLVx0LnByb2JlXHRcdD0gdHR1c2JfZGVjX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIHR0dXNiLWRlYyoqCgpBbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgdHR1c2ItZGVjYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYnVpbGQuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5IHRvIHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGlzIGZpbGU6IGBkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvS2NvbmZpZ2AuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIHRoaXMgZHJpdmVyIHRvIGV2ZW4gYmUgY29uc2lkZXJlZD8gQXJlIHRoZXJlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywga2VybmVsIGZlYXR1cmUgZGVwZW5kZW5jaWVzLCBvciBvdGhlciBkcml2ZXJzIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZT8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dC4KKiAgICoqT3B0aW9uczoqKiBXaGF0IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgcmVsYXRlZCB0byB0aGlzIGRyaXZlcj8gQXJlIHRoZXJlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZywgc3BlY2lmaWMgaGFyZHdhcmUgdmFyaWFudHMsIGZpcm13YXJlIHNlbGVjdGlvbiwgb3IgZGlmZmVyZW50IGxldmVscyBvZiBmdW5jdGlvbmFsaXR5PyBJJiMzOTtsbCB3YW50IHRvIGdyYXNwIHRoZSBtZWFuaW5nIG9mIGVhY2ggb3B0aW9uLgoqICAgKipEZWZhdWx0IFZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBhdmFpbGFibGUgb3B0aW9ucz8gS25vd2luZyB0aGlzIGlzIGltcG9ydGFudC4gSXQgcmV2ZWFscyBob3cgdGhlIGRyaXZlciB3aWxsIGJlaGF2ZSAmIzM0O291dCBvZiB0aGUgYm94JiMzNDsgYW5kIGlkZW50aWZpZXMgcG90ZW50aWFsIGFyZWFzIGZvciBjdXN0b21pemF0aW9uLgoqICAgKipIZWxwIFRleHQ6KiogVGhlIG1vc3QgaW1wb3J0YW50IHBhcnQhIFRoZSBgaGVscGAgdGV4dCB3aWxsIGdpdmUgbWUgdGhlIG1vc3QgY3JpdGljYWwgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBlYWNoIG9wdGlvbiBkb2VzLiBUaGUgdGV4dCBwcm92aWRlcyB0aGUgcmF0aW9uYWxlIGZvciB0aGUgb3B0aW9uLCBhbmQgaG93IHRvIGNvbmZpZ3VyZSBvciBzZWxlY3QgaXQuCiogICAqKlJlbGF0aW9uc2hpcHM6KiogSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gSG93IGRvIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBgdHR1c2ItZGVjYCByZWxhdGUgdG8gb3RoZXIgbWVkaWEtcmVsYXRlZCBjb25maWd1cmF0aW9ucz8gQXJlIHRoZXJlIGNvbmZsaWN0cywgb3IgcGVyaGFwcyBzeW5lcmdpZXMsIHdpdGggb3RoZXIgVVNCIG9yIERWQi1yZWxhdGVkIGRyaXZlcnM/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KKiAgICoqUG9zc2libGUgQ29tcGlsZSBUaW1lIENoYW5nZXM6KiogSSB3aWxsIGFsc28gd2FudCB0byBpbnZlc3RpZ2F0ZSBhbnkgY29tcGlsZSB0aW1lIG9wdGlvbnMsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRoYXQgYWZmZWN0IHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS4KCkVzc2VudGlhbGx5LCBJJiMzOTttIHNldHRpbmcgbXlzZWxmIHVwIHRvIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgYHR0dXNiLWRlY2AgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIGFuZCBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGlzIGtub3dsZWRnZSBpcyBjcnVjaWFsIGZvciB0cm91Ymxlc2hvb3RpbmcsIG9wdGltaXppbmcsIG9yIHBvdGVudGlhbGx5IGN1c3RvbWl6aW5nIHRoaXMgZHJpdmVyIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVudmlyb25tZW50LiBJIG5lZWQgdG8gYmUgYWJsZSB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBpdHMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBEVkJfVFRVU0JfREVDXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtUZWNobm90cmVuZC9IYXVwcGF1Z2UgVVNCIERFQyBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIERWQl9DT1JFIFx1MDAyNlx1MDAyNiBVU0IgXHUwMDI2XHUwMDI2IElOUFVUIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBDUkMzMlxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBTdXBwb3J0IGZvciBleHRlcm5hbCBVU0IgYWRhcHRlcnMgZGVzaWduZWQgYnkgVGVjaG5vdHJlbmQgYW5kXG4gICA4Olx0XHQgIHByb2R1Y2VkIGJ5IEhhdXBwYXVnZSwgc2hpcHBlZCB1bmRlciB0aGUgYnJhbmQgbmFtZSAmIzM5O0RFQzIwMDAtdCYjMzk7XG4gICA5Olx0XHQgIGFuZCAmIzM5O0RFQzMwMDAtcyYjMzk7LlxuICAxMDpcdFxuICAxMTpcdFx0ICBFdmVuIGlmIHRoZXNlIGRldmljZXMgaGF2ZSBhIE1QRUcgZGVjb2RlciBidWlsdCBpbiwgdGhleSB0cmFuc21pdFxuICAxMjpcdFx0ICBvbmx5IGNvbXByZXNzZWQgTVBFRyBkYXRhIG92ZXIgdGhlIFVTQiBidXMsIHNvIHlvdSBuZWVkXG4gIDEzOlx0XHQgIGFuIGV4dGVybmFsIHNvZnR3YXJlIGRlY29kZXIgdG8gd2F0Y2ggVFYgb24geW91ciBjb21wdXRlci5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVGhpcyBkcml2ZXIgbmVlZHMgZXh0ZXJuYWwgZmlybXdhcmUuIFBsZWFzZSB1c2UgdGhlIGNvbW1hbmRzXG4gIDE2Olx0XHQgIFwmIzM0O1x1MDAzY2tlcm5lbGRpclx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMjAwMHRcJiMzNDssXG4gIDE3Olx0XHQgIFwmIzM0O1x1MDAzY2tlcm5lbGRpclx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMjU0MHRcJiMzNDssXG4gIDE4Olx0XHQgIFwmIzM0O1x1MDAzY2tlcm5lbGRpclx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMzAwMHNcJiMzNDssXG4gIDE5Olx0XHQgIGRvd25sb2FkL2V4dHJhY3QgdGhlbSwgYW5kIHRoZW4gY29weSB0aGVtIHRvIC91c3IvbGliL2hvdHBsdWcvZmlybXdhcmVcbiAgMjA6XHRcdCAgb3IgL2xpYi9maXJtd2FyZSAoZGVwZW5kaW5nIG9uIGNvbmZpZ3VyYXRpb24gb2YgZmlybXdhcmUgaG90cGx1ZykuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFNheSBZIGlmIHlvdSBvd24gc3VjaCBhIGRldmljZSBhbmQgd2FudCB0byB1c2UgaXQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIERWQiBEcml2ZXIqKgoKT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gaXMgYERWQl9UVFVTQl9ERUNgLCBhbmQgaXQgcmVsaWVzIG9uIGBEVkJfQ09SRWAsIGBVU0JgLCBgSU5QVVRgLCBhbmQgYFBDSWAuIFNpbmNlIHRoaXMgaXMgYSBVU0IgZHJpdmVyLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByaW1lIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyByb3V0ZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZmZlciBvdmVyZmxvdyB3aXRoaW4gdGhlIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgdnVsbmVyYWJpbGl0eSBhcmlzZXMgd2hlbiB0aGUgcmVjZWl2ZWQgYGFjdHVhbF9sZW5gIGlzIGF0IGxlYXN0IDQgYnl0ZXMsIGFuZCBgYlszXWAgKGludGVycHJldGVkIGFzIGBybGVuYCkgZXhjZWVkcyB0aGUgZXhwZWN0ZWQgYGNtZF9yZXN1bHRfbGVuYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVhbCBwb2ludCBvZiBpbnRlcmVzdCwgYW5kICpkZWZpbml0ZWx5KiB3b3J0aCBwdXR0aW5nIHRocm91Z2ggaXRzIHBhY2VzIHdpdGggZnV6emluZy4KCk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZToKCiogICBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgKHN0YXRpYykKKiAgIGB0dHVzYl9kZWNfZ2V0X3N0Yl9zdGF0ZWAgKHN0YXRpYykKKiAgIGB0dHVzYl9kZWNfc2V0X3BpZHNgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2VgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3N0YXJ0X3RzX2ZlZWRgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3N0YXJ0X3NlY19mZWVkYCAoc3RhdGljKQoqICAgYHR0dXNiX2RlY19zdG9wX3RzX2ZlZWRgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3N0b3Bfc2VjX2ZlZWRgIChzdGF0aWMpCiogICBgdHR1c2JfaW5pdF9yY2AgKHN0YXRpYykKKiAgIGB0dHVzYl9kZWNfYm9vdF9kc3BgIChzdGF0aWMpCiogICBgZmVfc2VuZF9jb21tYW5kYCAoc3RhdGljKQoqICAgYHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1c2AgKHN0YXRpYykKKiAgIGB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kYCAoc3RhdGljKQoqICAgYHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmRgIChzdGF0aWMpCiogICBgdHR1c2JkZWNmZV9kdmJzX2Rpc2VxY19zZW5kX21hc3Rlcl9jbWRgIChzdGF0aWMpCgpIbW0sIGludGVyZXN0aW5nLiBUaGV5JiMzOTtyZSBhbGwgc3RhdGljIGZ1bmN0aW9ucy4gV2hpY2ggbWVhbnMsIHRvIGdldCBhdCB0aGVtIHdpdGggZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBvdGhlciBmdW5jdGlvbnMgaW4gYHR0dXNiX2RlYy5jYCBhbmQgYHR0dXNiZGVjZmUuY2AgdGhhdCAqY2FsbCogdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBmdXp6aW5nIGxldmVyYWdlIGxpZXMuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgdG8gdGhlc2UgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMuKiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0zMDI9c3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0zMTQtXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MzE1OnN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMzE2LVx0XHRcdFx0ICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM5CgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIE5vbi1TdGF0aWMgRnVuY3Rpb25zIGluIGB0dHVzYmRlY2ZlLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBtZWF0eSBiaXRzIHdpdGhpbiBgdHR1c2JkZWNmZS5jYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBXaHk/IEJlY2F1c2UgdGhvc2UgYXJlIHRoZSBvbmVzIGxpa2VseSB0byBiZSBleHBvc2VkIHRvIHRoZSBvdXRzaWRlIHdvcmxkLCB0aGUgaW50ZXJmYWNlIHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBlaXRoZXIgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBvciBhcmUgaW50ZW5kZWQgdG8gYmUgY2FsbGFibGUgZXh0ZXJuYWxseS4gU3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IHRoZWlyIG5hdHVyZSwgbG9jYWwgdG8gdGhlIGZpbGUsIGFuZCB3aGlsZSB0aGV5IG1pZ2h0IGJlIHJlbGV2YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcm5hbCB3b3JraW5ncywgdGhleSYjMzk7cmUgbm90IHRoZSBwcmltYXJ5IGZvY3VzICpyaWdodCBub3cqLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcG9pbnRzIG9mIGludGVyYWN0aW9uLCB0aGUgQVBJIHN1cmZhY2UsIHNvIHRvIHNwZWFrLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGluLWRlcHRoIGFuYWx5c2lzIG9mIHRoaXMgbW9kdWxlJiMzOTtzIGZ1bmN0aW9uYWxpdHkgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb21wb25lbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBtYXAgb2YgdGhlIGtleSBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0cnVjdCBkdmJfZnJvbnRlbmRcXCogdHR1c2JkZWNmZV9kdmIuKl9hdHRhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzO1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0xOTYtXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjE5NzpzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0xOTgte1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9MjE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnNfb3BzO1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yMTYtXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjIxNzpzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yMTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzA5CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYHR0dXNiX2RlY19wcm9iZWAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgdHR1c2JfZGVjX3Byb2JlYC4gSSYjMzk7bSBzdGFydGluZyBoZXJlIGJlY2F1c2UgSSBrbm93IHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gd2hlbiB0aGUga2VybmVsIGRldGVjdHMgYSBkZXZpY2UgY29tcGF0aWJsZSB3aXRoIHRoZSBkcml2ZXJzIGluIHRoaXMgbW9kdWxlLCBJIHdpbGwgd2FudCB0byBzZWUgd2hhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzZXMgb2NjdXIuIEkga25vdyBmcm9tIHBhc3QgZXhwZXJpZW5jZSB0aGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcHJvYmluZyBhIFRUVVNCIGRldmljZSwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgcHJvYmUgZW50YWlscy4gSSYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGUgc3RhbmRhcmQgc3R1ZmYgZmlyc3Q6IHJlc291cmNlIGFsbG9jYXRpb24sIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIHJlZ2lzdHJhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBVU0IgZGVzY3JpcHRvciBwYXJzaW5nIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmcgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zIOKAkyBhcmUgdGhleSB1c2luZyBgZGV2X2VycmAgYXBwcm9wcmlhdGVseT8gQXJlIHRoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIGhhcmR3YXJlIGFjY2Vzcz8gQW5kLCBmaW5hbGx5LCBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBhbnkgZGV2aWNlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcyBpbiB0aGlzIGZ1bmN0aW9uLCBiZWNhdXNlIHRob3NlIGFyZSBvZnRlbiB0aGUgbW9zdCBpbnRlcmVzdGluZyBhbmQgY2FuIGluZGljYXRlIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBvciBkZXNpZ24gY2hhbGxlbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgdHR1c2JfZGVjX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNjUwLVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE2NTE6c3RhdGljIGludCB0dHVzYl9kZWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTY1Mi1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIGB0dHVzYl9kZWNgIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKClJpZ2h0LCBgdHR1c2JfZGVjX3Byb2JlYCDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gQXMgdGhlIG1haW4gcHJvYmUgZnVuY3Rpb24sIGl0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgVVNCIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCYjMzk7cyBkb2luZywgYW5kIGdpdmVuIHRoYXQgdGhpcyBpcyBhIERWQiBkcml2ZXIsIEkgc2hvdWxkIGFudGljaXBhdGUgaXQgZGVhbGluZyB3aXRoIHRoZSBEVkIgZnJvbnRlbmQuIFNvLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZyb20gaGVyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIERWQiBmcm9udGVuZCBvcGVyYXRpb24gcmVnaXN0cmF0aW9ucy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBoYXBwZW5zLCB3aGVyZSBpdCBkZWZpbmVzIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB0dW5lciBhbmQgZGVtb2R1bGF0b3IuIExldCYjMzk7cyBzZWUgd2hhdCBob29rcyBpdCBoYXMgaW50byB0aGUgRFZCIGluZnJhc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTc5MD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdHR1c2JfZGVjX2RyaXZlciA9IHtcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkxLVx0Lm5hbWVcdFx0PSBcJiMzNDt0dHVzYi1kZWNcJiMzNDssXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MTc5MjpcdC5wcm9iZVx0XHQ9IHR0dXNiX2RlY19wcm9iZSxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkzLVx0LmRpc2Nvbm5lY3RcdD0gdHR1c2JfZGVjX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTY2CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgYHR0dXNiX2RlY2AgRHJpdmVyIFN0cnVjdHVyZSoqCgpIbW0sIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBCdXQgd2FpdCwgaXQmIzM5O3MgYmVpbmcgcmVnaXN0ZXJlZCwgcmlnaHQ/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgaW4gYHR0dXNiX2RlY19kcml2ZXJgLiBPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBTbywgaXQmIzM5O3MgYSBwcml2YXRlIHByb2JlIGZ1bmN0aW9uLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyBpbiBgdHR1c2JfZGVjLmNgIHRoYXQgYXJlbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHZpc2liaWxpdHkgYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBvZiB0aGlzIGRyaXZlciBhIGJpdCBiZXR0ZXIuIFRoaXMgY291bGQgYmUgYSBnb29kIGluZGljYXRvciBvZiBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbS4gTGV0IG1lIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ2NwoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipSZWZpbmluZyB0aGUgQXBwcm9hY2g6IEEgTmV3IFJlZ2V4IFN0cmF0ZWd5KioKClJpZ2h0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCByZWFzc2Vzcy4gVGhlIHByZXZpb3VzIHJlZ2V4IHdhc24mIzM5O3QgcXVpdGUgaGl0dGluZyB0aGUgbWFyazsgaXQmIzM5O3MgdGltZSB0byByZWZpbmUgdGhpcy4gSSBuZWVkIHRvIHJldGhpbmsgdGhlIGNvcmUgY29tcG9uZW50cyBvZiB0aGUgcGF0dGVybi4gVGhlIGZ1bmRhbWVudGFsIGlzc3VlIHNlZW1zIHRvIGJlIGluIHRoZS4uLiAoZmlsbCBpbiB0aGUgYmxhbmsgd2l0aCB0aGUgYXJlYSB0aGV5IGFyZSBsaWtlbHkgc3RydWdnbGluZyB3aXRoIGluIHRoZSBwcm9ibGVtIHRoZXkgYXJlIHNvbHZpbmcpLiBTbyBpbnN0ZWFkIG9mLi4uIChkZXNjcmliZSB0aGUgcHJldmlvdXMgYXBwcm9hY2ggdGhhdCB3YXMgcHJvYmxlbWF0aWMpLCBJIHNob3VsZCB0cnkgc29tZXRoaW5nIHRoYXQgZm9jdXNlcyBvbi4uLiAoZGVzY3JpYmUgdGhlIGFzcGVjdHMgb2YgYSBuZXcgYXBwcm9hY2gpLiBUaGUgY3J1Y2lhbCB0aGluZyBpcyB0byBlbnN1cmUgdGhpcyBpdGVyYXRpb24gaXMuLi4gKGhpZ2hsaWdodCBrZXkgY3JpdGVyaWEpLiBJJiMzOTttIHRoaW5raW5nIG9mIGluY29ycG9yYXRpbmcuLi4gKGRlc2NyaWJlIHRlY2huaWNhbCBlbGVtZW50cyBvZiB0aGUgcmVnZXggZS5nLiBsb29rYWhlYWRzLCBhbmNob3JzLCBxdWFudGlmaWVycykgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4gTWF5YmUgSSBzaG91bGQgYWxzbyBjb25zaWRlciBob3cgdGhpcyBtYXkgcGVyZm9ybSB3aXRoLi4uIChjb25zaWRlciBlZGdlIGNhc2VzLCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIG90aGVyIGlucHV0cyBldGMpLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoaXMgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCwgYW5kIGl0ZXJhdGUsIHVzaW5nIG15IGV4aXN0aW5nIGtub3dsZWRnZSBvZiByZWdleCBudWFuY2VzLiBIb3BlZnVsbHksIHRoaXMgcmV2aXNlZCBhcHByb2FjaCB3aWxsIGdldCB0byB0aGUgcmVzdWx0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKj8gW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODEwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIFJpZ2h0IGludG8gdGhlIEluaXQqKgoKQWxyaWdodCwgbm8gbmVlZCBmb3IgcHJlYW1ibGUsIGxldCYjMzk7cyBjdXQgdG8gdGhlIGNoYXNlLiBXaGVuIEkmIzM5O20gZGlzc2VjdGluZyBhIGRyaXZlciBsaWtlIGB0dHVzYl9kZWMuY2AsIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBhbHdheXMgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRm9yZ2V0IHRoZSBleHRyYW5lb3VzIGNvZGUgZm9yIGEgbW9tZW50OyB0aGUgYG1vZHVsZV9pbml0YCBtYWNybyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCYjMzk7cyB0aGUgbGF1bmNocGFkLCB0aGUgZW50cnkgcG9pbnQuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgdGhpbmcgY29tZXMgdG8gbGlmZTogd2hhdCByZXNvdXJjZXMgaXQgcmVxdWVzdHMsIHdoYXQgaGFyZHdhcmUgaXQgcHJvYmVzLCBhbmQgaG93IGl0IGhvb2tzIGl0c2VsZiBpbnRvIHRoZSBrZXJuZWwmIzM5O3Mgc3Vic3lzdGVtcy4gU28sIHllYWgsIHNraXBwaW5nIHJpZ2h0IHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGBtb2R1bGVfaW5pdGAgY2FsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzgwOlx0fVxuMTc4MTpcdFxuMTc4MjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCB0dHVzYl9kZWNfdGFibGVbXSA9IHtcbjE3ODM6XHRcdHtVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA2KX0sXHQvKiBERUMzMDAwLXMgKi9cbjE3ODQ6XHRcdC8qe1VTQl9ERVZJQ0UoMHgwYjQ4LCAweDEwMDcpfSxcdCAgIFVuY29uZmlybWVkICovXG4xNzg1Olx0XHR7VVNCX0RFVklDRSgweDBiNDgsIDB4MTAwOCl9LFx0LyogREVDMjAwMC10ICovXG4xNzg2Olx0XHR7VVNCX0RFVklDRSgweDBiNDgsIDB4MTAwOSl9LFx0LyogREVDMjU0MC10ICovXG4xNzg3Olx0XHR7fVxuMTc4ODpcdH07XG4xNzg5Olx0XG4xNzkwOlx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHR0dXNiX2RlY19kcml2ZXIgPSB7XG4xNzkxOlx0XHQubmFtZVx0XHQ9IFwmIzM0O3R0dXNiLWRlY1wmIzM0OyxcbjE3OTI6XHRcdC5wcm9iZVx0XHQ9IHR0dXNiX2RlY19wcm9iZSxcbjE3OTM6XHRcdC5kaXNjb25uZWN0XHQ9IHR0dXNiX2RlY19kaXNjb25uZWN0LFxuMTc5NDpcdFx0LmlkX3RhYmxlXHQ9IHR0dXNiX2RlY190YWJsZSxcbjE3OTU6XHR9O1xuMTc5NjpcdFxuMTc5NzpcdG1vZHVsZV91c2JfZHJpdmVyKHR0dXNiX2RlY19kcml2ZXIpO1xuMTc5ODpcdFxuMTc5OTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7QWxleCBXb29kcyBcdTAwM2NsaW51eC1kdmJAZ2libGV0cy5vcmdcdTAwM2VcJiMzNDspO1xuMTgwMDpcdE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfTkFNRSk7XG4xODAxOlx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbjE4MDI6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgdHR1c2JfZGVjX3RhYmxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NzMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgRGVjb2RlciBNb2R1bGUgZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdHR1c2JfZGVjYCBtb2R1bGUsIGFuZCB0aGUgb2J2aW91cyBlbnRyeSBwb2ludHMgZm9yIGludGVyYWN0aW9uIHNlZW0gdG8gYmUgYHR0dXNiX2RlY19wcm9iZWAgYW5kIGB0dHVzYl9kZWNfZGlzY29ubmVjdGAuIFRoZXkmIzM5O3JlICpzdGF0aWMqLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgbWVhbnMgdGhleSB3b24mIzM5O3QgYmUgZXhwb3J0ZWQgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLiBCdXQsIGFuZCB0aGlzIGlzIGtleSwgc3l6a2FsbGVyICpjYW4qIHN0aWxsIHRhcmdldCB0aGVtIHVzaW5nIFVTQiBwc2V1ZG8tc3lzY2FsbHMsIHJpZ2h0PwoKV2FpdCBhIHNlY29uZCwgbGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFnYWluLi4uIGFoLCB0aGUgcHJvbXB0IGlzIHZlcnkgY2xlYXI6IGl0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkLCBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvbiYjMzk7dCBnZXQgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU28sIGB0dHVzYl9kZWNfcHJvYmVgICppcyogc3RhdGljLi4uIGlzIHRoZXJlIGEgcmlzayBvZiBpdCBiZWluZyBpbmxpbmVkPyBIbW1tLCBubywgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciBjYW4mIzM5O3QgaW5saW5lIGl0LiBCdXQgc3RpbGwsIGl0JiMzOTtzIHN0YXRpYy4KClRoZSBuZXh0IHRob3VnaHQgaXMgY2xlYXIgLSBhcmUgdGhlcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGU/IEkgbmVlZCB0byBjaGVjayB0aGUgc291cmNlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgdHR1c2JkZWNmZS5jYCwgdGhlIGZpbGUgbWlnaHQgY29udGFpbiBzb21ldGhpbmcgdGhhdCBmaXRzIHRoZSBiaWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE5MDpcdHtcbiAxOTE6XHRcdHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlICpzdGF0ZSA9IGZlLVx1MDAzZWRlbW9kdWxhdG9yX3ByaXY7XG4gMTkyOlx0XHRrZnJlZShzdGF0ZSk7XG4gMTkzOlx0fVxuIDE5NDpcdFxuIDE5NTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzO1xuIDE5NjpcdFxuIDE5NzpcdHN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZidF9hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXG4gMTk4Olx0e1xuIDE5OTpcdFx0c3RydWN0IHR0dXNiZGVjZmVfc3RhdGUqIHN0YXRlID0gTlVMTDtcbiAyMDA6XHRcbiAyMDE6XHRcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGludGVybmFsIHN0YXRlICovXG4gMjAyOlx0XHRzdGF0ZSA9IGttYWxsb2Nfb2JqKHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKTtcbiAyMDM6XHRcdGlmIChzdGF0ZSA9PSBOVUxMKVxuIDIwNDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAyMDU6XHRcbiAyMDY6XHRcdC8qIHNldHVwIHRoZSBzdGF0ZSAqL1xuIDIwNzpcdFx0c3RhdGUtXHUwMDNlY29uZmlnID0gY29uZmlnO1xuIDIwODpcdFxuIDIwOTpcdFx0LyogY3JlYXRlIGR2Yl9mcm9udGVuZCAqL1xuIDIxMDpcdFx0bWVtY3B5KFx1MDAyNnN0YXRlLVx1MDAzZWZyb250ZW5kLm9wcywgXHUwMDI2dHR1c2JkZWNmZV9kdmJ0X29wcywgc2l6ZW9mKHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzKSk7XG4gMjExOlx0XHRzdGF0ZS1cdTAwM2Vmcm9udGVuZC5kZW1vZHVsYXRvcl9wcml2ID0gc3RhdGU7XG4gMjEyOlx0XHRyZXR1cm4gXHUwMDI2c3RhdGUtXHUwMDNlZnJvbnRlbmQ7XG4gMjEzOlx0fVxuIDIxNDpcdFxuIDIxNTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnNfb3BzO1xuIDIxNjpcdFxuIDIxNzpcdHN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZic19hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXG4gMjE4Olx0e1xuIDIxOTpcdFx0c3RydWN0IHR0dXNiZGVjZmVfc3RhdGUqIHN0YXRlID0gTlVMTDtcbiAyMjA6XHRcbiAyMjE6XHRcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGludGVybmFsIHN0YXRlICovXG4gMjIyOlx0XHRzdGF0ZSA9IGttYWxsb2Nfb2JqKHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKTtcbiAyMjM6XHRcdGlmIChzdGF0ZSA9PSBOVUxMKVxuIDIyNDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAyMjU6XHRcbiAyMjY6XHRcdC8qIHNldHVwIHRoZSBzdGF0ZSAqL1xuIDIyNzpcdFx0c3RhdGUtXHUwMDNlY29uZmlnID0gY29uZmlnO1xuIDIyODpcdFx0c3RhdGUtXHUwMDNldm9sdGFnZSA9IDA7XG4gMjI5Olx0XHRzdGF0ZS1cdTAwM2VoaV9iYW5kID0gMDtcbiAyMzA6XHRcbiAyMzE6XHRcdC8qIGNyZWF0ZSBkdmJfZnJvbnRlbmQgKi9cbiAyMzI6XHRcdG1lbWNweShcdTAwMjZzdGF0ZS1cdTAwM2Vmcm9udGVuZC5vcHMsIFx1MDAyNnR0dXNiZGVjZmVfZHZic19vcHMsIHNpemVvZihzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcykpO1xuIDIzMzpcdFx0c3RhdGUtXHUwMDNlZnJvbnRlbmQuZGVtb2R1bGF0b3JfcHJpdiA9IHN0YXRlO1xuIDIzNDpcdFx0cmV0dXJuIFx1MDAyNnN0YXRlLVx1MDAzZWZyb250ZW5kO1xuIDIzNTpcdH1cbiAyMzY6XHRcbiAyMzc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJ0X29wcyA9IHtcbiAyMzg6XHRcdC5kZWxzeXMgPSB7IFNZU19EVkJUIH0sXG4gMjM5Olx0XHQuaW5mbyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3MTUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqRXhhbWluaW5nIHRoZSBEcml2ZXIgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBUaXRhblRWIFVTQiBkcml2ZXIgZnVuY3Rpb25zLiBJdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgIGFyZSAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IG11c3QgYmUgZXhwb3J0ZWQsIGxpa2VseSBmb3IgbW9kdWxlIGxvYWRpbmcgb3IgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZW4gdGhlcmUmIzM5O3MgYHR0dXNiX2RlY19wcm9iZWAuIEkgKnRoaW5rKiBJIHJlY2FsbCB0aGF0IG9uZSBpcyBzdGF0aWMsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRoZSBjb3JlIHByb2JlIGZ1bmN0aW9uLCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIFVTQiBkcml2ZXIuIEdpdmVuIGl0cyBjZW50cmFsIHJvbGUgaW4gaW5pdGlhbGl6YXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gaW5jbHVkZSBpdCBpbiBteSB1bmRlcnN0YW5kaW5nLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgYW5kLCBwcmVzdW1hYmx5LCBub3QgZGlyZWN0bHkgZXhwb3NlZCBleHRlcm5hbGx5LiBIYW5nIG9uLi4uIGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCAqaXMqIGV4cG9ydGVkPyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gR290dGEgZG91YmxlLWNoZWNrIHRoZSBtb2R1bGUgZXhwb3J0IHRhYmxlIG9yIHRoZSBzeW1ib2wgZGVmaW5pdGlvbnMgdG8gYmUgc3VyZSwgYnV0IHRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9Mjg3PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jLTI4OC1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM6Mjg5OkVYUE9SVF9TWU1CT0wodHR1c2JkZWNmZV9kdmJ0X2F0dGFjaCk7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjI5MDpFWFBPUlRfU1lNQk9MKHR0dXNiZGVjZmVfZHZic19hdHRhY2gpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzIwOAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBTZWxlY3Rpb24gb2YgUmVsZXZhbnQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGJlc3QgcmVwcmVzZW50IHRoaXMgZml4IGZvciB0aGUgVVNCIGRyaXZlci4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgY2hhbmdlcyAqYXJlKiBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZC4gSSBuZWVkIHRvIHNlbGVjdCB0aGUgbW9zdCByZWxldmFudCBmdW5jdGlvbnMgZm9yIHRoaXMgZXhwbGFuYXRpb24uCgpJbml0aWFsbHksIEkmIzM5O2QgdGhvdWdodCBhYm91dCBpbmNsdWRpbmcgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgc2luY2UgdGhleSBhcmUgdGhlIGF0dGFjaCBmdW5jdGlvbnMuIEFuZCBvZiBjb3Vyc2UsIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGEgY2xlYXIgY2FuZGlkYXRlOyBpdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIFVTQiBkcml2ZXIsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgeW91IHdhbnQgdG8gc3RhcnQuCgpOb3csIGhvbGQgb24uLi4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgLi4uICp0aGF0JiMzOTtzKiB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgYWN0dWFsbHkgbW9kaWZpZWQuIEl0JiMzOTtzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBhIGJpdCBvZiBhIHdyaW5rbGUsIGJ1dCBpdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIGZpeCwgcmlnaHQ/IEl0JiMzOTtzIGNhbGxlZCBieSBhIGxvdCBvZiBvdGhlciBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgZG9lcyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucywgc28gbWF5YmUgYHR0dXNiX2RlY19wcm9iZWAgaXMgYSBiZXR0ZXIgcmVwcmVzZW50YXRpb24uCgpCdXQgd2FpdCBhIG1pbnV0ZSwgYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGlzICpkaXJlY3RseSogY2FsbGVkIGJ5IGB0dHVzYl9kZWNfcHJvYmVgIOKAkyBhbmQgb3RoZXIgZnVuY3Rpb25zIGluIHRoYXQgY2hhaW46IGB0dHVzYl9kZWNfYm9vdF9kc3BgLCBgdHR1c2JfaW5pdF9yY2AsIGV0Yy4gLSAqYW5kKiBmcm9tIERWQiBmcm9udGVuZCBvcGVyYXRpb25zIHZpYSBgZmVfc2VuZF9jb21tYW5kYC4gVGhlIERWQiBmcm9udGVuZCBvcHMgdGhlbXNlbHZlcyBhcmUgcmVnaXN0ZXJlZCBpbiBgdHR1c2JkZWNmZV9kdmJ0X29wc2AgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfb3BzYC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hhdCB0aGUgRFZCIGZyb250ZW5kIG9wcyBhcmUgYWN0dWFsbHkgZG9pbmcuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGNhbGwgcGF0aHMgdG8gY29uc2lkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjM3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIHR0dXNiZGVjZmVfZHZidF9vcHMgPSB7XG4gMjM4Olx0XHQuZGVsc3lzID0geyBTWVNfRFZCVCB9LFxuIDIzOTpcdFx0LmluZm8gPSB7XG4gMjQwOlx0XHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtUZWNobm9UcmVuZC9IYXVwcGF1Z2UgREVDMjAwMC10IEZyb250ZW5kXCYjMzQ7LFxuIDI0MTpcdFx0XHQuZnJlcXVlbmN5X21pbl9oelx0PSAgNTEgKiBNSHosXG4gMjQyOlx0XHRcdC5mcmVxdWVuY3lfbWF4X2h6XHQ9IDg1OCAqIE1IeixcbiAyNDM6XHRcdFx0LmZyZXF1ZW5jeV9zdGVwc2l6ZV9oelx0PSA2MjUwMCxcbiAyNDQ6XHRcdFx0LmNhcHMgPVx0RkVfQ0FOX0ZFQ18xXzIgfCBGRV9DQU5fRkVDXzJfMyB8IEZFX0NBTl9GRUNfM180IHxcbiAyNDU6XHRcdFx0XHRGRV9DQU5fRkVDXzVfNiB8IEZFX0NBTl9GRUNfN184IHwgRkVfQ0FOX0ZFQ19BVVRPIHxcbiAyNDY6XHRcdFx0XHRGRV9DQU5fUUFNXzE2IHwgRkVfQ0FOX1FBTV82NCB8IEZFX0NBTl9RQU1fQVVUTyB8XG4gMjQ3Olx0XHRcdFx0RkVfQ0FOX1RSQU5TTUlTU0lPTl9NT0RFX0FVVE8gfCBGRV9DQU5fR1VBUkRfSU5URVJWQUxfQVVUTyB8XG4gMjQ4Olx0XHRcdFx0RkVfQ0FOX0hJRVJBUkNIWV9BVVRPLFxuIDI0OTpcdFx0fSxcbiAyNTA6XHRcbiAyNTE6XHRcdC5yZWxlYXNlID0gdHR1c2JkZWNmZV9yZWxlYXNlLFxuIDI1MjpcdFxuIDI1MzpcdFx0LnNldF9mcm9udGVuZCA9IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQsXG4gMjU0Olx0XG4gMjU1Olx0XHQuZ2V0X3R1bmVfc2V0dGluZ3MgPSB0dHVzYmRlY2ZlX2R2YnRfZ2V0X3R1bmVfc2V0dGluZ3MsXG4gMjU2Olx0XG4gMjU3Olx0XHQucmVhZF9zdGF0dXMgPSB0dHVzYmRlY2ZlX2R2YnRfcmVhZF9zdGF0dXMsXG4gMjU4Olx0fTtcbiAyNTk6XHRcbiAyNjA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJzX29wcyA9IHtcbiAyNjE6XHRcdC5kZWxzeXMgPSB7IFNZU19EVkJTIH0sXG4gMjYyOlx0XHQuaW5mbyA9IHtcbiAyNjM6XHRcdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1RlY2hub1RyZW5kL0hhdXBwYXVnZSBERUMzMDAwLXMgRnJvbnRlbmRcJiMzNDssXG4gMjY0Olx0XHRcdC5mcmVxdWVuY3lfbWluX2h6XHQ9ICA5NTAgKiBNSHosXG4gMjY1Olx0XHRcdC5mcmVxdWVuY3lfbWF4X2h6XHQ9IDIxNTAgKiBNSHosXG4gMjY2Olx0XHRcdC5mcmVxdWVuY3lfc3RlcHNpemVfaHpcdD0gIDEyNSAqIGtIeixcbiAyNjc6XHRcdFx0LnN5bWJvbF9yYXRlX21pbiAgICAgICAgPSAxMDAwMDAwLCAgLyogZ3Vlc3NlZCAqL1xuIDI2ODpcdFx0XHQuc3ltYm9sX3JhdGVfbWF4ICAgICAgICA9IDQ1MDAwMDAwLCAvKiBndWVzc2VkICovXG4gMjY5Olx0XHRcdC5jYXBzID1cdEZFX0NBTl9GRUNfMV8yIHwgRkVfQ0FOX0ZFQ18yXzMgfCBGRV9DQU5fRkVDXzNfNCB8XG4gMjcwOlx0XHRcdFx0RkVfQ0FOX0ZFQ181XzYgfCBGRV9DQU5fRkVDXzdfOCB8IEZFX0NBTl9GRUNfQVVUTyB8XG4gMjcxOlx0XHRcdFx0RkVfQ0FOX1FQU0tcbiAyNzI6XHRcdH0sXG4gMjczOlx0XG4gMjc0Olx0XHQucmVsZWFzZSA9IHR0dXNiZGVjZmVfcmVsZWFzZSxcbiAyNzU6XHRcbiAyNzY6XHRcdC5zZXRfZnJvbnRlbmQgPSB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kLFxuIDI3NzpcdFxuIDI3ODpcdFx0LnJlYWRfc3RhdHVzID0gdHR1c2JkZWNmZV9kdmJzX3JlYWRfc3RhdHVzLFxuIDI3OTpcdFxuIDI4MDpcdFx0LmRpc2VxY19zZW5kX21hc3Rlcl9jbWQgPSB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZCxcbiAyODE6XHRcdC5zZXRfdm9sdGFnZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdm9sdGFnZSxcbiAyODI6XHRcdC5zZXRfdG9uZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdG9uZSxcbiAyODM6XHR9O1xuIDI4NDpcdFxuIDI4NTpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtUVFVTQiBERUMgRFZCLVQvUyBEZW1vZHVsYXRvciBkcml2ZXJcJiMzNDspO1xuIDI4NjpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7QWxleCBXb29kcy9BbmRyZXcgZGUgUXVpbmNleVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODg1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBtb2RpZmljYXRpb25zIHRvIGB0dHVzYmRlY2ZlLmNgLiBJIHNlZSB0aGV5JiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgZnJvbnRlbmQgY29udHJvbCBmdW5jdGlvbnM6IGB0dHVzYmRlY2ZlX2R2YnRfcmVhZF9zdGF0dXNgLCBgdHR1c2JkZWNmZV9kdmJ0X3NldF9mcm9udGVuZGAsIGB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kYCwgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZGAuIFRoZXkgYXJlIGFsbCBzdGF0aWMsIHdoaWNoIGlzIHR5cGljYWwgZm9yIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIGEgZHJpdmVyLCBidXQgdGhleSBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBgZHZiX2Zyb250ZW5kX29wc2Agc3RydWN0dXJlLiBUaGlzIG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgc3RhbmRhcmQgd2F5IHRvIGV4cG9zZSB0aGVzZSBmcm9udGVuZCBvcGVyYXRpb25zIHRvIHRoZSBEVkIgY29yZS4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBpbmNsdWRlIGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCwgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgLCBhbmQgYHR0dXNiX2RlY19wcm9iZWAgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlLgoKTm93LCBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgY2VudHJhbCBjb25maWcgaGVyZSBpcyBgRFZCX1RUVVNCX0RFQ2AuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBEVkJfQ09SRWAsIGBVU0JgLCBgSU5QVVRgLCBhbmQgYFBDSWAuIEhhbmcgb24gYSBzZWNvbmQuLi4gYFBDSWA/IFRoaXMgaXMgYSBVU0IgZHJpdmVyOyB3aHkgdGhlIFBDSSBkZXBlbmRlbmN5PyBJdCBkb2VzbiYjMzk7dCBxdWl0ZSBhZGQgdXAuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdgIHRvIHNlZSBpZiB0aGF0IHNoZWRzIGFueSBsaWdodCBvbiB0aGlzLiBJdCBzZWVtcyBsaWtlIHNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQsIGFuZCB0aGUgS2NvbmZpZyBtaWdodCBjbGFyaWZ5IHdoeSB0aGUgZGVwZW5kZW5jeSBleGlzdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRFZCX1RUVVNCX0RFQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGVjaG5vdHJlbmQvSGF1cHBhdWdlIFVTQiBERUMgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBEVkJfQ09SRSBcdTAwMjZcdTAwMjYgVVNCIFx1MDAyNlx1MDAyNiBJTlBVVCBcdTAwMjZcdTAwMjYgUENJXG4gICA1Olx0XHRzZWxlY3QgQ1JDMzJcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgU3VwcG9ydCBmb3IgZXh0ZXJuYWwgVVNCIGFkYXB0ZXJzIGRlc2lnbmVkIGJ5IFRlY2hub3RyZW5kIGFuZFxuICAgODpcdFx0ICBwcm9kdWNlZCBieSBIYXVwcGF1Z2UsIHNoaXBwZWQgdW5kZXIgdGhlIGJyYW5kIG5hbWUgJiMzOTtERUMyMDAwLXQmIzM5O1xuICAgOTpcdFx0ICBhbmQgJiMzOTtERUMzMDAwLXMmIzM5Oy5cbiAgMTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2MTcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciB0aGUgRFZCLVQvUyBVU0IgUmVjZWl2ZXIgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHNlZWluZyBpcyB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gVGhpcyBmaXggcmVsaWVzIG9uIGBEVkJfQ09SRSAmYW1wOyZhbXA7IFVTQiAmYW1wOyZhbXA7IElOUFVUICZhbXA7JmFtcDsgUENJYC4gUmlnaHQsIHNvIEkgbmVlZCB0byBiZSBzdXJlIGBEVkJfVFRVU0JfREVDYCwgYERWQl9DT1JFYCwgYFVTQmAsIGBJTlBVVGAsIGFuZCBgUENJYCBhcmUgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4gSSYjMzk7bSBmYWlybHkgY2VydGFpbiBgUENJYCwgYFVTQmAsIGFuZCBgSU5QVVRgIGFyZSBzdGFuZGFyZCwgYnV0IGBEVkJfQ09SRWAgaXMgdGhlIG9uZSB0byBkb3VibGUtY2hlY2suIEFuZCBvYnZpb3VzbHksIGBEVkJfVFRVU0JfREVDYCBpcyB0aGUgcHJpbWFyeSB0YXJnZXQuCgpOb3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBvbmVzIHRvIGNhbGwgb3V0IGhlcmU/IGB0dHVzYl9kZWNfcHJvYmVgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGRyaXZlci4gVGhlbiB0aGVyZSBhcmUgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgd2hpY2ggYXJlIGFsc28gY3JpdGljYWwuIExldCYjMzk7cyBzZWUuLi4gdGhlIHByb21wdCB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuLi4gaG1tLCBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgd2FzIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBhY3R1YWxseSBtb2RpZmllZCwgYnV0IGl0JiMzOTtzICpzdGF0aWMqLiBJdCYjMzk7cyBub3QgYSBzbWFsbCBoZWxwZXIgdGhvdWdoLCBtaWdodCBub3QgYmUgaW5saW5lZC4uLiBCdXQgSSAqa25vdyogYHR0dXNiX2RlY19wcm9iZWAgY2FuJiMzOTt0IGJlIGlubGluZWQgYmVjYXVzZSBpdCYjMzk7cyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBTbyBJJiMzOTtsbCBsaXN0IGB0dHVzYl9kZWNfcHJvYmVgLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAsIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAuCgpPa2F5LCBsZXQmIzM5O3MgcmVjYXAgbXkgcmVhc29uaW5nLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgYnVmZmVyIG92ZXJmbG93IGluIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYC4gSXQgYWRkcyBhIGBjbWRfcmVzdWx0X2xlbmAgY2hlY2sgYmVmb3JlIGNvcHlpbmcgdGhlIFVTQiBjb21tYW5kIHJlc3VsdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gSSBjYW4gYWJzb2x1dGVseSBmdXp6IHRoaXMgd2l0aCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCksIHdoaWNoIGlzIHNvbWV0aGluZyBJIHdhbnQgdG8gZG8uIFNvIHRoZSBtYWluIGNvbmZpZ3MgSSBoYXZlIHRvIGhhdmUgaW4gcGxhY2UgYXJlIGBEVkJfVFRVU0JfREVDYCBhbmQsIGNyaXRpY2FsbHksIGl0cyBkZXBlbmRlbmN5LCBgRFZCX0NPUkVgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBEVkJfQ09SRWAgaXMgaW4gYGRyaXZlcnMvbWVkaWEvZHZiLWNvcmUvS2NvbmZpZ2AuIFJpZ2h0LCBnb29kLiBBbGwgc2VlbXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEVkJfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNzA9Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTgzLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjE4NDpjb25maWcgRFZCX0NPUkVcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xODUtXHR0cmlzdGF0ZSBcJiMzNDtEVkIgQ29yZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcwMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIExvY2F0aW9uIENoZWNrKioKCk9rYXksIHdhaXQgYSBzZWNvbmQuLi4gSSAqdGhvdWdodCogSSByZW1lbWJlcmVkIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgYERWQl9DT1JFYCByZWNlbnRseS4gV2hlcmUgd2FzIHRoYXQsIGFnYWluPyBBaCwgeWVzLCBpdCYjMzk7cyBjb21pbmcgYmFjayB0byBtZSDigJMgaXQmIzM5O3MgYWN0dWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gcmVtZW1iZXJpbmcgY29ycmVjdGx5LCBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0JiMzOTtzIGhhbmRsZWQuIEFscmlnaHQsIGxldCYjMzk7cyBvcGVuIHRoYXQgYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AgZmlsZSBhbmQgdGFrZSBhIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHQjIERWQiBDb3JlXG4gMTgxOlx0I1x0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcbiAxODI6XHQjXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIERWQl9DT1JFXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtEVkIgQ29yZVwmIzM0O1xuIDE4NjpcdFx0ZGVwZW5kcyBvbiBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcbiAxODc6XHRcdGRlcGVuZHMgb24gKEkyQyB8fCBJMkM9bilcbiAxODg6XHRcdGRlZmF1bHQgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUXG4gMTg5Olx0XHRzZWxlY3QgQ1JDMzJcbiAxOTA6XHRcdGhlbHBcbiAxOTE6XHRcdCAgRW5hYmxlcyB0aGUgRFZCIEFQSSwgdXNlZCBieSBEaWdpdGFsIFRWIGRldmljZXMuIFN1cHBvcnRzIHNldmVyYWxcbiAxOTI6XHRcdCAgc3RhbmRhcmRzLCBpbmNsdWRpbmcgRFZCLCBBVFNDLCBJU0RCIGFuZCBDTURCLlxuIDE5MzpcdFxuIDE5NDpcdGVuZG1lbnUgIyBNZWRpYSBjb3JlIHN1cHBvcnRcbiAxOTU6XHRcbiAxOTY6XHQjXG4gMTk3Olx0IyBFeHRyYSBwZXItbWVkaWEgQVBJIGNvcmUgZnVuY3Rpb25hbGl0eVxuIDE5ODpcdFxuIDE5OTpcdG1lbnUgXCYjMzQ7VmlkZW80TGludXggb3B0aW9uc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE3MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipEaWdnaW5nIGludG8gRGlnaXRhbCBUViBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgRFZCX0NPUkVgIGlzIHB1bGxpbmcgaW4gYSBkZXBlbmRlbmN5IG9uIGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGUgY29yZSBEVkIgZnVuY3Rpb25hbGl0eSBvYnZpb3VzbHkgcmVsaWVzIG9uIGhhdmluZyBzb21lIGJhc2ljIGRpZ2l0YWwgVFYgc3VwcG9ydCBlbmFibGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIHNwZWNpZmljcyBvZiBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYCBqdXN0IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgZXZlcnl0aGluZyBjb3JyZWN0bHkuIExldCYjMzk7cyBnbyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoYXQgY29uZmlnIG9wdGlvbiBhY3R1YWxseSAqZG9lcyouIFRoZXJlJiMzOTtzIGxpa2VseSBzb21lIG51YW5jZSB0aGVyZSB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgYWJvdXQgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHdob2xlIHN1YnN5c3RlbS4gSXQmIzM5O3MgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz03Nj1jb25maWcgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctODktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6OTA6Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTkxLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ2NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1lZGlhIFN1YnN5c3RlbSBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIG1lZGlhIHN1YnN5c3RlbSwgYW5kIG15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBwbGFjZSB0byBzdGFydCBpcyB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYXJvdW5kIGxpbmUgOTAuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgbW9yZSBjb3JlIG9yIGZ1bmRhbWVudGFsIG9wdGlvbnMgYXJlIGRlZmluZWQuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgZ3V0cyBvZiB0aGUgY29uZmlndXJhdGlvbiBjaG9pY2VzIGFyZSBsaWtlbHkgdG8gYmUgZm91bmQuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGF0IGFyZWEgdG8gc2VlIHdoYXQgY2F0Y2hlcyBteSBleWUgb3IgdHJpZ2dlcnMgYSBzcGVjaWZpYyBtZW1vcnkgcmVsYXRlZCB0byB0aGUgcHJvYmxlbSBJIGFtIHdvcmtpbmcgb24uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9ucyBJIGNhbiB1bmNvdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODU6XHRcbiAgODY6XHRcdCAgTm90ZTogVGhlcmUgYXJlIHNldmVyYWwgRFZCIGNhcmRzIHRoYXQgYXJlIGJhc2VkIG9uIGNoaXBzIHRoYXRcbiAgODc6XHRcdFx0c3VwcG9ydCBib3RoIGFuYWxvZyBhbmQgZGlnaXRhbCBUVi4gRGlzYWJsaW5nIHRoaXMgb3B0aW9uXG4gIDg4Olx0XHRcdHdpbGwgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGVtLlxuICA4OTpcdFxuICA5MDpcdGNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcbiAgOTE6XHRcdGJvb2xcbiAgOTI6XHRcdHByb21wdCBcJiMzNDtEaWdpdGFsIFRWXCYjMzQ7IGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDkzOlx0XHRkZWZhdWx0IHkgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDk0Olx0XHRoZWxwXG4gIDk1Olx0XHQgIEVuYWJsZSBkaWdpdGFsIFRWIHN1cHBvcnQuXG4gIDk2Olx0XG4gIDk3Olx0XHQgIFNheSBZIHdoZW4geW91IGhhdmUgYSBib2FyZCB3aXRoIGRpZ2l0YWwgc3VwcG9ydCBvciBhIGJvYXJkIHdpdGhcbiAgOTg6XHRcdCAgaHlicmlkIGRpZ2l0YWwgVFYgYW5kIGFuYWxvZyBUVi5cbiAgOTk6XHRcbiAxMDA6XHRjb25maWcgTUVESUFfUkFESU9fU1VQUE9SVFxuIDEwMTpcdFx0Ym9vbFxuIDEwMjpcdFx0cHJvbXB0IFwmIzM0O0FNL0ZNIHJhZGlvIHJlY2VpdmVycy90cmFuc21pdHRlcnNcJiMzNDsgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcbiAxMDM6XHRcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcbiAxMDQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MzMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZToKCioqQ2hlY2tpbmcgRGVwZW5kZW5jeSBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgc28gdGhlIHN5c3RlbSByZXF1aXJlcyBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYC4gR290IGl0LiBOb3csIGdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IG9mdGVuIG1lYW5zIHRoZXJlIGFyZSB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcywgc28gSSBzaG91bGQgc2VlIHdoYXQgYE1FRElBX1NVUFBPUlRgIGlzIGFsbCBhYm91dC4gVW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkgaGVyZS4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgYE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVGAgYnVpbGRzIHVwb24gb3IgbGV2ZXJhZ2VzIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgYE1FRElBX1NVUFBPUlRgLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGF0IGRlcGVuZGVuY3kgY2hhaW4gbG9va3MgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWc9MTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpbWVkaWEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjQtXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MjU6Y29uZmlnIE1FRElBX1NVUFBPUlRfRklMVEVSXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXHRib29sIFwmIzM0O0ZpbHRlciBtZWRpYSBkcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgdGhvdWdodHM6CgoqKkNvbmZpZ3VyaW5nIE1lZGlhIFN1cHBvcnQ6IEEgTWVudGFsIENoZWNrbGlzdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbjogYE1FRElBX1NVUFBPUlRgLiBUaGF0JiMzOTtzIHRoZSBiaWcgcGljdHVyZSwgdGhlIHVtYnJlbGxhIHVuZGVyIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSByZWxhdGVkIHRvIG1lZGlhIGZhbGxzLiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gZHJpbGwgZG93bi4KCkkmIzM5O2xsIG5lZWQgdG8gbGlzdCBvdXQgdGhlIGltcG9ydGFudCBtb2R1bGVzLiBUaGlua2luZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMsIGBNRURJQV9TVVBQT1JUYCBpcyBvYnZpb3VzbHkgdGhlIHByaW1hcnkgZW5hYmxlci4gVGhlbiwgSSYjMzk7bGwgbmVlZCBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYCwgYERWQl9DT1JFYCAoc2luY2Ugd2UmIzM5O3JlIHByb2JhYmx5IGRlYWxpbmcgd2l0aCBkaWdpdGFsIHRlbGV2aXNpb24gc3R1ZmYpLCBhbmQgYERWQl9UVFVTQl9ERUNgLiBUaG9zZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBJJiMzOTtkIHR5cGljYWxseSBjb25zaWRlciBmb3IgRFZCIHN1cHBvcnQuCgpIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEkmIzM5O20gZm9yZ2V0dGluZyBzb21ldGhpbmcgY3J1Y2lhbC4gVVNCIG1lZGlhIGRyaXZlcnMhIEl0JiMzOTtzIGxpa2VseSBgTUVESUFfVVNCX1NVUFBPUlRgIGlzIGFsc28gdHlwaWNhbGx5IG5lY2Vzc2FyeSwgZXNwZWNpYWxseSBmb3IgYW55dGhpbmcgY29ubmVjdGVkIHZpYSBVU0IuIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvbWVkaWEvdXNiL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGFueSBlc3NlbnRpYWwgZGVwZW5kZW5jaWVzLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRpZiBVU0IgXHUwMDI2XHUwMDI2IE1FRElBX1NVUFBPUlRcbiAgIDQ6XHRcbiAgIDU6XHRtZW51Y29uZmlnIE1FRElBX1VTQl9TVVBQT1JUXG4gICA2Olx0XHRib29sIFwmIzM0O01lZGlhIFVTQiBBZGFwdGVyc1wmIzM0O1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBFbmFibGUgbWVkaWEgZHJpdmVycyBmb3IgVVNCIGJ1cy5cbiAgIDk6XHRcdCAgSWYgeW91IGhhdmUgc3VjaCBkZXZpY2VzLCBzYXkgWS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBNRURJQV9VU0JfU1VQUE9SVFxuICAxMjpcdFxuICAxMzpcdGlmIE1FRElBX0NBTUVSQV9TVVBQT1JUXG4gIDE0Olx0XHRjb21tZW50IFwmIzM0O1dlYmNhbSBkZXZpY2VzXCYjMzQ7XG4gIDE1Olx0XG4gIDE2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWdcJiMzNDtcbiAgMTc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvcHdjL0tjb25maWdcJiMzNDtcbiAgMTg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvczIyNTUvS2NvbmZpZ1wmIzM0O1xuICAxOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL21lZGlhL3VzYi91c2J0di9LY29uZmlnXCYjMzQ7XG4gIDIwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3V2Yy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTAzCgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCLWJhc2VkIERpZ2l0YWwgVFYgVHVuZXIgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkcml2ZXIgd29ya3MgYXMgZXhwZWN0ZWQuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGVuYWJsaW5nIGBNRURJQV9VU0JfU1VQUE9SVGAgaXMgZGVmaW5pdGVseSBuZWNlc3NhcnkuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLCBpdCBhcHBlYXJzIEkgbmVlZCB0byBzZXQgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYCwgYE1FRElBX1VTQl9TVVBQT1JUYCwgYERWQl9DT1JFYCwgYW5kIGBEVkJfVFRVU0JfREVDYCB0byBiZSBzdXJlLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdtZW50IGNhbGwgb24gd2hhdCBJJiMzOTttIGluY2x1ZGluZy4gQSBxdWljayB2ZXJpZmljYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgaXMgbmVjZXNzYXJ5LiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZC4gYHR0dXNiX2RlY19wcm9iZWAgaXMgYWxzbyBzdGF0aWMuIFBlcmZlY3QuICBIb3dldmVyLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoYCBhcmUgKm5vdCogc3RhdGljLiBBbHJpZ2h0LiBJIHdpbGwgaW5jbHVkZSBgdHR1c2JfZGVjX3Byb2JlYCwgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgLCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSB3aWxsIHNjYW4gdGhlIGB0dHVzYl9kZWMuY2AgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgbWlnaHQgbmVlZCBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSpcXCo/IFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ0NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlF1aWNrIFNjYW4gZm9yIGBFWFBPUlRfU1lNQk9MYCBpbiBgdHR1c2JfZGVjLmNgKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcsIGluc3RlYWQgb2YgZ2V0dGluZyBib2dnZWQgZG93biBpbiBhIGRlZXAgZGl2ZSwgbGV0JiMzOTtzIGtlZXAgdGhpbmdzIGZvY3VzZWQgYW5kIGVmZmljaWVudC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdHlwaWNhbCBrZXJuZWwgbW9kdWxlIHN0cnVjdHVyZSBhbmQgc3ltYm9sIHZpc2liaWxpdHksIHRoZSBmaXJzdCB0aGluZyBJJiMzOTtkIGRvIGlzIGEgcXVpY2sgYGdyZXBgIGZvciBgRVhQT1JUX1NZTUJPTGAgd2l0aGluIGB0dHVzYl9kZWMuY2AuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIHNpZ25hbC4gSWYgSSBzZWUgdGhhdCBtYWNybywgaXQgZGlyZWN0bHkgdGVsbHMgbWUgd2hpY2ggc3ltYm9scyB0aGlzIG1vZHVsZSBpcyBleHBsaWNpdGx5IG1ha2luZyBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlcy4gVGhhdCYjMzk7bGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBhIHJvYWRtYXAgb2YgaXRzIHB1YmxpYyBpbnRlcmZhY2Ug4oCTIHRoZSBlbnRyeSBwb2ludHMgYW5kIGRhdGEgc3RydWN0dXJlcyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIGludGVyLW1vZHVsZSBpbnRlcmFjdGlvbnMsIG9yIGRlYnVnZ2luZywgb3Igd2hhdGV2ZXIgdGhlIGN1cnJlbnQgdGFzayBkZW1hbmRzLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIG11Y2ggZmFzdGVyIHRoYW4ganVzdCByZWFkaW5nIHRoZSBlbnRpcmUgc291cmNlIGNvZGUuIFNhdmVzIHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzE0CgkJCQkJCQlvdXRwdXQ6IDE4NAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGB0dHVzYl9kZWMuY2AgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgdHR1c2JfZGVjLmNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCB0aGlzIG1vZHVsZSBkb2VzbiYjMzk7dCBleHBvcnQgYW55IHN5bWJvbHMsIHdoaWNoIG1ha2VzIHNlbnNlOyBgdHR1c2JfZGVjX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LiBEaWdnaW5nIGludG8gdGhlIGNvcmUgb2YgdGhlIHBhdGNoLCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYWxsIGFib3V0IGFkZHJlc3NpbmcgYSBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAuIFRoZSBmaXggaW52b2x2ZXMgaW50cm9kdWNpbmcgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciB0byBjb250cm9sIHRoZSBjb3BpZWQgbGVuZ3RoLCBhbmQgY3J1Y2lhbGx5LCBkb2luZyBhIHByb3BlciBib3VuZHMgY2hlY2sgYmVmb3JlIHRoZSBjb3B5IGl0c2VsZi4gVGhpcyBpcyBnb29kOyBpdCYjMzk7cyBhIHNvbGlkLCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGlzIG1ha2VzIGl0IGFuIGlkZWFsIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCktub3dpbmcgd2hhdCBJIGtub3cgYWJvdXQgVVNCIGRyaXZlcnMgYW5kIHRlc3RpbmcsIHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgcmlwZSBmb3IgdGVzdGluZyB3aXRoIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YCBzZXR1cC4gVGhhdCB3aWxsIGJlIHRoZSBwcmltYXJ5IGF2ZW51ZSB0byBleHBsb3JlIHRoaXMgcG90ZW50aWFsIGZpeCBhbmQgZGV0ZXJtaW5lIGl0cyBlZmZlY3RpdmVuZXNzLgoKSSB3aWxsIGhhdmUgdG8gZW5zdXJlIHRoYXQgYWxsIHJlbGV2YW50IFVTQiBjb21tYW5kcyB3b3JrIHByb3Blcmx5IGFzIGEgc2Vjb25kYXJ5IHRhc2suCgpVbHRpbWF0ZWx5LCBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHNlZSBob3cgdGhlIGNoYW5nZSBpbXBhY3RzIHRoZSBzeXprYWxsZXIgd29ya2Zsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRURJQV9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9VU0JfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtEVkJfQ09SRSYjMzQ7LAogICAgJiMzNDtEVkJfVFRVU0JfREVDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHR1c2JfZGVjX3Byb2JlJiMzNDssCiAgICAmIzM0O3R0dXNiZGVjZmVfZHZidF9hdHRhY2gmIzM0OywKICAgICYjMzQ7dHR1c2JkZWNmZV9kdmJzX2F0dGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYnkgYWRkaW5nIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgYW5kIGNoZWNraW5nIHRoZSBsZW5ndGggYmVmb3JlIGNvcHlpbmcgdGhlIHJlc3VsdCBvZiBhIFVTQiBjb21tYW5kLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRURJQV9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9VU0JfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtEVkJfQ09SRSYjMzQ7LAogICAgJiMzNDtEVkJfVFRVU0JfREVDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHR1c2JfZGVjX3Byb2JlJiMzNDssCiAgICAmIzM0O3R0dXNiZGVjZmVfZHZidF9hdHRhY2gmIzM0OywKICAgICYjMzQ7dHR1c2JkZWNmZV9kdmJzX2F0dGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYnkgYWRkaW5nIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgYW5kIGNoZWNraW5nIHRoZSBsZW5ndGggYmVmb3JlIGNvcHlpbmcgdGhlIHJlc3VsdCBvZiBhIFVTQiBjb21tYW5kLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTQ6NDQuODAyOTczNTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE2MzA1OTQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUXCIsXG4gICAgXCJNRURJQV9VU0JfU1VQUE9SVFwiLFxuICAgIFwiRFZCX0NPUkVcIixcbiAgICBcIkRWQl9UVFVTQl9ERUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0dHVzYl9kZWNfcHJvYmVcIixcbiAgICBcInR0dXNiZGVjZmVfZHZidF9hdHRhY2hcIixcbiAgICBcInR0dXNiZGVjZmVfZHZic19hdHRhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYnkgYWRkaW5nIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgYW5kIGNoZWNraW5nIHRoZSBsZW5ndGggYmVmb3JlIGNvcHlpbmcgdGhlIHJlc3VsdCBvZiBhIFVTQiBjb21tYW5kLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU0OjQ0LjgwMjk3OTU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ2MzUyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NGZjNzdmMzMzZThmZTdhOGM2Y2E1Mjk4NTg1ODhiYjFmODgyN2Q1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMjE6NTQ6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXFxuaW5kZXggODI1YTM4NzU5ODlkMy4uNDFlOTUwMWNkNTYxNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcXG4rKysgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcXG5AQCAtMzE0LDcgKzMxNCw4IEBAIHN0YXRpYyB1MTYgY3JjMTYodTE2IGNyYywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gXFxuIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXFxuIFxcdFxcdFxcdFxcdCAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sXFxuLVxcdFxcdFxcdFxcdCAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10pXFxuK1xcdFxcdFxcdFxcdCAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10sXFxuK1xcdFxcdFxcdFxcdCAgaW50IGNtZF9yZXN1bHRfbGVuKVxcbiB7XFxuIFxcdGludCByZXN1bHQsIGFjdHVhbF9sZW47XFxuIFxcdHU4ICpiO1xcbkBAIC0zNjEsMTUgKzM2MiwyNiBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLFxcbiBcXHRcXHQgICAgICAgX19mdW5jX18sIHJlc3VsdCk7XFxuIFxcdFxcdGdvdG8gZXJyX211dGV4X3VubG9jaztcXG4gXFx0fSBlbHNlIHtcXG4rXFx0XFx0aW50IHJsZW4gPSAwO1xcbitcXG4gXFx0XFx0aWYgKGRlYnVnKSB7XFxuIFxcdFxcdFxcdHByaW50ayhLRVJOX0RFQlVHIFxcXCIlczogcmVzdWx0OiAlKnBoXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRpZiAoYWN0dWFsX2xlbiBcXHUwMDNlPSA0KSB7XFxuK1xcdFxcdFxcdHJsZW4gPSBiWzNdO1xcbitcXHRcXHRcXHRpZiAocmxlbiBcXHUwMDNlIGFjdHVhbF9sZW4gLSA0KVxcbitcXHRcXHRcXHRcXHRybGVuID0gYWN0dWFsX2xlbiAtIDQ7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmIChjbWRfcmVzdWx0IFxcdTAwMjZcXHUwMDI2IHJsZW4gXFx1MDAzZSBjbWRfcmVzdWx0X2xlbilcXG4rXFx0XFx0XFx0cmxlbiA9IGNtZF9yZXN1bHRfbGVuO1xcbitcXG4gXFx0XFx0aWYgKHJlc3VsdF9sZW5ndGgpXFxuLVxcdFxcdFxcdCpyZXN1bHRfbGVuZ3RoID0gYlszXTtcXG4tXFx0XFx0aWYgKGNtZF9yZXN1bHQgXFx1MDAyNlxcdTAwMjYgYlszXSBcXHUwMDNlIDApXFxuLVxcdFxcdFxcdG1lbWNweShjbWRfcmVzdWx0LCBcXHUwMDI2Yls0XSwgYlszXSk7XFxuK1xcdFxcdFxcdCpyZXN1bHRfbGVuZ3RoID0gcmxlbjtcXG4rXFx0XFx0aWYgKGNtZF9yZXN1bHQgXFx1MDAyNlxcdTAwMjYgcmxlbiBcXHUwMDNlIDApXFxuK1xcdFxcdFxcdG1lbWNweShjbWRfcmVzdWx0LCBcXHUwMDI2Yls0XSwgcmxlbik7XFxuIFxcdH1cXG4gXFxuIGVycl9tdXRleF91bmxvY2s6XFxuQEAgLTM4OSw3ICs0MDEsOCBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19nZXRfc3RiX3N0YXRlIChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIHVuc2lnbmVkIGludCAqbW9kZSxcXG4gXFxuIFxcdGRwcmludGsoXFxcIiVzXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIFxcbi1cXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgXFx1MDAyNmNfbGVuZ3RoLCBjKTtcXG4rXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4MDgsIDAsIE5VTEwsIFxcdTAwMjZjX2xlbmd0aCwgYyxcXG4rXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKGMpKTtcXG4gXFx0aWYgKHJlc3VsdClcXG4gXFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4gXFxuQEAgLTQ0OCw3ICs0NjEsNyBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfc2V0X3BpZHMoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxcbiBcXHRtZW1jcHkoXFx1MDAyNmJbMl0sIFxcdTAwMjZhdWRpbywgMik7XFxuIFxcdG1lbWNweShcXHUwMDI2Yls0XSwgXFx1MDAyNnZpZGVvLCAyKTtcXG4gXFxuLVxcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDUwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwpO1xcbitcXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg1MCwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdGR2Yl9maWx0ZXJfcGVzMnRzX2luaXQoXFx1MDAyNmRlYy1cXHUwMDNlYV9wZXMydHMsIGRlYy1cXHUwMDNlcGlkW0RNWF9QRVNfQVVESU9dLFxcbiBcXHRcXHRcXHQgICAgICAgdHR1c2JfZGVjX2F1ZGlvX3BlczJ0c19jYiwgZGVjKTtcXG5AQCAtOTAyLDcgKzkxNSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2Uoc3RydWN0IHR0dXNiX2RlYyAqZGVjLFxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBUVFVTQl9ERUNfSU5URVJGQUNFX0lOOlxcbiBcXHRcXHRcXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MCwgc2l6ZW9mKGIpLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRiLCBOVUxMLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0YiwgTlVMTCwgTlVMTCwgMCk7XFxuIFxcdFxcdFxcdGlmIChyZXN1bHQpXFxuIFxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuIFxcdFxcdFxcdHJlc3VsdCA9IHVzYl9zZXRfaW50ZXJmYWNlKGRlYy1cXHUwMDNldWRldiwgMCwgOCk7XFxuQEAgLTEwMjEsNyArMTAzNCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0YXJ0X3RzX2ZlZWQoc3RydWN0IGR2Yl9kZW11eF9mZWVkICpkdmJkbXhmZWVkKVxcbiBcXG4gXFx0fVxcbiBcXG4tXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODAsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTtcXG4rXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODAsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFx0aWYgKHJlc3VsdClcXG4gXFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4gXFxuQEAgLTEwNTYsNyArMTA2OSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0YXJ0X3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcXG4gXFx0bWVtY3B5KFxcdTAwMjZiMFs1XSwgXFx1MDAyNmR2YmRteGZlZWQtXFx1MDAzZWZpbHRlci1cXHUwMDNlZmlsdGVyLmZpbHRlcl92YWx1ZVswXSwgMSk7XFxuIFxcbiBcXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2MCwgc2l6ZW9mKGIwKSwgYjAsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZjX2xlbmd0aCwgYyk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZjX2xlbmd0aCwgYywgc2l6ZW9mKGMpKTtcXG4gXFxuIFxcdGlmICghcmVzdWx0KSB7XFxuIFxcdFxcdGlmIChjX2xlbmd0aCA9PSAyKSB7XFxuQEAgLTExMTQsNyArMTEyNyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3BfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXFxuIFxcdHN0cnVjdCB0dHVzYl9kZWMgKmRlYyA9IGR2YmRteGZlZWQtXFx1MDAzZWRlbXV4LVxcdTAwM2Vwcml2O1xcbiBcXHR1OCBiMFtdID0geyAweDAwIH07XFxuIFxcbi1cXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xcbitcXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xcbiBcXG4gXFx0ZGVjLVxcdTAwM2VwdmFfc3RyZWFtX2NvdW50LS07XFxuIFxcbkBAIC0xMTM1LDcgKzExNDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdG9wX3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcXG4gXFx0bGlzdF9kZWwoXFx1MDAyNmZpbmZvLVxcdTAwM2VmaWx0ZXJfaW5mb19saXN0KTtcXG4gXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGVjLVxcdTAwM2VmaWx0ZXJfaW5mb19saXN0X2xvY2ssIGZsYWdzKTtcXG4gXFx0a2ZyZWUoZmluZm8pO1xcbi1cXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xcbitcXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xcbiBcXG4gXFx0ZGVjLVxcdTAwM2VmaWx0ZXJfc3RyZWFtX2NvdW50LS07XFxuIFxcbkBAIC0xMjM4LDcgKzEyNTEsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2luaXRfcmMoIHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcXG4gXFx0aWYgKHVzYl9zdWJtaXRfdXJiKGRlYy1cXHUwMDNlaXJxX3VyYiwgR0ZQX0tFUk5FTCkpXFxuIFxcdFxcdHByaW50ayhcXFwiJXM6IHVzYl9zdWJtaXRfdXJiIGZhaWxlZFxcXFxuXFxcIixfX2Z1bmNfXyk7XFxuIFxcdC8qIGVuYWJsZSBpcnEgcGlwZSAqL1xcbi1cXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywweGIwLHNpemVvZihiKSxiLE5VTEwsTlVMTCk7XFxuK1xcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweGIwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMTM1NCw3ICsxMzY3LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfYm9vdF9kc3Aoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxcbiBcXHRmaXJtd2FyZV9jc3VtX25zID0gaHRvbnMoZmlybXdhcmVfY3N1bSk7XFxuIFxcdG1lbWNweShcXHUwMDI2YjBbNl0sIFxcdTAwMjZmaXJtd2FyZV9jc3VtX25zLCAyKTtcXG4gXFxuLVxcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDQxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7XFxuK1xcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDQxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XFxuIFxcbiBcXHRpZiAocmVzdWx0KSB7XFxuIFxcdFxcdHJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpO1xcbkBAIC0xMzk1LDcgKzE0MDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19ib290X2RzcChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMpXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDMsIHNpemVvZihiMSksIGIxLCBOVUxMLCBOVUxMKTtcXG4rXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDMsIHNpemVvZihiMSksIGIxLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdHJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpO1xcbiBcXHRrZnJlZShiKTtcXG5AQCAtMTYyMSwxMCArMTYzNCwxNCBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfZXhpdF9maWx0ZXJzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcXG4gXFxuIHN0YXRpYyBpbnQgZmVfc2VuZF9jb21tYW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBjb25zdCB1OCBjb21tYW5kLFxcbiBcXHRcXHRcXHQgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcXG4tXFx0XFx0XFx0ICAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10pXFxuK1xcdFxcdFxcdCAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxcbitcXHRcXHRcXHQgICBpbnQgY21kX3Jlc3VsdF9sZW4pXFxuIHtcXG4gXFx0c3RydWN0IHR0dXNiX2RlYyogZGVjID0gZmUtXFx1MDAzZWR2Yi1cXHUwMDNlcHJpdjtcXG4tXFx0cmV0dXJuIHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCBjb21tYW5kLCBwYXJhbV9sZW5ndGgsIHBhcmFtcywgcmVzdWx0X2xlbmd0aCwgY21kX3Jlc3VsdCk7XFxuK1xcbitcXHRyZXR1cm4gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIGNvbW1hbmQsIHBhcmFtX2xlbmd0aCwgcGFyYW1zLFxcbitcXHRcXHRcXHRcXHQgICAgICByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0LFxcbitcXHRcXHRcXHRcXHQgICAgICBjbWRfcmVzdWx0X2xlbik7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xcbmluZGV4IDIxNTIyMTM3MGMxOTMuLmIwMTNkNmRmY2JlZTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xcbisrKyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNcXG5AQCAtNDQsNyArNDQsOCBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSxcXG4gXFxuIFxcdCpzdGF0dXM9MDtcXG4gXFxuLVxcdHJldD1zdGF0ZS1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXFx1MDAyNmxlbiwgcmVzdWx0KTtcXG4rXFx0cmV0ID0gc3RhdGUtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDczLCBzaXplb2YoYiksIGIsIFxcdTAwMjZsZW4sIHJlc3VsdCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBzaXplb2YocmVzdWx0KSk7XFxuIFxcdGlmKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTg1LDcgKzg2LDcgQEAgc3RhdGljIGludCB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxcbiBcXG4gXFx0X19iZTMyIGZyZXEgPSBodG9ubChwLVxcdTAwM2VmcmVxdWVuY3kgLyAxMDAwKTtcXG4gXFx0bWVtY3B5KFxcdTAwMjZiWzRdLCBcXHUwMDI2ZnJlcSwgc2l6ZW9mICh1MzIpKTtcXG4tXFx0c3RhdGUtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwpO1xcbitcXHRzdGF0ZS1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xMzAsNyArMTMxLDcgQEAgc3RhdGljIGludCB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxcbiBcXHRsbmJfdm9sdGFnZSA9IGh0b25sKHN0YXRlLVxcdTAwM2V2b2x0YWdlKTtcXG4gXFx0bWVtY3B5KFxcdTAwMjZiWzI4XSwgXFx1MDAyNmxuYl92b2x0YWdlLCBzaXplb2YodTMyKSk7XFxuIFxcbi1cXHRzdGF0ZS1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XFxuK1xcdHN0YXRlLVxcdTAwM2Vjb25maWctXFx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTE0OSw3ICsxNTAsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19kaXNlcWNfc2VuZF9tYXN0ZXJfY21kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBzdHJ1Y1xcbiBcXG4gXFx0c3RhdGUtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcyLFxcbiBcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKGIpIC0gKDYgLSBjbWQtXFx1MDAzZW1zZ19sZW4pLCBiLFxcbi1cXHRcXHRcXHRcXHQgICAgTlVMTCwgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgICBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmggYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXFxuaW5kZXggNzM4MjhiYjIyNThjOS4uOTY2MDBhZDRjMjM2ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXFxuKysrIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaFxcbkBAIC0xNCw3ICsxNCw4IEBAIHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZ1xcbiB7XFxuIFxcdGludCAoKnNlbmRfY29tbWFuZCkoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGNvbnN0IHU4IGNvbW1hbmQsXFxuIFxcdFxcdFxcdCAgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcXG4tXFx0XFx0XFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTtcXG4rXFx0XFx0XFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxcbitcXHRcXHRcXHQgICAgaW50IGNtZF9yZXN1bHRfbGVuKTtcXG4gfTtcXG4gXFxuIGV4dGVybiBzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTQ6NDUuMTg4Mzc1NTY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAxMjQ1MTg1Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIk1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfVVNCX1NVUFBPUlRcIixcbiAgICBcIkRWQl9DT1JFXCIsXG4gICAgXCJEVkJfVFRVU0JfREVDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR1c2JfZGVjX3Byb2JlXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NGZjNzdmMzMzZThmZTdhOGM2Y2E1Mjk4NTg1ODhiYjFmODgyN2Q1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMTo1NDo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1xuaW5kZXggODI1YTM4NzU5ODlkMy4uNDFlOTUwMWNkNTYxNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1xuKysrIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXG5AQCAtMzE0LDcgKzMxNCw4IEBAIHN0YXRpYyB1MTYgY3JjMTYodTE2IGNyYywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiBcbiBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLFxuIFx0XHRcdFx0ICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcbi1cdFx0XHRcdCAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10pXG4rXHRcdFx0XHQgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxuK1x0XHRcdFx0ICBpbnQgY21kX3Jlc3VsdF9sZW4pXG4ge1xuIFx0aW50IHJlc3VsdCwgYWN0dWFsX2xlbjtcbiBcdHU4ICpiO1xuQEAgLTM2MSwxNSArMzYyLDI2IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXG4gXHRcdCAgICAgICBfX2Z1bmNfXywgcmVzdWx0KTtcbiBcdFx0Z290byBlcnJfbXV0ZXhfdW5sb2NrO1xuIFx0fSBlbHNlIHtcbitcdFx0aW50IHJsZW4gPSAwO1xuK1xuIFx0XHRpZiAoZGVidWcpIHtcbiBcdFx0XHRwcmludGsoS0VSTl9ERUJVRyBcIiVzOiByZXN1bHQ6ICUqcGhcXG5cIixcbiBcdFx0XHQgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpO1xuIFx0XHR9XG4gXG4rXHRcdGlmIChhY3R1YWxfbGVuIFx1MDAzZT0gNCkge1xuK1x0XHRcdHJsZW4gPSBiWzNdO1xuK1x0XHRcdGlmIChybGVuIFx1MDAzZSBhY3R1YWxfbGVuIC0gNClcbitcdFx0XHRcdHJsZW4gPSBhY3R1YWxfbGVuIC0gNDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoY21kX3Jlc3VsdCBcdTAwMjZcdTAwMjYgcmxlbiBcdTAwM2UgY21kX3Jlc3VsdF9sZW4pXG4rXHRcdFx0cmxlbiA9IGNtZF9yZXN1bHRfbGVuO1xuK1xuIFx0XHRpZiAocmVzdWx0X2xlbmd0aClcbi1cdFx0XHQqcmVzdWx0X2xlbmd0aCA9IGJbM107XG4tXHRcdGlmIChjbWRfcmVzdWx0IFx1MDAyNlx1MDAyNiBiWzNdIFx1MDAzZSAwKVxuLVx0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBiWzNdKTtcbitcdFx0XHQqcmVzdWx0X2xlbmd0aCA9IHJsZW47XG4rXHRcdGlmIChjbWRfcmVzdWx0IFx1MDAyNlx1MDAyNiBybGVuIFx1MDAzZSAwKVxuK1x0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBybGVuKTtcbiBcdH1cbiBcbiBlcnJfbXV0ZXhfdW5sb2NrOlxuQEAgLTM4OSw3ICs0MDEsOCBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19nZXRfc3RiX3N0YXRlIChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIHVuc2lnbmVkIGludCAqbW9kZSxcbiBcbiBcdGRwcmludGsoXCIlc1xcblwiLCBfX2Z1bmNfXyk7XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgXHUwMDI2Y19sZW5ndGgsIGMpO1xuK1x0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4MDgsIDAsIE5VTEwsIFx1MDAyNmNfbGVuZ3RoLCBjLFxuK1x0XHRcdFx0XHRzaXplb2YoYykpO1xuIFx0aWYgKHJlc3VsdClcbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcbkBAIC00NDgsNyArNDYxLDcgQEAgc3RhdGljIHZvaWQgdHR1c2JfZGVjX3NldF9waWRzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdG1lbWNweShcdTAwMjZiWzJdLCBcdTAwMjZhdWRpbywgMik7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2dmlkZW8sIDIpO1xuIFxuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4rXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg1MCwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdGR2Yl9maWx0ZXJfcGVzMnRzX2luaXQoXHUwMDI2ZGVjLVx1MDAzZWFfcGVzMnRzLCBkZWMtXHUwMDNlcGlkW0RNWF9QRVNfQVVESU9dLFxuIFx0XHRcdCAgICAgICB0dHVzYl9kZWNfYXVkaW9fcGVzMnRzX2NiLCBkZWMpO1xuQEAgLTkwMiw3ICs5MTUsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zZXRfaW50ZXJmYWNlKHN0cnVjdCB0dHVzYl9kZWMgKmRlYyxcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBUVFVTQl9ERUNfSU5URVJGQUNFX0lOOlxuIFx0XHRcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYiksXG4tXHRcdFx0XHRcdFx0XHRiLCBOVUxMLCBOVUxMKTtcbitcdFx0XHRcdFx0XHRcdGIsIE5VTEwsIE5VTEwsIDApO1xuIFx0XHRcdGlmIChyZXN1bHQpXG4gXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0XHRcdHJlc3VsdCA9IHVzYl9zZXRfaW50ZXJmYWNlKGRlYy1cdTAwM2V1ZGV2LCAwLCA4KTtcbkBAIC0xMDIxLDcgKzEwMzQsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF90c19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcbiBcbiBcdH1cbiBcbi1cdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7XG4rXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MCwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xuIFx0aWYgKHJlc3VsdClcbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcbkBAIC0xMDU2LDcgKzEwNjksNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF9zZWNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXHRtZW1jcHkoXHUwMDI2YjBbNV0sIFx1MDAyNmR2YmRteGZlZWQtXHUwMDNlZmlsdGVyLVx1MDAzZWZpbHRlci5maWx0ZXJfdmFsdWVbMF0sIDEpO1xuIFxuIFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NjAsIHNpemVvZihiMCksIGIwLFxuLVx0XHRcdFx0XHRcdTAwMjZjX2xlbmd0aCwgYyk7XG4rXHRcdFx0XHRcdFx1MDAyNmNfbGVuZ3RoLCBjLCBzaXplb2YoYykpO1xuIFxuIFx0aWYgKCFyZXN1bHQpIHtcbiBcdFx0aWYgKGNfbGVuZ3RoID09IDIpIHtcbkBAIC0xMTE0LDcgKzExMjcsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdG9wX3RzX2ZlZWQoc3RydWN0IGR2Yl9kZW11eF9mZWVkICpkdmJkbXhmZWVkKVxuIFx0c3RydWN0IHR0dXNiX2RlYyAqZGVjID0gZHZiZG14ZmVlZC1cdTAwM2VkZW11eC1cdTAwM2Vwcml2O1xuIFx0dTggYjBbXSA9IHsgMHgwMCB9O1xuIFxuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTtcbitcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkZWMtXHUwMDNlcHZhX3N0cmVhbV9jb3VudC0tO1xuIFxuQEAgLTExMzUsNyArMTE0OCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3Bfc2VjX2ZlZWQoc3RydWN0IGR2Yl9kZW11eF9mZWVkICpkdmJkbXhmZWVkKVxuIFx0bGlzdF9kZWwoXHUwMDI2ZmluZm8tXHUwMDNlZmlsdGVyX2luZm9fbGlzdCk7XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRlYy1cdTAwM2VmaWx0ZXJfaW5mb19saXN0X2xvY2ssIGZsYWdzKTtcbiBcdGtmcmVlKGZpbmZvKTtcbi1cdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7XG4rXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0ZGVjLVx1MDAzZWZpbHRlcl9zdHJlYW1fY291bnQtLTtcbiBcbkBAIC0xMjM4LDcgKzEyNTEsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2luaXRfcmMoIHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdGlmICh1c2Jfc3VibWl0X3VyYihkZWMtXHUwMDNlaXJxX3VyYiwgR0ZQX0tFUk5FTCkpXG4gXHRcdHByaW50ayhcIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWRcXG5cIixfX2Z1bmNfXyk7XG4gXHQvKiBlbmFibGUgaXJxIHBpcGUgKi9cbi1cdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLDB4YjAsc2l6ZW9mKGIpLGIsTlVMTCxOVUxMKTtcbitcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweGIwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTEzNTQsNyArMTM2Nyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX2Jvb3RfZHNwKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdGZpcm13YXJlX2NzdW1fbnMgPSBodG9ucyhmaXJtd2FyZV9jc3VtKTtcbiBcdG1lbWNweShcdTAwMjZiMFs2XSwgXHUwMDI2ZmlybXdhcmVfY3N1bV9ucywgMik7XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuK1x0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdGlmIChyZXN1bHQpIHtcbiBcdFx0cmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSk7XG5AQCAtMTM5NSw3ICsxNDA4LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfYm9vdF9kc3Aoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwpO1xuK1x0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDMsIHNpemVvZihiMSksIGIxLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdHJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpO1xuIFx0a2ZyZWUoYik7XG5AQCAtMTYyMSwxMCArMTYzNCwxNCBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfZXhpdF9maWx0ZXJzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcbiBzdGF0aWMgaW50IGZlX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0XHQgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcbi1cdFx0XHQgICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSlcbitcdFx0XHQgICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSxcbitcdFx0XHQgICBpbnQgY21kX3Jlc3VsdF9sZW4pXG4ge1xuIFx0c3RydWN0IHR0dXNiX2RlYyogZGVjID0gZmUtXHUwMDNlZHZiLVx1MDAzZXByaXY7XG4tXHRyZXR1cm4gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIGNvbW1hbmQsIHBhcmFtX2xlbmd0aCwgcGFyYW1zLCByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0KTtcbitcbitcdHJldHVybiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgY29tbWFuZCwgcGFyYW1fbGVuZ3RoLCBwYXJhbXMsXG4rXHRcdFx0XHQgICAgICByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0LFxuK1x0XHRcdFx0ICAgICAgY21kX3Jlc3VsdF9sZW4pO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnIGZlX2NvbmZpZyA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xuaW5kZXggMjE1MjIxMzcwYzE5My4uYjAxM2Q2ZGZjYmVlNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNcbkBAIC00NCw3ICs0NCw4IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJ0X3JlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLFxuIFxuIFx0KnN0YXR1cz0wO1xuIFxuLVx0cmV0PXN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXHUwMDI2bGVuLCByZXN1bHQpO1xuK1x0cmV0ID0gc3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3Mywgc2l6ZW9mKGIpLCBiLCBcdTAwMjZsZW4sIHJlc3VsdCxcbitcdFx0XHRcdFx0ICBzaXplb2YocmVzdWx0KSk7XG4gXHRpZihyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtODUsNyArODYsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4gXG4gXHRfX2JlMzIgZnJlcSA9IGh0b25sKHAtXHUwMDNlZnJlcXVlbmN5IC8gMTAwMCk7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2ZnJlcSwgc2l6ZW9mICh1MzIpKTtcbi1cdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4rXHRzdGF0ZS1cdTAwM2Vjb25maWctXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTEzMCw3ICsxMzEsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4gXHRsbmJfdm9sdGFnZSA9IGh0b25sKHN0YXRlLVx1MDAzZXZvbHRhZ2UpO1xuIFx0bWVtY3B5KFx1MDAyNmJbMjhdLCBcdTAwMjZsbmJfdm9sdGFnZSwgc2l6ZW9mKHUzMikpO1xuIFxuLVx0c3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMKTtcbitcdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTQ5LDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJzX2Rpc2VxY19zZW5kX21hc3Rlcl9jbWQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjXG4gXG4gXHRzdGF0ZS1cdTAwM2Vjb25maWctXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcyLFxuIFx0XHRcdFx0ICAgIHNpemVvZihiKSAtICg2IC0gY21kLVx1MDAzZW1zZ19sZW4pLCBiLFxuLVx0XHRcdFx0ICAgIE5VTEwsIE5VTEwpO1xuK1x0XHRcdFx0ICAgIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmggYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXG5pbmRleCA3MzgyOGJiMjI1OGM5Li45NjYwMGFkNGMyMzZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaFxuKysrIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaFxuQEAgLTE0LDcgKzE0LDggQEAgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnXG4ge1xuIFx0aW50ICgqc2VuZF9jb21tYW5kKShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0XHQgICAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sXG4tXHRcdFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTtcbitcdFx0XHQgICAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10sXG4rXHRcdFx0ICAgIGludCBjbWRfcmVzdWx0X2xlbik7XG4gfTtcbiBcbiBleHRlcm4gc3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NDo0NS4xODgzNzczMjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA1MjIxNTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBEcml2ZXIgUGF0Y2ggZm9yIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jYCBhbmQgYGRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyB0aGV5J3ZlIGFkZGVkIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgdG8gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGFuZCBgZmVfc2VuZF9jb21tYW5kYC4gVGhlIGdvYWwgaXMgY2xlYXJseSB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvd3MgZHVyaW5nIFVTQiBjb21tYW5kIHJlc3VsdCBjb3B5aW5nLiBUaGUgY29kZSBpbmNsdWRlcyBhIGNoZWNrOiBgaWYgKGNtZF9yZXN1bHQgXHUwMDI2XHUwMDI2IHJsZW4gXHUwMDNlIGNtZF9yZXN1bHRfbGVuKSBybGVuID0gY21kX3Jlc3VsdF9sZW47YCBiZWZvcmUgdGhlIGBtZW1jcHlgLiBTbWFydC4gUHJldmVudGluZyB0aGF0IGtpbmQgb2Ygb3ZlcmZsb3cgaXMgYWx3YXlzIGdvb2QuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBVU0IgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBleHBsb2l0YWJpbGl0eSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIENhbiB0aGlzIGRyaXZlciBiZSByZWFjaGVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIncyBnb3QgdGhvc2UgYHN5el91c2JfY29ubmVjdGAgY2FsbHMgYW5kIG90aGVycyB3aGljaCBhcmUgcHJldHR5IGVmZmVjdGl2ZSBmb3IgVVNCIGRyaXZlciBmdXp6aW5nLiBHb29kLiBCdXQgd2FpdOKApiBpcyB0aGlzIGV2ZW4gYSAqbWVkaWEqIGRyaXZlcj8gWWVzLCB0aGUgcGF0aCBjb25maXJtcyBpdC4gSSBzaG91bGQgaGF2ZSBzZWVuIHRoYXQgaW1tZWRpYXRlbHkuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24uIElzIGB0dHVzYi1kZWNgIGVuYWJsZWQgaW4gY29tbW9uIGtlcm5lbHMsIG9yIGRvZXMgaXQgbmVlZCBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNlZD8gVGltZSB0byBwdWxsIHVwIGBncmVwcGVyYCBhbmQgaHVudCBkb3duIHRoZSBLY29uZmlnIGVudHJpZXMgZm9yIGB0dHVzYi1kZWNgIHRvIGRldGVybWluZSBob3cgcmVhY2hhYmxlIGl0IGlzIHdpdGhpbiB2YXJpb3VzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLiBHb3R0YSBzZWUgaG93IGJyb2FkbHkgdGhpcyBwcm90ZWN0aW9uIGFwcGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NDo1MC44OTM2MDMxMzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4MTc3MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHR1c2ItZGVjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9LY29uZmlnPTUwPXNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItYnVkZ2V0L0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZzo1MTpzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbWVkaWEvdXNiL0tjb25maWctNTItXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9NYWtlZmlsZT0xMz1vYmoteSArPSB0dHVzYi1idWRnZXQvXFxuZHJpdmVycy9tZWRpYS91c2IvTWFrZWZpbGU6MTQ6b2JqLXkgKz0gdHR1c2ItZGVjL1xcbmRyaXZlcnMvbWVkaWEvdXNiL01ha2VmaWxlLTE1LVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jPTE2NTE9c3RhdGljIGludCB0dHVzYl9kZWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTcwNy1cXHRpZiAoZGVjLVxcdTAwM2VmZSA9PSBOVUxMKSB7XFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3MDg6XFx0XFx0cHJpbnRrKFxcXCJkdmItdHR1c2ItZGVjOiBBIGZyb250ZW5kIGRyaXZlciB3YXMgbm90IGZvdW5kIGZvciBkZXZpY2UgWyUwNHg6JTA0eF1cXFxcblxcXCIsXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTE3MDktXFx0XFx0ICAgICAgIGxlMTZfdG9fY3B1KGRlYy1cXHUwMDNldWRldi1cXHUwMDNlZGVzY3JpcHRvci5pZFZlbmRvciksXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTc1OT1zdGF0aWMgdm9pZCB0dHVzYl9kZWNfc2V0X21vZGVsKHN0cnVjdCB0dHVzYl9kZWMgKmRlYyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzY2LVxcdFxcdGRlYy1cXHUwMDNlbW9kZWxfbmFtZSA9IFxcXCJERUMyMDAwLXRcXFwiO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzY3OlxcdFxcdGRlYy1cXHUwMDNlZmlybXdhcmVfbmFtZSA9IFxcXCJkdmItdHR1c2ItZGVjLTIwMDB0LmZ3XFxcIjtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc2OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzcxLVxcdFxcdGRlYy1cXHUwMDNlbW9kZWxfbmFtZSA9IFxcXCJERUMyNTQwLXRcXFwiO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzcyOlxcdFxcdGRlYy1cXHUwMDNlZmlybXdhcmVfbmFtZSA9IFxcXCJkdmItdHR1c2ItZGVjLTI1NDB0LmZ3XFxcIjtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc3My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzc2LVxcdFxcdGRlYy1cXHUwMDNlbW9kZWxfbmFtZSA9IFxcXCJERUMzMDAwLXNcXFwiO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzc3OlxcdFxcdGRlYy1cXHUwMDNlZmlybXdhcmVfbmFtZSA9IFxcXCJkdmItdHR1c2ItZGVjLTMwMDBzLmZ3XFxcIjtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc3OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzkwPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzkxOlxcdC5uYW1lXFx0XFx0PSBcXFwidHR1c2ItZGVjXFxcIixcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc5Mi1cXHQucHJvYmVcXHRcXHQ9IHR0dXNiX2RlY19wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTQ6NTAuOTUwNDI4NDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQzNjU3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciB0dHVzYi1kZWMqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgdHR1c2ItZGVjYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYnVpbGQuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5IHRvIHRoYXQuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoaXMgZmlsZTogYGRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnYC4gSSdsbCBiZSBsb29raW5nIGZvcjpcblxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIHRoaXMgZHJpdmVyIHRvIGV2ZW4gYmUgY29uc2lkZXJlZD8gQXJlIHRoZXJlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywga2VybmVsIGZlYXR1cmUgZGVwZW5kZW5jaWVzLCBvciBvdGhlciBkcml2ZXJzIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZT8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dC5cbiogICAqKk9wdGlvbnM6KiogV2hhdCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXI/IEFyZSB0aGVyZSBvcHRpb25zIGZvciBkZWJ1Z2dpbmcsIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnRzLCBmaXJtd2FyZSBzZWxlY3Rpb24sIG9yIGRpZmZlcmVudCBsZXZlbHMgb2YgZnVuY3Rpb25hbGl0eT8gSSdsbCB3YW50IHRvIGdyYXNwIHRoZSBtZWFuaW5nIG9mIGVhY2ggb3B0aW9uLlxuKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgYXZhaWxhYmxlIG9wdGlvbnM/IEtub3dpbmcgdGhpcyBpcyBpbXBvcnRhbnQuIEl0IHJldmVhbHMgaG93IHRoZSBkcml2ZXIgd2lsbCBiZWhhdmUgXCJvdXQgb2YgdGhlIGJveFwiIGFuZCBpZGVudGlmaWVzIHBvdGVudGlhbCBhcmVhcyBmb3IgY3VzdG9taXphdGlvbi5cbiogICAqKkhlbHAgVGV4dDoqKiBUaGUgbW9zdCBpbXBvcnRhbnQgcGFydCEgVGhlIGBoZWxwYCB0ZXh0IHdpbGwgZ2l2ZSBtZSB0aGUgbW9zdCBjcml0aWNhbCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGVhY2ggb3B0aW9uIGRvZXMuIFRoZSB0ZXh0IHByb3ZpZGVzIHRoZSByYXRpb25hbGUgZm9yIHRoZSBvcHRpb24sIGFuZCBob3cgdG8gY29uZmlndXJlIG9yIHNlbGVjdCBpdC5cbiogICAqKlJlbGF0aW9uc2hpcHM6KiogSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gSG93IGRvIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBgdHR1c2ItZGVjYCByZWxhdGUgdG8gb3RoZXIgbWVkaWEtcmVsYXRlZCBjb25maWd1cmF0aW9ucz8gQXJlIHRoZXJlIGNvbmZsaWN0cywgb3IgcGVyaGFwcyBzeW5lcmdpZXMsIHdpdGggb3RoZXIgVVNCIG9yIERWQi1yZWxhdGVkIGRyaXZlcnM/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuKiAgICoqUG9zc2libGUgQ29tcGlsZSBUaW1lIENoYW5nZXM6KiogSSB3aWxsIGFsc28gd2FudCB0byBpbnZlc3RpZ2F0ZSBhbnkgY29tcGlsZSB0aW1lIG9wdGlvbnMsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRoYXQgYWZmZWN0IHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS5cblxuRXNzZW50aWFsbHksIEknbSBzZXR0aW5nIG15c2VsZiB1cCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIGB0dHVzYi1kZWNgIGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCBhbmQgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhpcyBrbm93bGVkZ2UgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBjdXN0b21pemluZyB0aGlzIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBvciBzb2Z0d2FyZSBlbnZpcm9ubWVudC4gSSBuZWVkIHRvIGJlIGFibGUgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgaXRzIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NDo1NS43OTQwODgzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIERWQl9UVFVTQl9ERUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJUZWNobm90cmVuZC9IYXVwcGF1Z2UgVVNCIERFQyBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBEVkJfQ09SRSBcXHUwMDI2XFx1MDAyNiBVU0IgXFx1MDAyNlxcdTAwMjYgSU5QVVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXh0ZXJuYWwgVVNCIGFkYXB0ZXJzIGRlc2lnbmVkIGJ5IFRlY2hub3RyZW5kIGFuZFxcbiAgIDg6XFx0XFx0ICBwcm9kdWNlZCBieSBIYXVwcGF1Z2UsIHNoaXBwZWQgdW5kZXIgdGhlIGJyYW5kIG5hbWUgJ0RFQzIwMDAtdCdcXG4gICA5OlxcdFxcdCAgYW5kICdERUMzMDAwLXMnLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIEV2ZW4gaWYgdGhlc2UgZGV2aWNlcyBoYXZlIGEgTVBFRyBkZWNvZGVyIGJ1aWx0IGluLCB0aGV5IHRyYW5zbWl0XFxuICAxMjpcXHRcXHQgIG9ubHkgY29tcHJlc3NlZCBNUEVHIGRhdGEgb3ZlciB0aGUgVVNCIGJ1cywgc28geW91IG5lZWRcXG4gIDEzOlxcdFxcdCAgYW4gZXh0ZXJuYWwgc29mdHdhcmUgZGVjb2RlciB0byB3YXRjaCBUViBvbiB5b3VyIGNvbXB1dGVyLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIFRoaXMgZHJpdmVyIG5lZWRzIGV4dGVybmFsIGZpcm13YXJlLiBQbGVhc2UgdXNlIHRoZSBjb21tYW5kc1xcbiAgMTY6XFx0XFx0ICBcXFwiXFx1MDAzY2tlcm5lbGRpclxcdTAwM2Uvc2NyaXB0cy9nZXRfZHZiX2Zpcm13YXJlIGRlYzIwMDB0XFxcIixcXG4gIDE3OlxcdFxcdCAgXFxcIlxcdTAwM2NrZXJuZWxkaXJcXHUwMDNlL3NjcmlwdHMvZ2V0X2R2Yl9maXJtd2FyZSBkZWMyNTQwdFxcXCIsXFxuICAxODpcXHRcXHQgIFxcXCJcXHUwMDNja2VybmVsZGlyXFx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMzAwMHNcXFwiLFxcbiAgMTk6XFx0XFx0ICBkb3dubG9hZC9leHRyYWN0IHRoZW0sIGFuZCB0aGVuIGNvcHkgdGhlbSB0byAvdXNyL2xpYi9ob3RwbHVnL2Zpcm13YXJlXFxuICAyMDpcXHRcXHQgIG9yIC9saWIvZmlybXdhcmUgKGRlcGVuZGluZyBvbiBjb25maWd1cmF0aW9uIG9mIGZpcm13YXJlIGhvdHBsdWcpLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIFNheSBZIGlmIHlvdSBvd24gc3VjaCBhIGRldmljZSBhbmQgd2FudCB0byB1c2UgaXQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU0OjU1Ljc5NDE3MzA1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU1OTU2MjA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIERWQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIG9wdGlvbiBpcyBgRFZCX1RUVVNCX0RFQ2AsIGFuZCBpdCByZWxpZXMgb24gYERWQl9DT1JFYCwgYFVTQmAsIGBJTlBVVGAsIGFuZCBgUENJYC4gU2luY2UgdGhpcyBpcyBhIFVTQiBkcml2ZXIsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQncyBwcmltZSBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIHJvdXRlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgYnVmZmVyIG92ZXJmbG93IHdpdGhpbiB0aGUgYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZSB2dWxuZXJhYmlsaXR5IGFyaXNlcyB3aGVuIHRoZSByZWNlaXZlZCBgYWN0dWFsX2xlbmAgaXMgYXQgbGVhc3QgNCBieXRlcywgYW5kIGBiWzNdYCAoaW50ZXJwcmV0ZWQgYXMgYHJsZW5gKSBleGNlZWRzIHRoZSBleHBlY3RlZCBgY21kX3Jlc3VsdF9sZW5gLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZWFsIHBvaW50IG9mIGludGVyZXN0LCBhbmQgKmRlZmluaXRlbHkqIHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBmdXp6aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6XG5cbiogICBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgKHN0YXRpYylcbiogICBgdHR1c2JfZGVjX2dldF9zdGJfc3RhdGVgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zZXRfcGlkc2AgKHN0YXRpYylcbiogICBgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2VgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zdGFydF90c19mZWVkYCAoc3RhdGljKVxuKiAgIGB0dHVzYl9kZWNfc3RhcnRfc2VjX2ZlZWRgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zdG9wX3RzX2ZlZWRgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zdG9wX3NlY19mZWVkYCAoc3RhdGljKVxuKiAgIGB0dHVzYl9pbml0X3JjYCAoc3RhdGljKVxuKiAgIGB0dHVzYl9kZWNfYm9vdF9kc3BgIChzdGF0aWMpXG4qICAgYGZlX3NlbmRfY29tbWFuZGAgKHN0YXRpYylcbiogICBgdHR1c2JkZWNmZV9kdmJ0X3JlYWRfc3RhdHVzYCAoc3RhdGljKVxuKiAgIGB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kYCAoc3RhdGljKVxuKiAgIGB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kYCAoc3RhdGljKVxuKiAgIGB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZGAgKHN0YXRpYylcblxuSG1tLCBpbnRlcmVzdGluZy4gVGhleSdyZSBhbGwgc3RhdGljIGZ1bmN0aW9ucy4gV2hpY2ggbWVhbnMsIHRvIGdldCBhdCB0aGVtIHdpdGggZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBvdGhlciBmdW5jdGlvbnMgaW4gYHR0dXNiX2RlYy5jYCBhbmQgYHR0dXNiZGVjZmUuY2AgdGhhdCAqY2FsbCogdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGZ1enppbmcgbGV2ZXJhZ2UgbGllcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCB0byB0aGVzZSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTowMy4zNTM3MzgxMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyNjQ3NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYy4qIHR0dXNiX2RlY19zZW5kX2NvbW1hbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0zMDI9c3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTMxNC1cXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MzE1OnN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTMxNi1cXHRcXHRcXHRcXHQgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTowMy40MDIwMDkxODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY5NDc5MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipGb2N1c2luZyBvbiBOb24tU3RhdGljIEZ1bmN0aW9ucyBpbiBgdHR1c2JkZWNmZS5jYCoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlIG1lYXR5IGJpdHMgd2l0aGluIGB0dHVzYmRlY2ZlLmNgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFdoeT8gQmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgbGlrZWx5IHRvIGJlIGV4cG9zZWQgdG8gdGhlIG91dHNpZGUgd29ybGQsIHRoZSBpbnRlcmZhY2UgcG9pbnRzLCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGVpdGhlciBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIGFyZSBpbnRlbmRlZCB0byBiZSBjYWxsYWJsZSBleHRlcm5hbGx5LiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBsb2NhbCB0byB0aGUgZmlsZSwgYW5kIHdoaWxlIHRoZXkgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGludGVybmFsIHdvcmtpbmdzLCB0aGV5J3JlIG5vdCB0aGUgcHJpbWFyeSBmb2N1cyAqcmlnaHQgbm93Ki4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHBvaW50cyBvZiBpbnRlcmFjdGlvbiwgdGhlIEFQSSBzdXJmYWNlLCBzbyB0byBzcGVhay4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvZiB0aGlzIG1vZHVsZSdzIGZ1bmN0aW9uYWxpdHkgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb21wb25lbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBtYXAgb2YgdGhlIGtleSBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODczOSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjA3LjY3MTQ5MTIyNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwOTYwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0cnVjdCBkdmJfZnJvbnRlbmRcXFxcKiB0dHVzYmRlY2ZlX2R2Yi4qX2F0dGFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMtMTk2LVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM6MTk3OnN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZidF9hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYz0yMTU9c3RhdGljIGNvbnN0IHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIHR0dXNiZGVjZmVfZHZic19vcHM7XFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yMTYtXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYzoyMTc6c3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZylcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jLTIxOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjA3LjcyMjU5Mzk0MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY0MTAzMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgdHR1c2JfZGVjX3Byb2JlYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byBgdHR1c2JfZGVjX3Byb2JlYC4gSSdtIHN0YXJ0aW5nIGhlcmUgYmVjYXVzZSBJIGtub3cgdGhpcyBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIHRoZSBrZXJuZWwgZGV0ZWN0cyBhIGRldmljZSBjb21wYXRpYmxlIHdpdGggdGhlIGRyaXZlcnMgaW4gdGhpcyBtb2R1bGUsIEkgd2lsbCB3YW50IHRvIHNlZSB3aGF0IGluaXRpYWxpemF0aW9uIHByb2Nlc3NlcyBvY2N1ci4gSSBrbm93IGZyb20gcGFzdCBleHBlcmllbmNlIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwcm9iaW5nIGEgVFRVU0IgZGV2aWNlLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCBwcm9iZSBlbnRhaWxzLiBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhlIHN0YW5kYXJkIHN0dWZmIGZpcnN0OiByZXNvdXJjZSBhbGxvY2F0aW9uLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgYW5kIGRyaXZlciByZWdpc3RyYXRpb24uIEknbSBleHBlY3RpbmcgdG8gZmluZCBVU0IgZGVzY3JpcHRvciBwYXJzaW5nIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmcgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnMg4oCTIGFyZSB0aGV5IHVzaW5nIGBkZXZfZXJyYCBhcHByb3ByaWF0ZWx5PyBBcmUgdGhlcmUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgaGFyZHdhcmUgYWNjZXNzPyBBbmQsIGZpbmFsbHksIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gdW5kZXJzdGFuZCBob3cgdGhleSdyZSBoYW5kbGluZyBhbnkgZGV2aWNlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcyBpbiB0aGlzIGZ1bmN0aW9uLCBiZWNhdXNlIHRob3NlIGFyZSBvZnRlbiB0aGUgbW9zdCBpbnRlcmVzdGluZyBhbmQgY2FuIGluZGljYXRlIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBvciBkZXNpZ24gY2hhbGxlbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMwOSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjExLjA4NjcwMjgzNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MzgzMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgdHR1c2JfZGVjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTY0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnIGZlX2NvbmZpZyA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNjUwLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNjUxOnN0YXRpYyBpbnQgdHR1c2JfZGVjX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNjUyLVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MTEuMTM1NDQ4ODcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTIzNzUzNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgdHR1c2JfZGVjYCBEcml2ZXI6IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cblJpZ2h0LCBgdHR1c2JfZGVjX3Byb2JlYCDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBBcyB0aGUgbWFpbiBwcm9iZSBmdW5jdGlvbiwgaXQncyB0aGUgaGVhcnQgb2YgdGhlIFVTQiBkcml2ZXIncyBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCdzIGRvaW5nLCBhbmQgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgRFZCIGRyaXZlciwgSSBzaG91bGQgYW50aWNpcGF0ZSBpdCBkZWFsaW5nIHdpdGggdGhlIERWQiBmcm9udGVuZC4gU28sIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZnJvbSBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBEVkIgZnJvbnRlbmQgb3BlcmF0aW9uIHJlZ2lzdHJhdGlvbnMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBoYXBwZW5zLCB3aGVyZSBpdCBkZWZpbmVzIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB0dW5lciBhbmQgZGVtb2R1bGF0b3IuIExldCdzIHNlZSB3aGF0IGhvb2tzIGl0IGhhcyBpbnRvIHRoZSBEVkIgaW5mcmFzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NToxNC42ODc4Mjg0NTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjAzNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwucHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzkwPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkxLVxcdC5uYW1lXFx0XFx0PSBcXFwidHR1c2ItZGVjXFxcIixcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MTc5MjpcXHQucHJvYmVcXHRcXHQ9IHR0dXNiX2RlY19wcm9iZSxcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc5My1cXHQuZGlzY29ubmVjdFxcdD0gdHR1c2JfZGVjX2Rpc2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjE0LjczODQ0MzI5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE0NjA3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgYHR0dXNiX2RlY2AgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbkhtbSwgYHR0dXNiX2RlY19wcm9iZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi4gQnV0IHdhaXQsIGl0J3MgYmVpbmcgcmVnaXN0ZXJlZCwgcmlnaHQ/IEknbSBwcmV0dHkgc3VyZSBpdCdzIGluIGB0dHVzYl9kZWNfZHJpdmVyYC4gT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBTbywgaXQncyBhIHByaXZhdGUgcHJvYmUgZnVuY3Rpb24uXG5cbk5vdywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyBpbiBgdHR1c2JfZGVjLmNgIHRoYXQgYXJlbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmlzaWJpbGl0eSBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoaXMgZHJpdmVyIGEgYml0IGJldHRlci4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgaW5kaWNhdG9yIG9mIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtLiBMZXQgbWUgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTY2LCJPdXRwdXRUb2tlbnMiOjc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MTguMjUzMDU0ODExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDI2NDc5NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MTguMzAzMzI3OTU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MTAyNjI1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUmVmaW5pbmcgdGhlIEFwcHJvYWNoOiBBIE5ldyBSZWdleCBTdHJhdGVneSoqXG5cblJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIHJlYXNzZXNzLiBUaGUgcHJldmlvdXMgcmVnZXggd2Fzbid0IHF1aXRlIGhpdHRpbmcgdGhlIG1hcms7IGl0J3MgdGltZSB0byByZWZpbmUgdGhpcy4gSSBuZWVkIHRvIHJldGhpbmsgdGhlIGNvcmUgY29tcG9uZW50cyBvZiB0aGUgcGF0dGVybi4gVGhlIGZ1bmRhbWVudGFsIGlzc3VlIHNlZW1zIHRvIGJlIGluIHRoZS4uLiAoZmlsbCBpbiB0aGUgYmxhbmsgd2l0aCB0aGUgYXJlYSB0aGV5IGFyZSBsaWtlbHkgc3RydWdnbGluZyB3aXRoIGluIHRoZSBwcm9ibGVtIHRoZXkgYXJlIHNvbHZpbmcpLiBTbyBpbnN0ZWFkIG9mLi4uIChkZXNjcmliZSB0aGUgcHJldmlvdXMgYXBwcm9hY2ggdGhhdCB3YXMgcHJvYmxlbWF0aWMpLCBJIHNob3VsZCB0cnkgc29tZXRoaW5nIHRoYXQgZm9jdXNlcyBvbi4uLiAoZGVzY3JpYmUgdGhlIGFzcGVjdHMgb2YgYSBuZXcgYXBwcm9hY2gpLiBUaGUgY3J1Y2lhbCB0aGluZyBpcyB0byBlbnN1cmUgdGhpcyBpdGVyYXRpb24gaXMuLi4gKGhpZ2hsaWdodCBrZXkgY3JpdGVyaWEpLiBJJ20gdGhpbmtpbmcgb2YgaW5jb3Jwb3JhdGluZy4uLiAoZGVzY3JpYmUgdGVjaG5pY2FsIGVsZW1lbnRzIG9mIHRoZSByZWdleCBlLmcuIGxvb2thaGVhZHMsIGFuY2hvcnMsIHF1YW50aWZpZXJzKSBpbiBhIHNsaWdodGx5IGRpZmZlcmVudCBjb25maWd1cmF0aW9uLiBNYXliZSBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGhvdyB0aGlzIG1heSBwZXJmb3JtIHdpdGguLi4gKGNvbnNpZGVyIGVkZ2UgY2FzZXMsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgb3RoZXIgaW5wdXRzIGV0YykuIEknbGwgc3RhcnQgd2l0aCB0aGlzIG1vcmUgdGFyZ2V0ZWQgYXBwcm9hY2gsIGFuZCBpdGVyYXRlLCB1c2luZyBteSBleGlzdGluZyBrbm93bGVkZ2Ugb2YgcmVnZXggbnVhbmNlcy4gSG9wZWZ1bGx5LCB0aGlzIHJldmlzZWQgYXBwcm9hY2ggd2lsbCBnZXQgdG8gdGhlIHJlc3VsdCBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDY3LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NToyMy44MTM1OTMzNDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTM4MDM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwqPyBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NToyMy44NjU1NDU1NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzYyODU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIFJpZ2h0IGludG8gdGhlIEluaXQqKlxuXG5BbHJpZ2h0LCBubyBuZWVkIGZvciBwcmVhbWJsZSwgbGV0J3MgY3V0IHRvIHRoZSBjaGFzZS4gV2hlbiBJJ20gZGlzc2VjdGluZyBhIGRyaXZlciBsaWtlIGB0dHVzYl9kZWMuY2AsIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBhbHdheXMgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRm9yZ2V0IHRoZSBleHRyYW5lb3VzIGNvZGUgZm9yIGEgbW9tZW50OyB0aGUgYG1vZHVsZV9pbml0YCBtYWNybyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCdzIHRoZSBsYXVuY2hwYWQsIHRoZSBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyB0aGluZyBjb21lcyB0byBsaWZlOiB3aGF0IHJlc291cmNlcyBpdCByZXF1ZXN0cywgd2hhdCBoYXJkd2FyZSBpdCBwcm9iZXMsIGFuZCBob3cgaXQgaG9va3MgaXRzZWxmIGludG8gdGhlIGtlcm5lbCdzIHN1YnN5c3RlbXMuIFNvLCB5ZWFoLCBza2lwcGluZyByaWdodCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUuIExldCdzIHNlZSB3aGF0IGBtb2R1bGVfaW5pdGAgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODEwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MjcuMzc5MTc4MDk2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTc4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTc4MDpcXHR9XFxuMTc4MTpcXHRcXG4xNzgyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCB0dHVzYl9kZWNfdGFibGVbXSA9IHtcXG4xNzgzOlxcdFxcdHtVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA2KX0sXFx0LyogREVDMzAwMC1zICovXFxuMTc4NDpcXHRcXHQvKntVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA3KX0sXFx0ICAgVW5jb25maXJtZWQgKi9cXG4xNzg1OlxcdFxcdHtVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA4KX0sXFx0LyogREVDMjAwMC10ICovXFxuMTc4NjpcXHRcXHR7VVNCX0RFVklDRSgweDBiNDgsIDB4MTAwOSl9LFxcdC8qIERFQzI1NDAtdCAqL1xcbjE3ODc6XFx0XFx0e31cXG4xNzg4OlxcdH07XFxuMTc4OTpcXHRcXG4xNzkwOlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xcbjE3OTE6XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJ0dHVzYi1kZWNcXFwiLFxcbjE3OTI6XFx0XFx0LnByb2JlXFx0XFx0PSB0dHVzYl9kZWNfcHJvYmUsXFxuMTc5MzpcXHRcXHQuZGlzY29ubmVjdFxcdD0gdHR1c2JfZGVjX2Rpc2Nvbm5lY3QsXFxuMTc5NDpcXHRcXHQuaWRfdGFibGVcXHQ9IHR0dXNiX2RlY190YWJsZSxcXG4xNzk1OlxcdH07XFxuMTc5NjpcXHRcXG4xNzk3OlxcdG1vZHVsZV91c2JfZHJpdmVyKHR0dXNiX2RlY19kcml2ZXIpO1xcbjE3OTg6XFx0XFxuMTc5OTpcXHRNT0RVTEVfQVVUSE9SKFxcXCJBbGV4IFdvb2RzIFxcdTAwM2NsaW51eC1kdmJAZ2libGV0cy5vcmdcXHUwMDNlXFxcIik7XFxuMTgwMDpcXHRNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX05BTUUpO1xcbjE4MDE6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbjE4MDI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHR0dXNiX2RlY190YWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjI3LjM3OTMyMjcxNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg4NDYwNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIERlY29kZXIgTW9kdWxlIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB0dHVzYl9kZWNgIG1vZHVsZSwgYW5kIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50cyBmb3IgaW50ZXJhY3Rpb24gc2VlbSB0byBiZSBgdHR1c2JfZGVjX3Byb2JlYCBhbmQgYHR0dXNiX2RlY19kaXNjb25uZWN0YC4gVGhleSdyZSAqc3RhdGljKiwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IG1lYW5zIHRoZXkgd29uJ3QgYmUgZXhwb3J0ZWQgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLiBCdXQsIGFuZCB0aGlzIGlzIGtleSwgc3l6a2FsbGVyICpjYW4qIHN0aWxsIHRhcmdldCB0aGVtIHVzaW5nIFVTQiBwc2V1ZG8tc3lzY2FsbHMsIHJpZ2h0P1xuXG5XYWl0IGEgc2Vjb25kLCBsZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gYWdhaW4uLi4gYWgsIHRoZSBwcm9tcHQgaXMgdmVyeSBjbGVhcjogaXQgcHJlZmVycyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZSByZWFzb25pbmcgaXMgc29saWQsIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJ3QgZ2V0IGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFNvLCBgdHR1c2JfZGVjX3Byb2JlYCAqaXMqIHN0YXRpYy4uLiBpcyB0aGVyZSBhIHJpc2sgb2YgaXQgYmVpbmcgaW5saW5lZD8gSG1tbSwgbm8sIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciBjYW4ndCBpbmxpbmUgaXQuIEJ1dCBzdGlsbCwgaXQncyBzdGF0aWMuXG5cblRoZSBuZXh0IHRob3VnaHQgaXMgY2xlYXIgLSBhcmUgdGhlcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGU/IEkgbmVlZCB0byBjaGVjayB0aGUgc291cmNlLiBMZXQncyBzdGFydCB3aXRoIGB0dHVzYmRlY2ZlLmNgLCB0aGUgZmlsZSBtaWdodCBjb250YWluIHNvbWV0aGluZyB0aGF0IGZpdHMgdGhlIGJpbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MzEuOTY3Nzg3MTkzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHR7XFxuIDE5MTpcXHRcXHRzdHJ1Y3QgdHR1c2JkZWNmZV9zdGF0ZSAqc3RhdGUgPSBmZS1cXHUwMDNlZGVtb2R1bGF0b3JfcHJpdjtcXG4gMTkyOlxcdFxcdGtmcmVlKHN0YXRlKTtcXG4gMTkzOlxcdH1cXG4gMTk0OlxcdFxcbiAxOTU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIHR0dXNiZGVjZmVfZHZidF9vcHM7XFxuIDE5NjpcXHRcXG4gMTk3OlxcdHN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZidF9hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXFxuIDE5ODpcXHR7XFxuIDE5OTpcXHRcXHRzdHJ1Y3QgdHR1c2JkZWNmZV9zdGF0ZSogc3RhdGUgPSBOVUxMO1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHQvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpbnRlcm5hbCBzdGF0ZSAqL1xcbiAyMDI6XFx0XFx0c3RhdGUgPSBrbWFsbG9jX29iaihzdHJ1Y3QgdHR1c2JkZWNmZV9zdGF0ZSk7XFxuIDIwMzpcXHRcXHRpZiAoc3RhdGUgPT0gTlVMTClcXG4gMjA0OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAyMDU6XFx0XFxuIDIwNjpcXHRcXHQvKiBzZXR1cCB0aGUgc3RhdGUgKi9cXG4gMjA3OlxcdFxcdHN0YXRlLVxcdTAwM2Vjb25maWcgPSBjb25maWc7XFxuIDIwODpcXHRcXG4gMjA5OlxcdFxcdC8qIGNyZWF0ZSBkdmJfZnJvbnRlbmQgKi9cXG4gMjEwOlxcdFxcdG1lbWNweShcXHUwMDI2c3RhdGUtXFx1MDAzZWZyb250ZW5kLm9wcywgXFx1MDAyNnR0dXNiZGVjZmVfZHZidF9vcHMsIHNpemVvZihzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcykpO1xcbiAyMTE6XFx0XFx0c3RhdGUtXFx1MDAzZWZyb250ZW5kLmRlbW9kdWxhdG9yX3ByaXYgPSBzdGF0ZTtcXG4gMjEyOlxcdFxcdHJldHVybiBcXHUwMDI2c3RhdGUtXFx1MDAzZWZyb250ZW5kO1xcbiAyMTM6XFx0fVxcbiAyMTQ6XFx0XFxuIDIxNTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJzX29wcztcXG4gMjE2OlxcdFxcbiAyMTc6XFx0c3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZylcXG4gMjE4OlxcdHtcXG4gMjE5OlxcdFxcdHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKiBzdGF0ZSA9IE5VTEw7XFxuIDIyMDpcXHRcXG4gMjIxOlxcdFxcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGludGVybmFsIHN0YXRlICovXFxuIDIyMjpcXHRcXHRzdGF0ZSA9IGttYWxsb2Nfb2JqKHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKTtcXG4gMjIzOlxcdFxcdGlmIChzdGF0ZSA9PSBOVUxMKVxcbiAyMjQ6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdC8qIHNldHVwIHRoZSBzdGF0ZSAqL1xcbiAyMjc6XFx0XFx0c3RhdGUtXFx1MDAzZWNvbmZpZyA9IGNvbmZpZztcXG4gMjI4OlxcdFxcdHN0YXRlLVxcdTAwM2V2b2x0YWdlID0gMDtcXG4gMjI5OlxcdFxcdHN0YXRlLVxcdTAwM2VoaV9iYW5kID0gMDtcXG4gMjMwOlxcdFxcbiAyMzE6XFx0XFx0LyogY3JlYXRlIGR2Yl9mcm9udGVuZCAqL1xcbiAyMzI6XFx0XFx0bWVtY3B5KFxcdTAwMjZzdGF0ZS1cXHUwMDNlZnJvbnRlbmQub3BzLCBcXHUwMDI2dHR1c2JkZWNmZV9kdmJzX29wcywgc2l6ZW9mKHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzKSk7XFxuIDIzMzpcXHRcXHRzdGF0ZS1cXHUwMDNlZnJvbnRlbmQuZGVtb2R1bGF0b3JfcHJpdiA9IHN0YXRlO1xcbiAyMzQ6XFx0XFx0cmV0dXJuIFxcdTAwMjZzdGF0ZS1cXHUwMDNlZnJvbnRlbmQ7XFxuIDIzNTpcXHR9XFxuIDIzNjpcXHRcXG4gMjM3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzID0ge1xcbiAyMzg6XFx0XFx0LmRlbHN5cyA9IHsgU1lTX0RWQlQgfSxcXG4gMjM5OlxcdFxcdC5pbmZvID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTozMS45Njc5MDg4MjNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyODUwMzc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqRXhhbWluaW5nIHRoZSBEcml2ZXIgRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgVGl0YW5UViBVU0IgZHJpdmVyIGZ1bmN0aW9ucy4gSXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgIGFyZSAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IG11c3QgYmUgZXhwb3J0ZWQsIGxpa2VseSBmb3IgbW9kdWxlIGxvYWRpbmcgb3IgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZW4gdGhlcmUncyBgdHR1c2JfZGVjX3Byb2JlYC4gSSAqdGhpbmsqIEkgcmVjYWxsIHRoYXQgb25lIGlzIHN0YXRpYywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiwgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRoZSBVU0IgZHJpdmVyLiBHaXZlbiBpdHMgY2VudHJhbCByb2xlIGluIGluaXRpYWxpemF0aW9uLCBJJ2xsIG5lZWQgdG8gaW5jbHVkZSBpdCBpbiBteSB1bmRlcnN0YW5kaW5nLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYyBhbmQsIHByZXN1bWFibHksIG5vdCBkaXJlY3RseSBleHBvc2VkIGV4dGVybmFsbHkuIEhhbmcgb24uLi4gYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgICppcyogZXhwb3J0ZWQ/IEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuIEdvdHRhIGRvdWJsZS1jaGVjayB0aGUgbW9kdWxlIGV4cG9ydCB0YWJsZSBvciB0aGUgc3ltYm9sIGRlZmluaXRpb25zIHRvIGJlIHN1cmUsIGJ1dCB0aGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzE1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTozNS45OTY0MTYwOTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTkyMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jPTI4Nz1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yODgtXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYzoyODk6RVhQT1JUX1NZTUJPTCh0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoKTtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjI5MDpFWFBPUlRfU1lNQk9MKHR0dXNiZGVjZmVfZHZic19hdHRhY2gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTozNi4wNDY0MTQyNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjI2MzQ1NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFNlbGVjdGlvbiBvZiBSZWxldmFudCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGJlc3QgcmVwcmVzZW50IHRoaXMgZml4IGZvciB0aGUgVVNCIGRyaXZlci4gSXQncyBjbGVhciB0aGF0IHRoZSBjaGFuZ2VzICphcmUqIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kLiBJIG5lZWQgdG8gc2VsZWN0IHRoZSBtb3N0IHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgdGhpcyBleHBsYW5hdGlvbi5cblxuSW5pdGlhbGx5LCBJJ2QgdGhvdWdodCBhYm91dCBpbmNsdWRpbmcgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgc2luY2UgdGhleSBhcmUgdGhlIGF0dGFjaCBmdW5jdGlvbnMuIEFuZCBvZiBjb3Vyc2UsIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGEgY2xlYXIgY2FuZGlkYXRlOyBpdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGRyaXZlciwgYW5kIHRoYXQncyB1c3VhbGx5IHdoZXJlIHlvdSB3YW50IHRvIHN0YXJ0LlxuXG5Ob3csIGhvbGQgb24uLi4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgLi4uICp0aGF0J3MqIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBhY3R1YWxseSBtb2RpZmllZC4gSXQncyBzdGF0aWMsIHNvIHRoYXQncyBhIGJpdCBvZiBhIHdyaW5rbGUsIGJ1dCBpdCdzIHRoZSBoZWFydCBvZiB0aGUgZml4LCByaWdodD8gSXQncyBjYWxsZWQgYnkgYSBsb3Qgb2Ygb3RoZXIgZnVuY3Rpb25zLiBUaGUgcHJvbXB0IGRvZXMgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMsIHNvIG1heWJlIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGEgYmV0dGVyIHJlcHJlc2VudGF0aW9uLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGlzICpkaXJlY3RseSogY2FsbGVkIGJ5IGB0dHVzYl9kZWNfcHJvYmVgIOKAkyBhbmQgb3RoZXIgZnVuY3Rpb25zIGluIHRoYXQgY2hhaW46IGB0dHVzYl9kZWNfYm9vdF9kc3BgLCBgdHR1c2JfaW5pdF9yY2AsIGV0Yy4gLSAqYW5kKiBmcm9tIERWQiBmcm9udGVuZCBvcGVyYXRpb25zIHZpYSBgZmVfc2VuZF9jb21tYW5kYC4gVGhlIERWQiBmcm9udGVuZCBvcHMgdGhlbXNlbHZlcyBhcmUgcmVnaXN0ZXJlZCBpbiBgdHR1c2JkZWNmZV9kdmJ0X29wc2AgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfb3BzYC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hhdCB0aGUgRFZCIGZyb250ZW5kIG9wcyBhcmUgYWN0dWFsbHkgZG9pbmcuIFRoYXQnbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgY2FsbCBwYXRocyB0byBjb25zaWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyMDgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6NDEuMjcyNzYzMDQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzNzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJ0X29wcyA9IHtcXG4gMjM4OlxcdFxcdC5kZWxzeXMgPSB7IFNZU19EVkJUIH0sXFxuIDIzOTpcXHRcXHQuaW5mbyA9IHtcXG4gMjQwOlxcdFxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiVGVjaG5vVHJlbmQvSGF1cHBhdWdlIERFQzIwMDAtdCBGcm9udGVuZFxcXCIsXFxuIDI0MTpcXHRcXHRcXHQuZnJlcXVlbmN5X21pbl9oelxcdD0gIDUxICogTUh6LFxcbiAyNDI6XFx0XFx0XFx0LmZyZXF1ZW5jeV9tYXhfaHpcXHQ9IDg1OCAqIE1IeixcXG4gMjQzOlxcdFxcdFxcdC5mcmVxdWVuY3lfc3RlcHNpemVfaHpcXHQ9IDYyNTAwLFxcbiAyNDQ6XFx0XFx0XFx0LmNhcHMgPVxcdEZFX0NBTl9GRUNfMV8yIHwgRkVfQ0FOX0ZFQ18yXzMgfCBGRV9DQU5fRkVDXzNfNCB8XFxuIDI0NTpcXHRcXHRcXHRcXHRGRV9DQU5fRkVDXzVfNiB8IEZFX0NBTl9GRUNfN184IHwgRkVfQ0FOX0ZFQ19BVVRPIHxcXG4gMjQ2OlxcdFxcdFxcdFxcdEZFX0NBTl9RQU1fMTYgfCBGRV9DQU5fUUFNXzY0IHwgRkVfQ0FOX1FBTV9BVVRPIHxcXG4gMjQ3OlxcdFxcdFxcdFxcdEZFX0NBTl9UUkFOU01JU1NJT05fTU9ERV9BVVRPIHwgRkVfQ0FOX0dVQVJEX0lOVEVSVkFMX0FVVE8gfFxcbiAyNDg6XFx0XFx0XFx0XFx0RkVfQ0FOX0hJRVJBUkNIWV9BVVRPLFxcbiAyNDk6XFx0XFx0fSxcXG4gMjUwOlxcdFxcbiAyNTE6XFx0XFx0LnJlbGVhc2UgPSB0dHVzYmRlY2ZlX3JlbGVhc2UsXFxuIDI1MjpcXHRcXG4gMjUzOlxcdFxcdC5zZXRfZnJvbnRlbmQgPSB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kLFxcbiAyNTQ6XFx0XFxuIDI1NTpcXHRcXHQuZ2V0X3R1bmVfc2V0dGluZ3MgPSB0dHVzYmRlY2ZlX2R2YnRfZ2V0X3R1bmVfc2V0dGluZ3MsXFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdC5yZWFkX3N0YXR1cyA9IHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1cyxcXG4gMjU4OlxcdH07XFxuIDI1OTpcXHRcXG4gMjYwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnNfb3BzID0ge1xcbiAyNjE6XFx0XFx0LmRlbHN5cyA9IHsgU1lTX0RWQlMgfSxcXG4gMjYyOlxcdFxcdC5pbmZvID0ge1xcbiAyNjM6XFx0XFx0XFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJUZWNobm9UcmVuZC9IYXVwcGF1Z2UgREVDMzAwMC1zIEZyb250ZW5kXFxcIixcXG4gMjY0OlxcdFxcdFxcdC5mcmVxdWVuY3lfbWluX2h6XFx0PSAgOTUwICogTUh6LFxcbiAyNjU6XFx0XFx0XFx0LmZyZXF1ZW5jeV9tYXhfaHpcXHQ9IDIxNTAgKiBNSHosXFxuIDI2NjpcXHRcXHRcXHQuZnJlcXVlbmN5X3N0ZXBzaXplX2h6XFx0PSAgMTI1ICoga0h6LFxcbiAyNjc6XFx0XFx0XFx0LnN5bWJvbF9yYXRlX21pbiAgICAgICAgPSAxMDAwMDAwLCAgLyogZ3Vlc3NlZCAqL1xcbiAyNjg6XFx0XFx0XFx0LnN5bWJvbF9yYXRlX21heCAgICAgICAgPSA0NTAwMDAwMCwgLyogZ3Vlc3NlZCAqL1xcbiAyNjk6XFx0XFx0XFx0LmNhcHMgPVxcdEZFX0NBTl9GRUNfMV8yIHwgRkVfQ0FOX0ZFQ18yXzMgfCBGRV9DQU5fRkVDXzNfNCB8XFxuIDI3MDpcXHRcXHRcXHRcXHRGRV9DQU5fRkVDXzVfNiB8IEZFX0NBTl9GRUNfN184IHwgRkVfQ0FOX0ZFQ19BVVRPIHxcXG4gMjcxOlxcdFxcdFxcdFxcdEZFX0NBTl9RUFNLXFxuIDI3MjpcXHRcXHR9LFxcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHQucmVsZWFzZSA9IHR0dXNiZGVjZmVfcmVsZWFzZSxcXG4gMjc1OlxcdFxcbiAyNzY6XFx0XFx0LnNldF9mcm9udGVuZCA9IHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmQsXFxuIDI3NzpcXHRcXG4gMjc4OlxcdFxcdC5yZWFkX3N0YXR1cyA9IHR0dXNiZGVjZmVfZHZic19yZWFkX3N0YXR1cyxcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0LmRpc2VxY19zZW5kX21hc3Rlcl9jbWQgPSB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZCxcXG4gMjgxOlxcdFxcdC5zZXRfdm9sdGFnZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdm9sdGFnZSxcXG4gMjgyOlxcdFxcdC5zZXRfdG9uZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdG9uZSxcXG4gMjgzOlxcdH07XFxuIDI4NDpcXHRcXG4gMjg1OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiVFRVU0IgREVDIERWQi1UL1MgRGVtb2R1bGF0b3IgZHJpdmVyXFxcIik7XFxuIDI4NjpcXHRNT0RVTEVfQVVUSE9SKFxcXCJBbGV4IFdvb2RzL0FuZHJldyBkZSBRdWluY2V5XFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjQxLjI3Mjg5ODgwN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI4Mjk1Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhlc2UgbW9kaWZpY2F0aW9ucyB0byBgdHR1c2JkZWNmZS5jYC4gSSBzZWUgdGhleSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgZnJvbnRlbmQgY29udHJvbCBmdW5jdGlvbnM6IGB0dHVzYmRlY2ZlX2R2YnRfcmVhZF9zdGF0dXNgLCBgdHR1c2JkZWNmZV9kdmJ0X3NldF9mcm9udGVuZGAsIGB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kYCwgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZGAuIFRoZXkgYXJlIGFsbCBzdGF0aWMsIHdoaWNoIGlzIHR5cGljYWwgZm9yIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIGEgZHJpdmVyLCBidXQgdGhleSBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBgZHZiX2Zyb250ZW5kX29wc2Agc3RydWN0dXJlLiBUaGlzIG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBzdGFuZGFyZCB3YXkgdG8gZXhwb3NlIHRoZXNlIGZyb250ZW5kIG9wZXJhdGlvbnMgdG8gdGhlIERWQiBjb3JlLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGluY2x1ZGUgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgLCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAsIGFuZCBgdHR1c2JfZGVjX3Byb2JlYCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgY2VudHJhbCBjb25maWcgaGVyZSBpcyBgRFZCX1RUVVNCX0RFQ2AuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBEVkJfQ09SRWAsIGBVU0JgLCBgSU5QVVRgLCBhbmQgYFBDSWAuIEhhbmcgb24gYSBzZWNvbmQuLi4gYFBDSWA/IFRoaXMgaXMgYSBVU0IgZHJpdmVyOyB3aHkgdGhlIFBDSSBkZXBlbmRlbmN5PyBJdCBkb2Vzbid0IHF1aXRlIGFkZCB1cC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgZnVydGhlci4gTGV0J3Mgc2VlIHdoYXQncyBpbiBgZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdgIHRvIHNlZSBpZiB0aGF0IHNoZWRzIGFueSBsaWdodCBvbiB0aGlzLiBJdCBzZWVtcyBsaWtlIHNvbWV0aGluZyBpc24ndCBxdWl0ZSByaWdodCwgYW5kIHRoZSBLY29uZmlnIG1pZ2h0IGNsYXJpZnkgd2h5IHRoZSBkZXBlbmRlbmN5IGV4aXN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4ODUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo0Ni4zMDExOTg2ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBEVkJfVFRVU0JfREVDXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGVjaG5vdHJlbmQvSGF1cHBhdWdlIFVTQiBERUMgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gRFZCX0NPUkUgXFx1MDAyNlxcdTAwMjYgVVNCIFxcdTAwMjZcXHUwMDI2IElOUFVUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFN1cHBvcnQgZm9yIGV4dGVybmFsIFVTQiBhZGFwdGVycyBkZXNpZ25lZCBieSBUZWNobm90cmVuZCBhbmRcXG4gICA4OlxcdFxcdCAgcHJvZHVjZWQgYnkgSGF1cHBhdWdlLCBzaGlwcGVkIHVuZGVyIHRoZSBicmFuZCBuYW1lICdERUMyMDAwLXQnXFxuICAgOTpcXHRcXHQgIGFuZCAnREVDMzAwMC1zJy5cXG4gIDEwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo0Ni4zMDEyODcwMDZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5MDI1NTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIHRoZSBEVkItVC9TIFVTQiBSZWNlaXZlciBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJ20gc2VlaW5nIGlzIHRoZSBkZXBlbmRlbmN5IGNoYWluLiBUaGlzIGZpeCByZWxpZXMgb24gYERWQl9DT1JFIFx1MDAyNlx1MDAyNiBVU0IgXHUwMDI2XHUwMDI2IElOUFVUIFx1MDAyNlx1MDAyNiBQQ0lgLiBSaWdodCwgc28gSSBuZWVkIHRvIGJlIHN1cmUgYERWQl9UVFVTQl9ERUNgLCBgRFZCX0NPUkVgLCBgVVNCYCwgYElOUFVUYCwgYW5kIGBQQ0lgIGFyZSBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBJJ20gZmFpcmx5IGNlcnRhaW4gYFBDSWAsIGBVU0JgLCBhbmQgYElOUFVUYCBhcmUgc3RhbmRhcmQsIGJ1dCBgRFZCX0NPUkVgIGlzIHRoZSBvbmUgdG8gZG91YmxlLWNoZWNrLiBBbmQgb2J2aW91c2x5LCBgRFZCX1RUVVNCX0RFQ2AgaXMgdGhlIHByaW1hcnkgdGFyZ2V0LlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBvbmVzIHRvIGNhbGwgb3V0IGhlcmU/IGB0dHVzYl9kZWNfcHJvYmVgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGRyaXZlci4gVGhlbiB0aGVyZSBhcmUgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgd2hpY2ggYXJlIGFsc28gY3JpdGljYWwuIExldCdzIHNlZS4uLiB0aGUgcHJvbXB0IHdhbnRzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4uLiBobW0sIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYCB3YXMgdGhlIGZ1bmN0aW9uIHRoYXQgd2FzIGFjdHVhbGx5IG1vZGlmaWVkLCBidXQgaXQncyAqc3RhdGljKi4gSXQncyBub3QgYSBzbWFsbCBoZWxwZXIgdGhvdWdoLCBtaWdodCBub3QgYmUgaW5saW5lZC4uLiBCdXQgSSAqa25vdyogYHR0dXNiX2RlY19wcm9iZWAgY2FuJ3QgYmUgaW5saW5lZCBiZWNhdXNlIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gU28gSSdsbCBsaXN0IGB0dHVzYl9kZWNfcHJvYmVgLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAsIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAuXG5cbk9rYXksIGxldCdzIHJlY2FwIG15IHJlYXNvbmluZy4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAuIEl0IGFkZHMgYSBgY21kX3Jlc3VsdF9sZW5gIGNoZWNrIGJlZm9yZSBjb3B5aW5nIHRoZSBVU0IgY29tbWFuZCByZXN1bHQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBtZWRpYSBkcml2ZXIuIEkgY2FuIGFic29sdXRlbHkgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCksIHdoaWNoIGlzIHNvbWV0aGluZyBJIHdhbnQgdG8gZG8uIFNvIHRoZSBtYWluIGNvbmZpZ3MgSSBoYXZlIHRvIGhhdmUgaW4gcGxhY2UgYXJlIGBEVkJfVFRVU0JfREVDYCBhbmQsIGNyaXRpY2FsbHksIGl0cyBkZXBlbmRlbmN5LCBgRFZCX0NPUkVgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBzaG91bGQgdmVyaWZ5IHRoYXQgYERWQl9DT1JFYCBpcyBpbiBgZHJpdmVycy9tZWRpYS9kdmItY29yZS9LY29uZmlnYC4gUmlnaHQsIGdvb2QuIEFsbCBzZWVtcyBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2MTcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo1NC4zOTE1NDY3OTZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NzQxMDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEVkJfQ09SRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWc9MTcwPWNvbmZpZyBNRURJQV9DT05UUk9MTEVSXFxuLS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTgzLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxODQ6Y29uZmlnIERWQl9DT1JFXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE4NS1cXHR0cmlzdGF0ZSBcXFwiRFZCIENvcmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjU0LjQ4NjI5Mzk2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTI1Nzk0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuT2theSwgd2FpdCBhIHNlY29uZC4uLiBJICp0aG91Z2h0KiBJIHJlbWVtYmVyZWQgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBgRFZCX0NPUkVgIHJlY2VudGx5LiBXaGVyZSB3YXMgdGhhdCwgYWdhaW4/IEFoLCB5ZXMsIGl0J3MgY29taW5nIGJhY2sgdG8gbWUg4oCTIGl0J3MgYWN0dWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGZpbGUuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgYW5kIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIGhhbmRsZWQuIEFscmlnaHQsIGxldCdzIG9wZW4gdGhhdCBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3MDEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo1Ny43Mzg4NzY2MjlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHQjIERWQiBDb3JlXFxuIDE4MTpcXHQjXFx0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcXG4gMTgyOlxcdCNcXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIERWQl9DT1JFXFxuIDE4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiRFZCIENvcmVcXFwiXFxuIDE4NjpcXHRcXHRkZXBlbmRzIG9uIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxcbiAxODc6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxODg6XFx0XFx0ZGVmYXVsdCBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4gMTg5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxOTA6XFx0XFx0aGVscFxcbiAxOTE6XFx0XFx0ICBFbmFibGVzIHRoZSBEVkIgQVBJLCB1c2VkIGJ5IERpZ2l0YWwgVFYgZGV2aWNlcy4gU3VwcG9ydHMgc2V2ZXJhbFxcbiAxOTI6XFx0XFx0ICBzdGFuZGFyZHMsIGluY2x1ZGluZyBEVkIsIEFUU0MsIElTREIgYW5kIENNREIuXFxuIDE5MzpcXHRcXG4gMTk0OlxcdGVuZG1lbnUgIyBNZWRpYSBjb3JlIHN1cHBvcnRcXG4gMTk1OlxcdFxcbiAxOTY6XFx0I1xcbiAxOTc6XFx0IyBFeHRyYSBwZXItbWVkaWEgQVBJIGNvcmUgZnVuY3Rpb25hbGl0eVxcbiAxOTg6XFx0XFxuIDE5OTpcXHRtZW51IFxcXCJWaWRlbzRMaW51eCBvcHRpb25zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo1Ny43Mzg5NTU5NjlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxNTMzNDg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkRpZ2dpbmcgaW50byBEaWdpdGFsIFRWIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYERWQl9DT1JFYCBpcyBwdWxsaW5nIGluIGEgZGVwZW5kZW5jeSBvbiBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYC4gVGhhdCBtYWtlcyBzZW5zZTsgdGhlIGNvcmUgRFZCIGZ1bmN0aW9uYWxpdHkgb2J2aW91c2x5IHJlbGllcyBvbiBoYXZpbmcgc29tZSBiYXNpYyBkaWdpdGFsIFRWIHN1cHBvcnQgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBzcGVjaWZpY3Mgb2YgYE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVGAganVzdCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGV2ZXJ5dGhpbmcgY29ycmVjdGx5LiBMZXQncyBnbyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoYXQgY29uZmlnIG9wdGlvbiBhY3R1YWxseSAqZG9lcyouIFRoZXJlJ3MgbGlrZWx5IHNvbWUgbnVhbmNlIHRoZXJlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJlZm9yZSBJIG1ha2UgYW55IGRlY2lzaW9ucyBhYm91dCBob3cgdG8gY29uZmlndXJlIHRoaXMgd2hvbGUgc3Vic3lzdGVtLiBJdCdzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTcwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjowMC43NTQyOTU2NTJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjU0MjczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz03Nj1jb25maWcgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlRcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy04OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6OTA6Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy05MS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjAwLjkyMDg0OTI1MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk3ODkzMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBTdWJzeXN0ZW0gS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIG1lZGlhIHN1YnN5c3RlbSwgYW5kIG15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBwbGFjZSB0byBzdGFydCBpcyB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhcm91bmQgbGluZSA5MC4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIG1vcmUgY29yZSBvciBmdW5kYW1lbnRhbCBvcHRpb25zIGFyZSBkZWZpbmVkLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGd1dHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyBhcmUgbGlrZWx5IHRvIGJlIGZvdW5kLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGF0IGFyZWEgdG8gc2VlIHdoYXQgY2F0Y2hlcyBteSBleWUgb3IgdHJpZ2dlcnMgYSBzcGVjaWZpYyBtZW1vcnkgcmVsYXRlZCB0byB0aGUgcHJvYmxlbSBJIGFtIHdvcmtpbmcgb24uIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIGNvbmZpZ3VyYXRpb25zIEkgY2FuIHVuY292ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDY3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTY6MDQuMzE4NzQ0NDgyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgTm90ZTogVGhlcmUgYXJlIHNldmVyYWwgRFZCIGNhcmRzIHRoYXQgYXJlIGJhc2VkIG9uIGNoaXBzIHRoYXRcXG4gIDg3OlxcdFxcdFxcdHN1cHBvcnQgYm90aCBhbmFsb2cgYW5kIGRpZ2l0YWwgVFYuIERpc2FibGluZyB0aGlzIG9wdGlvblxcbiAgODg6XFx0XFx0XFx0d2lsbCBkaXNhYmxlIHN1cHBvcnQgZm9yIHRoZW0uXFxuICA4OTpcXHRcXG4gIDkwOlxcdGNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4gIDkxOlxcdFxcdGJvb2xcXG4gIDkyOlxcdFxcdHByb21wdCBcXFwiRGlnaXRhbCBUVlxcXCIgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDkzOlxcdFxcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDk0OlxcdFxcdGhlbHBcXG4gIDk1OlxcdFxcdCAgRW5hYmxlIGRpZ2l0YWwgVFYgc3VwcG9ydC5cXG4gIDk2OlxcdFxcbiAgOTc6XFx0XFx0ICBTYXkgWSB3aGVuIHlvdSBoYXZlIGEgYm9hcmQgd2l0aCBkaWdpdGFsIHN1cHBvcnQgb3IgYSBib2FyZCB3aXRoXFxuICA5ODpcXHRcXHQgIGh5YnJpZCBkaWdpdGFsIFRWIGFuZCBhbmFsb2cgVFYuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXFxuIDEwMTpcXHRcXHRib29sXFxuIDEwMjpcXHRcXHRwcm9tcHQgXFxcIkFNL0ZNIHJhZGlvIHJlY2VpdmVycy90cmFuc21pdHRlcnNcXFwiIGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwMzpcXHRcXHRkZWZhdWx0IHkgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwNDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjA0LjMxODgxNjE5MloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI5OTQyMTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgYXJlYSBvZiBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgRGVwZW5kZW5jeSBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIHJlcXVpcmVzIGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgLiBHb3QgaXQuIE5vdywgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgb2Z0ZW4gbWVhbnMgdGhlcmUgYXJlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzLCBzbyBJIHNob3VsZCBzZWUgd2hhdCBgTUVESUFfU1VQUE9SVGAgaXMgYWxsIGFib3V0LiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGlzIGtleSBoZXJlLiBJdCdzIGxpa2VseSB0aGF0IGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgIGJ1aWxkcyB1cG9uIG9yIGxldmVyYWdlcyBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IGBNRURJQV9TVVBQT1JUYC4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGF0IGRlcGVuZGVuY3kgY2hhaW4gbG9va3MgbGlrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MzMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjA3LjQ0ODc2MTYzOFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4NTE4OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRURJQV9TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk11bHRpbWVkaWEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoyNTpjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjA3LjU2NzMzMzg5MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk0MjExMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgdGhvdWdodHM6XG5cbioqQ29uZmlndXJpbmcgTWVkaWEgU3VwcG9ydDogQSBNZW50YWwgQ2hlY2tsaXN0KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbjogYE1FRElBX1NVUFBPUlRgLiBUaGF0J3MgdGhlIGJpZyBwaWN0dXJlLCB0aGUgdW1icmVsbGEgdW5kZXIgd2hpY2ggZXZlcnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gbWVkaWEgZmFsbHMuIEZyb20gdGhlcmUsIEkgbmVlZCB0byBkcmlsbCBkb3duLlxuXG5JJ2xsIG5lZWQgdG8gbGlzdCBvdXQgdGhlIGltcG9ydGFudCBtb2R1bGVzLiBUaGlua2luZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMsIGBNRURJQV9TVVBQT1JUYCBpcyBvYnZpb3VzbHkgdGhlIHByaW1hcnkgZW5hYmxlci4gVGhlbiwgSSdsbCBuZWVkIGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgLCBgRFZCX0NPUkVgIChzaW5jZSB3ZSdyZSBwcm9iYWJseSBkZWFsaW5nIHdpdGggZGlnaXRhbCB0ZWxldmlzaW9uIHN0dWZmKSwgYW5kIGBEVkJfVFRVU0JfREVDYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgSSdkIHR5cGljYWxseSBjb25zaWRlciBmb3IgRFZCIHN1cHBvcnQuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4gSSdtIGZvcmdldHRpbmcgc29tZXRoaW5nIGNydWNpYWwuIFVTQiBtZWRpYSBkcml2ZXJzISBJdCdzIGxpa2VseSBgTUVESUFfVVNCX1NVUFBPUlRgIGlzIGFsc28gdHlwaWNhbGx5IG5lY2Vzc2FyeSwgZXNwZWNpYWxseSBmb3IgYW55dGhpbmcgY29ubmVjdGVkIHZpYSBVU0IuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZ2AgZmlsZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhbnkgZXNzZW50aWFsIGRlcGVuZGVuY2llcy4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoxMS40NjE1NDgyMVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRpZiBVU0IgXFx1MDAyNlxcdTAwMjYgTUVESUFfU1VQUE9SVFxcbiAgIDQ6XFx0XFxuICAgNTpcXHRtZW51Y29uZmlnIE1FRElBX1VTQl9TVVBQT1JUXFxuICAgNjpcXHRcXHRib29sIFxcXCJNZWRpYSBVU0IgQWRhcHRlcnNcXFwiXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIEVuYWJsZSBtZWRpYSBkcml2ZXJzIGZvciBVU0IgYnVzLlxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgaGF2ZSBzdWNoIGRldmljZXMsIHNheSBZLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRpZiBNRURJQV9VU0JfU1VQUE9SVFxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBNRURJQV9DQU1FUkFfU1VQUE9SVFxcbiAgMTQ6XFx0XFx0Y29tbWVudCBcXFwiV2ViY2FtIGRldmljZXNcXFwiXFxuICAxNTpcXHRcXG4gIDE2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZ1xcXCJcXG4gIDE3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS91c2IvcHdjL0tjb25maWdcXFwiXFxuICAxODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3MyMjU1L0tjb25maWdcXFwiXFxuICAxOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3VzYnR2L0tjb25maWdcXFwiXFxuICAyMDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3V2Yy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoxMS40NjE2NzMzMloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ1NTUyNzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCLWJhc2VkIERpZ2l0YWwgVFYgVHVuZXIgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRyaXZlciB3b3JrcyBhcyBleHBlY3RlZC4gSSd2ZSBjb25maXJtZWQgdGhhdCBlbmFibGluZyBgTUVESUFfVVNCX1NVUFBPUlRgIGlzIGRlZmluaXRlbHkgbmVjZXNzYXJ5LiBMb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9ucywgaXQgYXBwZWFycyBJIG5lZWQgdG8gc2V0IGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVGAsIGBNRURJQV9VU0JfU1VQUE9SVGAsIGBEVkJfQ09SRWAsIGFuZCBgRFZCX1RUVVNCX0RFQ2AgdG8gYmUgc3VyZS5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGUuIEkgbmVlZCB0byBtYWtlIGEganVkZ21lbnQgY2FsbCBvbiB3aGF0IEknbSBpbmNsdWRpbmcuIEEgcXVpY2sgdmVyaWZpY2F0aW9uIG9mIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGVzIGlzIG5lY2Vzc2FyeS4gSSd2ZSBjb25maXJtZWQgdGhhdCBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQncyBnb29kLiBgdHR1c2JfZGVjX3Byb2JlYCBpcyBhbHNvIHN0YXRpYy4gUGVyZmVjdC4gIEhvd2V2ZXIsIGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgIGFyZSAqbm90KiBzdGF0aWMuIEFscmlnaHQuIEkgd2lsbCBpbmNsdWRlIGB0dHVzYl9kZWNfcHJvYmVgLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAsIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2lsbCBzY2FuIHRoZSBgdHR1c2JfZGVjLmNgIGZpbGUgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IG5lZWQgYXR0ZW50aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODkwMywiT3V0cHV0VG9rZW5zIjo3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjE2LjMwNzIyODg0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NzQyOTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qXFxcXCo/IFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjE2LjQxNDAxMTExNFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE5NzMzODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipRdWljayBTY2FuIGZvciBgRVhQT1JUX1NZTUJPTGAgaW4gYHR0dXNiX2RlYy5jYCoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZywgaW5zdGVhZCBvZiBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIGEgZGVlcCBkaXZlLCBsZXQncyBrZWVwIHRoaW5ncyBmb2N1c2VkIGFuZCBlZmZpY2llbnQuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHR5cGljYWwga2VybmVsIG1vZHVsZSBzdHJ1Y3R1cmUgYW5kIHN5bWJvbCB2aXNpYmlsaXR5LCB0aGUgZmlyc3QgdGhpbmcgSSdkIGRvIGlzIGEgcXVpY2sgYGdyZXBgIGZvciBgRVhQT1JUX1NZTUJPTGAgd2l0aGluIGB0dHVzYl9kZWMuY2AuIFRoYXQncyB0aGUgZ28tdG8gc2lnbmFsLiBJZiBJIHNlZSB0aGF0IG1hY3JvLCBpdCBkaXJlY3RseSB0ZWxscyBtZSB3aGljaCBzeW1ib2xzIHRoaXMgbW9kdWxlIGlzIGV4cGxpY2l0bHkgbWFraW5nIGF2YWlsYWJsZSB0byBvdGhlciBtb2R1bGVzLiBUaGF0J2xsIGltbWVkaWF0ZWx5IGdpdmUgbWUgYSByb2FkbWFwIG9mIGl0cyBwdWJsaWMgaW50ZXJmYWNlIOKAkyB0aGUgZW50cnkgcG9pbnRzIGFuZCBkYXRhIHN0cnVjdHVyZXMgSSBuZWVkIHRvIGNvbnNpZGVyIGZvciBpbnRlci1tb2R1bGUgaW50ZXJhY3Rpb25zLCBvciBkZWJ1Z2dpbmcsIG9yIHdoYXRldmVyIHRoZSBjdXJyZW50IHRhc2sgZGVtYW5kcy4gVGhpcyB0YXJnZXRlZCBhcHByb2FjaCBpcyBtdWNoIGZhc3RlciB0aGFuIGp1c3QgcmVhZGluZyB0aGUgZW50aXJlIHNvdXJjZSBjb2RlLiBTYXZlcyB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjIwLjMzMzc0NjcwMloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU5NzMzMjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoyMC40Mjk3MjY4NjVaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg3MDMxMjM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB0dHVzYl9kZWMuY2AgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHR0dXNiX2RlYy5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgdGhpcyBtb2R1bGUgZG9lc24ndCBleHBvcnQgYW55IHN5bWJvbHMsIHdoaWNoIG1ha2VzIHNlbnNlOyBgdHR1c2JfZGVjX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LiBEaWdnaW5nIGludG8gdGhlIGNvcmUgb2YgdGhlIHBhdGNoLCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYWxsIGFib3V0IGFkZHJlc3NpbmcgYSBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAuIFRoZSBmaXggaW52b2x2ZXMgaW50cm9kdWNpbmcgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciB0byBjb250cm9sIHRoZSBjb3BpZWQgbGVuZ3RoLCBhbmQgY3J1Y2lhbGx5LCBkb2luZyBhIHByb3BlciBib3VuZHMgY2hlY2sgYmVmb3JlIHRoZSBjb3B5IGl0c2VsZi4gVGhpcyBpcyBnb29kOyBpdCdzIGEgc29saWQsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIFVTQiBtZWRpYSBkcml2ZXIuIFRoaXMgbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Lbm93aW5nIHdoYXQgSSBrbm93IGFib3V0IFVTQiBkcml2ZXJzIGFuZCB0ZXN0aW5nLCB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGlzIHJpcGUgZm9yIHRlc3Rpbmcgd2l0aCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YCBzZXR1cC4gVGhhdCB3aWxsIGJlIHRoZSBwcmltYXJ5IGF2ZW51ZSB0byBleHBsb3JlIHRoaXMgcG90ZW50aWFsIGZpeCBhbmQgZGV0ZXJtaW5lIGl0cyBlZmZlY3RpdmVuZXNzLlxuXG5JIHdpbGwgaGF2ZSB0byBlbnN1cmUgdGhhdCBhbGwgcmVsZXZhbnQgVVNCIGNvbW1hbmRzIHdvcmsgcHJvcGVybHkgYXMgYSBzZWNvbmRhcnkgdGFzay5cblxuVWx0aW1hdGVseSwgSSdtIGdvaW5nIHRvIHdhbnQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHNlZSBob3cgdGhlIGNoYW5nZSBpbXBhY3RzIHRoZSBzeXprYWxsZXIgd29ya2Zsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzE0LCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoyNi4zMDAwNDI5NzNaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM1MTUzMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIk1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfVVNCX1NVUFBPUlRcIixcbiAgICBcIkRWQl9DT1JFXCIsXG4gICAgXCJEVkJfVFRVU0JfREVDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR1c2JfZGVjX3Byb2JlXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIk1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfVVNCX1NVUFBPUlRcIixcbiAgICBcIkRWQl9DT1JFXCIsXG4gICAgXCJEVkJfVFRVU0JfREVDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR1c2JfZGVjX3Byb2JlXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 21:53:22 +0000 UTC FinishedAt: 2026-08-02 21:56:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_DIGITAL_TV_SUPPORT", "MEDIA_USB_SUPPORT", "DVB_CORE", "DVB_TTUSB_DEC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_DIGITAL_TV_SUPPORT", "MEDIA_USB_SUPPORT", "DVB_CORE", "DVB_TTUSB_DEC" ], "series_id": "986ad262-9151-45d4-8775-4f1fce1c05c3" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ttusb_dec_probe", "ttusbdecfe_dvbt_attach", "ttusbdecfe_dvbs_attach" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfRElHSVRBTF9UVl9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX1VTQl9TVVBQT1JUJiMzNDssCiAgICAmIzM0O0RWQl9DT1JFJiMzNDssCiAgICAmIzM0O0RWQl9UVFVTQl9ERUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0dHVzYl9kZWNfcHJvYmUmIzM0OywKICAgICYjMzQ7dHR1c2JkZWNmZV9kdmJ0X2F0dGFjaCYjMzQ7LAogICAgJiMzNDt0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIG92ZXJmbG93IGluIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYCBieSBhZGRpbmcgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciBhbmQgY2hlY2tpbmcgdGhlIGxlbmd0aCBiZWZvcmUgY29weWluZyB0aGUgcmVzdWx0IG9mIGEgVVNCIGNvbW1hbmQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBtZWRpYSBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NGZjNzdmMzMzZThmZTdhOGM2Y2E1Mjk4NTg1ODhiYjFmODgyN2Q1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMTo1NDo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcbmluZGV4IDgyNWEzODc1OTg5ZDMuLjQxZTk1MDFjZDU2MTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1xuQEAgLTMxNCw3ICYjNDM7MzE0LDggQEAgc3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuIFxuIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXG4gXHRcdFx0XHQgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLFxuLVx0XHRcdFx0ICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSlcbiYjNDM7XHRcdFx0XHQgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxuJiM0MztcdFx0XHRcdCAgaW50IGNtZF9yZXN1bHRfbGVuKVxuIHtcbiBcdGludCByZXN1bHQsIGFjdHVhbF9sZW47XG4gXHR1OCAqYjtcbkBAIC0zNjEsMTUgJiM0MzszNjIsMjYgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKHN0cnVjdCB0dHVzYl9kZWMgKmRlYywgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0ICAgICAgIF9fZnVuY19fLCByZXN1bHQpO1xuIFx0XHRnb3RvIGVycl9tdXRleF91bmxvY2s7XG4gXHR9IGVsc2Uge1xuJiM0MztcdFx0aW50IHJsZW4gPSAwO1xuJiM0MztcbiBcdFx0aWYgKGRlYnVnKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fREVCVUcgXCYjMzQ7JXM6IHJlc3VsdDogJSpwaFxcblwmIzM0OyxcbiBcdFx0XHQgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHRpZiAoYWN0dWFsX2xlbiBcdTAwM2U9IDQpIHtcbiYjNDM7XHRcdFx0cmxlbiA9IGJbM107XG4mIzQzO1x0XHRcdGlmIChybGVuIFx1MDAzZSBhY3R1YWxfbGVuIC0gNClcbiYjNDM7XHRcdFx0XHRybGVuID0gYWN0dWFsX2xlbiAtIDQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKGNtZF9yZXN1bHQgXHUwMDI2XHUwMDI2IHJsZW4gXHUwMDNlIGNtZF9yZXN1bHRfbGVuKVxuJiM0MztcdFx0XHRybGVuID0gY21kX3Jlc3VsdF9sZW47XG4mIzQzO1xuIFx0XHRpZiAocmVzdWx0X2xlbmd0aClcbi1cdFx0XHQqcmVzdWx0X2xlbmd0aCA9IGJbM107XG4tXHRcdGlmIChjbWRfcmVzdWx0IFx1MDAyNlx1MDAyNiBiWzNdIFx1MDAzZSAwKVxuLVx0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBiWzNdKTtcbiYjNDM7XHRcdFx0KnJlc3VsdF9sZW5ndGggPSBybGVuO1xuJiM0MztcdFx0aWYgKGNtZF9yZXN1bHQgXHUwMDI2XHUwMDI2IHJsZW4gXHUwMDNlIDApXG4mIzQzO1x0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBybGVuKTtcbiBcdH1cbiBcbiBlcnJfbXV0ZXhfdW5sb2NrOlxuQEAgLTM4OSw3ICYjNDM7NDAxLDggQEAgc3RhdGljIGludCB0dHVzYl9kZWNfZ2V0X3N0Yl9zdGF0ZSAoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCB1bnNpZ25lZCBpbnQgKm1vZGUsXG4gXG4gXHRkcHJpbnRrKFwmIzM0OyVzXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgXHUwMDI2Y19sZW5ndGgsIGMpO1xuJiM0MztcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDA4LCAwLCBOVUxMLCBcdTAwMjZjX2xlbmd0aCwgYyxcbiYjNDM7XHRcdFx0XHRcdHNpemVvZihjKSk7XG4gXHRpZiAocmVzdWx0KVxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFxuQEAgLTQ0OCw3ICYjNDM7NDYxLDcgQEAgc3RhdGljIHZvaWQgdHR1c2JfZGVjX3NldF9waWRzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdG1lbWNweShcdTAwMjZiWzJdLCBcdTAwMjZhdWRpbywgMik7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2dmlkZW8sIDIpO1xuIFxuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4mIzQzO1x0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkdmJfZmlsdGVyX3BlczJ0c19pbml0KFx1MDAyNmRlYy1cdTAwM2VhX3BlczJ0cywgZGVjLVx1MDAzZXBpZFtETVhfUEVTX0FVRElPXSxcbiBcdFx0XHQgICAgICAgdHR1c2JfZGVjX2F1ZGlvX3BlczJ0c19jYiwgZGVjKTtcbkBAIC05MDIsNyAmIzQzOzkxNSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2Uoc3RydWN0IHR0dXNiX2RlYyAqZGVjLFxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFRUVVNCX0RFQ19JTlRFUkZBQ0VfSU46XG4gXHRcdFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODAsIHNpemVvZihiKSxcbi1cdFx0XHRcdFx0XHRcdGIsIE5VTEwsIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0XHRcdGIsIE5VTEwsIE5VTEwsIDApO1xuIFx0XHRcdGlmIChyZXN1bHQpXG4gXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0XHRcdHJlc3VsdCA9IHVzYl9zZXRfaW50ZXJmYWNlKGRlYy1cdTAwM2V1ZGV2LCAwLCA4KTtcbkBAIC0xMDIxLDcgJiM0MzsxMDM0LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfc3RhcnRfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXG4gXHR9XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MCwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXHRpZiAocmVzdWx0KVxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFxuQEAgLTEwNTYsNyAmIzQzOzEwNjksNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF9zZWNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXHRtZW1jcHkoXHUwMDI2YjBbNV0sIFx1MDAyNmR2YmRteGZlZWQtXHUwMDNlZmlsdGVyLVx1MDAzZWZpbHRlci5maWx0ZXJfdmFsdWVbMF0sIDEpO1xuIFxuIFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NjAsIHNpemVvZihiMCksIGIwLFxuLVx0XHRcdFx0XHRcdTAwMjZjX2xlbmd0aCwgYyk7XG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZjX2xlbmd0aCwgYywgc2l6ZW9mKGMpKTtcbiBcbiBcdGlmICghcmVzdWx0KSB7XG4gXHRcdGlmIChjX2xlbmd0aCA9PSAyKSB7XG5AQCAtMTExNCw3ICYjNDM7MTEyNyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3BfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXHRzdHJ1Y3QgdHR1c2JfZGVjICpkZWMgPSBkdmJkbXhmZWVkLVx1MDAzZWRlbXV4LVx1MDAzZXByaXY7XG4gXHR1OCBiMFtdID0geyAweDAwIH07XG4gXG4tXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkZWMtXHUwMDNlcHZhX3N0cmVhbV9jb3VudC0tO1xuIFxuQEAgLTExMzUsNyAmIzQzOzExNDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdG9wX3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcbiBcdGxpc3RfZGVsKFx1MDAyNmZpbmZvLVx1MDAzZWZpbHRlcl9pbmZvX2xpc3QpO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZWMtXHUwMDNlZmlsdGVyX2luZm9fbGlzdF9sb2NrLCBmbGFncyk7XG4gXHRrZnJlZShmaW5mbyk7XG4tXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkZWMtXHUwMDNlZmlsdGVyX3N0cmVhbV9jb3VudC0tO1xuIFxuQEAgLTEyMzgsNyAmIzQzOzEyNTEsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2luaXRfcmMoIHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdGlmICh1c2Jfc3VibWl0X3VyYihkZWMtXHUwMDNlaXJxX3VyYiwgR0ZQX0tFUk5FTCkpXG4gXHRcdHByaW50ayhcJiMzNDslczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkXFxuXCYjMzQ7LF9fZnVuY19fKTtcbiBcdC8qIGVuYWJsZSBpcnEgcGlwZSAqL1xuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsMHhiMCxzaXplb2YoYiksYixOVUxMLE5VTEwpO1xuJiM0MztcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweGIwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTEzNTQsNyAmIzQzOzEzNjcsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19ib290X2RzcChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMpXG4gXHRmaXJtd2FyZV9jc3VtX25zID0gaHRvbnMoZmlybXdhcmVfY3N1bSk7XG4gXHRtZW1jcHkoXHUwMDI2YjBbNl0sIFx1MDAyNmZpcm13YXJlX2NzdW1fbnMsIDIpO1xuIFxuLVx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTtcbiYjNDM7XHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0aWYgKHJlc3VsdCkge1xuIFx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTtcbkBAIC0xMzk1LDcgJiM0MzsxNDA4LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfYm9vdF9kc3Aoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDQzLCBzaXplb2YoYjEpLCBiMSwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTtcbiBcdGtmcmVlKGIpO1xuQEAgLTE2MjEsMTAgJiM0MzsxNjM0LDE0IEBAIHN0YXRpYyB2b2lkIHR0dXNiX2RlY19leGl0X2ZpbHRlcnMoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxuIFxuIHN0YXRpYyBpbnQgZmVfc2VuZF9jb21tYW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBjb25zdCB1OCBjb21tYW5kLFxuIFx0XHRcdCAgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLFxuLVx0XHRcdCAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKVxuJiM0MztcdFx0XHQgICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSxcbiYjNDM7XHRcdFx0ICAgaW50IGNtZF9yZXN1bHRfbGVuKVxuIHtcbiBcdHN0cnVjdCB0dHVzYl9kZWMqIGRlYyA9IGZlLVx1MDAzZWR2Yi1cdTAwM2Vwcml2O1xuLVx0cmV0dXJuIHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCBjb21tYW5kLCBwYXJhbV9sZW5ndGgsIHBhcmFtcywgcmVzdWx0X2xlbmd0aCwgY21kX3Jlc3VsdCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgY29tbWFuZCwgcGFyYW1fbGVuZ3RoLCBwYXJhbXMsXG4mIzQzO1x0XHRcdFx0ICAgICAgcmVzdWx0X2xlbmd0aCwgY21kX3Jlc3VsdCxcbiYjNDM7XHRcdFx0XHQgICAgICBjbWRfcmVzdWx0X2xlbik7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXG5pbmRleCAyMTUyMjEzNzBjMTkzLi5iMDEzZDZkZmNiZWU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xuQEAgLTQ0LDcgJiM0Mzs0NCw4IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJ0X3JlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLFxuIFxuIFx0KnN0YXR1cz0wO1xuIFxuLVx0cmV0PXN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXHUwMDI2bGVuLCByZXN1bHQpO1xuJiM0MztcdHJldCA9IHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXHUwMDI2bGVuLCByZXN1bHQsXG4mIzQzO1x0XHRcdFx0XHQgIHNpemVvZihyZXN1bHQpKTtcbiBcdGlmKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC04NSw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4gXG4gXHRfX2JlMzIgZnJlcSA9IGh0b25sKHAtXHUwMDNlZnJlcXVlbmN5IC8gMTAwMCk7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2ZnJlcSwgc2l6ZW9mICh1MzIpKTtcbi1cdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4mIzQzO1x0c3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xMzAsNyAmIzQzOzEzMSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJzX3NldF9mcm9udGVuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSlcbiBcdGxuYl92b2x0YWdlID0gaHRvbmwoc3RhdGUtXHUwMDNldm9sdGFnZSk7XG4gXHRtZW1jcHkoXHUwMDI2YlsyOF0sIFx1MDAyNmxuYl92b2x0YWdlLCBzaXplb2YodTMyKSk7XG4gXG4tXHRzdGF0ZS1cdTAwM2Vjb25maWctXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwpO1xuJiM0MztcdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTQ5LDcgJiM0MzsxNTAsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19kaXNlcWNfc2VuZF9tYXN0ZXJfY21kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBzdHJ1Y1xuIFxuIFx0c3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MixcbiBcdFx0XHRcdCAgICBzaXplb2YoYikgLSAoNiAtIGNtZC1cdTAwM2Vtc2dfbGVuKSwgYixcbi1cdFx0XHRcdCAgICBOVUxMLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgICAgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaCBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmhcbmluZGV4IDczODI4YmIyMjU4YzkuLjk2NjAwYWQ0YzIzNmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXG5AQCAtMTQsNyAmIzQzOzE0LDggQEAgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnXG4ge1xuIFx0aW50ICgqc2VuZF9jb21tYW5kKShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0XHQgICAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sXG4tXHRcdFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTtcbiYjNDM7XHRcdFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxuJiM0MztcdFx0XHQgICAgaW50IGNtZF9yZXN1bHRfbGVuKTtcbiB9O1xuIFxuIGV4dGVybiBzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfVVNCX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7RFZCX0NPUkUmIzM0OywKICAgICYjMzQ7RFZCX1RUVVNCX0RFQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3R0dXNiX2RlY19wcm9iZSYjMzQ7LAogICAgJiMzNDt0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoJiMzNDssCiAgICAmIzM0O3R0dXNiZGVjZmVfZHZic19hdHRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKGR1bW15X2hjZC9yYXctZ2FkZ2V0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0ZmM3N2YzMzNlOGZlN2E4YzZjYTUyOTg1ODU4OGJiMWY4ODI3ZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyIDIxOjU0OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jCmluZGV4IDgyNWEzODc1OTg5ZDMuLjQxZTk1MDFjZDU2MTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMKQEAgLTMxNCw3ICYjNDM7MzE0LDggQEAgc3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQogCiBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLAogCQkJCSAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sCi0JCQkJICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSkKJiM0MzsJCQkJICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSwKJiM0MzsJCQkJICBpbnQgY21kX3Jlc3VsdF9sZW4pCiB7CiAJaW50IHJlc3VsdCwgYWN0dWFsX2xlbjsKIAl1OCAqYjsKQEAgLTM2MSwxNSAmIzQzOzM2MiwyNiBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLAogCQkgICAgICAgX19mdW5jX18sIHJlc3VsdCk7CiAJCWdvdG8gZXJyX211dGV4X3VubG9jazsKIAl9IGVsc2UgewomIzQzOwkJaW50IHJsZW4gPSAwOwomIzQzOwogCQlpZiAoZGVidWcpIHsKIAkJCXByaW50ayhLRVJOX0RFQlVHICYjMzQ7JXM6IHJlc3VsdDogJSpwaFxuJiMzNDssCiAJCQkgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpOwogCQl9CiAKJiM0MzsJCWlmIChhY3R1YWxfbGVuICZndDs9IDQpIHsKJiM0MzsJCQlybGVuID0gYlszXTsKJiM0MzsJCQlpZiAocmxlbiAmZ3Q7IGFjdHVhbF9sZW4gLSA0KQomIzQzOwkJCQlybGVuID0gYWN0dWFsX2xlbiAtIDQ7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpZiAoY21kX3Jlc3VsdCAmYW1wOyZhbXA7IHJsZW4gJmd0OyBjbWRfcmVzdWx0X2xlbikKJiM0MzsJCQlybGVuID0gY21kX3Jlc3VsdF9sZW47CiYjNDM7CiAJCWlmIChyZXN1bHRfbGVuZ3RoKQotCQkJKnJlc3VsdF9sZW5ndGggPSBiWzNdOwotCQlpZiAoY21kX3Jlc3VsdCAmYW1wOyZhbXA7IGJbM10gJmd0OyAwKQotCQkJbWVtY3B5KGNtZF9yZXN1bHQsICZhbXA7Yls0XSwgYlszXSk7CiYjNDM7CQkJKnJlc3VsdF9sZW5ndGggPSBybGVuOwomIzQzOwkJaWYgKGNtZF9yZXN1bHQgJmFtcDsmYW1wOyBybGVuICZndDsgMCkKJiM0MzsJCQltZW1jcHkoY21kX3Jlc3VsdCwgJmFtcDtiWzRdLCBybGVuKTsKIAl9CiAKIGVycl9tdXRleF91bmxvY2s6CkBAIC0zODksNyAmIzQzOzQwMSw4IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX2dldF9zdGJfc3RhdGUgKHN0cnVjdCB0dHVzYl9kZWMgKmRlYywgdW5zaWduZWQgaW50ICptb2RlLAogCiAJZHByaW50aygmIzM0OyVzXG4mIzM0OywgX19mdW5jX18pOwogCi0JcmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4MDgsIDAsIE5VTEwsICZhbXA7Y19sZW5ndGgsIGMpOwomIzQzOwlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgJmFtcDtjX2xlbmd0aCwgYywKJiM0MzsJCQkJCXNpemVvZihjKSk7CiAJaWYgKHJlc3VsdCkKIAkJcmV0dXJuIHJlc3VsdDsKIApAQCAtNDQ4LDcgJiM0Mzs0NjEsNyBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfc2V0X3BpZHMoc3RydWN0IHR0dXNiX2RlYyAqZGVjKQogCW1lbWNweSgmYW1wO2JbMl0sICZhbXA7YXVkaW8sIDIpOwogCW1lbWNweSgmYW1wO2JbNF0sICZhbXA7dmlkZW8sIDIpOwogCi0JdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7CiYjNDM7CXR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDUwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApOwogCiAJZHZiX2ZpbHRlcl9wZXMydHNfaW5pdCgmYW1wO2RlYy0mZ3Q7YV9wZXMydHMsIGRlYy0mZ3Q7cGlkW0RNWF9QRVNfQVVESU9dLAogCQkJICAgICAgIHR0dXNiX2RlY19hdWRpb19wZXMydHNfY2IsIGRlYyk7CkBAIC05MDIsNyAmIzQzOzkxNSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2Uoc3RydWN0IHR0dXNiX2RlYyAqZGVjLAogCQkJYnJlYWs7CiAJCWNhc2UgVFRVU0JfREVDX0lOVEVSRkFDRV9JTjoKIAkJCXJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYiksCi0JCQkJCQkJYiwgTlVMTCwgTlVMTCk7CiYjNDM7CQkJCQkJCWIsIE5VTEwsIE5VTEwsIDApOwogCQkJaWYgKHJlc3VsdCkKIAkJCQlyZXR1cm4gcmVzdWx0OwogCQkJcmVzdWx0ID0gdXNiX3NldF9pbnRlcmZhY2UoZGVjLSZndDt1ZGV2LCAwLCA4KTsKQEAgLTEwMjEsNyAmIzQzOzEwMzQsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF90c19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZCkKIAogCX0KIAotCXJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7CiYjNDM7CXJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7CiAJaWYgKHJlc3VsdCkKIAkJcmV0dXJuIHJlc3VsdDsKIApAQCAtMTA1Niw3ICYjNDM7MTA2OSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0YXJ0X3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZCkKIAltZW1jcHkoJmFtcDtiMFs1XSwgJmFtcDtkdmJkbXhmZWVkLSZndDtmaWx0ZXItJmd0O2ZpbHRlci5maWx0ZXJfdmFsdWVbMF0sIDEpOwogCiAJcmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NjAsIHNpemVvZihiMCksIGIwLAotCQkJCQkmYW1wO2NfbGVuZ3RoLCBjKTsKJiM0MzsJCQkJCSZhbXA7Y19sZW5ndGgsIGMsIHNpemVvZihjKSk7CiAKIAlpZiAoIXJlc3VsdCkgewogCQlpZiAoY19sZW5ndGggPT0gMikgewpAQCAtMTExNCw3ICYjNDM7MTEyNyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3BfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpCiAJc3RydWN0IHR0dXNiX2RlYyAqZGVjID0gZHZiZG14ZmVlZC0mZ3Q7ZGVtdXgtJmd0O3ByaXY7CiAJdTggYjBbXSA9IHsgMHgwMCB9OwogCi0JdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTsKJiM0MzsJdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMLCAwKTsKIAogCWRlYy0mZ3Q7cHZhX3N0cmVhbV9jb3VudC0tOwogCkBAIC0xMTM1LDcgJiM0MzsxMTQ4LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfc3RvcF9zZWNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpCiAJbGlzdF9kZWwoJmFtcDtmaW5mby0mZ3Q7ZmlsdGVyX2luZm9fbGlzdCk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2RlYy0mZ3Q7ZmlsdGVyX2luZm9fbGlzdF9sb2NrLCBmbGFncyk7CiAJa2ZyZWUoZmluZm8pOwotCXR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7CiYjNDM7CXR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7CiAKIAlkZWMtJmd0O2ZpbHRlcl9zdHJlYW1fY291bnQtLTsKIApAQCAtMTIzOCw3ICYjNDM7MTI1MSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfaW5pdF9yYyggc3RydWN0IHR0dXNiX2RlYyAqZGVjKQogCWlmICh1c2Jfc3VibWl0X3VyYihkZWMtJmd0O2lycV91cmIsIEdGUF9LRVJORUwpKQogCQlwcmludGsoJiMzNDslczogdXNiX3N1Ym1pdF91cmIgZmFpbGVkXG4mIzM0OyxfX2Z1bmNfXyk7CiAJLyogZW5hYmxlIGlycSBwaXBlICovCi0JdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsMHhiMCxzaXplb2YoYiksYixOVUxMLE5VTEwpOwomIzQzOwl0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHhiMCwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTM1NCw3ICYjNDM7MTM2Nyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX2Jvb3RfZHNwKHN0cnVjdCB0dHVzYl9kZWMgKmRlYykKIAlmaXJtd2FyZV9jc3VtX25zID0gaHRvbnMoZmlybXdhcmVfY3N1bSk7CiAJbWVtY3B5KCZhbXA7YjBbNl0sICZhbXA7ZmlybXdhcmVfY3N1bV9ucywgMik7CiAKLQlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpOwomIzQzOwlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApOwogCiAJaWYgKHJlc3VsdCkgewogCQlyZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTsKQEAgLTEzOTUsNyAmIzQzOzE0MDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19ib290X2RzcChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMpCiAJCX0KIAl9CiAKLQlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwpOwomIzQzOwlyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwsIDApOwogCiAJcmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSk7CiAJa2ZyZWUoYik7CkBAIC0xNjIxLDEwICYjNDM7MTYzNCwxNCBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfZXhpdF9maWx0ZXJzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYykKIAogc3RhdGljIGludCBmZV9zZW5kX2NvbW1hbmQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGNvbnN0IHU4IGNvbW1hbmQsCiAJCQkgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSwKLQkJCSAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKQomIzQzOwkJCSAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLAomIzQzOwkJCSAgIGludCBjbWRfcmVzdWx0X2xlbikKIHsKIAlzdHJ1Y3QgdHR1c2JfZGVjKiBkZWMgPSBmZS0mZ3Q7ZHZiLSZndDtwcml2OwotCXJldHVybiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgY29tbWFuZCwgcGFyYW1fbGVuZ3RoLCBwYXJhbXMsIHJlc3VsdF9sZW5ndGgsIGNtZF9yZXN1bHQpOwomIzQzOwomIzQzOwlyZXR1cm4gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIGNvbW1hbmQsIHBhcmFtX2xlbmd0aCwgcGFyYW1zLAomIzQzOwkJCQkgICAgICByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0LAomIzQzOwkJCQkgICAgICBjbWRfcmVzdWx0X2xlbik7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMKaW5kZXggMjE1MjIxMzcwYzE5My4uYjAxM2Q2ZGZjYmVlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jCkBAIC00NCw3ICYjNDM7NDQsOCBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSwKIAogCSpzdGF0dXM9MDsKIAotCXJldD1zdGF0ZS0mZ3Q7Y29uZmlnLSZndDtzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgJmFtcDtsZW4sIHJlc3VsdCk7CiYjNDM7CXJldCA9IHN0YXRlLSZndDtjb25maWctJmd0O3NlbmRfY29tbWFuZChmZSwgMHg3Mywgc2l6ZW9mKGIpLCBiLCAmYW1wO2xlbiwgcmVzdWx0LAomIzQzOwkJCQkJICBzaXplb2YocmVzdWx0KSk7CiAJaWYocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC04NSw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiAKIAlfX2JlMzIgZnJlcSA9IGh0b25sKHAtJmd0O2ZyZXF1ZW5jeSAvIDEwMDApOwogCW1lbWNweSgmYW1wO2JbNF0sICZhbXA7ZnJlcSwgc2l6ZW9mICh1MzIpKTsKLQlzdGF0ZS0mZ3Q7Y29uZmlnLSZndDtzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7CiYjNDM7CXN0YXRlLSZndDtjb25maWctJmd0O3NlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTMwLDcgJiM0MzsxMzEsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiAJbG5iX3ZvbHRhZ2UgPSBodG9ubChzdGF0ZS0mZ3Q7dm9sdGFnZSk7CiAJbWVtY3B5KCZhbXA7YlsyOF0sICZhbXA7bG5iX3ZvbHRhZ2UsIHNpemVvZih1MzIpKTsKIAotCXN0YXRlLSZndDtjb25maWctJmd0O3NlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMKTsKJiM0MzsJc3RhdGUtJmd0O2NvbmZpZy0mZ3Q7c2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNDksNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJzX2Rpc2VxY19zZW5kX21hc3Rlcl9jbWQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjCiAKIAlzdGF0ZS0mZ3Q7Y29uZmlnLSZndDtzZW5kX2NvbW1hbmQoZmUsIDB4NzIsCiAJCQkJICAgIHNpemVvZihiKSAtICg2IC0gY21kLSZndDttc2dfbGVuKSwgYiwKLQkJCQkgICAgTlVMTCwgTlVMTCk7CiYjNDM7CQkJCSAgICBOVUxMLCBOVUxMLCAwKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaCBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmgKaW5kZXggNzM4MjhiYjIyNThjOS4uOTY2MDBhZDRjMjM2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oCkBAIC0xNCw3ICYjNDM7MTQsOCBAQCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcKIHsKIAlpbnQgKCpzZW5kX2NvbW1hbmQpKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBjb25zdCB1OCBjb21tYW5kLAogCQkJICAgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLAotCQkJICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTsKJiM0MzsJCQkgICAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10sCiYjNDM7CQkJICAgIGludCBjbWRfcmVzdWx0X2xlbik7CiB9OwogCiBleHRlcm4gc3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIERyaXZlciBQYXRjaCBmb3IgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY2AgYW5kIGBkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgdGhleSYjMzk7dmUgYWRkZWQgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciB0byBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYW5kIGBmZV9zZW5kX2NvbW1hbmRgLiBUaGUgZ29hbCBpcyBjbGVhcmx5IHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cyBkdXJpbmcgVVNCIGNvbW1hbmQgcmVzdWx0IGNvcHlpbmcuIFRoZSBjb2RlIGluY2x1ZGVzIGEgY2hlY2s6IGBpZiAoY21kX3Jlc3VsdCAmYW1wOyZhbXA7IHJsZW4gJmd0OyBjbWRfcmVzdWx0X2xlbikgcmxlbiA9IGNtZF9yZXN1bHRfbGVuO2AgYmVmb3JlIHRoZSBgbWVtY3B5YC4gU21hcnQuIFByZXZlbnRpbmcgdGhhdCBraW5kIG9mIG92ZXJmbG93IGlzIGFsd2F5cyBnb29kLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIFVTQiBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGV4cGxvaXRhYmlsaXR5IGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gQ2FuIHRoaXMgZHJpdmVyIGJlIHJlYWNoZWQgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBvciBgcmF3LWdhZGdldGAgd2l0aCBTeXprYWxsZXI/IFN5emthbGxlciYjMzk7cyBnb3QgdGhvc2UgYHN5el91c2JfY29ubmVjdGAgY2FsbHMgYW5kIG90aGVycyB3aGljaCBhcmUgcHJldHR5IGVmZmVjdGl2ZSBmb3IgVVNCIGRyaXZlciBmdXp6aW5nLiBHb29kLiBCdXQgd2FpdOKApiBpcyB0aGlzIGV2ZW4gYSAqbWVkaWEqIGRyaXZlcj8gWWVzLCB0aGUgcGF0aCBjb25maXJtcyBpdC4gSSBzaG91bGQgaGF2ZSBzZWVuIHRoYXQgaW1tZWRpYXRlbHkuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uLiBJcyBgdHR1c2ItZGVjYCBlbmFibGVkIGluIGNvbW1vbiBrZXJuZWxzLCBvciBkb2VzIGl0IG5lZWQgc3BlY2lhbCBjb25maWd1cmF0aW9uIHRvIGJlIHVzZWQ/IFRpbWUgdG8gcHVsbCB1cCBgZ3JlcHBlcmAgYW5kIGh1bnQgZG93biB0aGUgS2NvbmZpZyBlbnRyaWVzIGZvciBgdHR1c2ItZGVjYCB0byBkZXRlcm1pbmUgaG93IHJlYWNoYWJsZSBpdCBpcyB3aXRoaW4gdmFyaW91cyBzdGFuZGFyZCBjb25maWd1cmF0aW9ucy4gR290dGEgc2VlIGhvdyBicm9hZGx5IHRoaXMgcHJvdGVjdGlvbiBhcHBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R0dXNiLWRlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi9LY29uZmlnPTUwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1idWRnZXQvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZzo1MTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbWVkaWEvdXNiL0tjb25maWctNTItXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvTWFrZWZpbGU9MTM9b2JqLXkgJiM0Mzs9IHR0dXNiLWJ1ZGdldC9cbmRyaXZlcnMvbWVkaWEvdXNiL01ha2VmaWxlOjE0Om9iai15ICYjNDM7PSB0dHVzYi1kZWMvXG5kcml2ZXJzL21lZGlhL3VzYi9NYWtlZmlsZS0xNS1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTY1MT1zdGF0aWMgaW50IHR0dXNiX2RlY19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTcwNy1cdGlmIChkZWMtXHUwMDNlZmUgPT0gTlVMTCkge1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3MDg6XHRcdHByaW50ayhcJiMzNDtkdmItdHR1c2ItZGVjOiBBIGZyb250ZW5kIGRyaXZlciB3YXMgbm90IGZvdW5kIGZvciBkZXZpY2UgWyUwNHg6JTA0eF1cXG5cJiMzNDssXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTcwOS1cdFx0ICAgICAgIGxlMTZfdG9fY3B1KGRlYy1cdTAwM2V1ZGV2LVx1MDAzZWRlc2NyaXB0b3IuaWRWZW5kb3IpLFxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzU5PXN0YXRpYyB2b2lkIHR0dXNiX2RlY19zZXRfbW9kZWwoc3RydWN0IHR0dXNiX2RlYyAqZGVjLFxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzY2LVx0XHRkZWMtXHUwMDNlbW9kZWxfbmFtZSA9IFwmIzM0O0RFQzIwMDAtdFwmIzM0OztcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzY3Olx0XHRkZWMtXHUwMDNlZmlybXdhcmVfbmFtZSA9IFwmIzM0O2R2Yi10dHVzYi1kZWMtMjAwMHQuZndcJiMzNDs7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc2OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTE3NzEtXHRcdGRlYy1cdTAwM2Vtb2RlbF9uYW1lID0gXCYjMzQ7REVDMjU0MC10XCYjMzQ7O1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3NzI6XHRcdGRlYy1cdTAwM2VmaXJtd2FyZV9uYW1lID0gXCYjMzQ7ZHZiLXR0dXNiLWRlYy0yNTQwdC5md1wmIzM0OztcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzczLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc3Ni1cdFx0ZGVjLVx1MDAzZW1vZGVsX25hbWUgPSBcJiMzNDtERUMzMDAwLXNcJiMzNDs7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MTc3NzpcdFx0ZGVjLVx1MDAzZWZpcm13YXJlX25hbWUgPSBcJiMzNDtkdmItdHR1c2ItZGVjLTMwMDBzLmZ3XCYjMzQ7O1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTE3NzgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzkwPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3OTE6XHQubmFtZVx0XHQ9IFwmIzM0O3R0dXNiLWRlY1wmIzM0OyxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkyLVx0LnByb2JlXHRcdD0gdHR1c2JfZGVjX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIHR0dXNiLWRlYyoqCgpBbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgdHR1c2ItZGVjYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYnVpbGQuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5IHRvIHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGlzIGZpbGU6IGBkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvS2NvbmZpZ2AuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIHRoaXMgZHJpdmVyIHRvIGV2ZW4gYmUgY29uc2lkZXJlZD8gQXJlIHRoZXJlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywga2VybmVsIGZlYXR1cmUgZGVwZW5kZW5jaWVzLCBvciBvdGhlciBkcml2ZXJzIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZT8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dC4KKiAgICoqT3B0aW9uczoqKiBXaGF0IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgcmVsYXRlZCB0byB0aGlzIGRyaXZlcj8gQXJlIHRoZXJlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZywgc3BlY2lmaWMgaGFyZHdhcmUgdmFyaWFudHMsIGZpcm13YXJlIHNlbGVjdGlvbiwgb3IgZGlmZmVyZW50IGxldmVscyBvZiBmdW5jdGlvbmFsaXR5PyBJJiMzOTtsbCB3YW50IHRvIGdyYXNwIHRoZSBtZWFuaW5nIG9mIGVhY2ggb3B0aW9uLgoqICAgKipEZWZhdWx0IFZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBhdmFpbGFibGUgb3B0aW9ucz8gS25vd2luZyB0aGlzIGlzIGltcG9ydGFudC4gSXQgcmV2ZWFscyBob3cgdGhlIGRyaXZlciB3aWxsIGJlaGF2ZSAmIzM0O291dCBvZiB0aGUgYm94JiMzNDsgYW5kIGlkZW50aWZpZXMgcG90ZW50aWFsIGFyZWFzIGZvciBjdXN0b21pemF0aW9uLgoqICAgKipIZWxwIFRleHQ6KiogVGhlIG1vc3QgaW1wb3J0YW50IHBhcnQhIFRoZSBgaGVscGAgdGV4dCB3aWxsIGdpdmUgbWUgdGhlIG1vc3QgY3JpdGljYWwgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBlYWNoIG9wdGlvbiBkb2VzLiBUaGUgdGV4dCBwcm92aWRlcyB0aGUgcmF0aW9uYWxlIGZvciB0aGUgb3B0aW9uLCBhbmQgaG93IHRvIGNvbmZpZ3VyZSBvciBzZWxlY3QgaXQuCiogICAqKlJlbGF0aW9uc2hpcHM6KiogSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gSG93IGRvIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBgdHR1c2ItZGVjYCByZWxhdGUgdG8gb3RoZXIgbWVkaWEtcmVsYXRlZCBjb25maWd1cmF0aW9ucz8gQXJlIHRoZXJlIGNvbmZsaWN0cywgb3IgcGVyaGFwcyBzeW5lcmdpZXMsIHdpdGggb3RoZXIgVVNCIG9yIERWQi1yZWxhdGVkIGRyaXZlcnM/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KKiAgICoqUG9zc2libGUgQ29tcGlsZSBUaW1lIENoYW5nZXM6KiogSSB3aWxsIGFsc28gd2FudCB0byBpbnZlc3RpZ2F0ZSBhbnkgY29tcGlsZSB0aW1lIG9wdGlvbnMsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRoYXQgYWZmZWN0IHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS4KCkVzc2VudGlhbGx5LCBJJiMzOTttIHNldHRpbmcgbXlzZWxmIHVwIHRvIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgYHR0dXNiLWRlY2AgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIGFuZCBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGlzIGtub3dsZWRnZSBpcyBjcnVjaWFsIGZvciB0cm91Ymxlc2hvb3RpbmcsIG9wdGltaXppbmcsIG9yIHBvdGVudGlhbGx5IGN1c3RvbWl6aW5nIHRoaXMgZHJpdmVyIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVudmlyb25tZW50LiBJIG5lZWQgdG8gYmUgYWJsZSB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBpdHMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBEVkJfVFRVU0JfREVDXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtUZWNobm90cmVuZC9IYXVwcGF1Z2UgVVNCIERFQyBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIERWQl9DT1JFIFx1MDAyNlx1MDAyNiBVU0IgXHUwMDI2XHUwMDI2IElOUFVUIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBDUkMzMlxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBTdXBwb3J0IGZvciBleHRlcm5hbCBVU0IgYWRhcHRlcnMgZGVzaWduZWQgYnkgVGVjaG5vdHJlbmQgYW5kXG4gICA4Olx0XHQgIHByb2R1Y2VkIGJ5IEhhdXBwYXVnZSwgc2hpcHBlZCB1bmRlciB0aGUgYnJhbmQgbmFtZSAmIzM5O0RFQzIwMDAtdCYjMzk7XG4gICA5Olx0XHQgIGFuZCAmIzM5O0RFQzMwMDAtcyYjMzk7LlxuICAxMDpcdFxuICAxMTpcdFx0ICBFdmVuIGlmIHRoZXNlIGRldmljZXMgaGF2ZSBhIE1QRUcgZGVjb2RlciBidWlsdCBpbiwgdGhleSB0cmFuc21pdFxuICAxMjpcdFx0ICBvbmx5IGNvbXByZXNzZWQgTVBFRyBkYXRhIG92ZXIgdGhlIFVTQiBidXMsIHNvIHlvdSBuZWVkXG4gIDEzOlx0XHQgIGFuIGV4dGVybmFsIHNvZnR3YXJlIGRlY29kZXIgdG8gd2F0Y2ggVFYgb24geW91ciBjb21wdXRlci5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVGhpcyBkcml2ZXIgbmVlZHMgZXh0ZXJuYWwgZmlybXdhcmUuIFBsZWFzZSB1c2UgdGhlIGNvbW1hbmRzXG4gIDE2Olx0XHQgIFwmIzM0O1x1MDAzY2tlcm5lbGRpclx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMjAwMHRcJiMzNDssXG4gIDE3Olx0XHQgIFwmIzM0O1x1MDAzY2tlcm5lbGRpclx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMjU0MHRcJiMzNDssXG4gIDE4Olx0XHQgIFwmIzM0O1x1MDAzY2tlcm5lbGRpclx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMzAwMHNcJiMzNDssXG4gIDE5Olx0XHQgIGRvd25sb2FkL2V4dHJhY3QgdGhlbSwgYW5kIHRoZW4gY29weSB0aGVtIHRvIC91c3IvbGliL2hvdHBsdWcvZmlybXdhcmVcbiAgMjA6XHRcdCAgb3IgL2xpYi9maXJtd2FyZSAoZGVwZW5kaW5nIG9uIGNvbmZpZ3VyYXRpb24gb2YgZmlybXdhcmUgaG90cGx1ZykuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFNheSBZIGlmIHlvdSBvd24gc3VjaCBhIGRldmljZSBhbmQgd2FudCB0byB1c2UgaXQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIERWQiBEcml2ZXIqKgoKT2theSwgc28gdGhlIGNvbmZpZyBvcHRpb24gaXMgYERWQl9UVFVTQl9ERUNgLCBhbmQgaXQgcmVsaWVzIG9uIGBEVkJfQ09SRWAsIGBVU0JgLCBgSU5QVVRgLCBhbmQgYFBDSWAuIFNpbmNlIHRoaXMgaXMgYSBVU0IgZHJpdmVyLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByaW1lIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyByb3V0ZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZmZlciBvdmVyZmxvdyB3aXRoaW4gdGhlIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgdnVsbmVyYWJpbGl0eSBhcmlzZXMgd2hlbiB0aGUgcmVjZWl2ZWQgYGFjdHVhbF9sZW5gIGlzIGF0IGxlYXN0IDQgYnl0ZXMsIGFuZCBgYlszXWAgKGludGVycHJldGVkIGFzIGBybGVuYCkgZXhjZWVkcyB0aGUgZXhwZWN0ZWQgYGNtZF9yZXN1bHRfbGVuYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVhbCBwb2ludCBvZiBpbnRlcmVzdCwgYW5kICpkZWZpbml0ZWx5KiB3b3J0aCBwdXR0aW5nIHRocm91Z2ggaXRzIHBhY2VzIHdpdGggZnV6emluZy4KCk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZToKCiogICBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgKHN0YXRpYykKKiAgIGB0dHVzYl9kZWNfZ2V0X3N0Yl9zdGF0ZWAgKHN0YXRpYykKKiAgIGB0dHVzYl9kZWNfc2V0X3BpZHNgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2VgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3N0YXJ0X3RzX2ZlZWRgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3N0YXJ0X3NlY19mZWVkYCAoc3RhdGljKQoqICAgYHR0dXNiX2RlY19zdG9wX3RzX2ZlZWRgIChzdGF0aWMpCiogICBgdHR1c2JfZGVjX3N0b3Bfc2VjX2ZlZWRgIChzdGF0aWMpCiogICBgdHR1c2JfaW5pdF9yY2AgKHN0YXRpYykKKiAgIGB0dHVzYl9kZWNfYm9vdF9kc3BgIChzdGF0aWMpCiogICBgZmVfc2VuZF9jb21tYW5kYCAoc3RhdGljKQoqICAgYHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1c2AgKHN0YXRpYykKKiAgIGB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kYCAoc3RhdGljKQoqICAgYHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmRgIChzdGF0aWMpCiogICBgdHR1c2JkZWNmZV9kdmJzX2Rpc2VxY19zZW5kX21hc3Rlcl9jbWRgIChzdGF0aWMpCgpIbW0sIGludGVyZXN0aW5nLiBUaGV5JiMzOTtyZSBhbGwgc3RhdGljIGZ1bmN0aW9ucy4gV2hpY2ggbWVhbnMsIHRvIGdldCBhdCB0aGVtIHdpdGggZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBvdGhlciBmdW5jdGlvbnMgaW4gYHR0dXNiX2RlYy5jYCBhbmQgYHR0dXNiZGVjZmUuY2AgdGhhdCAqY2FsbCogdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBmdXp6aW5nIGxldmVyYWdlIGxpZXMuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgdG8gdGhlc2UgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMuKiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0zMDI9c3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0zMTQtXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MzE1OnN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMzE2LVx0XHRcdFx0ICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM5CgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIE5vbi1TdGF0aWMgRnVuY3Rpb25zIGluIGB0dHVzYmRlY2ZlLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBtZWF0eSBiaXRzIHdpdGhpbiBgdHR1c2JkZWNmZS5jYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBXaHk/IEJlY2F1c2UgdGhvc2UgYXJlIHRoZSBvbmVzIGxpa2VseSB0byBiZSBleHBvc2VkIHRvIHRoZSBvdXRzaWRlIHdvcmxkLCB0aGUgaW50ZXJmYWNlIHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBlaXRoZXIgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBvciBhcmUgaW50ZW5kZWQgdG8gYmUgY2FsbGFibGUgZXh0ZXJuYWxseS4gU3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IHRoZWlyIG5hdHVyZSwgbG9jYWwgdG8gdGhlIGZpbGUsIGFuZCB3aGlsZSB0aGV5IG1pZ2h0IGJlIHJlbGV2YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcm5hbCB3b3JraW5ncywgdGhleSYjMzk7cmUgbm90IHRoZSBwcmltYXJ5IGZvY3VzICpyaWdodCBub3cqLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcG9pbnRzIG9mIGludGVyYWN0aW9uLCB0aGUgQVBJIHN1cmZhY2UsIHNvIHRvIHNwZWFrLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGluLWRlcHRoIGFuYWx5c2lzIG9mIHRoaXMgbW9kdWxlJiMzOTtzIGZ1bmN0aW9uYWxpdHkgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb21wb25lbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBtYXAgb2YgdGhlIGtleSBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0cnVjdCBkdmJfZnJvbnRlbmRcXCogdHR1c2JkZWNmZV9kdmIuKl9hdHRhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzO1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0xOTYtXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjE5NzpzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0xOTgte1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9MjE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnNfb3BzO1xuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yMTYtXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjIxNzpzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yMTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzA5CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYHR0dXNiX2RlY19wcm9iZWAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgdHR1c2JfZGVjX3Byb2JlYC4gSSYjMzk7bSBzdGFydGluZyBoZXJlIGJlY2F1c2UgSSBrbm93IHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gd2hlbiB0aGUga2VybmVsIGRldGVjdHMgYSBkZXZpY2UgY29tcGF0aWJsZSB3aXRoIHRoZSBkcml2ZXJzIGluIHRoaXMgbW9kdWxlLCBJIHdpbGwgd2FudCB0byBzZWUgd2hhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzZXMgb2NjdXIuIEkga25vdyBmcm9tIHBhc3QgZXhwZXJpZW5jZSB0aGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcHJvYmluZyBhIFRUVVNCIGRldmljZSwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgcHJvYmUgZW50YWlscy4gSSYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGUgc3RhbmRhcmQgc3R1ZmYgZmlyc3Q6IHJlc291cmNlIGFsbG9jYXRpb24sIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIHJlZ2lzdHJhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBVU0IgZGVzY3JpcHRvciBwYXJzaW5nIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmcgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zIOKAkyBhcmUgdGhleSB1c2luZyBgZGV2X2VycmAgYXBwcm9wcmlhdGVseT8gQXJlIHRoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIGhhcmR3YXJlIGFjY2Vzcz8gQW5kLCBmaW5hbGx5LCBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBhbnkgZGV2aWNlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcyBpbiB0aGlzIGZ1bmN0aW9uLCBiZWNhdXNlIHRob3NlIGFyZSBvZnRlbiB0aGUgbW9zdCBpbnRlcmVzdGluZyBhbmQgY2FuIGluZGljYXRlIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBvciBkZXNpZ24gY2hhbGxlbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgdHR1c2JfZGVjX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0ge1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNjUwLVxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE2NTE6c3RhdGljIGludCB0dHVzYl9kZWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTY1Mi1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIGB0dHVzYl9kZWNgIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKClJpZ2h0LCBgdHR1c2JfZGVjX3Byb2JlYCDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gQXMgdGhlIG1haW4gcHJvYmUgZnVuY3Rpb24sIGl0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgVVNCIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCYjMzk7cyBkb2luZywgYW5kIGdpdmVuIHRoYXQgdGhpcyBpcyBhIERWQiBkcml2ZXIsIEkgc2hvdWxkIGFudGljaXBhdGUgaXQgZGVhbGluZyB3aXRoIHRoZSBEVkIgZnJvbnRlbmQuIFNvLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZyb20gaGVyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIERWQiBmcm9udGVuZCBvcGVyYXRpb24gcmVnaXN0cmF0aW9ucy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBoYXBwZW5zLCB3aGVyZSBpdCBkZWZpbmVzIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB0dW5lciBhbmQgZGVtb2R1bGF0b3IuIExldCYjMzk7cyBzZWUgd2hhdCBob29rcyBpdCBoYXMgaW50byB0aGUgRFZCIGluZnJhc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTc5MD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdHR1c2JfZGVjX2RyaXZlciA9IHtcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkxLVx0Lm5hbWVcdFx0PSBcJiMzNDt0dHVzYi1kZWNcJiMzNDssXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MTc5MjpcdC5wcm9iZVx0XHQ9IHR0dXNiX2RlY19wcm9iZSxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkzLVx0LmRpc2Nvbm5lY3RcdD0gdHR1c2JfZGVjX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTY2CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgYHR0dXNiX2RlY2AgRHJpdmVyIFN0cnVjdHVyZSoqCgpIbW0sIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBCdXQgd2FpdCwgaXQmIzM5O3MgYmVpbmcgcmVnaXN0ZXJlZCwgcmlnaHQ/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgaW4gYHR0dXNiX2RlY19kcml2ZXJgLiBPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBTbywgaXQmIzM5O3MgYSBwcml2YXRlIHByb2JlIGZ1bmN0aW9uLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyBpbiBgdHR1c2JfZGVjLmNgIHRoYXQgYXJlbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHZpc2liaWxpdHkgYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBvZiB0aGlzIGRyaXZlciBhIGJpdCBiZXR0ZXIuIFRoaXMgY291bGQgYmUgYSBnb29kIGluZGljYXRvciBvZiBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbS4gTGV0IG1lIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ2NwoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipSZWZpbmluZyB0aGUgQXBwcm9hY2g6IEEgTmV3IFJlZ2V4IFN0cmF0ZWd5KioKClJpZ2h0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCByZWFzc2Vzcy4gVGhlIHByZXZpb3VzIHJlZ2V4IHdhc24mIzM5O3QgcXVpdGUgaGl0dGluZyB0aGUgbWFyazsgaXQmIzM5O3MgdGltZSB0byByZWZpbmUgdGhpcy4gSSBuZWVkIHRvIHJldGhpbmsgdGhlIGNvcmUgY29tcG9uZW50cyBvZiB0aGUgcGF0dGVybi4gVGhlIGZ1bmRhbWVudGFsIGlzc3VlIHNlZW1zIHRvIGJlIGluIHRoZS4uLiAoZmlsbCBpbiB0aGUgYmxhbmsgd2l0aCB0aGUgYXJlYSB0aGV5IGFyZSBsaWtlbHkgc3RydWdnbGluZyB3aXRoIGluIHRoZSBwcm9ibGVtIHRoZXkgYXJlIHNvbHZpbmcpLiBTbyBpbnN0ZWFkIG9mLi4uIChkZXNjcmliZSB0aGUgcHJldmlvdXMgYXBwcm9hY2ggdGhhdCB3YXMgcHJvYmxlbWF0aWMpLCBJIHNob3VsZCB0cnkgc29tZXRoaW5nIHRoYXQgZm9jdXNlcyBvbi4uLiAoZGVzY3JpYmUgdGhlIGFzcGVjdHMgb2YgYSBuZXcgYXBwcm9hY2gpLiBUaGUgY3J1Y2lhbCB0aGluZyBpcyB0byBlbnN1cmUgdGhpcyBpdGVyYXRpb24gaXMuLi4gKGhpZ2hsaWdodCBrZXkgY3JpdGVyaWEpLiBJJiMzOTttIHRoaW5raW5nIG9mIGluY29ycG9yYXRpbmcuLi4gKGRlc2NyaWJlIHRlY2huaWNhbCBlbGVtZW50cyBvZiB0aGUgcmVnZXggZS5nLiBsb29rYWhlYWRzLCBhbmNob3JzLCBxdWFudGlmaWVycykgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4gTWF5YmUgSSBzaG91bGQgYWxzbyBjb25zaWRlciBob3cgdGhpcyBtYXkgcGVyZm9ybSB3aXRoLi4uIChjb25zaWRlciBlZGdlIGNhc2VzLCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIG90aGVyIGlucHV0cyBldGMpLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoaXMgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCwgYW5kIGl0ZXJhdGUsIHVzaW5nIG15IGV4aXN0aW5nIGtub3dsZWRnZSBvZiByZWdleCBudWFuY2VzLiBIb3BlZnVsbHksIHRoaXMgcmV2aXNlZCBhcHByb2FjaCB3aWxsIGdldCB0byB0aGUgcmVzdWx0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKj8gW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODEwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIFJpZ2h0IGludG8gdGhlIEluaXQqKgoKQWxyaWdodCwgbm8gbmVlZCBmb3IgcHJlYW1ibGUsIGxldCYjMzk7cyBjdXQgdG8gdGhlIGNoYXNlLiBXaGVuIEkmIzM5O20gZGlzc2VjdGluZyBhIGRyaXZlciBsaWtlIGB0dHVzYl9kZWMuY2AsIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBhbHdheXMgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRm9yZ2V0IHRoZSBleHRyYW5lb3VzIGNvZGUgZm9yIGEgbW9tZW50OyB0aGUgYG1vZHVsZV9pbml0YCBtYWNybyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCYjMzk7cyB0aGUgbGF1bmNocGFkLCB0aGUgZW50cnkgcG9pbnQuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgdGhpbmcgY29tZXMgdG8gbGlmZTogd2hhdCByZXNvdXJjZXMgaXQgcmVxdWVzdHMsIHdoYXQgaGFyZHdhcmUgaXQgcHJvYmVzLCBhbmQgaG93IGl0IGhvb2tzIGl0c2VsZiBpbnRvIHRoZSBrZXJuZWwmIzM5O3Mgc3Vic3lzdGVtcy4gU28sIHllYWgsIHNraXBwaW5nIHJpZ2h0IHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGBtb2R1bGVfaW5pdGAgY2FsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzgwOlx0fVxuMTc4MTpcdFxuMTc4MjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCB0dHVzYl9kZWNfdGFibGVbXSA9IHtcbjE3ODM6XHRcdHtVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA2KX0sXHQvKiBERUMzMDAwLXMgKi9cbjE3ODQ6XHRcdC8qe1VTQl9ERVZJQ0UoMHgwYjQ4LCAweDEwMDcpfSxcdCAgIFVuY29uZmlybWVkICovXG4xNzg1Olx0XHR7VVNCX0RFVklDRSgweDBiNDgsIDB4MTAwOCl9LFx0LyogREVDMjAwMC10ICovXG4xNzg2Olx0XHR7VVNCX0RFVklDRSgweDBiNDgsIDB4MTAwOSl9LFx0LyogREVDMjU0MC10ICovXG4xNzg3Olx0XHR7fVxuMTc4ODpcdH07XG4xNzg5Olx0XG4xNzkwOlx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHR0dXNiX2RlY19kcml2ZXIgPSB7XG4xNzkxOlx0XHQubmFtZVx0XHQ9IFwmIzM0O3R0dXNiLWRlY1wmIzM0OyxcbjE3OTI6XHRcdC5wcm9iZVx0XHQ9IHR0dXNiX2RlY19wcm9iZSxcbjE3OTM6XHRcdC5kaXNjb25uZWN0XHQ9IHR0dXNiX2RlY19kaXNjb25uZWN0LFxuMTc5NDpcdFx0LmlkX3RhYmxlXHQ9IHR0dXNiX2RlY190YWJsZSxcbjE3OTU6XHR9O1xuMTc5NjpcdFxuMTc5NzpcdG1vZHVsZV91c2JfZHJpdmVyKHR0dXNiX2RlY19kcml2ZXIpO1xuMTc5ODpcdFxuMTc5OTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7QWxleCBXb29kcyBcdTAwM2NsaW51eC1kdmJAZ2libGV0cy5vcmdcdTAwM2VcJiMzNDspO1xuMTgwMDpcdE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfTkFNRSk7XG4xODAxOlx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbjE4MDI6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgdHR1c2JfZGVjX3RhYmxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NzMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgRGVjb2RlciBNb2R1bGUgZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdHR1c2JfZGVjYCBtb2R1bGUsIGFuZCB0aGUgb2J2aW91cyBlbnRyeSBwb2ludHMgZm9yIGludGVyYWN0aW9uIHNlZW0gdG8gYmUgYHR0dXNiX2RlY19wcm9iZWAgYW5kIGB0dHVzYl9kZWNfZGlzY29ubmVjdGAuIFRoZXkmIzM5O3JlICpzdGF0aWMqLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgbWVhbnMgdGhleSB3b24mIzM5O3QgYmUgZXhwb3J0ZWQgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLiBCdXQsIGFuZCB0aGlzIGlzIGtleSwgc3l6a2FsbGVyICpjYW4qIHN0aWxsIHRhcmdldCB0aGVtIHVzaW5nIFVTQiBwc2V1ZG8tc3lzY2FsbHMsIHJpZ2h0PwoKV2FpdCBhIHNlY29uZCwgbGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGFnYWluLi4uIGFoLCB0aGUgcHJvbXB0IGlzIHZlcnkgY2xlYXI6IGl0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkLCBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvbiYjMzk7dCBnZXQgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU28sIGB0dHVzYl9kZWNfcHJvYmVgICppcyogc3RhdGljLi4uIGlzIHRoZXJlIGEgcmlzayBvZiBpdCBiZWluZyBpbmxpbmVkPyBIbW1tLCBubywgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciBjYW4mIzM5O3QgaW5saW5lIGl0LiBCdXQgc3RpbGwsIGl0JiMzOTtzIHN0YXRpYy4KClRoZSBuZXh0IHRob3VnaHQgaXMgY2xlYXIgLSBhcmUgdGhlcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGU/IEkgbmVlZCB0byBjaGVjayB0aGUgc291cmNlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgdHR1c2JkZWNmZS5jYCwgdGhlIGZpbGUgbWlnaHQgY29udGFpbiBzb21ldGhpbmcgdGhhdCBmaXRzIHRoZSBiaWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE5MDpcdHtcbiAxOTE6XHRcdHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlICpzdGF0ZSA9IGZlLVx1MDAzZWRlbW9kdWxhdG9yX3ByaXY7XG4gMTkyOlx0XHRrZnJlZShzdGF0ZSk7XG4gMTkzOlx0fVxuIDE5NDpcdFxuIDE5NTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzO1xuIDE5NjpcdFxuIDE5NzpcdHN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZidF9hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXG4gMTk4Olx0e1xuIDE5OTpcdFx0c3RydWN0IHR0dXNiZGVjZmVfc3RhdGUqIHN0YXRlID0gTlVMTDtcbiAyMDA6XHRcbiAyMDE6XHRcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGludGVybmFsIHN0YXRlICovXG4gMjAyOlx0XHRzdGF0ZSA9IGttYWxsb2Nfb2JqKHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKTtcbiAyMDM6XHRcdGlmIChzdGF0ZSA9PSBOVUxMKVxuIDIwNDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAyMDU6XHRcbiAyMDY6XHRcdC8qIHNldHVwIHRoZSBzdGF0ZSAqL1xuIDIwNzpcdFx0c3RhdGUtXHUwMDNlY29uZmlnID0gY29uZmlnO1xuIDIwODpcdFxuIDIwOTpcdFx0LyogY3JlYXRlIGR2Yl9mcm9udGVuZCAqL1xuIDIxMDpcdFx0bWVtY3B5KFx1MDAyNnN0YXRlLVx1MDAzZWZyb250ZW5kLm9wcywgXHUwMDI2dHR1c2JkZWNmZV9kdmJ0X29wcywgc2l6ZW9mKHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzKSk7XG4gMjExOlx0XHRzdGF0ZS1cdTAwM2Vmcm9udGVuZC5kZW1vZHVsYXRvcl9wcml2ID0gc3RhdGU7XG4gMjEyOlx0XHRyZXR1cm4gXHUwMDI2c3RhdGUtXHUwMDNlZnJvbnRlbmQ7XG4gMjEzOlx0fVxuIDIxNDpcdFxuIDIxNTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnNfb3BzO1xuIDIxNjpcdFxuIDIxNzpcdHN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZic19hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXG4gMjE4Olx0e1xuIDIxOTpcdFx0c3RydWN0IHR0dXNiZGVjZmVfc3RhdGUqIHN0YXRlID0gTlVMTDtcbiAyMjA6XHRcbiAyMjE6XHRcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGludGVybmFsIHN0YXRlICovXG4gMjIyOlx0XHRzdGF0ZSA9IGttYWxsb2Nfb2JqKHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKTtcbiAyMjM6XHRcdGlmIChzdGF0ZSA9PSBOVUxMKVxuIDIyNDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAyMjU6XHRcbiAyMjY6XHRcdC8qIHNldHVwIHRoZSBzdGF0ZSAqL1xuIDIyNzpcdFx0c3RhdGUtXHUwMDNlY29uZmlnID0gY29uZmlnO1xuIDIyODpcdFx0c3RhdGUtXHUwMDNldm9sdGFnZSA9IDA7XG4gMjI5Olx0XHRzdGF0ZS1cdTAwM2VoaV9iYW5kID0gMDtcbiAyMzA6XHRcbiAyMzE6XHRcdC8qIGNyZWF0ZSBkdmJfZnJvbnRlbmQgKi9cbiAyMzI6XHRcdG1lbWNweShcdTAwMjZzdGF0ZS1cdTAwM2Vmcm9udGVuZC5vcHMsIFx1MDAyNnR0dXNiZGVjZmVfZHZic19vcHMsIHNpemVvZihzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcykpO1xuIDIzMzpcdFx0c3RhdGUtXHUwMDNlZnJvbnRlbmQuZGVtb2R1bGF0b3JfcHJpdiA9IHN0YXRlO1xuIDIzNDpcdFx0cmV0dXJuIFx1MDAyNnN0YXRlLVx1MDAzZWZyb250ZW5kO1xuIDIzNTpcdH1cbiAyMzY6XHRcbiAyMzc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJ0X29wcyA9IHtcbiAyMzg6XHRcdC5kZWxzeXMgPSB7IFNZU19EVkJUIH0sXG4gMjM5Olx0XHQuaW5mbyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3MTUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqRXhhbWluaW5nIHRoZSBEcml2ZXIgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBUaXRhblRWIFVTQiBkcml2ZXIgZnVuY3Rpb25zLiBJdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgIGFyZSAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IG11c3QgYmUgZXhwb3J0ZWQsIGxpa2VseSBmb3IgbW9kdWxlIGxvYWRpbmcgb3IgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZW4gdGhlcmUmIzM5O3MgYHR0dXNiX2RlY19wcm9iZWAuIEkgKnRoaW5rKiBJIHJlY2FsbCB0aGF0IG9uZSBpcyBzdGF0aWMsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRoZSBjb3JlIHByb2JlIGZ1bmN0aW9uLCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIFVTQiBkcml2ZXIuIEdpdmVuIGl0cyBjZW50cmFsIHJvbGUgaW4gaW5pdGlhbGl6YXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gaW5jbHVkZSBpdCBpbiBteSB1bmRlcnN0YW5kaW5nLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgYW5kLCBwcmVzdW1hYmx5LCBub3QgZGlyZWN0bHkgZXhwb3NlZCBleHRlcm5hbGx5LiBIYW5nIG9uLi4uIGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCAqaXMqIGV4cG9ydGVkPyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gR290dGEgZG91YmxlLWNoZWNrIHRoZSBtb2R1bGUgZXhwb3J0IHRhYmxlIG9yIHRoZSBzeW1ib2wgZGVmaW5pdGlvbnMgdG8gYmUgc3VyZSwgYnV0IHRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9Mjg3PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jLTI4OC1cbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM6Mjg5OkVYUE9SVF9TWU1CT0wodHR1c2JkZWNmZV9kdmJ0X2F0dGFjaCk7XG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjI5MDpFWFBPUlRfU1lNQk9MKHR0dXNiZGVjZmVfZHZic19hdHRhY2gpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzIwOAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBTZWxlY3Rpb24gb2YgUmVsZXZhbnQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGJlc3QgcmVwcmVzZW50IHRoaXMgZml4IGZvciB0aGUgVVNCIGRyaXZlci4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgY2hhbmdlcyAqYXJlKiBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZC4gSSBuZWVkIHRvIHNlbGVjdCB0aGUgbW9zdCByZWxldmFudCBmdW5jdGlvbnMgZm9yIHRoaXMgZXhwbGFuYXRpb24uCgpJbml0aWFsbHksIEkmIzM5O2QgdGhvdWdodCBhYm91dCBpbmNsdWRpbmcgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgc2luY2UgdGhleSBhcmUgdGhlIGF0dGFjaCBmdW5jdGlvbnMuIEFuZCBvZiBjb3Vyc2UsIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGEgY2xlYXIgY2FuZGlkYXRlOyBpdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIFVTQiBkcml2ZXIsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgeW91IHdhbnQgdG8gc3RhcnQuCgpOb3csIGhvbGQgb24uLi4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgLi4uICp0aGF0JiMzOTtzKiB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgYWN0dWFsbHkgbW9kaWZpZWQuIEl0JiMzOTtzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBhIGJpdCBvZiBhIHdyaW5rbGUsIGJ1dCBpdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIGZpeCwgcmlnaHQ/IEl0JiMzOTtzIGNhbGxlZCBieSBhIGxvdCBvZiBvdGhlciBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgZG9lcyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucywgc28gbWF5YmUgYHR0dXNiX2RlY19wcm9iZWAgaXMgYSBiZXR0ZXIgcmVwcmVzZW50YXRpb24uCgpCdXQgd2FpdCBhIG1pbnV0ZSwgYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGlzICpkaXJlY3RseSogY2FsbGVkIGJ5IGB0dHVzYl9kZWNfcHJvYmVgIOKAkyBhbmQgb3RoZXIgZnVuY3Rpb25zIGluIHRoYXQgY2hhaW46IGB0dHVzYl9kZWNfYm9vdF9kc3BgLCBgdHR1c2JfaW5pdF9yY2AsIGV0Yy4gLSAqYW5kKiBmcm9tIERWQiBmcm9udGVuZCBvcGVyYXRpb25zIHZpYSBgZmVfc2VuZF9jb21tYW5kYC4gVGhlIERWQiBmcm9udGVuZCBvcHMgdGhlbXNlbHZlcyBhcmUgcmVnaXN0ZXJlZCBpbiBgdHR1c2JkZWNmZV9kdmJ0X29wc2AgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfb3BzYC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hhdCB0aGUgRFZCIGZyb250ZW5kIG9wcyBhcmUgYWN0dWFsbHkgZG9pbmcuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGNhbGwgcGF0aHMgdG8gY29uc2lkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjM3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIHR0dXNiZGVjZmVfZHZidF9vcHMgPSB7XG4gMjM4Olx0XHQuZGVsc3lzID0geyBTWVNfRFZCVCB9LFxuIDIzOTpcdFx0LmluZm8gPSB7XG4gMjQwOlx0XHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtUZWNobm9UcmVuZC9IYXVwcGF1Z2UgREVDMjAwMC10IEZyb250ZW5kXCYjMzQ7LFxuIDI0MTpcdFx0XHQuZnJlcXVlbmN5X21pbl9oelx0PSAgNTEgKiBNSHosXG4gMjQyOlx0XHRcdC5mcmVxdWVuY3lfbWF4X2h6XHQ9IDg1OCAqIE1IeixcbiAyNDM6XHRcdFx0LmZyZXF1ZW5jeV9zdGVwc2l6ZV9oelx0PSA2MjUwMCxcbiAyNDQ6XHRcdFx0LmNhcHMgPVx0RkVfQ0FOX0ZFQ18xXzIgfCBGRV9DQU5fRkVDXzJfMyB8IEZFX0NBTl9GRUNfM180IHxcbiAyNDU6XHRcdFx0XHRGRV9DQU5fRkVDXzVfNiB8IEZFX0NBTl9GRUNfN184IHwgRkVfQ0FOX0ZFQ19BVVRPIHxcbiAyNDY6XHRcdFx0XHRGRV9DQU5fUUFNXzE2IHwgRkVfQ0FOX1FBTV82NCB8IEZFX0NBTl9RQU1fQVVUTyB8XG4gMjQ3Olx0XHRcdFx0RkVfQ0FOX1RSQU5TTUlTU0lPTl9NT0RFX0FVVE8gfCBGRV9DQU5fR1VBUkRfSU5URVJWQUxfQVVUTyB8XG4gMjQ4Olx0XHRcdFx0RkVfQ0FOX0hJRVJBUkNIWV9BVVRPLFxuIDI0OTpcdFx0fSxcbiAyNTA6XHRcbiAyNTE6XHRcdC5yZWxlYXNlID0gdHR1c2JkZWNmZV9yZWxlYXNlLFxuIDI1MjpcdFxuIDI1MzpcdFx0LnNldF9mcm9udGVuZCA9IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQsXG4gMjU0Olx0XG4gMjU1Olx0XHQuZ2V0X3R1bmVfc2V0dGluZ3MgPSB0dHVzYmRlY2ZlX2R2YnRfZ2V0X3R1bmVfc2V0dGluZ3MsXG4gMjU2Olx0XG4gMjU3Olx0XHQucmVhZF9zdGF0dXMgPSB0dHVzYmRlY2ZlX2R2YnRfcmVhZF9zdGF0dXMsXG4gMjU4Olx0fTtcbiAyNTk6XHRcbiAyNjA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJzX29wcyA9IHtcbiAyNjE6XHRcdC5kZWxzeXMgPSB7IFNZU19EVkJTIH0sXG4gMjYyOlx0XHQuaW5mbyA9IHtcbiAyNjM6XHRcdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1RlY2hub1RyZW5kL0hhdXBwYXVnZSBERUMzMDAwLXMgRnJvbnRlbmRcJiMzNDssXG4gMjY0Olx0XHRcdC5mcmVxdWVuY3lfbWluX2h6XHQ9ICA5NTAgKiBNSHosXG4gMjY1Olx0XHRcdC5mcmVxdWVuY3lfbWF4X2h6XHQ9IDIxNTAgKiBNSHosXG4gMjY2Olx0XHRcdC5mcmVxdWVuY3lfc3RlcHNpemVfaHpcdD0gIDEyNSAqIGtIeixcbiAyNjc6XHRcdFx0LnN5bWJvbF9yYXRlX21pbiAgICAgICAgPSAxMDAwMDAwLCAgLyogZ3Vlc3NlZCAqL1xuIDI2ODpcdFx0XHQuc3ltYm9sX3JhdGVfbWF4ICAgICAgICA9IDQ1MDAwMDAwLCAvKiBndWVzc2VkICovXG4gMjY5Olx0XHRcdC5jYXBzID1cdEZFX0NBTl9GRUNfMV8yIHwgRkVfQ0FOX0ZFQ18yXzMgfCBGRV9DQU5fRkVDXzNfNCB8XG4gMjcwOlx0XHRcdFx0RkVfQ0FOX0ZFQ181XzYgfCBGRV9DQU5fRkVDXzdfOCB8IEZFX0NBTl9GRUNfQVVUTyB8XG4gMjcxOlx0XHRcdFx0RkVfQ0FOX1FQU0tcbiAyNzI6XHRcdH0sXG4gMjczOlx0XG4gMjc0Olx0XHQucmVsZWFzZSA9IHR0dXNiZGVjZmVfcmVsZWFzZSxcbiAyNzU6XHRcbiAyNzY6XHRcdC5zZXRfZnJvbnRlbmQgPSB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kLFxuIDI3NzpcdFxuIDI3ODpcdFx0LnJlYWRfc3RhdHVzID0gdHR1c2JkZWNmZV9kdmJzX3JlYWRfc3RhdHVzLFxuIDI3OTpcdFxuIDI4MDpcdFx0LmRpc2VxY19zZW5kX21hc3Rlcl9jbWQgPSB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZCxcbiAyODE6XHRcdC5zZXRfdm9sdGFnZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdm9sdGFnZSxcbiAyODI6XHRcdC5zZXRfdG9uZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdG9uZSxcbiAyODM6XHR9O1xuIDI4NDpcdFxuIDI4NTpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtUVFVTQiBERUMgRFZCLVQvUyBEZW1vZHVsYXRvciBkcml2ZXJcJiMzNDspO1xuIDI4NjpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7QWxleCBXb29kcy9BbmRyZXcgZGUgUXVpbmNleVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODg1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBtb2RpZmljYXRpb25zIHRvIGB0dHVzYmRlY2ZlLmNgLiBJIHNlZSB0aGV5JiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgZnJvbnRlbmQgY29udHJvbCBmdW5jdGlvbnM6IGB0dHVzYmRlY2ZlX2R2YnRfcmVhZF9zdGF0dXNgLCBgdHR1c2JkZWNmZV9kdmJ0X3NldF9mcm9udGVuZGAsIGB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kYCwgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZGAuIFRoZXkgYXJlIGFsbCBzdGF0aWMsIHdoaWNoIGlzIHR5cGljYWwgZm9yIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIGEgZHJpdmVyLCBidXQgdGhleSBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBgZHZiX2Zyb250ZW5kX29wc2Agc3RydWN0dXJlLiBUaGlzIG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgc3RhbmRhcmQgd2F5IHRvIGV4cG9zZSB0aGVzZSBmcm9udGVuZCBvcGVyYXRpb25zIHRvIHRoZSBEVkIgY29yZS4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBpbmNsdWRlIGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCwgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgLCBhbmQgYHR0dXNiX2RlY19wcm9iZWAgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlLgoKTm93LCBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgY2VudHJhbCBjb25maWcgaGVyZSBpcyBgRFZCX1RUVVNCX0RFQ2AuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBEVkJfQ09SRWAsIGBVU0JgLCBgSU5QVVRgLCBhbmQgYFBDSWAuIEhhbmcgb24gYSBzZWNvbmQuLi4gYFBDSWA/IFRoaXMgaXMgYSBVU0IgZHJpdmVyOyB3aHkgdGhlIFBDSSBkZXBlbmRlbmN5PyBJdCBkb2VzbiYjMzk7dCBxdWl0ZSBhZGQgdXAuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdgIHRvIHNlZSBpZiB0aGF0IHNoZWRzIGFueSBsaWdodCBvbiB0aGlzLiBJdCBzZWVtcyBsaWtlIHNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQsIGFuZCB0aGUgS2NvbmZpZyBtaWdodCBjbGFyaWZ5IHdoeSB0aGUgZGVwZW5kZW5jeSBleGlzdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRFZCX1RUVVNCX0RFQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGVjaG5vdHJlbmQvSGF1cHBhdWdlIFVTQiBERUMgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBEVkJfQ09SRSBcdTAwMjZcdTAwMjYgVVNCIFx1MDAyNlx1MDAyNiBJTlBVVCBcdTAwMjZcdTAwMjYgUENJXG4gICA1Olx0XHRzZWxlY3QgQ1JDMzJcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgU3VwcG9ydCBmb3IgZXh0ZXJuYWwgVVNCIGFkYXB0ZXJzIGRlc2lnbmVkIGJ5IFRlY2hub3RyZW5kIGFuZFxuICAgODpcdFx0ICBwcm9kdWNlZCBieSBIYXVwcGF1Z2UsIHNoaXBwZWQgdW5kZXIgdGhlIGJyYW5kIG5hbWUgJiMzOTtERUMyMDAwLXQmIzM5O1xuICAgOTpcdFx0ICBhbmQgJiMzOTtERUMzMDAwLXMmIzM5Oy5cbiAgMTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2MTcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciB0aGUgRFZCLVQvUyBVU0IgUmVjZWl2ZXIgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHNlZWluZyBpcyB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gVGhpcyBmaXggcmVsaWVzIG9uIGBEVkJfQ09SRSAmYW1wOyZhbXA7IFVTQiAmYW1wOyZhbXA7IElOUFVUICZhbXA7JmFtcDsgUENJYC4gUmlnaHQsIHNvIEkgbmVlZCB0byBiZSBzdXJlIGBEVkJfVFRVU0JfREVDYCwgYERWQl9DT1JFYCwgYFVTQmAsIGBJTlBVVGAsIGFuZCBgUENJYCBhcmUgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4gSSYjMzk7bSBmYWlybHkgY2VydGFpbiBgUENJYCwgYFVTQmAsIGFuZCBgSU5QVVRgIGFyZSBzdGFuZGFyZCwgYnV0IGBEVkJfQ09SRWAgaXMgdGhlIG9uZSB0byBkb3VibGUtY2hlY2suIEFuZCBvYnZpb3VzbHksIGBEVkJfVFRVU0JfREVDYCBpcyB0aGUgcHJpbWFyeSB0YXJnZXQuCgpOb3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBvbmVzIHRvIGNhbGwgb3V0IGhlcmU/IGB0dHVzYl9kZWNfcHJvYmVgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGRyaXZlci4gVGhlbiB0aGVyZSBhcmUgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgd2hpY2ggYXJlIGFsc28gY3JpdGljYWwuIExldCYjMzk7cyBzZWUuLi4gdGhlIHByb21wdCB3YW50cyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuLi4gaG1tLCBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgd2FzIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBhY3R1YWxseSBtb2RpZmllZCwgYnV0IGl0JiMzOTtzICpzdGF0aWMqLiBJdCYjMzk7cyBub3QgYSBzbWFsbCBoZWxwZXIgdGhvdWdoLCBtaWdodCBub3QgYmUgaW5saW5lZC4uLiBCdXQgSSAqa25vdyogYHR0dXNiX2RlY19wcm9iZWAgY2FuJiMzOTt0IGJlIGlubGluZWQgYmVjYXVzZSBpdCYjMzk7cyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBTbyBJJiMzOTtsbCBsaXN0IGB0dHVzYl9kZWNfcHJvYmVgLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAsIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAuCgpPa2F5LCBsZXQmIzM5O3MgcmVjYXAgbXkgcmVhc29uaW5nLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgYnVmZmVyIG92ZXJmbG93IGluIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYC4gSXQgYWRkcyBhIGBjbWRfcmVzdWx0X2xlbmAgY2hlY2sgYmVmb3JlIGNvcHlpbmcgdGhlIFVTQiBjb21tYW5kIHJlc3VsdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gSSBjYW4gYWJzb2x1dGVseSBmdXp6IHRoaXMgd2l0aCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCksIHdoaWNoIGlzIHNvbWV0aGluZyBJIHdhbnQgdG8gZG8uIFNvIHRoZSBtYWluIGNvbmZpZ3MgSSBoYXZlIHRvIGhhdmUgaW4gcGxhY2UgYXJlIGBEVkJfVFRVU0JfREVDYCBhbmQsIGNyaXRpY2FsbHksIGl0cyBkZXBlbmRlbmN5LCBgRFZCX0NPUkVgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBEVkJfQ09SRWAgaXMgaW4gYGRyaXZlcnMvbWVkaWEvZHZiLWNvcmUvS2NvbmZpZ2AuIFJpZ2h0LCBnb29kLiBBbGwgc2VlbXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEVkJfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNzA9Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTgzLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjE4NDpjb25maWcgRFZCX0NPUkVcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xODUtXHR0cmlzdGF0ZSBcJiMzNDtEVkIgQ29yZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcwMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIExvY2F0aW9uIENoZWNrKioKCk9rYXksIHdhaXQgYSBzZWNvbmQuLi4gSSAqdGhvdWdodCogSSByZW1lbWJlcmVkIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgYERWQl9DT1JFYCByZWNlbnRseS4gV2hlcmUgd2FzIHRoYXQsIGFnYWluPyBBaCwgeWVzLCBpdCYjMzk7cyBjb21pbmcgYmFjayB0byBtZSDigJMgaXQmIzM5O3MgYWN0dWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gcmVtZW1iZXJpbmcgY29ycmVjdGx5LCBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0JiMzOTtzIGhhbmRsZWQuIEFscmlnaHQsIGxldCYjMzk7cyBvcGVuIHRoYXQgYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AgZmlsZSBhbmQgdGFrZSBhIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHQjIERWQiBDb3JlXG4gMTgxOlx0I1x0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcbiAxODI6XHQjXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIERWQl9DT1JFXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtEVkIgQ29yZVwmIzM0O1xuIDE4NjpcdFx0ZGVwZW5kcyBvbiBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcbiAxODc6XHRcdGRlcGVuZHMgb24gKEkyQyB8fCBJMkM9bilcbiAxODg6XHRcdGRlZmF1bHQgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUXG4gMTg5Olx0XHRzZWxlY3QgQ1JDMzJcbiAxOTA6XHRcdGhlbHBcbiAxOTE6XHRcdCAgRW5hYmxlcyB0aGUgRFZCIEFQSSwgdXNlZCBieSBEaWdpdGFsIFRWIGRldmljZXMuIFN1cHBvcnRzIHNldmVyYWxcbiAxOTI6XHRcdCAgc3RhbmRhcmRzLCBpbmNsdWRpbmcgRFZCLCBBVFNDLCBJU0RCIGFuZCBDTURCLlxuIDE5MzpcdFxuIDE5NDpcdGVuZG1lbnUgIyBNZWRpYSBjb3JlIHN1cHBvcnRcbiAxOTU6XHRcbiAxOTY6XHQjXG4gMTk3Olx0IyBFeHRyYSBwZXItbWVkaWEgQVBJIGNvcmUgZnVuY3Rpb25hbGl0eVxuIDE5ODpcdFxuIDE5OTpcdG1lbnUgXCYjMzQ7VmlkZW80TGludXggb3B0aW9uc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE3MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipEaWdnaW5nIGludG8gRGlnaXRhbCBUViBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgRFZCX0NPUkVgIGlzIHB1bGxpbmcgaW4gYSBkZXBlbmRlbmN5IG9uIGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGUgY29yZSBEVkIgZnVuY3Rpb25hbGl0eSBvYnZpb3VzbHkgcmVsaWVzIG9uIGhhdmluZyBzb21lIGJhc2ljIGRpZ2l0YWwgVFYgc3VwcG9ydCBlbmFibGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIHNwZWNpZmljcyBvZiBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYCBqdXN0IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgZXZlcnl0aGluZyBjb3JyZWN0bHkuIExldCYjMzk7cyBnbyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoYXQgY29uZmlnIG9wdGlvbiBhY3R1YWxseSAqZG9lcyouIFRoZXJlJiMzOTtzIGxpa2VseSBzb21lIG51YW5jZSB0aGVyZSB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgYWJvdXQgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHdob2xlIHN1YnN5c3RlbS4gSXQmIzM5O3MgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz03Nj1jb25maWcgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctODktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6OTA6Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTkxLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ2NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1lZGlhIFN1YnN5c3RlbSBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIG1lZGlhIHN1YnN5c3RlbSwgYW5kIG15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBwbGFjZSB0byBzdGFydCBpcyB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYXJvdW5kIGxpbmUgOTAuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgbW9yZSBjb3JlIG9yIGZ1bmRhbWVudGFsIG9wdGlvbnMgYXJlIGRlZmluZWQuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgZ3V0cyBvZiB0aGUgY29uZmlndXJhdGlvbiBjaG9pY2VzIGFyZSBsaWtlbHkgdG8gYmUgZm91bmQuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGF0IGFyZWEgdG8gc2VlIHdoYXQgY2F0Y2hlcyBteSBleWUgb3IgdHJpZ2dlcnMgYSBzcGVjaWZpYyBtZW1vcnkgcmVsYXRlZCB0byB0aGUgcHJvYmxlbSBJIGFtIHdvcmtpbmcgb24uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9ucyBJIGNhbiB1bmNvdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODU6XHRcbiAgODY6XHRcdCAgTm90ZTogVGhlcmUgYXJlIHNldmVyYWwgRFZCIGNhcmRzIHRoYXQgYXJlIGJhc2VkIG9uIGNoaXBzIHRoYXRcbiAgODc6XHRcdFx0c3VwcG9ydCBib3RoIGFuYWxvZyBhbmQgZGlnaXRhbCBUVi4gRGlzYWJsaW5nIHRoaXMgb3B0aW9uXG4gIDg4Olx0XHRcdHdpbGwgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGVtLlxuICA4OTpcdFxuICA5MDpcdGNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcbiAgOTE6XHRcdGJvb2xcbiAgOTI6XHRcdHByb21wdCBcJiMzNDtEaWdpdGFsIFRWXCYjMzQ7IGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDkzOlx0XHRkZWZhdWx0IHkgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDk0Olx0XHRoZWxwXG4gIDk1Olx0XHQgIEVuYWJsZSBkaWdpdGFsIFRWIHN1cHBvcnQuXG4gIDk2Olx0XG4gIDk3Olx0XHQgIFNheSBZIHdoZW4geW91IGhhdmUgYSBib2FyZCB3aXRoIGRpZ2l0YWwgc3VwcG9ydCBvciBhIGJvYXJkIHdpdGhcbiAgOTg6XHRcdCAgaHlicmlkIGRpZ2l0YWwgVFYgYW5kIGFuYWxvZyBUVi5cbiAgOTk6XHRcbiAxMDA6XHRjb25maWcgTUVESUFfUkFESU9fU1VQUE9SVFxuIDEwMTpcdFx0Ym9vbFxuIDEwMjpcdFx0cHJvbXB0IFwmIzM0O0FNL0ZNIHJhZGlvIHJlY2VpdmVycy90cmFuc21pdHRlcnNcJiMzNDsgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcbiAxMDM6XHRcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcbiAxMDQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MzMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZToKCioqQ2hlY2tpbmcgRGVwZW5kZW5jeSBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgc28gdGhlIHN5c3RlbSByZXF1aXJlcyBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYC4gR290IGl0LiBOb3csIGdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IG9mdGVuIG1lYW5zIHRoZXJlIGFyZSB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcywgc28gSSBzaG91bGQgc2VlIHdoYXQgYE1FRElBX1NVUFBPUlRgIGlzIGFsbCBhYm91dC4gVW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkgaGVyZS4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgYE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVGAgYnVpbGRzIHVwb24gb3IgbGV2ZXJhZ2VzIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgYE1FRElBX1NVUFBPUlRgLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGF0IGRlcGVuZGVuY3kgY2hhaW4gbG9va3MgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FRElBX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWc9MTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpbWVkaWEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjQtXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MjU6Y29uZmlnIE1FRElBX1NVUFBPUlRfRklMVEVSXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXHRib29sIFwmIzM0O0ZpbHRlciBtZWRpYSBkcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgdGhvdWdodHM6CgoqKkNvbmZpZ3VyaW5nIE1lZGlhIFN1cHBvcnQ6IEEgTWVudGFsIENoZWNrbGlzdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbjogYE1FRElBX1NVUFBPUlRgLiBUaGF0JiMzOTtzIHRoZSBiaWcgcGljdHVyZSwgdGhlIHVtYnJlbGxhIHVuZGVyIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSByZWxhdGVkIHRvIG1lZGlhIGZhbGxzLiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gZHJpbGwgZG93bi4KCkkmIzM5O2xsIG5lZWQgdG8gbGlzdCBvdXQgdGhlIGltcG9ydGFudCBtb2R1bGVzLiBUaGlua2luZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMsIGBNRURJQV9TVVBQT1JUYCBpcyBvYnZpb3VzbHkgdGhlIHByaW1hcnkgZW5hYmxlci4gVGhlbiwgSSYjMzk7bGwgbmVlZCBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYCwgYERWQl9DT1JFYCAoc2luY2Ugd2UmIzM5O3JlIHByb2JhYmx5IGRlYWxpbmcgd2l0aCBkaWdpdGFsIHRlbGV2aXNpb24gc3R1ZmYpLCBhbmQgYERWQl9UVFVTQl9ERUNgLiBUaG9zZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBJJiMzOTtkIHR5cGljYWxseSBjb25zaWRlciBmb3IgRFZCIHN1cHBvcnQuCgpIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEkmIzM5O20gZm9yZ2V0dGluZyBzb21ldGhpbmcgY3J1Y2lhbC4gVVNCIG1lZGlhIGRyaXZlcnMhIEl0JiMzOTtzIGxpa2VseSBgTUVESUFfVVNCX1NVUFBPUlRgIGlzIGFsc28gdHlwaWNhbGx5IG5lY2Vzc2FyeSwgZXNwZWNpYWxseSBmb3IgYW55dGhpbmcgY29ubmVjdGVkIHZpYSBVU0IuIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvbWVkaWEvdXNiL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGFueSBlc3NlbnRpYWwgZGVwZW5kZW5jaWVzLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRpZiBVU0IgXHUwMDI2XHUwMDI2IE1FRElBX1NVUFBPUlRcbiAgIDQ6XHRcbiAgIDU6XHRtZW51Y29uZmlnIE1FRElBX1VTQl9TVVBQT1JUXG4gICA2Olx0XHRib29sIFwmIzM0O01lZGlhIFVTQiBBZGFwdGVyc1wmIzM0O1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBFbmFibGUgbWVkaWEgZHJpdmVycyBmb3IgVVNCIGJ1cy5cbiAgIDk6XHRcdCAgSWYgeW91IGhhdmUgc3VjaCBkZXZpY2VzLCBzYXkgWS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBNRURJQV9VU0JfU1VQUE9SVFxuICAxMjpcdFxuICAxMzpcdGlmIE1FRElBX0NBTUVSQV9TVVBQT1JUXG4gIDE0Olx0XHRjb21tZW50IFwmIzM0O1dlYmNhbSBkZXZpY2VzXCYjMzQ7XG4gIDE1Olx0XG4gIDE2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL0tjb25maWdcJiMzNDtcbiAgMTc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvcHdjL0tjb25maWdcJiMzNDtcbiAgMTg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS91c2IvczIyNTUvS2NvbmZpZ1wmIzM0O1xuICAxOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL21lZGlhL3VzYi91c2J0di9LY29uZmlnXCYjMzQ7XG4gIDIwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3V2Yy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTAzCgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCLWJhc2VkIERpZ2l0YWwgVFYgVHVuZXIgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkcml2ZXIgd29ya3MgYXMgZXhwZWN0ZWQuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGVuYWJsaW5nIGBNRURJQV9VU0JfU1VQUE9SVGAgaXMgZGVmaW5pdGVseSBuZWNlc3NhcnkuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLCBpdCBhcHBlYXJzIEkgbmVlZCB0byBzZXQgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYCwgYE1FRElBX1VTQl9TVVBQT1JUYCwgYERWQl9DT1JFYCwgYW5kIGBEVkJfVFRVU0JfREVDYCB0byBiZSBzdXJlLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdtZW50IGNhbGwgb24gd2hhdCBJJiMzOTttIGluY2x1ZGluZy4gQSBxdWljayB2ZXJpZmljYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgaXMgbmVjZXNzYXJ5LiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZC4gYHR0dXNiX2RlY19wcm9iZWAgaXMgYWxzbyBzdGF0aWMuIFBlcmZlY3QuICBIb3dldmVyLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoYCBhcmUgKm5vdCogc3RhdGljLiBBbHJpZ2h0LiBJIHdpbGwgaW5jbHVkZSBgdHR1c2JfZGVjX3Byb2JlYCwgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgLCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSB3aWxsIHNjYW4gdGhlIGB0dHVzYl9kZWMuY2AgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgbWlnaHQgbmVlZCBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSpcXCo/IFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ0NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlF1aWNrIFNjYW4gZm9yIGBFWFBPUlRfU1lNQk9MYCBpbiBgdHR1c2JfZGVjLmNgKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcsIGluc3RlYWQgb2YgZ2V0dGluZyBib2dnZWQgZG93biBpbiBhIGRlZXAgZGl2ZSwgbGV0JiMzOTtzIGtlZXAgdGhpbmdzIGZvY3VzZWQgYW5kIGVmZmljaWVudC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdHlwaWNhbCBrZXJuZWwgbW9kdWxlIHN0cnVjdHVyZSBhbmQgc3ltYm9sIHZpc2liaWxpdHksIHRoZSBmaXJzdCB0aGluZyBJJiMzOTtkIGRvIGlzIGEgcXVpY2sgYGdyZXBgIGZvciBgRVhQT1JUX1NZTUJPTGAgd2l0aGluIGB0dHVzYl9kZWMuY2AuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIHNpZ25hbC4gSWYgSSBzZWUgdGhhdCBtYWNybywgaXQgZGlyZWN0bHkgdGVsbHMgbWUgd2hpY2ggc3ltYm9scyB0aGlzIG1vZHVsZSBpcyBleHBsaWNpdGx5IG1ha2luZyBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlcy4gVGhhdCYjMzk7bGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBhIHJvYWRtYXAgb2YgaXRzIHB1YmxpYyBpbnRlcmZhY2Ug4oCTIHRoZSBlbnRyeSBwb2ludHMgYW5kIGRhdGEgc3RydWN0dXJlcyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIGludGVyLW1vZHVsZSBpbnRlcmFjdGlvbnMsIG9yIGRlYnVnZ2luZywgb3Igd2hhdGV2ZXIgdGhlIGN1cnJlbnQgdGFzayBkZW1hbmRzLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIG11Y2ggZmFzdGVyIHRoYW4ganVzdCByZWFkaW5nIHRoZSBlbnRpcmUgc291cmNlIGNvZGUuIFNhdmVzIHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzE0CgkJCQkJCQlvdXRwdXQ6IDE4NAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGB0dHVzYl9kZWMuY2AgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgdHR1c2JfZGVjLmNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCB0aGlzIG1vZHVsZSBkb2VzbiYjMzk7dCBleHBvcnQgYW55IHN5bWJvbHMsIHdoaWNoIG1ha2VzIHNlbnNlOyBgdHR1c2JfZGVjX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LiBEaWdnaW5nIGludG8gdGhlIGNvcmUgb2YgdGhlIHBhdGNoLCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYWxsIGFib3V0IGFkZHJlc3NpbmcgYSBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAuIFRoZSBmaXggaW52b2x2ZXMgaW50cm9kdWNpbmcgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciB0byBjb250cm9sIHRoZSBjb3BpZWQgbGVuZ3RoLCBhbmQgY3J1Y2lhbGx5LCBkb2luZyBhIHByb3BlciBib3VuZHMgY2hlY2sgYmVmb3JlIHRoZSBjb3B5IGl0c2VsZi4gVGhpcyBpcyBnb29kOyBpdCYjMzk7cyBhIHNvbGlkLCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGlzIG1ha2VzIGl0IGFuIGlkZWFsIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCktub3dpbmcgd2hhdCBJIGtub3cgYWJvdXQgVVNCIGRyaXZlcnMgYW5kIHRlc3RpbmcsIHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgcmlwZSBmb3IgdGVzdGluZyB3aXRoIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YCBzZXR1cC4gVGhhdCB3aWxsIGJlIHRoZSBwcmltYXJ5IGF2ZW51ZSB0byBleHBsb3JlIHRoaXMgcG90ZW50aWFsIGZpeCBhbmQgZGV0ZXJtaW5lIGl0cyBlZmZlY3RpdmVuZXNzLgoKSSB3aWxsIGhhdmUgdG8gZW5zdXJlIHRoYXQgYWxsIHJlbGV2YW50IFVTQiBjb21tYW5kcyB3b3JrIHByb3Blcmx5IGFzIGEgc2Vjb25kYXJ5IHRhc2suCgpVbHRpbWF0ZWx5LCBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHNlZSBob3cgdGhlIGNoYW5nZSBpbXBhY3RzIHRoZSBzeXprYWxsZXIgd29ya2Zsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRURJQV9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9VU0JfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtEVkJfQ09SRSYjMzQ7LAogICAgJiMzNDtEVkJfVFRVU0JfREVDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHR1c2JfZGVjX3Byb2JlJiMzNDssCiAgICAmIzM0O3R0dXNiZGVjZmVfZHZidF9hdHRhY2gmIzM0OywKICAgICYjMzQ7dHR1c2JkZWNmZV9kdmJzX2F0dGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYnkgYWRkaW5nIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgYW5kIGNoZWNraW5nIHRoZSBsZW5ndGggYmVmb3JlIGNvcHlpbmcgdGhlIHJlc3VsdCBvZiBhIFVTQiBjb21tYW5kLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRURJQV9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9VU0JfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtEVkJfQ09SRSYjMzQ7LAogICAgJiMzNDtEVkJfVFRVU0JfREVDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHR1c2JfZGVjX3Byb2JlJiMzNDssCiAgICAmIzM0O3R0dXNiZGVjZmVfZHZidF9hdHRhY2gmIzM0OywKICAgICYjMzQ7dHR1c2JkZWNmZV9kdmJzX2F0dGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYnkgYWRkaW5nIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgYW5kIGNoZWNraW5nIHRoZSBsZW5ndGggYmVmb3JlIGNvcHlpbmcgdGhlIHJlc3VsdCBvZiBhIFVTQiBjb21tYW5kLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTQ6NDQuODAyOTczNTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE2MzA1OTQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUXCIsXG4gICAgXCJNRURJQV9VU0JfU1VQUE9SVFwiLFxuICAgIFwiRFZCX0NPUkVcIixcbiAgICBcIkRWQl9UVFVTQl9ERUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0dHVzYl9kZWNfcHJvYmVcIixcbiAgICBcInR0dXNiZGVjZmVfZHZidF9hdHRhY2hcIixcbiAgICBcInR0dXNiZGVjZmVfZHZic19hdHRhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgYnkgYWRkaW5nIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgYW5kIGNoZWNraW5nIHRoZSBsZW5ndGggYmVmb3JlIGNvcHlpbmcgdGhlIHJlc3VsdCBvZiBhIFVTQiBjb21tYW5kLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgbWVkaWEgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU0OjQ0LjgwMjk3OTU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ2MzUyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NGZjNzdmMzMzZThmZTdhOGM2Y2E1Mjk4NTg1ODhiYjFmODgyN2Q1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMjE6NTQ6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXFxuaW5kZXggODI1YTM4NzU5ODlkMy4uNDFlOTUwMWNkNTYxNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcXG4rKysgYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcXG5AQCAtMzE0LDcgKzMxNCw4IEBAIHN0YXRpYyB1MTYgY3JjMTYodTE2IGNyYywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gXFxuIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXFxuIFxcdFxcdFxcdFxcdCAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sXFxuLVxcdFxcdFxcdFxcdCAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10pXFxuK1xcdFxcdFxcdFxcdCAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10sXFxuK1xcdFxcdFxcdFxcdCAgaW50IGNtZF9yZXN1bHRfbGVuKVxcbiB7XFxuIFxcdGludCByZXN1bHQsIGFjdHVhbF9sZW47XFxuIFxcdHU4ICpiO1xcbkBAIC0zNjEsMTUgKzM2MiwyNiBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLFxcbiBcXHRcXHQgICAgICAgX19mdW5jX18sIHJlc3VsdCk7XFxuIFxcdFxcdGdvdG8gZXJyX211dGV4X3VubG9jaztcXG4gXFx0fSBlbHNlIHtcXG4rXFx0XFx0aW50IHJsZW4gPSAwO1xcbitcXG4gXFx0XFx0aWYgKGRlYnVnKSB7XFxuIFxcdFxcdFxcdHByaW50ayhLRVJOX0RFQlVHIFxcXCIlczogcmVzdWx0OiAlKnBoXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRpZiAoYWN0dWFsX2xlbiBcXHUwMDNlPSA0KSB7XFxuK1xcdFxcdFxcdHJsZW4gPSBiWzNdO1xcbitcXHRcXHRcXHRpZiAocmxlbiBcXHUwMDNlIGFjdHVhbF9sZW4gLSA0KVxcbitcXHRcXHRcXHRcXHRybGVuID0gYWN0dWFsX2xlbiAtIDQ7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmIChjbWRfcmVzdWx0IFxcdTAwMjZcXHUwMDI2IHJsZW4gXFx1MDAzZSBjbWRfcmVzdWx0X2xlbilcXG4rXFx0XFx0XFx0cmxlbiA9IGNtZF9yZXN1bHRfbGVuO1xcbitcXG4gXFx0XFx0aWYgKHJlc3VsdF9sZW5ndGgpXFxuLVxcdFxcdFxcdCpyZXN1bHRfbGVuZ3RoID0gYlszXTtcXG4tXFx0XFx0aWYgKGNtZF9yZXN1bHQgXFx1MDAyNlxcdTAwMjYgYlszXSBcXHUwMDNlIDApXFxuLVxcdFxcdFxcdG1lbWNweShjbWRfcmVzdWx0LCBcXHUwMDI2Yls0XSwgYlszXSk7XFxuK1xcdFxcdFxcdCpyZXN1bHRfbGVuZ3RoID0gcmxlbjtcXG4rXFx0XFx0aWYgKGNtZF9yZXN1bHQgXFx1MDAyNlxcdTAwMjYgcmxlbiBcXHUwMDNlIDApXFxuK1xcdFxcdFxcdG1lbWNweShjbWRfcmVzdWx0LCBcXHUwMDI2Yls0XSwgcmxlbik7XFxuIFxcdH1cXG4gXFxuIGVycl9tdXRleF91bmxvY2s6XFxuQEAgLTM4OSw3ICs0MDEsOCBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19nZXRfc3RiX3N0YXRlIChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIHVuc2lnbmVkIGludCAqbW9kZSxcXG4gXFxuIFxcdGRwcmludGsoXFxcIiVzXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIFxcbi1cXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgXFx1MDAyNmNfbGVuZ3RoLCBjKTtcXG4rXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4MDgsIDAsIE5VTEwsIFxcdTAwMjZjX2xlbmd0aCwgYyxcXG4rXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKGMpKTtcXG4gXFx0aWYgKHJlc3VsdClcXG4gXFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4gXFxuQEAgLTQ0OCw3ICs0NjEsNyBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfc2V0X3BpZHMoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxcbiBcXHRtZW1jcHkoXFx1MDAyNmJbMl0sIFxcdTAwMjZhdWRpbywgMik7XFxuIFxcdG1lbWNweShcXHUwMDI2Yls0XSwgXFx1MDAyNnZpZGVvLCAyKTtcXG4gXFxuLVxcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDUwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwpO1xcbitcXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg1MCwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdGR2Yl9maWx0ZXJfcGVzMnRzX2luaXQoXFx1MDAyNmRlYy1cXHUwMDNlYV9wZXMydHMsIGRlYy1cXHUwMDNlcGlkW0RNWF9QRVNfQVVESU9dLFxcbiBcXHRcXHRcXHQgICAgICAgdHR1c2JfZGVjX2F1ZGlvX3BlczJ0c19jYiwgZGVjKTtcXG5AQCAtOTAyLDcgKzkxNSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2Uoc3RydWN0IHR0dXNiX2RlYyAqZGVjLFxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBUVFVTQl9ERUNfSU5URVJGQUNFX0lOOlxcbiBcXHRcXHRcXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MCwgc2l6ZW9mKGIpLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRiLCBOVUxMLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0YiwgTlVMTCwgTlVMTCwgMCk7XFxuIFxcdFxcdFxcdGlmIChyZXN1bHQpXFxuIFxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuIFxcdFxcdFxcdHJlc3VsdCA9IHVzYl9zZXRfaW50ZXJmYWNlKGRlYy1cXHUwMDNldWRldiwgMCwgOCk7XFxuQEAgLTEwMjEsNyArMTAzNCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0YXJ0X3RzX2ZlZWQoc3RydWN0IGR2Yl9kZW11eF9mZWVkICpkdmJkbXhmZWVkKVxcbiBcXG4gXFx0fVxcbiBcXG4tXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODAsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTtcXG4rXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODAsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFx0aWYgKHJlc3VsdClcXG4gXFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4gXFxuQEAgLTEwNTYsNyArMTA2OSw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0YXJ0X3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcXG4gXFx0bWVtY3B5KFxcdTAwMjZiMFs1XSwgXFx1MDAyNmR2YmRteGZlZWQtXFx1MDAzZWZpbHRlci1cXHUwMDNlZmlsdGVyLmZpbHRlcl92YWx1ZVswXSwgMSk7XFxuIFxcbiBcXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2MCwgc2l6ZW9mKGIwKSwgYjAsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZjX2xlbmd0aCwgYyk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZjX2xlbmd0aCwgYywgc2l6ZW9mKGMpKTtcXG4gXFxuIFxcdGlmICghcmVzdWx0KSB7XFxuIFxcdFxcdGlmIChjX2xlbmd0aCA9PSAyKSB7XFxuQEAgLTExMTQsNyArMTEyNyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3BfdHNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXFxuIFxcdHN0cnVjdCB0dHVzYl9kZWMgKmRlYyA9IGR2YmRteGZlZWQtXFx1MDAzZWRlbXV4LVxcdTAwM2Vwcml2O1xcbiBcXHR1OCBiMFtdID0geyAweDAwIH07XFxuIFxcbi1cXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xcbitcXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xcbiBcXG4gXFx0ZGVjLVxcdTAwM2VwdmFfc3RyZWFtX2NvdW50LS07XFxuIFxcbkBAIC0xMTM1LDcgKzExNDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdG9wX3NlY19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcXG4gXFx0bGlzdF9kZWwoXFx1MDAyNmZpbmZvLVxcdTAwM2VmaWx0ZXJfaW5mb19saXN0KTtcXG4gXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGVjLVxcdTAwM2VmaWx0ZXJfaW5mb19saXN0X2xvY2ssIGZsYWdzKTtcXG4gXFx0a2ZyZWUoZmluZm8pO1xcbi1cXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xcbitcXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xcbiBcXG4gXFx0ZGVjLVxcdTAwM2VmaWx0ZXJfc3RyZWFtX2NvdW50LS07XFxuIFxcbkBAIC0xMjM4LDcgKzEyNTEsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2luaXRfcmMoIHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcXG4gXFx0aWYgKHVzYl9zdWJtaXRfdXJiKGRlYy1cXHUwMDNlaXJxX3VyYiwgR0ZQX0tFUk5FTCkpXFxuIFxcdFxcdHByaW50ayhcXFwiJXM6IHVzYl9zdWJtaXRfdXJiIGZhaWxlZFxcXFxuXFxcIixfX2Z1bmNfXyk7XFxuIFxcdC8qIGVuYWJsZSBpcnEgcGlwZSAqL1xcbi1cXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywweGIwLHNpemVvZihiKSxiLE5VTEwsTlVMTCk7XFxuK1xcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweGIwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMTM1NCw3ICsxMzY3LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfYm9vdF9kc3Aoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxcbiBcXHRmaXJtd2FyZV9jc3VtX25zID0gaHRvbnMoZmlybXdhcmVfY3N1bSk7XFxuIFxcdG1lbWNweShcXHUwMDI2YjBbNl0sIFxcdTAwMjZmaXJtd2FyZV9jc3VtX25zLCAyKTtcXG4gXFxuLVxcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDQxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7XFxuK1xcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDQxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XFxuIFxcbiBcXHRpZiAocmVzdWx0KSB7XFxuIFxcdFxcdHJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpO1xcbkBAIC0xMzk1LDcgKzE0MDgsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19ib290X2RzcChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMpXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDMsIHNpemVvZihiMSksIGIxLCBOVUxMLCBOVUxMKTtcXG4rXFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDMsIHNpemVvZihiMSksIGIxLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdHJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpO1xcbiBcXHRrZnJlZShiKTtcXG5AQCAtMTYyMSwxMCArMTYzNCwxNCBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfZXhpdF9maWx0ZXJzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcXG4gXFxuIHN0YXRpYyBpbnQgZmVfc2VuZF9jb21tYW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBjb25zdCB1OCBjb21tYW5kLFxcbiBcXHRcXHRcXHQgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcXG4tXFx0XFx0XFx0ICAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10pXFxuK1xcdFxcdFxcdCAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxcbitcXHRcXHRcXHQgICBpbnQgY21kX3Jlc3VsdF9sZW4pXFxuIHtcXG4gXFx0c3RydWN0IHR0dXNiX2RlYyogZGVjID0gZmUtXFx1MDAzZWR2Yi1cXHUwMDNlcHJpdjtcXG4tXFx0cmV0dXJuIHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCBjb21tYW5kLCBwYXJhbV9sZW5ndGgsIHBhcmFtcywgcmVzdWx0X2xlbmd0aCwgY21kX3Jlc3VsdCk7XFxuK1xcbitcXHRyZXR1cm4gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIGNvbW1hbmQsIHBhcmFtX2xlbmd0aCwgcGFyYW1zLFxcbitcXHRcXHRcXHRcXHQgICAgICByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0LFxcbitcXHRcXHRcXHRcXHQgICAgICBjbWRfcmVzdWx0X2xlbik7XFxuIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcgZmVfY29uZmlnID0ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xcbmluZGV4IDIxNTIyMTM3MGMxOTMuLmIwMTNkNmRmY2JlZTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xcbisrKyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNcXG5AQCAtNDQsNyArNDQsOCBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1cyhzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSxcXG4gXFxuIFxcdCpzdGF0dXM9MDtcXG4gXFxuLVxcdHJldD1zdGF0ZS1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXFx1MDAyNmxlbiwgcmVzdWx0KTtcXG4rXFx0cmV0ID0gc3RhdGUtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDczLCBzaXplb2YoYiksIGIsIFxcdTAwMjZsZW4sIHJlc3VsdCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBzaXplb2YocmVzdWx0KSk7XFxuIFxcdGlmKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTg1LDcgKzg2LDcgQEAgc3RhdGljIGludCB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxcbiBcXG4gXFx0X19iZTMyIGZyZXEgPSBodG9ubChwLVxcdTAwM2VmcmVxdWVuY3kgLyAxMDAwKTtcXG4gXFx0bWVtY3B5KFxcdTAwMjZiWzRdLCBcXHUwMDI2ZnJlcSwgc2l6ZW9mICh1MzIpKTtcXG4tXFx0c3RhdGUtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwpO1xcbitcXHRzdGF0ZS1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xMzAsNyArMTMxLDcgQEAgc3RhdGljIGludCB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxcbiBcXHRsbmJfdm9sdGFnZSA9IGh0b25sKHN0YXRlLVxcdTAwM2V2b2x0YWdlKTtcXG4gXFx0bWVtY3B5KFxcdTAwMjZiWzI4XSwgXFx1MDAyNmxuYl92b2x0YWdlLCBzaXplb2YodTMyKSk7XFxuIFxcbi1cXHRzdGF0ZS1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XFxuK1xcdHN0YXRlLVxcdTAwM2Vjb25maWctXFx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTE0OSw3ICsxNTAsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19kaXNlcWNfc2VuZF9tYXN0ZXJfY21kKHN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlLCBzdHJ1Y1xcbiBcXG4gXFx0c3RhdGUtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcyLFxcbiBcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKGIpIC0gKDYgLSBjbWQtXFx1MDAzZW1zZ19sZW4pLCBiLFxcbi1cXHRcXHRcXHRcXHQgICAgTlVMTCwgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgICBOVUxMLCBOVUxMLCAwKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmggYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXFxuaW5kZXggNzM4MjhiYjIyNThjOS4uOTY2MDBhZDRjMjM2ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXFxuKysrIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaFxcbkBAIC0xNCw3ICsxNCw4IEBAIHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZ1xcbiB7XFxuIFxcdGludCAoKnNlbmRfY29tbWFuZCkoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIGNvbnN0IHU4IGNvbW1hbmQsXFxuIFxcdFxcdFxcdCAgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcXG4tXFx0XFx0XFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTtcXG4rXFx0XFx0XFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxcbitcXHRcXHRcXHQgICAgaW50IGNtZF9yZXN1bHRfbGVuKTtcXG4gfTtcXG4gXFxuIGV4dGVybiBzdHJ1Y3QgZHZiX2Zyb250ZW5kKiB0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoKGNvbnN0IHN0cnVjdCB0dHVzYmRlY2ZlX2NvbmZpZyogY29uZmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTQ6NDUuMTg4Mzc1NTY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAxMjQ1MTg1Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIk1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfVVNCX1NVUFBPUlRcIixcbiAgICBcIkRWQl9DT1JFXCIsXG4gICAgXCJEVkJfVFRVU0JfREVDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR1c2JfZGVjX3Byb2JlXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NGZjNzdmMzMzZThmZTdhOGM2Y2E1Mjk4NTg1ODhiYjFmODgyN2Q1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMTo1NDo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1xuaW5kZXggODI1YTM4NzU5ODlkMy4uNDFlOTUwMWNkNTYxNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1xuKysrIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXG5AQCAtMzE0LDcgKzMxNCw4IEBAIHN0YXRpYyB1MTYgY3JjMTYodTE2IGNyYywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiBcbiBzdGF0aWMgaW50IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoc3RydWN0IHR0dXNiX2RlYyAqZGVjLCBjb25zdCB1OCBjb21tYW5kLFxuIFx0XHRcdFx0ICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcbi1cdFx0XHRcdCAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10pXG4rXHRcdFx0XHQgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdLFxuK1x0XHRcdFx0ICBpbnQgY21kX3Jlc3VsdF9sZW4pXG4ge1xuIFx0aW50IHJlc3VsdCwgYWN0dWFsX2xlbjtcbiBcdHU4ICpiO1xuQEAgLTM2MSwxNSArMzYyLDI2IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXG4gXHRcdCAgICAgICBfX2Z1bmNfXywgcmVzdWx0KTtcbiBcdFx0Z290byBlcnJfbXV0ZXhfdW5sb2NrO1xuIFx0fSBlbHNlIHtcbitcdFx0aW50IHJsZW4gPSAwO1xuK1xuIFx0XHRpZiAoZGVidWcpIHtcbiBcdFx0XHRwcmludGsoS0VSTl9ERUJVRyBcIiVzOiByZXN1bHQ6ICUqcGhcXG5cIixcbiBcdFx0XHQgICAgICAgX19mdW5jX18sIGFjdHVhbF9sZW4sIGIpO1xuIFx0XHR9XG4gXG4rXHRcdGlmIChhY3R1YWxfbGVuIFx1MDAzZT0gNCkge1xuK1x0XHRcdHJsZW4gPSBiWzNdO1xuK1x0XHRcdGlmIChybGVuIFx1MDAzZSBhY3R1YWxfbGVuIC0gNClcbitcdFx0XHRcdHJsZW4gPSBhY3R1YWxfbGVuIC0gNDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoY21kX3Jlc3VsdCBcdTAwMjZcdTAwMjYgcmxlbiBcdTAwM2UgY21kX3Jlc3VsdF9sZW4pXG4rXHRcdFx0cmxlbiA9IGNtZF9yZXN1bHRfbGVuO1xuK1xuIFx0XHRpZiAocmVzdWx0X2xlbmd0aClcbi1cdFx0XHQqcmVzdWx0X2xlbmd0aCA9IGJbM107XG4tXHRcdGlmIChjbWRfcmVzdWx0IFx1MDAyNlx1MDAyNiBiWzNdIFx1MDAzZSAwKVxuLVx0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBiWzNdKTtcbitcdFx0XHQqcmVzdWx0X2xlbmd0aCA9IHJsZW47XG4rXHRcdGlmIChjbWRfcmVzdWx0IFx1MDAyNlx1MDAyNiBybGVuIFx1MDAzZSAwKVxuK1x0XHRcdG1lbWNweShjbWRfcmVzdWx0LCBcdTAwMjZiWzRdLCBybGVuKTtcbiBcdH1cbiBcbiBlcnJfbXV0ZXhfdW5sb2NrOlxuQEAgLTM4OSw3ICs0MDEsOCBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19nZXRfc3RiX3N0YXRlIChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIHVuc2lnbmVkIGludCAqbW9kZSxcbiBcbiBcdGRwcmludGsoXCIlc1xcblwiLCBfX2Z1bmNfXyk7XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHgwOCwgMCwgTlVMTCwgXHUwMDI2Y19sZW5ndGgsIGMpO1xuK1x0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4MDgsIDAsIE5VTEwsIFx1MDAyNmNfbGVuZ3RoLCBjLFxuK1x0XHRcdFx0XHRzaXplb2YoYykpO1xuIFx0aWYgKHJlc3VsdClcbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcbkBAIC00NDgsNyArNDYxLDcgQEAgc3RhdGljIHZvaWQgdHR1c2JfZGVjX3NldF9waWRzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdG1lbWNweShcdTAwMjZiWzJdLCBcdTAwMjZhdWRpbywgMik7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2dmlkZW8sIDIpO1xuIFxuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NTAsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4rXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg1MCwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdGR2Yl9maWx0ZXJfcGVzMnRzX2luaXQoXHUwMDI2ZGVjLVx1MDAzZWFfcGVzMnRzLCBkZWMtXHUwMDNlcGlkW0RNWF9QRVNfQVVESU9dLFxuIFx0XHRcdCAgICAgICB0dHVzYl9kZWNfYXVkaW9fcGVzMnRzX2NiLCBkZWMpO1xuQEAgLTkwMiw3ICs5MTUsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zZXRfaW50ZXJmYWNlKHN0cnVjdCB0dHVzYl9kZWMgKmRlYyxcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBUVFVTQl9ERUNfSU5URVJGQUNFX0lOOlxuIFx0XHRcdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYiksXG4tXHRcdFx0XHRcdFx0XHRiLCBOVUxMLCBOVUxMKTtcbitcdFx0XHRcdFx0XHRcdGIsIE5VTEwsIE5VTEwsIDApO1xuIFx0XHRcdGlmIChyZXN1bHQpXG4gXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0XHRcdHJlc3VsdCA9IHVzYl9zZXRfaW50ZXJmYWNlKGRlYy1cdTAwM2V1ZGV2LCAwLCA4KTtcbkBAIC0xMDIxLDcgKzEwMzQsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF90c19mZWVkKHN0cnVjdCBkdmJfZGVtdXhfZmVlZCAqZHZiZG14ZmVlZClcbiBcbiBcdH1cbiBcbi1cdHJlc3VsdCA9IHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgwLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7XG4rXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg4MCwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xuIFx0aWYgKHJlc3VsdClcbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcbkBAIC0xMDU2LDcgKzEwNjksNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdGFydF9zZWNfZmVlZChzdHJ1Y3QgZHZiX2RlbXV4X2ZlZWQgKmR2YmRteGZlZWQpXG4gXHRtZW1jcHkoXHUwMDI2YjBbNV0sIFx1MDAyNmR2YmRteGZlZWQtXHUwMDNlZmlsdGVyLVx1MDAzZWZpbHRlci5maWx0ZXJfdmFsdWVbMF0sIDEpO1xuIFxuIFx0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NjAsIHNpemVvZihiMCksIGIwLFxuLVx0XHRcdFx0XHRcdTAwMjZjX2xlbmd0aCwgYyk7XG4rXHRcdFx0XHRcdFx1MDAyNmNfbGVuZ3RoLCBjLCBzaXplb2YoYykpO1xuIFxuIFx0aWYgKCFyZXN1bHQpIHtcbiBcdFx0aWYgKGNfbGVuZ3RoID09IDIpIHtcbkBAIC0xMTE0LDcgKzExMjcsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2RlY19zdG9wX3RzX2ZlZWQoc3RydWN0IGR2Yl9kZW11eF9mZWVkICpkdmJkbXhmZWVkKVxuIFx0c3RydWN0IHR0dXNiX2RlYyAqZGVjID0gZHZiZG14ZmVlZC1cdTAwM2VkZW11eC1cdTAwM2Vwcml2O1xuIFx0dTggYjBbXSA9IHsgMHgwMCB9O1xuIFxuLVx0dHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4ODEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMKTtcbitcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDgxLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRkZWMtXHUwMDNlcHZhX3N0cmVhbV9jb3VudC0tO1xuIFxuQEAgLTExMzUsNyArMTE0OCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX3N0b3Bfc2VjX2ZlZWQoc3RydWN0IGR2Yl9kZW11eF9mZWVkICpkdmJkbXhmZWVkKVxuIFx0bGlzdF9kZWwoXHUwMDI2ZmluZm8tXHUwMDNlZmlsdGVyX2luZm9fbGlzdCk7XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRlYy1cdTAwM2VmaWx0ZXJfaW5mb19saXN0X2xvY2ssIGZsYWdzKTtcbiBcdGtmcmVlKGZpbmZvKTtcbi1cdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweDYyLCBzaXplb2YoYjApLCBiMCwgTlVMTCwgTlVMTCk7XG4rXHR0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg2Miwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0ZGVjLVx1MDAzZWZpbHRlcl9zdHJlYW1fY291bnQtLTtcbiBcbkBAIC0xMjM4LDcgKzEyNTEsNyBAQCBzdGF0aWMgaW50IHR0dXNiX2luaXRfcmMoIHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdGlmICh1c2Jfc3VibWl0X3VyYihkZWMtXHUwMDNlaXJxX3VyYiwgR0ZQX0tFUk5FTCkpXG4gXHRcdHByaW50ayhcIiVzOiB1c2Jfc3VibWl0X3VyYiBmYWlsZWRcXG5cIixfX2Z1bmNfXyk7XG4gXHQvKiBlbmFibGUgaXJxIHBpcGUgKi9cbi1cdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLDB4YjAsc2l6ZW9mKGIpLGIsTlVMTCxOVUxMKTtcbitcdHR0dXNiX2RlY19zZW5kX2NvbW1hbmQoZGVjLCAweGIwLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTEzNTQsNyArMTM2Nyw3IEBAIHN0YXRpYyBpbnQgdHR1c2JfZGVjX2Jvb3RfZHNwKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcdGZpcm13YXJlX2NzdW1fbnMgPSBodG9ucyhmaXJtd2FyZV9jc3VtKTtcbiBcdG1lbWNweShcdTAwMjZiMFs2XSwgXHUwMDI2ZmlybXdhcmVfY3N1bV9ucywgMik7XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0MSwgc2l6ZW9mKGIwKSwgYjAsIE5VTEwsIE5VTEwpO1xuK1x0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDEsIHNpemVvZihiMCksIGIwLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdGlmIChyZXN1bHQpIHtcbiBcdFx0cmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSk7XG5AQCAtMTM5NSw3ICsxNDA4LDcgQEAgc3RhdGljIGludCB0dHVzYl9kZWNfYm9vdF9kc3Aoc3RydWN0IHR0dXNiX2RlYyAqZGVjKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRyZXN1bHQgPSB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgMHg0Mywgc2l6ZW9mKGIxKSwgYjEsIE5VTEwsIE5VTEwpO1xuK1x0cmVzdWx0ID0gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIDB4NDMsIHNpemVvZihiMSksIGIxLCBOVUxMLCBOVUxMLCAwKTtcbiBcbiBcdHJlbGVhc2VfZmlybXdhcmUoZndfZW50cnkpO1xuIFx0a2ZyZWUoYik7XG5AQCAtMTYyMSwxMCArMTYzNCwxNCBAQCBzdGF0aWMgdm9pZCB0dHVzYl9kZWNfZXhpdF9maWx0ZXJzKHN0cnVjdCB0dHVzYl9kZWMgKmRlYylcbiBcbiBzdGF0aWMgaW50IGZlX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0XHQgICBpbnQgcGFyYW1fbGVuZ3RoLCBjb25zdCB1OCBwYXJhbXNbXSxcbi1cdFx0XHQgICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSlcbitcdFx0XHQgICBpbnQgKnJlc3VsdF9sZW5ndGgsIHU4IGNtZF9yZXN1bHRbXSxcbitcdFx0XHQgICBpbnQgY21kX3Jlc3VsdF9sZW4pXG4ge1xuIFx0c3RydWN0IHR0dXNiX2RlYyogZGVjID0gZmUtXHUwMDNlZHZiLVx1MDAzZXByaXY7XG4tXHRyZXR1cm4gdHR1c2JfZGVjX3NlbmRfY29tbWFuZChkZWMsIGNvbW1hbmQsIHBhcmFtX2xlbmd0aCwgcGFyYW1zLCByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0KTtcbitcbitcdHJldHVybiB0dHVzYl9kZWNfc2VuZF9jb21tYW5kKGRlYywgY29tbWFuZCwgcGFyYW1fbGVuZ3RoLCBwYXJhbXMsXG4rXHRcdFx0XHQgICAgICByZXN1bHRfbGVuZ3RoLCBjbWRfcmVzdWx0LFxuK1x0XHRcdFx0ICAgICAgY21kX3Jlc3VsdF9sZW4pO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnIGZlX2NvbmZpZyA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1xuaW5kZXggMjE1MjIxMzcwYzE5My4uYjAxM2Q2ZGZjYmVlNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNcbkBAIC00NCw3ICs0NCw4IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJ0X3JlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLFxuIFxuIFx0KnN0YXR1cz0wO1xuIFxuLVx0cmV0PXN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzMsIHNpemVvZihiKSwgYiwgXHUwMDI2bGVuLCByZXN1bHQpO1xuK1x0cmV0ID0gc3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3Mywgc2l6ZW9mKGIpLCBiLCBcdTAwMjZsZW4sIHJlc3VsdCxcbitcdFx0XHRcdFx0ICBzaXplb2YocmVzdWx0KSk7XG4gXHRpZihyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtODUsNyArODYsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZidF9zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4gXG4gXHRfX2JlMzIgZnJlcSA9IGh0b25sKHAtXHUwMDNlZnJlcXVlbmN5IC8gMTAwMCk7XG4gXHRtZW1jcHkoXHUwMDI2Yls0XSwgXHUwMDI2ZnJlcSwgc2l6ZW9mICh1MzIpKTtcbi1cdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCk7XG4rXHRzdGF0ZS1cdTAwM2Vjb25maWctXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcxLCBzaXplb2YoYiksIGIsIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTEzMCw3ICsxMzEsNyBAQCBzdGF0aWMgaW50IHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmQoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4gXHRsbmJfdm9sdGFnZSA9IGh0b25sKHN0YXRlLVx1MDAzZXZvbHRhZ2UpO1xuIFx0bWVtY3B5KFx1MDAyNmJbMjhdLCBcdTAwMjZsbmJfdm9sdGFnZSwgc2l6ZW9mKHUzMikpO1xuIFxuLVx0c3RhdGUtXHUwMDNlY29uZmlnLVx1MDAzZXNlbmRfY29tbWFuZChmZSwgMHg3MSwgc2l6ZW9mKGIpLCBiLCBOVUxMLCBOVUxMKTtcbitcdHN0YXRlLVx1MDAzZWNvbmZpZy1cdTAwM2VzZW5kX2NvbW1hbmQoZmUsIDB4NzEsIHNpemVvZihiKSwgYiwgTlVMTCwgTlVMTCwgMCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTQ5LDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgdHR1c2JkZWNmZV9kdmJzX2Rpc2VxY19zZW5kX21hc3Rlcl9jbWQoc3RydWN0IGR2Yl9mcm9udGVuZCogZmUsIHN0cnVjXG4gXG4gXHRzdGF0ZS1cdTAwM2Vjb25maWctXHUwMDNlc2VuZF9jb21tYW5kKGZlLCAweDcyLFxuIFx0XHRcdFx0ICAgIHNpemVvZihiKSAtICg2IC0gY21kLVx1MDAzZW1zZ19sZW4pLCBiLFxuLVx0XHRcdFx0ICAgIE5VTEwsIE5VTEwpO1xuK1x0XHRcdFx0ICAgIE5VTEwsIE5VTEwsIDApO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmggYi9kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5oXG5pbmRleCA3MzgyOGJiMjI1OGM5Li45NjYwMGFkNGMyMzZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaFxuKysrIGIvZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuaFxuQEAgLTE0LDcgKzE0LDggQEAgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnXG4ge1xuIFx0aW50ICgqc2VuZF9jb21tYW5kKShzdHJ1Y3QgZHZiX2Zyb250ZW5kKiBmZSwgY29uc3QgdTggY29tbWFuZCxcbiBcdFx0XHQgICAgaW50IHBhcmFtX2xlbmd0aCwgY29uc3QgdTggcGFyYW1zW10sXG4tXHRcdFx0ICAgIGludCAqcmVzdWx0X2xlbmd0aCwgdTggY21kX3Jlc3VsdFtdKTtcbitcdFx0XHQgICAgaW50ICpyZXN1bHRfbGVuZ3RoLCB1OCBjbWRfcmVzdWx0W10sXG4rXHRcdFx0ICAgIGludCBjbWRfcmVzdWx0X2xlbik7XG4gfTtcbiBcbiBleHRlcm4gc3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NDo0NS4xODgzNzczMjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA1MjIxNTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBEcml2ZXIgUGF0Y2ggZm9yIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jYCBhbmQgYGRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyB0aGV5J3ZlIGFkZGVkIGEgYGNtZF9yZXN1bHRfbGVuYCBwYXJhbWV0ZXIgdG8gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGFuZCBgZmVfc2VuZF9jb21tYW5kYC4gVGhlIGdvYWwgaXMgY2xlYXJseSB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvd3MgZHVyaW5nIFVTQiBjb21tYW5kIHJlc3VsdCBjb3B5aW5nLiBUaGUgY29kZSBpbmNsdWRlcyBhIGNoZWNrOiBgaWYgKGNtZF9yZXN1bHQgXHUwMDI2XHUwMDI2IHJsZW4gXHUwMDNlIGNtZF9yZXN1bHRfbGVuKSBybGVuID0gY21kX3Jlc3VsdF9sZW47YCBiZWZvcmUgdGhlIGBtZW1jcHlgLiBTbWFydC4gUHJldmVudGluZyB0aGF0IGtpbmQgb2Ygb3ZlcmZsb3cgaXMgYWx3YXlzIGdvb2QuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBVU0IgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBleHBsb2l0YWJpbGl0eSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIENhbiB0aGlzIGRyaXZlciBiZSByZWFjaGVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIncyBnb3QgdGhvc2UgYHN5el91c2JfY29ubmVjdGAgY2FsbHMgYW5kIG90aGVycyB3aGljaCBhcmUgcHJldHR5IGVmZmVjdGl2ZSBmb3IgVVNCIGRyaXZlciBmdXp6aW5nLiBHb29kLiBCdXQgd2FpdOKApiBpcyB0aGlzIGV2ZW4gYSAqbWVkaWEqIGRyaXZlcj8gWWVzLCB0aGUgcGF0aCBjb25maXJtcyBpdC4gSSBzaG91bGQgaGF2ZSBzZWVuIHRoYXQgaW1tZWRpYXRlbHkuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24uIElzIGB0dHVzYi1kZWNgIGVuYWJsZWQgaW4gY29tbW9uIGtlcm5lbHMsIG9yIGRvZXMgaXQgbmVlZCBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNlZD8gVGltZSB0byBwdWxsIHVwIGBncmVwcGVyYCBhbmQgaHVudCBkb3duIHRoZSBLY29uZmlnIGVudHJpZXMgZm9yIGB0dHVzYi1kZWNgIHRvIGRldGVybWluZSBob3cgcmVhY2hhYmxlIGl0IGlzIHdpdGhpbiB2YXJpb3VzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLiBHb3R0YSBzZWUgaG93IGJyb2FkbHkgdGhpcyBwcm90ZWN0aW9uIGFwcGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NDo1MC44OTM2MDMxMzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4MTc3MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHR1c2ItZGVjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi9LY29uZmlnPTUwPXNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItYnVkZ2V0L0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZzo1MTpzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbWVkaWEvdXNiL0tjb25maWctNTItXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9NYWtlZmlsZT0xMz1vYmoteSArPSB0dHVzYi1idWRnZXQvXFxuZHJpdmVycy9tZWRpYS91c2IvTWFrZWZpbGU6MTQ6b2JqLXkgKz0gdHR1c2ItZGVjL1xcbmRyaXZlcnMvbWVkaWEvdXNiL01ha2VmaWxlLTE1LVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jPTE2NTE9c3RhdGljIGludCB0dHVzYl9kZWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTcwNy1cXHRpZiAoZGVjLVxcdTAwM2VmZSA9PSBOVUxMKSB7XFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jOjE3MDg6XFx0XFx0cHJpbnRrKFxcXCJkdmItdHR1c2ItZGVjOiBBIGZyb250ZW5kIGRyaXZlciB3YXMgbm90IGZvdW5kIGZvciBkZXZpY2UgWyUwNHg6JTA0eF1cXFxcblxcXCIsXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTE3MDktXFx0XFx0ICAgICAgIGxlMTZfdG9fY3B1KGRlYy1cXHUwMDNldWRldi1cXHUwMDNlZGVzY3JpcHRvci5pZFZlbmRvciksXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTc1OT1zdGF0aWMgdm9pZCB0dHVzYl9kZWNfc2V0X21vZGVsKHN0cnVjdCB0dHVzYl9kZWMgKmRlYyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzY2LVxcdFxcdGRlYy1cXHUwMDNlbW9kZWxfbmFtZSA9IFxcXCJERUMyMDAwLXRcXFwiO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzY3OlxcdFxcdGRlYy1cXHUwMDNlZmlybXdhcmVfbmFtZSA9IFxcXCJkdmItdHR1c2ItZGVjLTIwMDB0LmZ3XFxcIjtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc2OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzcxLVxcdFxcdGRlYy1cXHUwMDNlbW9kZWxfbmFtZSA9IFxcXCJERUMyNTQwLXRcXFwiO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzcyOlxcdFxcdGRlYy1cXHUwMDNlZmlybXdhcmVfbmFtZSA9IFxcXCJkdmItdHR1c2ItZGVjLTI1NDB0LmZ3XFxcIjtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc3My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzc2LVxcdFxcdGRlYy1cXHUwMDNlbW9kZWxfbmFtZSA9IFxcXCJERUMzMDAwLXNcXFwiO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzc3OlxcdFxcdGRlYy1cXHUwMDNlZmlybXdhcmVfbmFtZSA9IFxcXCJkdmItdHR1c2ItZGVjLTMwMDBzLmZ3XFxcIjtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc3OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzkwPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNzkxOlxcdC5uYW1lXFx0XFx0PSBcXFwidHR1c2ItZGVjXFxcIixcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc5Mi1cXHQucHJvYmVcXHRcXHQ9IHR0dXNiX2RlY19wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTQ6NTAuOTUwNDI4NDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQzNjU3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciB0dHVzYi1kZWMqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgdHR1c2ItZGVjYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYnVpbGQuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5IHRvIHRoYXQuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoaXMgZmlsZTogYGRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnYC4gSSdsbCBiZSBsb29raW5nIGZvcjpcblxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIHRoaXMgZHJpdmVyIHRvIGV2ZW4gYmUgY29uc2lkZXJlZD8gQXJlIHRoZXJlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywga2VybmVsIGZlYXR1cmUgZGVwZW5kZW5jaWVzLCBvciBvdGhlciBkcml2ZXJzIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZT8gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dC5cbiogICAqKk9wdGlvbnM6KiogV2hhdCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXI/IEFyZSB0aGVyZSBvcHRpb25zIGZvciBkZWJ1Z2dpbmcsIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnRzLCBmaXJtd2FyZSBzZWxlY3Rpb24sIG9yIGRpZmZlcmVudCBsZXZlbHMgb2YgZnVuY3Rpb25hbGl0eT8gSSdsbCB3YW50IHRvIGdyYXNwIHRoZSBtZWFuaW5nIG9mIGVhY2ggb3B0aW9uLlxuKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgYXZhaWxhYmxlIG9wdGlvbnM/IEtub3dpbmcgdGhpcyBpcyBpbXBvcnRhbnQuIEl0IHJldmVhbHMgaG93IHRoZSBkcml2ZXIgd2lsbCBiZWhhdmUgXCJvdXQgb2YgdGhlIGJveFwiIGFuZCBpZGVudGlmaWVzIHBvdGVudGlhbCBhcmVhcyBmb3IgY3VzdG9taXphdGlvbi5cbiogICAqKkhlbHAgVGV4dDoqKiBUaGUgbW9zdCBpbXBvcnRhbnQgcGFydCEgVGhlIGBoZWxwYCB0ZXh0IHdpbGwgZ2l2ZSBtZSB0aGUgbW9zdCBjcml0aWNhbCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGVhY2ggb3B0aW9uIGRvZXMuIFRoZSB0ZXh0IHByb3ZpZGVzIHRoZSByYXRpb25hbGUgZm9yIHRoZSBvcHRpb24sIGFuZCBob3cgdG8gY29uZmlndXJlIG9yIHNlbGVjdCBpdC5cbiogICAqKlJlbGF0aW9uc2hpcHM6KiogSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgcGljdHVyZS4gSG93IGRvIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBgdHR1c2ItZGVjYCByZWxhdGUgdG8gb3RoZXIgbWVkaWEtcmVsYXRlZCBjb25maWd1cmF0aW9ucz8gQXJlIHRoZXJlIGNvbmZsaWN0cywgb3IgcGVyaGFwcyBzeW5lcmdpZXMsIHdpdGggb3RoZXIgVVNCIG9yIERWQi1yZWxhdGVkIGRyaXZlcnM/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuKiAgICoqUG9zc2libGUgQ29tcGlsZSBUaW1lIENoYW5nZXM6KiogSSB3aWxsIGFsc28gd2FudCB0byBpbnZlc3RpZ2F0ZSBhbnkgY29tcGlsZSB0aW1lIG9wdGlvbnMsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRoYXQgYWZmZWN0IHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS5cblxuRXNzZW50aWFsbHksIEknbSBzZXR0aW5nIG15c2VsZiB1cCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIGB0dHVzYi1kZWNgIGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCBhbmQgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhpcyBrbm93bGVkZ2UgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBjdXN0b21pemluZyB0aGlzIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBvciBzb2Z0d2FyZSBlbnZpcm9ubWVudC4gSSBuZWVkIHRvIGJlIGFibGUgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgaXRzIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NDo1NS43OTQwODgzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIERWQl9UVFVTQl9ERUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJUZWNobm90cmVuZC9IYXVwcGF1Z2UgVVNCIERFQyBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBEVkJfQ09SRSBcXHUwMDI2XFx1MDAyNiBVU0IgXFx1MDAyNlxcdTAwMjYgSU5QVVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXh0ZXJuYWwgVVNCIGFkYXB0ZXJzIGRlc2lnbmVkIGJ5IFRlY2hub3RyZW5kIGFuZFxcbiAgIDg6XFx0XFx0ICBwcm9kdWNlZCBieSBIYXVwcGF1Z2UsIHNoaXBwZWQgdW5kZXIgdGhlIGJyYW5kIG5hbWUgJ0RFQzIwMDAtdCdcXG4gICA5OlxcdFxcdCAgYW5kICdERUMzMDAwLXMnLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIEV2ZW4gaWYgdGhlc2UgZGV2aWNlcyBoYXZlIGEgTVBFRyBkZWNvZGVyIGJ1aWx0IGluLCB0aGV5IHRyYW5zbWl0XFxuICAxMjpcXHRcXHQgIG9ubHkgY29tcHJlc3NlZCBNUEVHIGRhdGEgb3ZlciB0aGUgVVNCIGJ1cywgc28geW91IG5lZWRcXG4gIDEzOlxcdFxcdCAgYW4gZXh0ZXJuYWwgc29mdHdhcmUgZGVjb2RlciB0byB3YXRjaCBUViBvbiB5b3VyIGNvbXB1dGVyLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIFRoaXMgZHJpdmVyIG5lZWRzIGV4dGVybmFsIGZpcm13YXJlLiBQbGVhc2UgdXNlIHRoZSBjb21tYW5kc1xcbiAgMTY6XFx0XFx0ICBcXFwiXFx1MDAzY2tlcm5lbGRpclxcdTAwM2Uvc2NyaXB0cy9nZXRfZHZiX2Zpcm13YXJlIGRlYzIwMDB0XFxcIixcXG4gIDE3OlxcdFxcdCAgXFxcIlxcdTAwM2NrZXJuZWxkaXJcXHUwMDNlL3NjcmlwdHMvZ2V0X2R2Yl9maXJtd2FyZSBkZWMyNTQwdFxcXCIsXFxuICAxODpcXHRcXHQgIFxcXCJcXHUwMDNja2VybmVsZGlyXFx1MDAzZS9zY3JpcHRzL2dldF9kdmJfZmlybXdhcmUgZGVjMzAwMHNcXFwiLFxcbiAgMTk6XFx0XFx0ICBkb3dubG9hZC9leHRyYWN0IHRoZW0sIGFuZCB0aGVuIGNvcHkgdGhlbSB0byAvdXNyL2xpYi9ob3RwbHVnL2Zpcm13YXJlXFxuICAyMDpcXHRcXHQgIG9yIC9saWIvZmlybXdhcmUgKGRlcGVuZGluZyBvbiBjb25maWd1cmF0aW9uIG9mIGZpcm13YXJlIGhvdHBsdWcpLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIFNheSBZIGlmIHlvdSBvd24gc3VjaCBhIGRldmljZSBhbmQgd2FudCB0byB1c2UgaXQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU0OjU1Ljc5NDE3MzA1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU1OTU2MjA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIERWQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIG9wdGlvbiBpcyBgRFZCX1RUVVNCX0RFQ2AsIGFuZCBpdCByZWxpZXMgb24gYERWQl9DT1JFYCwgYFVTQmAsIGBJTlBVVGAsIGFuZCBgUENJYC4gU2luY2UgdGhpcyBpcyBhIFVTQiBkcml2ZXIsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQncyBwcmltZSBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIHJvdXRlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgYnVmZmVyIG92ZXJmbG93IHdpdGhpbiB0aGUgYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZSB2dWxuZXJhYmlsaXR5IGFyaXNlcyB3aGVuIHRoZSByZWNlaXZlZCBgYWN0dWFsX2xlbmAgaXMgYXQgbGVhc3QgNCBieXRlcywgYW5kIGBiWzNdYCAoaW50ZXJwcmV0ZWQgYXMgYHJsZW5gKSBleGNlZWRzIHRoZSBleHBlY3RlZCBgY21kX3Jlc3VsdF9sZW5gLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZWFsIHBvaW50IG9mIGludGVyZXN0LCBhbmQgKmRlZmluaXRlbHkqIHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBmdXp6aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6XG5cbiogICBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgKHN0YXRpYylcbiogICBgdHR1c2JfZGVjX2dldF9zdGJfc3RhdGVgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zZXRfcGlkc2AgKHN0YXRpYylcbiogICBgdHR1c2JfZGVjX3NldF9pbnRlcmZhY2VgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zdGFydF90c19mZWVkYCAoc3RhdGljKVxuKiAgIGB0dHVzYl9kZWNfc3RhcnRfc2VjX2ZlZWRgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zdG9wX3RzX2ZlZWRgIChzdGF0aWMpXG4qICAgYHR0dXNiX2RlY19zdG9wX3NlY19mZWVkYCAoc3RhdGljKVxuKiAgIGB0dHVzYl9pbml0X3JjYCAoc3RhdGljKVxuKiAgIGB0dHVzYl9kZWNfYm9vdF9kc3BgIChzdGF0aWMpXG4qICAgYGZlX3NlbmRfY29tbWFuZGAgKHN0YXRpYylcbiogICBgdHR1c2JkZWNmZV9kdmJ0X3JlYWRfc3RhdHVzYCAoc3RhdGljKVxuKiAgIGB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kYCAoc3RhdGljKVxuKiAgIGB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kYCAoc3RhdGljKVxuKiAgIGB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZGAgKHN0YXRpYylcblxuSG1tLCBpbnRlcmVzdGluZy4gVGhleSdyZSBhbGwgc3RhdGljIGZ1bmN0aW9ucy4gV2hpY2ggbWVhbnMsIHRvIGdldCBhdCB0aGVtIHdpdGggZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBvciBvdGhlciBmdW5jdGlvbnMgaW4gYHR0dXNiX2RlYy5jYCBhbmQgYHR0dXNiZGVjZmUuY2AgdGhhdCAqY2FsbCogdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGZ1enppbmcgbGV2ZXJhZ2UgbGllcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCB0byB0aGVzZSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTowMy4zNTM3MzgxMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyNjQ3NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYy4qIHR0dXNiX2RlY19zZW5kX2NvbW1hbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0zMDI9c3RhdGljIHUxNiBjcmMxNih1MTYgY3JjLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTMxNC1cXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MzE1OnN0YXRpYyBpbnQgdHR1c2JfZGVjX3NlbmRfY29tbWFuZChzdHJ1Y3QgdHR1c2JfZGVjICpkZWMsIGNvbnN0IHU4IGNvbW1hbmQsXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jLTMxNi1cXHRcXHRcXHRcXHQgIGludCBwYXJhbV9sZW5ndGgsIGNvbnN0IHU4IHBhcmFtc1tdLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTowMy40MDIwMDkxODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY5NDc5MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipGb2N1c2luZyBvbiBOb24tU3RhdGljIEZ1bmN0aW9ucyBpbiBgdHR1c2JkZWNmZS5jYCoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlIG1lYXR5IGJpdHMgd2l0aGluIGB0dHVzYmRlY2ZlLmNgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFdoeT8gQmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgbGlrZWx5IHRvIGJlIGV4cG9zZWQgdG8gdGhlIG91dHNpZGUgd29ybGQsIHRoZSBpbnRlcmZhY2UgcG9pbnRzLCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGVpdGhlciBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIGFyZSBpbnRlbmRlZCB0byBiZSBjYWxsYWJsZSBleHRlcm5hbGx5LiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCBsb2NhbCB0byB0aGUgZmlsZSwgYW5kIHdoaWxlIHRoZXkgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGludGVybmFsIHdvcmtpbmdzLCB0aGV5J3JlIG5vdCB0aGUgcHJpbWFyeSBmb2N1cyAqcmlnaHQgbm93Ki4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHBvaW50cyBvZiBpbnRlcmFjdGlvbiwgdGhlIEFQSSBzdXJmYWNlLCBzbyB0byBzcGVhay4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvZiB0aGlzIG1vZHVsZSdzIGZ1bmN0aW9uYWxpdHkgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb21wb25lbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBtYXAgb2YgdGhlIGtleSBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODczOSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjA3LjY3MTQ5MTIyNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwOTYwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0cnVjdCBkdmJfZnJvbnRlbmRcXFxcKiB0dHVzYmRlY2ZlX2R2Yi4qX2F0dGFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmMtMTk2LVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYmRlY2ZlLmM6MTk3OnN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZidF9hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYz0yMTU9c3RhdGljIGNvbnN0IHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIHR0dXNiZGVjZmVfZHZic19vcHM7XFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yMTYtXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYzoyMTc6c3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZylcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jLTIxOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjA3LjcyMjU5Mzk0MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY0MTAzMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgdHR1c2JfZGVjX3Byb2JlYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byBgdHR1c2JfZGVjX3Byb2JlYC4gSSdtIHN0YXJ0aW5nIGhlcmUgYmVjYXVzZSBJIGtub3cgdGhpcyBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGRldmljZSBpbml0aWFsaXphdGlvbiB3aGVuIHRoZSBrZXJuZWwgZGV0ZWN0cyBhIGRldmljZSBjb21wYXRpYmxlIHdpdGggdGhlIGRyaXZlcnMgaW4gdGhpcyBtb2R1bGUsIEkgd2lsbCB3YW50IHRvIHNlZSB3aGF0IGluaXRpYWxpemF0aW9uIHByb2Nlc3NlcyBvY2N1ci4gSSBrbm93IGZyb20gcGFzdCBleHBlcmllbmNlIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwcm9iaW5nIGEgVFRVU0IgZGV2aWNlLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCBwcm9iZSBlbnRhaWxzLiBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhlIHN0YW5kYXJkIHN0dWZmIGZpcnN0OiByZXNvdXJjZSBhbGxvY2F0aW9uLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgYW5kIGRyaXZlciByZWdpc3RyYXRpb24uIEknbSBleHBlY3RpbmcgdG8gZmluZCBVU0IgZGVzY3JpcHRvciBwYXJzaW5nIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmcgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnMg4oCTIGFyZSB0aGV5IHVzaW5nIGBkZXZfZXJyYCBhcHByb3ByaWF0ZWx5PyBBcmUgdGhlcmUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgaGFyZHdhcmUgYWNjZXNzPyBBbmQsIGZpbmFsbHksIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gdW5kZXJzdGFuZCBob3cgdGhleSdyZSBoYW5kbGluZyBhbnkgZGV2aWNlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcyBpbiB0aGlzIGZ1bmN0aW9uLCBiZWNhdXNlIHRob3NlIGFyZSBvZnRlbiB0aGUgbW9zdCBpbnRlcmVzdGluZyBhbmQgY2FuIGluZGljYXRlIHBvdGVudGlhbCBjb21wYXRpYmlsaXR5IGlzc3VlcyBvciBkZXNpZ24gY2hhbGxlbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMwOSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjExLjA4NjcwMjgzNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MzgzMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgdHR1c2JfZGVjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM9MTY0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnIGZlX2NvbmZpZyA9IHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNjUwLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYzoxNjUxOnN0YXRpYyBpbnQgdHR1c2JfZGVjX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNjUyLVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MTEuMTM1NDQ4ODcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTIzNzUzNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgdHR1c2JfZGVjYCBEcml2ZXI6IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cblJpZ2h0LCBgdHR1c2JfZGVjX3Byb2JlYCDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBBcyB0aGUgbWFpbiBwcm9iZSBmdW5jdGlvbiwgaXQncyB0aGUgaGVhcnQgb2YgdGhlIFVTQiBkcml2ZXIncyBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCdzIGRvaW5nLCBhbmQgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgRFZCIGRyaXZlciwgSSBzaG91bGQgYW50aWNpcGF0ZSBpdCBkZWFsaW5nIHdpdGggdGhlIERWQiBmcm9udGVuZC4gU28sIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZnJvbSBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBEVkIgZnJvbnRlbmQgb3BlcmF0aW9uIHJlZ2lzdHJhdGlvbnMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBoYXBwZW5zLCB3aGVyZSBpdCBkZWZpbmVzIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB0dW5lciBhbmQgZGVtb2R1bGF0b3IuIExldCdzIHNlZSB3aGF0IGhvb2tzIGl0IGhhcyBpbnRvIHRoZSBEVkIgaW5mcmFzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NToxNC42ODc4Mjg0NTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjAzNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwucHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYz0xNzkwPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuYy0xNzkxLVxcdC5uYW1lXFx0XFx0PSBcXFwidHR1c2ItZGVjXFxcIixcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmM6MTc5MjpcXHQucHJvYmVcXHRcXHQ9IHR0dXNiX2RlY19wcm9iZSxcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmMtMTc5My1cXHQuZGlzY29ubmVjdFxcdD0gdHR1c2JfZGVjX2Rpc2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjE0LjczODQ0MzI5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE0NjA3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgYHR0dXNiX2RlY2AgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbkhtbSwgYHR0dXNiX2RlY19wcm9iZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi4gQnV0IHdhaXQsIGl0J3MgYmVpbmcgcmVnaXN0ZXJlZCwgcmlnaHQ/IEknbSBwcmV0dHkgc3VyZSBpdCdzIGluIGB0dHVzYl9kZWNfZHJpdmVyYC4gT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBTbywgaXQncyBhIHByaXZhdGUgcHJvYmUgZnVuY3Rpb24uXG5cbk5vdywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyBpbiBgdHR1c2JfZGVjLmNgIHRoYXQgYXJlbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmlzaWJpbGl0eSBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoaXMgZHJpdmVyIGEgYml0IGJldHRlci4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgaW5kaWNhdG9yIG9mIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtLiBMZXQgbWUgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTY2LCJPdXRwdXRUb2tlbnMiOjc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MTguMjUzMDU0ODExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDI2NDc5NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvdXNiL3R0dXNiLWRlYy90dHVzYl9kZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MTguMzAzMzI3OTU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MTAyNjI1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUmVmaW5pbmcgdGhlIEFwcHJvYWNoOiBBIE5ldyBSZWdleCBTdHJhdGVneSoqXG5cblJpZ2h0LCBsZXQncyBzdGVwIGJhY2sgYW5kIHJlYXNzZXNzLiBUaGUgcHJldmlvdXMgcmVnZXggd2Fzbid0IHF1aXRlIGhpdHRpbmcgdGhlIG1hcms7IGl0J3MgdGltZSB0byByZWZpbmUgdGhpcy4gSSBuZWVkIHRvIHJldGhpbmsgdGhlIGNvcmUgY29tcG9uZW50cyBvZiB0aGUgcGF0dGVybi4gVGhlIGZ1bmRhbWVudGFsIGlzc3VlIHNlZW1zIHRvIGJlIGluIHRoZS4uLiAoZmlsbCBpbiB0aGUgYmxhbmsgd2l0aCB0aGUgYXJlYSB0aGV5IGFyZSBsaWtlbHkgc3RydWdnbGluZyB3aXRoIGluIHRoZSBwcm9ibGVtIHRoZXkgYXJlIHNvbHZpbmcpLiBTbyBpbnN0ZWFkIG9mLi4uIChkZXNjcmliZSB0aGUgcHJldmlvdXMgYXBwcm9hY2ggdGhhdCB3YXMgcHJvYmxlbWF0aWMpLCBJIHNob3VsZCB0cnkgc29tZXRoaW5nIHRoYXQgZm9jdXNlcyBvbi4uLiAoZGVzY3JpYmUgdGhlIGFzcGVjdHMgb2YgYSBuZXcgYXBwcm9hY2gpLiBUaGUgY3J1Y2lhbCB0aGluZyBpcyB0byBlbnN1cmUgdGhpcyBpdGVyYXRpb24gaXMuLi4gKGhpZ2hsaWdodCBrZXkgY3JpdGVyaWEpLiBJJ20gdGhpbmtpbmcgb2YgaW5jb3Jwb3JhdGluZy4uLiAoZGVzY3JpYmUgdGVjaG5pY2FsIGVsZW1lbnRzIG9mIHRoZSByZWdleCBlLmcuIGxvb2thaGVhZHMsIGFuY2hvcnMsIHF1YW50aWZpZXJzKSBpbiBhIHNsaWdodGx5IGRpZmZlcmVudCBjb25maWd1cmF0aW9uLiBNYXliZSBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGhvdyB0aGlzIG1heSBwZXJmb3JtIHdpdGguLi4gKGNvbnNpZGVyIGVkZ2UgY2FzZXMsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgb3RoZXIgaW5wdXRzIGV0YykuIEknbGwgc3RhcnQgd2l0aCB0aGlzIG1vcmUgdGFyZ2V0ZWQgYXBwcm9hY2gsIGFuZCBpdGVyYXRlLCB1c2luZyBteSBleGlzdGluZyBrbm93bGVkZ2Ugb2YgcmVnZXggbnVhbmNlcy4gSG9wZWZ1bGx5LCB0aGlzIHJldmlzZWQgYXBwcm9hY2ggd2lsbCBnZXQgdG8gdGhlIHJlc3VsdCBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDY3LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NToyMy44MTM1OTMzNDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTM4MDM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwqPyBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NToyMy44NjU1NDU1NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzYyODU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIFJpZ2h0IGludG8gdGhlIEluaXQqKlxuXG5BbHJpZ2h0LCBubyBuZWVkIGZvciBwcmVhbWJsZSwgbGV0J3MgY3V0IHRvIHRoZSBjaGFzZS4gV2hlbiBJJ20gZGlzc2VjdGluZyBhIGRyaXZlciBsaWtlIGB0dHVzYl9kZWMuY2AsIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBhbHdheXMgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRm9yZ2V0IHRoZSBleHRyYW5lb3VzIGNvZGUgZm9yIGEgbW9tZW50OyB0aGUgYG1vZHVsZV9pbml0YCBtYWNybyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCdzIHRoZSBsYXVuY2hwYWQsIHRoZSBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyB0aGluZyBjb21lcyB0byBsaWZlOiB3aGF0IHJlc291cmNlcyBpdCByZXF1ZXN0cywgd2hhdCBoYXJkd2FyZSBpdCBwcm9iZXMsIGFuZCBob3cgaXQgaG9va3MgaXRzZWxmIGludG8gdGhlIGtlcm5lbCdzIHN1YnN5c3RlbXMuIFNvLCB5ZWFoLCBza2lwcGluZyByaWdodCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUuIExldCdzIHNlZSB3aGF0IGBtb2R1bGVfaW5pdGAgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODEwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MjcuMzc5MTc4MDk2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTc4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTc4MDpcXHR9XFxuMTc4MTpcXHRcXG4xNzgyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCB0dHVzYl9kZWNfdGFibGVbXSA9IHtcXG4xNzgzOlxcdFxcdHtVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA2KX0sXFx0LyogREVDMzAwMC1zICovXFxuMTc4NDpcXHRcXHQvKntVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA3KX0sXFx0ICAgVW5jb25maXJtZWQgKi9cXG4xNzg1OlxcdFxcdHtVU0JfREVWSUNFKDB4MGI0OCwgMHgxMDA4KX0sXFx0LyogREVDMjAwMC10ICovXFxuMTc4NjpcXHRcXHR7VVNCX0RFVklDRSgweDBiNDgsIDB4MTAwOSl9LFxcdC8qIERFQzI1NDAtdCAqL1xcbjE3ODc6XFx0XFx0e31cXG4xNzg4OlxcdH07XFxuMTc4OTpcXHRcXG4xNzkwOlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB0dHVzYl9kZWNfZHJpdmVyID0ge1xcbjE3OTE6XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJ0dHVzYi1kZWNcXFwiLFxcbjE3OTI6XFx0XFx0LnByb2JlXFx0XFx0PSB0dHVzYl9kZWNfcHJvYmUsXFxuMTc5MzpcXHRcXHQuZGlzY29ubmVjdFxcdD0gdHR1c2JfZGVjX2Rpc2Nvbm5lY3QsXFxuMTc5NDpcXHRcXHQuaWRfdGFibGVcXHQ9IHR0dXNiX2RlY190YWJsZSxcXG4xNzk1OlxcdH07XFxuMTc5NjpcXHRcXG4xNzk3OlxcdG1vZHVsZV91c2JfZHJpdmVyKHR0dXNiX2RlY19kcml2ZXIpO1xcbjE3OTg6XFx0XFxuMTc5OTpcXHRNT0RVTEVfQVVUSE9SKFxcXCJBbGV4IFdvb2RzIFxcdTAwM2NsaW51eC1kdmJAZ2libGV0cy5vcmdcXHUwMDNlXFxcIik7XFxuMTgwMDpcXHRNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX05BTUUpO1xcbjE4MDE6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbjE4MDI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHR0dXNiX2RlY190YWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjI3LjM3OTMyMjcxNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg4NDYwNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIERlY29kZXIgTW9kdWxlIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB0dHVzYl9kZWNgIG1vZHVsZSwgYW5kIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50cyBmb3IgaW50ZXJhY3Rpb24gc2VlbSB0byBiZSBgdHR1c2JfZGVjX3Byb2JlYCBhbmQgYHR0dXNiX2RlY19kaXNjb25uZWN0YC4gVGhleSdyZSAqc3RhdGljKiwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IG1lYW5zIHRoZXkgd29uJ3QgYmUgZXhwb3J0ZWQgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLiBCdXQsIGFuZCB0aGlzIGlzIGtleSwgc3l6a2FsbGVyICpjYW4qIHN0aWxsIHRhcmdldCB0aGVtIHVzaW5nIFVTQiBwc2V1ZG8tc3lzY2FsbHMsIHJpZ2h0P1xuXG5XYWl0IGEgc2Vjb25kLCBsZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gYWdhaW4uLi4gYWgsIHRoZSBwcm9tcHQgaXMgdmVyeSBjbGVhcjogaXQgcHJlZmVycyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZSByZWFzb25pbmcgaXMgc29saWQsIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG9uJ3QgZ2V0IGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFNvLCBgdHR1c2JfZGVjX3Byb2JlYCAqaXMqIHN0YXRpYy4uLiBpcyB0aGVyZSBhIHJpc2sgb2YgaXQgYmVpbmcgaW5saW5lZD8gSG1tbSwgbm8sIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciBjYW4ndCBpbmxpbmUgaXQuIEJ1dCBzdGlsbCwgaXQncyBzdGF0aWMuXG5cblRoZSBuZXh0IHRob3VnaHQgaXMgY2xlYXIgLSBhcmUgdGhlcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGU/IEkgbmVlZCB0byBjaGVjayB0aGUgc291cmNlLiBMZXQncyBzdGFydCB3aXRoIGB0dHVzYmRlY2ZlLmNgLCB0aGUgZmlsZSBtaWdodCBjb250YWluIHNvbWV0aGluZyB0aGF0IGZpdHMgdGhlIGJpbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6MzEuOTY3Nzg3MTkzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHR7XFxuIDE5MTpcXHRcXHRzdHJ1Y3QgdHR1c2JkZWNmZV9zdGF0ZSAqc3RhdGUgPSBmZS1cXHUwMDNlZGVtb2R1bGF0b3JfcHJpdjtcXG4gMTkyOlxcdFxcdGtmcmVlKHN0YXRlKTtcXG4gMTkzOlxcdH1cXG4gMTk0OlxcdFxcbiAxOTU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIHR0dXNiZGVjZmVfZHZidF9vcHM7XFxuIDE5NjpcXHRcXG4gMTk3OlxcdHN0cnVjdCBkdmJfZnJvbnRlbmQqIHR0dXNiZGVjZmVfZHZidF9hdHRhY2goY29uc3Qgc3RydWN0IHR0dXNiZGVjZmVfY29uZmlnKiBjb25maWcpXFxuIDE5ODpcXHR7XFxuIDE5OTpcXHRcXHRzdHJ1Y3QgdHR1c2JkZWNmZV9zdGF0ZSogc3RhdGUgPSBOVUxMO1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHQvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpbnRlcm5hbCBzdGF0ZSAqL1xcbiAyMDI6XFx0XFx0c3RhdGUgPSBrbWFsbG9jX29iaihzdHJ1Y3QgdHR1c2JkZWNmZV9zdGF0ZSk7XFxuIDIwMzpcXHRcXHRpZiAoc3RhdGUgPT0gTlVMTClcXG4gMjA0OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAyMDU6XFx0XFxuIDIwNjpcXHRcXHQvKiBzZXR1cCB0aGUgc3RhdGUgKi9cXG4gMjA3OlxcdFxcdHN0YXRlLVxcdTAwM2Vjb25maWcgPSBjb25maWc7XFxuIDIwODpcXHRcXG4gMjA5OlxcdFxcdC8qIGNyZWF0ZSBkdmJfZnJvbnRlbmQgKi9cXG4gMjEwOlxcdFxcdG1lbWNweShcXHUwMDI2c3RhdGUtXFx1MDAzZWZyb250ZW5kLm9wcywgXFx1MDAyNnR0dXNiZGVjZmVfZHZidF9vcHMsIHNpemVvZihzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcykpO1xcbiAyMTE6XFx0XFx0c3RhdGUtXFx1MDAzZWZyb250ZW5kLmRlbW9kdWxhdG9yX3ByaXYgPSBzdGF0ZTtcXG4gMjEyOlxcdFxcdHJldHVybiBcXHUwMDI2c3RhdGUtXFx1MDAzZWZyb250ZW5kO1xcbiAyMTM6XFx0fVxcbiAyMTQ6XFx0XFxuIDIxNTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJzX29wcztcXG4gMjE2OlxcdFxcbiAyMTc6XFx0c3RydWN0IGR2Yl9mcm9udGVuZCogdHR1c2JkZWNmZV9kdmJzX2F0dGFjaChjb25zdCBzdHJ1Y3QgdHR1c2JkZWNmZV9jb25maWcqIGNvbmZpZylcXG4gMjE4OlxcdHtcXG4gMjE5OlxcdFxcdHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKiBzdGF0ZSA9IE5VTEw7XFxuIDIyMDpcXHRcXG4gMjIxOlxcdFxcdC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGludGVybmFsIHN0YXRlICovXFxuIDIyMjpcXHRcXHRzdGF0ZSA9IGttYWxsb2Nfb2JqKHN0cnVjdCB0dHVzYmRlY2ZlX3N0YXRlKTtcXG4gMjIzOlxcdFxcdGlmIChzdGF0ZSA9PSBOVUxMKVxcbiAyMjQ6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdC8qIHNldHVwIHRoZSBzdGF0ZSAqL1xcbiAyMjc6XFx0XFx0c3RhdGUtXFx1MDAzZWNvbmZpZyA9IGNvbmZpZztcXG4gMjI4OlxcdFxcdHN0YXRlLVxcdTAwM2V2b2x0YWdlID0gMDtcXG4gMjI5OlxcdFxcdHN0YXRlLVxcdTAwM2VoaV9iYW5kID0gMDtcXG4gMjMwOlxcdFxcbiAyMzE6XFx0XFx0LyogY3JlYXRlIGR2Yl9mcm9udGVuZCAqL1xcbiAyMzI6XFx0XFx0bWVtY3B5KFxcdTAwMjZzdGF0ZS1cXHUwMDNlZnJvbnRlbmQub3BzLCBcXHUwMDI2dHR1c2JkZWNmZV9kdmJzX29wcywgc2l6ZW9mKHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzKSk7XFxuIDIzMzpcXHRcXHRzdGF0ZS1cXHUwMDNlZnJvbnRlbmQuZGVtb2R1bGF0b3JfcHJpdiA9IHN0YXRlO1xcbiAyMzQ6XFx0XFx0cmV0dXJuIFxcdTAwMjZzdGF0ZS1cXHUwMDNlZnJvbnRlbmQ7XFxuIDIzNTpcXHR9XFxuIDIzNjpcXHRcXG4gMjM3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnRfb3BzID0ge1xcbiAyMzg6XFx0XFx0LmRlbHN5cyA9IHsgU1lTX0RWQlQgfSxcXG4gMjM5OlxcdFxcdC5pbmZvID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTozMS45Njc5MDg4MjNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyODUwMzc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqRXhhbWluaW5nIHRoZSBEcml2ZXIgRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgVGl0YW5UViBVU0IgZHJpdmVyIGZ1bmN0aW9ucy4gSXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgIGFyZSAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IG11c3QgYmUgZXhwb3J0ZWQsIGxpa2VseSBmb3IgbW9kdWxlIGxvYWRpbmcgb3IgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZW4gdGhlcmUncyBgdHR1c2JfZGVjX3Byb2JlYC4gSSAqdGhpbmsqIEkgcmVjYWxsIHRoYXQgb25lIGlzIHN0YXRpYywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyB0aGUgY29yZSBwcm9iZSBmdW5jdGlvbiwgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRoZSBVU0IgZHJpdmVyLiBHaXZlbiBpdHMgY2VudHJhbCByb2xlIGluIGluaXRpYWxpemF0aW9uLCBJJ2xsIG5lZWQgdG8gaW5jbHVkZSBpdCBpbiBteSB1bmRlcnN0YW5kaW5nLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYyBhbmQsIHByZXN1bWFibHksIG5vdCBkaXJlY3RseSBleHBvc2VkIGV4dGVybmFsbHkuIEhhbmcgb24uLi4gYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgICppcyogZXhwb3J0ZWQ/IEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuIEdvdHRhIGRvdWJsZS1jaGVjayB0aGUgbW9kdWxlIGV4cG9ydCB0YWJsZSBvciB0aGUgc3ltYm9sIGRlZmluaXRpb25zIHRvIGJlIHN1cmUsIGJ1dCB0aGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzE1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTozNS45OTY0MTYwOTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTkyMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jPTI4Nz1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYy0yODgtXFxuZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiZGVjZmUuYzoyODk6RVhQT1JUX1NZTUJPTCh0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoKTtcXG5kcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jOjI5MDpFWFBPUlRfU1lNQk9MKHR0dXNiZGVjZmVfZHZic19hdHRhY2gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTozNi4wNDY0MTQyNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjI2MzQ1NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFNlbGVjdGlvbiBvZiBSZWxldmFudCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGJlc3QgcmVwcmVzZW50IHRoaXMgZml4IGZvciB0aGUgVVNCIGRyaXZlci4gSXQncyBjbGVhciB0aGF0IHRoZSBjaGFuZ2VzICphcmUqIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kLiBJIG5lZWQgdG8gc2VsZWN0IHRoZSBtb3N0IHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgdGhpcyBleHBsYW5hdGlvbi5cblxuSW5pdGlhbGx5LCBJJ2QgdGhvdWdodCBhYm91dCBpbmNsdWRpbmcgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgc2luY2UgdGhleSBhcmUgdGhlIGF0dGFjaCBmdW5jdGlvbnMuIEFuZCBvZiBjb3Vyc2UsIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGEgY2xlYXIgY2FuZGlkYXRlOyBpdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGRyaXZlciwgYW5kIHRoYXQncyB1c3VhbGx5IHdoZXJlIHlvdSB3YW50IHRvIHN0YXJ0LlxuXG5Ob3csIGhvbGQgb24uLi4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgLi4uICp0aGF0J3MqIHRoZSBmdW5jdGlvbiB0aGF0IHdhcyBhY3R1YWxseSBtb2RpZmllZC4gSXQncyBzdGF0aWMsIHNvIHRoYXQncyBhIGJpdCBvZiBhIHdyaW5rbGUsIGJ1dCBpdCdzIHRoZSBoZWFydCBvZiB0aGUgZml4LCByaWdodD8gSXQncyBjYWxsZWQgYnkgYSBsb3Qgb2Ygb3RoZXIgZnVuY3Rpb25zLiBUaGUgcHJvbXB0IGRvZXMgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMsIHNvIG1heWJlIGB0dHVzYl9kZWNfcHJvYmVgIGlzIGEgYmV0dGVyIHJlcHJlc2VudGF0aW9uLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGlzICpkaXJlY3RseSogY2FsbGVkIGJ5IGB0dHVzYl9kZWNfcHJvYmVgIOKAkyBhbmQgb3RoZXIgZnVuY3Rpb25zIGluIHRoYXQgY2hhaW46IGB0dHVzYl9kZWNfYm9vdF9kc3BgLCBgdHR1c2JfaW5pdF9yY2AsIGV0Yy4gLSAqYW5kKiBmcm9tIERWQiBmcm9udGVuZCBvcGVyYXRpb25zIHZpYSBgZmVfc2VuZF9jb21tYW5kYC4gVGhlIERWQiBmcm9udGVuZCBvcHMgdGhlbXNlbHZlcyBhcmUgcmVnaXN0ZXJlZCBpbiBgdHR1c2JkZWNmZV9kdmJ0X29wc2AgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfb3BzYC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hhdCB0aGUgRFZCIGZyb250ZW5kIG9wcyBhcmUgYWN0dWFsbHkgZG9pbmcuIFRoYXQnbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgY2FsbCBwYXRocyB0byBjb25zaWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyMDgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTU6NDEuMjcyNzYzMDQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JkZWNmZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzNyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzNzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGR2Yl9mcm9udGVuZF9vcHMgdHR1c2JkZWNmZV9kdmJ0X29wcyA9IHtcXG4gMjM4OlxcdFxcdC5kZWxzeXMgPSB7IFNZU19EVkJUIH0sXFxuIDIzOTpcXHRcXHQuaW5mbyA9IHtcXG4gMjQwOlxcdFxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiVGVjaG5vVHJlbmQvSGF1cHBhdWdlIERFQzIwMDAtdCBGcm9udGVuZFxcXCIsXFxuIDI0MTpcXHRcXHRcXHQuZnJlcXVlbmN5X21pbl9oelxcdD0gIDUxICogTUh6LFxcbiAyNDI6XFx0XFx0XFx0LmZyZXF1ZW5jeV9tYXhfaHpcXHQ9IDg1OCAqIE1IeixcXG4gMjQzOlxcdFxcdFxcdC5mcmVxdWVuY3lfc3RlcHNpemVfaHpcXHQ9IDYyNTAwLFxcbiAyNDQ6XFx0XFx0XFx0LmNhcHMgPVxcdEZFX0NBTl9GRUNfMV8yIHwgRkVfQ0FOX0ZFQ18yXzMgfCBGRV9DQU5fRkVDXzNfNCB8XFxuIDI0NTpcXHRcXHRcXHRcXHRGRV9DQU5fRkVDXzVfNiB8IEZFX0NBTl9GRUNfN184IHwgRkVfQ0FOX0ZFQ19BVVRPIHxcXG4gMjQ2OlxcdFxcdFxcdFxcdEZFX0NBTl9RQU1fMTYgfCBGRV9DQU5fUUFNXzY0IHwgRkVfQ0FOX1FBTV9BVVRPIHxcXG4gMjQ3OlxcdFxcdFxcdFxcdEZFX0NBTl9UUkFOU01JU1NJT05fTU9ERV9BVVRPIHwgRkVfQ0FOX0dVQVJEX0lOVEVSVkFMX0FVVE8gfFxcbiAyNDg6XFx0XFx0XFx0XFx0RkVfQ0FOX0hJRVJBUkNIWV9BVVRPLFxcbiAyNDk6XFx0XFx0fSxcXG4gMjUwOlxcdFxcbiAyNTE6XFx0XFx0LnJlbGVhc2UgPSB0dHVzYmRlY2ZlX3JlbGVhc2UsXFxuIDI1MjpcXHRcXG4gMjUzOlxcdFxcdC5zZXRfZnJvbnRlbmQgPSB0dHVzYmRlY2ZlX2R2YnRfc2V0X2Zyb250ZW5kLFxcbiAyNTQ6XFx0XFxuIDI1NTpcXHRcXHQuZ2V0X3R1bmVfc2V0dGluZ3MgPSB0dHVzYmRlY2ZlX2R2YnRfZ2V0X3R1bmVfc2V0dGluZ3MsXFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdC5yZWFkX3N0YXR1cyA9IHR0dXNiZGVjZmVfZHZidF9yZWFkX3N0YXR1cyxcXG4gMjU4OlxcdH07XFxuIDI1OTpcXHRcXG4gMjYwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcyB0dHVzYmRlY2ZlX2R2YnNfb3BzID0ge1xcbiAyNjE6XFx0XFx0LmRlbHN5cyA9IHsgU1lTX0RWQlMgfSxcXG4gMjYyOlxcdFxcdC5pbmZvID0ge1xcbiAyNjM6XFx0XFx0XFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJUZWNobm9UcmVuZC9IYXVwcGF1Z2UgREVDMzAwMC1zIEZyb250ZW5kXFxcIixcXG4gMjY0OlxcdFxcdFxcdC5mcmVxdWVuY3lfbWluX2h6XFx0PSAgOTUwICogTUh6LFxcbiAyNjU6XFx0XFx0XFx0LmZyZXF1ZW5jeV9tYXhfaHpcXHQ9IDIxNTAgKiBNSHosXFxuIDI2NjpcXHRcXHRcXHQuZnJlcXVlbmN5X3N0ZXBzaXplX2h6XFx0PSAgMTI1ICoga0h6LFxcbiAyNjc6XFx0XFx0XFx0LnN5bWJvbF9yYXRlX21pbiAgICAgICAgPSAxMDAwMDAwLCAgLyogZ3Vlc3NlZCAqL1xcbiAyNjg6XFx0XFx0XFx0LnN5bWJvbF9yYXRlX21heCAgICAgICAgPSA0NTAwMDAwMCwgLyogZ3Vlc3NlZCAqL1xcbiAyNjk6XFx0XFx0XFx0LmNhcHMgPVxcdEZFX0NBTl9GRUNfMV8yIHwgRkVfQ0FOX0ZFQ18yXzMgfCBGRV9DQU5fRkVDXzNfNCB8XFxuIDI3MDpcXHRcXHRcXHRcXHRGRV9DQU5fRkVDXzVfNiB8IEZFX0NBTl9GRUNfN184IHwgRkVfQ0FOX0ZFQ19BVVRPIHxcXG4gMjcxOlxcdFxcdFxcdFxcdEZFX0NBTl9RUFNLXFxuIDI3MjpcXHRcXHR9LFxcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHQucmVsZWFzZSA9IHR0dXNiZGVjZmVfcmVsZWFzZSxcXG4gMjc1OlxcdFxcbiAyNzY6XFx0XFx0LnNldF9mcm9udGVuZCA9IHR0dXNiZGVjZmVfZHZic19zZXRfZnJvbnRlbmQsXFxuIDI3NzpcXHRcXG4gMjc4OlxcdFxcdC5yZWFkX3N0YXR1cyA9IHR0dXNiZGVjZmVfZHZic19yZWFkX3N0YXR1cyxcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0LmRpc2VxY19zZW5kX21hc3Rlcl9jbWQgPSB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZCxcXG4gMjgxOlxcdFxcdC5zZXRfdm9sdGFnZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdm9sdGFnZSxcXG4gMjgyOlxcdFxcdC5zZXRfdG9uZSA9IHR0dXNiZGVjZmVfZHZic19zZXRfdG9uZSxcXG4gMjgzOlxcdH07XFxuIDI4NDpcXHRcXG4gMjg1OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiVFRVU0IgREVDIERWQi1UL1MgRGVtb2R1bGF0b3IgZHJpdmVyXFxcIik7XFxuIDI4NjpcXHRNT0RVTEVfQVVUSE9SKFxcXCJBbGV4IFdvb2RzL0FuZHJldyBkZSBRdWluY2V5XFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjQxLjI3Mjg5ODgwN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI4Mjk1Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhlc2UgbW9kaWZpY2F0aW9ucyB0byBgdHR1c2JkZWNmZS5jYC4gSSBzZWUgdGhleSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGNvcmUgZnJvbnRlbmQgY29udHJvbCBmdW5jdGlvbnM6IGB0dHVzYmRlY2ZlX2R2YnRfcmVhZF9zdGF0dXNgLCBgdHR1c2JkZWNmZV9kdmJ0X3NldF9mcm9udGVuZGAsIGB0dHVzYmRlY2ZlX2R2YnNfc2V0X2Zyb250ZW5kYCwgYW5kIGB0dHVzYmRlY2ZlX2R2YnNfZGlzZXFjX3NlbmRfbWFzdGVyX2NtZGAuIFRoZXkgYXJlIGFsbCBzdGF0aWMsIHdoaWNoIGlzIHR5cGljYWwgZm9yIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIGEgZHJpdmVyLCBidXQgdGhleSBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBgZHZiX2Zyb250ZW5kX29wc2Agc3RydWN0dXJlLiBUaGlzIG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBzdGFuZGFyZCB3YXkgdG8gZXhwb3NlIHRoZXNlIGZyb250ZW5kIG9wZXJhdGlvbnMgdG8gdGhlIERWQiBjb3JlLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGluY2x1ZGUgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgLCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAsIGFuZCBgdHR1c2JfZGVjX3Byb2JlYCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgY2VudHJhbCBjb25maWcgaGVyZSBpcyBgRFZCX1RUVVNCX0RFQ2AuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBEVkJfQ09SRWAsIGBVU0JgLCBgSU5QVVRgLCBhbmQgYFBDSWAuIEhhbmcgb24gYSBzZWNvbmQuLi4gYFBDSWA/IFRoaXMgaXMgYSBVU0IgZHJpdmVyOyB3aHkgdGhlIFBDSSBkZXBlbmRlbmN5PyBJdCBkb2Vzbid0IHF1aXRlIGFkZCB1cC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgZnVydGhlci4gTGV0J3Mgc2VlIHdoYXQncyBpbiBgZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdgIHRvIHNlZSBpZiB0aGF0IHNoZWRzIGFueSBsaWdodCBvbiB0aGlzLiBJdCBzZWVtcyBsaWtlIHNvbWV0aGluZyBpc24ndCBxdWl0ZSByaWdodCwgYW5kIHRoZSBLY29uZmlnIG1pZ2h0IGNsYXJpZnkgd2h5IHRoZSBkZXBlbmRlbmN5IGV4aXN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4ODUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo0Ni4zMDExOTg2ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBEVkJfVFRVU0JfREVDXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGVjaG5vdHJlbmQvSGF1cHBhdWdlIFVTQiBERUMgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gRFZCX0NPUkUgXFx1MDAyNlxcdTAwMjYgVVNCIFxcdTAwMjZcXHUwMDI2IElOUFVUIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFN1cHBvcnQgZm9yIGV4dGVybmFsIFVTQiBhZGFwdGVycyBkZXNpZ25lZCBieSBUZWNobm90cmVuZCBhbmRcXG4gICA4OlxcdFxcdCAgcHJvZHVjZWQgYnkgSGF1cHBhdWdlLCBzaGlwcGVkIHVuZGVyIHRoZSBicmFuZCBuYW1lICdERUMyMDAwLXQnXFxuICAgOTpcXHRcXHQgIGFuZCAnREVDMzAwMC1zJy5cXG4gIDEwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo0Ni4zMDEyODcwMDZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5MDI1NTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIHRoZSBEVkItVC9TIFVTQiBSZWNlaXZlciBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJ20gc2VlaW5nIGlzIHRoZSBkZXBlbmRlbmN5IGNoYWluLiBUaGlzIGZpeCByZWxpZXMgb24gYERWQl9DT1JFIFx1MDAyNlx1MDAyNiBVU0IgXHUwMDI2XHUwMDI2IElOUFVUIFx1MDAyNlx1MDAyNiBQQ0lgLiBSaWdodCwgc28gSSBuZWVkIHRvIGJlIHN1cmUgYERWQl9UVFVTQl9ERUNgLCBgRFZCX0NPUkVgLCBgVVNCYCwgYElOUFVUYCwgYW5kIGBQQ0lgIGFyZSBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBJJ20gZmFpcmx5IGNlcnRhaW4gYFBDSWAsIGBVU0JgLCBhbmQgYElOUFVUYCBhcmUgc3RhbmRhcmQsIGJ1dCBgRFZCX0NPUkVgIGlzIHRoZSBvbmUgdG8gZG91YmxlLWNoZWNrLiBBbmQgb2J2aW91c2x5LCBgRFZCX1RUVVNCX0RFQ2AgaXMgdGhlIHByaW1hcnkgdGFyZ2V0LlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBvbmVzIHRvIGNhbGwgb3V0IGhlcmU/IGB0dHVzYl9kZWNfcHJvYmVgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGRyaXZlci4gVGhlbiB0aGVyZSBhcmUgYHR0dXNiZGVjZmVfZHZidF9hdHRhY2hgIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAgd2hpY2ggYXJlIGFsc28gY3JpdGljYWwuIExldCdzIHNlZS4uLiB0aGUgcHJvbXB0IHdhbnRzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4uLiBobW0sIGB0dHVzYl9kZWNfc2VuZF9jb21tYW5kYCB3YXMgdGhlIGZ1bmN0aW9uIHRoYXQgd2FzIGFjdHVhbGx5IG1vZGlmaWVkLCBidXQgaXQncyAqc3RhdGljKi4gSXQncyBub3QgYSBzbWFsbCBoZWxwZXIgdGhvdWdoLCBtaWdodCBub3QgYmUgaW5saW5lZC4uLiBCdXQgSSAqa25vdyogYHR0dXNiX2RlY19wcm9iZWAgY2FuJ3QgYmUgaW5saW5lZCBiZWNhdXNlIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gU28gSSdsbCBsaXN0IGB0dHVzYl9kZWNfcHJvYmVgLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAsIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAuXG5cbk9rYXksIGxldCdzIHJlY2FwIG15IHJlYXNvbmluZy4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAuIEl0IGFkZHMgYSBgY21kX3Jlc3VsdF9sZW5gIGNoZWNrIGJlZm9yZSBjb3B5aW5nIHRoZSBVU0IgY29tbWFuZCByZXN1bHQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBtZWRpYSBkcml2ZXIuIEkgY2FuIGFic29sdXRlbHkgZnV6eiB0aGlzIHdpdGggc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvcmF3LWdhZGdldCksIHdoaWNoIGlzIHNvbWV0aGluZyBJIHdhbnQgdG8gZG8uIFNvIHRoZSBtYWluIGNvbmZpZ3MgSSBoYXZlIHRvIGhhdmUgaW4gcGxhY2UgYXJlIGBEVkJfVFRVU0JfREVDYCBhbmQsIGNyaXRpY2FsbHksIGl0cyBkZXBlbmRlbmN5LCBgRFZCX0NPUkVgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBzaG91bGQgdmVyaWZ5IHRoYXQgYERWQl9DT1JFYCBpcyBpbiBgZHJpdmVycy9tZWRpYS9kdmItY29yZS9LY29uZmlnYC4gUmlnaHQsIGdvb2QuIEFsbCBzZWVtcyBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2MTcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo1NC4zOTE1NDY3OTZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NzQxMDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEVkJfQ09SRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWc9MTcwPWNvbmZpZyBNRURJQV9DT05UUk9MTEVSXFxuLS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTgzLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxODQ6Y29uZmlnIERWQl9DT1JFXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE4NS1cXHR0cmlzdGF0ZSBcXFwiRFZCIENvcmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU1OjU0LjQ4NjI5Mzk2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTI1Nzk0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuT2theSwgd2FpdCBhIHNlY29uZC4uLiBJICp0aG91Z2h0KiBJIHJlbWVtYmVyZWQgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBgRFZCX0NPUkVgIHJlY2VudGx5LiBXaGVyZSB3YXMgdGhhdCwgYWdhaW4/IEFoLCB5ZXMsIGl0J3MgY29taW5nIGJhY2sgdG8gbWUg4oCTIGl0J3MgYWN0dWFsbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGZpbGUuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgYW5kIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIGhhbmRsZWQuIEFscmlnaHQsIGxldCdzIG9wZW4gdGhhdCBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3MDEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo1Ny43Mzg4NzY2MjlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHQjIERWQiBDb3JlXFxuIDE4MTpcXHQjXFx0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcXG4gMTgyOlxcdCNcXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIERWQl9DT1JFXFxuIDE4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiRFZCIENvcmVcXFwiXFxuIDE4NjpcXHRcXHRkZXBlbmRzIG9uIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxcbiAxODc6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxODg6XFx0XFx0ZGVmYXVsdCBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4gMTg5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxOTA6XFx0XFx0aGVscFxcbiAxOTE6XFx0XFx0ICBFbmFibGVzIHRoZSBEVkIgQVBJLCB1c2VkIGJ5IERpZ2l0YWwgVFYgZGV2aWNlcy4gU3VwcG9ydHMgc2V2ZXJhbFxcbiAxOTI6XFx0XFx0ICBzdGFuZGFyZHMsIGluY2x1ZGluZyBEVkIsIEFUU0MsIElTREIgYW5kIENNREIuXFxuIDE5MzpcXHRcXG4gMTk0OlxcdGVuZG1lbnUgIyBNZWRpYSBjb3JlIHN1cHBvcnRcXG4gMTk1OlxcdFxcbiAxOTY6XFx0I1xcbiAxOTc6XFx0IyBFeHRyYSBwZXItbWVkaWEgQVBJIGNvcmUgZnVuY3Rpb25hbGl0eVxcbiAxOTg6XFx0XFxuIDE5OTpcXHRtZW51IFxcXCJWaWRlbzRMaW51eCBvcHRpb25zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NTo1Ny43Mzg5NTU5NjlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxNTMzNDg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkRpZ2dpbmcgaW50byBEaWdpdGFsIFRWIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYERWQl9DT1JFYCBpcyBwdWxsaW5nIGluIGEgZGVwZW5kZW5jeSBvbiBgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUYC4gVGhhdCBtYWtlcyBzZW5zZTsgdGhlIGNvcmUgRFZCIGZ1bmN0aW9uYWxpdHkgb2J2aW91c2x5IHJlbGllcyBvbiBoYXZpbmcgc29tZSBiYXNpYyBkaWdpdGFsIFRWIHN1cHBvcnQgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBzcGVjaWZpY3Mgb2YgYE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVGAganVzdCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGV2ZXJ5dGhpbmcgY29ycmVjdGx5LiBMZXQncyBnbyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoYXQgY29uZmlnIG9wdGlvbiBhY3R1YWxseSAqZG9lcyouIFRoZXJlJ3MgbGlrZWx5IHNvbWUgbnVhbmNlIHRoZXJlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJlZm9yZSBJIG1ha2UgYW55IGRlY2lzaW9ucyBhYm91dCBob3cgdG8gY29uZmlndXJlIHRoaXMgd2hvbGUgc3Vic3lzdGVtLiBJdCdzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTcwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjowMC43NTQyOTU2NTJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjU0MjczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz03Nj1jb25maWcgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlRcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy04OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6OTA6Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy05MS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjAwLjkyMDg0OTI1MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk3ODkzMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBTdWJzeXN0ZW0gS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIG1lZGlhIHN1YnN5c3RlbSwgYW5kIG15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBwbGFjZSB0byBzdGFydCBpcyB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhcm91bmQgbGluZSA5MC4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIG1vcmUgY29yZSBvciBmdW5kYW1lbnRhbCBvcHRpb25zIGFyZSBkZWZpbmVkLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGd1dHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyBhcmUgbGlrZWx5IHRvIGJlIGZvdW5kLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGF0IGFyZWEgdG8gc2VlIHdoYXQgY2F0Y2hlcyBteSBleWUgb3IgdHJpZ2dlcnMgYSBzcGVjaWZpYyBtZW1vcnkgcmVsYXRlZCB0byB0aGUgcHJvYmxlbSBJIGFtIHdvcmtpbmcgb24uIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIGNvbmZpZ3VyYXRpb25zIEkgY2FuIHVuY292ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDY3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjE6NTY6MDQuMzE4NzQ0NDgyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgTm90ZTogVGhlcmUgYXJlIHNldmVyYWwgRFZCIGNhcmRzIHRoYXQgYXJlIGJhc2VkIG9uIGNoaXBzIHRoYXRcXG4gIDg3OlxcdFxcdFxcdHN1cHBvcnQgYm90aCBhbmFsb2cgYW5kIGRpZ2l0YWwgVFYuIERpc2FibGluZyB0aGlzIG9wdGlvblxcbiAgODg6XFx0XFx0XFx0d2lsbCBkaXNhYmxlIHN1cHBvcnQgZm9yIHRoZW0uXFxuICA4OTpcXHRcXG4gIDkwOlxcdGNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4gIDkxOlxcdFxcdGJvb2xcXG4gIDkyOlxcdFxcdHByb21wdCBcXFwiRGlnaXRhbCBUVlxcXCIgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDkzOlxcdFxcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDk0OlxcdFxcdGhlbHBcXG4gIDk1OlxcdFxcdCAgRW5hYmxlIGRpZ2l0YWwgVFYgc3VwcG9ydC5cXG4gIDk2OlxcdFxcbiAgOTc6XFx0XFx0ICBTYXkgWSB3aGVuIHlvdSBoYXZlIGEgYm9hcmQgd2l0aCBkaWdpdGFsIHN1cHBvcnQgb3IgYSBib2FyZCB3aXRoXFxuICA5ODpcXHRcXHQgIGh5YnJpZCBkaWdpdGFsIFRWIGFuZCBhbmFsb2cgVFYuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXFxuIDEwMTpcXHRcXHRib29sXFxuIDEwMjpcXHRcXHRwcm9tcHQgXFxcIkFNL0ZNIHJhZGlvIHJlY2VpdmVycy90cmFuc21pdHRlcnNcXFwiIGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwMzpcXHRcXHRkZWZhdWx0IHkgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwNDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjA0LjMxODgxNjE5MloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI5OTQyMTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgYXJlYSBvZiBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgRGVwZW5kZW5jeSBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIHJlcXVpcmVzIGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgLiBHb3QgaXQuIE5vdywgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgb2Z0ZW4gbWVhbnMgdGhlcmUgYXJlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzLCBzbyBJIHNob3VsZCBzZWUgd2hhdCBgTUVESUFfU1VQUE9SVGAgaXMgYWxsIGFib3V0LiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGlzIGtleSBoZXJlLiBJdCdzIGxpa2VseSB0aGF0IGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgIGJ1aWxkcyB1cG9uIG9yIGxldmVyYWdlcyBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IGBNRURJQV9TVVBQT1JUYC4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGF0IGRlcGVuZGVuY3kgY2hhaW4gbG9va3MgbGlrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MzMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjA3LjQ0ODc2MTYzOFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4NTE4OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRURJQV9TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk11bHRpbWVkaWEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoyNTpjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjA3LjU2NzMzMzg5MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk0MjExMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgdGhvdWdodHM6XG5cbioqQ29uZmlndXJpbmcgTWVkaWEgU3VwcG9ydDogQSBNZW50YWwgQ2hlY2tsaXN0KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbjogYE1FRElBX1NVUFBPUlRgLiBUaGF0J3MgdGhlIGJpZyBwaWN0dXJlLCB0aGUgdW1icmVsbGEgdW5kZXIgd2hpY2ggZXZlcnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gbWVkaWEgZmFsbHMuIEZyb20gdGhlcmUsIEkgbmVlZCB0byBkcmlsbCBkb3duLlxuXG5JJ2xsIG5lZWQgdG8gbGlzdCBvdXQgdGhlIGltcG9ydGFudCBtb2R1bGVzLiBUaGlua2luZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMsIGBNRURJQV9TVVBQT1JUYCBpcyBvYnZpb3VzbHkgdGhlIHByaW1hcnkgZW5hYmxlci4gVGhlbiwgSSdsbCBuZWVkIGBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRgLCBgRFZCX0NPUkVgIChzaW5jZSB3ZSdyZSBwcm9iYWJseSBkZWFsaW5nIHdpdGggZGlnaXRhbCB0ZWxldmlzaW9uIHN0dWZmKSwgYW5kIGBEVkJfVFRVU0JfREVDYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgSSdkIHR5cGljYWxseSBjb25zaWRlciBmb3IgRFZCIHN1cHBvcnQuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4gSSdtIGZvcmdldHRpbmcgc29tZXRoaW5nIGNydWNpYWwuIFVTQiBtZWRpYSBkcml2ZXJzISBJdCdzIGxpa2VseSBgTUVESUFfVVNCX1NVUFBPUlRgIGlzIGFsc28gdHlwaWNhbGx5IG5lY2Vzc2FyeSwgZXNwZWNpYWxseSBmb3IgYW55dGhpbmcgY29ubmVjdGVkIHZpYSBVU0IuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZ2AgZmlsZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhbnkgZXNzZW50aWFsIGRlcGVuZGVuY2llcy4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoxMS40NjE1NDgyMVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRpZiBVU0IgXFx1MDAyNlxcdTAwMjYgTUVESUFfU1VQUE9SVFxcbiAgIDQ6XFx0XFxuICAgNTpcXHRtZW51Y29uZmlnIE1FRElBX1VTQl9TVVBQT1JUXFxuICAgNjpcXHRcXHRib29sIFxcXCJNZWRpYSBVU0IgQWRhcHRlcnNcXFwiXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIEVuYWJsZSBtZWRpYSBkcml2ZXJzIGZvciBVU0IgYnVzLlxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgaGF2ZSBzdWNoIGRldmljZXMsIHNheSBZLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRpZiBNRURJQV9VU0JfU1VQUE9SVFxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBNRURJQV9DQU1FUkFfU1VQUE9SVFxcbiAgMTQ6XFx0XFx0Y29tbWVudCBcXFwiV2ViY2FtIGRldmljZXNcXFwiXFxuICAxNTpcXHRcXG4gIDE2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvS2NvbmZpZ1xcXCJcXG4gIDE3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS91c2IvcHdjL0tjb25maWdcXFwiXFxuICAxODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3MyMjU1L0tjb25maWdcXFwiXFxuICAxOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3VzYnR2L0tjb25maWdcXFwiXFxuICAyMDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvdXNiL3V2Yy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoxMS40NjE2NzMzMloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ1NTUyNzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCLWJhc2VkIERpZ2l0YWwgVFYgVHVuZXIgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRyaXZlciB3b3JrcyBhcyBleHBlY3RlZC4gSSd2ZSBjb25maXJtZWQgdGhhdCBlbmFibGluZyBgTUVESUFfVVNCX1NVUFBPUlRgIGlzIGRlZmluaXRlbHkgbmVjZXNzYXJ5LiBMb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9ucywgaXQgYXBwZWFycyBJIG5lZWQgdG8gc2V0IGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVGAsIGBNRURJQV9VU0JfU1VQUE9SVGAsIGBEVkJfQ09SRWAsIGFuZCBgRFZCX1RUVVNCX0RFQ2AgdG8gYmUgc3VyZS5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGUuIEkgbmVlZCB0byBtYWtlIGEganVkZ21lbnQgY2FsbCBvbiB3aGF0IEknbSBpbmNsdWRpbmcuIEEgcXVpY2sgdmVyaWZpY2F0aW9uIG9mIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGVzIGlzIG5lY2Vzc2FyeS4gSSd2ZSBjb25maXJtZWQgdGhhdCBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQncyBnb29kLiBgdHR1c2JfZGVjX3Byb2JlYCBpcyBhbHNvIHN0YXRpYy4gUGVyZmVjdC4gIEhvd2V2ZXIsIGB0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoYCBhbmQgYHR0dXNiZGVjZmVfZHZic19hdHRhY2hgIGFyZSAqbm90KiBzdGF0aWMuIEFscmlnaHQuIEkgd2lsbCBpbmNsdWRlIGB0dHVzYl9kZWNfcHJvYmVgLCBgdHR1c2JkZWNmZV9kdmJ0X2F0dGFjaGAsIGFuZCBgdHR1c2JkZWNmZV9kdmJzX2F0dGFjaGAuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2lsbCBzY2FuIHRoZSBgdHR1c2JfZGVjLmNgIGZpbGUgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IG5lZWQgYXR0ZW50aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODkwMywiT3V0cHV0VG9rZW5zIjo3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjE2LjMwNzIyODg0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NzQyOTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qXFxcXCo/IFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3VzYi90dHVzYi1kZWMvdHR1c2JfZGVjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjE2LjQxNDAxMTExNFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE5NzMzODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipRdWljayBTY2FuIGZvciBgRVhQT1JUX1NZTUJPTGAgaW4gYHR0dXNiX2RlYy5jYCoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZywgaW5zdGVhZCBvZiBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIGEgZGVlcCBkaXZlLCBsZXQncyBrZWVwIHRoaW5ncyBmb2N1c2VkIGFuZCBlZmZpY2llbnQuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHR5cGljYWwga2VybmVsIG1vZHVsZSBzdHJ1Y3R1cmUgYW5kIHN5bWJvbCB2aXNpYmlsaXR5LCB0aGUgZmlyc3QgdGhpbmcgSSdkIGRvIGlzIGEgcXVpY2sgYGdyZXBgIGZvciBgRVhQT1JUX1NZTUJPTGAgd2l0aGluIGB0dHVzYl9kZWMuY2AuIFRoYXQncyB0aGUgZ28tdG8gc2lnbmFsLiBJZiBJIHNlZSB0aGF0IG1hY3JvLCBpdCBkaXJlY3RseSB0ZWxscyBtZSB3aGljaCBzeW1ib2xzIHRoaXMgbW9kdWxlIGlzIGV4cGxpY2l0bHkgbWFraW5nIGF2YWlsYWJsZSB0byBvdGhlciBtb2R1bGVzLiBUaGF0J2xsIGltbWVkaWF0ZWx5IGdpdmUgbWUgYSByb2FkbWFwIG9mIGl0cyBwdWJsaWMgaW50ZXJmYWNlIOKAkyB0aGUgZW50cnkgcG9pbnRzIGFuZCBkYXRhIHN0cnVjdHVyZXMgSSBuZWVkIHRvIGNvbnNpZGVyIGZvciBpbnRlci1tb2R1bGUgaW50ZXJhY3Rpb25zLCBvciBkZWJ1Z2dpbmcsIG9yIHdoYXRldmVyIHRoZSBjdXJyZW50IHRhc2sgZGVtYW5kcy4gVGhpcyB0YXJnZXRlZCBhcHByb2FjaCBpcyBtdWNoIGZhc3RlciB0aGFuIGp1c3QgcmVhZGluZyB0aGUgZW50aXJlIHNvdXJjZSBjb2RlLiBTYXZlcyB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIxOjU2OjIwLjMzMzc0NjcwMloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU5NzMzMjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS91c2IvdHR1c2ItZGVjL3R0dXNiX2RlYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoyMC40Mjk3MjY4NjVaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg3MDMxMjM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB0dHVzYl9kZWMuY2AgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHR0dXNiX2RlYy5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgdGhpcyBtb2R1bGUgZG9lc24ndCBleHBvcnQgYW55IHN5bWJvbHMsIHdoaWNoIG1ha2VzIHNlbnNlOyBgdHR1c2JfZGVjX3Byb2JlYCBpcyBjbGVhcmx5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LiBEaWdnaW5nIGludG8gdGhlIGNvcmUgb2YgdGhlIHBhdGNoLCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgYWxsIGFib3V0IGFkZHJlc3NpbmcgYSBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgdHR1c2JfZGVjX3NlbmRfY29tbWFuZGAuIFRoZSBmaXggaW52b2x2ZXMgaW50cm9kdWNpbmcgYSBgY21kX3Jlc3VsdF9sZW5gIHBhcmFtZXRlciB0byBjb250cm9sIHRoZSBjb3BpZWQgbGVuZ3RoLCBhbmQgY3J1Y2lhbGx5LCBkb2luZyBhIHByb3BlciBib3VuZHMgY2hlY2sgYmVmb3JlIHRoZSBjb3B5IGl0c2VsZi4gVGhpcyBpcyBnb29kOyBpdCdzIGEgc29saWQsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIFVTQiBtZWRpYSBkcml2ZXIuIFRoaXMgbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Lbm93aW5nIHdoYXQgSSBrbm93IGFib3V0IFVTQiBkcml2ZXJzIGFuZCB0ZXN0aW5nLCB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGlzIHJpcGUgZm9yIHRlc3Rpbmcgd2l0aCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYGR1bW15X2hjZC9yYXctZ2FkZ2V0YCBzZXR1cC4gVGhhdCB3aWxsIGJlIHRoZSBwcmltYXJ5IGF2ZW51ZSB0byBleHBsb3JlIHRoaXMgcG90ZW50aWFsIGZpeCBhbmQgZGV0ZXJtaW5lIGl0cyBlZmZlY3RpdmVuZXNzLlxuXG5JIHdpbGwgaGF2ZSB0byBlbnN1cmUgdGhhdCBhbGwgcmVsZXZhbnQgVVNCIGNvbW1hbmRzIHdvcmsgcHJvcGVybHkgYXMgYSBzZWNvbmRhcnkgdGFzay5cblxuVWx0aW1hdGVseSwgSSdtIGdvaW5nIHRvIHdhbnQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHNlZSBob3cgdGhlIGNoYW5nZSBpbXBhY3RzIHRoZSBzeXprYWxsZXIgd29ya2Zsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzE0LCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMTo1NjoyNi4zMDAwNDI5NzNaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM1MTUzMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIk1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfVVNCX1NVUFBPUlRcIixcbiAgICBcIkRWQl9DT1JFXCIsXG4gICAgXCJEVkJfVFRVU0JfREVDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR1c2JfZGVjX3Byb2JlXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIk1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfVVNCX1NVUFBPUlRcIixcbiAgICBcIkRWQl9DT1JFXCIsXG4gICAgXCJEVkJfVFRVU0JfREVDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHR1c2JfZGVjX3Byb2JlXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnRfYXR0YWNoXCIsXG4gICAgXCJ0dHVzYmRlY2ZlX2R2YnNfYXR0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgb3ZlcmZsb3cgaW4gYHR0dXNiX2RlY19zZW5kX2NvbW1hbmRgIGJ5IGFkZGluZyBhIGBjbWRfcmVzdWx0X2xlbmAgcGFyYW1ldGVyIGFuZCBjaGVja2luZyB0aGUgbGVuZ3RoIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN1bHQgb2YgYSBVU0IgY29tbWFuZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIG1lZGlhIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[1] Phase: Succeeded StartedAt: 2026-08-02 21:56:39 +0000 UTC FinishedAt: 2026-08-02 21:56:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 21:56:39 +0000 UTC FinishedAt: 2026-08-02 21:56:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2] Phase: Succeeded StartedAt: 2026-08-02 21:56:39 +0000 UTC FinishedAt: 2026-08-03 01:58:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 21:56:39 +0000 UTC FinishedAt: 2026-08-03 01:58:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 21:56:39 +0000 UTC FinishedAt: 2026-08-02 21:56:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 21:56:39 +0000 UTC FinishedAt: 2026-08-02 21:56:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-3065558867/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 21:56:50 +0000 UTC FinishedAt: 2026-08-02 22:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 21:56:50 +0000 UTC FinishedAt: 2026-08-02 22:27:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd738523-4192-47c0-a36d-0bc650da3217,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-3065558867/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "47934288-1159-4b75-94ee-f6d5fb404c92", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-2259155585/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 21:56:50 +0000 UTC FinishedAt: 2026-08-02 22:27:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd738523-4192-47c0-a36d-0bc650da3217,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-3065558867/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "47934288-1159-4b75-94ee-f6d5fb404c92", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-2259155585/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 22:27:36 +0000 UTC FinishedAt: 2026-08-02 22:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 22:27:36 +0000 UTC FinishedAt: 2026-08-02 22:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 22:27:36 +0000 UTC FinishedAt: 2026-08-02 22:27:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 22:27:36 +0000 UTC FinishedAt: 2026-08-02 22:27:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-2508568906/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 22:27:58 +0000 UTC FinishedAt: 2026-08-02 22:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 22:27:58 +0000 UTC FinishedAt: 2026-08-02 22:29:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*47934288-1159-4b75-94ee-f6d5fb404c92,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-2259155585/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 22:29:52 +0000 UTC FinishedAt: 2026-08-02 22:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 22:29:52 +0000 UTC FinishedAt: 2026-08-02 22:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 22:29:52 +0000 UTC FinishedAt: 2026-08-02 22:52:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 22:29:52 +0000 UTC FinishedAt: 2026-08-02 22:52:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd738523-4192-47c0-a36d-0bc650da3217,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-2508568906/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "4180bdef-db8f-4490-8588-5eb0035d281f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-3336445294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 22:29:52 +0000 UTC FinishedAt: 2026-08-02 22:52:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd738523-4192-47c0-a36d-0bc650da3217,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-2508568906/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "4180bdef-db8f-4490-8588-5eb0035d281f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-3336445294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 22:52:53 +0000 UTC FinishedAt: 2026-08-02 22:52:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 22:52:53 +0000 UTC FinishedAt: 2026-08-02 22:52:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 22:52:53 +0000 UTC FinishedAt: 2026-08-02 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 22:52:53 +0000 UTC FinishedAt: 2026-08-02 22:54:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4180bdef-db8f-4490-8588-5eb0035d281f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-3336445294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 22:54:51 +0000 UTC FinishedAt: 2026-08-03 01:58:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 22:54:51 +0000 UTC FinishedAt: 2026-08-03 01:58:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*47934288-1159-4b75-94ee-f6d5fb404c92,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4180bdef-db8f-4490-8588-5eb0035d281f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-2259155585/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-3336445294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 22:54:51 +0000 UTC FinishedAt: 2026-08-02 22:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 22:54:51 +0000 UTC FinishedAt: 2026-08-02 22:55:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-2156947167/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 22:54:51 +0000 UTC FinishedAt: 2026-08-02 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 22:54:51 +0000 UTC FinishedAt: 2026-08-02 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 22:54:51 +0000 UTC FinishedAt: 2026-08-02 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 22:55:22 +0000 UTC FinishedAt: 2026-08-03 01:58:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8hr6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ttusb_dec_probe","ttusbdecfe_dvbt_attach","ttusbdecfe_dvbs_attach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_DIGITAL_TV_SUPPORT","MEDIA_USB_SUPPORT","DVB_CORE","DVB_TTUSB_DEC"],"series_id":"986ad262-9151-45d4-8775-4f1fce1c05c3","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 22:55:22 +0000 UTC FinishedAt: 2026-08-03 01:58:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*47934288-1159-4b75-94ee-f6d5fb404c92,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4180bdef-db8f-4490-8588-5eb0035d281f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-2259155585/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-build-action-3336445294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8hr6/series-workflowj8hr6-convert-artifact-2156947167/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}