Name: series-workflowcrp78 Phase: Succeeded StartedAt: 2026-08-26 06:51:06 +0000 UTC FinishedAt: 2026-08-26 08:21:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[0] Phase: Succeeded StartedAt: 2026-08-26 06:51:06 +0000 UTC FinishedAt: 2026-08-26 07:40:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 06:51:06 +0000 UTC FinishedAt: 2026-08-26 07:40:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "RISCV_PMU_SBI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "RISCV_PMU_SBI" ], "series_id": "2f05f93c-7149-4d06-8884-dbba50065dbf" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_pmu_snapshot_set_shmem" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVVfU0JJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3kgaW4gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBQcmV2aW91c2x5LCB3aGVuIGEgbmV3IHNuYXBzaG90IGFyZWEgd2FzIHNldCwgdGhlIGNvZGUgb3Zlcndyb3RlIGBrdnBtdS1cdTAwM2VzZGF0YWAgd2l0aCBhIG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHdpdGhvdXQgZnJlZWluZyB0aGUgb2xkIG9uZSwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBuZXcgYWxsb2NhdGlvbiBvciB0aGUgc3Vic2VxdWVudCBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxlZCwgYGt2cG11LVx1MDAzZXNkYXRhYCB3b3VsZCBiZSBzZXQgdG8gYE5VTExgIHdoaWxlIGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCByZXRhaW5lZCBpdHMgb2xkIHZhbGlkIHZhbHVlLiBUaGlzIGluY29uc2lzdGVudCBzdGF0ZSBjb3VsZCBsZWFkIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxuXG5UaGVzZSBpc3N1ZXMgKG1lbW9yeSBsZWFrcyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcy9LQVNBTi4gVGhlIG5ldyBgc2RhdGFgIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgLCBlbnN1cmluZyBpdCBpcyBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBhbmQgaW5jb25zaXN0ZW5jeSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgc25hcHNob3Qgc2V0dXAgbG9naWMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBtYWtpbmcgU0JJIFBNVSBleHRlbnNpb24gY2FsbHMgdG8gdGhlIGh5cGVydmlzb3IsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM4ZTBiYWJjYWQ4ZjQ3NmU5NmZlNTYwNDg4MGZjM2ViZTc2MGRlZTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwNzozODo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggNzUyZjEwMTRkNjMzZS4uMTRmNzM0OTBmMTJjYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbkBAIC00NTQsNiAmIzQzOzQ1NCwxNCBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc1xuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXG4mIzQzO1x0ICogdGhlIG9sZCBzZGF0YSBhbmQgdG8ga2VlcCBzZGF0YS9zbmFwc2hvdF9hZGRyIGNvbnNpc3RlbnQgaWZcbiYjNDM7XHQgKiB0aGUgcmUtaW5zdGFsbCBmYWlscyBiZWxvdy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoa3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkciAhPSBJTlZBTElEX0dQQSlcbiYjNDM7XHRcdGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTtcbiYjNDM7XG4gXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWt2cG11LVx1MDAzZXNkYXRhKSB7XG4gXHRcdHNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVV9TQkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29uc2lzdGVuY3kgaW4gdGhlIFJJU0MtViBLVk0gUE1VIHNuYXBzaG90IHNldHVwIGxvZ2ljLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgbWFraW5nIFNCSSBQTVUgZXh0ZW5zaW9uIGNhbGxzIHRvIHRoZSBoeXBlcnZpc29yLCB3aGljaCBjYW4gYmUgZnV6emVkIGluIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOGUwYmFiY2FkOGY0NzZlOTZmZTU2MDQ4ODBmYzNlYmU3NjBkZWU2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYwppbmRleCA3NTJmMTAxNGQ2MzNlLi4xNGY3MzQ5MGYxMmNiIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKQEAgLTQ1NCw2ICYjNDM7NDU0LDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzCiAJCX0KIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogQ2xlYXIgYW55IHByZXZpb3VzbHkgaW5zdGFsbGVkIHNuYXBzaG90IGFyZWEgdG8gYXZvaWQgbGVha2luZwomIzQzOwkgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZgomIzQzOwkgKiB0aGUgcmUtaW5zdGFsbCBmYWlscyBiZWxvdy4KJiM0MzsJICovCiYjNDM7CWlmIChrdnBtdS0mZ3Q7c25hcHNob3RfYWRkciAhPSBJTlZBTElEX0dQQSkKJiM0MzsJCWt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTsKJiM0MzsKIAlrdnBtdS0mZ3Q7c2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpOwogCWlmICgha3ZwbXUtJmd0O3NkYXRhKSB7CiAJCXNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgbWFraW5nIGEgY2hhbmdlIGluIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYSBjaGVjayB3aXRoaW4gdGhlIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhpcyBjb2RlIGlzIGFpbWVkIGF0IGVuc3VyaW5nIHRoZSBjb25zaXN0ZW5jeSBvZiBhIFBNVSBzbmFwc2hvdCBhcmVhIHdoZW4gaXQmIzM5O3MgYmVpbmcgc2V0LCBjbGVhcmluZyBhbnkgcHJlLWV4aXN0aW5nIHNuYXBzaG90IHRvIHByZXZlbnQgbGVha3MgYW5kIHBvdGVudGlhbCBpbmNvbnNpc3RlbmNpZXMgaWYgdGhlIG5ldyBpbnN0YWxsYXRpb24gZmFpbHMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AgYW5kIHNwZWNpZmljYWxseSwgdGhhdCBmdW5jdGlvbiwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBTaW5jZSB0aGlzIGlzIFJJU0MtViBLVk0gUE1VIGNvZGUsIHRoZSBuZXh0IHF1ZXN0aW9uIHRoYXQgcG9wcyB1cCBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBldmVuIHJlbGV2YW50IGluIGEgcHJhY3RpY2FsIHNlbnNlIHdpdGggUUVNVS4gVGhhdCYjMzk7cyBhIHF1aWNrIHllcywgd2UgY2FuIGNlcnRhaW5seSB0ZXN0IFJJU0MtViBLVk0gd2l0aGluIFFFTVUgd2hlbiBydW5uaW5nIFJJU0MtViBndWVzdHMuCgpOb3csIGEgY3JpdGljYWwgYXNwZWN0IG9mIHNlY3VyaXR5IHRlc3RpbmcgaXMgZnV6emluZy4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgY292ZXJhZ2UgZm9yIFJJU0MtViBLVk0/IFRoYW5rZnVsbHksIHRoZSBhbnN3ZXIgaXMgeWVzLCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IGZ1enppbmcgUklTQy1WIHRhcmdldHMgdXNpbmcgS1ZNLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHBvc3NpYmxlIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgdGVzdGVkIGJ5IGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGZ1bmN0aW9uIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIHdoZXJlIHRoYXQgZnV6emluZyBtaWdodCBsYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYz00MTg9c3RhdGljIHZvaWQga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM6NDI3OmludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyOC1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03My1cdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6NzQ6XHRcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXHUwMDNlYTAsIGNwLVx1MDAzZWExLCBjcC1cdTAwM2VhMiwgcmV0ZGF0YSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03NS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNLVJJU0NWIFBNVSBTbmFwc2hvdCBGdW5jdGlvbioqCgpPa2F5LCBzbyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgY2FsbGVkIGZyb20gYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhhdCBTQkkgUE1VIGV4dGVuc2lvbiBoYW5kbGVyIGluIEtWTSDigJMgc28sIGEgZ3Vlc3QgY2FuIGFic29sdXRlbHkgdHJpZ2dlciB0aGlzIGJ5IG1ha2luZyB0aG9zZSBTQkkgY2FsbHMuIEFscmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBkZWZpbml0ZSBlbnRyeSBwb2ludC4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBvciBjb25kaXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yIHRoaXMgZnVuY3Rpb24gdG8gZXhlY3V0ZSBhcyBpbnRlbmRlZC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlcXVpcmVkIHNldHVwLiBXaGF0IGNvbmZpZ3VyYXRpb25zIGRvIHdlIG5lZWQgdG8gaGF2ZSBpbiBwbGFjZSBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKlBNVSBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQgKFBNVSkgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBSSVNDLVYgS1ZNIGVudmlyb25tZW50LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5hdmlnYXRlIHRvIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gVGhpcyBzaG91bGQgY29udGFpbiBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIHdoZW4gY29tcGlsaW5nIHRoZSBrZXJuZWwgd2l0aCBLVk0gc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuIEkmIzM5O20gaG9waW5nIHRvIGZpbmQgZXhwbGljaXQgUE1VIHNldHRpbmdzIHRoZXJlLCB3aGljaCB3b3VsZCBndWlkZSBtZSB0byB1bmRlcnN0YW5kIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIFBNVSBmZWF0dXJlcyBhcmUgY29udHJvbGxlZCBhdCBidWlsZCB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UE1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGl2aW5nIGludG8gdGhlIFJJU0MtViBLVk0gTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHVuZGVyc3RhbmQgaG93IHRoaXMgdGhpbmcgaXMgYnVpbHQuIE15IGZpcnN0IG1vdmUgd2hlbiB0YWNrbGluZyBhIGtlcm5lbCBtb2R1bGUsIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBhIHZpcnR1YWxpc2F0aW9uIGNvbXBvbmVudCBsaWtlIEtWTSwgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgbWFnaWMgaGFwcGVuczogdGhlIGNvbXBpbGF0aW9uIGZsYWdzLCBzb3VyY2UgZmlsZSBpbmNsdXNpb24sIGFuZCBsaW5raW5nIGFyZSBvcmNoZXN0cmF0ZWQgdGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBwcm9jZXNzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGt2bWAgbW9kdWxlIHNwZWNpZmljYWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgUklTQy1WIGtlcm5lbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzLCBhbmQgd2hlcmUgdGhlIGNvcmUgcGFydHMgYXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGlzIGBhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZWAgaG9sZHMuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBkb2VzbiYjMzk7dCBpbnZvbHZlIHRvbyBtdWNoIG1hY3JvLWJhc2VkIG9iZnVzY2F0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjcHVfcG11JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9Mjg9a3ZtLXkgJiM0Mzs9IHZjcHVfb25lcmVnLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI5Omt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSAmIzQzOz0gdmNwdV9wbXUub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzAta3ZtLXkgJiM0Mzs9IHZjcHVfc2JpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2NQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzcGVjaWFsaXN0IGluIHRoaXMgZG9tYWluOgoKKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtJiMzOTtzIHRlbGxpbmcgbWUgd2UgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgLiBUaGF0JiMzOTtzIGEga2V5IGluZGljYXRvci4gTXkgZmlyc3QgdGhvdWdodCBpczogJiMzNDt3aGVyZSBpcyB0aGlzIGRlZmluZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiYjMzQ7IEkmIzM5O20gbWVudGFsbHkgdHJhY2luZyBiYWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtub3dpbmcgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjbHVlcyBhYm91dCB3aGF0JiMzOTtzIGVuYWJsZWQsIHdoYXQmIzM5O3MgZGlzYWJsZWQsIGFuZCBpdHMgb3ZlcmFsbCBwbGFjZSBpbiB0aGUgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHJvdXRpbmU7IGl0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmN5LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdHJhY2UgaXQgZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVV9TQkkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wZXJmL0tjb25maWc9ODg9Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcbi0tXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05Ny1cbmRyaXZlcnMvcGVyZi9LY29uZmlnOjk4OmNvbmZpZyBSSVNDVl9QTVVfU0JJXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05OS1cdGRlcGVuZHMgb24gUklTQ1ZfUE1VIFx1MDAyNlx1MDAyNiBSSVNDVl9TQklcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gTXVzaW5ncyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBmb3IgdGhpcyBSSVNDLVYgS1ZNIGZ1enppbmcgc2V0dXAsIHdlIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgIGFuZCBgQ09ORklHX0tWTWAuIGBDT05GSUdfS1ZNYCBpcyBwcmV0dHkgbXVjaCBhIGdpdmVuIGZvciBhbnkgS1ZNLWJhc2VkIGZ1enppbmcgc2NlbmFyaW8sIHNvIHRoYXQgb25lJiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IGBDT05GSUdfUklTQ1ZfUE1VX1NCSWAg4oCTIHRoYXQmIzM5O3MgYSBnb29kIGluY2x1c2lvbjsgaXQgd2lsbCBhbGxvdyB1cyB0byBsZXZlcmFnZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHVuaXRzLCBhbmQgdGhhdCBjYW4gYmUgcmVhbGx5IHZhbHVhYmxlLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBqdXN0IHRoZXNlIHR3bywgSSBzaG91bGQgY2hlY2sgd2hldGhlciB0aGVyZSBtaWdodCBiZSBhbnkgKm90aGVyKiByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBiZW5lZmljaWFsIHRvIGluY2x1ZGUuIEdvdHRhIGJlIHRob3JvdWdoLCB5b3Uga25vdz8gTGV0JiMzOTtzIHRha2UgYSBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUklTQ1ZfUE1VJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnPTc0PWNvbmZpZyBBUk1fWFNDQUxFX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTc3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6Nzg6Y29uZmlnIFJJU0NWX1BNVVxuZHJpdmVycy9wZXJmL0tjb25maWctNzktXHRkZXBlbmRzIG9uIFJJU0NWXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctODctXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo4ODpjb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxuZHJpdmVycy9wZXJmL0tjb25maWctODktXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk5LVx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXHUwMDI2XHUwMDI2IFJJU0NWX1NCSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzg4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKk15IEFuYWx5c2lzIG9mIEtWTSBhbmQgUklTQy1WIFBNVSBJbnRlZ3JhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYEtWTWAgYW5kIGBSSVNDVl9QTVVfU0JJYC4gVGhvc2UgYXJlIG15IHN0YXJ0aW5nIHBvaW50cy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBLVk0gYW5kIFJJU0MtViBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBhcmU6IGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBhbmQgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhvc2UgbmFtZXMgdGVsbCBtZSBhIGxvdC4gT25lIHNlZW1zIHRvIGRlYWwgd2l0aCB0YWtpbmcgYSBzbmFwc2hvdCBvZiB0aGUgUE1VIHN0YXRlLCBhbmQgdGhlIHNoYXJlZCBtZW1vcnkgaW5kaWNhdGVzIGludGVyLVZNIGNvbW11bmljYXRpb24gb3IgYWNjZXNzLiBUaGVuIHRoZXJlJiMzOTtzIGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAsIHRoYXQgc291bmRzIGxpa2UgdGhlIGNvcmUgU0JJIChTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UpIGV4dGVuc2lvbiBoYW5kbGVyIGZvciBQTVUgY2FsbHMuIEludGVyZXN0aW5nLiBXYWl0IGEgbWludXRlLi4uIGlzIGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAgYWN0dWFsbHkgc3RhdGljPyBUaGF0JiMzOTtzIG5vdCBpZGVhbC4gSXQgY291bGQgbWVhbiBsaW1pdGF0aW9ucyBvbiBkeW5hbWljIHJlZ2lzdHJhdGlvbiBvciBleHRlbnNpYmlsaXR5IG9mIFBNVSBmdW5jdGlvbnMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIFRoYXQgY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgb24gaG93IHdlbGwgdGhpcyBpbnRlZ3JhdGVzIHdpdGggb3RoZXIgUE1VIGZlYXR1cmVzIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zYmlfZXh0X3BtdV9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTE1LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6MTY6c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy0xNy1cdFx0XHRcdCAgIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jPTkzPWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9wbXUgPSB7XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTUtXHQuZXh0aWRfZW5kID0gU0JJX0VYVF9QTVUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYzo5NjpcdC5oYW5kbGVyID0ga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy05Ny1cdC5wcm9iZSA9IGt2bV9zYmlfZXh0X3BtdV9wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6CgoqKlBNVSBIYW5kbGVycyBhbmQgU2hhcmVkIE1lbW9yeSBpbiBLVk0tUklTQ1YqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIEtWTS1SSVNDViBpbXBsZW1lbnRhdGlvbiBoZXJlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHdlJiMzOTtyZSBoYW5kbGluZyBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXRzLCBvciBQTVVzLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgZm9yIHNjb3BpbmcgYW5kIHByZXZlbnRpbmcgYWNjaWRlbnRhbCBleHRlcm5hbCBsaW5rYWdlLiBJdCBzdWdnZXN0cyBhIHRpZ2h0bHkgY29udHJvbGxlZCBmdW5jdGlvbiwgbGlrZWx5IHNwZWNpZmljIHRvIHRoZSBtb2R1bGUgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCBhbmQgbm90IG1lYW50IGZvciBvdXRzaWRlIGFjY2Vzcywgd2hpY2ggaXMgYSBjb21tb24gYW5kIHVzdWFsbHkgYmVuZWZpY2lhbCBwcmFjdGljZS4KCk5vdywgb24gdGhlIG90aGVyIGhhbmQsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBpcyAqbm90KiBgc3RhdGljYC4gVGhpcyBoYXMgc29tZSBpbXBvcnRhbnQgaW1wbGljYXRpb25zLiBJdCYjMzk7cyBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgcGFydCBvZiB0aGUgQVBJLCBvciBhdCBsZWFzdCBwb3RlbnRpYWxseSBjYWxsYWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBLVk0gY29kZWJhc2UuIEl0IG1pZ2h0IGJlIHVzZWQgdG8gY29uZmlndXJlIG9yIG1hbmFnZSB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24gZGVkaWNhdGVkIHRvIHRoZSBQTVUgc25hcHNob3QgZGF0YS4gSXQgYmVpbmcgbm9uLXN0YXRpYyBvcGVucyBpdCB1cCBmb3IgYnJvYWRlciB1c2Ugd2l0aGluIHRoZSBsYXJnZXIgS1ZNLVJJU0NWIGFyY2hpdGVjdHVyZS4gSSYjMzk7ZCBiZSBsb29raW5nIGNsb3NlbHkgYXQgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZCB0byB1bmRlcnN0YW5kIGl0cyBzcGVjaWZpYyByb2xlIGluIHRoZSBQTVUgZGF0YSBleGNoYW5nZSBwcm9jZXNzLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGluZnJhc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDE4PXN0YXRpYyB2b2lkIGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQyNzppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjgtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzMtXHRjYXNlIFNCSV9FWFRfUE1VX1NOQVBTSE9UX1NFVF9TSE1FTTpcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0Olx0XHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHZjcHUsIGNwLVx1MDAzZWEwLCBjcC1cdTAwM2VhMSwgY3AtXHUwMDNlYTIsIHJldGRhdGEpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjI3CgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIFBNVSBTbmFwc2hvdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGFzIHRoZSBrZXkgZnVuY3Rpb24gdG8gcmVhbGx5IHVuZGVyc3RhbmQgaGVyZS4gSXQgc2VlbXMgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgcmVzb2x2aW5nIGEgbWVtb3J5IGxlYWsgb3IsIHBvdGVudGlhbGx5IG1vcmUgY29uY2VybmluZywgc29tZSBraW5kIG9mIGluY29uc2lzdGVuY3kgaW4gaG93IHRoZSBzbmFwc2hvdCBhcmVhIGZvciB0aGUgUE1VIGlzIGJlaW5nIHNldCB1cC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdGhlIFNCSSBQTVUgZXh0ZW5zaW9uIHdpdGhpbiBLVk0sIHNvIGl0JiMzOTtzIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBjYXBhYmlsaXRpZXMuIEdpdmVuIHRoZSBjcml0aWNhbGl0eSBvZiB0aGUgU0JJIFBNVSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gc2NydXRpbml6ZSBmdXJ0aGVyIGZvciBhbnkgbHVya2luZyBpc3N1ZXMsIGFuZCBJIGFtIGdvaW5nIHRvIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgdHJpZ2dlciB0aGlzIGFyZSBgS1ZNYCBhbmQgYFJJU0NWX1BNVV9TQklgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBTbywgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0sIGFuZCBteSBpbnZlc3RpZ2F0aW9uLCB3aWxsIHJldm9sdmUgYXJvdW5kIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gSSYjMzk7bGwgZGVsdmUgaW50byB0aGUgY29kZSBwYXRoIGhlcmUsIHVuZGVyc3RhbmQgdGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGxlYWsvaW5jb25zaXN0ZW5jeSwgYW5kIHZlcmlmeSB0aGUgcGF0Y2gmIzM5O3MgZWZmZWN0aXZlbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVVfU0JJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VX1NCSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBhbmQgaW5jb25zaXN0ZW5jeSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgc25hcHNob3Qgc2V0dXAgbG9naWMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBtYWtpbmcgU0JJIFBNVSBleHRlbnNpb24gY2FsbHMgdG8gdGhlIGh5cGVydmlzb3IsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cblxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4ZTBiYWJjYWQ4ZjQ3NmU5NmZlNTYwNDg4MGZjM2ViZTc2MGRlZTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwNzozODo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCmluZGV4IDc1MmYxMDE0ZDYzM2UuLjE0ZjczNDkwZjEyY2IgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYwpAQCAtNDU0LDYgJiM0Mzs0NTQsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHMKIAkJfQogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nCiYjNDM7CSAqIHRoZSBvbGQgc2RhdGEgYW5kIHRvIGtlZXAgc2RhdGEvc25hcHNob3RfYWRkciBjb25zaXN0ZW50IGlmCiYjNDM7CSAqIHRoZSByZS1pbnN0YWxsIGZhaWxzIGJlbG93LgomIzQzOwkgKi8KJiM0MzsJaWYgKGt2cG11LSZndDtzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKQomIzQzOwkJa3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHZjcHUpOwomIzQzOwogCWt2cG11LSZndDtzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7CiAJaWYgKCFrdnBtdS0mZ3Q7c2RhdGEpIHsKIAkJc2JpcmV0ID0gU0JJX0VSUl9GQUlMVVJFOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0vUklTQy1WIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIEl0IHNlZW1zIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2FsbCB0byBga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHZjcHUpYCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIGlmIGBrdnBtdS0mZ3Q7c25hcHNob3RfYWRkcmAgaXNuJiMzOTt0IGBJTlZBTElEX0dQQWAsIHRoZXkmIzM5O3JlIGNsZWFyaW5nIG91dCBhbnkgcHJldmlvdXMgc25hcHNob3QgZGF0YSBiZWZvcmUgYWxsb2NhdGluZyB0aGUgbmV3IGBrdnBtdS0mZ3Q7c2RhdGFgIHdpdGggYGt6YWxsb2NgLiBUaGUgY29tbWVudCBtZW50aW9ucyBzb21ldGhpbmcgYWJvdXQgYXZvaWRpbmcgbGVha3Mgb2Ygb2xkIGRhdGEgYW5kIG1haW50YWluaW5nIGNvbnNpc3RlbmN5IGJldHdlZW4gYHNkYXRhYCBhbmQgYHNuYXBzaG90X2FkZHJgIGluIGNhc2UgdGhlIHJlLWluc3RhbGxhdGlvbiBmYWlscy4gU21hcnQgbW92ZSwgc2VlbXMgbGlrZSBhIGdvb2QgcHJlY2F1dGlvbi4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBzbyBJJiMzOTtsbCBwcm9iYWJseSB6b29tIGluIG9uIHdoZXJlIHRoaXMgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGlzIGNhbGxlZCBmcm9tLCB0aGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dC4gSSYjMzk7bGwgdXNlIHRoYXQgYGRlZmF1bHRfYXBpOnJlYWQtZmlsZWAgdG9vbCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSB3aGF0IEkgbmVlZCB0byBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ0MDpcdFxuIDQ0MTpcdFx0aWYgKHNhZGRyX2xvdyA9PSBTQklfU0hNRU1fRElTQUJMRSBcdTAwMjZcdTAwMjYgc2FkZHJfaGlnaCA9PSBTQklfU0hNRU1fRElTQUJMRSkge1xuIDQ0MjpcdFx0XHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XG4gNDQzOlx0XHRcdHJldHVybiAwO1xuIDQ0NDpcdFx0fVxuIDQ0NTpcdFxuIDQ0NjpcdFx0c2FkZHIgPSBzYWRkcl9sb3c7XG4gNDQ3Olx0XG4gNDQ4Olx0XHRpZiAoc2FkZHJfaGlnaCAhPSAwKSB7XG4gNDQ5Olx0XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR18zMkJJVCkpIHtcbiA0NTA6XHRcdFx0XHRzYWRkciB8PSAoKGdwYV90KXNhZGRyX2hpZ2ggXHUwMDNjXHUwMDNjIDMyKTtcbiA0NTE6XHRcdFx0fSBlbHNlIHtcbiA0NTI6XHRcdFx0XHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcbiA0NTM6XHRcdFx0XHRnb3RvIG91dDtcbiA0NTQ6XHRcdFx0fVxuIDQ1NTpcdFx0fVxuIDQ1NjpcdFxuIDQ1NzpcdFx0LypcbiA0NTg6XHRcdCAqIENsZWFyIGFueSBwcmV2aW91c2x5IGluc3RhbGxlZCBzbmFwc2hvdCBhcmVhIHRvIGF2b2lkIGxlYWtpbmdcbiA0NTk6XHRcdCAqIHRoZSBvbGQgc2RhdGEgYW5kIHRvIGtlZXAgc2RhdGEvc25hcHNob3RfYWRkciBjb25zaXN0ZW50IGlmXG4gNDYwOlx0XHQgKiB0aGUgcmUtaW5zdGFsbCBmYWlscyBiZWxvdy5cbiA0NjE6XHRcdCAqL1xuIDQ2MjpcdFx0aWYgKGt2cG11LVx1MDAzZXNuYXBzaG90X2FkZHIgIT0gSU5WQUxJRF9HUEEpXG4gNDYzOlx0XHRcdGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTtcbiA0NjQ6XHRcbiA0NjU6XHRcdGt2cG11LVx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTtcbiA0NjY6XHRcdGlmICgha3ZwbXUtXHUwMDNlc2RhdGEpIHtcbiA0Njc6XHRcdFx0c2JpcmV0ID0gU0JJX0VSUl9GQUlMVVJFO1xuIDQ2ODpcdFx0XHRnb3RvIG91dDtcbiA0Njk6XHRcdH1cbiA0NzA6XHRcbiA0NzE6XHRcdC8qIE5vIG5lZWQgdG8gY2hlY2sgd3JpdGFibGUgc2xvdCBleHBsaWNpdGx5IGFzIGt2bV92Y3B1X3dyaXRlX2d1ZXN0IGRvZXMgaXQgaW50ZXJuYWxseSAqL1xuIDQ3MjpcdFx0aWYgKGt2bV92Y3B1X3dyaXRlX2d1ZXN0KHZjcHUsIHNhZGRyLCBrdnBtdS1cdTAwM2VzZGF0YSwgc25hcHNob3RfYXJlYV9zaXplKSkge1xuIDQ3MzpcdFx0XHRrZnJlZShrdnBtdS1cdTAwM2VzZGF0YSk7XG4gNDc0Olx0XHRcdGt2cG11LVx1MDAzZXNkYXRhID0gTlVMTDtcbiA0NzU6XHRcdFx0c2JpcmV0ID0gU0JJX0VSUl9JTlZBTElEX0FERFJFU1M7XG4gNDc2Olx0XHRcdGdvdG8gb3V0O1xuIDQ3NzpcdFx0fVxuIDQ3ODpcdFxuIDQ3OTpcdFx0a3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkciA9IHNhZGRyO1xuIDQ4MDpcdFxuIDQ4MTpcdG91dDpcbiA0ODI6XHRcdHJldGRhdGEtXHUwMDNlZXJyX3ZhbCA9IHNiaXJldDtcbiA0ODM6XHRcbiA0ODQ6XHRcdHJldHVybiAwO1xuIDQ4NTpcdH1cbiA0ODY6XHRcbiA0ODc6XHRpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcbiA0ODg6XHRcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIG51bV9ldmVudHMsXG4gNDg5Olx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzA1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBMZWFrIGFuZCBDb25zaXN0ZW5jeSBJc3N1ZSBpbiBLVk0gUE1VIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSBpdCB0YWNrbGVzIHR3byBjb3JlIHByb2JsZW1zOiBhIG1lbW9yeSBsZWFrLCB3aGljaCBzZWVtcyB0byBzdGVtIGZyb20gdGhlIG9sZCBgc2RhdGFgIG5vdCBiZWluZyBoYW5kbGVkIGNvcnJlY3RseSwgYW5kIGEgY29uc2lzdGVuY3kgaXNzdWUuIFRoZSBpbmNvbnNpc3RlbmN5IGFyaXNlcyB3aGVuIGEgcmUtaW5zdGFsbGF0aW9uIGZhaWxzLCBhbmQgdGhlIGBzZGF0YWAgYW5kIGBzbmFwc2hvdF9hZGRyYCB2YWx1ZXMgZGl2ZXJnZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgc291cmNlIG9mIGhhcmQtdG8tZGVidWcgZXJyb3JzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpZiBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxzLCBga3ZwbXUtJmd0O3NkYXRhYCBnZXRzIGZyZWVkIGFuZCBzZXQgdG8gYE5VTExgLCB3aGljaCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uIEhvd2V2ZXIsIHRoZSBwcm9ibGVtIGlzIHRoYXQgYGt2cG11LSZndDtzbmFwc2hvdF9hZGRyYCAqaXNuJiMzOTt0KiB1cGRhdGVkLCBtZWFuaW5nIGl0JiMzOTtzIGxlZnQgd2l0aCBpdHMgb2xkLCBpbnZhbGlkIHZhbHVlLiBUaGlzIGRpc2Nvbm5lY3QgYmV0d2VlbiB0aGUgZGF0YSBhbmQgdGhlIHBvaW50ZXIgdGhhdCYjMzk7cyBzdXBwb3NlZCB0byBkZXNjcmliZSB0aGF0IGRhdGEgaXMgcHJlY2lzZWx5IHdoYXQgY2F1c2VzIHRoZSBpbmNvbnNpc3RlbmN5LgoKV2FpdCBhIHNlY29uZC4uLkkmIzM5O20gYWxzbyBzZWVpbmcgYGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KWAgYmVpbmcgY2FsbGVkIGluIHRoaXMgY29udGV4dC4gSXQgaXMgKmhpZ2hseSogbGlrZWx5IHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB0aGUgb25lIHRoYXQmIzM5O3Mgc3VwcG9zZWQgdG8gY2xlYXIgYGt2cG11LSZndDtzZGF0YWAgYW5kIHNldCBga3ZwbXUtJmd0O3NuYXBzaG90X2FkZHIgPSBJTlZBTElEX0dQQWAuIEdpdmVuIHRoZSB0eXBpY2FsIEtWTSBjbGVhbnVwIHN0cnVjdHVyZSwgdGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24uIExldCBtZSBpbW1lZGlhdGVseSBjaGVjayB0aGUgY29kZSBmb3IgYGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYWAgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjA6XHRcdHN0cnVjdCBrdm1fcG11ICprdnBtdSA9IHZjcHVfdG9fcG11KHZjcHUpO1xuIDQyMTpcdFxuIDQyMjpcdFx0a2ZyZWUoa3ZwbXUtXHUwMDNlc2RhdGEpO1xuIDQyMzpcdFx0a3ZwbXUtXHUwMDNlc2RhdGEgPSBOVUxMO1xuIDQyNDpcdFx0a3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkciA9IElOVkFMSURfR1BBO1xuIDQyNTpcdH1cbiA0MjY6XHRcbiA0Mjc6XHRpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuIDQyODpcdFx0XHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIGZsYWdzLFxuIDQyOTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXG4gNDMwOlx0e1xuIDQzMTpcdFx0c3RydWN0IGt2bV9wbXUgKmt2cG11ID0gdmNwdV90b19wbXUodmNwdSk7XG4gNDMyOlx0XHRpbnQgc25hcHNob3RfYXJlYV9zaXplID0gc2l6ZW9mKHN0cnVjdCByaXNjdl9wbXVfc25hcHNob3RfZGF0YSk7XG4gNDMzOlx0XHRpbnQgc2JpcmV0ID0gMDtcbiA0MzQ6XHRcdGdwYV90IHNhZGRyO1xuIDQzNTpcdFxuIDQzNjpcdFx0aWYgKCFrdnBtdSB8fCBmbGFncykge1xuIDQzNzpcdFx0XHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07XG4gNDM4Olx0XHRcdGdvdG8gb3V0O1xuIDQzOTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTgyCgkJCQkJCQlvdXRwdXQ6IDI0NwoJCQkJCQkJdGhvdWdodHM6IDg0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBJcnJlbGV2YW5jZTogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgZnVuY3Rpb24sIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWFgLCBkb2VzIHdoYXQgaXQgc2F5czogaXQgZnJlZXMgdGhlIGBzZGF0YWAgYW5kIHJlc2V0cyB0aGUgYHNuYXBzaG90X2FkZHJgLiBDcnVjaWFsbHksIGlmIHRoaXMgaXNuJiMzOTt0IGNhbGxlZCBwcmlvciwgYW5kIHdlIGp1c3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgdGhlIGV4aXN0aW5nIGBrdnBtdS0mZ3Q7c2RhdGFgIGlzIHNpbXBseSBvdmVyd3JpdHRlbiwgbGVhdmluZyB0aGUgb2xkIGRhdGEgc3RyYW5kZWQg4oCTIGEgY2xhc3NpYyBtZW1vcnkgbGVhay4KCk5vdywgY29uc2lkZXIgdGhlIGZhaWx1cmUgc2NlbmFyaW9zLiBJZiBga3phbGxvY2Agb3IgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlscywgYGt2cG11LSZndDtzZGF0YWAgYmVjb21lcyBgTlVMTGAsIGJ1dCBga3ZwbXUtJmd0O3NuYXBzaG90X2FkZHJgIHN0aWxsIGhvbGRzIGFuIG9sZCwgdmFsaWQgYWRkcmVzcy4gVGhhdCYjMzk7cyBhIHRleHRib29rIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3YWl0aW5nIHRvIGhhcHBlbi4gVGhlIGNvbW1lbnQmIzM5O3MgaW50ZW50IGlzIGNsZWFyOiBhdm9pZCB0aGUgbWVtb3J5IGxlYWsgYW5kIG1haW50YWluIGNvbnNpc3RlbmN5IGJldHdlZW4gYHNkYXRhYCBhbmQgYHNuYXBzaG90X2FkZHJgLiBFc3NlbnRpYWxseSB0aGlzIHByZXZlbnRzIGJ1Z3MgaW4gdGhlIGFyZWEuCgpTbywgdGhlIGlzc3VlIGlzICpkZWZpbml0ZWx5KiBhIG1lbW9yeSBsZWFrIOKAkyB0aGUgb2xkIGBzZGF0YWAgaXMgbG9zdCBvbiB0aGUgd2luZCB3aGVuIHRoZSBuZXcgcG9pbnRlciBpcyBhbGxvY2F0ZWQuIElmIHRoZSBhbGxvY2F0aW9uIGZhaWxzIG9yIHRoZSBndWVzdCB3cml0ZSBmYWlscywgdGhlICpuZXcqIGBzZGF0YWAgaXMgZnJlZWQsIGJ1dCB0aGUgb2xkIGBzZGF0YWAgaXMgYWxyZWFkeSBsZWFrZWQuIEFuZCB0aGUgb2xkIGBzbmFwc2hvdF9hZGRyYCBpcyBzdGlsbCB2YWxpZC4gIExhdGVyLCBpZiB0aGUgY29kZSBjaGVja3MgdGhlIGFkZHJlc3MgYW5kIGZpbmRzIHRoYXQgYGt2cG11LSZndDtzbmFwc2hvdF9hZGRyYCBpcyBub3QgdGhlIGludmFsaWQgYWRkcmVzcywgdGhlIGNvZGUgbWlnaHQgYXNzdW1lIHRoZSBtZW1vcnkgaXMgc3RpbGwgdmFsaWQsIGJ1dCBpdCBpcyBgTlVMTGAuCgpUaGVzZSBhcmUgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgaG93ZXZlci4gIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IGxlYWtzIGNhdWdodCBieSBLTUVNTEVBSywgYW5kIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdoaWNoIGNhbiBiZSBjYXVnaHQgYnkgdGhlIHN0YW5kYXJkIGtlcm5lbCYjMzk7cyBvb3BzIG1lY2hhbmlzbS4gS0FTQU4gaXMgaW1wb3J0YW50IGZvciB1c2UtYWZ0ZXItZnJlZSwgaWYgYW55LiBLTVNBTiB3b3VsZCBiZSByZWxldmFudCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLCBidXQgKnRoYXQmIzM5O3Mgbm90IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmUqLiBUaGUgbmV3IGBzZGF0YWAgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NgLCBzbyBpdCYjMzk7cyB6ZXJvLWluaXRpYWxpemVkLiBaZXJvIGluaXRpYWxpemF0aW9uIHByZXZlbnRzIGlzc3VlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgcmVhZHMuCgpTbywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBvdXIgd29yayBhbmQgcmVjb25maXJtIEtNU0FOJiMzOTtzIGlycmVsZXZhbmNlLiBUaGUgZml4IGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3k6IHRoZSBsZWFrIHdpbGwgYmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIHdoaWxlIHRoZSBpbmNvbnNpc3RlbnQgc3RhdGUgbWlnaHQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggd2lsbCBiZSBjYXVnaHQgYnkgYSBzdGFuZGFyZCBrZXJuZWwgb29wcy4gIFRoZXJlJiMzOTtzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSwgbm8gaW5mb3JtYXRpb24gbGVhaywgbm90aGluZyB0aGF0IEtNU0FOIHdvdWxkIGRldGVjdC4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuCgpTbywgaGVyZSBpcyBob3cgSSB3aWxsIGZvcm11bGF0ZSBteSByZWFzb25pbmcuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhlIGNvZGUgcHJldmlvdXNseSBvdmVyd3JpdHRlbiBga3ZwbXUtJmd0O3NkYXRhYCB3aXRoIGEgbmV3IGFsbG9jYXRpb24gd2l0aG91dCBmcmVlaW5nIHRoZSBvbGQgb25lLCBhbmQgdGhpcyBjYXVzZXMgYSBtZW1vcnkgbGVhay4gSWYgdGhlIG5ldyBhbGxvY2F0aW9uIG9yIHRoZSBzdWJzZXF1ZW50IGBrdm1fdmNwdV93cml0ZV9ndWVzdGAgZmFpbHMsIGBrdnBtdS0mZ3Q7c2RhdGFgIGJlY29tZXMgYE5VTExgLCBidXQgYGt2cG11LSZndDtzbmFwc2hvdF9hZGRyYCByZXRhaW5zIGl0cyBvbGQgdmFsdWUsIGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgbGF0ZXIuIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0YWJsZSBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcyBkZXRlY3QgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG5ldyBgc2RhdGFgIGlzIHplcm8taW5pdGlhbGl6ZWQgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZC4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cblxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cblxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQzLjIyNjIxMzk3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NjQ1NDY4ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3kgaW4gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBQcmV2aW91c2x5LCB3aGVuIGEgbmV3IHNuYXBzaG90IGFyZWEgd2FzIHNldCwgdGhlIGNvZGUgb3Zlcndyb3RlIGBrdnBtdS1cXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cXHUwMDNlc2RhdGFgIHdvdWxkIGJlIHNldCB0byBgTlVMTGAgd2hpbGUgYGt2cG11LVxcdTAwM2VzbmFwc2hvdF9hZGRyYCByZXRhaW5lZCBpdHMgb2xkIHZhbGlkIHZhbHVlLiBUaGlzIGluY29uc2lzdGVudCBzdGF0ZSBjb3VsZCBsZWFkIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxcblxcblRoZXNlIGlzc3VlcyAobWVtb3J5IGxlYWtzIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtNRU1MRUFLIGFuZCBzdGFuZGFyZCBrZXJuZWwgb29wc2VzL0tBU0FOLiBUaGUgbmV3IGBzZGF0YWAgYnVmZmVyIGlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AsIGVuc3VyaW5nIGl0IGlzIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29uc2lzdGVuY3kgaW4gdGhlIFJJU0MtViBLVk0gUE1VIHNuYXBzaG90IHNldHVwIGxvZ2ljLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgbWFraW5nIFNCSSBQTVUgZXh0ZW5zaW9uIGNhbGxzIHRvIHRoZSBoeXBlcnZpc29yLCB3aGljaCBjYW4gYmUgZnV6emVkIGluIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQzLjIyNjIyMTg2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTY1MzU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4ZTBiYWJjYWQ4ZjQ3NmU5NmZlNTYwNDg4MGZjM2ViZTc2MGRlZTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5pbmRleCA3NTJmMTAxNGQ2MzNlLi4xNGY3MzQ5MGYxMmNiIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXFxuQEAgLTQ1NCw2ICs0NTQsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXFxuK1xcdCAqIHRoZSBvbGQgc2RhdGEgYW5kIHRvIGtlZXAgc2RhdGEvc25hcHNob3RfYWRkciBjb25zaXN0ZW50IGlmXFxuK1xcdCAqIHRoZSByZS1pbnN0YWxsIGZhaWxzIGJlbG93LlxcbitcXHQgKi9cXG4rXFx0aWYgKGt2cG11LVxcdTAwM2VzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKVxcbitcXHRcXHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XFxuK1xcbiBcXHRrdnBtdS1cXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpO1xcbiBcXHRpZiAoIWt2cG11LVxcdTAwM2VzZGF0YSkge1xcbiBcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQ0Ljg5MjYxMTY3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ4NzExMjkyMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGUwYmFiY2FkOGY0NzZlOTZmZTU2MDQ4ODBmYzNlYmU3NjBkZWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggNzUyZjEwMTRkNjMzZS4uMTRmNzM0OTBmMTJjYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbkBAIC00NTQsNiArNDU0LDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzXG4gXHRcdH1cbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXG4rXHQgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZlxuK1x0ICogdGhlIHJlLWluc3RhbGwgZmFpbHMgYmVsb3cuXG4rXHQgKi9cbitcdGlmIChrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKVxuK1x0XHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XG4rXG4gXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWt2cG11LVx1MDAzZXNkYXRhKSB7XG4gXHRcdHNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQ0Ljg5MjYxMzA0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzAyOTAwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIG1ha2luZyBhIGNoYW5nZSBpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYSBjaGVjayB3aXRoaW4gdGhlIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhpcyBjb2RlIGlzIGFpbWVkIGF0IGVuc3VyaW5nIHRoZSBjb25zaXN0ZW5jeSBvZiBhIFBNVSBzbmFwc2hvdCBhcmVhIHdoZW4gaXQncyBiZWluZyBzZXQsIGNsZWFyaW5nIGFueSBwcmUtZXhpc3Rpbmcgc25hcHNob3QgdG8gcHJldmVudCBsZWFrcyBhbmQgcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBpZiB0aGUgbmV3IGluc3RhbGxhdGlvbiBmYWlscy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jYCBhbmQgc3BlY2lmaWNhbGx5LCB0aGF0IGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAuIFNpbmNlIHRoaXMgaXMgUklTQy1WIEtWTSBQTVUgY29kZSwgdGhlIG5leHQgcXVlc3Rpb24gdGhhdCBwb3BzIHVwIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gcmVsZXZhbnQgaW4gYSBwcmFjdGljYWwgc2Vuc2Ugd2l0aCBRRU1VLiBUaGF0J3MgYSBxdWljayB5ZXMsIHdlIGNhbiBjZXJ0YWlubHkgdGVzdCBSSVNDLVYgS1ZNIHdpdGhpbiBRRU1VIHdoZW4gcnVubmluZyBSSVNDLVYgZ3Vlc3RzLlxuXG5Ob3csIGEgY3JpdGljYWwgYXNwZWN0IG9mIHNlY3VyaXR5IHRlc3RpbmcgaXMgZnV6emluZy4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgY292ZXJhZ2UgZm9yIFJJU0MtViBLVk0/IFRoYW5rZnVsbHksIHRoZSBhbnN3ZXIgaXMgeWVzLCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IGZ1enppbmcgUklTQy1WIHRhcmdldHMgdXNpbmcgS1ZNLiBUaGlzIG1lYW5zIGl0J3MgcG9zc2libGUgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyB0ZXN0ZWQgYnkgZnV6emluZy4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBmdW5jdGlvbiBtb3JlIGNsb3NlbHkgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGF0IGZ1enppbmcgbWlnaHQgbGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjUyLjI2MjkwNDk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDYzNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDE4PXN0YXRpYyB2b2lkIGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQyNzppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMtNDI4LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jPTE2PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzMtXFx0Y2FzZSBTQklfRVhUX1BNVV9TTkFQU0hPVF9TRVRfU0hNRU06XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6NzQ6XFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSh2Y3B1LCBjcC1cXHUwMDNlYTAsIGNwLVxcdTAwM2VhMSwgY3AtXFx1MDAzZWEyLCByZXRkYXRhKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03NS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzg6NTIuMzA4Mzc2Mzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNDYxMTA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTS1SSVNDViBQTVUgU25hcHNob3QgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgY2FsbGVkIGZyb20gYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhhdCBTQkkgUE1VIGV4dGVuc2lvbiBoYW5kbGVyIGluIEtWTSDigJMgc28sIGEgZ3Vlc3QgY2FuIGFic29sdXRlbHkgdHJpZ2dlciB0aGlzIGJ5IG1ha2luZyB0aG9zZSBTQkkgY2FsbHMuIEFscmlnaHQsIHNvIHdlJ3ZlIGdvdCBhIGRlZmluaXRlIGVudHJ5IHBvaW50LiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIG9yIGNvbmRpdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhpcyBmdW5jdGlvbiB0byBleGVjdXRlIGFzIGludGVuZGVkLiBMZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXF1aXJlZCBzZXR1cC4gV2hhdCBjb25maWd1cmF0aW9ucyBkbyB3ZSBuZWVkIHRvIGhhdmUgaW4gcGxhY2UgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHk/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozODo1Ni4yMTI5ODk0NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NTg3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozODo1Ni4yNTc4NTI1MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTQ4MDMzNzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqUE1VIENvbmZpZ3VyYXRpb24gSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgUklTQy1WIEtWTSBlbnZpcm9ubWVudC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEknbGwgbmF2aWdhdGUgdG8gYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgLiBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgd2hlbiBjb21waWxpbmcgdGhlIGtlcm5lbCB3aXRoIEtWTSBzdXBwb3J0IGZvciB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gSSdtIGhvcGluZyB0byBmaW5kIGV4cGxpY2l0IFBNVSBzZXR0aW5ncyB0aGVyZSwgd2hpY2ggd291bGQgZ3VpZGUgbWUgdG8gdW5kZXJzdGFuZCB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBQTVUgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQgYXQgYnVpbGQgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjAzLjQwNTg4ODc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTA5ODMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQTVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MDMuNDUyMDA0ODA5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMDc5OTU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaXZpbmcgaW50byB0aGUgUklTQy1WIEtWTSBNYWtlZmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCB1bmRlcnN0YW5kIGhvdyB0aGlzIHRoaW5nIGlzIGJ1aWx0LiBNeSBmaXJzdCBtb3ZlIHdoZW4gdGFja2xpbmcgYSBrZXJuZWwgbW9kdWxlLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gYSB2aXJ0dWFsaXNhdGlvbiBjb21wb25lbnQgbGlrZSBLVk0sIGlzIGFsd2F5cyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgbWFnaWMgaGFwcGVuczogdGhlIGNvbXBpbGF0aW9uIGZsYWdzLCBzb3VyY2UgZmlsZSBpbmNsdXNpb24sIGFuZCBsaW5raW5nIGFyZSBvcmNoZXN0cmF0ZWQgdGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBwcm9jZXNzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGt2bWAgbW9kdWxlIHNwZWNpZmljYWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgUklTQy1WIGtlcm5lbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzLCBhbmQgd2hlcmUgdGhlIGNvcmUgcGFydHMgYXJlLiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgYGFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlYCBob2xkcy4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtc3RydWN0dXJlZCBhbmQgZG9lc24ndCBpbnZvbHZlIHRvbyBtdWNoIG1hY3JvLWJhc2VkIG9iZnVzY2F0aW9uLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjA3LjE3MjgwNjg5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMjg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9wbXVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9Mjg9a3ZtLXkgKz0gdmNwdV9vbmVyZWcub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI5Omt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSArPSB2Y3B1X3BtdS5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzAta3ZtLXkgKz0gdmNwdV9zYmkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOTowNy4yMTcxNDM0MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MzU3NzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzcGVjaWFsaXN0IGluIHRoaXMgZG9tYWluOlxuXG4qKk15IEltbWVkaWF0ZSBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIHRlbGxpbmcgbWUgd2UgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgLiBUaGF0J3MgYSBrZXkgaW5kaWNhdG9yLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBcIndoZXJlIGlzIHRoaXMgZGVmaW5lZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuXCIgSSdtIG1lbnRhbGx5IHRyYWNpbmcgYmFjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBLbm93aW5nIHdoZXJlIGl0J3MgZGVmaW5lZCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjbHVlcyBhYm91dCB3aGF0J3MgZW5hYmxlZCwgd2hhdCdzIGRpc2FibGVkLCBhbmQgaXRzIG92ZXJhbGwgcGxhY2UgaW4gdGhlIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyByb3V0aW5lOyBpdCdzIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmN5LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdHJhY2UgaXQgZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjEwLjQ5MDcyMjk3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMTYzNTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VX1NCSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZz04OD1jb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctOTctXFxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05OS1cXHRkZXBlbmRzIG9uIFJJU0NWX1BNVSBcXHUwMDI2XFx1MDAyNiBSSVNDVl9TQklcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MTIuMDIyMzYzMTE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDAwODY0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBmb3IgdGhpcyBSSVNDLVYgS1ZNIGZ1enppbmcgc2V0dXAsIHdlIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgIGFuZCBgQ09ORklHX0tWTWAuIGBDT05GSUdfS1ZNYCBpcyBwcmV0dHkgbXVjaCBhIGdpdmVuIGZvciBhbnkgS1ZNLWJhc2VkIGZ1enppbmcgc2NlbmFyaW8sIHNvIHRoYXQgb25lJ3Mgc3RyYWlnaHRmb3J3YXJkLiBCdXQgYENPTkZJR19SSVNDVl9QTVVfU0JJYCDigJMgdGhhdCdzIGEgZ29vZCBpbmNsdXNpb247IGl0IHdpbGwgYWxsb3cgdXMgdG8gbGV2ZXJhZ2UgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB1bml0cywgYW5kIHRoYXQgY2FuIGJlIHJlYWxseSB2YWx1YWJsZS4gTm93LCBiZWZvcmUgSSBjb21taXQgdG8ganVzdCB0aGVzZSB0d28sIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgbWlnaHQgYmUgYW55ICpvdGhlciogcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgd291bGQgYmUgYmVuZWZpY2lhbCB0byBpbmNsdWRlLiBHb3R0YSBiZSB0aG9yb3VnaCwgeW91IGtub3c/IExldCdzIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MTUuODIyNDUxNjczWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM0MDM0MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSSVNDVl9QTVVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wZXJmL0tjb25maWc9NzQ9Y29uZmlnIEFSTV9YU0NBTEVfUE1VXFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy03Ny1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo3ODpjb25maWcgUklTQ1ZfUE1VXFxuZHJpdmVycy9wZXJmL0tjb25maWctNzktXFx0ZGVwZW5kcyBvbiBSSVNDVlxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctODctXFxuZHJpdmVycy9wZXJmL0tjb25maWc6ODg6Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy04OS1cXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctOTctXFxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05OS1cXHRkZXBlbmRzIG9uIFJJU0NWX1BNVSBcXHUwMDI2XFx1MDAyNiBSSVNDVl9TQklcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MTcuMzU2NDkwMzIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzOTA1NjA3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqTXkgQW5hbHlzaXMgb2YgS1ZNIGFuZCBSSVNDLVYgUE1VIEludGVncmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYEtWTWAgYW5kIGBSSVNDVl9QTVVfU0JJYC4gVGhvc2UgYXJlIG15IHN0YXJ0aW5nIHBvaW50cy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBLVk0gYW5kIFJJU0MtViBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBhcmU6IGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBhbmQgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhvc2UgbmFtZXMgdGVsbCBtZSBhIGxvdC4gT25lIHNlZW1zIHRvIGRlYWwgd2l0aCB0YWtpbmcgYSBzbmFwc2hvdCBvZiB0aGUgUE1VIHN0YXRlLCBhbmQgdGhlIHNoYXJlZCBtZW1vcnkgaW5kaWNhdGVzIGludGVyLVZNIGNvbW11bmljYXRpb24gb3IgYWNjZXNzLiBUaGVuIHRoZXJlJ3MgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYCwgdGhhdCBzb3VuZHMgbGlrZSB0aGUgY29yZSBTQkkgKFN1cGVydmlzb3IgQmluYXJ5IEludGVyZmFjZSkgZXh0ZW5zaW9uIGhhbmRsZXIgZm9yIFBNVSBjYWxscy4gSW50ZXJlc3RpbmcuIFdhaXQgYSBtaW51dGUuLi4gaXMgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYCBhY3R1YWxseSBzdGF0aWM/IFRoYXQncyBub3QgaWRlYWwuIEl0IGNvdWxkIG1lYW4gbGltaXRhdGlvbnMgb24gZHluYW1pYyByZWdpc3RyYXRpb24gb3IgZXh0ZW5zaWJpbGl0eSBvZiBQTVUgZnVuY3Rpb25zLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCBmdXJ0aGVyLiBUaGF0IGNvdWxkIGhhdmUgaW1wbGljYXRpb25zIG9uIGhvdyB3ZWxsIHRoaXMgaW50ZWdyYXRlcyB3aXRoIG90aGVyIFBNVSBmZWF0dXJlcyBkb3duIHRoZSBsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MjMuNzQ3MDUyODc3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDEwMDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2JpX2V4dF9wbXVfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6MTY6c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTctXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz05Mz1jb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfcG11ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTUtXFx0LmV4dGlkX2VuZCA9IFNCSV9FWFRfUE1VLFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjk2OlxcdC5oYW5kbGVyID0ga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTctXFx0LnByb2JlID0ga3ZtX3NiaV9leHRfcG11X3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOToyMy43OTExNTczNDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5OTkwMzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6XG5cbioqUE1VIEhhbmRsZXJzIGFuZCBTaGFyZWQgTWVtb3J5IGluIEtWTS1SSVNDVioqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIEtWTS1SSVNDViBpbXBsZW1lbnRhdGlvbiBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UncmUgaGFuZGxpbmcgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0cywgb3IgUE1Vcy4gVGhlIGtleSBwb2ludCBpcyB0aGF0IGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQncyBpbXBvcnRhbnQgZm9yIHNjb3BpbmcgYW5kIHByZXZlbnRpbmcgYWNjaWRlbnRhbCBleHRlcm5hbCBsaW5rYWdlLiBJdCBzdWdnZXN0cyBhIHRpZ2h0bHkgY29udHJvbGxlZCBmdW5jdGlvbiwgbGlrZWx5IHNwZWNpZmljIHRvIHRoZSBtb2R1bGUgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBub3QgbWVhbnQgZm9yIG91dHNpZGUgYWNjZXNzLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBiZW5lZmljaWFsIHByYWN0aWNlLlxuXG5Ob3csIG9uIHRoZSBvdGhlciBoYW5kLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgKm5vdCogYHN0YXRpY2AuIFRoaXMgaGFzIHNvbWUgaW1wb3J0YW50IGltcGxpY2F0aW9ucy4gSXQncyBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgcGFydCBvZiB0aGUgQVBJLCBvciBhdCBsZWFzdCBwb3RlbnRpYWxseSBjYWxsYWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBLVk0gY29kZWJhc2UuIEl0IG1pZ2h0IGJlIHVzZWQgdG8gY29uZmlndXJlIG9yIG1hbmFnZSB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24gZGVkaWNhdGVkIHRvIHRoZSBQTVUgc25hcHNob3QgZGF0YS4gSXQgYmVpbmcgbm9uLXN0YXRpYyBvcGVucyBpdCB1cCBmb3IgYnJvYWRlciB1c2Ugd2l0aGluIHRoZSBsYXJnZXIgS1ZNLVJJU0NWIGFyY2hpdGVjdHVyZS4gSSdkIGJlIGxvb2tpbmcgY2xvc2VseSBhdCB3aGVyZSBpdCdzIGNhbGxlZCBhbmQgaG93IGl0J3MgdXNlZCB0byB1bmRlcnN0YW5kIGl0cyBzcGVjaWZpYyByb2xlIGluIHRoZSBQTVUgZGF0YSBleGNoYW5nZSBwcm9jZXNzLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDc1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MjguNTkxMDYzNDQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkxMjk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jPTQxOD1zdGF0aWMgdm9pZCBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYzo0Mjc6aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyOC1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTczLVxcdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXFx1MDAzZWEwLCBjcC1cXHUwMDNlYTEsIGNwLVxcdTAwM2VhMiwgcmV0ZGF0YSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjI4LjYzNjk4MDQ0MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk0MzU2MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBSSVNDLVYgUE1VIFNuYXBzaG90IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGFzIHRoZSBrZXkgZnVuY3Rpb24gdG8gcmVhbGx5IHVuZGVyc3RhbmQgaGVyZS4gSXQgc2VlbXMgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgcmVzb2x2aW5nIGEgbWVtb3J5IGxlYWsgb3IsIHBvdGVudGlhbGx5IG1vcmUgY29uY2VybmluZywgc29tZSBraW5kIG9mIGluY29uc2lzdGVuY3kgaW4gaG93IHRoZSBzbmFwc2hvdCBhcmVhIGZvciB0aGUgUE1VIGlzIGJlaW5nIHNldCB1cC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdGhlIFNCSSBQTVUgZXh0ZW5zaW9uIHdpdGhpbiBLVk0sIHNvIGl0J3MgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGNhcGFiaWxpdGllcy4gR2l2ZW4gdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBTQkkgUE1VLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBzY3J1dGluaXplIGZ1cnRoZXIgZm9yIGFueSBsdXJraW5nIGlzc3VlcywgYW5kIEkgYW0gZ29pbmcgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgYXJlIGBLVk1gIGFuZCBgUklTQ1ZfUE1VX1NCSWAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFNvLCB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbSwgYW5kIG15IGludmVzdGlnYXRpb24sIHdpbGwgcmV2b2x2ZSBhcm91bmQgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBJJ2xsIGRlbHZlIGludG8gdGhlIGNvZGUgcGF0aCBoZXJlLCB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlIG9mIHRoZSBsZWFrL2luY29uc2lzdGVuY3ksIGFuZCB2ZXJpZnkgdGhlIHBhdGNoJ3MgZWZmZWN0aXZlbmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIyNywiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MzMuNTMxMzM4ODE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI1NjI3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOTozMy42MDM5MDYxODRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjY3NzYxMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MzMuNjA0MzcwNzc0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM1MjY3MjkyNzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXFx1MDAzZXNkYXRhYCB3aXRoIGEgbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgd2l0aG91dCBmcmVlaW5nIHRoZSBvbGQgb25lLCBjYXVzaW5nIGEgbWVtb3J5IGxlYWsuIEFkZGl0aW9uYWxseSwgaWYgdGhlIG5ldyBhbGxvY2F0aW9uIG9yIHRoZSBzdWJzZXF1ZW50IGBrdm1fdmNwdV93cml0ZV9ndWVzdGAgZmFpbGVkLCBga3ZwbXUtXFx1MDAzZXNkYXRhYCB3b3VsZCBiZSBzZXQgdG8gYE5VTExgIHdoaWxlIGBrdnBtdS1cXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cXG5cXG5UaGVzZSBpc3N1ZXMgKG1lbW9yeSBsZWFrcyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcy9LQVNBTi4gVGhlIG5ldyBgc2RhdGFgIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgLCBlbnN1cmluZyBpdCBpcyBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGUwYmFiY2FkOGY0NzZlOTZmZTU2MDQ4ODBmYzNlYmU3NjBkZWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggNzUyZjEwMTRkNjMzZS4uMTRmNzM0OTBmMTJjYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbkBAIC00NTQsNiArNDU0LDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzXG4gXHRcdH1cbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXG4rXHQgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZlxuK1x0ICogdGhlIHJlLWluc3RhbGwgZmFpbHMgYmVsb3cuXG4rXHQgKi9cbitcdGlmIChrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKVxuK1x0XHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XG4rXG4gXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWt2cG11LVx1MDAzZXNkYXRhKSB7XG4gXHRcdHNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjMzLjYwNDM3MTQ0NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzIyNTQ0ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtWTS9SSVNDLVYgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjYWxsIHRvIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSlgIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgaWYgYGt2cG11LVx1MDAzZXNuYXBzaG90X2FkZHJgIGlzbid0IGBJTlZBTElEX0dQQWAsIHRoZXkncmUgY2xlYXJpbmcgb3V0IGFueSBwcmV2aW91cyBzbmFwc2hvdCBkYXRhIGJlZm9yZSBhbGxvY2F0aW5nIHRoZSBuZXcgYGt2cG11LVx1MDAzZXNkYXRhYCB3aXRoIGBremFsbG9jYC4gVGhlIGNvbW1lbnQgbWVudGlvbnMgc29tZXRoaW5nIGFib3V0IGF2b2lkaW5nIGxlYWtzIG9mIG9sZCBkYXRhIGFuZCBtYWludGFpbmluZyBjb25zaXN0ZW5jeSBiZXR3ZWVuIGBzZGF0YWAgYW5kIGBzbmFwc2hvdF9hZGRyYCBpbiBjYXNlIHRoZSByZS1pbnN0YWxsYXRpb24gZmFpbHMuIFNtYXJ0IG1vdmUsIHNlZW1zIGxpa2UgYSBnb29kIHByZWNhdXRpb24uXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBzbyBJJ2xsIHByb2JhYmx5IHpvb20gaW4gb24gd2hlcmUgdGhpcyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgY2FsbGVkIGZyb20sIHRoYXQgc2hvdWxkIGdpdmUgbWUgc29tZSBjb250ZXh0LiBJJ2xsIHVzZSB0aGF0IGBkZWZhdWx0X2FwaTpyZWFkLWZpbGVgIHRvb2wsIHRoYXQgc2hvdWxkIGdpdmUgbWUgd2hhdCBJIG5lZWQgdG8gc2VlIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjM4LjkyNjkxODIwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ0MDpcXHRcXG4gNDQxOlxcdFxcdGlmIChzYWRkcl9sb3cgPT0gU0JJX1NITUVNX0RJU0FCTEUgXFx1MDAyNlxcdTAwMjYgc2FkZHJfaGlnaCA9PSBTQklfU0hNRU1fRElTQUJMRSkge1xcbiA0NDI6XFx0XFx0XFx0a3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHZjcHUpO1xcbiA0NDM6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDQ0NDpcXHRcXHR9XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdHNhZGRyID0gc2FkZHJfbG93O1xcbiA0NDc6XFx0XFxuIDQ0ODpcXHRcXHRpZiAoc2FkZHJfaGlnaCAhPSAwKSB7XFxuIDQ0OTpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfMzJCSVQpKSB7XFxuIDQ1MDpcXHRcXHRcXHRcXHRzYWRkciB8PSAoKGdwYV90KXNhZGRyX2hpZ2ggXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiA0NTE6XFx0XFx0XFx0fSBlbHNlIHtcXG4gNDUyOlxcdFxcdFxcdFxcdHNiaXJldCA9IFNCSV9FUlJfSU5WQUxJRF9BRERSRVNTO1xcbiA0NTM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ1NDpcXHRcXHRcXHR9XFxuIDQ1NTpcXHRcXHR9XFxuIDQ1NjpcXHRcXG4gNDU3OlxcdFxcdC8qXFxuIDQ1ODpcXHRcXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXFxuIDQ1OTpcXHRcXHQgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZlxcbiA0NjA6XFx0XFx0ICogdGhlIHJlLWluc3RhbGwgZmFpbHMgYmVsb3cuXFxuIDQ2MTpcXHRcXHQgKi9cXG4gNDYyOlxcdFxcdGlmIChrdnBtdS1cXHUwMDNlc25hcHNob3RfYWRkciAhPSBJTlZBTElEX0dQQSlcXG4gNDYzOlxcdFxcdFxcdGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTtcXG4gNDY0OlxcdFxcbiA0NjU6XFx0XFx0a3ZwbXUtXFx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTtcXG4gNDY2OlxcdFxcdGlmICgha3ZwbXUtXFx1MDAzZXNkYXRhKSB7XFxuIDQ2NzpcXHRcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuIDQ2ODpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDY5OlxcdFxcdH1cXG4gNDcwOlxcdFxcbiA0NzE6XFx0XFx0LyogTm8gbmVlZCB0byBjaGVjayB3cml0YWJsZSBzbG90IGV4cGxpY2l0bHkgYXMga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3QgZG9lcyBpdCBpbnRlcm5hbGx5ICovXFxuIDQ3MjpcXHRcXHRpZiAoa3ZtX3ZjcHVfd3JpdGVfZ3Vlc3QodmNwdSwgc2FkZHIsIGt2cG11LVxcdTAwM2VzZGF0YSwgc25hcHNob3RfYXJlYV9zaXplKSkge1xcbiA0NzM6XFx0XFx0XFx0a2ZyZWUoa3ZwbXUtXFx1MDAzZXNkYXRhKTtcXG4gNDc0OlxcdFxcdFxcdGt2cG11LVxcdTAwM2VzZGF0YSA9IE5VTEw7XFxuIDQ3NTpcXHRcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcXG4gNDc2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0Nzc6XFx0XFx0fVxcbiA0Nzg6XFx0XFxuIDQ3OTpcXHRcXHRrdnBtdS1cXHUwMDNlc25hcHNob3RfYWRkciA9IHNhZGRyO1xcbiA0ODA6XFx0XFxuIDQ4MTpcXHRvdXQ6XFxuIDQ4MjpcXHRcXHRyZXRkYXRhLVxcdTAwM2VlcnJfdmFsID0gc2JpcmV0O1xcbiA0ODM6XFx0XFxuIDQ4NDpcXHRcXHRyZXR1cm4gMDtcXG4gNDg1OlxcdH1cXG4gNDg2OlxcdFxcbiA0ODc6XFx0aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXFxuIDQ4ODpcXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBudW1fZXZlbnRzLFxcbiA0ODk6XFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGZsYWdzLCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX3JldHVybiAqcmV0ZGF0YSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MzguOTI2OTk4MTczWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1OTg2NzMyMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBMZWFrIGFuZCBDb25zaXN0ZW5jeSBJc3N1ZSBpbiBLVk0gUE1VIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgaXQgdGFja2xlcyB0d28gY29yZSBwcm9ibGVtczogYSBtZW1vcnkgbGVhaywgd2hpY2ggc2VlbXMgdG8gc3RlbSBmcm9tIHRoZSBvbGQgYHNkYXRhYCBub3QgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHksIGFuZCBhIGNvbnNpc3RlbmN5IGlzc3VlLiBUaGUgaW5jb25zaXN0ZW5jeSBhcmlzZXMgd2hlbiBhIHJlLWluc3RhbGxhdGlvbiBmYWlscywgYW5kIHRoZSBgc2RhdGFgIGFuZCBgc25hcHNob3RfYWRkcmAgdmFsdWVzIGRpdmVyZ2UuIFRoYXQncyBhIGNsYXNzaWMgc291cmNlIG9mIGhhcmQtdG8tZGVidWcgZXJyb3JzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGlmIGBrdm1fdmNwdV93cml0ZV9ndWVzdGAgZmFpbHMsIGBrdnBtdS1cdTAwM2VzZGF0YWAgZ2V0cyBmcmVlZCBhbmQgc2V0IHRvIGBOVUxMYCwgd2hpY2ggaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiBIb3dldmVyLCB0aGUgcHJvYmxlbSBpcyB0aGF0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCAqaXNuJ3QqIHVwZGF0ZWQsIG1lYW5pbmcgaXQncyBsZWZ0IHdpdGggaXRzIG9sZCwgaW52YWxpZCB2YWx1ZS4gVGhpcyBkaXNjb25uZWN0IGJldHdlZW4gdGhlIGRhdGEgYW5kIHRoZSBwb2ludGVyIHRoYXQncyBzdXBwb3NlZCB0byBkZXNjcmliZSB0aGF0IGRhdGEgaXMgcHJlY2lzZWx5IHdoYXQgY2F1c2VzIHRoZSBpbmNvbnNpc3RlbmN5LlxuXG5XYWl0IGEgc2Vjb25kLi4uSSdtIGFsc28gc2VlaW5nIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSlgIGJlaW5nIGNhbGxlZCBpbiB0aGlzIGNvbnRleHQuIEl0IGlzICpoaWdobHkqIGxpa2VseSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdGhlIG9uZSB0aGF0J3Mgc3VwcG9zZWQgdG8gY2xlYXIgYGt2cG11LVx1MDAzZXNkYXRhYCBhbmQgc2V0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyID0gSU5WQUxJRF9HUEFgLiBHaXZlbiB0aGUgdHlwaWNhbCBLVk0gY2xlYW51cCBzdHJ1Y3R1cmUsIHRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLiBMZXQgbWUgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGNvZGUgZm9yIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWFgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOTo1NC45MTM3MzI3MDhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjA6XFx0XFx0c3RydWN0IGt2bV9wbXUgKmt2cG11ID0gdmNwdV90b19wbXUodmNwdSk7XFxuIDQyMTpcXHRcXG4gNDIyOlxcdFxcdGtmcmVlKGt2cG11LVxcdTAwM2VzZGF0YSk7XFxuIDQyMzpcXHRcXHRrdnBtdS1cXHUwMDNlc2RhdGEgPSBOVUxMO1xcbiA0MjQ6XFx0XFx0a3ZwbXUtXFx1MDAzZXNuYXBzaG90X2FkZHIgPSBJTlZBTElEX0dQQTtcXG4gNDI1OlxcdH1cXG4gNDI2OlxcdFxcbiA0Mjc6XFx0aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG4gNDI4OlxcdFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcXG4gNDI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxcbiA0MzA6XFx0e1xcbiA0MzE6XFx0XFx0c3RydWN0IGt2bV9wbXUgKmt2cG11ID0gdmNwdV90b19wbXUodmNwdSk7XFxuIDQzMjpcXHRcXHRpbnQgc25hcHNob3RfYXJlYV9zaXplID0gc2l6ZW9mKHN0cnVjdCByaXNjdl9wbXVfc25hcHNob3RfZGF0YSk7XFxuIDQzMzpcXHRcXHRpbnQgc2JpcmV0ID0gMDtcXG4gNDM0OlxcdFxcdGdwYV90IHNhZGRyO1xcbiA0MzU6XFx0XFxuIDQzNjpcXHRcXHRpZiAoIWt2cG11IHx8IGZsYWdzKSB7XFxuIDQzNzpcXHRcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07XFxuIDQzODpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDM5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6NTQuOTEzODMyNjU4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTU3ODA1MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIElycmVsZXZhbmNlOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgZnVuY3Rpb24sIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWFgLCBkb2VzIHdoYXQgaXQgc2F5czogaXQgZnJlZXMgdGhlIGBzZGF0YWAgYW5kIHJlc2V0cyB0aGUgYHNuYXBzaG90X2FkZHJgLiBDcnVjaWFsbHksIGlmIHRoaXMgaXNuJ3QgY2FsbGVkIHByaW9yLCBhbmQgd2UganVzdCBhbGxvY2F0ZSBuZXcgbWVtb3J5LCB0aGUgZXhpc3RpbmcgYGt2cG11LVx1MDAzZXNkYXRhYCBpcyBzaW1wbHkgb3ZlcndyaXR0ZW4sIGxlYXZpbmcgdGhlIG9sZCBkYXRhIHN0cmFuZGVkIOKAkyBhIGNsYXNzaWMgbWVtb3J5IGxlYWsuXG5cbk5vdywgY29uc2lkZXIgdGhlIGZhaWx1cmUgc2NlbmFyaW9zLiBJZiBga3phbGxvY2Agb3IgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlscywgYGt2cG11LVx1MDAzZXNkYXRhYCBiZWNvbWVzIGBOVUxMYCwgYnV0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCBzdGlsbCBob2xkcyBhbiBvbGQsIHZhbGlkIGFkZHJlc3MuIFRoYXQncyBhIHRleHRib29rIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3YWl0aW5nIHRvIGhhcHBlbi4gVGhlIGNvbW1lbnQncyBpbnRlbnQgaXMgY2xlYXI6IGF2b2lkIHRoZSBtZW1vcnkgbGVhayBhbmQgbWFpbnRhaW4gY29uc2lzdGVuY3kgYmV0d2VlbiBgc2RhdGFgIGFuZCBgc25hcHNob3RfYWRkcmAuIEVzc2VudGlhbGx5IHRoaXMgcHJldmVudHMgYnVncyBpbiB0aGUgYXJlYS5cblxuU28sIHRoZSBpc3N1ZSBpcyAqZGVmaW5pdGVseSogYSBtZW1vcnkgbGVhayDigJMgdGhlIG9sZCBgc2RhdGFgIGlzIGxvc3Qgb24gdGhlIHdpbmQgd2hlbiB0aGUgbmV3IHBvaW50ZXIgaXMgYWxsb2NhdGVkLiBJZiB0aGUgYWxsb2NhdGlvbiBmYWlscyBvciB0aGUgZ3Vlc3Qgd3JpdGUgZmFpbHMsIHRoZSAqbmV3KiBgc2RhdGFgIGlzIGZyZWVkLCBidXQgdGhlIG9sZCBgc2RhdGFgIGlzIGFscmVhZHkgbGVha2VkLiBBbmQgdGhlIG9sZCBgc25hcHNob3RfYWRkcmAgaXMgc3RpbGwgdmFsaWQuICBMYXRlciwgaWYgdGhlIGNvZGUgY2hlY2tzIHRoZSBhZGRyZXNzIGFuZCBmaW5kcyB0aGF0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCBpcyBub3QgdGhlIGludmFsaWQgYWRkcmVzcywgdGhlIGNvZGUgbWlnaHQgYXNzdW1lIHRoZSBtZW1vcnkgaXMgc3RpbGwgdmFsaWQsIGJ1dCBpdCBpcyBgTlVMTGAuXG5cblRoZXNlIGFyZSBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBob3dldmVyLiAgV2UncmUgZGVhbGluZyB3aXRoIG1lbW9yeSBsZWFrcyBjYXVnaHQgYnkgS01FTUxFQUssIGFuZCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aGljaCBjYW4gYmUgY2F1Z2h0IGJ5IHRoZSBzdGFuZGFyZCBrZXJuZWwncyBvb3BzIG1lY2hhbmlzbS4gS0FTQU4gaXMgaW1wb3J0YW50IGZvciB1c2UtYWZ0ZXItZnJlZSwgaWYgYW55LiBLTVNBTiB3b3VsZCBiZSByZWxldmFudCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLCBidXQgKnRoYXQncyBub3Qgd2hhdCdzIGhhcHBlbmluZyBoZXJlKi4gVGhlIG5ldyBgc2RhdGFgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgc28gaXQncyB6ZXJvLWluaXRpYWxpemVkLiBaZXJvIGluaXRpYWxpemF0aW9uIHByZXZlbnRzIGlzc3VlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgcmVhZHMuXG5cblNvLCBsZXQncyBkb3VibGUtY2hlY2sgb3VyIHdvcmsgYW5kIHJlY29uZmlybSBLTVNBTidzIGlycmVsZXZhbmNlLiBUaGUgZml4IGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3k6IHRoZSBsZWFrIHdpbGwgYmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIHdoaWxlIHRoZSBpbmNvbnNpc3RlbnQgc3RhdGUgbWlnaHQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggd2lsbCBiZSBjYXVnaHQgYnkgYSBzdGFuZGFyZCBrZXJuZWwgb29wcy4gIFRoZXJlJ3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLCBubyBpbmZvcm1hdGlvbiBsZWFrLCBub3RoaW5nIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBgZmFsc2VgLlxuXG5TbywgaGVyZSBpcyBob3cgSSB3aWxsIGZvcm11bGF0ZSBteSByZWFzb25pbmcuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhlIGNvZGUgcHJldmlvdXNseSBvdmVyd3JpdHRlbiBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXcgYWxsb2NhdGlvbiB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGFuZCB0aGlzIGNhdXNlcyBhIG1lbW9yeSBsZWFrLiBJZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlscywgYGt2cG11LVx1MDAzZXNkYXRhYCBiZWNvbWVzIGBOVUxMYCwgYnV0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCByZXRhaW5zIGl0cyBvbGQgdmFsdWUsIGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgbGF0ZXIuIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0YWJsZSBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcyBkZXRlY3QgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG5ldyBgc2RhdGFgIGlzIHplcm8taW5pdGlhbGl6ZWQgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZC4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTgyLCJPdXRwdXRUb2tlbnMiOjI0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjQwOjA4Ljg3MTY0MDQyMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIGEgc3RhdGUgaW5jb25zaXN0ZW5jeSBpbiBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAuIFByZXZpb3VzbHksIHdoZW4gYSBuZXcgc25hcHNob3QgYXJlYSB3YXMgc2V0LCB0aGUgY29kZSBvdmVyd3JvdGUgYGt2cG11LVxcdTAwM2VzZGF0YWAgd2l0aCBhIG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHdpdGhvdXQgZnJlZWluZyB0aGUgb2xkIG9uZSwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBuZXcgYWxsb2NhdGlvbiBvciB0aGUgc3Vic2VxdWVudCBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxlZCwgYGt2cG11LVxcdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXFx1MDAzZXNuYXBzaG90X2FkZHJgIHJldGFpbmVkIGl0cyBvbGQgdmFsaWQgdmFsdWUuIFRoaXMgaW5jb25zaXN0ZW50IHN0YXRlIGNvdWxkIGxlYWQgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXFxuXFxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIGEgc3RhdGUgaW5jb25zaXN0ZW5jeSBpbiBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAuIFByZXZpb3VzbHksIHdoZW4gYSBuZXcgc25hcHNob3QgYXJlYSB3YXMgc2V0LCB0aGUgY29kZSBvdmVyd3JvdGUgYGt2cG11LVxcdTAwM2VzZGF0YWAgd2l0aCBhIG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHdpdGhvdXQgZnJlZWluZyB0aGUgb2xkIG9uZSwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBuZXcgYWxsb2NhdGlvbiBvciB0aGUgc3Vic2VxdWVudCBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxlZCwgYGt2cG11LVxcdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXFx1MDAzZXNuYXBzaG90X2FkZHJgIHJldGFpbmVkIGl0cyBvbGQgdmFsaWQgdmFsdWUuIFRoaXMgaW5jb25zaXN0ZW50IHN0YXRlIGNvdWxkIGxlYWQgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXFxuXFxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowcrp78[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 06:51:06 +0000 UTC FinishedAt: 2026-08-26 07:40:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "RISCV_PMU_SBI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "RISCV_PMU_SBI" ], "series_id": "2f05f93c-7149-4d06-8884-dbba50065dbf" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_vcpu_pmu_snapshot_set_shmem" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVVfU0JJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3kgaW4gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBQcmV2aW91c2x5LCB3aGVuIGEgbmV3IHNuYXBzaG90IGFyZWEgd2FzIHNldCwgdGhlIGNvZGUgb3Zlcndyb3RlIGBrdnBtdS1cdTAwM2VzZGF0YWAgd2l0aCBhIG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHdpdGhvdXQgZnJlZWluZyB0aGUgb2xkIG9uZSwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBuZXcgYWxsb2NhdGlvbiBvciB0aGUgc3Vic2VxdWVudCBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxlZCwgYGt2cG11LVx1MDAzZXNkYXRhYCB3b3VsZCBiZSBzZXQgdG8gYE5VTExgIHdoaWxlIGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCByZXRhaW5lZCBpdHMgb2xkIHZhbGlkIHZhbHVlLiBUaGlzIGluY29uc2lzdGVudCBzdGF0ZSBjb3VsZCBsZWFkIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxuXG5UaGVzZSBpc3N1ZXMgKG1lbW9yeSBsZWFrcyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcy9LQVNBTi4gVGhlIG5ldyBgc2RhdGFgIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgLCBlbnN1cmluZyBpdCBpcyBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBhbmQgaW5jb25zaXN0ZW5jeSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgc25hcHNob3Qgc2V0dXAgbG9naWMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBtYWtpbmcgU0JJIFBNVSBleHRlbnNpb24gY2FsbHMgdG8gdGhlIGh5cGVydmlzb3IsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM4ZTBiYWJjYWQ4ZjQ3NmU5NmZlNTYwNDg4MGZjM2ViZTc2MGRlZTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwNzozODo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggNzUyZjEwMTRkNjMzZS4uMTRmNzM0OTBmMTJjYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbkBAIC00NTQsNiAmIzQzOzQ1NCwxNCBAQCBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc1xuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXG4mIzQzO1x0ICogdGhlIG9sZCBzZGF0YSBhbmQgdG8ga2VlcCBzZGF0YS9zbmFwc2hvdF9hZGRyIGNvbnNpc3RlbnQgaWZcbiYjNDM7XHQgKiB0aGUgcmUtaW5zdGFsbCBmYWlscyBiZWxvdy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoa3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkciAhPSBJTlZBTElEX0dQQSlcbiYjNDM7XHRcdGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTtcbiYjNDM7XG4gXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWt2cG11LVx1MDAzZXNkYXRhKSB7XG4gXHRcdHNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1JJU0NWX1BNVV9TQkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29uc2lzdGVuY3kgaW4gdGhlIFJJU0MtViBLVk0gUE1VIHNuYXBzaG90IHNldHVwIGxvZ2ljLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgbWFraW5nIFNCSSBQTVUgZXh0ZW5zaW9uIGNhbGxzIHRvIHRoZSBoeXBlcnZpc29yLCB3aGljaCBjYW4gYmUgZnV6emVkIGluIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOGUwYmFiY2FkOGY0NzZlOTZmZTU2MDQ4ODBmYzNlYmU3NjBkZWU2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYwppbmRleCA3NTJmMTAxNGQ2MzNlLi4xNGY3MzQ5MGYxMmNiIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKQEAgLTQ1NCw2ICYjNDM7NDU0LDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzCiAJCX0KIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogQ2xlYXIgYW55IHByZXZpb3VzbHkgaW5zdGFsbGVkIHNuYXBzaG90IGFyZWEgdG8gYXZvaWQgbGVha2luZwomIzQzOwkgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZgomIzQzOwkgKiB0aGUgcmUtaW5zdGFsbCBmYWlscyBiZWxvdy4KJiM0MzsJICovCiYjNDM7CWlmIChrdnBtdS0mZ3Q7c25hcHNob3RfYWRkciAhPSBJTlZBTElEX0dQQSkKJiM0MzsJCWt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTsKJiM0MzsKIAlrdnBtdS0mZ3Q7c2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpOwogCWlmICgha3ZwbXUtJmd0O3NkYXRhKSB7CiAJCXNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgbWFraW5nIGEgY2hhbmdlIGluIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYSBjaGVjayB3aXRoaW4gdGhlIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhpcyBjb2RlIGlzIGFpbWVkIGF0IGVuc3VyaW5nIHRoZSBjb25zaXN0ZW5jeSBvZiBhIFBNVSBzbmFwc2hvdCBhcmVhIHdoZW4gaXQmIzM5O3MgYmVpbmcgc2V0LCBjbGVhcmluZyBhbnkgcHJlLWV4aXN0aW5nIHNuYXBzaG90IHRvIHByZXZlbnQgbGVha3MgYW5kIHBvdGVudGlhbCBpbmNvbnNpc3RlbmNpZXMgaWYgdGhlIG5ldyBpbnN0YWxsYXRpb24gZmFpbHMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AgYW5kIHNwZWNpZmljYWxseSwgdGhhdCBmdW5jdGlvbiwgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBTaW5jZSB0aGlzIGlzIFJJU0MtViBLVk0gUE1VIGNvZGUsIHRoZSBuZXh0IHF1ZXN0aW9uIHRoYXQgcG9wcyB1cCBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBldmVuIHJlbGV2YW50IGluIGEgcHJhY3RpY2FsIHNlbnNlIHdpdGggUUVNVS4gVGhhdCYjMzk7cyBhIHF1aWNrIHllcywgd2UgY2FuIGNlcnRhaW5seSB0ZXN0IFJJU0MtViBLVk0gd2l0aGluIFFFTVUgd2hlbiBydW5uaW5nIFJJU0MtViBndWVzdHMuCgpOb3csIGEgY3JpdGljYWwgYXNwZWN0IG9mIHNlY3VyaXR5IHRlc3RpbmcgaXMgZnV6emluZy4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgY292ZXJhZ2UgZm9yIFJJU0MtViBLVk0/IFRoYW5rZnVsbHksIHRoZSBhbnN3ZXIgaXMgeWVzLCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IGZ1enppbmcgUklTQy1WIHRhcmdldHMgdXNpbmcgS1ZNLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHBvc3NpYmxlIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgdGVzdGVkIGJ5IGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGZ1bmN0aW9uIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIHdoZXJlIHRoYXQgZnV6emluZyBtaWdodCBsYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYz00MTg9c3RhdGljIHZvaWQga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM6NDI3OmludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyOC1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03My1cdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6NzQ6XHRcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXHUwMDNlYTAsIGNwLVx1MDAzZWExLCBjcC1cdTAwM2VhMiwgcmV0ZGF0YSk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03NS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNLVJJU0NWIFBNVSBTbmFwc2hvdCBGdW5jdGlvbioqCgpPa2F5LCBzbyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgY2FsbGVkIGZyb20gYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhhdCBTQkkgUE1VIGV4dGVuc2lvbiBoYW5kbGVyIGluIEtWTSDigJMgc28sIGEgZ3Vlc3QgY2FuIGFic29sdXRlbHkgdHJpZ2dlciB0aGlzIGJ5IG1ha2luZyB0aG9zZSBTQkkgY2FsbHMuIEFscmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBkZWZpbml0ZSBlbnRyeSBwb2ludC4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBvciBjb25kaXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yIHRoaXMgZnVuY3Rpb24gdG8gZXhlY3V0ZSBhcyBpbnRlbmRlZC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlcXVpcmVkIHNldHVwLiBXaGF0IGNvbmZpZ3VyYXRpb25zIGRvIHdlIG5lZWQgdG8gaGF2ZSBpbiBwbGFjZSBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKlBNVSBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQgKFBNVSkgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBSSVNDLVYgS1ZNIGVudmlyb25tZW50LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5hdmlnYXRlIHRvIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gVGhpcyBzaG91bGQgY29udGFpbiBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIHdoZW4gY29tcGlsaW5nIHRoZSBrZXJuZWwgd2l0aCBLVk0gc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuIEkmIzM5O20gaG9waW5nIHRvIGZpbmQgZXhwbGljaXQgUE1VIHNldHRpbmdzIHRoZXJlLCB3aGljaCB3b3VsZCBndWlkZSBtZSB0byB1bmRlcnN0YW5kIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIFBNVSBmZWF0dXJlcyBhcmUgY29udHJvbGxlZCBhdCBidWlsZCB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UE1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGl2aW5nIGludG8gdGhlIFJJU0MtViBLVk0gTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHVuZGVyc3RhbmQgaG93IHRoaXMgdGhpbmcgaXMgYnVpbHQuIE15IGZpcnN0IG1vdmUgd2hlbiB0YWNrbGluZyBhIGtlcm5lbCBtb2R1bGUsIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBhIHZpcnR1YWxpc2F0aW9uIGNvbXBvbmVudCBsaWtlIEtWTSwgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgbWFnaWMgaGFwcGVuczogdGhlIGNvbXBpbGF0aW9uIGZsYWdzLCBzb3VyY2UgZmlsZSBpbmNsdXNpb24sIGFuZCBsaW5raW5nIGFyZSBvcmNoZXN0cmF0ZWQgdGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBwcm9jZXNzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGt2bWAgbW9kdWxlIHNwZWNpZmljYWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgUklTQy1WIGtlcm5lbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzLCBhbmQgd2hlcmUgdGhlIGNvcmUgcGFydHMgYXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGlzIGBhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZWAgaG9sZHMuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBkb2VzbiYjMzk7dCBpbnZvbHZlIHRvbyBtdWNoIG1hY3JvLWJhc2VkIG9iZnVzY2F0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjcHVfcG11JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9Mjg9a3ZtLXkgJiM0Mzs9IHZjcHVfb25lcmVnLm9cbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI5Omt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSAmIzQzOz0gdmNwdV9wbXUub1xuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzAta3ZtLXkgJiM0Mzs9IHZjcHVfc2JpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2NQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzcGVjaWFsaXN0IGluIHRoaXMgZG9tYWluOgoKKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtJiMzOTtzIHRlbGxpbmcgbWUgd2UgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgLiBUaGF0JiMzOTtzIGEga2V5IGluZGljYXRvci4gTXkgZmlyc3QgdGhvdWdodCBpczogJiMzNDt3aGVyZSBpcyB0aGlzIGRlZmluZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiYjMzQ7IEkmIzM5O20gbWVudGFsbHkgdHJhY2luZyBiYWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtub3dpbmcgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjbHVlcyBhYm91dCB3aGF0JiMzOTtzIGVuYWJsZWQsIHdoYXQmIzM5O3MgZGlzYWJsZWQsIGFuZCBpdHMgb3ZlcmFsbCBwbGFjZSBpbiB0aGUgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHJvdXRpbmU7IGl0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmN5LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdHJhY2UgaXQgZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1BNVV9TQkkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wZXJmL0tjb25maWc9ODg9Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcbi0tXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05Ny1cbmRyaXZlcnMvcGVyZi9LY29uZmlnOjk4OmNvbmZpZyBSSVNDVl9QTVVfU0JJXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05OS1cdGRlcGVuZHMgb24gUklTQ1ZfUE1VIFx1MDAyNlx1MDAyNiBSSVNDVl9TQklcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gTXVzaW5ncyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBmb3IgdGhpcyBSSVNDLVYgS1ZNIGZ1enppbmcgc2V0dXAsIHdlIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgIGFuZCBgQ09ORklHX0tWTWAuIGBDT05GSUdfS1ZNYCBpcyBwcmV0dHkgbXVjaCBhIGdpdmVuIGZvciBhbnkgS1ZNLWJhc2VkIGZ1enppbmcgc2NlbmFyaW8sIHNvIHRoYXQgb25lJiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IGBDT05GSUdfUklTQ1ZfUE1VX1NCSWAg4oCTIHRoYXQmIzM5O3MgYSBnb29kIGluY2x1c2lvbjsgaXQgd2lsbCBhbGxvdyB1cyB0byBsZXZlcmFnZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHVuaXRzLCBhbmQgdGhhdCBjYW4gYmUgcmVhbGx5IHZhbHVhYmxlLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBqdXN0IHRoZXNlIHR3bywgSSBzaG91bGQgY2hlY2sgd2hldGhlciB0aGVyZSBtaWdodCBiZSBhbnkgKm90aGVyKiByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBiZW5lZmljaWFsIHRvIGluY2x1ZGUuIEdvdHRhIGJlIHRob3JvdWdoLCB5b3Uga25vdz8gTGV0JiMzOTtzIHRha2UgYSBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUklTQ1ZfUE1VJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGVyZi9LY29uZmlnPTc0PWNvbmZpZyBBUk1fWFNDQUxFX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTc3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6Nzg6Y29uZmlnIFJJU0NWX1BNVVxuZHJpdmVycy9wZXJmL0tjb25maWctNzktXHRkZXBlbmRzIG9uIFJJU0NWXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctODctXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo4ODpjb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxuZHJpdmVycy9wZXJmL0tjb25maWctODktXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk3LVxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTk5LVx0ZGVwZW5kcyBvbiBSSVNDVl9QTVUgXHUwMDI2XHUwMDI2IFJJU0NWX1NCSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzg4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKk15IEFuYWx5c2lzIG9mIEtWTSBhbmQgUklTQy1WIFBNVSBJbnRlZ3JhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYEtWTWAgYW5kIGBSSVNDVl9QTVVfU0JJYC4gVGhvc2UgYXJlIG15IHN0YXJ0aW5nIHBvaW50cy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBLVk0gYW5kIFJJU0MtViBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBhcmU6IGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBhbmQgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhvc2UgbmFtZXMgdGVsbCBtZSBhIGxvdC4gT25lIHNlZW1zIHRvIGRlYWwgd2l0aCB0YWtpbmcgYSBzbmFwc2hvdCBvZiB0aGUgUE1VIHN0YXRlLCBhbmQgdGhlIHNoYXJlZCBtZW1vcnkgaW5kaWNhdGVzIGludGVyLVZNIGNvbW11bmljYXRpb24gb3IgYWNjZXNzLiBUaGVuIHRoZXJlJiMzOTtzIGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAsIHRoYXQgc291bmRzIGxpa2UgdGhlIGNvcmUgU0JJIChTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UpIGV4dGVuc2lvbiBoYW5kbGVyIGZvciBQTVUgY2FsbHMuIEludGVyZXN0aW5nLiBXYWl0IGEgbWludXRlLi4uIGlzIGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAgYWN0dWFsbHkgc3RhdGljPyBUaGF0JiMzOTtzIG5vdCBpZGVhbC4gSXQgY291bGQgbWVhbiBsaW1pdGF0aW9ucyBvbiBkeW5hbWljIHJlZ2lzdHJhdGlvbiBvciBleHRlbnNpYmlsaXR5IG9mIFBNVSBmdW5jdGlvbnMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIFRoYXQgY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgb24gaG93IHdlbGwgdGhpcyBpbnRlZ3JhdGVzIHdpdGggb3RoZXIgUE1VIGZlYXR1cmVzIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zYmlfZXh0X3BtdV9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTE1LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6MTY6c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy0xNy1cdFx0XHRcdCAgIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jPTkzPWNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9wbXUgPSB7XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTUtXHQuZXh0aWRfZW5kID0gU0JJX0VYVF9QTVUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYzo5NjpcdC5oYW5kbGVyID0ga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy05Ny1cdC5wcm9iZSA9IGt2bV9zYmlfZXh0X3BtdV9wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6CgoqKlBNVSBIYW5kbGVycyBhbmQgU2hhcmVkIE1lbW9yeSBpbiBLVk0tUklTQ1YqKgoKUmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIEtWTS1SSVNDViBpbXBsZW1lbnRhdGlvbiBoZXJlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHdlJiMzOTtyZSBoYW5kbGluZyBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXRzLCBvciBQTVVzLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgZm9yIHNjb3BpbmcgYW5kIHByZXZlbnRpbmcgYWNjaWRlbnRhbCBleHRlcm5hbCBsaW5rYWdlLiBJdCBzdWdnZXN0cyBhIHRpZ2h0bHkgY29udHJvbGxlZCBmdW5jdGlvbiwgbGlrZWx5IHNwZWNpZmljIHRvIHRoZSBtb2R1bGUgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCBhbmQgbm90IG1lYW50IGZvciBvdXRzaWRlIGFjY2Vzcywgd2hpY2ggaXMgYSBjb21tb24gYW5kIHVzdWFsbHkgYmVuZWZpY2lhbCBwcmFjdGljZS4KCk5vdywgb24gdGhlIG90aGVyIGhhbmQsIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBpcyAqbm90KiBgc3RhdGljYC4gVGhpcyBoYXMgc29tZSBpbXBvcnRhbnQgaW1wbGljYXRpb25zLiBJdCYjMzk7cyBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgcGFydCBvZiB0aGUgQVBJLCBvciBhdCBsZWFzdCBwb3RlbnRpYWxseSBjYWxsYWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBLVk0gY29kZWJhc2UuIEl0IG1pZ2h0IGJlIHVzZWQgdG8gY29uZmlndXJlIG9yIG1hbmFnZSB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24gZGVkaWNhdGVkIHRvIHRoZSBQTVUgc25hcHNob3QgZGF0YS4gSXQgYmVpbmcgbm9uLXN0YXRpYyBvcGVucyBpdCB1cCBmb3IgYnJvYWRlciB1c2Ugd2l0aGluIHRoZSBsYXJnZXIgS1ZNLVJJU0NWIGFyY2hpdGVjdHVyZS4gSSYjMzk7ZCBiZSBsb29raW5nIGNsb3NlbHkgYXQgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZCB0byB1bmRlcnN0YW5kIGl0cyBzcGVjaWZpYyByb2xlIGluIHRoZSBQTVUgZGF0YSBleGNoYW5nZSBwcm9jZXNzLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGluZnJhc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDE4PXN0YXRpYyB2b2lkIGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQyNzppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjgtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM9MTY9c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzMtXHRjYXNlIFNCSV9FWFRfUE1VX1NOQVBTSE9UX1NFVF9TSE1FTTpcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0Olx0XHRyZXQgPSBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHZjcHUsIGNwLVx1MDAzZWEwLCBjcC1cdTAwM2VhMSwgY3AtXHUwMDNlYTIsIHJldGRhdGEpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjI3CgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gUklTQy1WIFBNVSBTbmFwc2hvdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGFzIHRoZSBrZXkgZnVuY3Rpb24gdG8gcmVhbGx5IHVuZGVyc3RhbmQgaGVyZS4gSXQgc2VlbXMgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgcmVzb2x2aW5nIGEgbWVtb3J5IGxlYWsgb3IsIHBvdGVudGlhbGx5IG1vcmUgY29uY2VybmluZywgc29tZSBraW5kIG9mIGluY29uc2lzdGVuY3kgaW4gaG93IHRoZSBzbmFwc2hvdCBhcmVhIGZvciB0aGUgUE1VIGlzIGJlaW5nIHNldCB1cC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdGhlIFNCSSBQTVUgZXh0ZW5zaW9uIHdpdGhpbiBLVk0sIHNvIGl0JiMzOTtzIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBjYXBhYmlsaXRpZXMuIEdpdmVuIHRoZSBjcml0aWNhbGl0eSBvZiB0aGUgU0JJIFBNVSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gc2NydXRpbml6ZSBmdXJ0aGVyIGZvciBhbnkgbHVya2luZyBpc3N1ZXMsIGFuZCBJIGFtIGdvaW5nIHRvIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgdHJpZ2dlciB0aGlzIGFyZSBgS1ZNYCBhbmQgYFJJU0NWX1BNVV9TQklgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBTbywgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0sIGFuZCBteSBpbnZlc3RpZ2F0aW9uLCB3aWxsIHJldm9sdmUgYXJvdW5kIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gSSYjMzk7bGwgZGVsdmUgaW50byB0aGUgY29kZSBwYXRoIGhlcmUsIHVuZGVyc3RhbmQgdGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGxlYWsvaW5jb25zaXN0ZW5jeSwgYW5kIHZlcmlmeSB0aGUgcGF0Y2gmIzM5O3MgZWZmZWN0aXZlbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtSSVNDVl9QTVVfU0JJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7UklTQ1ZfUE1VX1NCSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBhbmQgaW5jb25zaXN0ZW5jeSBpbiB0aGUgUklTQy1WIEtWTSBQTVUgc25hcHNob3Qgc2V0dXAgbG9naWMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgYSBndWVzdCBtYWtpbmcgU0JJIFBNVSBleHRlbnNpb24gY2FsbHMgdG8gdGhlIGh5cGVydmlzb3IsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cblxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4ZTBiYWJjYWQ4ZjQ3NmU5NmZlNTYwNDg4MGZjM2ViZTc2MGRlZTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwNzozODo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jCmluZGV4IDc1MmYxMDE0ZDYzM2UuLjE0ZjczNDkwZjEyY2IgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYwpAQCAtNDU0LDYgJiM0Mzs0NTQsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHMKIAkJfQogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nCiYjNDM7CSAqIHRoZSBvbGQgc2RhdGEgYW5kIHRvIGtlZXAgc2RhdGEvc25hcHNob3RfYWRkciBjb25zaXN0ZW50IGlmCiYjNDM7CSAqIHRoZSByZS1pbnN0YWxsIGZhaWxzIGJlbG93LgomIzQzOwkgKi8KJiM0MzsJaWYgKGt2cG11LSZndDtzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKQomIzQzOwkJa3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHZjcHUpOwomIzQzOwogCWt2cG11LSZndDtzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7CiAJaWYgKCFrdnBtdS0mZ3Q7c2RhdGEpIHsKIAkJc2JpcmV0ID0gU0JJX0VSUl9GQUlMVVJFOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0vUklTQy1WIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIEl0IHNlZW1zIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2FsbCB0byBga3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHZjcHUpYCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIGlmIGBrdnBtdS0mZ3Q7c25hcHNob3RfYWRkcmAgaXNuJiMzOTt0IGBJTlZBTElEX0dQQWAsIHRoZXkmIzM5O3JlIGNsZWFyaW5nIG91dCBhbnkgcHJldmlvdXMgc25hcHNob3QgZGF0YSBiZWZvcmUgYWxsb2NhdGluZyB0aGUgbmV3IGBrdnBtdS0mZ3Q7c2RhdGFgIHdpdGggYGt6YWxsb2NgLiBUaGUgY29tbWVudCBtZW50aW9ucyBzb21ldGhpbmcgYWJvdXQgYXZvaWRpbmcgbGVha3Mgb2Ygb2xkIGRhdGEgYW5kIG1haW50YWluaW5nIGNvbnNpc3RlbmN5IGJldHdlZW4gYHNkYXRhYCBhbmQgYHNuYXBzaG90X2FkZHJgIGluIGNhc2UgdGhlIHJlLWluc3RhbGxhdGlvbiBmYWlscy4gU21hcnQgbW92ZSwgc2VlbXMgbGlrZSBhIGdvb2QgcHJlY2F1dGlvbi4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBzbyBJJiMzOTtsbCBwcm9iYWJseSB6b29tIGluIG9uIHdoZXJlIHRoaXMgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGlzIGNhbGxlZCBmcm9tLCB0aGF0IHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dC4gSSYjMzk7bGwgdXNlIHRoYXQgYGRlZmF1bHRfYXBpOnJlYWQtZmlsZWAgdG9vbCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSB3aGF0IEkgbmVlZCB0byBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ0MDpcdFxuIDQ0MTpcdFx0aWYgKHNhZGRyX2xvdyA9PSBTQklfU0hNRU1fRElTQUJMRSBcdTAwMjZcdTAwMjYgc2FkZHJfaGlnaCA9PSBTQklfU0hNRU1fRElTQUJMRSkge1xuIDQ0MjpcdFx0XHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XG4gNDQzOlx0XHRcdHJldHVybiAwO1xuIDQ0NDpcdFx0fVxuIDQ0NTpcdFxuIDQ0NjpcdFx0c2FkZHIgPSBzYWRkcl9sb3c7XG4gNDQ3Olx0XG4gNDQ4Olx0XHRpZiAoc2FkZHJfaGlnaCAhPSAwKSB7XG4gNDQ5Olx0XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR18zMkJJVCkpIHtcbiA0NTA6XHRcdFx0XHRzYWRkciB8PSAoKGdwYV90KXNhZGRyX2hpZ2ggXHUwMDNjXHUwMDNjIDMyKTtcbiA0NTE6XHRcdFx0fSBlbHNlIHtcbiA0NTI6XHRcdFx0XHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcbiA0NTM6XHRcdFx0XHRnb3RvIG91dDtcbiA0NTQ6XHRcdFx0fVxuIDQ1NTpcdFx0fVxuIDQ1NjpcdFxuIDQ1NzpcdFx0LypcbiA0NTg6XHRcdCAqIENsZWFyIGFueSBwcmV2aW91c2x5IGluc3RhbGxlZCBzbmFwc2hvdCBhcmVhIHRvIGF2b2lkIGxlYWtpbmdcbiA0NTk6XHRcdCAqIHRoZSBvbGQgc2RhdGEgYW5kIHRvIGtlZXAgc2RhdGEvc25hcHNob3RfYWRkciBjb25zaXN0ZW50IGlmXG4gNDYwOlx0XHQgKiB0aGUgcmUtaW5zdGFsbCBmYWlscyBiZWxvdy5cbiA0NjE6XHRcdCAqL1xuIDQ2MjpcdFx0aWYgKGt2cG11LVx1MDAzZXNuYXBzaG90X2FkZHIgIT0gSU5WQUxJRF9HUEEpXG4gNDYzOlx0XHRcdGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTtcbiA0NjQ6XHRcbiA0NjU6XHRcdGt2cG11LVx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTtcbiA0NjY6XHRcdGlmICgha3ZwbXUtXHUwMDNlc2RhdGEpIHtcbiA0Njc6XHRcdFx0c2JpcmV0ID0gU0JJX0VSUl9GQUlMVVJFO1xuIDQ2ODpcdFx0XHRnb3RvIG91dDtcbiA0Njk6XHRcdH1cbiA0NzA6XHRcbiA0NzE6XHRcdC8qIE5vIG5lZWQgdG8gY2hlY2sgd3JpdGFibGUgc2xvdCBleHBsaWNpdGx5IGFzIGt2bV92Y3B1X3dyaXRlX2d1ZXN0IGRvZXMgaXQgaW50ZXJuYWxseSAqL1xuIDQ3MjpcdFx0aWYgKGt2bV92Y3B1X3dyaXRlX2d1ZXN0KHZjcHUsIHNhZGRyLCBrdnBtdS1cdTAwM2VzZGF0YSwgc25hcHNob3RfYXJlYV9zaXplKSkge1xuIDQ3MzpcdFx0XHRrZnJlZShrdnBtdS1cdTAwM2VzZGF0YSk7XG4gNDc0Olx0XHRcdGt2cG11LVx1MDAzZXNkYXRhID0gTlVMTDtcbiA0NzU6XHRcdFx0c2JpcmV0ID0gU0JJX0VSUl9JTlZBTElEX0FERFJFU1M7XG4gNDc2Olx0XHRcdGdvdG8gb3V0O1xuIDQ3NzpcdFx0fVxuIDQ3ODpcdFxuIDQ3OTpcdFx0a3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkciA9IHNhZGRyO1xuIDQ4MDpcdFxuIDQ4MTpcdG91dDpcbiA0ODI6XHRcdHJldGRhdGEtXHUwMDNlZXJyX3ZhbCA9IHNiaXJldDtcbiA0ODM6XHRcbiA0ODQ6XHRcdHJldHVybiAwO1xuIDQ4NTpcdH1cbiA0ODY6XHRcbiA0ODc6XHRpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2V2ZW50X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcbiA0ODg6XHRcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIG51bV9ldmVudHMsXG4gNDg5Olx0XHRcdFx0XHQgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzA1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBMZWFrIGFuZCBDb25zaXN0ZW5jeSBJc3N1ZSBpbiBLVk0gUE1VIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSBpdCB0YWNrbGVzIHR3byBjb3JlIHByb2JsZW1zOiBhIG1lbW9yeSBsZWFrLCB3aGljaCBzZWVtcyB0byBzdGVtIGZyb20gdGhlIG9sZCBgc2RhdGFgIG5vdCBiZWluZyBoYW5kbGVkIGNvcnJlY3RseSwgYW5kIGEgY29uc2lzdGVuY3kgaXNzdWUuIFRoZSBpbmNvbnNpc3RlbmN5IGFyaXNlcyB3aGVuIGEgcmUtaW5zdGFsbGF0aW9uIGZhaWxzLCBhbmQgdGhlIGBzZGF0YWAgYW5kIGBzbmFwc2hvdF9hZGRyYCB2YWx1ZXMgZGl2ZXJnZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgc291cmNlIG9mIGhhcmQtdG8tZGVidWcgZXJyb3JzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpZiBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxzLCBga3ZwbXUtJmd0O3NkYXRhYCBnZXRzIGZyZWVkIGFuZCBzZXQgdG8gYE5VTExgLCB3aGljaCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uIEhvd2V2ZXIsIHRoZSBwcm9ibGVtIGlzIHRoYXQgYGt2cG11LSZndDtzbmFwc2hvdF9hZGRyYCAqaXNuJiMzOTt0KiB1cGRhdGVkLCBtZWFuaW5nIGl0JiMzOTtzIGxlZnQgd2l0aCBpdHMgb2xkLCBpbnZhbGlkIHZhbHVlLiBUaGlzIGRpc2Nvbm5lY3QgYmV0d2VlbiB0aGUgZGF0YSBhbmQgdGhlIHBvaW50ZXIgdGhhdCYjMzk7cyBzdXBwb3NlZCB0byBkZXNjcmliZSB0aGF0IGRhdGEgaXMgcHJlY2lzZWx5IHdoYXQgY2F1c2VzIHRoZSBpbmNvbnNpc3RlbmN5LgoKV2FpdCBhIHNlY29uZC4uLkkmIzM5O20gYWxzbyBzZWVpbmcgYGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KWAgYmVpbmcgY2FsbGVkIGluIHRoaXMgY29udGV4dC4gSXQgaXMgKmhpZ2hseSogbGlrZWx5IHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB0aGUgb25lIHRoYXQmIzM5O3Mgc3VwcG9zZWQgdG8gY2xlYXIgYGt2cG11LSZndDtzZGF0YWAgYW5kIHNldCBga3ZwbXUtJmd0O3NuYXBzaG90X2FkZHIgPSBJTlZBTElEX0dQQWAuIEdpdmVuIHRoZSB0eXBpY2FsIEtWTSBjbGVhbnVwIHN0cnVjdHVyZSwgdGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24uIExldCBtZSBpbW1lZGlhdGVseSBjaGVjayB0aGUgY29kZSBmb3IgYGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYWAgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjA6XHRcdHN0cnVjdCBrdm1fcG11ICprdnBtdSA9IHZjcHVfdG9fcG11KHZjcHUpO1xuIDQyMTpcdFxuIDQyMjpcdFx0a2ZyZWUoa3ZwbXUtXHUwMDNlc2RhdGEpO1xuIDQyMzpcdFx0a3ZwbXUtXHUwMDNlc2RhdGEgPSBOVUxMO1xuIDQyNDpcdFx0a3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkciA9IElOVkFMSURfR1BBO1xuIDQyNTpcdH1cbiA0MjY6XHRcbiA0Mjc6XHRpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxuIDQyODpcdFx0XHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBzYWRkcl9oaWdoLCB1bnNpZ25lZCBsb25nIGZsYWdzLFxuIDQyOTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXG4gNDMwOlx0e1xuIDQzMTpcdFx0c3RydWN0IGt2bV9wbXUgKmt2cG11ID0gdmNwdV90b19wbXUodmNwdSk7XG4gNDMyOlx0XHRpbnQgc25hcHNob3RfYXJlYV9zaXplID0gc2l6ZW9mKHN0cnVjdCByaXNjdl9wbXVfc25hcHNob3RfZGF0YSk7XG4gNDMzOlx0XHRpbnQgc2JpcmV0ID0gMDtcbiA0MzQ6XHRcdGdwYV90IHNhZGRyO1xuIDQzNTpcdFxuIDQzNjpcdFx0aWYgKCFrdnBtdSB8fCBmbGFncykge1xuIDQzNzpcdFx0XHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07XG4gNDM4Olx0XHRcdGdvdG8gb3V0O1xuIDQzOTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTgyCgkJCQkJCQlvdXRwdXQ6IDI0NwoJCQkJCQkJdGhvdWdodHM6IDg0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBJcnJlbGV2YW5jZTogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgZnVuY3Rpb24sIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWFgLCBkb2VzIHdoYXQgaXQgc2F5czogaXQgZnJlZXMgdGhlIGBzZGF0YWAgYW5kIHJlc2V0cyB0aGUgYHNuYXBzaG90X2FkZHJgLiBDcnVjaWFsbHksIGlmIHRoaXMgaXNuJiMzOTt0IGNhbGxlZCBwcmlvciwgYW5kIHdlIGp1c3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgdGhlIGV4aXN0aW5nIGBrdnBtdS0mZ3Q7c2RhdGFgIGlzIHNpbXBseSBvdmVyd3JpdHRlbiwgbGVhdmluZyB0aGUgb2xkIGRhdGEgc3RyYW5kZWQg4oCTIGEgY2xhc3NpYyBtZW1vcnkgbGVhay4KCk5vdywgY29uc2lkZXIgdGhlIGZhaWx1cmUgc2NlbmFyaW9zLiBJZiBga3phbGxvY2Agb3IgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlscywgYGt2cG11LSZndDtzZGF0YWAgYmVjb21lcyBgTlVMTGAsIGJ1dCBga3ZwbXUtJmd0O3NuYXBzaG90X2FkZHJgIHN0aWxsIGhvbGRzIGFuIG9sZCwgdmFsaWQgYWRkcmVzcy4gVGhhdCYjMzk7cyBhIHRleHRib29rIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3YWl0aW5nIHRvIGhhcHBlbi4gVGhlIGNvbW1lbnQmIzM5O3MgaW50ZW50IGlzIGNsZWFyOiBhdm9pZCB0aGUgbWVtb3J5IGxlYWsgYW5kIG1haW50YWluIGNvbnNpc3RlbmN5IGJldHdlZW4gYHNkYXRhYCBhbmQgYHNuYXBzaG90X2FkZHJgLiBFc3NlbnRpYWxseSB0aGlzIHByZXZlbnRzIGJ1Z3MgaW4gdGhlIGFyZWEuCgpTbywgdGhlIGlzc3VlIGlzICpkZWZpbml0ZWx5KiBhIG1lbW9yeSBsZWFrIOKAkyB0aGUgb2xkIGBzZGF0YWAgaXMgbG9zdCBvbiB0aGUgd2luZCB3aGVuIHRoZSBuZXcgcG9pbnRlciBpcyBhbGxvY2F0ZWQuIElmIHRoZSBhbGxvY2F0aW9uIGZhaWxzIG9yIHRoZSBndWVzdCB3cml0ZSBmYWlscywgdGhlICpuZXcqIGBzZGF0YWAgaXMgZnJlZWQsIGJ1dCB0aGUgb2xkIGBzZGF0YWAgaXMgYWxyZWFkeSBsZWFrZWQuIEFuZCB0aGUgb2xkIGBzbmFwc2hvdF9hZGRyYCBpcyBzdGlsbCB2YWxpZC4gIExhdGVyLCBpZiB0aGUgY29kZSBjaGVja3MgdGhlIGFkZHJlc3MgYW5kIGZpbmRzIHRoYXQgYGt2cG11LSZndDtzbmFwc2hvdF9hZGRyYCBpcyBub3QgdGhlIGludmFsaWQgYWRkcmVzcywgdGhlIGNvZGUgbWlnaHQgYXNzdW1lIHRoZSBtZW1vcnkgaXMgc3RpbGwgdmFsaWQsIGJ1dCBpdCBpcyBgTlVMTGAuCgpUaGVzZSBhcmUgbm90IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcywgaG93ZXZlci4gIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IGxlYWtzIGNhdWdodCBieSBLTUVNTEVBSywgYW5kIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdoaWNoIGNhbiBiZSBjYXVnaHQgYnkgdGhlIHN0YW5kYXJkIGtlcm5lbCYjMzk7cyBvb3BzIG1lY2hhbmlzbS4gS0FTQU4gaXMgaW1wb3J0YW50IGZvciB1c2UtYWZ0ZXItZnJlZSwgaWYgYW55LiBLTVNBTiB3b3VsZCBiZSByZWxldmFudCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLCBidXQgKnRoYXQmIzM5O3Mgbm90IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmUqLiBUaGUgbmV3IGBzZGF0YWAgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NgLCBzbyBpdCYjMzk7cyB6ZXJvLWluaXRpYWxpemVkLiBaZXJvIGluaXRpYWxpemF0aW9uIHByZXZlbnRzIGlzc3VlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgcmVhZHMuCgpTbywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBvdXIgd29yayBhbmQgcmVjb25maXJtIEtNU0FOJiMzOTtzIGlycmVsZXZhbmNlLiBUaGUgZml4IGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3k6IHRoZSBsZWFrIHdpbGwgYmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIHdoaWxlIHRoZSBpbmNvbnNpc3RlbnQgc3RhdGUgbWlnaHQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggd2lsbCBiZSBjYXVnaHQgYnkgYSBzdGFuZGFyZCBrZXJuZWwgb29wcy4gIFRoZXJlJiMzOTtzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSwgbm8gaW5mb3JtYXRpb24gbGVhaywgbm90aGluZyB0aGF0IEtNU0FOIHdvdWxkIGRldGVjdC4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuCgpTbywgaGVyZSBpcyBob3cgSSB3aWxsIGZvcm11bGF0ZSBteSByZWFzb25pbmcuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhlIGNvZGUgcHJldmlvdXNseSBvdmVyd3JpdHRlbiBga3ZwbXUtJmd0O3NkYXRhYCB3aXRoIGEgbmV3IGFsbG9jYXRpb24gd2l0aG91dCBmcmVlaW5nIHRoZSBvbGQgb25lLCBhbmQgdGhpcyBjYXVzZXMgYSBtZW1vcnkgbGVhay4gSWYgdGhlIG5ldyBhbGxvY2F0aW9uIG9yIHRoZSBzdWJzZXF1ZW50IGBrdm1fdmNwdV93cml0ZV9ndWVzdGAgZmFpbHMsIGBrdnBtdS0mZ3Q7c2RhdGFgIGJlY29tZXMgYE5VTExgLCBidXQgYGt2cG11LSZndDtzbmFwc2hvdF9hZGRyYCByZXRhaW5zIGl0cyBvbGQgdmFsdWUsIGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgbGF0ZXIuIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0YWJsZSBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcyBkZXRlY3QgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG5ldyBgc2RhdGFgIGlzIHplcm8taW5pdGlhbGl6ZWQgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZC4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cblxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cblxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQzLjIyNjIxMzk3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NjQ1NDY4ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3kgaW4gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBQcmV2aW91c2x5LCB3aGVuIGEgbmV3IHNuYXBzaG90IGFyZWEgd2FzIHNldCwgdGhlIGNvZGUgb3Zlcndyb3RlIGBrdnBtdS1cXHUwMDNlc2RhdGFgIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay4gQWRkaXRpb25hbGx5LCBpZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlsZWQsIGBrdnBtdS1cXHUwMDNlc2RhdGFgIHdvdWxkIGJlIHNldCB0byBgTlVMTGAgd2hpbGUgYGt2cG11LVxcdTAwM2VzbmFwc2hvdF9hZGRyYCByZXRhaW5lZCBpdHMgb2xkIHZhbGlkIHZhbHVlLiBUaGlzIGluY29uc2lzdGVudCBzdGF0ZSBjb3VsZCBsZWFkIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxcblxcblRoZXNlIGlzc3VlcyAobWVtb3J5IGxlYWtzIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtNRU1MRUFLIGFuZCBzdGFuZGFyZCBrZXJuZWwgb29wc2VzL0tBU0FOLiBUaGUgbmV3IGBzZGF0YWAgYnVmZmVyIGlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AsIGVuc3VyaW5nIGl0IGlzIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29uc2lzdGVuY3kgaW4gdGhlIFJJU0MtViBLVk0gUE1VIHNuYXBzaG90IHNldHVwIGxvZ2ljLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGEgZ3Vlc3QgbWFraW5nIFNCSSBQTVUgZXh0ZW5zaW9uIGNhbGxzIHRvIHRoZSBoeXBlcnZpc29yLCB3aGljaCBjYW4gYmUgZnV6emVkIGluIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQzLjIyNjIyMTg2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTY1MzU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4ZTBiYWJjYWQ4ZjQ3NmU5NmZlNTYwNDg4MGZjM2ViZTc2MGRlZTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG5pbmRleCA3NTJmMTAxNGQ2MzNlLi4xNGY3MzQ5MGYxMmNiIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXFxuQEAgLTQ1NCw2ICs0NTQsMTQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXFxuK1xcdCAqIHRoZSBvbGQgc2RhdGEgYW5kIHRvIGtlZXAgc2RhdGEvc25hcHNob3RfYWRkciBjb25zaXN0ZW50IGlmXFxuK1xcdCAqIHRoZSByZS1pbnN0YWxsIGZhaWxzIGJlbG93LlxcbitcXHQgKi9cXG4rXFx0aWYgKGt2cG11LVxcdTAwM2VzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKVxcbitcXHRcXHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XFxuK1xcbiBcXHRrdnBtdS1cXHUwMDNlc2RhdGEgPSBremFsbG9jKHNuYXBzaG90X2FyZWFfc2l6ZSwgR0ZQX0FUT01JQyB8IF9fR0ZQX0FDQ09VTlQpO1xcbiBcXHRpZiAoIWt2cG11LVxcdTAwM2VzZGF0YSkge1xcbiBcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQ0Ljg5MjYxMTY3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ4NzExMjkyMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGUwYmFiY2FkOGY0NzZlOTZmZTU2MDQ4ODBmYzNlYmU3NjBkZWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggNzUyZjEwMTRkNjMzZS4uMTRmNzM0OTBmMTJjYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbkBAIC00NTQsNiArNDU0LDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzXG4gXHRcdH1cbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXG4rXHQgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZlxuK1x0ICogdGhlIHJlLWluc3RhbGwgZmFpbHMgYmVsb3cuXG4rXHQgKi9cbitcdGlmIChrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKVxuK1x0XHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XG4rXG4gXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWt2cG11LVx1MDAzZXNkYXRhKSB7XG4gXHRcdHNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjQ0Ljg5MjYxMzA0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzAyOTAwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIG1ha2luZyBhIGNoYW5nZSBpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYSBjaGVjayB3aXRoaW4gdGhlIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhpcyBjb2RlIGlzIGFpbWVkIGF0IGVuc3VyaW5nIHRoZSBjb25zaXN0ZW5jeSBvZiBhIFBNVSBzbmFwc2hvdCBhcmVhIHdoZW4gaXQncyBiZWluZyBzZXQsIGNsZWFyaW5nIGFueSBwcmUtZXhpc3Rpbmcgc25hcHNob3QgdG8gcHJldmVudCBsZWFrcyBhbmQgcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBpZiB0aGUgbmV3IGluc3RhbGxhdGlvbiBmYWlscy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jYCBhbmQgc3BlY2lmaWNhbGx5LCB0aGF0IGZ1bmN0aW9uLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAuIFNpbmNlIHRoaXMgaXMgUklTQy1WIEtWTSBQTVUgY29kZSwgdGhlIG5leHQgcXVlc3Rpb24gdGhhdCBwb3BzIHVwIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gcmVsZXZhbnQgaW4gYSBwcmFjdGljYWwgc2Vuc2Ugd2l0aCBRRU1VLiBUaGF0J3MgYSBxdWljayB5ZXMsIHdlIGNhbiBjZXJ0YWlubHkgdGVzdCBSSVNDLVYgS1ZNIHdpdGhpbiBRRU1VIHdoZW4gcnVubmluZyBSSVNDLVYgZ3Vlc3RzLlxuXG5Ob3csIGEgY3JpdGljYWwgYXNwZWN0IG9mIHNlY3VyaXR5IHRlc3RpbmcgaXMgZnV6emluZy4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgY292ZXJhZ2UgZm9yIFJJU0MtViBLVk0/IFRoYW5rZnVsbHksIHRoZSBhbnN3ZXIgaXMgeWVzLCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IGZ1enppbmcgUklTQy1WIHRhcmdldHMgdXNpbmcgS1ZNLiBUaGlzIG1lYW5zIGl0J3MgcG9zc2libGUgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyB0ZXN0ZWQgYnkgZnV6emluZy4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBmdW5jdGlvbiBtb3JlIGNsb3NlbHkgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGF0IGZ1enppbmcgbWlnaHQgbGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM4OjUyLjI2MjkwNDk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDYzNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmM9NDE4PXN0YXRpYyB2b2lkIGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyNi1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jOjQyNzppbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgc2FkZHJfbG93LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmMtNDI4LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jPTE2PXN0YXRpYyBpbnQga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzMtXFx0Y2FzZSBTQklfRVhUX1BNVV9TTkFQU0hPVF9TRVRfU0hNRU06XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6NzQ6XFx0XFx0cmV0ID0ga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbSh2Y3B1LCBjcC1cXHUwMDNlYTAsIGNwLVxcdTAwM2VhMSwgY3AtXFx1MDAzZWEyLCByZXRkYXRhKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYy03NS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzg6NTIuMzA4Mzc2Mzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNDYxMTA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTS1SSVNDViBQTVUgU25hcHNob3QgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgY2FsbGVkIGZyb20gYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhhdCBTQkkgUE1VIGV4dGVuc2lvbiBoYW5kbGVyIGluIEtWTSDigJMgc28sIGEgZ3Vlc3QgY2FuIGFic29sdXRlbHkgdHJpZ2dlciB0aGlzIGJ5IG1ha2luZyB0aG9zZSBTQkkgY2FsbHMuIEFscmlnaHQsIHNvIHdlJ3ZlIGdvdCBhIGRlZmluaXRlIGVudHJ5IHBvaW50LiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIG9yIGNvbmRpdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhpcyBmdW5jdGlvbiB0byBleGVjdXRlIGFzIGludGVuZGVkLiBMZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXF1aXJlZCBzZXR1cC4gV2hhdCBjb25maWd1cmF0aW9ucyBkbyB3ZSBuZWVkIHRvIGhhdmUgaW4gcGxhY2UgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHk/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozODo1Ni4yMTI5ODk0NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NTg3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozODo1Ni4yNTc4NTI1MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTQ4MDMzNzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqUE1VIENvbmZpZ3VyYXRpb24gSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgUklTQy1WIEtWTSBlbnZpcm9ubWVudC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBjZW50cmFsIHJlcG9zaXRvcnkgZm9yIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEknbGwgbmF2aWdhdGUgdG8gYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgLiBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgd2hlbiBjb21waWxpbmcgdGhlIGtlcm5lbCB3aXRoIEtWTSBzdXBwb3J0IGZvciB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gSSdtIGhvcGluZyB0byBmaW5kIGV4cGxpY2l0IFBNVSBzZXR0aW5ncyB0aGVyZSwgd2hpY2ggd291bGQgZ3VpZGUgbWUgdG8gdW5kZXJzdGFuZCB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBQTVUgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQgYXQgYnVpbGQgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjAzLjQwNTg4ODc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTA5ODMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQTVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MDMuNDUyMDA0ODA5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMDc5OTU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaXZpbmcgaW50byB0aGUgUklTQy1WIEtWTSBNYWtlZmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCB1bmRlcnN0YW5kIGhvdyB0aGlzIHRoaW5nIGlzIGJ1aWx0LiBNeSBmaXJzdCBtb3ZlIHdoZW4gdGFja2xpbmcgYSBrZXJuZWwgbW9kdWxlLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gYSB2aXJ0dWFsaXNhdGlvbiBjb21wb25lbnQgbGlrZSBLVk0sIGlzIGFsd2F5cyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgbWFnaWMgaGFwcGVuczogdGhlIGNvbXBpbGF0aW9uIGZsYWdzLCBzb3VyY2UgZmlsZSBpbmNsdXNpb24sIGFuZCBsaW5raW5nIGFyZSBvcmNoZXN0cmF0ZWQgdGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBwcm9jZXNzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGt2bWAgbW9kdWxlIHNwZWNpZmljYWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgUklTQy1WIGtlcm5lbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLCBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzLCBhbmQgd2hlcmUgdGhlIGNvcmUgcGFydHMgYXJlLiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgYGFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlYCBob2xkcy4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtc3RydWN0dXJlZCBhbmQgZG9lc24ndCBpbnZvbHZlIHRvbyBtdWNoIG1hY3JvLWJhc2VkIG9iZnVzY2F0aW9uLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjA3LjE3MjgwNjg5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMjg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9wbXVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGU9Mjg9a3ZtLXkgKz0gdmNwdV9vbmVyZWcub1xcbmFyY2gvcmlzY3Yva3ZtL01ha2VmaWxlOjI5Omt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSArPSB2Y3B1X3BtdS5vXFxuYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUtMzAta3ZtLXkgKz0gdmNwdV9zYmkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOTowNy4yMTcxNDM0MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MzU3NzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzcGVjaWFsaXN0IGluIHRoaXMgZG9tYWluOlxuXG4qKk15IEltbWVkaWF0ZSBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIHRlbGxpbmcgbWUgd2UgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgLiBUaGF0J3MgYSBrZXkgaW5kaWNhdG9yLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBcIndoZXJlIGlzIHRoaXMgZGVmaW5lZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuXCIgSSdtIG1lbnRhbGx5IHRyYWNpbmcgYmFjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBLbm93aW5nIHdoZXJlIGl0J3MgZGVmaW5lZCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjbHVlcyBhYm91dCB3aGF0J3MgZW5hYmxlZCwgd2hhdCdzIGRpc2FibGVkLCBhbmQgaXRzIG92ZXJhbGwgcGxhY2UgaW4gdGhlIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyByb3V0aW5lOyBpdCdzIHRoZSBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGEgY29uZmlndXJhdGlvbiBkZXBlbmRlbmN5LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdHJhY2UgaXQgZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjEwLjQ5MDcyMjk3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMTYzNTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfUE1VX1NCSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BlcmYvS2NvbmZpZz04OD1jb25maWcgUklTQ1ZfUE1VX0xFR0FDWVxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctOTctXFxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05OS1cXHRkZXBlbmRzIG9uIFJJU0NWX1BNVSBcXHUwMDI2XFx1MDAyNiBSSVNDVl9TQklcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MTIuMDIyMzYzMTE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDAwODY0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBmb3IgdGhpcyBSSVNDLVYgS1ZNIGZ1enppbmcgc2V0dXAsIHdlIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX1JJU0NWX1BNVV9TQklgIGFuZCBgQ09ORklHX0tWTWAuIGBDT05GSUdfS1ZNYCBpcyBwcmV0dHkgbXVjaCBhIGdpdmVuIGZvciBhbnkgS1ZNLWJhc2VkIGZ1enppbmcgc2NlbmFyaW8sIHNvIHRoYXQgb25lJ3Mgc3RyYWlnaHRmb3J3YXJkLiBCdXQgYENPTkZJR19SSVNDVl9QTVVfU0JJYCDigJMgdGhhdCdzIGEgZ29vZCBpbmNsdXNpb247IGl0IHdpbGwgYWxsb3cgdXMgdG8gbGV2ZXJhZ2UgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB1bml0cywgYW5kIHRoYXQgY2FuIGJlIHJlYWxseSB2YWx1YWJsZS4gTm93LCBiZWZvcmUgSSBjb21taXQgdG8ganVzdCB0aGVzZSB0d28sIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgbWlnaHQgYmUgYW55ICpvdGhlciogcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgd291bGQgYmUgYmVuZWZpY2lhbCB0byBpbmNsdWRlLiBHb3R0YSBiZSB0aG9yb3VnaCwgeW91IGtub3c/IExldCdzIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MTUuODIyNDUxNjczWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM0MDM0MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSSVNDVl9QTVVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wZXJmL0tjb25maWc9NzQ9Y29uZmlnIEFSTV9YU0NBTEVfUE1VXFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy03Ny1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZzo3ODpjb25maWcgUklTQ1ZfUE1VXFxuZHJpdmVycy9wZXJmL0tjb25maWctNzktXFx0ZGVwZW5kcyBvbiBSSVNDVlxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctODctXFxuZHJpdmVycy9wZXJmL0tjb25maWc6ODg6Y29uZmlnIFJJU0NWX1BNVV9MRUdBQ1lcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy04OS1cXHRkZXBlbmRzIG9uIFJJU0NWX1BNVVxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctOTctXFxuZHJpdmVycy9wZXJmL0tjb25maWc6OTg6Y29uZmlnIFJJU0NWX1BNVV9TQklcXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy05OS1cXHRkZXBlbmRzIG9uIFJJU0NWX1BNVSBcXHUwMDI2XFx1MDAyNiBSSVNDVl9TQklcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MTcuMzU2NDkwMzIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzOTA1NjA3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqTXkgQW5hbHlzaXMgb2YgS1ZNIGFuZCBSSVNDLVYgUE1VIEludGVncmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYEtWTWAgYW5kIGBSSVNDVl9QTVVfU0JJYC4gVGhvc2UgYXJlIG15IHN0YXJ0aW5nIHBvaW50cy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBLVk0gYW5kIFJJU0MtViBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgZm9jdXMgc3ltYm9scyBhcmU6IGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYCBhbmQgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYC4gVGhvc2UgbmFtZXMgdGVsbCBtZSBhIGxvdC4gT25lIHNlZW1zIHRvIGRlYWwgd2l0aCB0YWtpbmcgYSBzbmFwc2hvdCBvZiB0aGUgUE1VIHN0YXRlLCBhbmQgdGhlIHNoYXJlZCBtZW1vcnkgaW5kaWNhdGVzIGludGVyLVZNIGNvbW11bmljYXRpb24gb3IgYWNjZXNzLiBUaGVuIHRoZXJlJ3MgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYCwgdGhhdCBzb3VuZHMgbGlrZSB0aGUgY29yZSBTQkkgKFN1cGVydmlzb3IgQmluYXJ5IEludGVyZmFjZSkgZXh0ZW5zaW9uIGhhbmRsZXIgZm9yIFBNVSBjYWxscy4gSW50ZXJlc3RpbmcuIFdhaXQgYSBtaW51dGUuLi4gaXMgYGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyYCBhY3R1YWxseSBzdGF0aWM/IFRoYXQncyBub3QgaWRlYWwuIEl0IGNvdWxkIG1lYW4gbGltaXRhdGlvbnMgb24gZHluYW1pYyByZWdpc3RyYXRpb24gb3IgZXh0ZW5zaWJpbGl0eSBvZiBQTVUgZnVuY3Rpb25zLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCBmdXJ0aGVyLiBUaGF0IGNvdWxkIGhhdmUgaW1wbGljYXRpb25zIG9uIGhvdyB3ZWxsIHRoaXMgaW50ZWdyYXRlcyB3aXRoIG90aGVyIFBNVSBmZWF0dXJlcyBkb3duIHRoZSBsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MjMuNzQ3MDUyODc3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDEwMDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2JpX2V4dF9wbXVfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmM6MTY6c3RhdGljIGludCBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtMTctXFx0XFx0XFx0XFx0ICAgc3RydWN0IGt2bV92Y3B1X3NiaV9yZXR1cm4gKnJldGRhdGEpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz05Mz1jb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfcG11ID0ge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTUtXFx0LmV4dGlkX2VuZCA9IFNCSV9FWFRfUE1VLFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjk2OlxcdC5oYW5kbGVyID0ga3ZtX3NiaV9leHRfcG11X2hhbmRsZXIsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtOTctXFx0LnByb2JlID0ga3ZtX3NiaV9leHRfcG11X3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOToyMy43OTExNTczNDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5OTkwMzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6XG5cbioqUE1VIEhhbmRsZXJzIGFuZCBTaGFyZWQgTWVtb3J5IGluIEtWTS1SSVNDVioqXG5cblJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIEtWTS1SSVNDViBpbXBsZW1lbnRhdGlvbiBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UncmUgaGFuZGxpbmcgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0cywgb3IgUE1Vcy4gVGhlIGtleSBwb2ludCBpcyB0aGF0IGBrdm1fc2JpX2V4dF9wbXVfaGFuZGxlcmAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQncyBpbXBvcnRhbnQgZm9yIHNjb3BpbmcgYW5kIHByZXZlbnRpbmcgYWNjaWRlbnRhbCBleHRlcm5hbCBsaW5rYWdlLiBJdCBzdWdnZXN0cyBhIHRpZ2h0bHkgY29udHJvbGxlZCBmdW5jdGlvbiwgbGlrZWx5IHNwZWNpZmljIHRvIHRoZSBtb2R1bGUgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBub3QgbWVhbnQgZm9yIG91dHNpZGUgYWNjZXNzLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBiZW5lZmljaWFsIHByYWN0aWNlLlxuXG5Ob3csIG9uIHRoZSBvdGhlciBoYW5kLCBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgKm5vdCogYHN0YXRpY2AuIFRoaXMgaGFzIHNvbWUgaW1wb3J0YW50IGltcGxpY2F0aW9ucy4gSXQncyBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgcGFydCBvZiB0aGUgQVBJLCBvciBhdCBsZWFzdCBwb3RlbnRpYWxseSBjYWxsYWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBLVk0gY29kZWJhc2UuIEl0IG1pZ2h0IGJlIHVzZWQgdG8gY29uZmlndXJlIG9yIG1hbmFnZSB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24gZGVkaWNhdGVkIHRvIHRoZSBQTVUgc25hcHNob3QgZGF0YS4gSXQgYmVpbmcgbm9uLXN0YXRpYyBvcGVucyBpdCB1cCBmb3IgYnJvYWRlciB1c2Ugd2l0aGluIHRoZSBsYXJnZXIgS1ZNLVJJU0NWIGFyY2hpdGVjdHVyZS4gSSdkIGJlIGxvb2tpbmcgY2xvc2VseSBhdCB3aGVyZSBpdCdzIGNhbGxlZCBhbmQgaG93IGl0J3MgdXNlZCB0byB1bmRlcnN0YW5kIGl0cyBzcGVjaWZpYyByb2xlIGluIHRoZSBQTVUgZGF0YSBleGNoYW5nZSBwcm9jZXNzLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDc1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MjguNTkxMDYzNDQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkxMjk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jPTQxOD1zdGF0aWMgdm9pZCBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYy00MjYtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuYzo0Mjc6aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jLTQyOC1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nIHNhZGRyX2hpZ2gsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9wbXUuYz0xNj1zdGF0aWMgaW50IGt2bV9zYmlfZXh0X3BtdV9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jLTczLVxcdGNhc2UgU0JJX0VYVF9QTVVfU05BUFNIT1RfU0VUX1NITUVNOlxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX3BtdS5jOjc0OlxcdFxcdHJldCA9IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0odmNwdSwgY3AtXFx1MDAzZWEwLCBjcC1cXHUwMDNlYTEsIGNwLVxcdTAwM2VhMiwgcmV0ZGF0YSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfcG11LmMtNzUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjI4LjYzNjk4MDQ0MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk0MzU2MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBSSVNDLVYgUE1VIFNuYXBzaG90IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gIGFzIHRoZSBrZXkgZnVuY3Rpb24gdG8gcmVhbGx5IHVuZGVyc3RhbmQgaGVyZS4gSXQgc2VlbXMgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgcmVzb2x2aW5nIGEgbWVtb3J5IGxlYWsgb3IsIHBvdGVudGlhbGx5IG1vcmUgY29uY2VybmluZywgc29tZSBraW5kIG9mIGluY29uc2lzdGVuY3kgaW4gaG93IHRoZSBzbmFwc2hvdCBhcmVhIGZvciB0aGUgUE1VIGlzIGJlaW5nIHNldCB1cC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdGhlIFNCSSBQTVUgZXh0ZW5zaW9uIHdpdGhpbiBLVk0sIHNvIGl0J3MgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGNhcGFiaWxpdGllcy4gR2l2ZW4gdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBTQkkgUE1VLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBzY3J1dGluaXplIGZ1cnRoZXIgZm9yIGFueSBsdXJraW5nIGlzc3VlcywgYW5kIEkgYW0gZ29pbmcgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgYXJlIGBLVk1gIGFuZCBgUklTQ1ZfUE1VX1NCSWAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFNvLCB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbSwgYW5kIG15IGludmVzdGlnYXRpb24sIHdpbGwgcmV2b2x2ZSBhcm91bmQgYGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1gLiBJJ2xsIGRlbHZlIGludG8gdGhlIGNvZGUgcGF0aCBoZXJlLCB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlIG9mIHRoZSBsZWFrL2luY29uc2lzdGVuY3ksIGFuZCB2ZXJpZnkgdGhlIHBhdGNoJ3MgZWZmZWN0aXZlbmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIyNywiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MzMuNTMxMzM4ODE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI1NjI3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiUklTQ1ZfUE1VX1NCSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvbnNpc3RlbmN5IGluIHRoZSBSSVNDLVYgS1ZNIFBNVSBzbmFwc2hvdCBzZXR1cCBsb2dpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBhIGd1ZXN0IG1ha2luZyBTQkkgUE1VIGV4dGVuc2lvbiBjYWxscyB0byB0aGUgaHlwZXJ2aXNvciwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOTozMy42MDM5MDYxODRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjY3NzYxMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MzMuNjA0MzcwNzc0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM1MjY3MjkyNzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgbGVhayBhbmQgYSBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gUHJldmlvdXNseSwgd2hlbiBhIG5ldyBzbmFwc2hvdCBhcmVhIHdhcyBzZXQsIHRoZSBjb2RlIG92ZXJ3cm90ZSBga3ZwbXUtXFx1MDAzZXNkYXRhYCB3aXRoIGEgbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgd2l0aG91dCBmcmVlaW5nIHRoZSBvbGQgb25lLCBjYXVzaW5nIGEgbWVtb3J5IGxlYWsuIEFkZGl0aW9uYWxseSwgaWYgdGhlIG5ldyBhbGxvY2F0aW9uIG9yIHRoZSBzdWJzZXF1ZW50IGBrdm1fdmNwdV93cml0ZV9ndWVzdGAgZmFpbGVkLCBga3ZwbXUtXFx1MDAzZXNkYXRhYCB3b3VsZCBiZSBzZXQgdG8gYE5VTExgIHdoaWxlIGBrdnBtdS1cXHUwMDNlc25hcHNob3RfYWRkcmAgcmV0YWluZWQgaXRzIG9sZCB2YWxpZCB2YWx1ZS4gVGhpcyBpbmNvbnNpc3RlbnQgc3RhdGUgY291bGQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cXG5cXG5UaGVzZSBpc3N1ZXMgKG1lbW9yeSBsZWFrcyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcy9LQVNBTi4gVGhlIG5ldyBgc2RhdGFgIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgLCBlbnN1cmluZyBpdCBpcyBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjOGUwYmFiY2FkOGY0NzZlOTZmZTU2MDQ4ODBmYzNlYmU3NjBkZWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDc6Mzg6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1xuaW5kZXggNzUyZjEwMTRkNjMzZS4uMTRmNzM0OTBmMTJjYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfcG11LmNcbkBAIC00NTQsNiArNDU0LDE0IEBAIGludCBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzXG4gXHRcdH1cbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXG4rXHQgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZlxuK1x0ICogdGhlIHJlLWluc3RhbGwgZmFpbHMgYmVsb3cuXG4rXHQgKi9cbitcdGlmIChrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyICE9IElOVkFMSURfR1BBKVxuK1x0XHRrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSk7XG4rXG4gXHRrdnBtdS1cdTAwM2VzZGF0YSA9IGt6YWxsb2Moc25hcHNob3RfYXJlYV9zaXplLCBHRlBfQVRPTUlDIHwgX19HRlBfQUNDT1VOVCk7XG4gXHRpZiAoIWt2cG11LVx1MDAzZXNkYXRhKSB7XG4gXHRcdHNiaXJldCA9IFNCSV9FUlJfRkFJTFVSRTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjMzLjYwNDM3MTQ0NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzIyNTQ0ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtWTS9SSVNDLVYgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjYWxsIHRvIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSlgIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgaWYgYGt2cG11LVx1MDAzZXNuYXBzaG90X2FkZHJgIGlzbid0IGBJTlZBTElEX0dQQWAsIHRoZXkncmUgY2xlYXJpbmcgb3V0IGFueSBwcmV2aW91cyBzbmFwc2hvdCBkYXRhIGJlZm9yZSBhbGxvY2F0aW5nIHRoZSBuZXcgYGt2cG11LVx1MDAzZXNkYXRhYCB3aXRoIGBremFsbG9jYC4gVGhlIGNvbW1lbnQgbWVudGlvbnMgc29tZXRoaW5nIGFib3V0IGF2b2lkaW5nIGxlYWtzIG9mIG9sZCBkYXRhIGFuZCBtYWludGFpbmluZyBjb25zaXN0ZW5jeSBiZXR3ZWVuIGBzZGF0YWAgYW5kIGBzbmFwc2hvdF9hZGRyYCBpbiBjYXNlIHRoZSByZS1pbnN0YWxsYXRpb24gZmFpbHMuIFNtYXJ0IG1vdmUsIHNlZW1zIGxpa2UgYSBnb29kIHByZWNhdXRpb24uXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBzbyBJJ2xsIHByb2JhYmx5IHpvb20gaW4gb24gd2hlcmUgdGhpcyBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAgaXMgY2FsbGVkIGZyb20sIHRoYXQgc2hvdWxkIGdpdmUgbWUgc29tZSBjb250ZXh0LiBJJ2xsIHVzZSB0aGF0IGBkZWZhdWx0X2FwaTpyZWFkLWZpbGVgIHRvb2wsIHRoYXQgc2hvdWxkIGdpdmUgbWUgd2hhdCBJIG5lZWQgdG8gc2VlIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjM5OjM4LjkyNjkxODIwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X3BtdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ0MDpcXHRcXG4gNDQxOlxcdFxcdGlmIChzYWRkcl9sb3cgPT0gU0JJX1NITUVNX0RJU0FCTEUgXFx1MDAyNlxcdTAwMjYgc2FkZHJfaGlnaCA9PSBTQklfU0hNRU1fRElTQUJMRSkge1xcbiA0NDI6XFx0XFx0XFx0a3ZtX3BtdV9jbGVhcl9zbmFwc2hvdF9hcmVhKHZjcHUpO1xcbiA0NDM6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDQ0NDpcXHRcXHR9XFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdFxcdHNhZGRyID0gc2FkZHJfbG93O1xcbiA0NDc6XFx0XFxuIDQ0ODpcXHRcXHRpZiAoc2FkZHJfaGlnaCAhPSAwKSB7XFxuIDQ0OTpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfMzJCSVQpKSB7XFxuIDQ1MDpcXHRcXHRcXHRcXHRzYWRkciB8PSAoKGdwYV90KXNhZGRyX2hpZ2ggXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiA0NTE6XFx0XFx0XFx0fSBlbHNlIHtcXG4gNDUyOlxcdFxcdFxcdFxcdHNiaXJldCA9IFNCSV9FUlJfSU5WQUxJRF9BRERSRVNTO1xcbiA0NTM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ1NDpcXHRcXHRcXHR9XFxuIDQ1NTpcXHRcXHR9XFxuIDQ1NjpcXHRcXG4gNDU3OlxcdFxcdC8qXFxuIDQ1ODpcXHRcXHQgKiBDbGVhciBhbnkgcHJldmlvdXNseSBpbnN0YWxsZWQgc25hcHNob3QgYXJlYSB0byBhdm9pZCBsZWFraW5nXFxuIDQ1OTpcXHRcXHQgKiB0aGUgb2xkIHNkYXRhIGFuZCB0byBrZWVwIHNkYXRhL3NuYXBzaG90X2FkZHIgY29uc2lzdGVudCBpZlxcbiA0NjA6XFx0XFx0ICogdGhlIHJlLWluc3RhbGwgZmFpbHMgYmVsb3cuXFxuIDQ2MTpcXHRcXHQgKi9cXG4gNDYyOlxcdFxcdGlmIChrdnBtdS1cXHUwMDNlc25hcHNob3RfYWRkciAhPSBJTlZBTElEX0dQQSlcXG4gNDYzOlxcdFxcdFxcdGt2bV9wbXVfY2xlYXJfc25hcHNob3RfYXJlYSh2Y3B1KTtcXG4gNDY0OlxcdFxcbiA0NjU6XFx0XFx0a3ZwbXUtXFx1MDAzZXNkYXRhID0ga3phbGxvYyhzbmFwc2hvdF9hcmVhX3NpemUsIEdGUF9BVE9NSUMgfCBfX0dGUF9BQ0NPVU5UKTtcXG4gNDY2OlxcdFxcdGlmICgha3ZwbXUtXFx1MDAzZXNkYXRhKSB7XFxuIDQ2NzpcXHRcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0ZBSUxVUkU7XFxuIDQ2ODpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDY5OlxcdFxcdH1cXG4gNDcwOlxcdFxcbiA0NzE6XFx0XFx0LyogTm8gbmVlZCB0byBjaGVjayB3cml0YWJsZSBzbG90IGV4cGxpY2l0bHkgYXMga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3QgZG9lcyBpdCBpbnRlcm5hbGx5ICovXFxuIDQ3MjpcXHRcXHRpZiAoa3ZtX3ZjcHVfd3JpdGVfZ3Vlc3QodmNwdSwgc2FkZHIsIGt2cG11LVxcdTAwM2VzZGF0YSwgc25hcHNob3RfYXJlYV9zaXplKSkge1xcbiA0NzM6XFx0XFx0XFx0a2ZyZWUoa3ZwbXUtXFx1MDAzZXNkYXRhKTtcXG4gNDc0OlxcdFxcdFxcdGt2cG11LVxcdTAwM2VzZGF0YSA9IE5VTEw7XFxuIDQ3NTpcXHRcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfQUREUkVTUztcXG4gNDc2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0Nzc6XFx0XFx0fVxcbiA0Nzg6XFx0XFxuIDQ3OTpcXHRcXHRrdnBtdS1cXHUwMDNlc25hcHNob3RfYWRkciA9IHNhZGRyO1xcbiA0ODA6XFx0XFxuIDQ4MTpcXHRvdXQ6XFxuIDQ4MjpcXHRcXHRyZXRkYXRhLVxcdTAwM2VlcnJfdmFsID0gc2JpcmV0O1xcbiA0ODM6XFx0XFxuIDQ4NDpcXHRcXHRyZXR1cm4gMDtcXG4gNDg1OlxcdH1cXG4gNDg2OlxcdFxcbiA0ODc6XFx0aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9ldmVudF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBzYWRkcl9sb3csXFxuIDQ4ODpcXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBudW1fZXZlbnRzLFxcbiA0ODk6XFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIGZsYWdzLCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX3JldHVybiAqcmV0ZGF0YSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6MzguOTI2OTk4MTczWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1OTg2NzMyMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBMZWFrIGFuZCBDb25zaXN0ZW5jeSBJc3N1ZSBpbiBLVk0gUE1VIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgaXQgdGFja2xlcyB0d28gY29yZSBwcm9ibGVtczogYSBtZW1vcnkgbGVhaywgd2hpY2ggc2VlbXMgdG8gc3RlbSBmcm9tIHRoZSBvbGQgYHNkYXRhYCBub3QgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHksIGFuZCBhIGNvbnNpc3RlbmN5IGlzc3VlLiBUaGUgaW5jb25zaXN0ZW5jeSBhcmlzZXMgd2hlbiBhIHJlLWluc3RhbGxhdGlvbiBmYWlscywgYW5kIHRoZSBgc2RhdGFgIGFuZCBgc25hcHNob3RfYWRkcmAgdmFsdWVzIGRpdmVyZ2UuIFRoYXQncyBhIGNsYXNzaWMgc291cmNlIG9mIGhhcmQtdG8tZGVidWcgZXJyb3JzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGlmIGBrdm1fdmNwdV93cml0ZV9ndWVzdGAgZmFpbHMsIGBrdnBtdS1cdTAwM2VzZGF0YWAgZ2V0cyBmcmVlZCBhbmQgc2V0IHRvIGBOVUxMYCwgd2hpY2ggaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiBIb3dldmVyLCB0aGUgcHJvYmxlbSBpcyB0aGF0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCAqaXNuJ3QqIHVwZGF0ZWQsIG1lYW5pbmcgaXQncyBsZWZ0IHdpdGggaXRzIG9sZCwgaW52YWxpZCB2YWx1ZS4gVGhpcyBkaXNjb25uZWN0IGJldHdlZW4gdGhlIGRhdGEgYW5kIHRoZSBwb2ludGVyIHRoYXQncyBzdXBwb3NlZCB0byBkZXNjcmliZSB0aGF0IGRhdGEgaXMgcHJlY2lzZWx5IHdoYXQgY2F1c2VzIHRoZSBpbmNvbnNpc3RlbmN5LlxuXG5XYWl0IGEgc2Vjb25kLi4uSSdtIGFsc28gc2VlaW5nIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWEodmNwdSlgIGJlaW5nIGNhbGxlZCBpbiB0aGlzIGNvbnRleHQuIEl0IGlzICpoaWdobHkqIGxpa2VseSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdGhlIG9uZSB0aGF0J3Mgc3VwcG9zZWQgdG8gY2xlYXIgYGt2cG11LVx1MDAzZXNkYXRhYCBhbmQgc2V0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyID0gSU5WQUxJRF9HUEFgLiBHaXZlbiB0aGUgdHlwaWNhbCBLVk0gY2xlYW51cCBzdHJ1Y3R1cmUsIHRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLiBMZXQgbWUgaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGNvZGUgZm9yIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWFgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNzozOTo1NC45MTM3MzI3MDhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9wbXUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjA6XFx0XFx0c3RydWN0IGt2bV9wbXUgKmt2cG11ID0gdmNwdV90b19wbXUodmNwdSk7XFxuIDQyMTpcXHRcXG4gNDIyOlxcdFxcdGtmcmVlKGt2cG11LVxcdTAwM2VzZGF0YSk7XFxuIDQyMzpcXHRcXHRrdnBtdS1cXHUwMDNlc2RhdGEgPSBOVUxMO1xcbiA0MjQ6XFx0XFx0a3ZwbXUtXFx1MDAzZXNuYXBzaG90X2FkZHIgPSBJTlZBTElEX0dQQTtcXG4gNDI1OlxcdH1cXG4gNDI2OlxcdFxcbiA0Mjc6XFx0aW50IGt2bV9yaXNjdl92Y3B1X3BtdV9zbmFwc2hvdF9zZXRfc2htZW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHNhZGRyX2xvdyxcXG4gNDI4OlxcdFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgc2FkZHJfaGlnaCwgdW5zaWduZWQgbG9uZyBmbGFncyxcXG4gNDI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1fdmNwdV9zYmlfcmV0dXJuICpyZXRkYXRhKVxcbiA0MzA6XFx0e1xcbiA0MzE6XFx0XFx0c3RydWN0IGt2bV9wbXUgKmt2cG11ID0gdmNwdV90b19wbXUodmNwdSk7XFxuIDQzMjpcXHRcXHRpbnQgc25hcHNob3RfYXJlYV9zaXplID0gc2l6ZW9mKHN0cnVjdCByaXNjdl9wbXVfc25hcHNob3RfZGF0YSk7XFxuIDQzMzpcXHRcXHRpbnQgc2JpcmV0ID0gMDtcXG4gNDM0OlxcdFxcdGdwYV90IHNhZGRyO1xcbiA0MzU6XFx0XFxuIDQzNjpcXHRcXHRpZiAoIWt2cG11IHx8IGZsYWdzKSB7XFxuIDQzNzpcXHRcXHRcXHRzYmlyZXQgPSBTQklfRVJSX0lOVkFMSURfUEFSQU07XFxuIDQzODpcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDM5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDc6Mzk6NTQuOTEzODMyNjU4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTU3ODA1MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIElycmVsZXZhbmNlOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgZnVuY3Rpb24sIGBrdm1fcG11X2NsZWFyX3NuYXBzaG90X2FyZWFgLCBkb2VzIHdoYXQgaXQgc2F5czogaXQgZnJlZXMgdGhlIGBzZGF0YWAgYW5kIHJlc2V0cyB0aGUgYHNuYXBzaG90X2FkZHJgLiBDcnVjaWFsbHksIGlmIHRoaXMgaXNuJ3QgY2FsbGVkIHByaW9yLCBhbmQgd2UganVzdCBhbGxvY2F0ZSBuZXcgbWVtb3J5LCB0aGUgZXhpc3RpbmcgYGt2cG11LVx1MDAzZXNkYXRhYCBpcyBzaW1wbHkgb3ZlcndyaXR0ZW4sIGxlYXZpbmcgdGhlIG9sZCBkYXRhIHN0cmFuZGVkIOKAkyBhIGNsYXNzaWMgbWVtb3J5IGxlYWsuXG5cbk5vdywgY29uc2lkZXIgdGhlIGZhaWx1cmUgc2NlbmFyaW9zLiBJZiBga3phbGxvY2Agb3IgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlscywgYGt2cG11LVx1MDAzZXNkYXRhYCBiZWNvbWVzIGBOVUxMYCwgYnV0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCBzdGlsbCBob2xkcyBhbiBvbGQsIHZhbGlkIGFkZHJlc3MuIFRoYXQncyBhIHRleHRib29rIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3YWl0aW5nIHRvIGhhcHBlbi4gVGhlIGNvbW1lbnQncyBpbnRlbnQgaXMgY2xlYXI6IGF2b2lkIHRoZSBtZW1vcnkgbGVhayBhbmQgbWFpbnRhaW4gY29uc2lzdGVuY3kgYmV0d2VlbiBgc2RhdGFgIGFuZCBgc25hcHNob3RfYWRkcmAuIEVzc2VudGlhbGx5IHRoaXMgcHJldmVudHMgYnVncyBpbiB0aGUgYXJlYS5cblxuU28sIHRoZSBpc3N1ZSBpcyAqZGVmaW5pdGVseSogYSBtZW1vcnkgbGVhayDigJMgdGhlIG9sZCBgc2RhdGFgIGlzIGxvc3Qgb24gdGhlIHdpbmQgd2hlbiB0aGUgbmV3IHBvaW50ZXIgaXMgYWxsb2NhdGVkLiBJZiB0aGUgYWxsb2NhdGlvbiBmYWlscyBvciB0aGUgZ3Vlc3Qgd3JpdGUgZmFpbHMsIHRoZSAqbmV3KiBgc2RhdGFgIGlzIGZyZWVkLCBidXQgdGhlIG9sZCBgc2RhdGFgIGlzIGFscmVhZHkgbGVha2VkLiBBbmQgdGhlIG9sZCBgc25hcHNob3RfYWRkcmAgaXMgc3RpbGwgdmFsaWQuICBMYXRlciwgaWYgdGhlIGNvZGUgY2hlY2tzIHRoZSBhZGRyZXNzIGFuZCBmaW5kcyB0aGF0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCBpcyBub3QgdGhlIGludmFsaWQgYWRkcmVzcywgdGhlIGNvZGUgbWlnaHQgYXNzdW1lIHRoZSBtZW1vcnkgaXMgc3RpbGwgdmFsaWQsIGJ1dCBpdCBpcyBgTlVMTGAuXG5cblRoZXNlIGFyZSBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBob3dldmVyLiAgV2UncmUgZGVhbGluZyB3aXRoIG1lbW9yeSBsZWFrcyBjYXVnaHQgYnkgS01FTUxFQUssIGFuZCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aGljaCBjYW4gYmUgY2F1Z2h0IGJ5IHRoZSBzdGFuZGFyZCBrZXJuZWwncyBvb3BzIG1lY2hhbmlzbS4gS0FTQU4gaXMgaW1wb3J0YW50IGZvciB1c2UtYWZ0ZXItZnJlZSwgaWYgYW55LiBLTVNBTiB3b3VsZCBiZSByZWxldmFudCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLCBidXQgKnRoYXQncyBub3Qgd2hhdCdzIGhhcHBlbmluZyBoZXJlKi4gVGhlIG5ldyBgc2RhdGFgIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgc28gaXQncyB6ZXJvLWluaXRpYWxpemVkLiBaZXJvIGluaXRpYWxpemF0aW9uIHByZXZlbnRzIGlzc3VlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgcmVhZHMuXG5cblNvLCBsZXQncyBkb3VibGUtY2hlY2sgb3VyIHdvcmsgYW5kIHJlY29uZmlybSBLTVNBTidzIGlycmVsZXZhbmNlLiBUaGUgZml4IGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIGFuZCBhIHN0YXRlIGluY29uc2lzdGVuY3k6IHRoZSBsZWFrIHdpbGwgYmUgZGV0ZWN0ZWQgYnkga21lbWxlYWssIHdoaWxlIHRoZSBpbmNvbnNpc3RlbnQgc3RhdGUgbWlnaHQgbGVhZCB0byBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggd2lsbCBiZSBjYXVnaHQgYnkgYSBzdGFuZGFyZCBrZXJuZWwgb29wcy4gIFRoZXJlJ3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLCBubyBpbmZvcm1hdGlvbiBsZWFrLCBub3RoaW5nIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBgZmFsc2VgLlxuXG5TbywgaGVyZSBpcyBob3cgSSB3aWxsIGZvcm11bGF0ZSBteSByZWFzb25pbmcuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBzdGF0ZSBpbmNvbnNpc3RlbmN5IGluIGBrdm1fcmlzY3ZfdmNwdV9wbXVfc25hcHNob3Rfc2V0X3NobWVtYC4gVGhlIGNvZGUgcHJldmlvdXNseSBvdmVyd3JpdHRlbiBga3ZwbXUtXHUwMDNlc2RhdGFgIHdpdGggYSBuZXcgYWxsb2NhdGlvbiB3aXRob3V0IGZyZWVpbmcgdGhlIG9sZCBvbmUsIGFuZCB0aGlzIGNhdXNlcyBhIG1lbW9yeSBsZWFrLiBJZiB0aGUgbmV3IGFsbG9jYXRpb24gb3IgdGhlIHN1YnNlcXVlbnQgYGt2bV92Y3B1X3dyaXRlX2d1ZXN0YCBmYWlscywgYGt2cG11LVx1MDAzZXNkYXRhYCBiZWNvbWVzIGBOVUxMYCwgYnV0IGBrdnBtdS1cdTAwM2VzbmFwc2hvdF9hZGRyYCByZXRhaW5zIGl0cyBvbGQgdmFsdWUsIGxlYWRpbmcgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgbGF0ZXIuIE1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0YWJsZSBieSBLTUVNTEVBSyBhbmQgc3RhbmRhcmQga2VybmVsIG9vcHNlcyBkZXRlY3QgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG5ldyBgc2RhdGFgIGlzIHplcm8taW5pdGlhbGl6ZWQgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZC4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTgyLCJPdXRwdXRUb2tlbnMiOjI0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA3OjQwOjA4Ljg3MTY0MDQyMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIGEgc3RhdGUgaW5jb25zaXN0ZW5jeSBpbiBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAuIFByZXZpb3VzbHksIHdoZW4gYSBuZXcgc25hcHNob3QgYXJlYSB3YXMgc2V0LCB0aGUgY29kZSBvdmVyd3JvdGUgYGt2cG11LVxcdTAwM2VzZGF0YWAgd2l0aCBhIG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHdpdGhvdXQgZnJlZWluZyB0aGUgb2xkIG9uZSwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBuZXcgYWxsb2NhdGlvbiBvciB0aGUgc3Vic2VxdWVudCBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxlZCwgYGt2cG11LVxcdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXFx1MDAzZXNuYXBzaG90X2FkZHJgIHJldGFpbmVkIGl0cyBvbGQgdmFsaWQgdmFsdWUuIFRoaXMgaW5jb25zaXN0ZW50IHN0YXRlIGNvdWxkIGxlYWQgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXFxuXFxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIGEgc3RhdGUgaW5jb25zaXN0ZW5jeSBpbiBga3ZtX3Jpc2N2X3ZjcHVfcG11X3NuYXBzaG90X3NldF9zaG1lbWAuIFByZXZpb3VzbHksIHdoZW4gYSBuZXcgc25hcHNob3QgYXJlYSB3YXMgc2V0LCB0aGUgY29kZSBvdmVyd3JvdGUgYGt2cG11LVxcdTAwM2VzZGF0YWAgd2l0aCBhIG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHdpdGhvdXQgZnJlZWluZyB0aGUgb2xkIG9uZSwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBuZXcgYWxsb2NhdGlvbiBvciB0aGUgc3Vic2VxdWVudCBga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3RgIGZhaWxlZCwgYGt2cG11LVxcdTAwM2VzZGF0YWAgd291bGQgYmUgc2V0IHRvIGBOVUxMYCB3aGlsZSBga3ZwbXUtXFx1MDAzZXNuYXBzaG90X2FkZHJgIHJldGFpbmVkIGl0cyBvbGQgdmFsaWQgdmFsdWUuIFRoaXMgaW5jb25zaXN0ZW50IHN0YXRlIGNvdWxkIGxlYWQgdG8gYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuXFxuXFxuVGhlc2UgaXNzdWVzIChtZW1vcnkgbGVha3MgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS01FTUxFQUsgYW5kIHN0YW5kYXJkIGtlcm5lbCBvb3BzZXMvS0FTQU4uIFRoZSBuZXcgYHNkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgaXMgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowcrp78[1] Phase: Succeeded StartedAt: 2026-08-26 07:40:34 +0000 UTC FinishedAt: 2026-08-26 07:40:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 07:40:34 +0000 UTC FinishedAt: 2026-08-26 07:40:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2] Phase: Succeeded StartedAt: 2026-08-26 07:40:34 +0000 UTC FinishedAt: 2026-08-26 08:21:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-26 07:40:34 +0000 UTC FinishedAt: 2026-08-26 08:21:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-26 07:40:34 +0000 UTC FinishedAt: 2026-08-26 07:40:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-26 07:40:34 +0000 UTC FinishedAt: 2026-08-26 07:40:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowcrp78/series-workflowcrp78-convert-artifact-1579231476/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-26 07:40:44 +0000 UTC FinishedAt: 2026-08-26 07:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-26 07:40:44 +0000 UTC FinishedAt: 2026-08-26 07:56:42 +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:*331323a5-0535-4cf8-9adf-df6f321d5455,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-workflowcrp78/series-workflowcrp78-convert-artifact-1579231476/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": "9bfeb2dd-dcf5-49c3-87b4-30fa669e8c89", "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-workflowcrp78/series-workflowcrp78-build-action-1472925170/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-26 07:40:44 +0000 UTC FinishedAt: 2026-08-26 07:56:32 +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:*331323a5-0535-4cf8-9adf-df6f321d5455,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-workflowcrp78/series-workflowcrp78-convert-artifact-1579231476/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": "9bfeb2dd-dcf5-49c3-87b4-30fa669e8c89", "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-workflowcrp78/series-workflowcrp78-build-action-1472925170/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-26 07:56:42 +0000 UTC FinishedAt: 2026-08-26 07:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-26 07:56:42 +0000 UTC FinishedAt: 2026-08-26 07:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-26 07:56:42 +0000 UTC FinishedAt: 2026-08-26 07:56:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-26 07:56:42 +0000 UTC FinishedAt: 2026-08-26 07:56:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowcrp78/series-workflowcrp78-convert-artifact-1280572083/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-26 07:56:52 +0000 UTC FinishedAt: 2026-08-26 07:59:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-26 07:56:52 +0000 UTC FinishedAt: 2026-08-26 07:58:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9bfeb2dd-dcf5-49c3-87b4-30fa669e8c89,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-workflowcrp78/series-workflowcrp78-build-action-1472925170/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-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-26 07:59:00 +0000 UTC FinishedAt: 2026-08-26 07:59:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-26 07:59:00 +0000 UTC FinishedAt: 2026-08-26 07:59:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-26 07:59:00 +0000 UTC FinishedAt: 2026-08-26 08:15:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-26 07:59:00 +0000 UTC FinishedAt: 2026-08-26 08:15: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:*331323a5-0535-4cf8-9adf-df6f321d5455,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-workflowcrp78/series-workflowcrp78-convert-artifact-1280572083/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": "23a33b94-b84c-4c57-95bc-50df8c9a89b1", "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-workflowcrp78/series-workflowcrp78-build-action-4231332711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-26 07:59:00 +0000 UTC FinishedAt: 2026-08-26 08:15:08 +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:*331323a5-0535-4cf8-9adf-df6f321d5455,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-workflowcrp78/series-workflowcrp78-convert-artifact-1280572083/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": "23a33b94-b84c-4c57-95bc-50df8c9a89b1", "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-workflowcrp78/series-workflowcrp78-build-action-4231332711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-26 08:15:18 +0000 UTC FinishedAt: 2026-08-26 08:15:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-26 08:15:18 +0000 UTC FinishedAt: 2026-08-26 08:15:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-26 08:15:18 +0000 UTC FinishedAt: 2026-08-26 08:17:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-26 08:15:18 +0000 UTC FinishedAt: 2026-08-26 08:17:12 +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:*23a33b94-b84c-4c57-95bc-50df8c9a89b1,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-workflowcrp78/series-workflowcrp78-build-action-4231332711/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-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-26 08:17:22 +0000 UTC FinishedAt: 2026-08-26 08:21:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-26 08:17:22 +0000 UTC FinishedAt: 2026-08-26 08:21:20 +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":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"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:*9bfeb2dd-dcf5-49c3-87b4-30fa669e8c89,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*23a33b94-b84c-4c57-95bc-50df8c9a89b1,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-workflowcrp78/series-workflowcrp78-build-action-1472925170/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-workflowcrp78/series-workflowcrp78-build-action-4231332711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-26 08:17:22 +0000 UTC FinishedAt: 2026-08-26 08:17:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-26 08:17:22 +0000 UTC FinishedAt: 2026-08-26 08:17:26 +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":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"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-workflowcrp78/series-workflowcrp78-convert-artifact-1018312108/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-26 08:17:22 +0000 UTC FinishedAt: 2026-08-26 08:17:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-26 08:17:22 +0000 UTC FinishedAt: 2026-08-26 08:17:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-26 08:17:22 +0000 UTC FinishedAt: 2026-08-26 08:17:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-26 08:17:32 +0000 UTC FinishedAt: 2026-08-26 08:21:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcrp78[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_vcpu_pmu_snapshot_set_shmem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","RISCV_PMU_SBI"],"series_id":"2f05f93c-7149-4d06-8884-dbba50065dbf","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-26 08:17:32 +0000 UTC FinishedAt: 2026-08-26 08:20:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9bfeb2dd-dcf5-49c3-87b4-30fa669e8c89,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*23a33b94-b84c-4c57-95bc-50df8c9a89b1,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-workflowcrp78/series-workflowcrp78-build-action-1472925170/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-workflowcrp78/series-workflowcrp78-build-action-4231332711/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-workflowcrp78/series-workflowcrp78-convert-artifact-1018312108/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,}