Name: series-workflowtdtwz Phase: Succeeded StartedAt: 2026-07-05 11:23:14 +0000 UTC FinishedAt: 2026-07-05 13:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[0] Phase: Succeeded StartedAt: 2026-07-05 11:23:14 +0000 UTC FinishedAt: 2026-07-05 11:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 11:23:14 +0000 UTC FinishedAt: 2026-07-05 11:29:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "591a925d-5d3a-423c-8eea-04927433ad91" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_non_resident_attr_insert_range", "ntfs_insert_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NmZiNzY5ZjljNjRmYmQwZDQ2MmQ4ODBiM2ViODZhOWI0Yzg1NGQ2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxMToyODozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuY1xuaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9hdHRyaWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9hdHRyaWIuY1xuQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxuIFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiYjNDM7XHRcdGtmcmVlKGhvbGVfcmwpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg2ZmI3NjlmOWM2NGZiZDBkNDYyZDg4MGIzZWI4NmE5YjRjODU0ZDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDExOjI4OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmMKaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NAotLS0gYS9mcy9udGZzL2F0dHJpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvYXR0cmliLmMKQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNgogCXJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7CiAJaWYgKHJldCkgewogCQl1cF93cml0ZSgmYW1wO25pLSZndDtydW5saXN0LmxvY2spOwomIzQzOwkJa2ZyZWUoaG9sZV9ybCk7CiAJCXJldHVybiByZXQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IExlYWsgRml4IGluIE5URlMgQXR0cmlidXRlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgZnMvbnRmcy9hdHRyaWIuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBhIGBrZnJlZShob2xlX3JsKWAgY2FsbCB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gVGhlIHBhdGNoIG5vdGVzIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGEgbWVtb3J5IGxlYWsgZml4LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgcmlnaHQsIGBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3RgIGZhaWxpbmcgbGlrZWx5IG1lYW50IHNvbWUgcnVubGlzdCBzdHJ1Y3R1cmUgd2FzbiYjMzk7dCBjbGVhbmVkIHVwLiYjMzQ7IE1ha2VzIHNlbnNlLCB3ZSBuZWVkIHRvIGVuc3VyZSByZXNvdXJjZXMgYXJlIGZyZWVkIHdoZW4gdGhpbmdzIGdvIHNpZGV3YXlzLgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBhbmQgdmVyaWZ5IHRoZSBmaXgmIzM5O3MgY29ycmVjdG5lc3MsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGZzL250ZnMvYXR0cmliLmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIG9mIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGhvdyBgbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0YCBpcyB1c2VkIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogd2hhdCBhcmUgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBmYWlsdXJlLCBob3cgaXMgYGhvbGVfcmxgIHVzZWQsIGFuZCBhcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBsZWFrcyB0aGF0IHN0aWxsIG5lZWQgYXR0ZW50aW9uLiBDb250ZXh0IGlzIGtleSwgYW5kIEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBiZSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hdHRyaWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbmZzL250ZnMvYXR0cmliLmMtNTMwMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb246CgoqKkRpZ2dpbmcgaW50byBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiwgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMgdHJhY2UgaXRzIHVzYWdlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hlcmUgaXMgdGhpcyBmdW5jdGlvbiAqYWN0dWFsbHkqIGNhbGxlZD8mIzM0OyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHRzIHdpbGwgZ2l2ZSBtZSBpbW1lZGlhdGUgaW5zaWdodCBpbnRvIHdoYXQgc2l0dWF0aW9ucyBuZWNlc3NpdGF0ZSB0aGUgaW5zZXJ0aW9uIG9mIGEgbm9uLXJlc2lkZW50IGF0dHJpYnV0ZSByYW5nZSBpbiBOVEZTLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSB0eXBlcyBvZiBvcGVyYXRpb25zIG9yIGNvbmRpdGlvbnMgdGhhdCBsZWFkIHRvIGl0cyBpbnZvY2F0aW9uLCBhbmQgdGhlcmVmb3JlLCB3aGF0IEkgbmVlZCB0byBjb25zaWRlciBmb3IgbXkgYW5hbHlzaXMuIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgYW5kIG1hcCBvdXQgaXRzIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01MzAwLVxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xuLS1cbmZzL250ZnMvYXR0cmliLmg9MTA4PWludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcbmZzL250ZnMvYXR0cmliLmg6MTA5OmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xuZnMvbnRmcy9hdHRyaWIuaC0xMTAtaW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcbi0tXG5mcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtMTAzOS1cdG11dGV4X2xvY2tfbmVzdGVkKFx1MDAyNm5pLVx1MDAzZW1yZWNfbG9jaywgTlRGU19JTk9ERV9NVVRFWF9OT1JNQUwpO1xuZnMvbnRmcy9maWxlLmM6MTA0MDpcdGVyciA9IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKG5pLCBzdGFydF92Y24sXG5mcy9udGZzL2ZpbGUuYy0xMDQxLVx0XHRcdGVuZF92Y24gLSBzdGFydF92Y24pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOgoKKipEaXZpbmcgaW50byB0aGUgTlRGUyBSYW5nZSBJbnNlcnRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBudGZzX2luc2VydF9yYW5nZWAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgZnMvbnRmcy9maWxlLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIGBudGZzX2luc2VydF9yYW5nZWAgaXRzZWxmLiYjMzQ7IEl0JiMzOTtzIGxpa2VseSBoYW5kbGluZyB0aGUgaW5zZXJ0aW9uIG9mIGRhdGEgcmFuZ2VzIHdpdGhpbiBhbiBOVEZTIGZpbGUmIzM5O3MgbWV0YWRhdGEsIGVpdGhlciBleHBhbmRpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRlIG9yIGNyZWF0aW5nIGEgbmV3IG9uZSBhbHRvZ2V0aGVyLiBVbmRlcnN0YW5kaW5nIGl0cyBleGFjdCBsb2dpYyBpcyBjcnVjaWFsIOKAkyBhcmUgd2UgZGVhbGluZyB3aXRoIGV4dGVudHMsIGZyYWdtZW50YXRpb24sIG9yIHBlcmhhcHMgc29tZSBzb3J0IG9mIG1ldGFkYXRhIHVwZGF0ZSB0byB0aGUgYCREQVRBYCBhdHRyaWJ1dGU/IFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgTUZULCB0aGUgcmVzaWRlbnQgYXR0cmlidXRlcywgYW5kIHRoZSBjbHVzdGVycyBvbiB0aGUgZGlzay4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIGhhbmRsaW5nIGEgbGFyZ2UgZmlsZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBhIGJpdCBtb3JlIGdyYW51bGFyLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgZHJpdmVyIGlzIG1hbmFnaW5nIGFueSBwb3RlbnRpYWwgZnJhZ21lbnRhdGlvbiB0aGF0IGNvdWxkIG9jY3VyIGR1cmluZyB0aGlzIHByb2Nlc3MgYW5kIGhvdyBlZmZpY2llbnRseSBpdCYjMzk7cyBoYW5kbGluZyB0aGUgZmlsZSBzeXN0ZW0mIzM5O3MgYmxvY2sgbWFwcGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jPTk0OD1zdGF0aWMgaW50IG50ZnNfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTk5My1cbmZzL250ZnMvZmlsZS5jOjk5NDpzdGF0aWMgaW50IG50ZnNfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbmZzL250ZnMvZmlsZS5jLTk5NS17XG4tLVxuZnMvbnRmcy9maWxlLmM9MTA1NT1zdGF0aWMgbG9uZyBudGZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtMTExMy1cdGNhc2UgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRTpcbmZzL250ZnMvZmlsZS5jOjExMTQ6XHRcdGVyciA9IG50ZnNfaW5zZXJ0X3JhbmdlKG5pLCBvZmZzZXQsIGxlbik7XG5mcy9udGZzL2ZpbGUuYy0xMTE1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIE5URlMgRmFsbG9jYXRlIEZpeCoqCgpSaWdodCwgc28gdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZXkmIzM5O3JlIHVzaW5nIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYC4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggaXMgZ29vZC4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBOVEZTIGltcGxlbWVudGF0aW9uLCB3aGljaCBJJiMzOTttIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZy4KCk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgTlRGUy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBhZmZlY3RlZCBzeXN0ZW0gYW5kIHNlZSBob3cgdGhpcyBmaXggaW1wYWN0cyB0aGUgbGFyZ2VyIHBpY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyB2aXRhbCB0byB0cnVseSBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXG4tLVxuZnMvbnRmcy9LY29uZmlnLTM0LVxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBDb25mdXNpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBmaWxlc3lzdGVtIHR5cGUgaXMgc2hvd2luZyBhcyBgTlRGU19GU2AuIEhtbSwgYnV0IGZvciBhIHNwbGl0IHNlY29uZCwgSSBoYWQgYSBtZW50YWwgYmxpcCDigJMgd2FzIGl0IGBOVEZTX0ZTYCBvciBgTlRGUzNfRlNgPyBHb3R0YSBrZWVwIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LCB5b3Uga25vdy4gQWxyaWdodCwgdGhlIHBhdGggZ2l2ZW4gaXMgYGZzL250ZnMvYXR0cmliLmNgLCBzbyB0aGF0IHNob3VsZCBjb25maXJtIGl0JiMzOTtzIGBOVEZTX0ZTYC4gCgpUaGUgcmVhbCBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB0aGUgY29uZmlndXJhdGlvbiBlbmFibGVzIHdyaXRlIHN1cHBvcnQuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaW1lIHRvIGRpZyBpbnRvIGBmcy9udGZzL0tjb25maWdgIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE5URlMgV3JpdGUgU3VwcG9ydCoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGludG8gYW55IGNvZGUsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSByZWxhdGVkIHRvIE5URlMgd2l0aGluIHRoZSBmaWxlIHN5c3RlbSAoYGZzL250ZnMvS2NvbmZpZ2ApIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3Igb3B0aW9ucyBjb250cm9sbGluZyB3cml0ZSBzdXBwb3J0LiYjMzQ7IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gY29ycmVjdGx5IHJlZmxlY3RzIHRoZSBpbnRlbmRlZCB3cml0ZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSBOVEZTIG1vZHVsZS4gVGhpcyBpcyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwLiBJZiB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgYXJlbiYjMzk7dCBlbmFibGVkIGhlcmUsIGFueSBhdHRlbXB0IHRvIGV4cGxvcmUgdGhlIGNvZGUgZnVydGhlciByZWdhcmRpbmcgd3JpdGUgZnVuY3Rpb25hbGl0eSBpcyBhIHdhc3RlIG9mIHRpbWUuIEl0JiMzOTtzIHRoZSBnYXRla2VlcGVyIGZvciB0aG9zZSBmZWF0dXJlcy4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBjaGVjayBiZWZvcmUgcHJvY2VlZGluZywgYXMgaXQgY29uZmlybXMgd2hldGhlciB3cml0ZSBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gY29uZmlndXJlZCBpbiB0aGUgYnVpbGQgYXQgYWxsLCB3aGljaCBpcyB0aGUgYmFzZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOVEZTXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnLTEyLVxuZnMvbnRmcy9LY29uZmlnOjEzOmNvbmZpZyBOVEZTX0RFQlVHXG5mcy9udGZzL0tjb25maWctMTQtXHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgZ290IGEgaHVuY2guIEl0IHNlZW1zIGxpa2UgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYGZzL250ZnMvS2NvbmZpZ2AsIGlzIHRoZSByaWdodCBwbGFjZSB0byBsb29rLiBJJiMzOTt2ZSBnb3QgYSBmZWVsaW5nIGl0IG1pZ2h0IGNvbnRhaW4gdGhlIG9wdGlvbiBJJiMzOTttIHNlYXJjaGluZyBmb3IsIGBOVEZTX1JXYC4gU28sIEkmIzM5O2xsIGRpdmUgcmlnaHQgaW4gYW5kIHJlYWQgYGZzL250ZnMvS2NvbmZpZ2AuIEl0JiMzOTtzIHRpbWUgdG8gY29uZmlybSBvciBkZW55IHRoaXMgc3VzcGljaW9uLCBhbmQgc2VlIHdoYXQgdGhpcyBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBOVEZTX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBOTFNcbiAgIDU6XHRcdHNlbGVjdCBGU19JT01BUFxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXG4gICA4Olx0XHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxuICAgOTpcdFxuICAxMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbiAgMTE6XHRcdCAgbnRmcy5cbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgTlRGU19ERUJVR1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxuICAxODpcdFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXG4gIDE5Olx0XHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cbiAgMjA6XHRcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXG4gIDIxOlx0XHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXG4gIDIyOlx0XHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxuICAyMzpcdFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXG4gIDI0Olx0XHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XG4gIDI1Olx0XHQgIGVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcbiAgMjY6XHRcdCAgUmVwbGFjaW5nIHRoZSBcJiMzNDsxXCYjMzQ7IHdpdGggXCYjMzQ7MFwmIzM0OyB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXG4gIDI5Olx0XHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XG4gIDMwOlx0XHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcbiAgMzM6XHRcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDM4Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xuICA0MTpcdFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XG4gIDQ0Olx0XHQgIHdpdGggbnRmczMgZHJpdmllci5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUwMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBOVEZTIExhbmRzY2FwZSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZmVlbHMgb2ZmIGhlcmUuIFdhcyB0aGUgb2xkIGBmcy9udGZzYCBmaWxlc3lzdGVtIGRyaXZlciBjb21wbGV0ZWx5IHJlbW92ZWQgb3IganVzdCByZXdvcmtlZD8gVGhpcyBjb2RlIGlzIHNwZWNpZmljYWxseSByZWZlcmVuY2luZyBgZnMvbnRmcy9hdHRyaWIuY2AsIHdoaWNoIG1ha2VzIG1lIHN1c3BlY3QgdGhlIG9sZGVyIGRyaXZlciBpcyBpbnZvbHZlZC4gV2FpdCBhIG1pbnV0ZSwgZGlkbiYjMzk7dCB0aGUgbGVnYWN5IGBmcy9udGZzYCBjb25maWd1cmF0aW9uIGhhdmUgdGhhdCBgTlRGU19SV2Agb3B0aW9uIHRvIGVuYWJsZSByZWFkL3dyaXRlIHN1cHBvcnQ/IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gaWYgdGhhdCBvcHRpb24gaXMgc3RpbGwgcHJlc2VudCBzb21ld2hlcmUuCgpIbW0sIHRoaXMgYGZzL250ZnNgIGNvZGViYXNlIHNlZW1zIHRvIGhhdmUgYHNlbGVjdCBGU19JT01BUGAuIERvZXMgdGhpcyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgdGhlIHVwZGF0ZWQgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSGFuZyBvbiwgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IHRoZSB0cnVseSBuZXcgTlRGUyBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgYGZzL250ZnMzYCBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoYXQgaXMgc2VsZWN0ZWQgYW55d2hlcmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ28gYmFjayB0byB0aGUgbGVnYWN5IGNvZGUuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgYGZzL250ZnMvS2NvbmZpZ2AgYW5kIHNlZSBpZiBgTlRGU19SV2AgZXhpc3RzIHRoZXJlLiBJdCBsb29rcyBsaWtlIGl0IGRvZXNuJiMzOTt0LiBIbW0sIHNvIGl0IHNlZW1zIGxpa2UgdGhlIG9yaWdpbmFsIGRyaXZlciB3YXNuJiMzOTt0IHNpbXBseSByZXBsYWNlZCwgYnV0IHBvc3NpYmx5IHJld3JpdHRlbiBvciB1cGRhdGVkPwoKT2theSwgbGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlIG9sZCBkcml2ZXIgaXMgc3RpbGwgb3BlcmF0aW9uYWwuIExldCYjMzk7cyBzdGFydCB3aXRoIGBmcy9udGZzL2F0dHJpYi5jYCBhbmQgc2VhcmNoIGZvciBzb21ldGhpbmcgdGhhdCBmZWVscyBkaXN0aW5jdGl2ZSwgbGlrZSBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSBjbHVlIGFzIHRvIHdoaWNoIHBhdGggdGhpcyBjb2RlIGlzIGFjdHVhbGx5IG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmM9NTI1NT12b2lkICpudGZzX2F0dHJfcmVhZGFsbChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IF9fbGUzMiB0eXBlLFxuLS1cbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cbmZzL250ZnMvYXR0cmliLmM6NTMwMTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKVxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcbi0tXG5mcy9udGZzL2F0dHJpYi5oPTEwOD1pbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib29sIGtlZXBfc2l6ZSk7XG5mcy9udGZzL2F0dHJpYi5oOjEwOTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcbmZzL250ZnMvYXR0cmliLmgtMTEwLWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XG4tLVxuZnMvbnRmcy9maWxlLmM9OTk0PXN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTEwMzktXHRtdXRleF9sb2NrX25lc3RlZChcdTAwMjZuaS1cdTAwM2VtcmVjX2xvY2ssIE5URlNfSU5PREVfTVVURVhfTk9STUFMKTtcbmZzL250ZnMvZmlsZS5jOjEwNDA6XHRlcnIgPSBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShuaSwgc3RhcnRfdmNuLFxuZnMvbnRmcy9maWxlLmMtMTA0MS1cdFx0XHRlbmRfdmNuIC0gc3RhcnRfdmNuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBmcy9udGZzYCBEcml2ZXIqKgoKSG1tLCBgZnMvbnRmc2AuLi4gdGhhdCYjMzk7cyB0aGUgbGVnYWN5IE5URlMgZHJpdmVyLCByaWdodD8gSSBjb3VsZCBoYXZlIHN3b3JuIHdlIHdlcmUgc3RpbGwgZGVhbGluZyB3aXRoIHRoZSBxdWlya3Mgb2YgcmVhZC1vbmx5IGFjY2VzcyB3aXRoIHRoYXQgb25lLiBCdXQgd2FpdC4uLiBpcyBpdCBwb3NzaWJsZSB0aGF0IHdyaXRlIHN1cHBvcnQgaXMgYWN0dWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IG5vdz8gSSBoYXZlbiYjMzk7dCBrZXB0IGNvbXBsZXRlbHkgdXAgdG8gc3BlZWQgb24gdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZS4gVGhhdCB3b3VsZCBiZSBhIHNpZ25pZmljYW50IHNoaWZ0LgoKQmVzdCB0byBjb25maXJtIHRoaXMgZGlyZWN0bHkuIExldCYjMzk7cyBkaWcgaW50byB0aGUgYGZzL250ZnMvTWFrZWZpbGVgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgZmxhZ3MgYXJlIGRvaW5nIHRoZXNlIGRheXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIHdoZXRoZXIgdGhhdCB3cml0ZSBzdXBwb3J0IGlzIHRydWx5IGFjdGl2ZSBieSBkZWZhdWx0IG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZ29pbmcgb24uIFRoYXQgTWFrZWZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGtleSBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTlRGU19GUykgJiM0Mzs9IG50ZnMub1xuICAgNDpcdFxuICAgNTpcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcbiAgIDY6XHRcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcbiAgIDc6XHRcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcbiAgIDg6XHRcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xuICAgOTpcdFxuICAxMDpcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgJiM0Mzs9IC1EREVCVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTlRGUyBXcml0ZSBTdXBwb3J0KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYE5URlNfUldgIGlzIGdvbmUsIGFuZCB3cml0ZSBzdXBwb3J0IGlzIG5vdyBhbHdheXMgaW5jbHVkZWQsIG9yIHBlcmhhcHMgdGhpcyBpcyBhIGZvcmsgb2YgdGhlIGtlcm5lbC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZS4gQnV0IHdhaXQsIEkmIzM5O20gZ2V0dGluZyBhaGVhZCBvZiBteXNlbGYsIGBOVEZTX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiwgbm90IGBOVEZTX1JXYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGlzOyBpdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGZzL250ZnMzL0tjb25maWdgIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL250ZnMzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlMzX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOVEZTIFJlYWQtV3JpdGUgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiAhTlRGU19GUyB8fCBtXG4gICA1Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgIDY6XHRcdHNlbGVjdCBOTFNcbiAgIDc6XHRcdHNlbGVjdCBMRUdBQ1lfRElSRUNUX0lPXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFdpbmRvd3MgT1MgbmF0aXZlIGZpbGUgc3lzdGVtIChOVEZTKSBzdXBwb3J0IHVwIHRvIE5URlMgdmVyc2lvbiAzLjEuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFkgb3IgTSBlbmFibGVzIHRoZSBOVEZTMyBkcml2ZXIgd2l0aCBmdWxsIGZlYXR1cmVzIGVuYWJsZWQgKHJlYWQsXG4gIDEyOlx0XHQgIHdyaXRlLCBqb3VybmFsIHJlcGxheWluZywgc3BhcnNlL2NvbXByZXNzZWQgZmlsZXMgc3VwcG9ydCkuXG4gIDEzOlx0XHQgIEZpbGUgc3lzdGVtIHR5cGUgdG8gdXNlIG9uIG1vdW50IGlzIFwmIzM0O250ZnMzXCYjMzQ7LiBNb2R1bGUgbmFtZSAoTSBvcHRpb24pXG4gIDE0Olx0XHQgIGlzIGFsc28gXCYjMzQ7bnRmczNcJiMzNDsuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIERvY3VtZW50YXRpb246IFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzMy5yc3RcdTAwM2VcbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgTlRGUzNfNjRCSVRfQ0xVU1RFUlxuICAxOTpcdFx0Ym9vbCBcJiMzNDs2NCBiaXRzIHBlciBOVEZTIGNsdXN0ZXJzXCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIE5URlMzX0ZTIFx1MDAyNlx1MDAyNiA2NEJJVFxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBXaW5kb3dzIGltcGxlbWVudGF0aW9uIG9mIG50ZnMuc3lzIHVzZXMgMzIgYml0cyBwZXIgY2x1c3RlcnMuXG4gIDIzOlx0XHQgIElmIGFjdGl2YXRlZCA2NCBiaXRzIHBlciBjbHVzdGVycyB5b3Ugd2lsbCBiZSBhYmxlIHRvIHVzZSA0ayBjbHVzdGVyXG4gIDI0Olx0XHQgIGZvciAxNlQmIzQzOyB2b2x1bWVzLiBXaW5kb3dzIHdpbGwgbm90IGJlIGFibGUgdG8gbW91bnQgc3VjaCB2b2x1bWVzLlxuICAyNTpcdFxuICAyNjpcdFx0ICBJdCBpcyByZWNvbW1lbmRlZCB0byBzYXkgTiBoZXJlLlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBOVEZTM19MWlhfWFBSRVNTXG4gIDI5Olx0XHRib29sIFwmIzM0O2FjdGl2YXRlIHN1cHBvcnQgb2YgZXh0ZXJuYWwgY29tcHJlc3Npb25zIGx6eC94cHJlc3NcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gTlRGUzNfRlNcbiAgMzE6XHRcdGhlbHBcbiAgMzI6XHRcdCAgSW4gV2luZG93cyAxMCBvbmUgY2FuIHVzZSBjb21tYW5kIFwmIzM0O2NvbXBhY3RcJiMzNDsgdG8gY29tcHJlc3MgYW55IGZpbGVzLlxuICAzMzpcdFx0ICA0IHBvc3NpYmxlIHZhcmlhbnRzIG9mIGNvbXByZXNzaW9uIGFyZTogeHByZXNzNGssIHhwcmVzczhrLCB4cHJlc3MxNmsgYW5kIGx6eC5cbiAgMzQ6XHRcdCAgSWYgYWN0aXZhdGVkIHlvdSB3aWxsIGJlIGFibGUgdG8gcmVhZCBzdWNoIGZpbGVzIGNvcnJlY3RseS5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgSXQgaXMgcmVjb21tZW5kZWQgdG8gc2F5IFkgaGVyZS5cbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgTlRGUzNfRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gTlRGUzNfRlNcbiAgNDE6XHRcdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXG4gIDQ0Olx0XHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLFxuICA0NTpcdFx0ICBhbmQgdGhpcyBvcHRpb24gc2VsZWN0cyBzdXBwb3J0IGZvciBBQ0xzIHNwZWNpZmljYWxseSBmb3IgbnRmc1xuICA0NjpcdFx0ICBmaWxlc3lzdGVtcy5cbiAgNDc6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDg6XHRcbiAgNDk6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGBmcy9udGZzL2F0dHJpYi5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYE5URlNfRlNgIGFzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uLiBUaGUgdGFyZ2V0IGZ1bmN0aW9uIGl0c2VsZiBpcyBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLCBidXQgaXQgc2VlbXMgYE5URlNfRlNgIGlzIHRoZSBwcmltYXJ5IGRyaXZlciBoZXJlLgoKTm93LCBhIGRlZXBlciBsb29rIHJldmVhbHMgc29tZXRoaW5nIHF1aXRlIGludGVyZXN0aW5nLiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGlzICpjYWxsZWQqIGZyb20gYG50ZnNfaW5zZXJ0X3JhbmdlYCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZSBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgZmxhZyBpcyB1c2VkLiBUaGF0JiMzOTtzIGtleS4gVGhpcyBlbnRpcmUgY2hhaW4gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGZhbGxvY2F0ZWAgc3lzY2FsbCBvbiBhbiBOVEZTIGZpbGUuIFRoYXQmIzM5O3MgYSBkaXJlY3QgcGF0aCEKClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgZGVmaW5pdGVseSBgdHJ1ZWAgaW4gdGhpcyBjYXNlLiBXZSBoYXZlIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIGEgdXNlci1zcGFjZSBzeXNjYWxsLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGFuZCBgbnRmc19pbnNlcnRfcmFuZ2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgZnMvbnRmcy9hdHRyaWIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGluIHRoYXQgZmlsZSwganVzdCBpbiBjYXNlIHNvbWV0aGluZyBlbHNlIHdhcnJhbnRzIGF0dGVudGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmM9NTI1NT12b2lkICpudGZzX2F0dHJfcmVhZGFsbChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IF9fbGUzMiB0eXBlLFxuLS1cbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cbmZzL250ZnMvYXR0cmliLmM6NTMwMTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKVxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU2OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG50ZnNfaW5zZXJ0X3JhbmdlYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGBmcy9udGZzL2ZpbGUuY2AgYW5kIHNwZWNpZmljYWxseSBjaGVjayBvdXQgYG50ZnNfaW5zZXJ0X3JhbmdlYC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIGxpa2VseSBhIGZpbGUgc3lzdGVtIGlzc3VlKSwgSSBzdXNwZWN0IEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgaG93IGRhdGEgaXMgaW5zZXJ0ZWQgaW50byB0aGUgZmlsZSYjMzk7cyBhbGxvY2F0ZWQgZXh0ZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgdGhpcyBmdW5jdGlvbi4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgb3ZlcmxhcHMsIGZyYWdtZW50YXRpb24sIGFuZCBwb3NzaWJseSBhdHRyaWJ1dGUgdXBkYXRlcyByZWxhdGVkIHRvIHNpemUgY2hhbmdlcyBvciBleHRlbnQgbWFuaXB1bGF0aW9ucy4gSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzIHRoYXQgY291bGQgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jeSwgZXNwZWNpYWxseSBpZiB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgY29uY3VycmVudCB3cml0ZSBvcGVyYXRpb25zLiBJIG5lZWQgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgQi10cmVlIHN0cnVjdHVyZXMgdXNlZCBmb3IgbWV0YWRhdGEuIElzIHRoZXJlIHBvdGVudGlhbCBmb3IgZGVhZGxvY2s/IEFyZSB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgcm9idXN0IGVub3VnaD8gSSYjMzk7bGwgYmUgZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBwb2ludGVyIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucywgc28gSSBuZWVkIHRvIGJlIGZvY3VzZWQgdG8gYXZvaWQgbWlzc2luZyBhbnkgc3VidGxlIGxvZ2ljIGVycm9ycy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIGZpbGUgYWxsb2NhdGlvbiBzdHJhdGVneSwgc28gSeKAmW0gZ29pbmcgdG8gZm9jdXMgaW4gb24gaG93IGl0IGhhbmRsZXMgdGhlIGRpZmZlcmVudCBlZGdlIGNhc2VzIHJlbGF0ZWQgdG8gYWxsb2NhdGlvbi4gSSBrbm93IGhvdyB0cmlja3kgTlRGUyBjYW4gYmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfaW5zZXJ0X3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9maWxlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9maWxlLmM9OTQ4PXN0YXRpYyBpbnQgbnRmc19jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtOTkzLVxuZnMvbnRmcy9maWxlLmM6OTk0OnN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuZnMvbnRmcy9maWxlLmMtOTk1LXtcbi0tXG5mcy9udGZzL2ZpbGUuYz0xMDU1PXN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbi0tXG5mcy9udGZzL2ZpbGUuYy0xMTEzLVx0Y2FzZSBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFOlxuZnMvbnRmcy9maWxlLmM6MTExNDpcdFx0ZXJyID0gbnRmc19pbnNlcnRfcmFuZ2UobmksIG9mZnNldCwgbGVuKTtcbmZzL250ZnMvZmlsZS5jLTExMTUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTUwCgkJCQkJCQlvdXRwdXQ6IDEwNQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkZpeGluZyBhbiBOVEZTIE1lbW9yeSBMZWFrKioKClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIHNxdWFyZWx5IGF0IGEgbWVtb3J5IGxlYWsgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gY29kZS4gTXkgZm9jdXMgaW1tZWRpYXRlbHkgbmFycm93cyB0byB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbi4gSSByZWNvZ25pemUgdGhhdCBvbmU7IGl0JiMzOTtzIHJlbGF0ZWQgdG8gaG93IE5URlMgaGFuZGxlcyBub24tcmVzaWRlbnQgYXR0cmlidXRlcywgYW5kIEkgc2VlIGl0JiMzOTtzIHNwZWNpZmljYWxseSB2dWxuZXJhYmxlIHdoZW4gYGZhbGxvY2F0ZWAgd2l0aCB0aGUgYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIGZsYWcgaXMgdXNlZCBvbiBhbiBOVEZTIGZpbGUuIFRoYXQgY29udGV4dCBoZWxwcyBtZSBxdWlja2x5IHplcm8gaW4gb24gd2hlcmUgdGhlIHByb2JsZW0gbGlrZWx5IGV4aXN0cyB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuIFRoZSBgbnRmc19pbnNlcnRfcmFuZ2VgIGNhbGwgaXMgaW1wb3J0YW50IHRvbyAtIHRoYXQgaGVscHMgc2V0IHRoZSBzdGFnZSBhbmQgbGlrZWx5IHJlcHJlc2VudHMgdGhlIHVsdGltYXRlIG9wZXJhdGlvbiBhdCBwbGF5LiBUaGlzIGlzIGNsZWFybHkgYSBjYXNlIHdoZXJlIHJlc291cmNlIGFsbG9jYXRpb24gd2FzbiYjMzk7dCBwcm9wZXJseSBiYWxhbmNlZCB3aXRoIHJlc291cmNlIHJlbGVhc2Ugd2l0aGluIHRoZSBjb250ZXh0IG9mIGluc2VydGluZyBhIHJhbmdlLiBMZXQmIzM5O3MgZ2V0IHRoZSBzZXQtcmVzdWx0cyByZWFkeSBhbmQgc2VlIHdoYXQgdGhlIGRpZmYgc2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODozNC4wODQwNTE0NzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY0MTY5NTU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODozNC4wODQwNTc1NTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MDEwODY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg2ZmI3NjlmOWM2NGZiZDBkNDYyZDg4MGIzZWI4NmE5YjRjODU0ZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgNSAxMToyODozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuY1xcbmluZGV4IGRkODgyODA5ODUxMTgzLi41NTYwM2RmMGEyZWQ3ZCAxMDA2NDRcXG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXFxuKysrIGIvZnMvbnRmcy9hdHRyaWIuY1xcbkBAIC01MzI1LDYgKzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxcbiBcXHRyZXQgPSBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3QobmkpO1xcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG4rXFx0XFx0a2ZyZWUoaG9sZV9ybCk7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjM0LjQ1NDk4ODExM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNzA3NTEwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlXCIsXG4gICAgXCJudGZzX2luc2VydF9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NmZiNzY5ZjljNjRmYmQwZDQ2MmQ4ODBiM2ViODZhOWI0Yzg1NGQ2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxMToyODozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uNTU2MDNkZjBhMmVkN2QgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXG4rKysgYi9mcy9udGZzL2F0dHJpYi5jXG5AQCAtNTMyNSw2ICs1MzI1LDcgQEAgaW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczZcbiBcdHJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdHVwX3dyaXRlKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4rXHRcdGtmcmVlKGhvbGVfcmwpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6MzQuNDU0OTg5NjEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MTYxNjM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTGVhayBGaXggaW4gTlRGUyBBdHRyaWJ1dGUgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBmcy9udGZzL2F0dHJpYi5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgYGtmcmVlKGhvbGVfcmwpYCBjYWxsIHdpdGhpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgLiBUaGUgcGF0Y2ggbm90ZXMgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYSBtZW1vcnkgbGVhayBmaXguIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCByaWdodCwgYG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdGAgZmFpbGluZyBsaWtlbHkgbWVhbnQgc29tZSBydW5saXN0IHN0cnVjdHVyZSB3YXNuJ3QgY2xlYW5lZCB1cC5cIiBNYWtlcyBzZW5zZSwgd2UgbmVlZCB0byBlbnN1cmUgcmVzb3VyY2VzIGFyZSBmcmVlZCB3aGVuIHRoaW5ncyBnbyBzaWRld2F5cy5cblxuVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBhbmQgdmVyaWZ5IHRoZSBmaXgncyBjb3JyZWN0bmVzcywgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBmcy9udGZzL2F0dHJpYi5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBvZiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGFuZCBob3cgYG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdGAgaXMgdXNlZCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogd2hhdCBhcmUgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBmYWlsdXJlLCBob3cgaXMgYGhvbGVfcmxgIHVzZWQsIGFuZCBhcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBsZWFrcyB0aGF0IHN0aWxsIG5lZWQgYXR0ZW50aW9uLiBDb250ZXh0IGlzIGtleSwgYW5kIEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBiZSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6MzguMzk2NjA3NjE0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTU0NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvYXR0cmliLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXFxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXFxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6MzguNDU1NTcyMjA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYxOTcyMDI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb246XG5cbioqRGlnZ2luZyBpbnRvIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24sIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAuIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgdHJhY2UgaXRzIHVzYWdlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZywgXCJXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uICphY3R1YWxseSogY2FsbGVkP1wiIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dHMgd2lsbCBnaXZlIG1lIGltbWVkaWF0ZSBpbnNpZ2h0IGludG8gd2hhdCBzaXR1YXRpb25zIG5lY2Vzc2l0YXRlIHRoZSBpbnNlcnRpb24gb2YgYSBub24tcmVzaWRlbnQgYXR0cmlidXRlIHJhbmdlIGluIE5URlMuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHR5cGVzIG9mIG9wZXJhdGlvbnMgb3IgY29uZGl0aW9ucyB0aGF0IGxlYWQgdG8gaXRzIGludm9jYXRpb24sIGFuZCB0aGVyZWZvcmUsIHdoYXQgSSBuZWVkIHRvIGNvbnNpZGVyIGZvciBteSBhbmFseXNpcy4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgY29udHJvbCBmbG93IGFuZCBtYXAgb3V0IGl0cyBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM2NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQxLjA3NTI5NDY0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDgxMzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuaD0xMDg9aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xcbmZzL250ZnMvYXR0cmliLmg6MTA5OmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbmZzL250ZnMvYXR0cmliLmgtMTEwLWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMDM5LVxcdG11dGV4X2xvY2tfbmVzdGVkKFxcdTAwMjZuaS1cXHUwMDNlbXJlY19sb2NrLCBOVEZTX0lOT0RFX01VVEVYX05PUk1BTCk7XFxuZnMvbnRmcy9maWxlLmM6MTA0MDpcXHRlcnIgPSBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShuaSwgc3RhcnRfdmNuLFxcbmZzL250ZnMvZmlsZS5jLTEwNDEtXFx0XFx0XFx0ZW5kX3ZjbiAtIHN0YXJ0X3Zjbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQxLjI3MDExMzY2NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTUxMTQwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVEZTIFJhbmdlIEluc2VydGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBudGZzX2luc2VydF9yYW5nZWAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgZnMvbnRmcy9maWxlLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBsZXQncyBkcmlsbCBkb3duIGludG8gYG50ZnNfaW5zZXJ0X3JhbmdlYCBpdHNlbGYuXCIgSXQncyBsaWtlbHkgaGFuZGxpbmcgdGhlIGluc2VydGlvbiBvZiBkYXRhIHJhbmdlcyB3aXRoaW4gYW4gTlRGUyBmaWxlJ3MgbWV0YWRhdGEsIGVpdGhlciBleHBhbmRpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRlIG9yIGNyZWF0aW5nIGEgbmV3IG9uZSBhbHRvZ2V0aGVyLiBVbmRlcnN0YW5kaW5nIGl0cyBleGFjdCBsb2dpYyBpcyBjcnVjaWFsIOKAkyBhcmUgd2UgZGVhbGluZyB3aXRoIGV4dGVudHMsIGZyYWdtZW50YXRpb24sIG9yIHBlcmhhcHMgc29tZSBzb3J0IG9mIG1ldGFkYXRhIHVwZGF0ZSB0byB0aGUgYCREQVRBYCBhdHRyaWJ1dGU/IFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgTUZULCB0aGUgcmVzaWRlbnQgYXR0cmlidXRlcywgYW5kIHRoZSBjbHVzdGVycyBvbiB0aGUgZGlzay4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIGhhbmRsaW5nIGEgbGFyZ2UgZmlsZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBhIGJpdCBtb3JlIGdyYW51bGFyLiBMZXQncyBzZWUgaG93IHRoZSBkcml2ZXIgaXMgbWFuYWdpbmcgYW55IHBvdGVudGlhbCBmcmFnbWVudGF0aW9uIHRoYXQgY291bGQgb2NjdXIgZHVyaW5nIHRoaXMgcHJvY2VzcyBhbmQgaG93IGVmZmljaWVudGx5IGl0J3MgaGFuZGxpbmcgdGhlIGZpbGUgc3lzdGVtJ3MgYmxvY2sgbWFwcGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQ0LjI2NTIyOTY2OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3MDQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz05NDg9c3RhdGljIGludCBudGZzX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTk5My1cXG5mcy9udGZzL2ZpbGUuYzo5OTQ6c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuZnMvbnRmcy9maWxlLmMtOTk1LXtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTEwNTU9c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTExMy1cXHRjYXNlIEZBTExPQ19GTF9JTlNFUlRfUkFOR0U6XFxuZnMvbnRmcy9maWxlLmM6MTExNDpcXHRcXHRlcnIgPSBudGZzX2luc2VydF9yYW5nZShuaSwgb2Zmc2V0LCBsZW4pO1xcbmZzL250ZnMvZmlsZS5jLTExMTUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQ0LjMyMjAwOTU3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NjQwNjU5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBOVEZTIEZhbGxvY2F0ZSBGaXgqKlxuXG5SaWdodCwgc28gdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZXkncmUgdXNpbmcgYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBnb29kLiBUaGUgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5URlMgaW1wbGVtZW50YXRpb24sIHdoaWNoIEknbSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgTlRGUy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBhZmZlY3RlZCBzeXN0ZW0gYW5kIHNlZSBob3cgdGhpcyBmaXggaW1wYWN0cyB0aGUgbGFyZ2VyIHBpY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyB2aXRhbCB0byB0cnVseSBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTU0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NDYuOTg2MDc3MTgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUxODMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQ3LjA0MzYwMTY1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTY3MjY1MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5URlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uIENvbmZ1c2lvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBmaWxlc3lzdGVtIHR5cGUgaXMgc2hvd2luZyBhcyBgTlRGU19GU2AuIEhtbSwgYnV0IGZvciBhIHNwbGl0IHNlY29uZCwgSSBoYWQgYSBtZW50YWwgYmxpcCDigJMgd2FzIGl0IGBOVEZTX0ZTYCBvciBgTlRGUzNfRlNgPyBHb3R0YSBrZWVwIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LCB5b3Uga25vdy4gQWxyaWdodCwgdGhlIHBhdGggZ2l2ZW4gaXMgYGZzL250ZnMvYXR0cmliLmNgLCBzbyB0aGF0IHNob3VsZCBjb25maXJtIGl0J3MgYE5URlNfRlNgLiBcblxuVGhlIHJlYWwgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGNvbmZpZ3VyYXRpb24gZW5hYmxlcyB3cml0ZSBzdXBwb3J0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBJIG1ha2UgYW55IGFzc3VtcHRpb25zLiBMZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaW1lIHRvIGRpZyBpbnRvIGBmcy9udGZzL0tjb25maWdgIGFuZCB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MjEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODo1MC4yMTA4Njg5NDZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODkxNDI2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19SV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTAuMjY3NzczMzYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDg0MzA4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTlRGUyBXcml0ZSBTdXBwb3J0KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBjb2RlLCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gSSdtIHRoaW5raW5nLCBcIkxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIHJlbGF0ZWQgdG8gTlRGUyB3aXRoaW4gdGhlIGZpbGUgc3lzdGVtIChgZnMvbnRmcy9LY29uZmlnYCkgYW5kIHNwZWNpZmljYWxseSBsb29rIGZvciBvcHRpb25zIGNvbnRyb2xsaW5nIHdyaXRlIHN1cHBvcnQuXCIgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBjb3JyZWN0bHkgcmVmbGVjdHMgdGhlIGludGVuZGVkIHdyaXRlIGNhcGFiaWxpdGllcyBmb3IgdGhlIE5URlMgbW9kdWxlLiBUaGlzIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuIElmIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBhcmVuJ3QgZW5hYmxlZCBoZXJlLCBhbnkgYXR0ZW1wdCB0byBleHBsb3JlIHRoZSBjb2RlIGZ1cnRoZXIgcmVnYXJkaW5nIHdyaXRlIGZ1bmN0aW9uYWxpdHkgaXMgYSB3YXN0ZSBvZiB0aW1lLiBJdCdzIHRoZSBnYXRla2VlcGVyIGZvciB0aG9zZSBmZWF0dXJlcy4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBjaGVjayBiZWZvcmUgcHJvY2VlZGluZywgYXMgaXQgY29uZmlybXMgd2hldGhlciB3cml0ZSBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gY29uZmlndXJlZCBpbiB0aGUgYnVpbGQgYXQgYWxsLCB3aGljaCBpcyB0aGUgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODo1My40NzYyMDYxNDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjA2MTY3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTEyLVxcbmZzL250ZnMvS2NvbmZpZzoxMzpjb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTMuNjQyMjczMDg1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzODEzNzU5NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gcHJldHR5IHN1cmUgSSd2ZSBnb3QgYSBodW5jaC4gSXQgc2VlbXMgbGlrZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBgZnMvbnRmcy9LY29uZmlnYCwgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIGxvb2suIEkndmUgZ290IGEgZmVlbGluZyBpdCBtaWdodCBjb250YWluIHRoZSBvcHRpb24gSSdtIHNlYXJjaGluZyBmb3IsIGBOVEZTX1JXYC4gU28sIEknbGwgZGl2ZSByaWdodCBpbiBhbmQgcmVhZCBgZnMvbnRmcy9LY29uZmlnYC4gSXQncyB0aW1lIHRvIGNvbmZpcm0gb3IgZGVueSB0aGlzIHN1c3BpY2lvbiwgYW5kIHNlZSB3aGF0IHRoaXMgZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjEwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTYuMDIzNjUwODc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOVEZTX0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDU6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cXG4gICA4OlxcdFxcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuICAxMTpcXHRcXHQgIG50ZnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBOVEZTX0RFQlVHXFxuICAxNDpcXHRcXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcXG4gIDE4OlxcdFxcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxcbiAgMTk6XFx0XFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXFxuICAyMDpcXHRcXHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxcbiAgMjE6XFx0XFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxcbiAgMjI6XFx0XFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cXG4gIDIzOlxcdFxcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxcbiAgMjQ6XFx0XFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxcbiAgMjU6XFx0XFx0ICBlY2hvIDEgXFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xcbiAgMjY6XFx0XFx0ICBSZXBsYWNpbmcgdGhlIFxcXCIxXFxcIiB3aXRoIFxcXCIwXFxcIiB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcXG4gIDI5OlxcdFxcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcXG4gIDMwOlxcdFxcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXFxuICAzMzpcXHRcXHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMzg6XFx0XFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcXG4gIDQxOlxcdFxcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XFxuICA0NDpcXHRcXHQgIHdpdGggbnRmczMgZHJpdmllci5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTYuMDIzNzE1NDU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTA3MzU0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTlRGUyBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZmVlbHMgb2ZmIGhlcmUuIFdhcyB0aGUgb2xkIGBmcy9udGZzYCBmaWxlc3lzdGVtIGRyaXZlciBjb21wbGV0ZWx5IHJlbW92ZWQgb3IganVzdCByZXdvcmtlZD8gVGhpcyBjb2RlIGlzIHNwZWNpZmljYWxseSByZWZlcmVuY2luZyBgZnMvbnRmcy9hdHRyaWIuY2AsIHdoaWNoIG1ha2VzIG1lIHN1c3BlY3QgdGhlIG9sZGVyIGRyaXZlciBpcyBpbnZvbHZlZC4gV2FpdCBhIG1pbnV0ZSwgZGlkbid0IHRoZSBsZWdhY3kgYGZzL250ZnNgIGNvbmZpZ3VyYXRpb24gaGF2ZSB0aGF0IGBOVEZTX1JXYCBvcHRpb24gdG8gZW5hYmxlIHJlYWQvd3JpdGUgc3VwcG9ydD8gSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBpZiB0aGF0IG9wdGlvbiBpcyBzdGlsbCBwcmVzZW50IHNvbWV3aGVyZS5cblxuSG1tLCB0aGlzIGBmcy9udGZzYCBjb2RlYmFzZSBzZWVtcyB0byBoYXZlIGBzZWxlY3QgRlNfSU9NQVBgLiBEb2VzIHRoaXMgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIHRoZSB1cGRhdGVkIGRyaXZlciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEhhbmcgb24sIEknbSBwcmV0dHkgc3VyZSB0aGF0IHRoZSB0cnVseSBuZXcgTlRGUyBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgYGZzL250ZnMzYCBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoYXQgaXMgc2VsZWN0ZWQgYW55d2hlcmUuXG5cbkFscmlnaHQsIGxldCdzIGdvIGJhY2sgdG8gdGhlIGxlZ2FjeSBjb2RlLiBJdCdzIHRpbWUgdG8gY2hlY2sgYGZzL250ZnMvS2NvbmZpZ2AgYW5kIHNlZSBpZiBgTlRGU19SV2AgZXhpc3RzIHRoZXJlLiBJdCBsb29rcyBsaWtlIGl0IGRvZXNuJ3QuIEhtbSwgc28gaXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgZHJpdmVyIHdhc24ndCBzaW1wbHkgcmVwbGFjZWQsIGJ1dCBwb3NzaWJseSByZXdyaXR0ZW4gb3IgdXBkYXRlZD9cblxuT2theSwgbGV0J3Mgc3RhcnQgZGlnZ2luZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGUgb2xkIGRyaXZlciBpcyBzdGlsbCBvcGVyYXRpb25hbC4gTGV0J3Mgc3RhcnQgd2l0aCBgZnMvbnRmcy9hdHRyaWIuY2AgYW5kIHNlYXJjaCBmb3Igc29tZXRoaW5nIHRoYXQgZmVlbHMgZGlzdGluY3RpdmUsIGxpa2UgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gVGhhdCBtaWdodCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBwYXRoIHRoaXMgY29kZSBpcyBhY3R1YWxseSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUwMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjAwLjgxNDQ1MjY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTY1MjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuaD0xMDg9aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xcbmZzL250ZnMvYXR0cmliLmg6MTA5OmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbmZzL250ZnMvYXR0cmliLmgtMTEwLWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMDM5LVxcdG11dGV4X2xvY2tfbmVzdGVkKFxcdTAwMjZuaS1cXHUwMDNlbXJlY19sb2NrLCBOVEZTX0lOT0RFX01VVEVYX05PUk1BTCk7XFxuZnMvbnRmcy9maWxlLmM6MTA0MDpcXHRlcnIgPSBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShuaSwgc3RhcnRfdmNuLFxcbmZzL250ZnMvZmlsZS5jLTEwNDEtXFx0XFx0XFx0ZW5kX3ZjbiAtIHN0YXJ0X3Zjbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjAwLjg3NDEyNTUxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk1MjgzMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgZnMvbnRmc2AgRHJpdmVyKipcblxuSG1tLCBgZnMvbnRmc2AuLi4gdGhhdCdzIHRoZSBsZWdhY3kgTlRGUyBkcml2ZXIsIHJpZ2h0PyBJIGNvdWxkIGhhdmUgc3dvcm4gd2Ugd2VyZSBzdGlsbCBkZWFsaW5nIHdpdGggdGhlIHF1aXJrcyBvZiByZWFkLW9ubHkgYWNjZXNzIHdpdGggdGhhdCBvbmUuIEJ1dCB3YWl0Li4uIGlzIGl0IHBvc3NpYmxlIHRoYXQgd3JpdGUgc3VwcG9ydCBpcyBhY3R1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgbm93PyBJIGhhdmVuJ3Qga2VwdCBjb21wbGV0ZWx5IHVwIHRvIHNwZWVkIG9uIHRoaXMgcGFydGljdWxhciBtb2R1bGUuIFRoYXQgd291bGQgYmUgYSBzaWduaWZpY2FudCBzaGlmdC5cblxuQmVzdCB0byBjb25maXJtIHRoaXMgZGlyZWN0bHkuIExldCdzIGRpZyBpbnRvIHRoZSBgZnMvbnRmcy9NYWtlZmlsZWAgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBmbGFncyBhcmUgZG9pbmcgdGhlc2UgZGF5cy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIgb24gd2hldGhlciB0aGF0IHdyaXRlIHN1cHBvcnQgaXMgdHJ1bHkgYWN0aXZlIGJ5IGRlZmF1bHQgb3IgaWYgdGhlcmUncyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGdvaW5nIG9uLiBUaGF0IE1ha2VmaWxlIHNob3VsZCBjb250YWluIHRoZSBrZXkgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOTowMy45Njk0MTEwMDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19OVEZTX0ZTKSArPSBudGZzLm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuICAgNjpcXHRcXHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXFxcXG4gICA3OlxcdFxcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcXFxcbiAgIDg6XFx0XFx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgKz0gLURERUJVR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOTowMy45Njk0Njk5OTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3MDU1MjQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE5URlMgV3JpdGUgU3VwcG9ydCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYE5URlNfUldgIGlzIGdvbmUsIGFuZCB3cml0ZSBzdXBwb3J0IGlzIG5vdyBhbHdheXMgaW5jbHVkZWQsIG9yIHBlcmhhcHMgdGhpcyBpcyBhIGZvcmsgb2YgdGhlIGtlcm5lbC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBCdXQgd2FpdCwgSSdtIGdldHRpbmcgYWhlYWQgb2YgbXlzZWxmLCBgTlRGU19GU2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIG5vdCBgTlRGU19SV2AuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhpczsgaXQncyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4gSSdsbCB0YWtlIGEgbG9vayBhdCBgZnMvbnRmczMvS2NvbmZpZ2AganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhlIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjA2Ljg0MDAyNDY4M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzMy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlMzX0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlRGUyBSZWFkLVdyaXRlIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uICFOVEZTX0ZTIHx8IG1cXG4gICA1OlxcdFxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbiAgIDY6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDc6XFx0XFx0c2VsZWN0IExFR0FDWV9ESVJFQ1RfSU9cXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgV2luZG93cyBPUyBuYXRpdmUgZmlsZSBzeXN0ZW0gKE5URlMpIHN1cHBvcnQgdXAgdG8gTlRGUyB2ZXJzaW9uIDMuMS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBZIG9yIE0gZW5hYmxlcyB0aGUgTlRGUzMgZHJpdmVyIHdpdGggZnVsbCBmZWF0dXJlcyBlbmFibGVkIChyZWFkLFxcbiAgMTI6XFx0XFx0ICB3cml0ZSwgam91cm5hbCByZXBsYXlpbmcsIHNwYXJzZS9jb21wcmVzc2VkIGZpbGVzIHN1cHBvcnQpLlxcbiAgMTM6XFx0XFx0ICBGaWxlIHN5c3RlbSB0eXBlIHRvIHVzZSBvbiBtb3VudCBpcyBcXFwibnRmczNcXFwiLiBNb2R1bGUgbmFtZSAoTSBvcHRpb24pXFxuICAxNDpcXHRcXHQgIGlzIGFsc28gXFxcIm50ZnMzXFxcIi5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBEb2N1bWVudGF0aW9uOiBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL250ZnMzLnJzdFxcdTAwM2VcXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE5URlMzXzY0QklUX0NMVVNURVJcXG4gIDE5OlxcdFxcdGJvb2wgXFxcIjY0IGJpdHMgcGVyIE5URlMgY2x1c3RlcnNcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIE5URlMzX0ZTIFxcdTAwMjZcXHUwMDI2IDY0QklUXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgbnRmcy5zeXMgdXNlcyAzMiBiaXRzIHBlciBjbHVzdGVycy5cXG4gIDIzOlxcdFxcdCAgSWYgYWN0aXZhdGVkIDY0IGJpdHMgcGVyIGNsdXN0ZXJzIHlvdSB3aWxsIGJlIGFibGUgdG8gdXNlIDRrIGNsdXN0ZXJcXG4gIDI0OlxcdFxcdCAgZm9yIDE2VCsgdm9sdW1lcy4gV2luZG93cyB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vdW50IHN1Y2ggdm9sdW1lcy5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0ICBJdCBpcyByZWNvbW1lbmRlZCB0byBzYXkgTiBoZXJlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTlRGUzNfTFpYX1hQUkVTU1xcbiAgMjk6XFx0XFx0Ym9vbCBcXFwiYWN0aXZhdGUgc3VwcG9ydCBvZiBleHRlcm5hbCBjb21wcmVzc2lvbnMgbHp4L3hwcmVzc1xcXCJcXG4gIDMwOlxcdFxcdGRlcGVuZHMgb24gTlRGUzNfRlNcXG4gIDMxOlxcdFxcdGhlbHBcXG4gIDMyOlxcdFxcdCAgSW4gV2luZG93cyAxMCBvbmUgY2FuIHVzZSBjb21tYW5kIFxcXCJjb21wYWN0XFxcIiB0byBjb21wcmVzcyBhbnkgZmlsZXMuXFxuICAzMzpcXHRcXHQgIDQgcG9zc2libGUgdmFyaWFudHMgb2YgY29tcHJlc3Npb24gYXJlOiB4cHJlc3M0aywgeHByZXNzOGssIHhwcmVzczE2ayBhbmQgbHp4LlxcbiAgMzQ6XFx0XFx0ICBJZiBhY3RpdmF0ZWQgeW91IHdpbGwgYmUgYWJsZSB0byByZWFkIHN1Y2ggZmlsZXMgY29ycmVjdGx5LlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNheSBZIGhlcmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBOVEZTM19GU19QT1NJWF9BQ0xcXG4gIDM5OlxcdFxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIE5URlMzX0ZTXFxuICA0MTpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDQ6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZSxcXG4gIDQ1OlxcdFxcdCAgYW5kIHRoaXMgb3B0aW9uIHNlbGVjdHMgc3VwcG9ydCBmb3IgQUNMcyBzcGVjaWZpY2FsbHkgZm9yIG50ZnNcXG4gIDQ2OlxcdFxcdCAgZmlsZXN5c3RlbXMuXFxuICA0NzpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOTowNi44NDAwOTMyOTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNDkwNDk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5URlMgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYGZzL250ZnMvYXR0cmliLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBgTlRGU19GU2AgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIFRoZSB0YXJnZXQgZnVuY3Rpb24gaXRzZWxmIGlzIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncywgYnV0IGl0IHNlZW1zIGBOVEZTX0ZTYCBpcyB0aGUgcHJpbWFyeSBkcml2ZXIgaGVyZS5cblxuTm93LCBhIGRlZXBlciBsb29rIHJldmVhbHMgc29tZXRoaW5nIHF1aXRlIGludGVyZXN0aW5nLiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGlzICpjYWxsZWQqIGZyb20gYG50ZnNfaW5zZXJ0X3JhbmdlYCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZSBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgZmxhZyBpcyB1c2VkLiBUaGF0J3Mga2V5LiBUaGlzIGVudGlyZSBjaGFpbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIG9uIGFuIE5URlMgZmlsZS4gVGhhdCdzIGEgZGlyZWN0IHBhdGghXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgZGVmaW5pdGVseSBgdHJ1ZWAgaW4gdGhpcyBjYXNlLiBXZSBoYXZlIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIGEgdXNlci1zcGFjZSBzeXNjYWxsLiBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgZnMvbnRmcy9hdHRyaWIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGluIHRoYXQgZmlsZSwganVzdCBpbiBjYXNlIHNvbWV0aGluZyBlbHNlIHdhcnJhbnRzIGF0dGVudGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg5NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjExLjI2NTAwMDQ0N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNTc5MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9hdHRyaWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOToxMS4zMjIwNjI2MDJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0NTQyNDM3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbnRmc19pbnNlcnRfcmFuZ2VgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGBmcy9udGZzL2ZpbGUuY2AgYW5kIHNwZWNpZmljYWxseSBjaGVjayBvdXQgYG50ZnNfaW5zZXJ0X3JhbmdlYC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIGxpa2VseSBhIGZpbGUgc3lzdGVtIGlzc3VlKSwgSSBzdXNwZWN0IEknbGwgYmUgbG9va2luZyBhdCBob3cgZGF0YSBpcyBpbnNlcnRlZCBpbnRvIHRoZSBmaWxlJ3MgYWxsb2NhdGVkIGV4dGVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoaXMgZnVuY3Rpb24uIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgb3ZlcmxhcHMsIGZyYWdtZW50YXRpb24sIGFuZCBwb3NzaWJseSBhdHRyaWJ1dGUgdXBkYXRlcyByZWxhdGVkIHRvIHNpemUgY2hhbmdlcyBvciBleHRlbnQgbWFuaXB1bGF0aW9ucy4gSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmN5LCBlc3BlY2lhbGx5IGlmIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBjb25jdXJyZW50IHdyaXRlIG9wZXJhdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBCLXRyZWUgc3RydWN0dXJlcyB1c2VkIGZvciBtZXRhZGF0YS4gSXMgdGhlcmUgcG90ZW50aWFsIGZvciBkZWFkbG9jaz8gQXJlIHRoZSBlcnJvciBoYW5kbGluZyBwYXRocyByb2J1c3QgZW5vdWdoPyBJJ2xsIGJlIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgcG9pbnRlciBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byBiZSBmb2N1c2VkIHRvIGF2b2lkIG1pc3NpbmcgYW55IHN1YnRsZSBsb2dpYyBlcnJvcnMuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBmaWxlIGFsbG9jYXRpb24gc3RyYXRlZ3ksIHNvIEnigJltIGdvaW5nIHRvIGZvY3VzIGluIG9uIGhvdyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgZWRnZSBjYXNlcyByZWxhdGVkIHRvIGFsbG9jYXRpb24uIEkga25vdyBob3cgdHJpY2t5IE5URlMgY2FuIGJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTY4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjk6MTQuOTY3NDg4ODc2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ4MTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz05NDg9c3RhdGljIGludCBudGZzX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTk5My1cXG5mcy9udGZzL2ZpbGUuYzo5OTQ6c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuZnMvbnRmcy9maWxlLmMtOTk1LXtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTEwNTU9c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTExMy1cXHRjYXNlIEZBTExPQ19GTF9JTlNFUlRfUkFOR0U6XFxuZnMvbnRmcy9maWxlLmM6MTExNDpcXHRcXHRlcnIgPSBudGZzX2luc2VydF9yYW5nZShuaSwgb2Zmc2V0LCBsZW4pO1xcbmZzL250ZnMvZmlsZS5jLTExMTUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjE1LjAyMzk3NDUyMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjIyMzEzODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipGaXhpbmcgYW4gTlRGUyBNZW1vcnkgTGVhayoqXG5cblJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIHNxdWFyZWx5IGF0IGEgbWVtb3J5IGxlYWsgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gY29kZS4gTXkgZm9jdXMgaW1tZWRpYXRlbHkgbmFycm93cyB0byB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbi4gSSByZWNvZ25pemUgdGhhdCBvbmU7IGl0J3MgcmVsYXRlZCB0byBob3cgTlRGUyBoYW5kbGVzIG5vbi1yZXNpZGVudCBhdHRyaWJ1dGVzLCBhbmQgSSBzZWUgaXQncyBzcGVjaWZpY2FsbHkgdnVsbmVyYWJsZSB3aGVuIGBmYWxsb2NhdGVgIHdpdGggdGhlIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBmbGFnIGlzIHVzZWQgb24gYW4gTlRGUyBmaWxlLiBUaGF0IGNvbnRleHQgaGVscHMgbWUgcXVpY2tseSB6ZXJvIGluIG9uIHdoZXJlIHRoZSBwcm9ibGVtIGxpa2VseSBleGlzdHMgd2l0aGluIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLiBUaGUgYG50ZnNfaW5zZXJ0X3JhbmdlYCBjYWxsIGlzIGltcG9ydGFudCB0b28gLSB0aGF0IGhlbHBzIHNldCB0aGUgc3RhZ2UgYW5kIGxpa2VseSByZXByZXNlbnRzIHRoZSB1bHRpbWF0ZSBvcGVyYXRpb24gYXQgcGxheS4gVGhpcyBpcyBjbGVhcmx5IGEgY2FzZSB3aGVyZSByZXNvdXJjZSBhbGxvY2F0aW9uIHdhc24ndCBwcm9wZXJseSBiYWxhbmNlZCB3aXRoIHJlc291cmNlIHJlbGVhc2Ugd2l0aGluIHRoZSBjb250ZXh0IG9mIGluc2VydGluZyBhIHJhbmdlLiBMZXQncyBnZXQgdGhlIHNldC1yZXN1bHRzIHJlYWR5IGFuZCBzZWUgd2hhdCB0aGUgZGlmZiBzYXlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTUwLCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjE4LjY0NjI5MDIyNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NDQ1MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICAgIFwibnRmc19pbnNlcnRfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowtdtwz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 11:23:14 +0000 UTC FinishedAt: 2026-07-05 11:29:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "591a925d-5d3a-423c-8eea-04927433ad91" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_non_resident_attr_insert_range", "ntfs_insert_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NmZiNzY5ZjljNjRmYmQwZDQ2MmQ4ODBiM2ViODZhOWI0Yzg1NGQ2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxMToyODozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuY1xuaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9hdHRyaWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9hdHRyaWIuY1xuQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxuIFx0cmV0ID0gbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0KG5pKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0dXBfd3JpdGUoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiYjNDM7XHRcdGtmcmVlKGhvbGVfcmwpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg2ZmI3NjlmOWM2NGZiZDBkNDYyZDg4MGIzZWI4NmE5YjRjODU0ZDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDExOjI4OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmMKaW5kZXggZGQ4ODI4MDk4NTExODMuLjU1NjAzZGYwYTJlZDdkIDEwMDY0NAotLS0gYS9mcy9udGZzL2F0dHJpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvYXR0cmliLmMKQEAgLTUzMjUsNiAmIzQzOzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNgogCXJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7CiAJaWYgKHJldCkgewogCQl1cF93cml0ZSgmYW1wO25pLSZndDtydW5saXN0LmxvY2spOwomIzQzOwkJa2ZyZWUoaG9sZV9ybCk7CiAJCXJldHVybiByZXQ7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IExlYWsgRml4IGluIE5URlMgQXR0cmlidXRlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgZnMvbnRmcy9hdHRyaWIuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBhIGBrZnJlZShob2xlX3JsKWAgY2FsbCB3aXRoaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gVGhlIHBhdGNoIG5vdGVzIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGEgbWVtb3J5IGxlYWsgZml4LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgcmlnaHQsIGBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3RgIGZhaWxpbmcgbGlrZWx5IG1lYW50IHNvbWUgcnVubGlzdCBzdHJ1Y3R1cmUgd2FzbiYjMzk7dCBjbGVhbmVkIHVwLiYjMzQ7IE1ha2VzIHNlbnNlLCB3ZSBuZWVkIHRvIGVuc3VyZSByZXNvdXJjZXMgYXJlIGZyZWVkIHdoZW4gdGhpbmdzIGdvIHNpZGV3YXlzLgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBhbmQgdmVyaWZ5IHRoZSBmaXgmIzM5O3MgY29ycmVjdG5lc3MsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGZzL250ZnMvYXR0cmliLmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIG9mIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGhvdyBgbnRmc19hdHRyX21hcF93aG9sZV9ydW5saXN0YCBpcyB1c2VkIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogd2hhdCBhcmUgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBmYWlsdXJlLCBob3cgaXMgYGhvbGVfcmxgIHVzZWQsIGFuZCBhcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBsZWFrcyB0aGF0IHN0aWxsIG5lZWQgYXR0ZW50aW9uLiBDb250ZXh0IGlzIGtleSwgYW5kIEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBiZSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hdHRyaWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbmZzL250ZnMvYXR0cmliLmMtNTMwMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb246CgoqKkRpZ2dpbmcgaW50byBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiwgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZ29pbmcgdG8gZG8gaXMgdHJhY2UgaXRzIHVzYWdlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hlcmUgaXMgdGhpcyBmdW5jdGlvbiAqYWN0dWFsbHkqIGNhbGxlZD8mIzM0OyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHRzIHdpbGwgZ2l2ZSBtZSBpbW1lZGlhdGUgaW5zaWdodCBpbnRvIHdoYXQgc2l0dWF0aW9ucyBuZWNlc3NpdGF0ZSB0aGUgaW5zZXJ0aW9uIG9mIGEgbm9uLXJlc2lkZW50IGF0dHJpYnV0ZSByYW5nZSBpbiBOVEZTLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSB0eXBlcyBvZiBvcGVyYXRpb25zIG9yIGNvbmRpdGlvbnMgdGhhdCBsZWFkIHRvIGl0cyBpbnZvY2F0aW9uLCBhbmQgdGhlcmVmb3JlLCB3aGF0IEkgbmVlZCB0byBjb25zaWRlciBmb3IgbXkgYW5hbHlzaXMuIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgYW5kIG1hcCBvdXQgaXRzIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01MzAwLVxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xuLS1cbmZzL250ZnMvYXR0cmliLmg9MTA4PWludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcbmZzL250ZnMvYXR0cmliLmg6MTA5OmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xuZnMvbnRmcy9hdHRyaWIuaC0xMTAtaW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcbi0tXG5mcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtMTAzOS1cdG11dGV4X2xvY2tfbmVzdGVkKFx1MDAyNm5pLVx1MDAzZW1yZWNfbG9jaywgTlRGU19JTk9ERV9NVVRFWF9OT1JNQUwpO1xuZnMvbnRmcy9maWxlLmM6MTA0MDpcdGVyciA9IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKG5pLCBzdGFydF92Y24sXG5mcy9udGZzL2ZpbGUuYy0xMDQxLVx0XHRcdGVuZF92Y24gLSBzdGFydF92Y24pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOgoKKipEaXZpbmcgaW50byB0aGUgTlRGUyBSYW5nZSBJbnNlcnRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBudGZzX2luc2VydF9yYW5nZWAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgZnMvbnRmcy9maWxlLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIGBudGZzX2luc2VydF9yYW5nZWAgaXRzZWxmLiYjMzQ7IEl0JiMzOTtzIGxpa2VseSBoYW5kbGluZyB0aGUgaW5zZXJ0aW9uIG9mIGRhdGEgcmFuZ2VzIHdpdGhpbiBhbiBOVEZTIGZpbGUmIzM5O3MgbWV0YWRhdGEsIGVpdGhlciBleHBhbmRpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRlIG9yIGNyZWF0aW5nIGEgbmV3IG9uZSBhbHRvZ2V0aGVyLiBVbmRlcnN0YW5kaW5nIGl0cyBleGFjdCBsb2dpYyBpcyBjcnVjaWFsIOKAkyBhcmUgd2UgZGVhbGluZyB3aXRoIGV4dGVudHMsIGZyYWdtZW50YXRpb24sIG9yIHBlcmhhcHMgc29tZSBzb3J0IG9mIG1ldGFkYXRhIHVwZGF0ZSB0byB0aGUgYCREQVRBYCBhdHRyaWJ1dGU/IFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgTUZULCB0aGUgcmVzaWRlbnQgYXR0cmlidXRlcywgYW5kIHRoZSBjbHVzdGVycyBvbiB0aGUgZGlzay4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIGhhbmRsaW5nIGEgbGFyZ2UgZmlsZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBhIGJpdCBtb3JlIGdyYW51bGFyLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgZHJpdmVyIGlzIG1hbmFnaW5nIGFueSBwb3RlbnRpYWwgZnJhZ21lbnRhdGlvbiB0aGF0IGNvdWxkIG9jY3VyIGR1cmluZyB0aGlzIHByb2Nlc3MgYW5kIGhvdyBlZmZpY2llbnRseSBpdCYjMzk7cyBoYW5kbGluZyB0aGUgZmlsZSBzeXN0ZW0mIzM5O3MgYmxvY2sgbWFwcGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvZmlsZS5jPTk0OD1zdGF0aWMgaW50IG50ZnNfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTk5My1cbmZzL250ZnMvZmlsZS5jOjk5NDpzdGF0aWMgaW50IG50ZnNfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbmZzL250ZnMvZmlsZS5jLTk5NS17XG4tLVxuZnMvbnRmcy9maWxlLmM9MTA1NT1zdGF0aWMgbG9uZyBudGZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtMTExMy1cdGNhc2UgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRTpcbmZzL250ZnMvZmlsZS5jOjExMTQ6XHRcdGVyciA9IG50ZnNfaW5zZXJ0X3JhbmdlKG5pLCBvZmZzZXQsIGxlbik7XG5mcy9udGZzL2ZpbGUuYy0xMTE1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIE5URlMgRmFsbG9jYXRlIEZpeCoqCgpSaWdodCwgc28gdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZXkmIzM5O3JlIHVzaW5nIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYC4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggaXMgZ29vZC4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBOVEZTIGltcGxlbWVudGF0aW9uLCB3aGljaCBJJiMzOTttIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZy4KCk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgTlRGUy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBhZmZlY3RlZCBzeXN0ZW0gYW5kIHNlZSBob3cgdGhpcyBmaXggaW1wYWN0cyB0aGUgbGFyZ2VyIHBpY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyB2aXRhbCB0byB0cnVseSBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXG4tLVxuZnMvbnRmcy9LY29uZmlnLTM0LVxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBDb25mdXNpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBmaWxlc3lzdGVtIHR5cGUgaXMgc2hvd2luZyBhcyBgTlRGU19GU2AuIEhtbSwgYnV0IGZvciBhIHNwbGl0IHNlY29uZCwgSSBoYWQgYSBtZW50YWwgYmxpcCDigJMgd2FzIGl0IGBOVEZTX0ZTYCBvciBgTlRGUzNfRlNgPyBHb3R0YSBrZWVwIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LCB5b3Uga25vdy4gQWxyaWdodCwgdGhlIHBhdGggZ2l2ZW4gaXMgYGZzL250ZnMvYXR0cmliLmNgLCBzbyB0aGF0IHNob3VsZCBjb25maXJtIGl0JiMzOTtzIGBOVEZTX0ZTYC4gCgpUaGUgcmVhbCBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB0aGUgY29uZmlndXJhdGlvbiBlbmFibGVzIHdyaXRlIHN1cHBvcnQuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaW1lIHRvIGRpZyBpbnRvIGBmcy9udGZzL0tjb25maWdgIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE5URlMgV3JpdGUgU3VwcG9ydCoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGludG8gYW55IGNvZGUsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSByZWxhdGVkIHRvIE5URlMgd2l0aGluIHRoZSBmaWxlIHN5c3RlbSAoYGZzL250ZnMvS2NvbmZpZ2ApIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3Igb3B0aW9ucyBjb250cm9sbGluZyB3cml0ZSBzdXBwb3J0LiYjMzQ7IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gY29ycmVjdGx5IHJlZmxlY3RzIHRoZSBpbnRlbmRlZCB3cml0ZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSBOVEZTIG1vZHVsZS4gVGhpcyBpcyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwLiBJZiB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgYXJlbiYjMzk7dCBlbmFibGVkIGhlcmUsIGFueSBhdHRlbXB0IHRvIGV4cGxvcmUgdGhlIGNvZGUgZnVydGhlciByZWdhcmRpbmcgd3JpdGUgZnVuY3Rpb25hbGl0eSBpcyBhIHdhc3RlIG9mIHRpbWUuIEl0JiMzOTtzIHRoZSBnYXRla2VlcGVyIGZvciB0aG9zZSBmZWF0dXJlcy4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBjaGVjayBiZWZvcmUgcHJvY2VlZGluZywgYXMgaXQgY29uZmlybXMgd2hldGhlciB3cml0ZSBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gY29uZmlndXJlZCBpbiB0aGUgYnVpbGQgYXQgYWxsLCB3aGljaCBpcyB0aGUgYmFzZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOVEZTXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnLTEyLVxuZnMvbnRmcy9LY29uZmlnOjEzOmNvbmZpZyBOVEZTX0RFQlVHXG5mcy9udGZzL0tjb25maWctMTQtXHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgZ290IGEgaHVuY2guIEl0IHNlZW1zIGxpa2UgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYGZzL250ZnMvS2NvbmZpZ2AsIGlzIHRoZSByaWdodCBwbGFjZSB0byBsb29rLiBJJiMzOTt2ZSBnb3QgYSBmZWVsaW5nIGl0IG1pZ2h0IGNvbnRhaW4gdGhlIG9wdGlvbiBJJiMzOTttIHNlYXJjaGluZyBmb3IsIGBOVEZTX1JXYC4gU28sIEkmIzM5O2xsIGRpdmUgcmlnaHQgaW4gYW5kIHJlYWQgYGZzL250ZnMvS2NvbmZpZ2AuIEl0JiMzOTtzIHRpbWUgdG8gY29uZmlybSBvciBkZW55IHRoaXMgc3VzcGljaW9uLCBhbmQgc2VlIHdoYXQgdGhpcyBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBOVEZTX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBOTFNcbiAgIDU6XHRcdHNlbGVjdCBGU19JT01BUFxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXG4gICA4Olx0XHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxuICAgOTpcdFxuICAxMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbiAgMTE6XHRcdCAgbnRmcy5cbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgTlRGU19ERUJVR1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxuICAxODpcdFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXG4gIDE5Olx0XHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cbiAgMjA6XHRcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXG4gIDIxOlx0XHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXG4gIDIyOlx0XHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxuICAyMzpcdFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXG4gIDI0Olx0XHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XG4gIDI1Olx0XHQgIGVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcbiAgMjY6XHRcdCAgUmVwbGFjaW5nIHRoZSBcJiMzNDsxXCYjMzQ7IHdpdGggXCYjMzQ7MFwmIzM0OyB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXG4gIDI5Olx0XHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XG4gIDMwOlx0XHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcbiAgMzM6XHRcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDM4Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xuICA0MTpcdFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XG4gIDQ0Olx0XHQgIHdpdGggbnRmczMgZHJpdmllci5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUwMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBOVEZTIExhbmRzY2FwZSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZmVlbHMgb2ZmIGhlcmUuIFdhcyB0aGUgb2xkIGBmcy9udGZzYCBmaWxlc3lzdGVtIGRyaXZlciBjb21wbGV0ZWx5IHJlbW92ZWQgb3IganVzdCByZXdvcmtlZD8gVGhpcyBjb2RlIGlzIHNwZWNpZmljYWxseSByZWZlcmVuY2luZyBgZnMvbnRmcy9hdHRyaWIuY2AsIHdoaWNoIG1ha2VzIG1lIHN1c3BlY3QgdGhlIG9sZGVyIGRyaXZlciBpcyBpbnZvbHZlZC4gV2FpdCBhIG1pbnV0ZSwgZGlkbiYjMzk7dCB0aGUgbGVnYWN5IGBmcy9udGZzYCBjb25maWd1cmF0aW9uIGhhdmUgdGhhdCBgTlRGU19SV2Agb3B0aW9uIHRvIGVuYWJsZSByZWFkL3dyaXRlIHN1cHBvcnQ/IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gaWYgdGhhdCBvcHRpb24gaXMgc3RpbGwgcHJlc2VudCBzb21ld2hlcmUuCgpIbW0sIHRoaXMgYGZzL250ZnNgIGNvZGViYXNlIHNlZW1zIHRvIGhhdmUgYHNlbGVjdCBGU19JT01BUGAuIERvZXMgdGhpcyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgdGhlIHVwZGF0ZWQgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSGFuZyBvbiwgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IHRoZSB0cnVseSBuZXcgTlRGUyBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgYGZzL250ZnMzYCBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoYXQgaXMgc2VsZWN0ZWQgYW55d2hlcmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ28gYmFjayB0byB0aGUgbGVnYWN5IGNvZGUuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgYGZzL250ZnMvS2NvbmZpZ2AgYW5kIHNlZSBpZiBgTlRGU19SV2AgZXhpc3RzIHRoZXJlLiBJdCBsb29rcyBsaWtlIGl0IGRvZXNuJiMzOTt0LiBIbW0sIHNvIGl0IHNlZW1zIGxpa2UgdGhlIG9yaWdpbmFsIGRyaXZlciB3YXNuJiMzOTt0IHNpbXBseSByZXBsYWNlZCwgYnV0IHBvc3NpYmx5IHJld3JpdHRlbiBvciB1cGRhdGVkPwoKT2theSwgbGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlIG9sZCBkcml2ZXIgaXMgc3RpbGwgb3BlcmF0aW9uYWwuIExldCYjMzk7cyBzdGFydCB3aXRoIGBmcy9udGZzL2F0dHJpYi5jYCBhbmQgc2VhcmNoIGZvciBzb21ldGhpbmcgdGhhdCBmZWVscyBkaXN0aW5jdGl2ZSwgbGlrZSBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSBjbHVlIGFzIHRvIHdoaWNoIHBhdGggdGhpcyBjb2RlIGlzIGFjdHVhbGx5IG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmM9NTI1NT12b2lkICpudGZzX2F0dHJfcmVhZGFsbChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IF9fbGUzMiB0eXBlLFxuLS1cbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cbmZzL250ZnMvYXR0cmliLmM6NTMwMTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKVxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcbi0tXG5mcy9udGZzL2F0dHJpYi5oPTEwOD1pbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib29sIGtlZXBfc2l6ZSk7XG5mcy9udGZzL2F0dHJpYi5oOjEwOTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcbmZzL250ZnMvYXR0cmliLmgtMTEwLWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XG4tLVxuZnMvbnRmcy9maWxlLmM9OTk0PXN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTEwMzktXHRtdXRleF9sb2NrX25lc3RlZChcdTAwMjZuaS1cdTAwM2VtcmVjX2xvY2ssIE5URlNfSU5PREVfTVVURVhfTk9STUFMKTtcbmZzL250ZnMvZmlsZS5jOjEwNDA6XHRlcnIgPSBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShuaSwgc3RhcnRfdmNuLFxuZnMvbnRmcy9maWxlLmMtMTA0MS1cdFx0XHRlbmRfdmNuIC0gc3RhcnRfdmNuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ2OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBmcy9udGZzYCBEcml2ZXIqKgoKSG1tLCBgZnMvbnRmc2AuLi4gdGhhdCYjMzk7cyB0aGUgbGVnYWN5IE5URlMgZHJpdmVyLCByaWdodD8gSSBjb3VsZCBoYXZlIHN3b3JuIHdlIHdlcmUgc3RpbGwgZGVhbGluZyB3aXRoIHRoZSBxdWlya3Mgb2YgcmVhZC1vbmx5IGFjY2VzcyB3aXRoIHRoYXQgb25lLiBCdXQgd2FpdC4uLiBpcyBpdCBwb3NzaWJsZSB0aGF0IHdyaXRlIHN1cHBvcnQgaXMgYWN0dWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IG5vdz8gSSBoYXZlbiYjMzk7dCBrZXB0IGNvbXBsZXRlbHkgdXAgdG8gc3BlZWQgb24gdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZS4gVGhhdCB3b3VsZCBiZSBhIHNpZ25pZmljYW50IHNoaWZ0LgoKQmVzdCB0byBjb25maXJtIHRoaXMgZGlyZWN0bHkuIExldCYjMzk7cyBkaWcgaW50byB0aGUgYGZzL250ZnMvTWFrZWZpbGVgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgZmxhZ3MgYXJlIGRvaW5nIHRoZXNlIGRheXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIHdoZXRoZXIgdGhhdCB3cml0ZSBzdXBwb3J0IGlzIHRydWx5IGFjdGl2ZSBieSBkZWZhdWx0IG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZ29pbmcgb24uIFRoYXQgTWFrZWZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGtleSBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTlRGU19GUykgJiM0Mzs9IG50ZnMub1xuICAgNDpcdFxuICAgNTpcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcbiAgIDY6XHRcdCAgbWZ0Lm8gbXN0Lm8gbmFtZWkubyBydW5saXN0Lm8gc3VwZXIubyB1bmlzdHIubyBhdHRybGlzdC5vIGVhLm8gXFxcbiAgIDc6XHRcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcbiAgIDg6XHRcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xuICAgOTpcdFxuICAxMDpcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgJiM0Mzs9IC1EREVCVUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTlRGUyBXcml0ZSBTdXBwb3J0KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYE5URlNfUldgIGlzIGdvbmUsIGFuZCB3cml0ZSBzdXBwb3J0IGlzIG5vdyBhbHdheXMgaW5jbHVkZWQsIG9yIHBlcmhhcHMgdGhpcyBpcyBhIGZvcmsgb2YgdGhlIGtlcm5lbC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZS4gQnV0IHdhaXQsIEkmIzM5O20gZ2V0dGluZyBhaGVhZCBvZiBteXNlbGYsIGBOVEZTX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiwgbm90IGBOVEZTX1JXYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGlzOyBpdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGZzL250ZnMzL0tjb25maWdgIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL250ZnMzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlMzX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOVEZTIFJlYWQtV3JpdGUgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiAhTlRGU19GUyB8fCBtXG4gICA1Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgIDY6XHRcdHNlbGVjdCBOTFNcbiAgIDc6XHRcdHNlbGVjdCBMRUdBQ1lfRElSRUNUX0lPXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFdpbmRvd3MgT1MgbmF0aXZlIGZpbGUgc3lzdGVtIChOVEZTKSBzdXBwb3J0IHVwIHRvIE5URlMgdmVyc2lvbiAzLjEuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFkgb3IgTSBlbmFibGVzIHRoZSBOVEZTMyBkcml2ZXIgd2l0aCBmdWxsIGZlYXR1cmVzIGVuYWJsZWQgKHJlYWQsXG4gIDEyOlx0XHQgIHdyaXRlLCBqb3VybmFsIHJlcGxheWluZywgc3BhcnNlL2NvbXByZXNzZWQgZmlsZXMgc3VwcG9ydCkuXG4gIDEzOlx0XHQgIEZpbGUgc3lzdGVtIHR5cGUgdG8gdXNlIG9uIG1vdW50IGlzIFwmIzM0O250ZnMzXCYjMzQ7LiBNb2R1bGUgbmFtZSAoTSBvcHRpb24pXG4gIDE0Olx0XHQgIGlzIGFsc28gXCYjMzQ7bnRmczNcJiMzNDsuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIERvY3VtZW50YXRpb246IFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzMy5yc3RcdTAwM2VcbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgTlRGUzNfNjRCSVRfQ0xVU1RFUlxuICAxOTpcdFx0Ym9vbCBcJiMzNDs2NCBiaXRzIHBlciBOVEZTIGNsdXN0ZXJzXCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIE5URlMzX0ZTIFx1MDAyNlx1MDAyNiA2NEJJVFxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBXaW5kb3dzIGltcGxlbWVudGF0aW9uIG9mIG50ZnMuc3lzIHVzZXMgMzIgYml0cyBwZXIgY2x1c3RlcnMuXG4gIDIzOlx0XHQgIElmIGFjdGl2YXRlZCA2NCBiaXRzIHBlciBjbHVzdGVycyB5b3Ugd2lsbCBiZSBhYmxlIHRvIHVzZSA0ayBjbHVzdGVyXG4gIDI0Olx0XHQgIGZvciAxNlQmIzQzOyB2b2x1bWVzLiBXaW5kb3dzIHdpbGwgbm90IGJlIGFibGUgdG8gbW91bnQgc3VjaCB2b2x1bWVzLlxuICAyNTpcdFxuICAyNjpcdFx0ICBJdCBpcyByZWNvbW1lbmRlZCB0byBzYXkgTiBoZXJlLlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBOVEZTM19MWlhfWFBSRVNTXG4gIDI5Olx0XHRib29sIFwmIzM0O2FjdGl2YXRlIHN1cHBvcnQgb2YgZXh0ZXJuYWwgY29tcHJlc3Npb25zIGx6eC94cHJlc3NcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gTlRGUzNfRlNcbiAgMzE6XHRcdGhlbHBcbiAgMzI6XHRcdCAgSW4gV2luZG93cyAxMCBvbmUgY2FuIHVzZSBjb21tYW5kIFwmIzM0O2NvbXBhY3RcJiMzNDsgdG8gY29tcHJlc3MgYW55IGZpbGVzLlxuICAzMzpcdFx0ICA0IHBvc3NpYmxlIHZhcmlhbnRzIG9mIGNvbXByZXNzaW9uIGFyZTogeHByZXNzNGssIHhwcmVzczhrLCB4cHJlc3MxNmsgYW5kIGx6eC5cbiAgMzQ6XHRcdCAgSWYgYWN0aXZhdGVkIHlvdSB3aWxsIGJlIGFibGUgdG8gcmVhZCBzdWNoIGZpbGVzIGNvcnJlY3RseS5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgSXQgaXMgcmVjb21tZW5kZWQgdG8gc2F5IFkgaGVyZS5cbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgTlRGUzNfRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gTlRGUzNfRlNcbiAgNDE6XHRcdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXG4gIDQ0Olx0XHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLFxuICA0NTpcdFx0ICBhbmQgdGhpcyBvcHRpb24gc2VsZWN0cyBzdXBwb3J0IGZvciBBQ0xzIHNwZWNpZmljYWxseSBmb3IgbnRmc1xuICA0NjpcdFx0ICBmaWxlc3lzdGVtcy5cbiAgNDc6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDg6XHRcbiAgNDk6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGBmcy9udGZzL2F0dHJpYi5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYE5URlNfRlNgIGFzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uLiBUaGUgdGFyZ2V0IGZ1bmN0aW9uIGl0c2VsZiBpcyBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLCBidXQgaXQgc2VlbXMgYE5URlNfRlNgIGlzIHRoZSBwcmltYXJ5IGRyaXZlciBoZXJlLgoKTm93LCBhIGRlZXBlciBsb29rIHJldmVhbHMgc29tZXRoaW5nIHF1aXRlIGludGVyZXN0aW5nLiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGlzICpjYWxsZWQqIGZyb20gYG50ZnNfaW5zZXJ0X3JhbmdlYCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZSBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgZmxhZyBpcyB1c2VkLiBUaGF0JiMzOTtzIGtleS4gVGhpcyBlbnRpcmUgY2hhaW4gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGZhbGxvY2F0ZWAgc3lzY2FsbCBvbiBhbiBOVEZTIGZpbGUuIFRoYXQmIzM5O3MgYSBkaXJlY3QgcGF0aCEKClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgZGVmaW5pdGVseSBgdHJ1ZWAgaW4gdGhpcyBjYXNlLiBXZSBoYXZlIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIGEgdXNlci1zcGFjZSBzeXNjYWxsLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGFuZCBgbnRmc19pbnNlcnRfcmFuZ2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgZnMvbnRmcy9hdHRyaWIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGluIHRoYXQgZmlsZSwganVzdCBpbiBjYXNlIHNvbWV0aGluZyBlbHNlIHdhcnJhbnRzIGF0dGVudGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmM9NTI1NT12b2lkICpudGZzX2F0dHJfcmVhZGFsbChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IF9fbGUzMiB0eXBlLFxuLS1cbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cbmZzL250ZnMvYXR0cmliLmM6NTMwMTppbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKVxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU2OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG50ZnNfaW5zZXJ0X3JhbmdlYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGBmcy9udGZzL2ZpbGUuY2AgYW5kIHNwZWNpZmljYWxseSBjaGVjayBvdXQgYG50ZnNfaW5zZXJ0X3JhbmdlYC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIGxpa2VseSBhIGZpbGUgc3lzdGVtIGlzc3VlKSwgSSBzdXNwZWN0IEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgaG93IGRhdGEgaXMgaW5zZXJ0ZWQgaW50byB0aGUgZmlsZSYjMzk7cyBhbGxvY2F0ZWQgZXh0ZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgdGhpcyBmdW5jdGlvbi4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgb3ZlcmxhcHMsIGZyYWdtZW50YXRpb24sIGFuZCBwb3NzaWJseSBhdHRyaWJ1dGUgdXBkYXRlcyByZWxhdGVkIHRvIHNpemUgY2hhbmdlcyBvciBleHRlbnQgbWFuaXB1bGF0aW9ucy4gSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzIHRoYXQgY291bGQgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jeSwgZXNwZWNpYWxseSBpZiB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgY29uY3VycmVudCB3cml0ZSBvcGVyYXRpb25zLiBJIG5lZWQgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgQi10cmVlIHN0cnVjdHVyZXMgdXNlZCBmb3IgbWV0YWRhdGEuIElzIHRoZXJlIHBvdGVudGlhbCBmb3IgZGVhZGxvY2s/IEFyZSB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgcm9idXN0IGVub3VnaD8gSSYjMzk7bGwgYmUgZXhwZWN0aW5nIHRvIHNlZSBhIGxvdCBvZiBwb2ludGVyIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucywgc28gSSBuZWVkIHRvIGJlIGZvY3VzZWQgdG8gYXZvaWQgbWlzc2luZyBhbnkgc3VidGxlIGxvZ2ljIGVycm9ycy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIGZpbGUgYWxsb2NhdGlvbiBzdHJhdGVneSwgc28gSeKAmW0gZ29pbmcgdG8gZm9jdXMgaW4gb24gaG93IGl0IGhhbmRsZXMgdGhlIGRpZmZlcmVudCBlZGdlIGNhc2VzIHJlbGF0ZWQgdG8gYWxsb2NhdGlvbi4gSSBrbm93IGhvdyB0cmlja3kgTlRGUyBjYW4gYmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDExOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfaW5zZXJ0X3JhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9maWxlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9maWxlLmM9OTQ4PXN0YXRpYyBpbnQgbnRmc19jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXG4tLVxuZnMvbnRmcy9maWxlLmMtOTkzLVxuZnMvbnRmcy9maWxlLmM6OTk0OnN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuZnMvbnRmcy9maWxlLmMtOTk1LXtcbi0tXG5mcy9udGZzL2ZpbGUuYz0xMDU1PXN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbi0tXG5mcy9udGZzL2ZpbGUuYy0xMTEzLVx0Y2FzZSBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFOlxuZnMvbnRmcy9maWxlLmM6MTExNDpcdFx0ZXJyID0gbnRmc19pbnNlcnRfcmFuZ2UobmksIG9mZnNldCwgbGVuKTtcbmZzL250ZnMvZmlsZS5jLTExMTUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTUwCgkJCQkJCQlvdXRwdXQ6IDEwNQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkZpeGluZyBhbiBOVEZTIE1lbW9yeSBMZWFrKioKClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIHNxdWFyZWx5IGF0IGEgbWVtb3J5IGxlYWsgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gY29kZS4gTXkgZm9jdXMgaW1tZWRpYXRlbHkgbmFycm93cyB0byB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbi4gSSByZWNvZ25pemUgdGhhdCBvbmU7IGl0JiMzOTtzIHJlbGF0ZWQgdG8gaG93IE5URlMgaGFuZGxlcyBub24tcmVzaWRlbnQgYXR0cmlidXRlcywgYW5kIEkgc2VlIGl0JiMzOTtzIHNwZWNpZmljYWxseSB2dWxuZXJhYmxlIHdoZW4gYGZhbGxvY2F0ZWAgd2l0aCB0aGUgYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIGZsYWcgaXMgdXNlZCBvbiBhbiBOVEZTIGZpbGUuIFRoYXQgY29udGV4dCBoZWxwcyBtZSBxdWlja2x5IHplcm8gaW4gb24gd2hlcmUgdGhlIHByb2JsZW0gbGlrZWx5IGV4aXN0cyB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuIFRoZSBgbnRmc19pbnNlcnRfcmFuZ2VgIGNhbGwgaXMgaW1wb3J0YW50IHRvbyAtIHRoYXQgaGVscHMgc2V0IHRoZSBzdGFnZSBhbmQgbGlrZWx5IHJlcHJlc2VudHMgdGhlIHVsdGltYXRlIG9wZXJhdGlvbiBhdCBwbGF5LiBUaGlzIGlzIGNsZWFybHkgYSBjYXNlIHdoZXJlIHJlc291cmNlIGFsbG9jYXRpb24gd2FzbiYjMzk7dCBwcm9wZXJseSBiYWxhbmNlZCB3aXRoIHJlc291cmNlIHJlbGVhc2Ugd2l0aGluIHRoZSBjb250ZXh0IG9mIGluc2VydGluZyBhIHJhbmdlLiBMZXQmIzM5O3MgZ2V0IHRoZSBzZXQtcmVzdWx0cyByZWFkeSBhbmQgc2VlIHdoYXQgdGhlIGRpZmYgc2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZSYjMzQ7LAogICAgJiMzNDtudGZzX2luc2VydF9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODozNC4wODQwNTE0NzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY0MTY5NTU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODozNC4wODQwNTc1NTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MDEwODY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg2ZmI3NjlmOWM2NGZiZDBkNDYyZDg4MGIzZWI4NmE5YjRjODU0ZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgNSAxMToyODozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuY1xcbmluZGV4IGRkODgyODA5ODUxMTgzLi41NTYwM2RmMGEyZWQ3ZCAxMDA2NDRcXG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXFxuKysrIGIvZnMvbnRmcy9hdHRyaWIuY1xcbkBAIC01MzI1LDYgKzUzMjUsNyBAQCBpbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNlxcbiBcXHRyZXQgPSBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3QobmkpO1xcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdHVwX3dyaXRlKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG4rXFx0XFx0a2ZyZWUoaG9sZV9ybCk7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjM0LjQ1NDk4ODExM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNzA3NTEwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlXCIsXG4gICAgXCJudGZzX2luc2VydF9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGBmYWxsb2NhdGVgIHdpdGggYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgIG9uIGFuIE5URlMgZmlsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NmZiNzY5ZjljNjRmYmQwZDQ2MmQ4ODBiM2ViODZhOWI0Yzg1NGQ2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxMToyODozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uNTU2MDNkZjBhMmVkN2QgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXG4rKysgYi9mcy9udGZzL2F0dHJpYi5jXG5AQCAtNTMyNSw2ICs1MzI1LDcgQEAgaW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczZcbiBcdHJldCA9IG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdChuaSk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdHVwX3dyaXRlKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4rXHRcdGtmcmVlKGhvbGVfcmwpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6MzQuNDU0OTg5NjEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MTYxNjM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgTGVhayBGaXggaW4gTlRGUyBBdHRyaWJ1dGUgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBmcy9udGZzL2F0dHJpYi5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgYGtmcmVlKGhvbGVfcmwpYCBjYWxsIHdpdGhpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgLiBUaGUgcGF0Y2ggbm90ZXMgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYSBtZW1vcnkgbGVhayBmaXguIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCByaWdodCwgYG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdGAgZmFpbGluZyBsaWtlbHkgbWVhbnQgc29tZSBydW5saXN0IHN0cnVjdHVyZSB3YXNuJ3QgY2xlYW5lZCB1cC5cIiBNYWtlcyBzZW5zZSwgd2UgbmVlZCB0byBlbnN1cmUgcmVzb3VyY2VzIGFyZSBmcmVlZCB3aGVuIHRoaW5ncyBnbyBzaWRld2F5cy5cblxuVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBhbmQgdmVyaWZ5IHRoZSBmaXgncyBjb3JyZWN0bmVzcywgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBmcy9udGZzL2F0dHJpYi5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBvZiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGFuZCBob3cgYG50ZnNfYXR0cl9tYXBfd2hvbGVfcnVubGlzdGAgaXMgdXNlZCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogd2hhdCBhcmUgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBmYWlsdXJlLCBob3cgaXMgYGhvbGVfcmxgIHVzZWQsIGFuZCBhcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBsZWFrcyB0aGF0IHN0aWxsIG5lZWQgYXR0ZW50aW9uLiBDb250ZXh0IGlzIGtleSwgYW5kIEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSB0byBiZSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6MzguMzk2NjA3NjE0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTU0NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvYXR0cmliLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hdHRyaWIuYz01MjU1PXZvaWQgKm50ZnNfYXR0cl9yZWFkYWxsKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgX19sZTMyIHR5cGUsXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTUzMDAtXFxuZnMvbnRmcy9hdHRyaWIuYzo1MzAxOmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXFxuZnMvbnRmcy9hdHRyaWIuYy01MzAyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6MzguNDU1NTcyMjA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYxOTcyMDI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb246XG5cbioqRGlnZ2luZyBpbnRvIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24sIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAuIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgdHJhY2UgaXRzIHVzYWdlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZywgXCJXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uICphY3R1YWxseSogY2FsbGVkP1wiIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dHMgd2lsbCBnaXZlIG1lIGltbWVkaWF0ZSBpbnNpZ2h0IGludG8gd2hhdCBzaXR1YXRpb25zIG5lY2Vzc2l0YXRlIHRoZSBpbnNlcnRpb24gb2YgYSBub24tcmVzaWRlbnQgYXR0cmlidXRlIHJhbmdlIGluIE5URlMuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHR5cGVzIG9mIG9wZXJhdGlvbnMgb3IgY29uZGl0aW9ucyB0aGF0IGxlYWQgdG8gaXRzIGludm9jYXRpb24sIGFuZCB0aGVyZWZvcmUsIHdoYXQgSSBuZWVkIHRvIGNvbnNpZGVyIGZvciBteSBhbmFseXNpcy4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgY29udHJvbCBmbG93IGFuZCBtYXAgb3V0IGl0cyBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM2NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQxLjA3NTI5NDY0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDgxMzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuaD0xMDg9aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xcbmZzL250ZnMvYXR0cmliLmg6MTA5OmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbmZzL250ZnMvYXR0cmliLmgtMTEwLWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMDM5LVxcdG11dGV4X2xvY2tfbmVzdGVkKFxcdTAwMjZuaS1cXHUwMDNlbXJlY19sb2NrLCBOVEZTX0lOT0RFX01VVEVYX05PUk1BTCk7XFxuZnMvbnRmcy9maWxlLmM6MTA0MDpcXHRlcnIgPSBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShuaSwgc3RhcnRfdmNuLFxcbmZzL250ZnMvZmlsZS5jLTEwNDEtXFx0XFx0XFx0ZW5kX3ZjbiAtIHN0YXJ0X3Zjbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQxLjI3MDExMzY2NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTUxMTQwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVEZTIFJhbmdlIEluc2VydGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBudGZzX2luc2VydF9yYW5nZWAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgZnMvbnRmcy9maWxlLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBsZXQncyBkcmlsbCBkb3duIGludG8gYG50ZnNfaW5zZXJ0X3JhbmdlYCBpdHNlbGYuXCIgSXQncyBsaWtlbHkgaGFuZGxpbmcgdGhlIGluc2VydGlvbiBvZiBkYXRhIHJhbmdlcyB3aXRoaW4gYW4gTlRGUyBmaWxlJ3MgbWV0YWRhdGEsIGVpdGhlciBleHBhbmRpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRlIG9yIGNyZWF0aW5nIGEgbmV3IG9uZSBhbHRvZ2V0aGVyLiBVbmRlcnN0YW5kaW5nIGl0cyBleGFjdCBsb2dpYyBpcyBjcnVjaWFsIOKAkyBhcmUgd2UgZGVhbGluZyB3aXRoIGV4dGVudHMsIGZyYWdtZW50YXRpb24sIG9yIHBlcmhhcHMgc29tZSBzb3J0IG9mIG1ldGFkYXRhIHVwZGF0ZSB0byB0aGUgYCREQVRBYCBhdHRyaWJ1dGU/IFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgTUZULCB0aGUgcmVzaWRlbnQgYXR0cmlidXRlcywgYW5kIHRoZSBjbHVzdGVycyBvbiB0aGUgZGlzay4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGlzIGhhbmRsaW5nIGEgbGFyZ2UgZmlsZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBhIGJpdCBtb3JlIGdyYW51bGFyLiBMZXQncyBzZWUgaG93IHRoZSBkcml2ZXIgaXMgbWFuYWdpbmcgYW55IHBvdGVudGlhbCBmcmFnbWVudGF0aW9uIHRoYXQgY291bGQgb2NjdXIgZHVyaW5nIHRoaXMgcHJvY2VzcyBhbmQgaG93IGVmZmljaWVudGx5IGl0J3MgaGFuZGxpbmcgdGhlIGZpbGUgc3lzdGVtJ3MgYmxvY2sgbWFwcGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQ0LjI2NTIyOTY2OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3MDQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz05NDg9c3RhdGljIGludCBudGZzX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTk5My1cXG5mcy9udGZzL2ZpbGUuYzo5OTQ6c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuZnMvbnRmcy9maWxlLmMtOTk1LXtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTEwNTU9c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTExMy1cXHRjYXNlIEZBTExPQ19GTF9JTlNFUlRfUkFOR0U6XFxuZnMvbnRmcy9maWxlLmM6MTExNDpcXHRcXHRlcnIgPSBudGZzX2luc2VydF9yYW5nZShuaSwgb2Zmc2V0LCBsZW4pO1xcbmZzL250ZnMvZmlsZS5jLTExMTUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQ0LjMyMjAwOTU3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NjQwNjU5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBOVEZTIEZhbGxvY2F0ZSBGaXgqKlxuXG5SaWdodCwgc28gdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZXkncmUgdXNpbmcgYEZBTExPQ19GTF9JTlNFUlRfUkFOR0VgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBnb29kLiBUaGUgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5URlMgaW1wbGVtZW50YXRpb24sIHdoaWNoIEknbSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgTlRGUy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBhZmZlY3RlZCBzeXN0ZW0gYW5kIHNlZSBob3cgdGhpcyBmaXggaW1wYWN0cyB0aGUgbGFyZ2VyIHBpY3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyB2aXRhbCB0byB0cnVseSBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTU0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NDYuOTg2MDc3MTgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUxODMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI4OjQ3LjA0MzYwMTY1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTY3MjY1MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5URlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uIENvbmZ1c2lvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBmaWxlc3lzdGVtIHR5cGUgaXMgc2hvd2luZyBhcyBgTlRGU19GU2AuIEhtbSwgYnV0IGZvciBhIHNwbGl0IHNlY29uZCwgSSBoYWQgYSBtZW50YWwgYmxpcCDigJMgd2FzIGl0IGBOVEZTX0ZTYCBvciBgTlRGUzNfRlNgPyBHb3R0YSBrZWVwIHRoZSBkZXRhaWxzIHN0cmFpZ2h0LCB5b3Uga25vdy4gQWxyaWdodCwgdGhlIHBhdGggZ2l2ZW4gaXMgYGZzL250ZnMvYXR0cmliLmNgLCBzbyB0aGF0IHNob3VsZCBjb25maXJtIGl0J3MgYE5URlNfRlNgLiBcblxuVGhlIHJlYWwgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGNvbmZpZ3VyYXRpb24gZW5hYmxlcyB3cml0ZSBzdXBwb3J0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBJIG1ha2UgYW55IGFzc3VtcHRpb25zLiBMZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaW1lIHRvIGRpZyBpbnRvIGBmcy9udGZzL0tjb25maWdgIGFuZCB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MjEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODo1MC4yMTA4Njg5NDZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODkxNDI2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19SV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTAuMjY3NzczMzYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDg0MzA4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgTlRGUyBXcml0ZSBTdXBwb3J0KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBjb2RlLCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gSSdtIHRoaW5raW5nLCBcIkxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIHJlbGF0ZWQgdG8gTlRGUyB3aXRoaW4gdGhlIGZpbGUgc3lzdGVtIChgZnMvbnRmcy9LY29uZmlnYCkgYW5kIHNwZWNpZmljYWxseSBsb29rIGZvciBvcHRpb25zIGNvbnRyb2xsaW5nIHdyaXRlIHN1cHBvcnQuXCIgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBjb3JyZWN0bHkgcmVmbGVjdHMgdGhlIGludGVuZGVkIHdyaXRlIGNhcGFiaWxpdGllcyBmb3IgdGhlIE5URlMgbW9kdWxlLiBUaGlzIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuIElmIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBhcmVuJ3QgZW5hYmxlZCBoZXJlLCBhbnkgYXR0ZW1wdCB0byBleHBsb3JlIHRoZSBjb2RlIGZ1cnRoZXIgcmVnYXJkaW5nIHdyaXRlIGZ1bmN0aW9uYWxpdHkgaXMgYSB3YXN0ZSBvZiB0aW1lLiBJdCdzIHRoZSBnYXRla2VlcGVyIGZvciB0aG9zZSBmZWF0dXJlcy4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBjaGVjayBiZWZvcmUgcHJvY2VlZGluZywgYXMgaXQgY29uZmlybXMgd2hldGhlciB3cml0ZSBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gY29uZmlndXJlZCBpbiB0aGUgYnVpbGQgYXQgYWxsLCB3aGljaCBpcyB0aGUgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyODo1My40NzYyMDYxNDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjA2MTY3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTEyLVxcbmZzL250ZnMvS2NvbmZpZzoxMzpjb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTMuNjQyMjczMDg1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzODEzNzU5NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gcHJldHR5IHN1cmUgSSd2ZSBnb3QgYSBodW5jaC4gSXQgc2VlbXMgbGlrZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBgZnMvbnRmcy9LY29uZmlnYCwgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIGxvb2suIEkndmUgZ290IGEgZmVlbGluZyBpdCBtaWdodCBjb250YWluIHRoZSBvcHRpb24gSSdtIHNlYXJjaGluZyBmb3IsIGBOVEZTX1JXYC4gU28sIEknbGwgZGl2ZSByaWdodCBpbiBhbmQgcmVhZCBgZnMvbnRmcy9LY29uZmlnYC4gSXQncyB0aW1lIHRvIGNvbmZpcm0gb3IgZGVueSB0aGlzIHN1c3BpY2lvbiwgYW5kIHNlZSB3aGF0IHRoaXMgZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjEwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTYuMDIzNjUwODc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL250ZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOVEZTX0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDU6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cXG4gICA4OlxcdFxcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuICAxMTpcXHRcXHQgIG50ZnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBOVEZTX0RFQlVHXFxuICAxNDpcXHRcXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIHRoZSBOVEZTIGZpbGUgc3lzdGVtLCBzYXlcXG4gIDE4OlxcdFxcdCAgWSBoZXJlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNrcyB0byBiZVxcbiAgMTk6XFx0XFx0ICBwZXJmb3JtZWQgYnkgdGhlIGRyaXZlciBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgZGVidWdnaW5nIG1lc3NhZ2VzIHRvXFxuICAyMDpcXHRcXHQgIGJlIHdyaXR0ZW4gdG8gdGhlIHN5c3RlbSBsb2cuICBOb3RlIHRoYXQgZGVidWdnaW5nIG1lc3NhZ2VzIGFyZVxcbiAgMjE6XFx0XFx0ICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVG8gZW5hYmxlIHRoZW0sIHN1cHBseSB0aGUgb3B0aW9uIGRlYnVnX21zZ3M9MVxcbiAgMjI6XFx0XFx0ICBhdCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbCBvciBhcyBhbiBvcHRpb25cXG4gIDIzOlxcdFxcdCAgdG8gaW5zbW9kIHdoZW4gbG9hZGluZyB0aGUgbnRmcyBtb2R1bGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgYWN0aXZlLFxcbiAgMjQ6XFx0XFx0ICB5b3UgY2FuIGVuYWJsZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgYnkgZG9pbmcgKGFzIHJvb3QpOlxcbiAgMjU6XFx0XFx0ICBlY2hvIDEgXFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xcbiAgMjY6XFx0XFx0ICBSZXBsYWNpbmcgdGhlIFxcXCIxXFxcIiB3aXRoIFxcXCIwXFxcIiB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcXG4gIDI5OlxcdFxcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcXG4gIDMwOlxcdFxcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBXaGVuIHJlcG9ydGluZyBidWdzLCBwbGVhc2UgdHJ5IHRvIGhhdmUgYXZhaWxhYmxlIGEgZnVsbCBkdW1wIG9mXFxuICAzMzpcXHRcXHQgIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSB0aGUgbWlzYmVoYXZpb3VyIHdhcyBvY2N1cnJpbmcuXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMzg6XFx0XFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBhZGRpdGlvbmFsIGFjY2VzcyByaWdodHNcXG4gIDQxOlxcdFxcdCAgZm9yIHVzZXJzIGFuZCBncm91cHMgYmV5b25kIHRoZSBzdGFuZGFyZCBvd25lci9ncm91cC93b3JsZCBzY2hlbWUuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XFxuICA0NDpcXHRcXHQgIHdpdGggbnRmczMgZHJpdmllci5cXG4gIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjg6NTYuMDIzNzE1NDU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTA3MzU0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTlRGUyBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZmVlbHMgb2ZmIGhlcmUuIFdhcyB0aGUgb2xkIGBmcy9udGZzYCBmaWxlc3lzdGVtIGRyaXZlciBjb21wbGV0ZWx5IHJlbW92ZWQgb3IganVzdCByZXdvcmtlZD8gVGhpcyBjb2RlIGlzIHNwZWNpZmljYWxseSByZWZlcmVuY2luZyBgZnMvbnRmcy9hdHRyaWIuY2AsIHdoaWNoIG1ha2VzIG1lIHN1c3BlY3QgdGhlIG9sZGVyIGRyaXZlciBpcyBpbnZvbHZlZC4gV2FpdCBhIG1pbnV0ZSwgZGlkbid0IHRoZSBsZWdhY3kgYGZzL250ZnNgIGNvbmZpZ3VyYXRpb24gaGF2ZSB0aGF0IGBOVEZTX1JXYCBvcHRpb24gdG8gZW5hYmxlIHJlYWQvd3JpdGUgc3VwcG9ydD8gSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBpZiB0aGF0IG9wdGlvbiBpcyBzdGlsbCBwcmVzZW50IHNvbWV3aGVyZS5cblxuSG1tLCB0aGlzIGBmcy9udGZzYCBjb2RlYmFzZSBzZWVtcyB0byBoYXZlIGBzZWxlY3QgRlNfSU9NQVBgLiBEb2VzIHRoaXMgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIHRoZSB1cGRhdGVkIGRyaXZlciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEhhbmcgb24sIEknbSBwcmV0dHkgc3VyZSB0aGF0IHRoZSB0cnVseSBuZXcgTlRGUyBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgYGZzL250ZnMzYCBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoYXQgaXMgc2VsZWN0ZWQgYW55d2hlcmUuXG5cbkFscmlnaHQsIGxldCdzIGdvIGJhY2sgdG8gdGhlIGxlZ2FjeSBjb2RlLiBJdCdzIHRpbWUgdG8gY2hlY2sgYGZzL250ZnMvS2NvbmZpZ2AgYW5kIHNlZSBpZiBgTlRGU19SV2AgZXhpc3RzIHRoZXJlLiBJdCBsb29rcyBsaWtlIGl0IGRvZXNuJ3QuIEhtbSwgc28gaXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgZHJpdmVyIHdhc24ndCBzaW1wbHkgcmVwbGFjZWQsIGJ1dCBwb3NzaWJseSByZXdyaXR0ZW4gb3IgdXBkYXRlZD9cblxuT2theSwgbGV0J3Mgc3RhcnQgZGlnZ2luZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGUgb2xkIGRyaXZlciBpcyBzdGlsbCBvcGVyYXRpb25hbC4gTGV0J3Mgc3RhcnQgd2l0aCBgZnMvbnRmcy9hdHRyaWIuY2AgYW5kIHNlYXJjaCBmb3Igc29tZXRoaW5nIHRoYXQgZmVlbHMgZGlzdGluY3RpdmUsIGxpa2UgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYC4gVGhhdCBtaWdodCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBwYXRoIHRoaXMgY29kZSBpcyBhY3R1YWxseSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUwMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjAwLjgxNDQ1MjY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTY1MjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuaD0xMDg9aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xcbmZzL250ZnMvYXR0cmliLmg6MTA5OmludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbmZzL250ZnMvYXR0cmliLmgtMTEwLWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbik7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMDM5LVxcdG11dGV4X2xvY2tfbmVzdGVkKFxcdTAwMjZuaS1cXHUwMDNlbXJlY19sb2NrLCBOVEZTX0lOT0RFX01VVEVYX05PUk1BTCk7XFxuZnMvbnRmcy9maWxlLmM6MTA0MDpcXHRlcnIgPSBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShuaSwgc3RhcnRfdmNuLFxcbmZzL250ZnMvZmlsZS5jLTEwNDEtXFx0XFx0XFx0ZW5kX3ZjbiAtIHN0YXJ0X3Zjbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjAwLjg3NDEyNTUxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk1MjgzMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgZnMvbnRmc2AgRHJpdmVyKipcblxuSG1tLCBgZnMvbnRmc2AuLi4gdGhhdCdzIHRoZSBsZWdhY3kgTlRGUyBkcml2ZXIsIHJpZ2h0PyBJIGNvdWxkIGhhdmUgc3dvcm4gd2Ugd2VyZSBzdGlsbCBkZWFsaW5nIHdpdGggdGhlIHF1aXJrcyBvZiByZWFkLW9ubHkgYWNjZXNzIHdpdGggdGhhdCBvbmUuIEJ1dCB3YWl0Li4uIGlzIGl0IHBvc3NpYmxlIHRoYXQgd3JpdGUgc3VwcG9ydCBpcyBhY3R1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgbm93PyBJIGhhdmVuJ3Qga2VwdCBjb21wbGV0ZWx5IHVwIHRvIHNwZWVkIG9uIHRoaXMgcGFydGljdWxhciBtb2R1bGUuIFRoYXQgd291bGQgYmUgYSBzaWduaWZpY2FudCBzaGlmdC5cblxuQmVzdCB0byBjb25maXJtIHRoaXMgZGlyZWN0bHkuIExldCdzIGRpZyBpbnRvIHRoZSBgZnMvbnRmcy9NYWtlZmlsZWAgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBmbGFncyBhcmUgZG9pbmcgdGhlc2UgZGF5cy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIgb24gd2hldGhlciB0aGF0IHdyaXRlIHN1cHBvcnQgaXMgdHJ1bHkgYWN0aXZlIGJ5IGRlZmF1bHQgb3IgaWYgdGhlcmUncyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGdvaW5nIG9uLiBUaGF0IE1ha2VmaWxlIHNob3VsZCBjb250YWluIHRoZSBrZXkgaW5mb3JtYXRpb24gdGhhdCBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOTowMy45Njk0MTEwMDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19OVEZTX0ZTKSArPSBudGZzLm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuICAgNjpcXHRcXHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXFxcXG4gICA3OlxcdFxcdCAgdXBjYXNlLm8gYml0bWFwLm8gbGNuYWxsb2MubyBsb2dmaWxlLm8gcmVwYXJzZS5vIGNvbXByZXNzLm8gXFxcXFxcbiAgIDg6XFx0XFx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNjZmxhZ3MtJChDT05GSUdfTlRGU19ERUJVRykgKz0gLURERUJVR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOTowMy45Njk0Njk5OTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3MDU1MjQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE5URlMgV3JpdGUgU3VwcG9ydCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYE5URlNfUldgIGlzIGdvbmUsIGFuZCB3cml0ZSBzdXBwb3J0IGlzIG5vdyBhbHdheXMgaW5jbHVkZWQsIG9yIHBlcmhhcHMgdGhpcyBpcyBhIGZvcmsgb2YgdGhlIGtlcm5lbC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBCdXQgd2FpdCwgSSdtIGdldHRpbmcgYWhlYWQgb2YgbXlzZWxmLCBgTlRGU19GU2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIG5vdCBgTlRGU19SV2AuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhpczsgaXQncyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4gSSdsbCB0YWtlIGEgbG9vayBhdCBgZnMvbnRmczMvS2NvbmZpZ2AganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhlIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjA2Ljg0MDAyNDY4M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzMy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlMzX0ZTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlRGUyBSZWFkLVdyaXRlIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uICFOVEZTX0ZTIHx8IG1cXG4gICA1OlxcdFxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbiAgIDY6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDc6XFx0XFx0c2VsZWN0IExFR0FDWV9ESVJFQ1RfSU9cXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgV2luZG93cyBPUyBuYXRpdmUgZmlsZSBzeXN0ZW0gKE5URlMpIHN1cHBvcnQgdXAgdG8gTlRGUyB2ZXJzaW9uIDMuMS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBZIG9yIE0gZW5hYmxlcyB0aGUgTlRGUzMgZHJpdmVyIHdpdGggZnVsbCBmZWF0dXJlcyBlbmFibGVkIChyZWFkLFxcbiAgMTI6XFx0XFx0ICB3cml0ZSwgam91cm5hbCByZXBsYXlpbmcsIHNwYXJzZS9jb21wcmVzc2VkIGZpbGVzIHN1cHBvcnQpLlxcbiAgMTM6XFx0XFx0ICBGaWxlIHN5c3RlbSB0eXBlIHRvIHVzZSBvbiBtb3VudCBpcyBcXFwibnRmczNcXFwiLiBNb2R1bGUgbmFtZSAoTSBvcHRpb24pXFxuICAxNDpcXHRcXHQgIGlzIGFsc28gXFxcIm50ZnMzXFxcIi5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBEb2N1bWVudGF0aW9uOiBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL250ZnMzLnJzdFxcdTAwM2VcXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE5URlMzXzY0QklUX0NMVVNURVJcXG4gIDE5OlxcdFxcdGJvb2wgXFxcIjY0IGJpdHMgcGVyIE5URlMgY2x1c3RlcnNcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIE5URlMzX0ZTIFxcdTAwMjZcXHUwMDI2IDY0QklUXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgbnRmcy5zeXMgdXNlcyAzMiBiaXRzIHBlciBjbHVzdGVycy5cXG4gIDIzOlxcdFxcdCAgSWYgYWN0aXZhdGVkIDY0IGJpdHMgcGVyIGNsdXN0ZXJzIHlvdSB3aWxsIGJlIGFibGUgdG8gdXNlIDRrIGNsdXN0ZXJcXG4gIDI0OlxcdFxcdCAgZm9yIDE2VCsgdm9sdW1lcy4gV2luZG93cyB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vdW50IHN1Y2ggdm9sdW1lcy5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0ICBJdCBpcyByZWNvbW1lbmRlZCB0byBzYXkgTiBoZXJlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTlRGUzNfTFpYX1hQUkVTU1xcbiAgMjk6XFx0XFx0Ym9vbCBcXFwiYWN0aXZhdGUgc3VwcG9ydCBvZiBleHRlcm5hbCBjb21wcmVzc2lvbnMgbHp4L3hwcmVzc1xcXCJcXG4gIDMwOlxcdFxcdGRlcGVuZHMgb24gTlRGUzNfRlNcXG4gIDMxOlxcdFxcdGhlbHBcXG4gIDMyOlxcdFxcdCAgSW4gV2luZG93cyAxMCBvbmUgY2FuIHVzZSBjb21tYW5kIFxcXCJjb21wYWN0XFxcIiB0byBjb21wcmVzcyBhbnkgZmlsZXMuXFxuICAzMzpcXHRcXHQgIDQgcG9zc2libGUgdmFyaWFudHMgb2YgY29tcHJlc3Npb24gYXJlOiB4cHJlc3M0aywgeHByZXNzOGssIHhwcmVzczE2ayBhbmQgbHp4LlxcbiAgMzQ6XFx0XFx0ICBJZiBhY3RpdmF0ZWQgeW91IHdpbGwgYmUgYWJsZSB0byByZWFkIHN1Y2ggZmlsZXMgY29ycmVjdGx5LlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNheSBZIGhlcmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBOVEZTM19GU19QT1NJWF9BQ0xcXG4gIDM5OlxcdFxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIE5URlMzX0ZTXFxuICA0MTpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDQ6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZSxcXG4gIDQ1OlxcdFxcdCAgYW5kIHRoaXMgb3B0aW9uIHNlbGVjdHMgc3VwcG9ydCBmb3IgQUNMcyBzcGVjaWZpY2FsbHkgZm9yIG50ZnNcXG4gIDQ2OlxcdFxcdCAgZmlsZXN5c3RlbXMuXFxuICA0NzpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOTowNi44NDAwOTMyOTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNDkwNDk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5URlMgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYGZzL250ZnMvYXR0cmliLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBgTlRGU19GU2AgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIFRoZSB0YXJnZXQgZnVuY3Rpb24gaXRzZWxmIGlzIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncywgYnV0IGl0IHNlZW1zIGBOVEZTX0ZTYCBpcyB0aGUgcHJpbWFyeSBkcml2ZXIgaGVyZS5cblxuTm93LCBhIGRlZXBlciBsb29rIHJldmVhbHMgc29tZXRoaW5nIHF1aXRlIGludGVyZXN0aW5nLiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIGlzICpjYWxsZWQqIGZyb20gYG50ZnNfaW5zZXJ0X3JhbmdlYCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgYnkgYG50ZnNfZmFsbG9jYXRlYCB3aGVuIHRoZSBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgZmxhZyBpcyB1c2VkLiBUaGF0J3Mga2V5LiBUaGlzIGVudGlyZSBjaGFpbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIG9uIGFuIE5URlMgZmlsZS4gVGhhdCdzIGEgZGlyZWN0IHBhdGghXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgZGVmaW5pdGVseSBgdHJ1ZWAgaW4gdGhpcyBjYXNlLiBXZSBoYXZlIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIGEgdXNlci1zcGFjZSBzeXNjYWxsLiBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgYW5kIGBudGZzX2luc2VydF9yYW5nZWAuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgZnMvbnRmcy9hdHRyaWIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGluIHRoYXQgZmlsZSwganVzdCBpbiBjYXNlIHNvbWV0aGluZyBlbHNlIHdhcnJhbnRzIGF0dGVudGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg5NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjExLjI2NTAwMDQ0N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNTc5MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9hdHRyaWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTUyNTU9dm9pZCAqbnRmc19hdHRyX3JlYWRhbGwoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBjb25zdCBfX2xlMzIgdHlwZSxcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtNTMwMC1cXG5mcy9udGZzL2F0dHJpYi5jOjUzMDE6aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcXG5mcy9udGZzL2F0dHJpYi5jLTUzMDIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxMToyOToxMS4zMjIwNjI2MDJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0NTQyNDM3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbnRmc19pbnNlcnRfcmFuZ2VgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGBmcy9udGZzL2ZpbGUuY2AgYW5kIHNwZWNpZmljYWxseSBjaGVjayBvdXQgYG50ZnNfaW5zZXJ0X3JhbmdlYC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIGxpa2VseSBhIGZpbGUgc3lzdGVtIGlzc3VlKSwgSSBzdXNwZWN0IEknbGwgYmUgbG9va2luZyBhdCBob3cgZGF0YSBpcyBpbnNlcnRlZCBpbnRvIHRoZSBmaWxlJ3MgYWxsb2NhdGVkIGV4dGVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoaXMgZnVuY3Rpb24uIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgb3ZlcmxhcHMsIGZyYWdtZW50YXRpb24sIGFuZCBwb3NzaWJseSBhdHRyaWJ1dGUgdXBkYXRlcyByZWxhdGVkIHRvIHNpemUgY2hhbmdlcyBvciBleHRlbnQgbWFuaXB1bGF0aW9ucy4gSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmN5LCBlc3BlY2lhbGx5IGlmIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBjb25jdXJyZW50IHdyaXRlIG9wZXJhdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBCLXRyZWUgc3RydWN0dXJlcyB1c2VkIGZvciBtZXRhZGF0YS4gSXMgdGhlcmUgcG90ZW50aWFsIGZvciBkZWFkbG9jaz8gQXJlIHRoZSBlcnJvciBoYW5kbGluZyBwYXRocyByb2J1c3QgZW5vdWdoPyBJJ2xsIGJlIGV4cGVjdGluZyB0byBzZWUgYSBsb3Qgb2YgcG9pbnRlciBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byBiZSBmb2N1c2VkIHRvIGF2b2lkIG1pc3NpbmcgYW55IHN1YnRsZSBsb2dpYyBlcnJvcnMuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBmaWxlIGFsbG9jYXRpb24gc3RyYXRlZ3ksIHNvIEnigJltIGdvaW5nIHRvIGZvY3VzIGluIG9uIGhvdyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgZWRnZSBjYXNlcyByZWxhdGVkIHRvIGFsbG9jYXRpb24uIEkga25vdyBob3cgdHJpY2t5IE5URlMgY2FuIGJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTY4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTE6Mjk6MTQuOTY3NDg4ODc2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ4MTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2luc2VydF9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2ZpbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz05NDg9c3RhdGljIGludCBudGZzX2NvbGxhcHNlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTk5My1cXG5mcy9udGZzL2ZpbGUuYzo5OTQ6c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuZnMvbnRmcy9maWxlLmMtOTk1LXtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTEwNTU9c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvbnRmcy9maWxlLmMtMTExMy1cXHRjYXNlIEZBTExPQ19GTF9JTlNFUlRfUkFOR0U6XFxuZnMvbnRmcy9maWxlLmM6MTExNDpcXHRcXHRlcnIgPSBudGZzX2luc2VydF9yYW5nZShuaSwgb2Zmc2V0LCBsZW4pO1xcbmZzL250ZnMvZmlsZS5jLTExMTUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjE1LjAyMzk3NDUyMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjIyMzEzODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipGaXhpbmcgYW4gTlRGUyBNZW1vcnkgTGVhayoqXG5cblJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIHNxdWFyZWx5IGF0IGEgbWVtb3J5IGxlYWsgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gY29kZS4gTXkgZm9jdXMgaW1tZWRpYXRlbHkgbmFycm93cyB0byB0aGUgYG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfaW5zZXJ0X3JhbmdlYCBmdW5jdGlvbi4gSSByZWNvZ25pemUgdGhhdCBvbmU7IGl0J3MgcmVsYXRlZCB0byBob3cgTlRGUyBoYW5kbGVzIG5vbi1yZXNpZGVudCBhdHRyaWJ1dGVzLCBhbmQgSSBzZWUgaXQncyBzcGVjaWZpY2FsbHkgdnVsbmVyYWJsZSB3aGVuIGBmYWxsb2NhdGVgIHdpdGggdGhlIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBmbGFnIGlzIHVzZWQgb24gYW4gTlRGUyBmaWxlLiBUaGF0IGNvbnRleHQgaGVscHMgbWUgcXVpY2tseSB6ZXJvIGluIG9uIHdoZXJlIHRoZSBwcm9ibGVtIGxpa2VseSBleGlzdHMgd2l0aGluIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLiBUaGUgYG50ZnNfaW5zZXJ0X3JhbmdlYCBjYWxsIGlzIGltcG9ydGFudCB0b28gLSB0aGF0IGhlbHBzIHNldCB0aGUgc3RhZ2UgYW5kIGxpa2VseSByZXByZXNlbnRzIHRoZSB1bHRpbWF0ZSBvcGVyYXRpb24gYXQgcGxheS4gVGhpcyBpcyBjbGVhcmx5IGEgY2FzZSB3aGVyZSByZXNvdXJjZSBhbGxvY2F0aW9uIHdhc24ndCBwcm9wZXJseSBiYWxhbmNlZCB3aXRoIHJlc291cmNlIHJlbGVhc2Ugd2l0aGluIHRoZSBjb250ZXh0IG9mIGluc2VydGluZyBhIHJhbmdlLiBMZXQncyBnZXQgdGhlIHNldC1yZXN1bHRzIHJlYWR5IGFuZCBzZWUgd2hhdCB0aGUgZGlmZiBzYXlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTUwLCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDExOjI5OjE4LjY0NjI5MDIyNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NDQ1MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VcIixcbiAgICBcIm50ZnNfaW5zZXJ0X3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2VgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgYGZhbGxvY2F0ZWAgd2l0aCBgRkFMTE9DX0ZMX0lOU0VSVF9SQU5HRWAgb24gYW4gTlRGUyBmaWxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZVwiLFxuICAgIFwibnRmc19pbnNlcnRfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZWAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBgZmFsbG9jYXRlYCB3aXRoIGBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFYCBvbiBhbiBOVEZTIGZpbGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowtdtwz[1] Phase: Succeeded StartedAt: 2026-07-05 11:29:30 +0000 UTC FinishedAt: 2026-07-05 11:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-05 11:29:30 +0000 UTC FinishedAt: 2026-07-05 11:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2] Phase: Succeeded StartedAt: 2026-07-05 11:29:30 +0000 UTC FinishedAt: 2026-07-05 13:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-05 11:29:30 +0000 UTC FinishedAt: 2026-07-05 13:04:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-05 11:29:30 +0000 UTC FinishedAt: 2026-07-05 11:29:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-05 11:29:30 +0000 UTC FinishedAt: 2026-07-05 11:29:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtdtwz/series-workflowtdtwz-convert-artifact-583523973/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-05 11:29:40 +0000 UTC FinishedAt: 2026-07-05 11:51:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-05 11:29:40 +0000 UTC FinishedAt: 2026-07-05 11:51:45 +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:*50ec518a-6a72-490e-bf6b-348e5ae01d6b,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-workflowtdtwz/series-workflowtdtwz-convert-artifact-583523973/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": "ce393018-179a-4592-b184-f1d97f2f3d3b", "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-workflowtdtwz/series-workflowtdtwz-build-action-327588395/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-05 11:29:40 +0000 UTC FinishedAt: 2026-07-05 11:51:35 +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:*50ec518a-6a72-490e-bf6b-348e5ae01d6b,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-workflowtdtwz/series-workflowtdtwz-convert-artifact-583523973/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": "ce393018-179a-4592-b184-f1d97f2f3d3b", "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-workflowtdtwz/series-workflowtdtwz-build-action-327588395/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-05 11:51:45 +0000 UTC FinishedAt: 2026-07-05 11:51:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-05 11:51:45 +0000 UTC FinishedAt: 2026-07-05 11:51:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-05 11:51:45 +0000 UTC FinishedAt: 2026-07-05 11:51:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-05 11:51:45 +0000 UTC FinishedAt: 2026-07-05 11:51:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtdtwz/series-workflowtdtwz-convert-artifact-4006592864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-05 11:51:55 +0000 UTC FinishedAt: 2026-07-05 11:53:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-05 11:51:55 +0000 UTC FinishedAt: 2026-07-05 11:53:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ce393018-179a-4592-b184-f1d97f2f3d3b,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-workflowtdtwz/series-workflowtdtwz-build-action-327588395/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-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-05 11:53:43 +0000 UTC FinishedAt: 2026-07-05 11:53:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-05 11:53:43 +0000 UTC FinishedAt: 2026-07-05 11:53:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-05 11:53:43 +0000 UTC FinishedAt: 2026-07-05 12:19:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-05 11:53:43 +0000 UTC FinishedAt: 2026-07-05 12:19:59 +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:*50ec518a-6a72-490e-bf6b-348e5ae01d6b,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-workflowtdtwz/series-workflowtdtwz-convert-artifact-4006592864/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": "c6a90fbe-72ba-4568-b17c-a29f7c44bb36", "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-workflowtdtwz/series-workflowtdtwz-build-action-1229073948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-05 11:53:43 +0000 UTC FinishedAt: 2026-07-05 12:19:49 +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:*50ec518a-6a72-490e-bf6b-348e5ae01d6b,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-workflowtdtwz/series-workflowtdtwz-convert-artifact-4006592864/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": "c6a90fbe-72ba-4568-b17c-a29f7c44bb36", "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-workflowtdtwz/series-workflowtdtwz-build-action-1229073948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-05 12:19:59 +0000 UTC FinishedAt: 2026-07-05 12:19:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-05 12:19:59 +0000 UTC FinishedAt: 2026-07-05 12:19:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-05 12:19:59 +0000 UTC FinishedAt: 2026-07-05 12:22:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-05 12:19:59 +0000 UTC FinishedAt: 2026-07-05 12:22:19 +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:*c6a90fbe-72ba-4568-b17c-a29f7c44bb36,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-workflowtdtwz/series-workflowtdtwz-build-action-1229073948/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-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-05 12:22:29 +0000 UTC FinishedAt: 2026-07-05 13:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-05 12:22:29 +0000 UTC FinishedAt: 2026-07-05 13:04:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"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:*ce393018-179a-4592-b184-f1d97f2f3d3b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6a90fbe-72ba-4568-b17c-a29f7c44bb36,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-workflowtdtwz/series-workflowtdtwz-build-action-327588395/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-workflowtdtwz/series-workflowtdtwz-build-action-1229073948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-05 12:22:29 +0000 UTC FinishedAt: 2026-07-05 12:22:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-05 12:22:29 +0000 UTC FinishedAt: 2026-07-05 12:22:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"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-workflowtdtwz/series-workflowtdtwz-convert-artifact-1807083961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-05 12:22:29 +0000 UTC FinishedAt: 2026-07-05 12:22:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-05 12:22:29 +0000 UTC FinishedAt: 2026-07-05 12:22:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-05 12:22:29 +0000 UTC FinishedAt: 2026-07-05 12:22:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-05 12:22:50 +0000 UTC FinishedAt: 2026-07-05 13:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtdtwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_non_resident_attr_insert_range","ntfs_insert_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"591a925d-5d3a-423c-8eea-04927433ad91","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-05 12:22:50 +0000 UTC FinishedAt: 2026-07-05 13:04:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ce393018-179a-4592-b184-f1d97f2f3d3b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6a90fbe-72ba-4568-b17c-a29f7c44bb36,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-workflowtdtwz/series-workflowtdtwz-build-action-327588395/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-workflowtdtwz/series-workflowtdtwz-build-action-1229073948/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-workflowtdtwz/series-workflowtdtwz-convert-artifact-1807083961/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,}