Name: series-workflowxvbrc Phase: Succeeded StartedAt: 2026-08-20 09:12:48 +0000 UTC FinishedAt: 2026-08-20 11:28:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[0] Phase: Succeeded StartedAt: 2026-08-20 09:12:48 +0000 UTC FinishedAt: 2026-08-20 09:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 09:12:48 +0000 UTC FinishedAt: 2026-08-20 09:53:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a4ff2be345d0abc943da8dd8da98151843b750dc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INET", "INFINIBAND", "DIBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a4ff2be345d0abc943da8dd8da98151843b750dc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INET", "INFINIBAND", "DIBS" ], "series_id": "2d481e9f-82cc-48da-9932-1100a1a95689" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_rx_recvmsg", "smc_recvmsg", "smc_splice_read" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19zcGxpY2VfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXG5cblRoaXMgYnVnIGxlYWRzIHRvIGRhdGEgbG9zcyBhbmQgaW5jb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgcmVhZGluZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGRhdGEgYmVpbmcgc2tpcHBlZCBpcyB2YWxpZCBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmssIGFuZCBhZHZhbmNpbmcgdGhlIGN1cnNvciBtZXJlbHkgbW92ZXMgdGhlIHJlYWQgcG9pbnRlciBmb3J3YXJkIHdpdGhpbiB0aGUgdmFsaWQgZGF0YSByYW5nZS4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGFsbG9jYXRpb25zIGludm9sdmVkLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGFuZCBpbmZvLWxlYWtzLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcgKGluY2x1ZGluZyBLQVNBTikgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlbiBjYWxsZWQgZnJvbSBgc21jX3NwbGljZV9yZWFkYCAod2hlcmUgYG1zZ2AgaXMgTlVMTCkgYW5kIGBzcGxpY2VfdG9fcGlwZWAgdGFrZXMgbGVzcyBkYXRhIHRoYW4gb2ZmZXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBwcm90b2NvbCBsb2dpYywgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgc3BsaWNlKClgIG9uIGFuIFNNQyBzb2NrZXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6NTE6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcnguYyBiL25ldC9zbWMvc21jX3J4LmNcbmluZGV4IDVjOWU0ZDhiNTdkZTQuLmQ5NTFkYmU4ZWVjM2MgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19yeC5jXG5AQCAtNDg4LDYgJiM0Mzs0ODgsMjQgQEAgaW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdFx0XHRcdFx0cmVhZF9kb25lID0gLUVGQVVMVDtcbiBcdFx0XHRcdFx0Z290byBvdXQ7XG4gXHRcdFx0XHR9XG4mIzQzO1x0XHRcdFx0Lyogc3BsaWNlX3RvX3BpcGUoKSB0YWtlcyBvbmx5IHdoYXQgdGhlIHBpcGVcbiYjNDM7XHRcdFx0XHQgKiBoYXMgcm9vbSBmb3IsIHdoaWNoIG1heSBiZSBsZXNzIHRoYW4gd2FzXG4mIzQzO1x0XHRcdFx0ICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2tcbiYjNDM7XHRcdFx0XHQgKiBhbmQgc3RvcDogY3JlZGl0aW5nIHRoZSB3aG9sZSBjaHVuayB3b3VsZFxuJiM0MztcdFx0XHRcdCAqIGFkdmFuY2UgdGhlIGNvbnN1bWVyIHBhc3QgZGF0YSB0aGUgcmVhZGVyXG4mIzQzO1x0XHRcdFx0ICogbmV2ZXIgcmVjZWl2ZWQuXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0aWYgKCFtc2cgXHUwMDI2XHUwMDI2IHJjIFx1MDAzYyBjaHVua19sZW4pIHtcbiYjNDM7XHRcdFx0XHRcdGlmICghcmMpIHtcbiYjNDM7XHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4mIzQzO1x0XHRcdFx0XHRcdFx0cmVhZF9kb25lID0gLUVBR0FJTjtcbiYjNDM7XHRcdFx0XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdFx0XHR9XG4mIzQzO1x0XHRcdFx0XHRjb3B5bGVuID0gY2h1bmtfbGVuX3N1bSAtIGNodW5rX2xlbiAmIzQzOyByYztcbiYjNDM7XHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuJiM0MztcdFx0XHRcdFx0cmVhZF9kb25lICYjNDM7PSByYztcbiYjNDM7XHRcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdFx0cmVhZF9yZW1haW5pbmcgLT0gY2h1bmtfbGVuO1xuIFx0XHRcdHJlYWRfZG9uZSAmIzQzOz0gY2h1bmtfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfc3BsaWNlX3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVuIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgICh3aGVyZSBgbXNnYCBpcyBOVUxMKSBhbmQgYHNwbGljZV90b19waXBlYCB0YWtlcyBsZXNzIGRhdGEgdGhhbiBvZmZlcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU01DIHByb3RvY29sIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBzcGxpY2UoKWAgb24gYW4gU01DIHNvY2tldC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc4YjdmOThlNGRiNmViZmEwZThmZDY0OWRiMmE2N2QwZjNmMWQ4NjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwOTo1MTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jCmluZGV4IDVjOWU0ZDhiNTdkZTQuLmQ5NTFkYmU4ZWVjM2MgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfcnguYwpAQCAtNDg4LDYgJiM0Mzs0ODgsMjQgQEAgaW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCQkJCQlyZWFkX2RvbmUgPSAtRUZBVUxUOwogCQkJCQlnb3RvIG91dDsKIAkJCQl9CiYjNDM7CQkJCS8qIHNwbGljZV90b19waXBlKCkgdGFrZXMgb25seSB3aGF0IHRoZSBwaXBlCiYjNDM7CQkJCSAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXMKJiM0MzsJCQkJICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2sKJiM0MzsJCQkJICogYW5kIHN0b3A6IGNyZWRpdGluZyB0aGUgd2hvbGUgY2h1bmsgd291bGQKJiM0MzsJCQkJICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXIKJiM0MzsJCQkJICogbmV2ZXIgcmVjZWl2ZWQuCiYjNDM7CQkJCSAqLwomIzQzOwkJCQlpZiAoIW1zZyAmYW1wOyZhbXA7IHJjICZsdDsgY2h1bmtfbGVuKSB7CiYjNDM7CQkJCQlpZiAoIXJjKSB7CiYjNDM7CQkJCQkJaWYgKCFyZWFkX2RvbmUpCiYjNDM7CQkJCQkJCXJlYWRfZG9uZSA9IC1FQUdBSU47CiYjNDM7CQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCQl9CiYjNDM7CQkJCQljb3B5bGVuID0gY2h1bmtfbGVuX3N1bSAtIGNodW5rX2xlbiAmIzQzOyByYzsKJiM0MzsJCQkJCXJlYWRfcmVtYWluaW5nIC09IHJjOwomIzQzOwkJCQkJcmVhZF9kb25lICYjNDM7PSByYzsKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCQl9CiAJCQl9CiAJCQlyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47CiAJCQlyZWFkX2RvbmUgJiM0Mzs9IGNodW5rX2xlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zbWMvc21jX3J4LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIGEgbmV3IGNoZWNrIGFmdGVyIHdoYXQgbG9va3MgbGlrZSBhIGRhdGEgY29weSBvcGVyYXRpb24g4oCTIHByb2JhYmx5IGBzcGxpY2VfdG9fcGlwZWAgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQsIGp1ZGdpbmcgZnJvbSB0aGUgY29tbWVudCBpbiB0aGUgY29kZS4gSXQmIzM5O3MgYWRkaW5nIGAhbXNnICZhbXA7JmFtcDsgcmMgJmx0OyBjaHVua19sZW5gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGlzIHRyeWluZyB0byBwcm90ZWN0IGFnYWluc3Q/IEFuZCB3aGF0JiMzOTtzIGBtc2dgIHJlZmVycmluZyB0bz8KClRoaXMgc3VnZ2VzdHMgdGhlcmUgd2FzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIGVkZ2UgY2FzZSB0aGF0IHRoZSBvcmlnaW5hbCBjb2RlIGRpZG4mIzM5O3QgaGFuZGxlLiBUaGUgY29uZGl0aW9uIGAhbXNnICZhbXA7JmFtcDsgcmMgJmx0OyBjaHVua19sZW5gIHNlZW1zIHRvIGluZGljYXRlIHRoZSBjb3B5IG9wZXJhdGlvbiBmYWlsZWQsIG9yIGF0IGxlYXN0IGRpZG4mIzM5O3QgY29weSB0aGUgZXhwZWN0ZWQgYW1vdW50LCBhbmQgc29tZWhvdyBhIGBtc2dgIChwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gdGhlIG1lc3NhZ2UgYmVpbmcgcmVjZWl2ZWQpIGlzIG1pc3NpbmcuIFRoZSBuZWdhdGl2ZSBhc3NlcnRpb24gb2YgYCFtc2dgIGlzIGludGVyZXN0aW5nLCBhbmQgbGlrZWx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC4KCkkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiBgc21jX3J4X3JlY3Ztc2dgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHRoaXMgY2hlY2sgYmVpbmcgdHJpZ2dlcmVkLiBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGBtc2dgIHZhcmlhYmxlIGlzIHVzZWQsIHdoZXJlIGl0JiMzOTtzIHNldCwgYW5kIHdoYXQgY2FuIGdvIHdyb25nIGluIHRoYXQgYXJlYS4gQWxzbywgaG93IGlzIGBjaHVua19sZW5gIGJlaW5nIGRldGVybWluZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgZnVuY3Rpb24sIGFuZCB0aGUgZGF0YSBmbG93LCB0byBmdWxseSBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGFkZGVkIGNoZWNrIGFuZCBtYWtlIGEganVkZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfcnguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19yeC5jPTI5MD1zdGF0aWMgaW50IHNtY19yeF9yZWN2X3VyZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzMzLVxubmV0L3NtYy9zbWNfcnguYzozMzQ6c3RhdGljIGJvb2wgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHNpemVfdCBwZWVrZWQpXG5uZXQvc21jL3NtY19yeC5jLTMzNS17XG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNDUtXG5uZXQvc21jL3NtY19yeC5jOjM0NjovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcbm5ldC9zbWMvc21jX3J4LmMtMzQ3LSAqIEBtc2c6XHRjb3B5IGRhdGEgdG8gcmVjZWl2ZSBidWZmZXJcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM1Mi0gKi9cbm5ldC9zbWMvc21jX3J4LmM6MzUzOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3NtYy9zbWNfcnguYy0zNTQtXHRcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncylcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5NS1cbm5ldC9zbWMvc21jX3J4LmM6Mzk2Olx0XHRpZiAoc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc21jLCBwZWVrZWRfYnl0ZXMpKVxubmV0L3NtYy9zbWNfcnguYy0zOTctXHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtNDAwLVx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmM6NDAxOlx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbm5ldC9zbWMvc21jX3J4LmMtNDAyLVx0XHRcdCAqL1xubmV0L3NtYy9zbWNfcnguYzo0MDM6XHRcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtNDA0LVx0XHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtNTMzLVxubmV0L3NtYy9zbWNfcnguYzo1MzQ6XHRcdHRyYWNlX3NtY19yeF9yZWN2bXNnKHNtYywgY29weWxlbik7XG5uZXQvc21jL3NtY19yeC5jLTUzNS1cdH0gd2hpbGUgKHJlYWRfcmVtYWluaW5nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjA5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgY2hhbmdlcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgYHNtY19yeF9yZWN2bXNnYCBNb2RpZmljYXRpb24qKgoKT2theSwgc28gdGhleSYjMzk7dmUgdHdlYWtlZCBgc21jX3J4X3JlY3Ztc2dgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiBhbmQgKmhvdyouIFRoaXMgZnVuY3Rpb24gaXMgY29yZSB0byB0aGUgUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAoUkRTKSBvdmVyIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgKFNNQykgcHJvdG9jb2wgc3RhY2suIEFueSBjaGFuZ2VzIGhlcmUgYXJlIGxpa2VseSBzaWduaWZpY2FudCwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLCBzdGFiaWxpdHksIG9yIGV2ZW4gc2VjdXJpdHkuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIHRvIG1pbmQgaXMgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBDT05GSUdgIG9wdGlvbnMgYXJlIHJlbGV2YW50IGFuZCBpZiBhbnkgbmV3IG9uZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFyZSB0aGV5IGVuYWJsaW5nIGEgbmV3IFNNQyBmZWF0dXJlLCBvcHRpbWl6aW5nIGFuIGV4aXN0aW5nIG9uZSwgb3IgZml4aW5nIGEgYnVnPyBBcmUgd2UgdGFsa2luZyBhYm91dCBgQ09ORklHX1NNQ2AsIGBDT05GSUdfU01DX1RSQU5TUE9SVGAsIG9yIHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXIgcmVsYXRlZCB0byBSRE1BIGludGVncmF0aW9uPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzIHRvIGRldGVybWluZSB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzLiBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBzZWUgd2hhdCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGFuZCB3aHkuIFRoaXMgY291bGQgYmUgYWJvdXQgc3VwcG9ydGluZyBuZXcgaGFyZHdhcmUsIGFkZHJlc3NpbmcgYSBjb3JuZXIgY2FzZSBpbiBmbG93IGNvbnRyb2wsIG9yIGV2ZW4gaGFyZGVuaW5nIGFnYWluc3QgYSBwb3RlbnRpYWwgZXhwbG9pdC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMTMtXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0yMi1cbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXG5uZXQvc21jL0tjb25maWctMjQtXHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHNlZW1zIHRvIGJlIGBTTUNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSAqYW55KiBvdGhlciBjb25maWd1cmF0aW9ucyBpbiBwbGF5OyB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBpcyBjcnVjaWFsLgoKTm93LCB0aGF0IGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24gaGFzIHBpcXVlZCBteSBpbnRlcmVzdC4gVGhlIG5hbWUgc3VnZ2VzdHMgaXQmIzM5O3MgYW4gQVBJIGVudHJ5cG9pbnQsIG9yIGF0IGxlYXN0IGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSBvbmUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHN0YWNrOyBJJiMzOTtsbCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgaW52b2tlZC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgcGFydCBvZiB0aGUgYW5hbHlzaXMgb2Z0ZW4gc3RhcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9hZl9zbWMuYz0yODM1PWludCBzbWNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yODYyLVx0XHRtc2ctXHUwMDNlbXNnX25hbWVsZW4gPSAwO1xubmV0L3NtYy9hZl9zbWMuYzoyODYzOlx0XHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgbXNnLCBOVUxMLCBsZW4sIGZsYWdzKTtcbm5ldC9zbWMvYWZfc21jLmMtMjg2NC1cdFx0U01DX1NUQVRfUlhfUEFZTE9BRChzbWMsIHJjLCByYyk7XG4tLVxubmV0L3NtYy9hZl9zbWMuYz0zMjg0PXNzaXplX3Qgc21jX3NwbGljZV9yZWFkKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvZmZfdCAqcHBvcyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMzMjEtXHRcdFNNQ19TVEFUX0lOQyhzbWMsIHNwbGljZV9jbnQpO1xubmV0L3NtYy9hZl9zbWMuYzozMzIyOlx0XHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgTlVMTCwgcGlwZSwgbGVuLCBmbGFncyk7XG5uZXQvc21jL2FmX3NtYy5jLTMzMjMtXHR9XG4tLVxubmV0L3NtYy9zbWNfcnguYz0yOTA9c3RhdGljIGludCBzbWNfcnhfcmVjdl91cmcoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cbm5ldC9zbWMvc21jX3J4LmM6MzM0OnN0YXRpYyBib29sIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzaXplX3QgcGVla2VkKVxubmV0L3NtYy9zbWNfcnguYy0zMzUte1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzQ1LVxubmV0L3NtYy9zbWNfcnguYzozNDY6Lyogc21jX3J4X3JlY3Ztc2cgLSByZWNlaXZlIGRhdGEgZnJvbSBSTUJFXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlx0Y29weSBkYXRhIHRvIHJlY2VpdmUgYnVmZmVyXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXG5uZXQvc21jL3NtY19yeC5jOjM1MzppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9zbWMvc21jX3J4LmMtMzU0LVx0XHQgICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTUtXG5uZXQvc21jL3NtY19yeC5jOjM5NjpcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtMzk3LVx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jOjQwMTpcdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG5uZXQvc21jL3NtY19yeC5jLTQwMi1cdFx0XHQgKi9cbm5ldC9zbWMvc21jX3J4LmM6NDAzOlx0XHRcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXG5uZXQvc21jL3NtY19yeC5jLTQwNC1cdFx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTUzMy1cbm5ldC9zbWMvc21jX3J4LmM6NTM0Olx0XHR0cmFjZV9zbWNfcnhfcmVjdm1zZyhzbWMsIGNvcHlsZW4pO1xubmV0L3NtYy9zbWNfcnguYy01MzUtXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XG4tLVxubmV0L3NtYy9zbWNfcnguaD0yMD12b2lkIHNtY19yeF9pbml0KHN0cnVjdCBzbWNfc29jayAqc21jKTtcbm5ldC9zbWMvc21jX3J4LmgtMjEtXG5uZXQvc21jL3NtY19yeC5oOjIyOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3NtYy9zbWNfcnguaC0yMy1cdFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKTtcbi0tXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM9Nz1FWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3R4X3NlbmRtc2cpO1xubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jOjg6RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY19yeF9yZWN2bXNnKTtcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYy05LUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNyX2xpbmtfZG93bik7XG4tLVxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oPTcxPURFRklORV9FVkVOVChzbWNfbXNnX2V2ZW50LCBzbWNfdHhfc2VuZG1zZyxcbi0tXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzctXG5uZXQvc21jL3NtY190cmFjZXBvaW50Lmg6Nzg6REVGSU5FX0VWRU5UKHNtY19tc2dfZXZlbnQsIHNtY19yeF9yZWN2bXNnLFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBSZWNlbnQgU01DIFNvY2tldCBQcm90b2NvbCBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gaW50ZXJlc3RpbmcgYnVnIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29tbXVuaWNhdGlvbnMgKFNNQykgcHJvdG9jb2wuIFNwZWNpZmljYWxseSwgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoaW4gYHNtY19yeF9yZWN2bXNnYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGJvdGggYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSwgb2YgY291cnNlLCB0aGUgc3RhbmRhcmQgYC5yZWN2bXNnYCBhbmQgYC5zcGxpY2VfcmVhZGAgb3BlcmF0aW9ucyBmb3IgdGhlIFNNQyBzb2NrZXQgZmFtaWx5LiBUaGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIGEgc2NlbmFyaW8gaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSB0aGUgbWVzc2FnZSBwb2ludGVyIChgbXNnYCkgaXMgTlVMTC4gVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBgc21jX3J4X3JlY3Ztc2dgIGlzIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgLCB3aGljaCBwYXNzZXMgYSBgcGlwZWAgaW5zdGVhZC4KClRoZSBlc3NlbmNlIG9mIHRoZSBmaXggaXMgaGFuZGxpbmcgYSBzaXR1YXRpb24gd2hlcmUgYHNwbGljZV90b19waXBlYCBkb2VzbiYjMzk7dCB0cmFuc2ZlciB0aGUgZW50aXJlIGFtb3VudCByZXF1ZXN0ZWQuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gdGhlIFNNQyBwcm90b2NvbCYjMzk7cyBiZWhhdmlvciwgYW5kIHRoYXQgY2FuIGhhdmUgc29tZSByZWFsIGltcGFjdC4gQmVjYXVzZSB1c2Vyc3BhY2UgY2FuIHRyaWdnZXIgdGhpcyBwYXRoIHVzaW5nIGBzcGxpY2UoKWAgb24gYW4gU01DIHNvY2tldCwgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyB0aG9yb3VnaCBmdXp6aW5nLgoKTXkgZm9jdXMgaGFzIGJlZW4gb24gYHNtY19yeF9yZWN2bXNnYCwgYHNtY19yZWN2bXNnYCwgYW5kIGBzbWNfc3BsaWNlX3JlYWRgLiBBbHNvLCB0aGUgYFNNQ2AgY29uZmlndXJhdGlvbiBpcyB3aGF0JiMzOTtzIHJlbGV2YW50IGhlcmUsIHRoYXQmIzM5O3MgY2xlYXIuIEJ1dCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgdnVsbmVyYWJpbGl0eSwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MTQ9Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xubmV0L3NtYy9LY29uZmlnOjE2Olx0ZGVwZW5kcyBvbiBTTUNcbm5ldC9zbWMvS2NvbmZpZy0xNy1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIFNNQyBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX1NZU0NBTExcbm5ldC9zbWMvS2NvbmZpZy0yNi1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2NvbmZpZyBDb25mdXNpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBidWlsZCBwcm9jZXNzIGlzIGdldHRpbmcgdGFuZ2xlZCBhZ2Fpbi4gSXQgbG9va3MgbGlrZSB0aGUgb3V0Y29tZSAqZGVwZW5kcyogb24gYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgd2FpdCwgYERJQlNgPyBUaGF0JiMzOTtzLi4uIHVuZXhwZWN0ZWQuIEkgZmVlbCBsaWtlIEkmIzM5O3ZlIGVuY291bnRlcmVkIHRoaXMgYmVmb3JlLiBMZXQgbWUgcGF1c2UgYW5kIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldC9zbWMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBob3cgYERJQlNgIGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgaXRzIGRlcGVuZGVuY2llcyB0cnVseSBhcmUgaW4gdGhpcyBjb250ZXh0LiBJdCYjMzk7cyBlYXN5IHRvIGxvc2UgdHJhY2sgd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzdWNoIGEgaGlnaGx5IGludGVyZGVwZW5kZW50IHN5c3RlbS4gTmVlZCB0byBiZSBjZXJ0YWluIG9mIHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIHByb2NlZWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNNQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBTTUMtUiBwcm92aWRlcyBhIFwmIzM0O3NvY2tldHMgb3ZlciBSRE1BXCYjMzQ7IHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcbiAgIDc6XHRcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXG4gICA4Olx0XHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXG4gICA5Olx0XHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcbiAgMTA6XHRcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biBTTUMgc29ja2V0IGFwcGxpY2F0aW9uc1xuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBTTUNfRElBR1xuICAxNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gU01DXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFN1cHBvcnQgZm9yIFNNQyBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0b29scyBzdWNoIGFzXG4gIDE5Olx0XHQgIHNtY3NzLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gRElCUyBhbmQgU01DIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBgRElCU2A/IFRoYXQgdGVybSBpc24mIzM5O3QgaW1tZWRpYXRlbHkgZmFtaWxpYXIuIEJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB3aGF0IHRoYXQgcmVmZXJzIHRvLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBtYWtlIGEgcXVpY2sgbWVudGFsIG5vdGUgb2YgdGhlIHJlbGV2YW50IGNvbXBvbmVudHM6IGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIHRoaXMgbmV3IG9uZSwgYERJQlNgLiBXYWl0LCBpcyB0aGlzIGEgdHlwbz8gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBvciB3b3JraW5nIHdpdGggYERJQlNgIGJlZm9yZSwgbm90IGluIHRoaXMgY29udGV4dCBhdCBsZWFzdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgdGV4dCBhZ2FpbiwganVzdCB0byBiZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzcmVhZCBpdC4gQWgsIG5vcGUsIHRoZXJlIGl0IGlzIOKAkyBgRElCU2AgaXMgaW5kZWVkIHByZXNlbnQuCgpSaWdodCwgc28gdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBvdGhlciBlbGVtZW50cywgbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgaXRzIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9zbWMvS2NvbmZpZ2AgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkLiBXYWl0Li4uIEkgc2VlLCBpdCBoYXMgZGVwZW5kZW5jaWVzLiBJdCBsb29rcyBsaWtlIGl0IGRlcGVuZHMgb24gYElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuIFdhaXQuLi4gdGhhdCBtYWtlcyBtZSB0aGluay4uLiBpcyBpdCByZWxhdGVkIHRvIElQdjY/IE5vLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSBkaWRuJiMzOTt0IG1pc3JlYWQgdGhlIGxpbmUgYWdhaW4uIExldCBtZSBncmVwIHRocm91Z2ggYG5ldC9zbWMvS2NvbmZpZ2AganVzdCB0byBtYWtlIHN1cmUuIE9rLCBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiB0aGUgZGVwZW5kZW5jeSBsaW5lOiBgZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBTbyBpdCBpcyB3aGF0IEkgdGhvdWdodCwgaXQmIzM5O3MgbGl0ZXJhbGx5IGBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBBbHJpZ2h0LCBzbyB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgY29uZmlybSB0aGlzIGluIHRoZSBrZXJuZWwgdHJlZS4gTGV0IG1lIGZpbmQgdGhhdCBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtESUJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzExMAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogQSBGYW1pbGlhciBUZXJtKioKCk9rYXksIHNvIHRoZXJlIGl0IGlzIC0gYERJQlNgLiBJbnRlcmVzdGluZy4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyBJIGRlYWwgd2l0aCBkYXktdG8tZGF5LCBidXQgdGhlIGFjcm9ueW0gaXMgZGVmaW5pdGVseSBmYW1pbGlhci4gTGV0IG1lIGp1c3QgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIHNwZWNpZmljIGNvbnRleHQgaGVyZS4gV2hhdCBkb2VzIGBESUJTYCBzdGFuZCBmb3IgaW4gKnRoaXMqIHNpdHVhdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSByZWxldmFudCBjb25uZWN0aW9ucyBiZWZvcmUgSSBjYW4gZm9ybXVsYXRlIGEgcHJvcGVyIHJlc3BvbnNlIG9yIGFuYWx5c2lzLiBMZXQgbWUganVzdCBjaGVjayBteSBtZW50YWwgZGF0YWJhc2UsIG9yIHBlcmhhcHMgYSBxdWljayBzZWFyY2ggbWlnaHQgYmUgdXNlZnVsLiBSaWdodCwgbGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcbmRyaXZlcnMvZGlicy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxuZHJpdmVycy9kaWJzL0tjb25maWc6MTQ6Y29uZmlnIERJQlNfTE9cbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQxNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipESUJTIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBESUJTYCBoZXJlIOKAkyBEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcuIEdvdCBpdC4gVGhpcyBtZWFucyB3ZSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhhdCBzcGVjaWZpYyBzdXBwb3J0LiBOb3csIGxvb2tpbmcgYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLCBpdCBzZWVtcyB3ZSBhbHNvIG5lZWQgYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQsIG9mIGNvdXJzZSwgYERJQlNgIGl0c2VsZi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNwZWNpZmljYWxseSBkZXRlcm1pbmUgaWYgYElORklOSUJBTkRgIGhhcyBhbnkgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciByZXF1aXJlbWVudHMgd2UgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCBiZWZvcmUgcHJvY2VlZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbmZpbmlCYW5kIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xNj1pZiBJTkZJTklCQU5EXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjE4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIE1BRCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjctXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQwOmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkVcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQzLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTUwLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTE6Y29uZmlnIElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXHRib29sIFwmIzM0O0luZmluaUJhbmQgb24tZGVtYW5kIHBhZ2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NDpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7UkRNQS9DTVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTcxLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NzI6Y29uZmlnIElORklOSUJBTkRfQUREUl9UUkFOU19DT05GSUdGU1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzMtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctODAtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4MTpjb25maWcgSU5GSU5JQkFORF9WSVJUX0RNQVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctODItXHRkZWZfYm9vbCAhSElHSE1FTVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjEwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uOgoKKipOYXZpZ2F0aW5nIEluZmluaWJhbmQgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGBJTkZJTklCQU5EYCByZWxpZXMgb24gYSBmZXcgb3RoZXIgdGhpbmdzLiBMZXQgbWUgcXVpY2tseSByZWNhcDogYEhBU19JT01FTWAsIGBORVRgLCBgSU5FVGAsIGFuZCBgbWAuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IGl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHN1cmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGFzIGNvbXBsZXggYXMgSW5maW5pYmFuZC4gSXQmIzM5O3MgdGltZSB0byBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZywgYW5kIHRoYXQgYWxsIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGtub3cgZXhhY3RseSBob3cgdGhlIGtlcm5lbCBpcyBnb2luZyB0byBoYW5kbGUgbWVtb3J5IG1hbmFnZW1lbnQsIG5ldHdvcmtpbmcgbGF5ZXJzLCBhbmQgdGhvc2Ugc3BlY2lmaWMgbmV0d29ya2luZyBwcm90b2NvbHMsIHRvIGVuc3VyZSBwcm9wZXIgSW5maW5pYmFuZCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBJTkZJTklCQU5EXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbmZpbmlCYW5kIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA3Olx0XHRkZXBlbmRzIG9uICFBTFBIQVxuICAgODpcdFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG4gICA5Olx0XHRzZWxlY3QgSVJRX1BPTExcbiAgMTA6XHRcdHNlbGVjdCBESU1MSUJcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgQ29yZSBzdXBwb3J0IGZvciBJbmZpbmlCYW5kIChJQikuICBNYWtlIHN1cmUgdG8gYWxzbyBzZWxlY3RcbiAgMTM6XHRcdCAgYW55IHByb3RvY29scyB5b3Ugd2lzaCB0byB1c2UgYXMgd2VsbCBhcyBkcml2ZXJzIGZvciB5b3VyXG4gIDE0Olx0XHQgIEluZmluaUJhbmQgaGFyZHdhcmUuXG4gIDE1Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBmaWVsZDoKCioqRGVwZW5kZW5jaWVzIGFuZCBDb25kaXRpb25hbHMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYElORklOSUJBTkRgIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGEgbnVtYmVyIG9mIGtleSBmZWF0dXJlcyBiZWluZyBlbmFibGVkOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYC4gSXQmIzM5O3MgYWxzbyBleHBsaWNpdGx5IGV4Y2x1ZGVkIG9uIGBBTFBIQWAgYXJjaGl0ZWN0dXJlcywgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGhpc3RvcmljYWwgY29udGV4dCBvZiBJbmZpbmlCYW5kIHN1cHBvcnQuIFRoYXQmIzM5O3MgYWxsIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGEgdHlwaWNhbCBkZXBlbmRlbmN5IGNoYWluLiBOb3csIEkmIzM5O20gc2hpZnRpbmcgbXkgZm9jdXMgYW5kIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBESUJTYCBkZXBlbmRzIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgdHJlZTsga25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHN5c3RlbSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBESUJTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCBuXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XG4gICA3Olx0XHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXG4gICA4Olx0XHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxuICAgOTpcdFxuICAxMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcHJvdmlkZSB0aGUgYWJzdHJhY3Rpb24gbGF5ZXIgYmV0d2VlblxuICAxMTpcdFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXG4gIDEyOlx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBESUJTX0xPXG4gIDE1Olx0XHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgRElCUyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYERJQlNgIGhlcmUsIGFuZCBmaXJzdCB0aGluZyBJIG5vdGUgaXMgdGhhdCBpdCYjMzk7cyBpbmRlcGVuZGVudCwgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcG90ZW50aWFsIHBvcnRhYmlsaXR5IGFuZCBtaW5pbWFsIGludGVncmF0aW9uIGNvbXBsZXhpdHkuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbnMgaXQgaGluZ2VzIG9uLiBMb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCBhcmUgYWxsIHByb3Blcmx5IGNvbmZpZ3VyZWQuCgpNeSBmb2N1cyByaWdodCBub3csIHRob3VnaCwgaXMgb24gdGhvc2Uga2V5IHN5bWJvbHMgcmVsYXRlZCB0byBoYW5kbGluZyBtZXNzYWdlcywgc3BlY2lmaWNhbGx5IGBzbWNfcnhfcmVjdm1zZ2AsIGBzbWNfcmVjdm1zZ2AsIGFuZCBgc21jX3NwbGljZV9yZWFkYC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBzbWNfcnhfcmVjdm1zZ2AuIE9rYXksIGl0JiMzOTtzICpub3QqIHN0YXRpYywgc28gaXQmIzM5O3MgcHJvYmFibHkgY2FsbGFibGUgZnJvbSBlbHNld2hlcmUuIEFuZCB5ZXAsIGl0JiMzOTtzIGV4cG9ydGVkIGluIGBuZXQvc21jL3NtY19yeC5oYCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gTm93IGZvciB0aGUgb3RoZXIgdHdvLCBgc21jX3JlY3Ztc2dgIGFuZCBgc21jX3NwbGljZV9yZWFkYC4uLiBhaCwgdGhleSYjMzk7cmUgZGVmaW5lZCBpbiBgbmV0L3NtYy9hZl9zbWMuY2AuIEdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGxpZXMgYW5kIGhvdyB0aGVzZSBwYXJ0cyBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3JlY3Ztc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9Mjc5Nz1pbnQgc21jX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjgzNC1cbm5ldC9zbWMvYWZfc21jLmM6MjgzNTppbnQgc21jX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxubmV0L3NtYy9hZl9zbWMuYy0yODM2LVx0XHRpbnQgZmxhZ3MpXG4tLVxubmV0L3NtYy9hZl9zbWMuYz0zMzMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMzNDYtXHQuc2VuZG1zZ1x0PSBzbWNfc2VuZG1zZyxcbm5ldC9zbWMvYWZfc21jLmM6MzM0NzpcdC5yZWN2bXNnXHQ9IHNtY19yZWN2bXNnLFxubmV0L3NtYy9hZl9zbWMuYy0zMzQ4LVx0Lm1tYXBcdFx0PSBzb2NrX25vX21tYXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqUXVpY2sgTm90ZSBvbiBgc21jX3NwbGljZV9yZWFkYCBMb2NhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHNtY19zcGxpY2VfcmVhZGAgZnVuY3Rpb24uIEFuZCBhIHF1aWNrIGNoZWNrIGluIG15IG1lbnRhbCBtYXAgb2YgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSB0ZWxscyBtZSBpbW1lZGlhdGVseSB3aGVyZSB0byBmaW5kIGl0LiBZZXAsIGl0JiMzOTtzIGFsc28gbmVzdGxlZCB3aXRoaW4gdGhlIGBuZXQvc21jL2FmX3NtYy5jYCBmaWxlLiBOb3RoaW5nIHVudXN1YWwgdGhlcmUsIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGl0IGdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHRoZSBTTUMgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIFRoYXQgY29uZmlybXMgbXkgZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgYWxsLCBvciBpZiB0aGVyZSBpcyBhbm90aGVyIGZ1bmN0aW9uIGNhbGxlZCBzb21ld2hlcmUgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3NwbGljZV9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9hZl9zbWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jPTMxOTc9aW50IHNtY19pb2N0bChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzI4My0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MzI4NDpzc2l6ZV90IHNtY19zcGxpY2VfcmVhZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBsb2ZmX3QgKnBwb3MsXG5uZXQvc21jL2FmX3NtYy5jLTMyODUtXHRcdFx0c3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbixcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTMzMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzM0OC1cdC5tbWFwXHRcdD0gc29ja19ub19tbWFwLFxubmV0L3NtYy9hZl9zbWMuYzozMzQ5Olx0LnNwbGljZV9yZWFkXHQ9IHNtY19zcGxpY2VfcmVhZCxcbm5ldC9zbWMvYWZfc21jLmMtMzM1MC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4MgoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQ6IGBzbWNfcnhfcmVjdm1zZ2AgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBuZXcgcGF0Y2ggdG8gcmV2aWV3LCBhbmQgaXQgbG9va3MgbGlrZSBpdCBhZGRyZXNzZXMgYSBjcml0aWNhbCBpc3N1ZSB3aXRoaW4gdGhlIGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24uIFRoZSBjb3JlIHByb2JsZW0gaXMgdGhhdCBgc3BsaWNlX3RvX3BpcGVgIGlzbiYjMzk7dCBjb25zdW1pbmcgYXMgbXVjaCBkYXRhIGFzIGl0JiMzOTtzIGJlaW5nIG9mZmVyZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBvciBldmVuIG92ZXJmbG93cyBpZiBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCBsb2dpYywgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKVGhlIGdvb2QgbmV3cyBpcyB0aGF0IHRoaXMgdnVsbmVyYWJpbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYHNwbGljZSgpYCBzeXN0ZW0gY2FsbCB3aGVuIGludGVyYWN0aW5nIHdpdGggYW4gU01DIHNvY2tldC4gVGhhdCYjMzk7cyBhIGh1Z2Ugd2luIGluIHRlcm1zIG9mIGZ1enppbmcgcG90ZW50aWFsISBUaGlzIG1ha2VzIGl0IGEgcGVyZmVjdCB0YXJnZXQgZm9yIGNvbXByZWhlbnNpdmUgZnV6emluZyBjYW1wYWlnbnMgYmVjYXVzZSB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHNtY19yeF9yZWN2bXNnYCAob2J2aW91c2x5KSwgYnV0IGFsc28gYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdGhlIGRhdGEgcGF0aC4gSSYjMzk7bGwgbmVlZCB0byBjb25maWd1cmUgbXkgdGVzdCBlbnZpcm9ubWVudCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuZWwgb3B0aW9uczogYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgZW5hYmxlZCBhbmQgZXhlcmNpc2VkLgoKQWxyaWdodCwgdGltZSB0byBzZXQgdXAgYW5kIHJ1biBzb21lIHRlc3RzOyBJJiMzOTtsbCBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX3J4X3JlY3Ztc2cmIzM0OywKICAgICYjMzQ7c21jX3JlY3Ztc2cmIzM0OywKICAgICYjMzQ7c21jX3NwbGljZV9yZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlbiBjYWxsZWQgZnJvbSBgc21jX3NwbGljZV9yZWFkYCAod2hlcmUgYG1zZ2AgaXMgTlVMTCkgYW5kIGBzcGxpY2VfdG9fcGlwZWAgdGFrZXMgbGVzcyBkYXRhIHRoYW4gb2ZmZXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBwcm90b2NvbCBsb2dpYywgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgc3BsaWNlKClgIG9uIGFuIFNNQyBzb2NrZXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19zcGxpY2VfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZW4gY2FsbGVkIGZyb20gYHNtY19zcGxpY2VfcmVhZGAgKHdoZXJlIGBtc2dgIGlzIE5VTEwpIGFuZCBgc3BsaWNlX3RvX3BpcGVgIHRha2VzIGxlc3MgZGF0YSB0aGFuIG9mZmVyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgcHJvdG9jb2wgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXG5cblRoaXMgYnVnIGxlYWRzIHRvIGRhdGEgbG9zcyBhbmQgaW5jb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgcmVhZGluZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGRhdGEgYmVpbmcgc2tpcHBlZCBpcyB2YWxpZCBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmssIGFuZCBhZHZhbmNpbmcgdGhlIGN1cnNvciBtZXJlbHkgbW92ZXMgdGhlIHJlYWQgcG9pbnRlciBmb3J3YXJkIHdpdGhpbiB0aGUgdmFsaWQgZGF0YSByYW5nZS4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGFsbG9jYXRpb25zIGludm9sdmVkLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGFuZCBpbmZvLWxlYWtzLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcgKGluY2x1ZGluZyBLQVNBTikgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc4YjdmOThlNGRiNmViZmEwZThmZDY0OWRiMmE2N2QwZjNmMWQ4NjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwOTo1MTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jCmluZGV4IDVjOWU0ZDhiNTdkZTQuLmQ5NTFkYmU4ZWVjM2MgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfcnguYwpAQCAtNDg4LDYgJiM0Mzs0ODgsMjQgQEAgaW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCQkJCQlyZWFkX2RvbmUgPSAtRUZBVUxUOwogCQkJCQlnb3RvIG91dDsKIAkJCQl9CiYjNDM7CQkJCS8qIHNwbGljZV90b19waXBlKCkgdGFrZXMgb25seSB3aGF0IHRoZSBwaXBlCiYjNDM7CQkJCSAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXMKJiM0MzsJCQkJICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2sKJiM0MzsJCQkJICogYW5kIHN0b3A6IGNyZWRpdGluZyB0aGUgd2hvbGUgY2h1bmsgd291bGQKJiM0MzsJCQkJICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXIKJiM0MzsJCQkJICogbmV2ZXIgcmVjZWl2ZWQuCiYjNDM7CQkJCSAqLwomIzQzOwkJCQlpZiAoIW1zZyAmYW1wOyZhbXA7IHJjICZsdDsgY2h1bmtfbGVuKSB7CiYjNDM7CQkJCQlpZiAoIXJjKSB7CiYjNDM7CQkJCQkJaWYgKCFyZWFkX2RvbmUpCiYjNDM7CQkJCQkJCXJlYWRfZG9uZSA9IC1FQUdBSU47CiYjNDM7CQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCQl9CiYjNDM7CQkJCQljb3B5bGVuID0gY2h1bmtfbGVuX3N1bSAtIGNodW5rX2xlbiAmIzQzOyByYzsKJiM0MzsJCQkJCXJlYWRfcmVtYWluaW5nIC09IHJjOwomIzQzOwkJCQkJcmVhZF9kb25lICYjNDM7PSByYzsKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCQl9CiAJCQl9CiAJCQlyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47CiAJCQlyZWFkX2RvbmUgJiM0Mzs9IGNodW5rX2xlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoaXMgcGF0Y2g6CgoqKkFuYWx5emluZyBhIFBvdGVudGlhbCBTTUMgUlggT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgYHNtY19yeF9yZWN2bXNnYCBpbiBgbmV0L3NtYy9zbWNfcnguY2AuIFJpZ2h0IGF3YXksIGl0IHNlZW1zIHRvIGJlIG9wdGltaXppbmcgdGhlIHJlY2VpdmUgcGF0aC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYSBjb25kaXRpb25hbCBjaGVjazogYCFtc2cgJmFtcDsmYW1wOyByYyAmbHQ7IGNodW5rX2xlbmAgYWZ0ZXIgd2hhdCYjMzk7cyBsaWtlbHkgYSBgc3BsaWNlX3RvX3BpcGVgIGNhbGwsIGdpdmVuIHRoZSBzdXJyb3VuZGluZyBjb21tZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpczogYSBudWxsIGBtc2dgIHBvaW50ZXIgbGlrZWx5IHNpZ25pZmllcyBhIHNwbGljZSBvcGVyYXRpb24sIHByb2JhYmx5IGFpbWluZyBmb3IgemVyby1jb3B5IGRhdGEgdHJhbnNmZXIuIFRoZSBhZGRlZCBjaGVjayBwcm9iYWJseSBlbnN1cmVzIHRoYXQgaWYgdGhlIHNwbGljZSBvcGVyYXRpb24gZGlkbiYjMzk7dCBmdWxseSBtb3ZlIGFsbCBkYXRhLCB3ZSBkb24mIzM5O3QgcHJvY2VlZCB3aXRoIHNvbWV0aGluZyB0aGF0IGNvdWxkIGxlYWQgdG8gZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIGFyb3VuZCBpdCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTGV0IG1lIGRpdmUgZGVlcGVyIGludG8gdGhlIGNvZGUgY29udGV4dCB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBzcGVjaWZpYyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIG9yIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX3J4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfcnguYz0yOTA9c3RhdGljIGludCBzbWNfcnhfcmVjdl91cmcoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cbm5ldC9zbWMvc21jX3J4LmM6MzM0OnN0YXRpYyBib29sIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzaXplX3QgcGVla2VkKVxubmV0L3NtYy9zbWNfcnguYy0zMzUte1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzQ1LVxubmV0L3NtYy9zbWNfcnguYzozNDY6Lyogc21jX3J4X3JlY3Ztc2cgLSByZWNlaXZlIGRhdGEgZnJvbSBSTUJFXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlx0Y29weSBkYXRhIHRvIHJlY2VpdmUgYnVmZmVyXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXG5uZXQvc21jL3NtY19yeC5jOjM1MzppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9zbWMvc21jX3J4LmMtMzU0LVx0XHQgICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTUtXG5uZXQvc21jL3NtY19yeC5jOjM5NjpcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtMzk3LVx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jOjQwMTpcdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG5uZXQvc21jL3NtY19yeC5jLTQwMi1cdFx0XHQgKi9cbm5ldC9zbWMvc21jX3J4LmM6NDAzOlx0XHRcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXG5uZXQvc21jL3NtY19yeC5jLTQwNC1cdFx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTUzMy1cbm5ldC9zbWMvc21jX3J4LmM6NTM0Olx0XHR0cmFjZV9zbWNfcnhfcmVjdm1zZyhzbWMsIGNvcHlsZW4pO1xubmV0L3NtYy9zbWNfcnguYy01MzUtXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYHNtY19yeF9yZWN2bXNnYCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgc21jX3J4X3JlY3Ztc2dgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gbGluZXMgNDYwIHRocm91Z2ggNTIwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlY2VpdmUgcGF0aCBpcyBoYW5kbGluZyB0aGUgc29ja2V0IG1lc3NhZ2UsIGVzcGVjaWFsbHkgdGhlIGRldGFpbHMgb2YgZGF0YSByZWNlcHRpb24gd2l0aGluIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiBjb2RlLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGludHJpY2FjaWVzIG9mIGVycm9yIGhhbmRsaW5nLCBidWZmZXIgbWFuYWdlbWVudCwgYW5kIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGlzIGNyaXRpY2FsIHNlY3Rpb24uIEkmIzM5O20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHNvY2tldCBzdGF0ZSBjaGFuZ2VzLiBJcyB0aGVyZSBhbnl0aGluZyB1bnVzdWFsIG9yIGluZWZmaWNpZW50IGhhcHBlbmluZz8gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL3NtY19yeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcdFx0aWYgKHNwbGJ5dGVzKVxuIDQ2MTpcdFx0XHRcdHNtY19jdXJzX2FkZChjb25uLVx1MDAzZXJtYl9kZXNjLVx1MDAzZWxlbiwgXHUwMDI2Y29ucywgc3BsYnl0ZXMpO1xuIDQ2MjpcdFx0XHRpZiAoY29ubi1cdTAwM2V1cmdfc3RhdGUgPT0gU01DX1VSR19WQUxJRCBcdTAwMjZcdTAwMjZcbiA0NjM6XHRcdFx0ICAgIHNvY2tfZmxhZyhcdTAwMjZzbWMtXHUwMDNlc2ssIFNPQ0tfVVJHSU5MSU5FKSBcdTAwMjZcdTAwMjZcbiA0NjQ6XHRcdFx0ICAgIHJlYWRhYmxlIFx1MDAzZSAxKVxuIDQ2NTpcdFx0XHRcdHJlYWRhYmxlLS07XHQvKiBhbHdheXMgc3RvcCBhdCB1cmdlbnQgQnl0ZSAqL1xuIDQ2NjpcdFx0XHQvKiBub3QgbW9yZSB0aGFuIHdoYXQgdXNlciBzcGFjZSBhc2tlZCBmb3IgKi9cbiA0Njc6XHRcdFx0Y29weWxlbiA9IG1pbl90KHNpemVfdCwgcmVhZF9yZW1haW5pbmcsIHJlYWRhYmxlKTtcbiA0Njg6XHRcdFx0LyogZGV0ZXJtaW5lIGNodW5rcyB3aGVyZSB0byByZWFkIGZyb20gcmN2YnVmICovXG4gNDY5Olx0XHRcdC8qIGVpdGhlciB1bndyYXBwZWQgY2FzZSwgb3IgMXN0IGNodW5rIG9mIHdyYXBwZWQgY2FzZSAqL1xuIDQ3MDpcdFx0XHRjaHVua19sZW4gPSBtaW5fdChzaXplX3QsIGNvcHlsZW4sIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuIC1cbiA0NzE6XHRcdFx0XHRcdCAgY29ucy5jb3VudCk7XG4gNDcyOlx0XHRcdGNodW5rX2xlbl9zdW0gPSBjaHVua19sZW47XG4gNDczOlx0XHRcdGNodW5rX29mZiA9IGNvbnMuY291bnQ7XG4gNDc0Olx0XHRcdHNtY19ybWJfc3luY19zZ19mb3JfY3B1KGNvbm4pO1xuIDQ3NTpcdFx0XHRmb3IgKGNodW5rID0gMDsgY2h1bmsgXHUwMDNjIDI7IGNodW5rJiM0MzsmIzQzOykge1xuIDQ3NjpcdFx0XHRcdGlmICghKGZsYWdzIFx1MDAyNiBNU0dfVFJVTkMpKSB7XG4gNDc3Olx0XHRcdFx0XHRpZiAobXNnKSB7XG4gNDc4Olx0XHRcdFx0XHRcdHJjID0gbWVtY3B5X3RvX21zZyhtc2csIHJjdmJ1Zl9iYXNlICYjNDM7XG4gNDc5Olx0XHRcdFx0XHRcdFx0XHQgICBjaHVua19vZmYsXG4gNDgwOlx0XHRcdFx0XHRcdFx0XHQgICBjaHVua19sZW4pO1xuIDQ4MTpcdFx0XHRcdFx0fSBlbHNlIHtcbiA0ODI6XHRcdFx0XHRcdFx0cmMgPSBzbWNfcnhfc3BsaWNlKHBpcGUsIHJjdmJ1Zl9iYXNlICYjNDM7XG4gNDgzOlx0XHRcdFx0XHRcdFx0XHRjaHVua19vZmYsIGNodW5rX2xlbixcbiA0ODQ6XHRcdFx0XHRcdFx0XHRcdHNtYyk7XG4gNDg1Olx0XHRcdFx0XHR9XG4gNDg2Olx0XHRcdFx0XHRpZiAocmMgXHUwMDNjIDApIHtcbiA0ODc6XHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4gNDg4Olx0XHRcdFx0XHRcdFx0cmVhZF9kb25lID0gLUVGQVVMVDtcbiA0ODk6XHRcdFx0XHRcdFx0Z290byBvdXQ7XG4gNDkwOlx0XHRcdFx0XHR9XG4gNDkxOlx0XHRcdFx0XHQvKiBzcGxpY2VfdG9fcGlwZSgpIHRha2VzIG9ubHkgd2hhdCB0aGUgcGlwZVxuIDQ5MjpcdFx0XHRcdFx0ICogaGFzIHJvb20gZm9yLCB3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHdhc1xuIDQ5MzpcdFx0XHRcdFx0ICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2tcbiA0OTQ6XHRcdFx0XHRcdCAqIGFuZCBzdG9wOiBjcmVkaXRpbmcgdGhlIHdob2xlIGNodW5rIHdvdWxkXG4gNDk1Olx0XHRcdFx0XHQgKiBhZHZhbmNlIHRoZSBjb25zdW1lciBwYXN0IGRhdGEgdGhlIHJlYWRlclxuIDQ5NjpcdFx0XHRcdFx0ICogbmV2ZXIgcmVjZWl2ZWQuXG4gNDk3Olx0XHRcdFx0XHQgKi9cbiA0OTg6XHRcdFx0XHRcdGlmICghbXNnIFx1MDAyNlx1MDAyNiByYyBcdTAwM2MgY2h1bmtfbGVuKSB7XG4gNDk5Olx0XHRcdFx0XHRcdGlmICghcmMpIHtcbiA1MDA6XHRcdFx0XHRcdFx0XHRpZiAoIXJlYWRfZG9uZSlcbiA1MDE6XHRcdFx0XHRcdFx0XHRcdHJlYWRfZG9uZSA9IC1FQUdBSU47XG4gNTAyOlx0XHRcdFx0XHRcdFx0Z290byBvdXQ7XG4gNTAzOlx0XHRcdFx0XHRcdH1cbiA1MDQ6XHRcdFx0XHRcdFx0Y29weWxlbiA9IGNodW5rX2xlbl9zdW0gLSBjaHVua19sZW4gJiM0MzsgcmM7XG4gNTA1Olx0XHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuIDUwNjpcdFx0XHRcdFx0XHRyZWFkX2RvbmUgJiM0Mzs9IHJjO1xuIDUwNzpcdFx0XHRcdFx0XHRicmVhaztcbiA1MDg6XHRcdFx0XHRcdH1cbiA1MDk6XHRcdFx0XHR9XG4gNTEwOlx0XHRcdFx0cmVhZF9yZW1haW5pbmcgLT0gY2h1bmtfbGVuO1xuIDUxMTpcdFx0XHRcdHJlYWRfZG9uZSAmIzQzOz0gY2h1bmtfbGVuO1xuIDUxMjpcdFx0XHRcdGlmIChmbGFncyBcdTAwMjYgTVNHX1BFRUspXG4gNTEzOlx0XHRcdFx0XHRwZWVrZWRfYnl0ZXMgJiM0Mzs9IGNodW5rX2xlbjtcbiA1MTQ6XHRcbiA1MTU6XHRcdFx0XHRpZiAoY2h1bmtfbGVuX3N1bSA9PSBjb3B5bGVuKVxuIDUxNjpcdFx0XHRcdFx0YnJlYWs7IC8qIGVpdGhlciBvbiAxc3Qgb3IgMm5kIGl0ZXJhdGlvbiAqL1xuIDUxNzpcdFx0XHRcdC8qIHByZXBhcmUgbmV4dCAoPT0gMm5kKSBpdGVyYXRpb24gKi9cbiA1MTg6XHRcdFx0XHRjaHVua19sZW4gPSBjb3B5bGVuIC0gY2h1bmtfbGVuOyAvKiByZW1haW5kZXIgKi9cbiA1MTk6XHRcdFx0XHRjaHVua19sZW5fc3VtICYjNDM7PSBjaHVua19sZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjUKCQkJCQkJCW91dHB1dDogMjI2CgkJCQkJCQl0aG91Z2h0czogODYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIFJlY2VpdmUgU3BsaWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc21jX3J4X3NwbGljZWAgYW5kIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIGNsYXNzaWMgZGF0YSBsb3NzIGlzc3VlLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBpcyB0aGF0IGBzcGxpY2VfdG9fcGlwZWAgbWlnaHQgbm90IHRyYW5zZmVyIHRoZSBmdWxsIGFtb3VudCB3ZSByZXF1ZXN0IChgY2h1bmtfbGVuYCkuIEluIHRoZSBvcmlnaW5hbCBjb2RlLCBpZiBgc3BsaWNlX3RvX3BpcGVgIHJldHVybmVkIGEgc2hvcnQgY291bnQsIHRoZSBsb2dpYyAqc3RpbGwqIGFkdmFuY2VkIHRoZSByZWFkIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcg4oCTIHRoZSBjb25zdW1lciB0aGlua3MgaXQgaGFzIHJlYWQgbW9yZSBkYXRhIHRoYW4gaXQgYWN0dWFsbHkgaGFzLCBtZWFuaW5nIHdlJiMzOTtyZSBlZmZlY3RpdmVseSBza2lwcGluZyBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlci4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7SXMgdGhpcyBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT8mIzM0OyBCdXQgb24gY2xvc2VyIGV4YW1pbmF0aW9uLCBuby4gVGhpcyBpc24mIzM5O3QgYWJvdXQgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgb3IgYW55IG1lbW9yeSBleHBvc3VyZSBpc3N1ZXMuIFRoZSByZWNlaXZlIGJ1ZmZlciAoYHJjdmJ1Zl9iYXNlYCkgaXMgZmlsbGVkIHdpdGggbmV0d29yayBkYXRhLCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoICp2YWxpZCogZGF0YSwgYWxiZWl0IGRhdGEgdGhhdCYjMzk7cyBiZWluZyBpbmNvcnJlY3RseSBza2lwcGVkLiBJZiB0aGUgY3Vyc29yIGlzIGFkdmFuY2VkIHBhc3QgZGF0YSB0aGF0IHRoZSBuZXR3b3JrIGhhc24mIzM5O3QgcHJvdmlkZWQsIHRoZW4gd2UgY291bGQgYmUgcmVhZGluZyBmcm9tIGludmFsaWQgbWVtb3J5LiBIb3dldmVyLCB0aGUgbG9naWMgYWR2YW5jZXMgdGhlIGN1cnNvciBieSBgY29weWxlbmAsIHdoaWNoIGlzIGFkanVzdGVkIHRvIHRoZSBhY3R1YWwgYHJjYCBieXRlcyB0aGF0IGFyZSBzcGxpY2VkLgoKVGhlIHBhdGNoIGNvcnJlY3RzIHRoaXMgYnkgYWRqdXN0aW5nIHRoZSBjdXJzb3IgYWR2YW5jZW1lbnQsIGBjb3B5bGVuYCwgYnkgdGhlIGFjdHVhbCBhbW91bnQgb2YgZGF0YSBzdWNjZXNzZnVsbHkgc3BsaWNlZC4gU28gaWYgd2Ugc3BsaWNlIGxlc3MgdGhhbiB0aGUgZXhwZWN0ZWQgYGNodW5rX2xlbmAsIHRoZSBgY29weWxlbmAgd2lsbCBiZSBhZGp1c3RlZCBhY2NvcmRpbmdseSwgc3RvcHBpbmcgYWR2YW5jaW5nIHRoZSBjb25zdW1lciBjdXJzb3IgcGFzdCB0aGUgZGF0YSBpdCBoYXMgbm90IGNvbnN1bWVkLiBUaGlzIGlzIHNpbXBseSBhIGxvZ2ljIGVycm9yIHRoYXQgbGVhZHMgdG8gZHJvcHBpbmcgZGF0YSB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlIG9mIHRoZSBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlci4gVGhlIGRhdGEgaXMgbG9zdC4gSXQgZG9lc24mIzM5O3QgcmVhZCBhbnl0aGluZyB1bmluaXRpYWxpemVkLCBpdCBzaW1wbHkgc2tpcHMgb3ZlciB0aGUgZGF0YS4KCkkgaGFkIHRvIHdhbGsgdGhyb3VnaCB0aGUgcmluZyBidWZmZXIgZHluYW1pY3MgdG8gYmUgc3VyZS4gVGhlIGNvbnN1bWVyIGFkdmFuY2VzIHRoZSBjdXJzb3IgYW5kIHRoZSBwcm9kdWNlciB3aWxsIGV2ZW50dWFsbHkgb3ZlcndyaXRlIGl0LiBJZiB3ZSBkb24mIzM5O3QgYWR2YW5jZSB0aGUgY3Vyc29yIGFwcHJvcHJpYXRlbHksIHRoZSBjb25zdW1lciBsb3NlcyBkYXRhLCBidXQgaW1wb3J0YW50bHksIGl0JiMzOTtzIGRhdGEgdGhhdCB3YXMgKndyaXR0ZW4qIGJ5IHRoZSBuZXR3b3JrLCBub3QgdW5pbml0aWFsaXplZCBnYXJiYWdlLiBSZWFkaW5nIGZyb20gdGhlIHJpbmcgYnVmZmVyIGlzIGFsd2F5cyB3aXRoaW4gdGhlIGJvdW5kcyBvZiBgcmVhZGFibGVgLCB3aGljaCByZXByZXNlbnRzIGRhdGEgdGhlIHByb2R1Y2VyIGhhcyB3cml0dGVuLgoKVGhlcmVmb3JlLCB0aGlzIGlzIGEgbG9naWMgYnVnLCBidXQgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJ1Zy4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZC4gVGhlIHBhdGNoIGlzIGNydWNpYWwgdG8gcHJldmVudGluZyBkYXRhIGxvc3MgYW5kIG1haW50YWluaW5nIGNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgd2UgY2FuIHN0aWNrIHRvIHN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcuIEtBU0FOIHdvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIGVkZ2UgY2FzZXMgb2YgcG90ZW50aWFsbHkgb3V0LW9mLWJvdW5kcyBwb2ludGVyIGFyaXRobWV0aWMgb3IgYnVmZmVyIGFjY2VzcyBpZiB0aGUgY3Vyc29yIGxvZ2ljIHdhcyBjb21wbGV0ZWx5IGZsYXdlZC4gSXQmIzM5O3MgYSBidWcsIGEgZGF0YSBsb3NzIGJ1ZywgYnV0IG5vdCBhIG1lbW9yeSBzYWZldHkgYnVnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZXJlIGEgcGFydGlhbCBzcGxpY2Ugb3BlcmF0aW9uICh3aGVuIGBzbWNfcnhfc3BsaWNlYCByZXR1cm5zIGZld2VyIGJ5dGVzIHRoYW4gYGNodW5rX2xlbmApIHdvdWxkIGluY29ycmVjdGx5IGFkdmFuY2UgdGhlIGNvbnN1bWVyIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhpcyBjYXVzZWQgdGhlIHJlYWRlciB0byBza2lwIG92ZXIgdW5yZWFkIGRhdGEsIGVmZmVjdGl2ZWx5IGRyb3BwaW5nIGl0LiBUaGUgZml4IHByb3Blcmx5IGFjY291bnRzIGZvciB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyBzcGxpY2VkIGFuZCBzdG9wcyBhZHZhbmNpbmcgdGhlIGN1cnNvciBwYXN0IHRoZSBjb25zdW1lZCBkYXRhLlxuXG5UaGlzIGJ1ZyBsZWFkcyB0byBkYXRhIGxvc3MgYW5kIGluY29ycmVjdCBzdHJlYW0gc3RhdGUsIGJ1dCBpdCBkb2VzIG5vdCBpbnZvbHZlIHJlYWRpbmcgb3IgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBkYXRhIGJlaW5nIHNraXBwZWQgaXMgdmFsaWQgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrLCBhbmQgYWR2YW5jaW5nIHRoZSBjdXJzb3IgbWVyZWx5IG1vdmVzIHRoZSByZWFkIHBvaW50ZXIgZm9yd2FyZCB3aXRoaW4gdGhlIHZhbGlkIGRhdGEgcmFuZ2UuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciBhbGxvY2F0aW9ucyBpbnZvbHZlZC4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBhbmQgaW5mby1sZWFrcywgbmVpdGhlciBvZiB3aGljaCBhcmUgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBmdXp6aW5nIChpbmNsdWRpbmcgS0FTQU4pIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSBhIHBhcnRpYWwgc3BsaWNlIG9wZXJhdGlvbiAod2hlbiBgc21jX3J4X3NwbGljZWAgcmV0dXJucyBmZXdlciBieXRlcyB0aGFuIGBjaHVua19sZW5gKSB3b3VsZCBpbmNvcnJlY3RseSBhZHZhbmNlIHRoZSBjb25zdW1lciBjdXJzb3IgYnkgdGhlIGZ1bGwgYGNodW5rX2xlbmAuIFRoaXMgY2F1c2VkIHRoZSByZWFkZXIgdG8gc2tpcCBvdmVyIHVucmVhZCBkYXRhLCBlZmZlY3RpdmVseSBkcm9wcGluZyBpdC4gVGhlIGZpeCBwcm9wZXJseSBhY2NvdW50cyBmb3IgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgc3BsaWNlZCBhbmQgc3RvcHMgYWR2YW5jaW5nIHRoZSBjdXJzb3IgcGFzdCB0aGUgY29uc3VtZWQgZGF0YS5cblxuVGhpcyBidWcgbGVhZHMgdG8gZGF0YSBsb3NzIGFuZCBpbmNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgaXQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIG9yIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgZGF0YSBiZWluZyBza2lwcGVkIGlzIHZhbGlkIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yaywgYW5kIGFkdmFuY2luZyB0aGUgY3Vyc29yIG1lcmVseSBtb3ZlcyB0aGUgcmVhZCBwb2ludGVyIGZvcndhcmQgd2l0aGluIHRoZSB2YWxpZCBkYXRhIHJhbmdlLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgaW52b2x2ZWQuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgYW5kIGluZm8tbGVha3MsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgZnV6emluZyAoaW5jbHVkaW5nIEtBU0FOKSBhcmUgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTE6NTIuMjM3NjgyNzk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwMTY2ODcwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY19yZWN2bXNnXCIsXG4gICAgXCJzbWNfc3BsaWNlX3JlYWRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXFxuXFxuVGhpcyBidWcgbGVhZHMgdG8gZGF0YSBsb3NzIGFuZCBpbmNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgaXQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIG9yIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgZGF0YSBiZWluZyBza2lwcGVkIGlzIHZhbGlkIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yaywgYW5kIGFkdmFuY2luZyB0aGUgY3Vyc29yIG1lcmVseSBtb3ZlcyB0aGUgcmVhZCBwb2ludGVyIGZvcndhcmQgd2l0aGluIHRoZSB2YWxpZCBkYXRhIHJhbmdlLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgaW52b2x2ZWQuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgYW5kIGluZm8tbGVha3MsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgZnV6emluZyAoaW5jbHVkaW5nIEtBU0FOKSBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZW4gY2FsbGVkIGZyb20gYHNtY19zcGxpY2VfcmVhZGAgKHdoZXJlIGBtc2dgIGlzIE5VTEwpIGFuZCBgc3BsaWNlX3RvX3BpcGVgIHRha2VzIGxlc3MgZGF0YSB0aGFuIG9mZmVyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgcHJvdG9jb2wgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MTo1Mi4yMzc2ODkyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTE2OTExOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDIwIDA5OjUxOjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jXFxuaW5kZXggNWM5ZTRkOGI1N2RlNC4uZDk1MWRiZThlZWMzYyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19yeC5jXFxuKysrIGIvbmV0L3NtYy9zbWNfcnguY1xcbkBAIC00ODgsNiArNDg4LDI0IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRyZWFkX2RvbmUgPSAtRUZBVUxUO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRcXHQvKiBzcGxpY2VfdG9fcGlwZSgpIHRha2VzIG9ubHkgd2hhdCB0aGUgcGlwZVxcbitcXHRcXHRcXHRcXHQgKiBoYXMgcm9vbSBmb3IsIHdoaWNoIG1heSBiZSBsZXNzIHRoYW4gd2FzXFxuK1xcdFxcdFxcdFxcdCAqIG9mZmVyZWQsIG9yIG5vdGhpbmcuIEFjY291bnQgd2hhdCBpdCB0b29rXFxuK1xcdFxcdFxcdFxcdCAqIGFuZCBzdG9wOiBjcmVkaXRpbmcgdGhlIHdob2xlIGNodW5rIHdvdWxkXFxuK1xcdFxcdFxcdFxcdCAqIGFkdmFuY2UgdGhlIGNvbnN1bWVyIHBhc3QgZGF0YSB0aGUgcmVhZGVyXFxuK1xcdFxcdFxcdFxcdCAqIG5ldmVyIHJlY2VpdmVkLlxcbitcXHRcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0XFx0aWYgKCFtc2cgXFx1MDAyNlxcdTAwMjYgcmMgXFx1MDAzYyBjaHVua19sZW4pIHtcXG4rXFx0XFx0XFx0XFx0XFx0aWYgKCFyYykge1xcbitcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIXJlYWRfZG9uZSlcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmVhZF9kb25lID0gLUVBR0FJTjtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0XFx0XFx0Y29weWxlbiA9IGNodW5rX2xlbl9zdW0gLSBjaHVua19sZW4gKyByYztcXG4rXFx0XFx0XFx0XFx0XFx0cmVhZF9yZW1haW5pbmcgLT0gcmM7XFxuK1xcdFxcdFxcdFxcdFxcdHJlYWRfZG9uZSArPSByYztcXG4rXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XFxuIFxcdFxcdFxcdHJlYWRfZG9uZSArPSBjaHVua19sZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjUzLjU1MDA3MjM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ4Mjc2MDM2NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY19yZWN2bXNnXCIsXG4gICAgXCJzbWNfc3BsaWNlX3JlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZW4gY2FsbGVkIGZyb20gYHNtY19zcGxpY2VfcmVhZGAgKHdoZXJlIGBtc2dgIGlzIE5VTEwpIGFuZCBgc3BsaWNlX3RvX3BpcGVgIHRha2VzIGxlc3MgZGF0YSB0aGFuIG9mZmVyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgcHJvdG9jb2wgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6NTE6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19yeC5jIGIvbmV0L3NtYy9zbWNfcnguY1xuaW5kZXggNWM5ZTRkOGI1N2RlNC4uZDk1MWRiZThlZWMzYyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbisrKyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00ODgsNiArNDg4LDI0IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRcdFx0XHRcdHJlYWRfZG9uZSA9IC1FRkFVTFQ7XG4gXHRcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdFx0fVxuK1x0XHRcdFx0Lyogc3BsaWNlX3RvX3BpcGUoKSB0YWtlcyBvbmx5IHdoYXQgdGhlIHBpcGVcbitcdFx0XHRcdCAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXNcbitcdFx0XHRcdCAqIG9mZmVyZWQsIG9yIG5vdGhpbmcuIEFjY291bnQgd2hhdCBpdCB0b29rXG4rXHRcdFx0XHQgKiBhbmQgc3RvcDogY3JlZGl0aW5nIHRoZSB3aG9sZSBjaHVuayB3b3VsZFxuK1x0XHRcdFx0ICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXJcbitcdFx0XHRcdCAqIG5ldmVyIHJlY2VpdmVkLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRpZiAoIW1zZyBcdTAwMjZcdTAwMjYgcmMgXHUwMDNjIGNodW5rX2xlbikge1xuK1x0XHRcdFx0XHRpZiAoIXJjKSB7XG4rXHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4rXHRcdFx0XHRcdFx0XHRyZWFkX2RvbmUgPSAtRUFHQUlOO1xuK1x0XHRcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdFx0XHR9XG4rXHRcdFx0XHRcdGNvcHlsZW4gPSBjaHVua19sZW5fc3VtIC0gY2h1bmtfbGVuICsgcmM7XG4rXHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuK1x0XHRcdFx0XHRyZWFkX2RvbmUgKz0gcmM7XG4rXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0XHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XG4gXHRcdFx0cmVhZF9kb25lICs9IGNodW5rX2xlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjUzLjU1MDA4MDA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0OTk4NDY5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvc21jL3NtY19yeC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgc21jX3J4X3JlY3Ztc2dgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyBhIG5ldyBjaGVjayBhZnRlciB3aGF0IGxvb2tzIGxpa2UgYSBkYXRhIGNvcHkgb3BlcmF0aW9uIOKAkyBwcm9iYWJseSBgc3BsaWNlX3RvX3BpcGVgIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50LCBqdWRnaW5nIGZyb20gdGhlIGNvbW1lbnQgaW4gdGhlIGNvZGUuIEl0J3MgYWRkaW5nIGAhbXNnIFx1MDAyNlx1MDAyNiByYyBcdTAwM2MgY2h1bmtfbGVuYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGlzIHRyeWluZyB0byBwcm90ZWN0IGFnYWluc3Q/IEFuZCB3aGF0J3MgYG1zZ2AgcmVmZXJyaW5nIHRvP1xuXG5UaGlzIHN1Z2dlc3RzIHRoZXJlIHdhcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBlZGdlIGNhc2UgdGhhdCB0aGUgb3JpZ2luYWwgY29kZSBkaWRuJ3QgaGFuZGxlLiBUaGUgY29uZGl0aW9uIGAhbXNnIFx1MDAyNlx1MDAyNiByYyBcdTAwM2MgY2h1bmtfbGVuYCBzZWVtcyB0byBpbmRpY2F0ZSB0aGUgY29weSBvcGVyYXRpb24gZmFpbGVkLCBvciBhdCBsZWFzdCBkaWRuJ3QgY29weSB0aGUgZXhwZWN0ZWQgYW1vdW50LCBhbmQgc29tZWhvdyBhIGBtc2dgIChwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gdGhlIG1lc3NhZ2UgYmVpbmcgcmVjZWl2ZWQpIGlzIG1pc3NpbmcuIFRoZSBuZWdhdGl2ZSBhc3NlcnRpb24gb2YgYCFtc2dgIGlzIGludGVyZXN0aW5nLCBhbmQgbGlrZWx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC5cblxuSSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2l0aGluIGBzbWNfcnhfcmVjdm1zZ2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdGhpcyBjaGVjayBiZWluZyB0cmlnZ2VyZWQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgYG1zZ2AgdmFyaWFibGUgaXMgdXNlZCwgd2hlcmUgaXQncyBzZXQsIGFuZCB3aGF0IGNhbiBnbyB3cm9uZyBpbiB0aGF0IGFyZWEuIEFsc28sIGhvdyBpcyBgY2h1bmtfbGVuYCBiZWluZyBkZXRlcm1pbmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHdob2xlIGZ1bmN0aW9uLCBhbmQgdGhlIGRhdGEgZmxvdywgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBhZGRlZCBjaGVjayBhbmQgbWFrZSBhIGp1ZGdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjU4LjIwMDA2Nzg0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTkwMzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfcnhfcmVjdm1zZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19yeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX3J4LmM9MjkwPXN0YXRpYyBpbnQgc21jX3J4X3JlY3ZfdXJnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cXG5uZXQvc21jL3NtY19yeC5jOjMzNDpzdGF0aWMgYm9vbCBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc2l6ZV90IHBlZWtlZClcXG5uZXQvc21jL3NtY19yeC5jLTMzNS17XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM0NS1cXG5uZXQvc21jL3NtY19yeC5jOjM0NjovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlxcdGNvcHkgZGF0YSB0byByZWNlaXZlIGJ1ZmZlclxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXFxubmV0L3NtYy9zbWNfcnguYzozNTM6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3NtYy9zbWNfcnguYy0zNTQtXFx0XFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTUtXFxubmV0L3NtYy9zbWNfcnguYzozOTY6XFx0XFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcXG5uZXQvc21jL3NtY19yeC5jLTM5Ny1cXHRcXHRcXHRnb3RvIGNvcHk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYzo0MDE6XFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcbm5ldC9zbWMvc21jX3J4LmMtNDAyLVxcdFxcdFxcdCAqL1xcbm5ldC9zbWMvc21jX3J4LmM6NDAzOlxcdFxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy00MDQtXFx0XFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy01MzMtXFxubmV0L3NtYy9zbWNfcnguYzo1MzQ6XFx0XFx0dHJhY2Vfc21jX3J4X3JlY3Ztc2coc21jLCBjb3B5bGVuKTtcXG5uZXQvc21jL3NtY19yeC5jLTUzNS1cXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjU4LjI1MTk3NTY0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODA3MDkwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBjaGFuZ2VzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBzbWNfcnhfcmVjdm1zZ2AgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhleSd2ZSB0d2Vha2VkIGBzbWNfcnhfcmVjdm1zZ2AuIFRoYXQncyBpbnRlcmVzdGluZy4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgKndoeSogYW5kICpob3cqLiBUaGlzIGZ1bmN0aW9uIGlzIGNvcmUgdG8gdGhlIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKFJEUykgb3ZlciBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpIHByb3RvY29sIHN0YWNrLiBBbnkgY2hhbmdlcyBoZXJlIGFyZSBsaWtlbHkgc2lnbmlmaWNhbnQsIHBvdGVudGlhbGx5IGltcGFjdGluZyBwZXJmb3JtYW5jZSwgc3RhYmlsaXR5LCBvciBldmVuIHNlY3VyaXR5LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyB0byBtaW5kIGlzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBgQ09ORklHYCBvcHRpb25zIGFyZSByZWxldmFudCBhbmQgaWYgYW55IG5ldyBvbmVzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBBcmUgdGhleSBlbmFibGluZyBhIG5ldyBTTUMgZmVhdHVyZSwgb3B0aW1pemluZyBhbiBleGlzdGluZyBvbmUsIG9yIGZpeGluZyBhIGJ1Zz8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYENPTkZJR19TTUNgLCBgQ09ORklHX1NNQ19UUkFOU1BPUlRgLCBvciBwZXJoYXBzIHNvbWV0aGluZyBtb3JlIGdyYW51bGFyIHJlbGF0ZWQgdG8gUkRNQSBpbnRlZ3JhdGlvbj8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcyB0byBkZXRlcm1pbmUgdGhlIGV4YWN0IGRlcGVuZGVuY2llcy4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gc2VlIHdoYXQgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2h5LiBUaGlzIGNvdWxkIGJlIGFib3V0IHN1cHBvcnRpbmcgbmV3IGhhcmR3YXJlLCBhZGRyZXNzaW5nIGEgY29ybmVyIGNhc2UgaW4gZmxvdyBjb250cm9sLCBvciBldmVuIGhhcmRlbmluZyBhZ2FpbnN0IGEgcG90ZW50aWFsIGV4cGxvaXQuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MDEuNzMyNjg4MTk2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzAyNzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MDEuNzgyMDAwMzQ1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2NDU4MDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBgU01DYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgKmFueSogb3RoZXIgY29uZmlndXJhdGlvbnMgaW4gcGxheTsgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgaXMgY3J1Y2lhbC5cblxuTm93LCB0aGF0IGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24gaGFzIHBpcXVlZCBteSBpbnRlcmVzdC4gVGhlIG5hbWUgc3VnZ2VzdHMgaXQncyBhbiBBUEkgZW50cnlwb2ludCwgb3IgYXQgbGVhc3QgYSBmdW5jdGlvbiB0aGF0J3MgYmVpbmcgY2FsbGVkIGZyb20gb25lLiBUaGVyZWZvcmUsIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzdGFjazsgSSdsbCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgaW52b2tlZC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgcGFydCBvZiB0aGUgYW5hbHlzaXMgb2Z0ZW4gc3RhcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MDQuNDQ2NTgzMTczWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMjU1MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19yeF9yZWN2bXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9MjgzNT1pbnQgc21jX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yODYyLVxcdFxcdG1zZy1cXHUwMDNlbXNnX25hbWVsZW4gPSAwO1xcbm5ldC9zbWMvYWZfc21jLmM6Mjg2MzpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgbXNnLCBOVUxMLCBsZW4sIGZsYWdzKTtcXG5uZXQvc21jL2FmX3NtYy5jLTI4NjQtXFx0XFx0U01DX1NUQVRfUlhfUEFZTE9BRChzbWMsIHJjLCByYyk7XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTMyODQ9c3NpemVfdCBzbWNfc3BsaWNlX3JlYWQoc3RydWN0IHNvY2tldCAqc29jaywgbG9mZl90ICpwcG9zLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzIxLVxcdFxcdFNNQ19TVEFUX0lOQyhzbWMsIHNwbGljZV9jbnQpO1xcbm5ldC9zbWMvYWZfc21jLmM6MzMyMjpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgTlVMTCwgcGlwZSwgbGVuLCBmbGFncyk7XFxubmV0L3NtYy9hZl9zbWMuYy0zMzIzLVxcdH1cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9MjkwPXN0YXRpYyBpbnQgc21jX3J4X3JlY3ZfdXJnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cXG5uZXQvc21jL3NtY19yeC5jOjMzNDpzdGF0aWMgYm9vbCBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc2l6ZV90IHBlZWtlZClcXG5uZXQvc21jL3NtY19yeC5jLTMzNS17XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM0NS1cXG5uZXQvc21jL3NtY19yeC5jOjM0NjovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlxcdGNvcHkgZGF0YSB0byByZWNlaXZlIGJ1ZmZlclxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXFxubmV0L3NtYy9zbWNfcnguYzozNTM6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3NtYy9zbWNfcnguYy0zNTQtXFx0XFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTUtXFxubmV0L3NtYy9zbWNfcnguYzozOTY6XFx0XFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcXG5uZXQvc21jL3NtY19yeC5jLTM5Ny1cXHRcXHRcXHRnb3RvIGNvcHk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYzo0MDE6XFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcbm5ldC9zbWMvc21jX3J4LmMtNDAyLVxcdFxcdFxcdCAqL1xcbm5ldC9zbWMvc21jX3J4LmM6NDAzOlxcdFxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy00MDQtXFx0XFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy01MzMtXFxubmV0L3NtYy9zbWNfcnguYzo1MzQ6XFx0XFx0dHJhY2Vfc21jX3J4X3JlY3Ztc2coc21jLCBjb3B5bGVuKTtcXG5uZXQvc21jL3NtY19yeC5jLTUzNS1cXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5oPTIwPXZvaWQgc21jX3J4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xcbm5ldC9zbWMvc21jX3J4LmgtMjEtXFxubmV0L3NtYy9zbWNfcnguaDoyMjppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvc21jL3NtY19yeC5oLTIzLVxcdFxcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncyk7XFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM9Nz1FWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3R4X3NlbmRtc2cpO1xcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYzo4OkVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNfcnhfcmVjdm1zZyk7XFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jLTktRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY3JfbGlua19kb3duKTtcXG4tLVxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaD03MT1ERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3R4X3NlbmRtc2csXFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzctXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oOjc4OkRFRklORV9FVkVOVChzbWNfbXNnX2V2ZW50LCBzbWNfcnhfcmVjdm1zZyxcXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjA0LjUzODg0NDM2OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTQ0MDE1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBSZWNlbnQgU01DIFNvY2tldCBQcm90b2NvbCBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGFkZHJlc3NpbmcgYW4gaW50ZXJlc3RpbmcgYnVnIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29tbXVuaWNhdGlvbnMgKFNNQykgcHJvdG9jb2wuIFNwZWNpZmljYWxseSwgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoaW4gYHNtY19yeF9yZWN2bXNnYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGJvdGggYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSwgb2YgY291cnNlLCB0aGUgc3RhbmRhcmQgYC5yZWN2bXNnYCBhbmQgYC5zcGxpY2VfcmVhZGAgb3BlcmF0aW9ucyBmb3IgdGhlIFNNQyBzb2NrZXQgZmFtaWx5LiBUaGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIGEgc2NlbmFyaW8gaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSB0aGUgbWVzc2FnZSBwb2ludGVyIChgbXNnYCkgaXMgTlVMTC4gVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBgc21jX3J4X3JlY3Ztc2dgIGlzIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgLCB3aGljaCBwYXNzZXMgYSBgcGlwZWAgaW5zdGVhZC5cblxuVGhlIGVzc2VuY2Ugb2YgdGhlIGZpeCBpcyBoYW5kbGluZyBhIHNpdHVhdGlvbiB3aGVyZSBgc3BsaWNlX3RvX3BpcGVgIGRvZXNuJ3QgdHJhbnNmZXIgdGhlIGVudGlyZSBhbW91bnQgcmVxdWVzdGVkLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gdGhlIFNNQyBwcm90b2NvbCdzIGJlaGF2aW9yLCBhbmQgdGhhdCBjYW4gaGF2ZSBzb21lIHJlYWwgaW1wYWN0LiBCZWNhdXNlIHVzZXJzcGFjZSBjYW4gdHJpZ2dlciB0aGlzIHBhdGggdXNpbmcgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggZnV6emluZy5cblxuTXkgZm9jdXMgaGFzIGJlZW4gb24gYHNtY19yeF9yZWN2bXNnYCwgYHNtY19yZWN2bXNnYCwgYW5kIGBzbWNfc3BsaWNlX3JlYWRgLiBBbHNvLCB0aGUgYFNNQ2AgY29uZmlndXJhdGlvbiBpcyB3aGF0J3MgcmVsZXZhbnQgaGVyZSwgdGhhdCdzIGNsZWFyLiBCdXQgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBwYXJ0aWN1bGFyIHZ1bG5lcmFiaWxpdHksIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE2MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjowOS4xOTMyNDgyNDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzAyMzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxubmV0L3NtYy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbm5ldC9zbWMvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZz0xND1jb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoxNjpcXHRkZXBlbmRzIG9uIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0xNy1cXHRoZWxwXFxuLS1cXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFNNQyBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9TWVNDQUxMXFxubmV0L3NtYy9LY29uZmlnLTI2LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjowOS4yNDE1NTQ0ODVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzODg0MTY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLY29uZmlnIENvbmZ1c2lvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgYnVpbGQgcHJvY2VzcyBpcyBnZXR0aW5nIHRhbmdsZWQgYWdhaW4uIEl0IGxvb2tzIGxpa2UgdGhlIG91dGNvbWUgKmRlcGVuZHMqIG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQsIHdhaXQsIGBESUJTYD8gVGhhdCdzLi4uIHVuZXhwZWN0ZWQuIEkgZmVlbCBsaWtlIEkndmUgZW5jb3VudGVyZWQgdGhpcyBiZWZvcmUuIExldCBtZSBwYXVzZSBhbmQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgbmV0L3NtYy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGhvdyBgRElCU2AgaXMgYmVpbmcgdXNlZCBhbmQgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIHRydWx5IGFyZSBpbiB0aGlzIGNvbnRleHQuIEl0J3MgZWFzeSB0byBsb3NlIHRyYWNrIHdoZW4geW91J3JlIGRlYWxpbmcgd2l0aCBzdWNoIGEgaGlnaGx5IGludGVyZGVwZW5kZW50IHN5c3RlbS4gTmVlZCB0byBiZSBjZXJ0YWluIG9mIHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoxMi41ODAzOTgzMTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NtYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU01DXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBESUJTXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFNNQy1SIHByb3ZpZGVzIGEgXFxcInNvY2tldHMgb3ZlciBSRE1BXFxcIiBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXFxuICAgNzpcXHRcXHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxcbiAgIDg6XFx0XFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxcbiAgIDk6XFx0XFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXFxuICAxMDpcXHRcXHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biBTTUMgc29ja2V0IGFwcGxpY2F0aW9uc1xcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgU01DX0RJQUdcXG4gIDE1OlxcdFxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gU01DXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFN1cHBvcnQgZm9yIFNNQyBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0b29scyBzdWNoIGFzXFxuICAxOTpcXHRcXHQgIHNtY3NzLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjEyLjU4MDQ1NDQ3MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzIzMzM3Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gRElCUyBhbmQgU01DIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGBESUJTYD8gVGhhdCB0ZXJtIGlzbid0IGltbWVkaWF0ZWx5IGZhbWlsaWFyLiBCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgd2hhdCB0aGF0IHJlZmVycyB0by4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgbWFrZSBhIHF1aWNrIG1lbnRhbCBub3RlIG9mIHRoZSByZWxldmFudCBjb21wb25lbnRzOiBgU01DYCwgYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgb2YgY291cnNlLCB0aGlzIG5ldyBvbmUsIGBESUJTYC4gV2FpdCwgaXMgdGhpcyBhIHR5cG8/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBvciB3b3JraW5nIHdpdGggYERJQlNgIGJlZm9yZSwgbm90IGluIHRoaXMgY29udGV4dCBhdCBsZWFzdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgdGV4dCBhZ2FpbiwganVzdCB0byBiZSBzdXJlIEkgaGF2ZW4ndCBtaXNyZWFkIGl0LiBBaCwgbm9wZSwgdGhlcmUgaXQgaXMg4oCTIGBESUJTYCBpcyBpbmRlZWQgcHJlc2VudC5cblxuUmlnaHQsIHNvIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgb3RoZXIgZWxlbWVudHMsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGl0cyBjb25maWd1cmF0aW9uIGNvbnRleHQuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9zbWMvS2NvbmZpZ2AgdG8gc2VlIGhvdyBpdCdzIGRlZmluZWQuIFdhaXQuLi4gSSBzZWUsIGl0IGhhcyBkZXBlbmRlbmNpZXMuIEl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU2AuIFdhaXQuLi4gdGhhdCBtYWtlcyBtZSB0aGluay4uLiBpcyBpdCByZWxhdGVkIHRvIElQdjY/IE5vLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGRpZG4ndCBtaXNyZWFkIHRoZSBsaW5lIGFnYWluLiBMZXQgbWUgZ3JlcCB0aHJvdWdoIGBuZXQvc21jL0tjb25maWdgIGp1c3QgdG8gbWFrZSBzdXJlLiBPaywgaXQncyByaWdodCB0aGVyZSBpbiB0aGUgZGVwZW5kZW5jeSBsaW5lOiBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gU28gaXQgaXMgd2hhdCBJIHRob3VnaHQsIGl0J3MgbGl0ZXJhbGx5IGBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gQWxyaWdodCwgc28gdGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGNvbmZpcm0gdGhpcyBpbiB0aGUga2VybmVsIHRyZWUuIExldCBtZSBmaW5kIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjE5LjkwMzc5NDE1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczOTQ5MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRElCU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnPTI9Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG5uZXQvc21jL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBESUJTXFxubmV0L3NtYy9LY29uZmlnLTUtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoxOS45NzExOTQ4OTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNDE0MTY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIEZhbWlsaWFyIFRlcm0qKlxuXG5Pa2F5LCBzbyB0aGVyZSBpdCBpcyAtIGBESUJTYC4gSW50ZXJlc3RpbmcuIEl0J3Mgbm90IHNvbWV0aGluZyBJIGRlYWwgd2l0aCBkYXktdG8tZGF5LCBidXQgdGhlIGFjcm9ueW0gaXMgZGVmaW5pdGVseSBmYW1pbGlhci4gTGV0IG1lIGp1c3QgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIHNwZWNpZmljIGNvbnRleHQgaGVyZS4gV2hhdCBkb2VzIGBESUJTYCBzdGFuZCBmb3IgaW4gKnRoaXMqIHNpdHVhdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSByZWxldmFudCBjb25uZWN0aW9ucyBiZWZvcmUgSSBjYW4gZm9ybXVsYXRlIGEgcHJvcGVyIHJlc3BvbnNlIG9yIGFuYWx5c2lzLiBMZXQgbWUganVzdCBjaGVjayBteSBtZW50YWwgZGF0YWJhc2UsIG9yIHBlcmhhcHMgYSBxdWljayBzZWFyY2ggbWlnaHQgYmUgdXNlZnVsLiBSaWdodCwgbGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMTAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoyMy41NzUzMzg4OTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTgyNjQwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERJQlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoyNS4xMzM2MDgyMjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5MzY3MTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRElCUyBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYERJQlNgIGhlcmUg4oCTIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZy4gR290IGl0LiBUaGlzIG1lYW5zIHdlJ2xsIG5lZWQgdG8gZW5hYmxlIHRoYXQgc3BlY2lmaWMgc3VwcG9ydC4gTm93LCBsb29raW5nIGF0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucywgaXQgc2VlbXMgd2UgYWxzbyBuZWVkIGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYCBpdHNlbGYuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzcGVjaWZpY2FsbHkgZGV0ZXJtaW5lIGlmIGBJTkZJTklCQU5EYCBoYXMgYW55IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgb3IgcmVxdWlyZW1lbnRzIHdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoyOC40MjcyODE2MjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjU1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xNj1pZiBJTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMTctXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00NS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NDpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiUkRNQS9DTVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTcxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjcyOmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNfQ09ORklHRlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4MTpjb25maWcgSU5GSU5JQkFORF9WSVJUX0RNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTgyLVxcdGRlZl9ib29sICFISUdITUVNXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjI4LjQ3Njk0MzEwMVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY5OTYyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uOlxuXG4qKk5hdmlnYXRpbmcgSW5maW5pYmFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBgSU5GSU5JQkFORGAgcmVsaWVzIG9uIGEgZmV3IG90aGVyIHRoaW5ncy4gTGV0IG1lIHF1aWNrbHkgcmVjYXA6IGBIQVNfSU9NRU1gLCBgTkVUYCwgYElORVRgLCBhbmQgYG1gLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBpdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHN1cmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGFzIGNvbXBsZXggYXMgSW5maW5pYmFuZC4gSXQncyB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcsIGFuZCB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudCBvZiB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgaG93IHRoZSBrZXJuZWwgaXMgZ29pbmcgdG8gaGFuZGxlIG1lbW9yeSBtYW5hZ2VtZW50LCBuZXR3b3JraW5nIGxheWVycywgYW5kIHRob3NlIHNwZWNpZmljIG5ldHdvcmtpbmcgcHJvdG9jb2xzLCB0byBlbnN1cmUgcHJvcGVyIEluZmluaWJhbmQgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIxMCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjMxLjg0NjkwODEzMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBJTkZJTklCQU5EXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiAhQUxQSEFcXG4gICA4OlxcdFxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbiAgIDk6XFx0XFx0c2VsZWN0IElSUV9QT0xMXFxuICAxMDpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIENvcmUgc3VwcG9ydCBmb3IgSW5maW5pQmFuZCAoSUIpLiAgTWFrZSBzdXJlIHRvIGFsc28gc2VsZWN0XFxuICAxMzpcXHRcXHQgIGFueSBwcm90b2NvbHMgeW91IHdpc2ggdG8gdXNlIGFzIHdlbGwgYXMgZHJpdmVycyBmb3IgeW91clxcbiAgMTQ6XFx0XFx0ICBJbmZpbmlCYW5kIGhhcmR3YXJlLlxcbiAgMTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjMxLjg0Njk2ODgxMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAwNTY4NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgZmllbGQ6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBDb25kaXRpb25hbHMqKlxuXG5SaWdodCwgc28gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEknbSBzZWVpbmcgdGhhdCB0aGUgYElORklOSUJBTkRgIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGEgbnVtYmVyIG9mIGtleSBmZWF0dXJlcyBiZWluZyBlbmFibGVkOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYC4gSXQncyBhbHNvIGV4cGxpY2l0bHkgZXhjbHVkZWQgb24gYEFMUEhBYCBhcmNoaXRlY3R1cmVzLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgaGlzdG9yaWNhbCBjb250ZXh0IG9mIEluZmluaUJhbmQgc3VwcG9ydC4gVGhhdCdzIGFsbCBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBhIHR5cGljYWwgZGVwZW5kZW5jeSBjaGFpbi4gTm93LCBJJ20gc2hpZnRpbmcgbXkgZm9jdXMgYW5kIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBESUJTYCBkZXBlbmRzIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgdHJlZTsga25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHN5c3RlbSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjY0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjozNS4wNDc1MzkxMDRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRjb25maWcgRElCU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XFxuICAgNzpcXHRcXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXFxuICAgODpcXHRcXHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuICAxMTpcXHRcXHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cXG4gIDEyOlxcdFxcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBESUJTX0xPXFxuICAxNTpcXHRcXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjM1LjA0NzYxMTcyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYwMzM5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgRElCUyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBESUJTYCBoZXJlLCBhbmQgZmlyc3QgdGhpbmcgSSBub3RlIGlzIHRoYXQgaXQncyBpbmRlcGVuZGVudCwgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcG90ZW50aWFsIHBvcnRhYmlsaXR5IGFuZCBtaW5pbWFsIGludGVncmF0aW9uIGNvbXBsZXhpdHkuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbnMgaXQgaGluZ2VzIG9uLiBMb29rcyBsaWtlIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIGFyZSBhbGwgcHJvcGVybHkgY29uZmlndXJlZC5cblxuTXkgZm9jdXMgcmlnaHQgbm93LCB0aG91Z2gsIGlzIG9uIHRob3NlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gaGFuZGxpbmcgbWVzc2FnZXMsIHNwZWNpZmljYWxseSBgc21jX3J4X3JlY3Ztc2dgLCBgc21jX3JlY3Ztc2dgLCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIExldCdzIGRpZyBpbnRvIGBzbWNfcnhfcmVjdm1zZ2AuIE9rYXksIGl0J3MgKm5vdCogc3RhdGljLCBzbyBpdCdzIHByb2JhYmx5IGNhbGxhYmxlIGZyb20gZWxzZXdoZXJlLiBBbmQgeWVwLCBpdCdzIGV4cG9ydGVkIGluIGBuZXQvc21jL3NtY19yeC5oYCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gTm93IGZvciB0aGUgb3RoZXIgdHdvLCBgc21jX3JlY3Ztc2dgIGFuZCBgc21jX3NwbGljZV9yZWFkYC4uLiBhaCwgdGhleSdyZSBkZWZpbmVkIGluIGBuZXQvc21jL2FmX3NtYy5jYC4gR29vZCwgdGhhdCBnaXZlcyBtZSBhIGNsZWFyIGlkZWEgb2Ygd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgbGllcyBhbmQgaG93IHRoZXNlIHBhcnRzIGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MzkuMTA3OTU0NjM4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTkxMzM5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3JlY3Ztc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9hZl9zbWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL2FmX3NtYy5jPTI3OTc9aW50IHNtY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjgzNC1cXG5uZXQvc21jL2FmX3NtYy5jOjI4MzU6aW50IHNtY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvc21jL2FmX3NtYy5jLTI4MzYtXFx0XFx0aW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz0zMzMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzM0Ni1cXHQuc2VuZG1zZ1xcdD0gc21jX3NlbmRtc2csXFxubmV0L3NtYy9hZl9zbWMuYzozMzQ3OlxcdC5yZWN2bXNnXFx0PSBzbWNfcmVjdm1zZyxcXG5uZXQvc21jL2FmX3NtYy5jLTMzNDgtXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MzkuODA3MDk0MDgxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTk4MzM0OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlF1aWNrIE5vdGUgb24gYHNtY19zcGxpY2VfcmVhZGAgTG9jYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc21jX3NwbGljZV9yZWFkYCBmdW5jdGlvbi4gQW5kIGEgcXVpY2sgY2hlY2sgaW4gbXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIHNvdXJjZSBjb2RlIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHdoZXJlIHRvIGZpbmQgaXQuIFllcCwgaXQncyBhbHNvIG5lc3RsZWQgd2l0aGluIHRoZSBgbmV0L3NtYy9hZl9zbWMuY2AgZmlsZS4gTm90aGluZyB1bnVzdWFsIHRoZXJlLCB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBzZWUgaXQgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgdGhlIFNNQyBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gVGhhdCBjb25maXJtcyBteSBleGlzdGluZyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhcmNoaXRlY3R1cmUuIExldCdzIHNlZSBpZiB0aGlzIGlzIGFsbCwgb3IgaWYgdGhlcmUgaXMgYW5vdGhlciBmdW5jdGlvbiBjYWxsZWQgc29tZXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1Mjo0My4yNjY5MzAzODlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTI0NjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19zcGxpY2VfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL2FmX3NtYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9MzE5Nz1pbnQgc21jX2lvY3RsKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMyODMtICovXFxubmV0L3NtYy9hZl9zbWMuYzozMjg0OnNzaXplX3Qgc21jX3NwbGljZV9yZWFkKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvZmZfdCAqcHBvcyxcXG5uZXQvc21jL2FmX3NtYy5jLTMyODUtXFx0XFx0XFx0c3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbixcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MzMzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzbWNfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMzNDgtXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvc21jL2FmX3NtYy5jOjMzNDk6XFx0LnNwbGljZV9yZWFkXFx0PSBzbWNfc3BsaWNlX3JlYWQsXFxubmV0L3NtYy9hZl9zbWMuYy0zMzUwLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjQzLjMxNDA1OTAxN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTk0NzMyOTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0OiBgc21jX3J4X3JlY3Ztc2dgIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIG5ldyBwYXRjaCB0byByZXZpZXcsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlIHdpdGhpbiB0aGUgYHNtY19yeF9yZWN2bXNnYCBmdW5jdGlvbi4gVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IGBzcGxpY2VfdG9fcGlwZWAgaXNuJ3QgY29uc3VtaW5nIGFzIG11Y2ggZGF0YSBhcyBpdCdzIGJlaW5nIG9mZmVyZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBvciBldmVuIG92ZXJmbG93cyBpZiBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCBsb2dpYywgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5UaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhpcyB2dWxuZXJhYmlsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBgc3BsaWNlKClgIHN5c3RlbSBjYWxsIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBhbiBTTUMgc29ja2V0LiBUaGF0J3MgYSBodWdlIHdpbiBpbiB0ZXJtcyBvZiBmdXp6aW5nIHBvdGVudGlhbCEgVGhpcyBtYWtlcyBpdCBhIHBlcmZlY3QgdGFyZ2V0IGZvciBjb21wcmVoZW5zaXZlIGZ1enppbmcgY2FtcGFpZ25zIGJlY2F1c2Ugd2UgY2FuIHJlYWNoIHRoaXMgY29kZSBmcm9tIG91dHNpZGUgdGhlIGtlcm5lbC5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHNtY19yeF9yZWN2bXNnYCAob2J2aW91c2x5KSwgYnV0IGFsc28gYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdGhlIGRhdGEgcGF0aC4gSSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBteSB0ZXN0IGVudmlyb25tZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5lbCBvcHRpb25zOiBgU01DYCwgYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBlbmFibGVkIGFuZCBleGVyY2lzZWQuXG5cbkFscmlnaHQsIHRpbWUgdG8gc2V0IHVwIGFuZCBydW4gc29tZSB0ZXN0czsgSSdsbCBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4MiwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NDguMzA4Nzk0NDA1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4Nzg3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiRElCU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19yeF9yZWN2bXNnXCIsXG4gICAgXCJzbWNfcmVjdm1zZ1wiLFxuICAgIFwic21jX3NwbGljZV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVuIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgICh3aGVyZSBgbXNnYCBpcyBOVUxMKSBhbmQgYHNwbGljZV90b19waXBlYCB0YWtlcyBsZXNzIGRhdGEgdGhhbiBvZmZlcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU01DIHByb3RvY29sIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBzcGxpY2UoKWAgb24gYW4gU01DIHNvY2tldC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORVRcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfcnhfcmVjdm1zZ1wiLFxuICAgIFwic21jX3JlY3Ztc2dcIixcbiAgICBcInNtY19zcGxpY2VfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlbiBjYWxsZWQgZnJvbSBgc21jX3NwbGljZV9yZWFkYCAod2hlcmUgYG1zZ2AgaXMgTlVMTCkgYW5kIGBzcGxpY2VfdG9fcGlwZWAgdGFrZXMgbGVzcyBkYXRhIHRoYW4gb2ZmZXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBwcm90b2NvbCBsb2dpYywgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgc3BsaWNlKClgIG9uIGFuIFNNQyBzb2NrZXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjQ4LjM3NzY3OTY5N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NzY2ODA1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1Mjo0OC4zNzgxMTc1MDdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjE4NzYyMzc0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXFxuXFxuVGhpcyBidWcgbGVhZHMgdG8gZGF0YSBsb3NzIGFuZCBpbmNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgaXQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIG9yIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgZGF0YSBiZWluZyBza2lwcGVkIGlzIHZhbGlkIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yaywgYW5kIGFkdmFuY2luZyB0aGUgY3Vyc29yIG1lcmVseSBtb3ZlcyB0aGUgcmVhZCBwb2ludGVyIGZvcndhcmQgd2l0aGluIHRoZSB2YWxpZCBkYXRhIHJhbmdlLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgaW52b2x2ZWQuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgYW5kIGluZm8tbGVha3MsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgZnV6emluZyAoaW5jbHVkaW5nIEtBU0FOKSBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6NTE6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19yeC5jIGIvbmV0L3NtYy9zbWNfcnguY1xuaW5kZXggNWM5ZTRkOGI1N2RlNC4uZDk1MWRiZThlZWMzYyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbisrKyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00ODgsNiArNDg4LDI0IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRcdFx0XHRcdHJlYWRfZG9uZSA9IC1FRkFVTFQ7XG4gXHRcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdFx0fVxuK1x0XHRcdFx0Lyogc3BsaWNlX3RvX3BpcGUoKSB0YWtlcyBvbmx5IHdoYXQgdGhlIHBpcGVcbitcdFx0XHRcdCAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXNcbitcdFx0XHRcdCAqIG9mZmVyZWQsIG9yIG5vdGhpbmcuIEFjY291bnQgd2hhdCBpdCB0b29rXG4rXHRcdFx0XHQgKiBhbmQgc3RvcDogY3JlZGl0aW5nIHRoZSB3aG9sZSBjaHVuayB3b3VsZFxuK1x0XHRcdFx0ICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXJcbitcdFx0XHRcdCAqIG5ldmVyIHJlY2VpdmVkLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRpZiAoIW1zZyBcdTAwMjZcdTAwMjYgcmMgXHUwMDNjIGNodW5rX2xlbikge1xuK1x0XHRcdFx0XHRpZiAoIXJjKSB7XG4rXHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4rXHRcdFx0XHRcdFx0XHRyZWFkX2RvbmUgPSAtRUFHQUlOO1xuK1x0XHRcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdFx0XHR9XG4rXHRcdFx0XHRcdGNvcHlsZW4gPSBjaHVua19sZW5fc3VtIC0gY2h1bmtfbGVuICsgcmM7XG4rXHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuK1x0XHRcdFx0XHRyZWFkX2RvbmUgKz0gcmM7XG4rXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0XHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XG4gXHRcdFx0cmVhZF9kb25lICs9IGNodW5rX2xlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjQ4LjM3ODExODI1N1oiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQyMTk3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBTTUMgUlggT3B0aW1pemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgYHNtY19yeF9yZWN2bXNnYCBpbiBgbmV0L3NtYy9zbWNfcnguY2AuIFJpZ2h0IGF3YXksIGl0IHNlZW1zIHRvIGJlIG9wdGltaXppbmcgdGhlIHJlY2VpdmUgcGF0aC4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBhIGNvbmRpdGlvbmFsIGNoZWNrOiBgIW1zZyBcdTAwMjZcdTAwMjYgcmMgXHUwMDNjIGNodW5rX2xlbmAgYWZ0ZXIgd2hhdCdzIGxpa2VseSBhIGBzcGxpY2VfdG9fcGlwZWAgY2FsbCwgZ2l2ZW4gdGhlIHN1cnJvdW5kaW5nIGNvbW1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzOiBhIG51bGwgYG1zZ2AgcG9pbnRlciBsaWtlbHkgc2lnbmlmaWVzIGEgc3BsaWNlIG9wZXJhdGlvbiwgcHJvYmFibHkgYWltaW5nIGZvciB6ZXJvLWNvcHkgZGF0YSB0cmFuc2Zlci4gVGhlIGFkZGVkIGNoZWNrIHByb2JhYmx5IGVuc3VyZXMgdGhhdCBpZiB0aGUgc3BsaWNlIG9wZXJhdGlvbiBkaWRuJ3QgZnVsbHkgbW92ZSBhbGwgZGF0YSwgd2UgZG9uJ3QgcHJvY2VlZCB3aXRoIHNvbWV0aGluZyB0aGF0IGNvdWxkIGxlYWQgdG8gZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gYXJvdW5kIGl0IHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBMZXQgbWUgZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBjb250ZXh0IHRvIGZ1bGx5IGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgaXQncyBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgcGVyZm9ybWFuY2UgYm90dGxlbmVjayBvciBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NTIuMTIwMzE4MzMzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQwMzQ2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3J4X3JlY3Ztc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfcnguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19yeC5jPTI5MD1zdGF0aWMgaW50IHNtY19yeF9yZWN2X3VyZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zMzMtXFxubmV0L3NtYy9zbWNfcnguYzozMzQ6c3RhdGljIGJvb2wgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHNpemVfdCBwZWVrZWQpXFxubmV0L3NtYy9zbWNfcnguYy0zMzUte1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNDUtXFxubmV0L3NtYy9zbWNfcnguYzozNDY6Lyogc21jX3J4X3JlY3Ztc2cgLSByZWNlaXZlIGRhdGEgZnJvbSBSTUJFXFxubmV0L3NtYy9zbWNfcnguYy0zNDctICogQG1zZzpcXHRjb3B5IGRhdGEgdG8gcmVjZWl2ZSBidWZmZXJcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMzUyLSAqL1xcbm5ldC9zbWMvc21jX3J4LmM6MzUzOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9zbWMvc21jX3J4LmMtMzU0LVxcdFxcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncylcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMzk1LVxcbm5ldC9zbWMvc21jX3J4LmM6Mzk2OlxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy0zOTctXFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy00MDAtXFx0XFx0XFx0Lyogc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBjb3VsZCBoYXZlIHJ1biBhZnRlclxcbm5ldC9zbWMvc21jX3J4LmM6NDAxOlxcdFxcdFxcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcXG5uZXQvc21jL3NtY19yeC5jLTQwMi1cXHRcXHRcXHQgKi9cXG5uZXQvc21jL3NtY19yeC5jOjQwMzpcXHRcXHRcXHRpZiAoc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc21jLCBwZWVrZWRfYnl0ZXMpKVxcbm5ldC9zbWMvc21jX3J4LmMtNDA0LVxcdFxcdFxcdFxcdGdvdG8gY29weTtcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtNTMzLVxcbm5ldC9zbWMvc21jX3J4LmM6NTM0OlxcdFxcdHRyYWNlX3NtY19yeF9yZWN2bXNnKHNtYywgY29weWxlbik7XFxubmV0L3NtYy9zbWNfcnguYy01MzUtXFx0fSB3aGlsZSAocmVhZF9yZW1haW5pbmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1Mjo1Mi42MjQzNTgxMDJaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzODI5MjczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBzbWNfcnhfcmVjdm1zZ2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBsaW5lcyA0NjAgdGhyb3VnaCA1MjAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVjZWl2ZSBwYXRoIGlzIGhhbmRsaW5nIHRoZSBzb2NrZXQgbWVzc2FnZSwgZXNwZWNpYWxseSB0aGUgZGV0YWlscyBvZiBkYXRhIHJlY2VwdGlvbiB3aXRoaW4gdGhpcyBzcGVjaWZpYyBzZWN0aW9uIG9mIGNvZGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGxvb2tpbmcgZm9yIHRoZSBpbnRyaWNhY2llcyBvZiBlcnJvciBoYW5kbGluZywgYnVmZmVyIG1hbmFnZW1lbnQsIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aXRoaW4gdGhpcyBjcml0aWNhbCBzZWN0aW9uLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHNvY2tldCBzdGF0ZSBjaGFuZ2VzLiBJcyB0aGVyZSBhbnl0aGluZyB1bnVzdWFsIG9yIGluZWZmaWNpZW50IGhhcHBlbmluZz8gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NTUuOTYyNjUzNDI5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvc21jX3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdFxcdGlmIChzcGxieXRlcylcXG4gNDYxOlxcdFxcdFxcdFxcdHNtY19jdXJzX2FkZChjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuLCBcXHUwMDI2Y29ucywgc3BsYnl0ZXMpO1xcbiA0NjI6XFx0XFx0XFx0aWYgKGNvbm4tXFx1MDAzZXVyZ19zdGF0ZSA9PSBTTUNfVVJHX1ZBTElEIFxcdTAwMjZcXHUwMDI2XFxuIDQ2MzpcXHRcXHRcXHQgICAgc29ja19mbGFnKFxcdTAwMjZzbWMtXFx1MDAzZXNrLCBTT0NLX1VSR0lOTElORSkgXFx1MDAyNlxcdTAwMjZcXG4gNDY0OlxcdFxcdFxcdCAgICByZWFkYWJsZSBcXHUwMDNlIDEpXFxuIDQ2NTpcXHRcXHRcXHRcXHRyZWFkYWJsZS0tO1xcdC8qIGFsd2F5cyBzdG9wIGF0IHVyZ2VudCBCeXRlICovXFxuIDQ2NjpcXHRcXHRcXHQvKiBub3QgbW9yZSB0aGFuIHdoYXQgdXNlciBzcGFjZSBhc2tlZCBmb3IgKi9cXG4gNDY3OlxcdFxcdFxcdGNvcHlsZW4gPSBtaW5fdChzaXplX3QsIHJlYWRfcmVtYWluaW5nLCByZWFkYWJsZSk7XFxuIDQ2ODpcXHRcXHRcXHQvKiBkZXRlcm1pbmUgY2h1bmtzIHdoZXJlIHRvIHJlYWQgZnJvbSByY3ZidWYgKi9cXG4gNDY5OlxcdFxcdFxcdC8qIGVpdGhlciB1bndyYXBwZWQgY2FzZSwgb3IgMXN0IGNodW5rIG9mIHdyYXBwZWQgY2FzZSAqL1xcbiA0NzA6XFx0XFx0XFx0Y2h1bmtfbGVuID0gbWluX3Qoc2l6ZV90LCBjb3B5bGVuLCBjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuIC1cXG4gNDcxOlxcdFxcdFxcdFxcdFxcdCAgY29ucy5jb3VudCk7XFxuIDQ3MjpcXHRcXHRcXHRjaHVua19sZW5fc3VtID0gY2h1bmtfbGVuO1xcbiA0NzM6XFx0XFx0XFx0Y2h1bmtfb2ZmID0gY29ucy5jb3VudDtcXG4gNDc0OlxcdFxcdFxcdHNtY19ybWJfc3luY19zZ19mb3JfY3B1KGNvbm4pO1xcbiA0NzU6XFx0XFx0XFx0Zm9yIChjaHVuayA9IDA7IGNodW5rIFxcdTAwM2MgMjsgY2h1bmsrKykge1xcbiA0NzY6XFx0XFx0XFx0XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBNU0dfVFJVTkMpKSB7XFxuIDQ3NzpcXHRcXHRcXHRcXHRcXHRpZiAobXNnKSB7XFxuIDQ3ODpcXHRcXHRcXHRcXHRcXHRcXHRyYyA9IG1lbWNweV90b19tc2cobXNnLCByY3ZidWZfYmFzZSArXFxuIDQ3OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBjaHVua19vZmYsXFxuIDQ4MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBjaHVua19sZW4pO1xcbiA0ODE6XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4gNDgyOlxcdFxcdFxcdFxcdFxcdFxcdHJjID0gc21jX3J4X3NwbGljZShwaXBlLCByY3ZidWZfYmFzZSArXFxuIDQ4MzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjaHVua19vZmYsIGNodW5rX2xlbixcXG4gNDg0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHNtYyk7XFxuIDQ4NTpcXHRcXHRcXHRcXHRcXHR9XFxuIDQ4NjpcXHRcXHRcXHRcXHRcXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuIDQ4NzpcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIXJlYWRfZG9uZSlcXG4gNDg4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHJlYWRfZG9uZSA9IC1FRkFVTFQ7XFxuIDQ4OTpcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDkwOlxcdFxcdFxcdFxcdFxcdH1cXG4gNDkxOlxcdFxcdFxcdFxcdFxcdC8qIHNwbGljZV90b19waXBlKCkgdGFrZXMgb25seSB3aGF0IHRoZSBwaXBlXFxuIDQ5MjpcXHRcXHRcXHRcXHRcXHQgKiBoYXMgcm9vbSBmb3IsIHdoaWNoIG1heSBiZSBsZXNzIHRoYW4gd2FzXFxuIDQ5MzpcXHRcXHRcXHRcXHRcXHQgKiBvZmZlcmVkLCBvciBub3RoaW5nLiBBY2NvdW50IHdoYXQgaXQgdG9va1xcbiA0OTQ6XFx0XFx0XFx0XFx0XFx0ICogYW5kIHN0b3A6IGNyZWRpdGluZyB0aGUgd2hvbGUgY2h1bmsgd291bGRcXG4gNDk1OlxcdFxcdFxcdFxcdFxcdCAqIGFkdmFuY2UgdGhlIGNvbnN1bWVyIHBhc3QgZGF0YSB0aGUgcmVhZGVyXFxuIDQ5NjpcXHRcXHRcXHRcXHRcXHQgKiBuZXZlciByZWNlaXZlZC5cXG4gNDk3OlxcdFxcdFxcdFxcdFxcdCAqL1xcbiA0OTg6XFx0XFx0XFx0XFx0XFx0aWYgKCFtc2cgXFx1MDAyNlxcdTAwMjYgcmMgXFx1MDAzYyBjaHVua19sZW4pIHtcXG4gNDk5OlxcdFxcdFxcdFxcdFxcdFxcdGlmICghcmMpIHtcXG4gNTAwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICghcmVhZF9kb25lKVxcbiA1MDE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cmVhZF9kb25lID0gLUVBR0FJTjtcXG4gNTAyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1MDM6XFx0XFx0XFx0XFx0XFx0XFx0fVxcbiA1MDQ6XFx0XFx0XFx0XFx0XFx0XFx0Y29weWxlbiA9IGNodW5rX2xlbl9zdW0gLSBjaHVua19sZW4gKyByYztcXG4gNTA1OlxcdFxcdFxcdFxcdFxcdFxcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xcbiA1MDY6XFx0XFx0XFx0XFx0XFx0XFx0cmVhZF9kb25lICs9IHJjO1xcbiA1MDc6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUwODpcXHRcXHRcXHRcXHRcXHR9XFxuIDUwOTpcXHRcXHRcXHRcXHR9XFxuIDUxMDpcXHRcXHRcXHRcXHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XFxuIDUxMTpcXHRcXHRcXHRcXHRyZWFkX2RvbmUgKz0gY2h1bmtfbGVuO1xcbiA1MTI6XFx0XFx0XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgTVNHX1BFRUspXFxuIDUxMzpcXHRcXHRcXHRcXHRcXHRwZWVrZWRfYnl0ZXMgKz0gY2h1bmtfbGVuO1xcbiA1MTQ6XFx0XFxuIDUxNTpcXHRcXHRcXHRcXHRpZiAoY2h1bmtfbGVuX3N1bSA9PSBjb3B5bGVuKVxcbiA1MTY6XFx0XFx0XFx0XFx0XFx0YnJlYWs7IC8qIGVpdGhlciBvbiAxc3Qgb3IgMm5kIGl0ZXJhdGlvbiAqL1xcbiA1MTc6XFx0XFx0XFx0XFx0LyogcHJlcGFyZSBuZXh0ICg9PSAybmQpIGl0ZXJhdGlvbiAqL1xcbiA1MTg6XFx0XFx0XFx0XFx0Y2h1bmtfbGVuID0gY29weWxlbiAtIGNodW5rX2xlbjsgLyogcmVtYWluZGVyICovXFxuIDUxOTpcXHRcXHRcXHRcXHRjaHVua19sZW5fc3VtICs9IGNodW5rX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NTUuOTYyNzQ2NDA5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MjkxNTg1ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIFJlY2VpdmUgU3BsaWNlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHNtY19yeF9zcGxpY2VgIGFuZCBpdCdzIGRlYWxpbmcgd2l0aCBhIGNsYXNzaWMgZGF0YSBsb3NzIGlzc3VlLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBpcyB0aGF0IGBzcGxpY2VfdG9fcGlwZWAgbWlnaHQgbm90IHRyYW5zZmVyIHRoZSBmdWxsIGFtb3VudCB3ZSByZXF1ZXN0IChgY2h1bmtfbGVuYCkuIEluIHRoZSBvcmlnaW5hbCBjb2RlLCBpZiBgc3BsaWNlX3RvX3BpcGVgIHJldHVybmVkIGEgc2hvcnQgY291bnQsIHRoZSBsb2dpYyAqc3RpbGwqIGFkdmFuY2VkIHRoZSByZWFkIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhhdCdzIGEgaHVnZSByZWQgZmxhZyDigJMgdGhlIGNvbnN1bWVyIHRoaW5rcyBpdCBoYXMgcmVhZCBtb3JlIGRhdGEgdGhhbiBpdCBhY3R1YWxseSBoYXMsIG1lYW5pbmcgd2UncmUgZWZmZWN0aXZlbHkgc2tpcHBpbmcgZGF0YSBpbiB0aGUgcmluZyBidWZmZXIuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiSXMgdGhpcyBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT9cIiBCdXQgb24gY2xvc2VyIGV4YW1pbmF0aW9uLCBuby4gVGhpcyBpc24ndCBhYm91dCB1bmluaXRpYWxpemVkIGJ1ZmZlciBhbGxvY2F0aW9ucyBvciBhbnkgbWVtb3J5IGV4cG9zdXJlIGlzc3Vlcy4gVGhlIHJlY2VpdmUgYnVmZmVyIChgcmN2YnVmX2Jhc2VgKSBpcyBmaWxsZWQgd2l0aCBuZXR3b3JrIGRhdGEsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCAqdmFsaWQqIGRhdGEsIGFsYmVpdCBkYXRhIHRoYXQncyBiZWluZyBpbmNvcnJlY3RseSBza2lwcGVkLiBJZiB0aGUgY3Vyc29yIGlzIGFkdmFuY2VkIHBhc3QgZGF0YSB0aGF0IHRoZSBuZXR3b3JrIGhhc24ndCBwcm92aWRlZCwgdGhlbiB3ZSBjb3VsZCBiZSByZWFkaW5nIGZyb20gaW52YWxpZCBtZW1vcnkuIEhvd2V2ZXIsIHRoZSBsb2dpYyBhZHZhbmNlcyB0aGUgY3Vyc29yIGJ5IGBjb3B5bGVuYCwgd2hpY2ggaXMgYWRqdXN0ZWQgdG8gdGhlIGFjdHVhbCBgcmNgIGJ5dGVzIHRoYXQgYXJlIHNwbGljZWQuXG5cblRoZSBwYXRjaCBjb3JyZWN0cyB0aGlzIGJ5IGFkanVzdGluZyB0aGUgY3Vyc29yIGFkdmFuY2VtZW50LCBgY29weWxlbmAsIGJ5IHRoZSBhY3R1YWwgYW1vdW50IG9mIGRhdGEgc3VjY2Vzc2Z1bGx5IHNwbGljZWQuIFNvIGlmIHdlIHNwbGljZSBsZXNzIHRoYW4gdGhlIGV4cGVjdGVkIGBjaHVua19sZW5gLCB0aGUgYGNvcHlsZW5gIHdpbGwgYmUgYWRqdXN0ZWQgYWNjb3JkaW5nbHksIHN0b3BwaW5nIGFkdmFuY2luZyB0aGUgY29uc3VtZXIgY3Vyc29yIHBhc3QgdGhlIGRhdGEgaXQgaGFzIG5vdCBjb25zdW1lZC4gVGhpcyBpcyBzaW1wbHkgYSBsb2dpYyBlcnJvciB0aGF0IGxlYWRzIHRvIGRyb3BwaW5nIGRhdGEgd2l0aGluIHRoZSB2YWxpZCByYW5nZSBvZiB0aGUgZGF0YSBpbiB0aGUgcmluZyBidWZmZXIuIFRoZSBkYXRhIGlzIGxvc3QuIEl0IGRvZXNuJ3QgcmVhZCBhbnl0aGluZyB1bmluaXRpYWxpemVkLCBpdCBzaW1wbHkgc2tpcHMgb3ZlciB0aGUgZGF0YS5cblxuSSBoYWQgdG8gd2FsayB0aHJvdWdoIHRoZSByaW5nIGJ1ZmZlciBkeW5hbWljcyB0byBiZSBzdXJlLiBUaGUgY29uc3VtZXIgYWR2YW5jZXMgdGhlIGN1cnNvciBhbmQgdGhlIHByb2R1Y2VyIHdpbGwgZXZlbnR1YWxseSBvdmVyd3JpdGUgaXQuIElmIHdlIGRvbid0IGFkdmFuY2UgdGhlIGN1cnNvciBhcHByb3ByaWF0ZWx5LCB0aGUgY29uc3VtZXIgbG9zZXMgZGF0YSwgYnV0IGltcG9ydGFudGx5LCBpdCdzIGRhdGEgdGhhdCB3YXMgKndyaXR0ZW4qIGJ5IHRoZSBuZXR3b3JrLCBub3QgdW5pbml0aWFsaXplZCBnYXJiYWdlLiBSZWFkaW5nIGZyb20gdGhlIHJpbmcgYnVmZmVyIGlzIGFsd2F5cyB3aXRoaW4gdGhlIGJvdW5kcyBvZiBgcmVhZGFibGVgLCB3aGljaCByZXByZXNlbnRzIGRhdGEgdGhlIHByb2R1Y2VyIGhhcyB3cml0dGVuLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgYSBsb2dpYyBidWcsIGJ1dCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgYnVnLiBLTVNBTiBpc24ndCBuZWVkZWQuIFRoZSBwYXRjaCBpcyBjcnVjaWFsIHRvIHByZXZlbnRpbmcgZGF0YSBsb3NzIGFuZCBtYWludGFpbmluZyBjb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IHdlIGNhbiBzdGljayB0byBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBmdXp6aW5nLiBLQVNBTiB3b3VsZCBiZSBzdWZmaWNpZW50IHRvIGNvdmVyIHRoZSBlZGdlIGNhc2VzIG9mIHBvdGVudGlhbGx5IG91dC1vZi1ib3VuZHMgcG9pbnRlciBhcml0aG1ldGljIG9yIGJ1ZmZlciBhY2Nlc3MgaWYgdGhlIGN1cnNvciBsb2dpYyB3YXMgY29tcGxldGVseSBmbGF3ZWQuIEl0J3MgYSBidWcsIGEgZGF0YSBsb3NzIGJ1ZywgYnV0IG5vdCBhIG1lbW9yeSBzYWZldHkgYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjY1LCJPdXRwdXRUb2tlbnMiOjIyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUzOjEwLjI1NDMzNTczWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZXJlIGEgcGFydGlhbCBzcGxpY2Ugb3BlcmF0aW9uICh3aGVuIGBzbWNfcnhfc3BsaWNlYCByZXR1cm5zIGZld2VyIGJ5dGVzIHRoYW4gYGNodW5rX2xlbmApIHdvdWxkIGluY29ycmVjdGx5IGFkdmFuY2UgdGhlIGNvbnN1bWVyIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhpcyBjYXVzZWQgdGhlIHJlYWRlciB0byBza2lwIG92ZXIgdW5yZWFkIGRhdGEsIGVmZmVjdGl2ZWx5IGRyb3BwaW5nIGl0LiBUaGUgZml4IHByb3Blcmx5IGFjY291bnRzIGZvciB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyBzcGxpY2VkIGFuZCBzdG9wcyBhZHZhbmNpbmcgdGhlIGN1cnNvciBwYXN0IHRoZSBjb25zdW1lZCBkYXRhLlxcblxcblRoaXMgYnVnIGxlYWRzIHRvIGRhdGEgbG9zcyBhbmQgaW5jb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgcmVhZGluZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGRhdGEgYmVpbmcgc2tpcHBlZCBpcyB2YWxpZCBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmssIGFuZCBhZHZhbmNpbmcgdGhlIGN1cnNvciBtZXJlbHkgbW92ZXMgdGhlIHJlYWQgcG9pbnRlciBmb3J3YXJkIHdpdGhpbiB0aGUgdmFsaWQgZGF0YSByYW5nZS4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGFsbG9jYXRpb25zIGludm9sdmVkLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGFuZCBpbmZvLWxlYWtzLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcgKGluY2x1ZGluZyBLQVNBTikgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSBhIHBhcnRpYWwgc3BsaWNlIG9wZXJhdGlvbiAod2hlbiBgc21jX3J4X3NwbGljZWAgcmV0dXJucyBmZXdlciBieXRlcyB0aGFuIGBjaHVua19sZW5gKSB3b3VsZCBpbmNvcnJlY3RseSBhZHZhbmNlIHRoZSBjb25zdW1lciBjdXJzb3IgYnkgdGhlIGZ1bGwgYGNodW5rX2xlbmAuIFRoaXMgY2F1c2VkIHRoZSByZWFkZXIgdG8gc2tpcCBvdmVyIHVucmVhZCBkYXRhLCBlZmZlY3RpdmVseSBkcm9wcGluZyBpdC4gVGhlIGZpeCBwcm9wZXJseSBhY2NvdW50cyBmb3IgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgc3BsaWNlZCBhbmQgc3RvcHMgYWR2YW5jaW5nIHRoZSBjdXJzb3IgcGFzdCB0aGUgY29uc3VtZWQgZGF0YS5cXG5cXG5UaGlzIGJ1ZyBsZWFkcyB0byBkYXRhIGxvc3MgYW5kIGluY29ycmVjdCBzdHJlYW0gc3RhdGUsIGJ1dCBpdCBkb2VzIG5vdCBpbnZvbHZlIHJlYWRpbmcgb3IgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBkYXRhIGJlaW5nIHNraXBwZWQgaXMgdmFsaWQgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrLCBhbmQgYWR2YW5jaW5nIHRoZSBjdXJzb3IgbWVyZWx5IG1vdmVzIHRoZSByZWFkIHBvaW50ZXIgZm9yd2FyZCB3aXRoaW4gdGhlIHZhbGlkIGRhdGEgcmFuZ2UuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciBhbGxvY2F0aW9ucyBpbnZvbHZlZC4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBhbmQgaW5mby1sZWFrcywgbmVpdGhlciBvZiB3aGljaCBhcmUgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBmdXp6aW5nIChpbmNsdWRpbmcgS0FTQU4pIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowxvbrc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 09:12:48 +0000 UTC FinishedAt: 2026-08-20 09:53:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a4ff2be345d0abc943da8dd8da98151843b750dc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INET", "INFINIBAND", "DIBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a4ff2be345d0abc943da8dd8da98151843b750dc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INET", "INFINIBAND", "DIBS" ], "series_id": "2d481e9f-82cc-48da-9932-1100a1a95689" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_rx_recvmsg", "smc_recvmsg", "smc_splice_read" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19zcGxpY2VfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXG5cblRoaXMgYnVnIGxlYWRzIHRvIGRhdGEgbG9zcyBhbmQgaW5jb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgcmVhZGluZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGRhdGEgYmVpbmcgc2tpcHBlZCBpcyB2YWxpZCBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmssIGFuZCBhZHZhbmNpbmcgdGhlIGN1cnNvciBtZXJlbHkgbW92ZXMgdGhlIHJlYWQgcG9pbnRlciBmb3J3YXJkIHdpdGhpbiB0aGUgdmFsaWQgZGF0YSByYW5nZS4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGFsbG9jYXRpb25zIGludm9sdmVkLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGFuZCBpbmZvLWxlYWtzLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcgKGluY2x1ZGluZyBLQVNBTikgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlbiBjYWxsZWQgZnJvbSBgc21jX3NwbGljZV9yZWFkYCAod2hlcmUgYG1zZ2AgaXMgTlVMTCkgYW5kIGBzcGxpY2VfdG9fcGlwZWAgdGFrZXMgbGVzcyBkYXRhIHRoYW4gb2ZmZXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBwcm90b2NvbCBsb2dpYywgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgc3BsaWNlKClgIG9uIGFuIFNNQyBzb2NrZXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6NTE6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcnguYyBiL25ldC9zbWMvc21jX3J4LmNcbmluZGV4IDVjOWU0ZDhiNTdkZTQuLmQ5NTFkYmU4ZWVjM2MgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19yeC5jXG5AQCAtNDg4LDYgJiM0Mzs0ODgsMjQgQEAgaW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXG4gXHRcdFx0XHRcdFx0cmVhZF9kb25lID0gLUVGQVVMVDtcbiBcdFx0XHRcdFx0Z290byBvdXQ7XG4gXHRcdFx0XHR9XG4mIzQzO1x0XHRcdFx0Lyogc3BsaWNlX3RvX3BpcGUoKSB0YWtlcyBvbmx5IHdoYXQgdGhlIHBpcGVcbiYjNDM7XHRcdFx0XHQgKiBoYXMgcm9vbSBmb3IsIHdoaWNoIG1heSBiZSBsZXNzIHRoYW4gd2FzXG4mIzQzO1x0XHRcdFx0ICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2tcbiYjNDM7XHRcdFx0XHQgKiBhbmQgc3RvcDogY3JlZGl0aW5nIHRoZSB3aG9sZSBjaHVuayB3b3VsZFxuJiM0MztcdFx0XHRcdCAqIGFkdmFuY2UgdGhlIGNvbnN1bWVyIHBhc3QgZGF0YSB0aGUgcmVhZGVyXG4mIzQzO1x0XHRcdFx0ICogbmV2ZXIgcmVjZWl2ZWQuXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0aWYgKCFtc2cgXHUwMDI2XHUwMDI2IHJjIFx1MDAzYyBjaHVua19sZW4pIHtcbiYjNDM7XHRcdFx0XHRcdGlmICghcmMpIHtcbiYjNDM7XHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4mIzQzO1x0XHRcdFx0XHRcdFx0cmVhZF9kb25lID0gLUVBR0FJTjtcbiYjNDM7XHRcdFx0XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdFx0XHR9XG4mIzQzO1x0XHRcdFx0XHRjb3B5bGVuID0gY2h1bmtfbGVuX3N1bSAtIGNodW5rX2xlbiAmIzQzOyByYztcbiYjNDM7XHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuJiM0MztcdFx0XHRcdFx0cmVhZF9kb25lICYjNDM7PSByYztcbiYjNDM7XHRcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdFx0cmVhZF9yZW1haW5pbmcgLT0gY2h1bmtfbGVuO1xuIFx0XHRcdHJlYWRfZG9uZSAmIzQzOz0gY2h1bmtfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfcmVjdm1zZyYjMzQ7LAogICAgJiMzNDtzbWNfc3BsaWNlX3JlYWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVuIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgICh3aGVyZSBgbXNnYCBpcyBOVUxMKSBhbmQgYHNwbGljZV90b19waXBlYCB0YWtlcyBsZXNzIGRhdGEgdGhhbiBvZmZlcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU01DIHByb3RvY29sIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBzcGxpY2UoKWAgb24gYW4gU01DIHNvY2tldC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc4YjdmOThlNGRiNmViZmEwZThmZDY0OWRiMmE2N2QwZjNmMWQ4NjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwOTo1MTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jCmluZGV4IDVjOWU0ZDhiNTdkZTQuLmQ5NTFkYmU4ZWVjM2MgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfcnguYwpAQCAtNDg4LDYgJiM0Mzs0ODgsMjQgQEAgaW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCQkJCQlyZWFkX2RvbmUgPSAtRUZBVUxUOwogCQkJCQlnb3RvIG91dDsKIAkJCQl9CiYjNDM7CQkJCS8qIHNwbGljZV90b19waXBlKCkgdGFrZXMgb25seSB3aGF0IHRoZSBwaXBlCiYjNDM7CQkJCSAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXMKJiM0MzsJCQkJICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2sKJiM0MzsJCQkJICogYW5kIHN0b3A6IGNyZWRpdGluZyB0aGUgd2hvbGUgY2h1bmsgd291bGQKJiM0MzsJCQkJICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXIKJiM0MzsJCQkJICogbmV2ZXIgcmVjZWl2ZWQuCiYjNDM7CQkJCSAqLwomIzQzOwkJCQlpZiAoIW1zZyAmYW1wOyZhbXA7IHJjICZsdDsgY2h1bmtfbGVuKSB7CiYjNDM7CQkJCQlpZiAoIXJjKSB7CiYjNDM7CQkJCQkJaWYgKCFyZWFkX2RvbmUpCiYjNDM7CQkJCQkJCXJlYWRfZG9uZSA9IC1FQUdBSU47CiYjNDM7CQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCQl9CiYjNDM7CQkJCQljb3B5bGVuID0gY2h1bmtfbGVuX3N1bSAtIGNodW5rX2xlbiAmIzQzOyByYzsKJiM0MzsJCQkJCXJlYWRfcmVtYWluaW5nIC09IHJjOwomIzQzOwkJCQkJcmVhZF9kb25lICYjNDM7PSByYzsKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCQl9CiAJCQl9CiAJCQlyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47CiAJCQlyZWFkX2RvbmUgJiM0Mzs9IGNodW5rX2xlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zbWMvc21jX3J4LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIGEgbmV3IGNoZWNrIGFmdGVyIHdoYXQgbG9va3MgbGlrZSBhIGRhdGEgY29weSBvcGVyYXRpb24g4oCTIHByb2JhYmx5IGBzcGxpY2VfdG9fcGlwZWAgb3Igc29tZXRoaW5nIGVxdWl2YWxlbnQsIGp1ZGdpbmcgZnJvbSB0aGUgY29tbWVudCBpbiB0aGUgY29kZS4gSXQmIzM5O3MgYWRkaW5nIGAhbXNnICZhbXA7JmFtcDsgcmMgJmx0OyBjaHVua19sZW5gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGlzIHRyeWluZyB0byBwcm90ZWN0IGFnYWluc3Q/IEFuZCB3aGF0JiMzOTtzIGBtc2dgIHJlZmVycmluZyB0bz8KClRoaXMgc3VnZ2VzdHMgdGhlcmUgd2FzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIGVkZ2UgY2FzZSB0aGF0IHRoZSBvcmlnaW5hbCBjb2RlIGRpZG4mIzM5O3QgaGFuZGxlLiBUaGUgY29uZGl0aW9uIGAhbXNnICZhbXA7JmFtcDsgcmMgJmx0OyBjaHVua19sZW5gIHNlZW1zIHRvIGluZGljYXRlIHRoZSBjb3B5IG9wZXJhdGlvbiBmYWlsZWQsIG9yIGF0IGxlYXN0IGRpZG4mIzM5O3QgY29weSB0aGUgZXhwZWN0ZWQgYW1vdW50LCBhbmQgc29tZWhvdyBhIGBtc2dgIChwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gdGhlIG1lc3NhZ2UgYmVpbmcgcmVjZWl2ZWQpIGlzIG1pc3NpbmcuIFRoZSBuZWdhdGl2ZSBhc3NlcnRpb24gb2YgYCFtc2dgIGlzIGludGVyZXN0aW5nLCBhbmQgbGlrZWx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC4KCkkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiBgc21jX3J4X3JlY3Ztc2dgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHRoaXMgY2hlY2sgYmVpbmcgdHJpZ2dlcmVkLiBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGBtc2dgIHZhcmlhYmxlIGlzIHVzZWQsIHdoZXJlIGl0JiMzOTtzIHNldCwgYW5kIHdoYXQgY2FuIGdvIHdyb25nIGluIHRoYXQgYXJlYS4gQWxzbywgaG93IGlzIGBjaHVua19sZW5gIGJlaW5nIGRldGVybWluZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgZnVuY3Rpb24sIGFuZCB0aGUgZGF0YSBmbG93LCB0byBmdWxseSBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGFkZGVkIGNoZWNrIGFuZCBtYWtlIGEganVkZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfcnguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19yeC5jPTI5MD1zdGF0aWMgaW50IHNtY19yeF9yZWN2X3VyZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzMzLVxubmV0L3NtYy9zbWNfcnguYzozMzQ6c3RhdGljIGJvb2wgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHNpemVfdCBwZWVrZWQpXG5uZXQvc21jL3NtY19yeC5jLTMzNS17XG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNDUtXG5uZXQvc21jL3NtY19yeC5jOjM0NjovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcbm5ldC9zbWMvc21jX3J4LmMtMzQ3LSAqIEBtc2c6XHRjb3B5IGRhdGEgdG8gcmVjZWl2ZSBidWZmZXJcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM1Mi0gKi9cbm5ldC9zbWMvc21jX3J4LmM6MzUzOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3NtYy9zbWNfcnguYy0zNTQtXHRcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncylcbi0tXG5uZXQvc21jL3NtY19yeC5jLTM5NS1cbm5ldC9zbWMvc21jX3J4LmM6Mzk2Olx0XHRpZiAoc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc21jLCBwZWVrZWRfYnl0ZXMpKVxubmV0L3NtYy9zbWNfcnguYy0zOTctXHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtNDAwLVx0XHRcdC8qIHNtY19jZGNfbXNnX3JlY3ZfYWN0aW9uKCkgY291bGQgaGF2ZSBydW4gYWZ0ZXJcbm5ldC9zbWMvc21jX3J4LmM6NDAxOlx0XHRcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcbm5ldC9zbWMvc21jX3J4LmMtNDAyLVx0XHRcdCAqL1xubmV0L3NtYy9zbWNfcnguYzo0MDM6XHRcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtNDA0LVx0XHRcdFx0Z290byBjb3B5O1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtNTMzLVxubmV0L3NtYy9zbWNfcnguYzo1MzQ6XHRcdHRyYWNlX3NtY19yeF9yZWN2bXNnKHNtYywgY29weWxlbik7XG5uZXQvc21jL3NtY19yeC5jLTUzNS1cdH0gd2hpbGUgKHJlYWRfcmVtYWluaW5nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjA5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgY2hhbmdlcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgYHNtY19yeF9yZWN2bXNnYCBNb2RpZmljYXRpb24qKgoKT2theSwgc28gdGhleSYjMzk7dmUgdHdlYWtlZCBgc21jX3J4X3JlY3Ztc2dgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiBhbmQgKmhvdyouIFRoaXMgZnVuY3Rpb24gaXMgY29yZSB0byB0aGUgUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAoUkRTKSBvdmVyIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMgKFNNQykgcHJvdG9jb2wgc3RhY2suIEFueSBjaGFuZ2VzIGhlcmUgYXJlIGxpa2VseSBzaWduaWZpY2FudCwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLCBzdGFiaWxpdHksIG9yIGV2ZW4gc2VjdXJpdHkuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIHRvIG1pbmQgaXMgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBDT05GSUdgIG9wdGlvbnMgYXJlIHJlbGV2YW50IGFuZCBpZiBhbnkgbmV3IG9uZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFyZSB0aGV5IGVuYWJsaW5nIGEgbmV3IFNNQyBmZWF0dXJlLCBvcHRpbWl6aW5nIGFuIGV4aXN0aW5nIG9uZSwgb3IgZml4aW5nIGEgYnVnPyBBcmUgd2UgdGFsa2luZyBhYm91dCBgQ09ORklHX1NNQ2AsIGBDT05GSUdfU01DX1RSQU5TUE9SVGAsIG9yIHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXIgcmVsYXRlZCB0byBSRE1BIGludGVncmF0aW9uPyBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzIHRvIGRldGVybWluZSB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzLiBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBzZWUgd2hhdCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGFuZCB3aHkuIFRoaXMgY291bGQgYmUgYWJvdXQgc3VwcG9ydGluZyBuZXcgaGFyZHdhcmUsIGFkZHJlc3NpbmcgYSBjb3JuZXIgY2FzZSBpbiBmbG93IGNvbnRyb2wsIG9yIGV2ZW4gaGFyZGVuaW5nIGFnYWluc3QgYSBwb3RlbnRpYWwgZXhwbG9pdC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMTMtXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0yMi1cbm5ldC9zbWMvS2NvbmZpZzoyMzpjb25maWcgU01DX0hTX0NUUkxfQlBGXG5uZXQvc21jL0tjb25maWctMjQtXHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHNlZW1zIHRvIGJlIGBTTUNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSAqYW55KiBvdGhlciBjb25maWd1cmF0aW9ucyBpbiBwbGF5OyB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBpcyBjcnVjaWFsLgoKTm93LCB0aGF0IGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24gaGFzIHBpcXVlZCBteSBpbnRlcmVzdC4gVGhlIG5hbWUgc3VnZ2VzdHMgaXQmIzM5O3MgYW4gQVBJIGVudHJ5cG9pbnQsIG9yIGF0IGxlYXN0IGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSBvbmUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHN0YWNrOyBJJiMzOTtsbCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgaW52b2tlZC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgcGFydCBvZiB0aGUgYW5hbHlzaXMgb2Z0ZW4gc3RhcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9hZl9zbWMuYz0yODM1PWludCBzbWNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yODYyLVx0XHRtc2ctXHUwMDNlbXNnX25hbWVsZW4gPSAwO1xubmV0L3NtYy9hZl9zbWMuYzoyODYzOlx0XHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgbXNnLCBOVUxMLCBsZW4sIGZsYWdzKTtcbm5ldC9zbWMvYWZfc21jLmMtMjg2NC1cdFx0U01DX1NUQVRfUlhfUEFZTE9BRChzbWMsIHJjLCByYyk7XG4tLVxubmV0L3NtYy9hZl9zbWMuYz0zMjg0PXNzaXplX3Qgc21jX3NwbGljZV9yZWFkKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvZmZfdCAqcHBvcyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMzMjEtXHRcdFNNQ19TVEFUX0lOQyhzbWMsIHNwbGljZV9jbnQpO1xubmV0L3NtYy9hZl9zbWMuYzozMzIyOlx0XHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgTlVMTCwgcGlwZSwgbGVuLCBmbGFncyk7XG5uZXQvc21jL2FmX3NtYy5jLTMzMjMtXHR9XG4tLVxubmV0L3NtYy9zbWNfcnguYz0yOTA9c3RhdGljIGludCBzbWNfcnhfcmVjdl91cmcoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cbm5ldC9zbWMvc21jX3J4LmM6MzM0OnN0YXRpYyBib29sIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzaXplX3QgcGVla2VkKVxubmV0L3NtYy9zbWNfcnguYy0zMzUte1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzQ1LVxubmV0L3NtYy9zbWNfcnguYzozNDY6Lyogc21jX3J4X3JlY3Ztc2cgLSByZWNlaXZlIGRhdGEgZnJvbSBSTUJFXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlx0Y29weSBkYXRhIHRvIHJlY2VpdmUgYnVmZmVyXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXG5uZXQvc21jL3NtY19yeC5jOjM1MzppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9zbWMvc21jX3J4LmMtMzU0LVx0XHQgICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTUtXG5uZXQvc21jL3NtY19yeC5jOjM5NjpcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtMzk3LVx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jOjQwMTpcdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG5uZXQvc21jL3NtY19yeC5jLTQwMi1cdFx0XHQgKi9cbm5ldC9zbWMvc21jX3J4LmM6NDAzOlx0XHRcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXG5uZXQvc21jL3NtY19yeC5jLTQwNC1cdFx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTUzMy1cbm5ldC9zbWMvc21jX3J4LmM6NTM0Olx0XHR0cmFjZV9zbWNfcnhfcmVjdm1zZyhzbWMsIGNvcHlsZW4pO1xubmV0L3NtYy9zbWNfcnguYy01MzUtXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XG4tLVxubmV0L3NtYy9zbWNfcnguaD0yMD12b2lkIHNtY19yeF9pbml0KHN0cnVjdCBzbWNfc29jayAqc21jKTtcbm5ldC9zbWMvc21jX3J4LmgtMjEtXG5uZXQvc21jL3NtY19yeC5oOjIyOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3NtYy9zbWNfcnguaC0yMy1cdFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKTtcbi0tXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM9Nz1FWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3R4X3NlbmRtc2cpO1xubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jOjg6RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY19yeF9yZWN2bXNnKTtcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYy05LUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNyX2xpbmtfZG93bik7XG4tLVxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oPTcxPURFRklORV9FVkVOVChzbWNfbXNnX2V2ZW50LCBzbWNfdHhfc2VuZG1zZyxcbi0tXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzctXG5uZXQvc21jL3NtY190cmFjZXBvaW50Lmg6Nzg6REVGSU5FX0VWRU5UKHNtY19tc2dfZXZlbnQsIHNtY19yeF9yZWN2bXNnLFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oLTc5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBSZWNlbnQgU01DIFNvY2tldCBQcm90b2NvbCBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gaW50ZXJlc3RpbmcgYnVnIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29tbXVuaWNhdGlvbnMgKFNNQykgcHJvdG9jb2wuIFNwZWNpZmljYWxseSwgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoaW4gYHNtY19yeF9yZWN2bXNnYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGJvdGggYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSwgb2YgY291cnNlLCB0aGUgc3RhbmRhcmQgYC5yZWN2bXNnYCBhbmQgYC5zcGxpY2VfcmVhZGAgb3BlcmF0aW9ucyBmb3IgdGhlIFNNQyBzb2NrZXQgZmFtaWx5LiBUaGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIGEgc2NlbmFyaW8gaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSB0aGUgbWVzc2FnZSBwb2ludGVyIChgbXNnYCkgaXMgTlVMTC4gVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBgc21jX3J4X3JlY3Ztc2dgIGlzIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgLCB3aGljaCBwYXNzZXMgYSBgcGlwZWAgaW5zdGVhZC4KClRoZSBlc3NlbmNlIG9mIHRoZSBmaXggaXMgaGFuZGxpbmcgYSBzaXR1YXRpb24gd2hlcmUgYHNwbGljZV90b19waXBlYCBkb2VzbiYjMzk7dCB0cmFuc2ZlciB0aGUgZW50aXJlIGFtb3VudCByZXF1ZXN0ZWQuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gdGhlIFNNQyBwcm90b2NvbCYjMzk7cyBiZWhhdmlvciwgYW5kIHRoYXQgY2FuIGhhdmUgc29tZSByZWFsIGltcGFjdC4gQmVjYXVzZSB1c2Vyc3BhY2UgY2FuIHRyaWdnZXIgdGhpcyBwYXRoIHVzaW5nIGBzcGxpY2UoKWAgb24gYW4gU01DIHNvY2tldCwgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyB0aG9yb3VnaCBmdXp6aW5nLgoKTXkgZm9jdXMgaGFzIGJlZW4gb24gYHNtY19yeF9yZWN2bXNnYCwgYHNtY19yZWN2bXNnYCwgYW5kIGBzbWNfc3BsaWNlX3JlYWRgLiBBbHNvLCB0aGUgYFNNQ2AgY29uZmlndXJhdGlvbiBpcyB3aGF0JiMzOTtzIHJlbGV2YW50IGhlcmUsIHRoYXQmIzM5O3MgY2xlYXIuIEJ1dCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgdnVsbmVyYWJpbGl0eSwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MTQ9Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xubmV0L3NtYy9LY29uZmlnOjE2Olx0ZGVwZW5kcyBvbiBTTUNcbm5ldC9zbWMvS2NvbmZpZy0xNy1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIFNNQyBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX1NZU0NBTExcbm5ldC9zbWMvS2NvbmZpZy0yNi1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2NvbmZpZyBDb25mdXNpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBidWlsZCBwcm9jZXNzIGlzIGdldHRpbmcgdGFuZ2xlZCBhZ2Fpbi4gSXQgbG9va3MgbGlrZSB0aGUgb3V0Y29tZSAqZGVwZW5kcyogb24gYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgd2FpdCwgYERJQlNgPyBUaGF0JiMzOTtzLi4uIHVuZXhwZWN0ZWQuIEkgZmVlbCBsaWtlIEkmIzM5O3ZlIGVuY291bnRlcmVkIHRoaXMgYmVmb3JlLiBMZXQgbWUgcGF1c2UgYW5kIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldC9zbWMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBob3cgYERJQlNgIGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgaXRzIGRlcGVuZGVuY2llcyB0cnVseSBhcmUgaW4gdGhpcyBjb250ZXh0LiBJdCYjMzk7cyBlYXN5IHRvIGxvc2UgdHJhY2sgd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzdWNoIGEgaGlnaGx5IGludGVyZGVwZW5kZW50IHN5c3RlbS4gTmVlZCB0byBiZSBjZXJ0YWluIG9mIHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIHByb2NlZWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNNQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBTTUMtUiBwcm92aWRlcyBhIFwmIzM0O3NvY2tldHMgb3ZlciBSRE1BXCYjMzQ7IHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcbiAgIDc6XHRcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXG4gICA4Olx0XHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXG4gICA5Olx0XHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcbiAgMTA6XHRcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biBTTUMgc29ja2V0IGFwcGxpY2F0aW9uc1xuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBTTUNfRElBR1xuICAxNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gU01DXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFN1cHBvcnQgZm9yIFNNQyBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0b29scyBzdWNoIGFzXG4gIDE5Olx0XHQgIHNtY3NzLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gRElCUyBhbmQgU01DIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBgRElCU2A/IFRoYXQgdGVybSBpc24mIzM5O3QgaW1tZWRpYXRlbHkgZmFtaWxpYXIuIEJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB3aGF0IHRoYXQgcmVmZXJzIHRvLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBtYWtlIGEgcXVpY2sgbWVudGFsIG5vdGUgb2YgdGhlIHJlbGV2YW50IGNvbXBvbmVudHM6IGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIHRoaXMgbmV3IG9uZSwgYERJQlNgLiBXYWl0LCBpcyB0aGlzIGEgdHlwbz8gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBvciB3b3JraW5nIHdpdGggYERJQlNgIGJlZm9yZSwgbm90IGluIHRoaXMgY29udGV4dCBhdCBsZWFzdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgdGV4dCBhZ2FpbiwganVzdCB0byBiZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzcmVhZCBpdC4gQWgsIG5vcGUsIHRoZXJlIGl0IGlzIOKAkyBgRElCU2AgaXMgaW5kZWVkIHByZXNlbnQuCgpSaWdodCwgc28gdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBvdGhlciBlbGVtZW50cywgbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgaXRzIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9zbWMvS2NvbmZpZ2AgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkLiBXYWl0Li4uIEkgc2VlLCBpdCBoYXMgZGVwZW5kZW5jaWVzLiBJdCBsb29rcyBsaWtlIGl0IGRlcGVuZHMgb24gYElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuIFdhaXQuLi4gdGhhdCBtYWtlcyBtZSB0aGluay4uLiBpcyBpdCByZWxhdGVkIHRvIElQdjY/IE5vLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSBkaWRuJiMzOTt0IG1pc3JlYWQgdGhlIGxpbmUgYWdhaW4uIExldCBtZSBncmVwIHRocm91Z2ggYG5ldC9zbWMvS2NvbmZpZ2AganVzdCB0byBtYWtlIHN1cmUuIE9rLCBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiB0aGUgZGVwZW5kZW5jeSBsaW5lOiBgZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBTbyBpdCBpcyB3aGF0IEkgdGhvdWdodCwgaXQmIzM5O3MgbGl0ZXJhbGx5IGBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORCAmYW1wOyZhbXA7IERJQlNgLiBBbHJpZ2h0LCBzbyB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgY29uZmlybSB0aGlzIGluIHRoZSBrZXJuZWwgdHJlZS4gTGV0IG1lIGZpbmQgdGhhdCBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtESUJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzExMAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogQSBGYW1pbGlhciBUZXJtKioKCk9rYXksIHNvIHRoZXJlIGl0IGlzIC0gYERJQlNgLiBJbnRlcmVzdGluZy4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyBJIGRlYWwgd2l0aCBkYXktdG8tZGF5LCBidXQgdGhlIGFjcm9ueW0gaXMgZGVmaW5pdGVseSBmYW1pbGlhci4gTGV0IG1lIGp1c3QgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIHNwZWNpZmljIGNvbnRleHQgaGVyZS4gV2hhdCBkb2VzIGBESUJTYCBzdGFuZCBmb3IgaW4gKnRoaXMqIHNpdHVhdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSByZWxldmFudCBjb25uZWN0aW9ucyBiZWZvcmUgSSBjYW4gZm9ybXVsYXRlIGEgcHJvcGVyIHJlc3BvbnNlIG9yIGFuYWx5c2lzLiBMZXQgbWUganVzdCBjaGVjayBteSBtZW50YWwgZGF0YWJhc2UsIG9yIHBlcmhhcHMgYSBxdWljayBzZWFyY2ggbWlnaHQgYmUgdXNlZnVsLiBSaWdodCwgbGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcbmRyaXZlcnMvZGlicy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxuZHJpdmVycy9kaWJzL0tjb25maWc6MTQ6Y29uZmlnIERJQlNfTE9cbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQxNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipESUJTIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBESUJTYCBoZXJlIOKAkyBEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcuIEdvdCBpdC4gVGhpcyBtZWFucyB3ZSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhhdCBzcGVjaWZpYyBzdXBwb3J0LiBOb3csIGxvb2tpbmcgYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLCBpdCBzZWVtcyB3ZSBhbHNvIG5lZWQgYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQsIG9mIGNvdXJzZSwgYERJQlNgIGl0c2VsZi4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNwZWNpZmljYWxseSBkZXRlcm1pbmUgaWYgYElORklOSUJBTkRgIGhhcyBhbnkgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciByZXF1aXJlbWVudHMgd2UgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCBiZWZvcmUgcHJvY2VlZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbmZpbmlCYW5kIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xNj1pZiBJTkZJTklCQU5EXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjE4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIE1BRCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjctXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQwOmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkVcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQzLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTUwLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTE6Y29uZmlnIElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXHRib29sIFwmIzM0O0luZmluaUJhbmQgb24tZGVtYW5kIHBhZ2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NDpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7UkRNQS9DTVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTcxLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NzI6Y29uZmlnIElORklOSUJBTkRfQUREUl9UUkFOU19DT05GSUdGU1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzMtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctODAtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4MTpjb25maWcgSU5GSU5JQkFORF9WSVJUX0RNQVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctODItXHRkZWZfYm9vbCAhSElHSE1FTVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjEwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uOgoKKipOYXZpZ2F0aW5nIEluZmluaWJhbmQgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGBJTkZJTklCQU5EYCByZWxpZXMgb24gYSBmZXcgb3RoZXIgdGhpbmdzLiBMZXQgbWUgcXVpY2tseSByZWNhcDogYEhBU19JT01FTWAsIGBORVRgLCBgSU5FVGAsIGFuZCBgbWAuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IGl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHN1cmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGFzIGNvbXBsZXggYXMgSW5maW5pYmFuZC4gSXQmIzM5O3MgdGltZSB0byBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZywgYW5kIHRoYXQgYWxsIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGtub3cgZXhhY3RseSBob3cgdGhlIGtlcm5lbCBpcyBnb2luZyB0byBoYW5kbGUgbWVtb3J5IG1hbmFnZW1lbnQsIG5ldHdvcmtpbmcgbGF5ZXJzLCBhbmQgdGhvc2Ugc3BlY2lmaWMgbmV0d29ya2luZyBwcm90b2NvbHMsIHRvIGVuc3VyZSBwcm9wZXIgSW5maW5pYmFuZCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBJTkZJTklCQU5EXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbmZpbmlCYW5kIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA3Olx0XHRkZXBlbmRzIG9uICFBTFBIQVxuICAgODpcdFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG4gICA5Olx0XHRzZWxlY3QgSVJRX1BPTExcbiAgMTA6XHRcdHNlbGVjdCBESU1MSUJcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgQ29yZSBzdXBwb3J0IGZvciBJbmZpbmlCYW5kIChJQikuICBNYWtlIHN1cmUgdG8gYWxzbyBzZWxlY3RcbiAgMTM6XHRcdCAgYW55IHByb3RvY29scyB5b3Ugd2lzaCB0byB1c2UgYXMgd2VsbCBhcyBkcml2ZXJzIGZvciB5b3VyXG4gIDE0Olx0XHQgIEluZmluaUJhbmQgaGFyZHdhcmUuXG4gIDE1Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBmaWVsZDoKCioqRGVwZW5kZW5jaWVzIGFuZCBDb25kaXRpb25hbHMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYElORklOSUJBTkRgIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGEgbnVtYmVyIG9mIGtleSBmZWF0dXJlcyBiZWluZyBlbmFibGVkOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYC4gSXQmIzM5O3MgYWxzbyBleHBsaWNpdGx5IGV4Y2x1ZGVkIG9uIGBBTFBIQWAgYXJjaGl0ZWN0dXJlcywgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGhpc3RvcmljYWwgY29udGV4dCBvZiBJbmZpbmlCYW5kIHN1cHBvcnQuIFRoYXQmIzM5O3MgYWxsIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGEgdHlwaWNhbCBkZXBlbmRlbmN5IGNoYWluLiBOb3csIEkmIzM5O20gc2hpZnRpbmcgbXkgZm9jdXMgYW5kIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBESUJTYCBkZXBlbmRzIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgdHJlZTsga25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHN5c3RlbSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBESUJTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCBuXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XG4gICA3Olx0XHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXG4gICA4Olx0XHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxuICAgOTpcdFxuICAxMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcHJvdmlkZSB0aGUgYWJzdHJhY3Rpb24gbGF5ZXIgYmV0d2VlblxuICAxMTpcdFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXG4gIDEyOlx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBESUJTX0xPXG4gIDE1Olx0XHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgRElCUyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYERJQlNgIGhlcmUsIGFuZCBmaXJzdCB0aGluZyBJIG5vdGUgaXMgdGhhdCBpdCYjMzk7cyBpbmRlcGVuZGVudCwgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcG90ZW50aWFsIHBvcnRhYmlsaXR5IGFuZCBtaW5pbWFsIGludGVncmF0aW9uIGNvbXBsZXhpdHkuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbnMgaXQgaGluZ2VzIG9uLiBMb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCBhcmUgYWxsIHByb3Blcmx5IGNvbmZpZ3VyZWQuCgpNeSBmb2N1cyByaWdodCBub3csIHRob3VnaCwgaXMgb24gdGhvc2Uga2V5IHN5bWJvbHMgcmVsYXRlZCB0byBoYW5kbGluZyBtZXNzYWdlcywgc3BlY2lmaWNhbGx5IGBzbWNfcnhfcmVjdm1zZ2AsIGBzbWNfcmVjdm1zZ2AsIGFuZCBgc21jX3NwbGljZV9yZWFkYC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBzbWNfcnhfcmVjdm1zZ2AuIE9rYXksIGl0JiMzOTtzICpub3QqIHN0YXRpYywgc28gaXQmIzM5O3MgcHJvYmFibHkgY2FsbGFibGUgZnJvbSBlbHNld2hlcmUuIEFuZCB5ZXAsIGl0JiMzOTtzIGV4cG9ydGVkIGluIGBuZXQvc21jL3NtY19yeC5oYCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gTm93IGZvciB0aGUgb3RoZXIgdHdvLCBgc21jX3JlY3Ztc2dgIGFuZCBgc21jX3NwbGljZV9yZWFkYC4uLiBhaCwgdGhleSYjMzk7cmUgZGVmaW5lZCBpbiBgbmV0L3NtYy9hZl9zbWMuY2AuIEdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGxpZXMgYW5kIGhvdyB0aGVzZSBwYXJ0cyBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3JlY3Ztc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9Mjc5Nz1pbnQgc21jX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjgzNC1cbm5ldC9zbWMvYWZfc21jLmM6MjgzNTppbnQgc21jX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxubmV0L3NtYy9hZl9zbWMuYy0yODM2LVx0XHRpbnQgZmxhZ3MpXG4tLVxubmV0L3NtYy9hZl9zbWMuYz0zMzMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMzNDYtXHQuc2VuZG1zZ1x0PSBzbWNfc2VuZG1zZyxcbm5ldC9zbWMvYWZfc21jLmM6MzM0NzpcdC5yZWN2bXNnXHQ9IHNtY19yZWN2bXNnLFxubmV0L3NtYy9hZl9zbWMuYy0zMzQ4LVx0Lm1tYXBcdFx0PSBzb2NrX25vX21tYXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqUXVpY2sgTm90ZSBvbiBgc21jX3NwbGljZV9yZWFkYCBMb2NhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHNtY19zcGxpY2VfcmVhZGAgZnVuY3Rpb24uIEFuZCBhIHF1aWNrIGNoZWNrIGluIG15IG1lbnRhbCBtYXAgb2YgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSB0ZWxscyBtZSBpbW1lZGlhdGVseSB3aGVyZSB0byBmaW5kIGl0LiBZZXAsIGl0JiMzOTtzIGFsc28gbmVzdGxlZCB3aXRoaW4gdGhlIGBuZXQvc21jL2FmX3NtYy5jYCBmaWxlLiBOb3RoaW5nIHVudXN1YWwgdGhlcmUsIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGl0IGdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHRoZSBTTUMgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uIFRoYXQgY29uZmlybXMgbXkgZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgYWxsLCBvciBpZiB0aGVyZSBpcyBhbm90aGVyIGZ1bmN0aW9uIGNhbGxlZCBzb21ld2hlcmUgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX3NwbGljZV9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9hZl9zbWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jPTMxOTc9aW50IHNtY19pb2N0bChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzI4My0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MzI4NDpzc2l6ZV90IHNtY19zcGxpY2VfcmVhZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBsb2ZmX3QgKnBwb3MsXG5uZXQvc21jL2FmX3NtYy5jLTMyODUtXHRcdFx0c3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbixcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTMzMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzM0OC1cdC5tbWFwXHRcdD0gc29ja19ub19tbWFwLFxubmV0L3NtYy9hZl9zbWMuYzozMzQ5Olx0LnNwbGljZV9yZWFkXHQ9IHNtY19zcGxpY2VfcmVhZCxcbm5ldC9zbWMvYWZfc21jLmMtMzM1MC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4MgoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQ6IGBzbWNfcnhfcmVjdm1zZ2AgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBuZXcgcGF0Y2ggdG8gcmV2aWV3LCBhbmQgaXQgbG9va3MgbGlrZSBpdCBhZGRyZXNzZXMgYSBjcml0aWNhbCBpc3N1ZSB3aXRoaW4gdGhlIGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24uIFRoZSBjb3JlIHByb2JsZW0gaXMgdGhhdCBgc3BsaWNlX3RvX3BpcGVgIGlzbiYjMzk7dCBjb25zdW1pbmcgYXMgbXVjaCBkYXRhIGFzIGl0JiMzOTtzIGJlaW5nIG9mZmVyZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBvciBldmVuIG92ZXJmbG93cyBpZiBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCBsb2dpYywgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKVGhlIGdvb2QgbmV3cyBpcyB0aGF0IHRoaXMgdnVsbmVyYWJpbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYHNwbGljZSgpYCBzeXN0ZW0gY2FsbCB3aGVuIGludGVyYWN0aW5nIHdpdGggYW4gU01DIHNvY2tldC4gVGhhdCYjMzk7cyBhIGh1Z2Ugd2luIGluIHRlcm1zIG9mIGZ1enppbmcgcG90ZW50aWFsISBUaGlzIG1ha2VzIGl0IGEgcGVyZmVjdCB0YXJnZXQgZm9yIGNvbXByZWhlbnNpdmUgZnV6emluZyBjYW1wYWlnbnMgYmVjYXVzZSB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHNtY19yeF9yZWN2bXNnYCAob2J2aW91c2x5KSwgYnV0IGFsc28gYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdGhlIGRhdGEgcGF0aC4gSSYjMzk7bGwgbmVlZCB0byBjb25maWd1cmUgbXkgdGVzdCBlbnZpcm9ubWVudCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXJuZWwgb3B0aW9uczogYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgZW5hYmxlZCBhbmQgZXhlcmNpc2VkLgoKQWxyaWdodCwgdGltZSB0byBzZXQgdXAgYW5kIHJ1biBzb21lIHRlc3RzOyBJJiMzOTtsbCBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX3J4X3JlY3Ztc2cmIzM0OywKICAgICYjMzQ7c21jX3JlY3Ztc2cmIzM0OywKICAgICYjMzQ7c21jX3NwbGljZV9yZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlbiBjYWxsZWQgZnJvbSBgc21jX3NwbGljZV9yZWFkYCAod2hlcmUgYG1zZ2AgaXMgTlVMTCkgYW5kIGBzcGxpY2VfdG9fcGlwZWAgdGFrZXMgbGVzcyBkYXRhIHRoYW4gb2ZmZXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBwcm90b2NvbCBsb2dpYywgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgc3BsaWNlKClgIG9uIGFuIFNNQyBzb2NrZXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19yeF9yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19yZWN2bXNnJiMzNDssCiAgICAmIzM0O3NtY19zcGxpY2VfcmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZW4gY2FsbGVkIGZyb20gYHNtY19zcGxpY2VfcmVhZGAgKHdoZXJlIGBtc2dgIGlzIE5VTEwpIGFuZCBgc3BsaWNlX3RvX3BpcGVgIHRha2VzIGxlc3MgZGF0YSB0aGFuIG9mZmVyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgcHJvdG9jb2wgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXG5cblRoaXMgYnVnIGxlYWRzIHRvIGRhdGEgbG9zcyBhbmQgaW5jb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgcmVhZGluZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGRhdGEgYmVpbmcgc2tpcHBlZCBpcyB2YWxpZCBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmssIGFuZCBhZHZhbmNpbmcgdGhlIGN1cnNvciBtZXJlbHkgbW92ZXMgdGhlIHJlYWQgcG9pbnRlciBmb3J3YXJkIHdpdGhpbiB0aGUgdmFsaWQgZGF0YSByYW5nZS4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGFsbG9jYXRpb25zIGludm9sdmVkLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGFuZCBpbmZvLWxlYWtzLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcgKGluY2x1ZGluZyBLQVNBTikgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc4YjdmOThlNGRiNmViZmEwZThmZDY0OWRiMmE2N2QwZjNmMWQ4NjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwOTo1MTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jCmluZGV4IDVjOWU0ZDhiNTdkZTQuLmQ5NTFkYmU4ZWVjM2MgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfcnguYwpAQCAtNDg4LDYgJiM0Mzs0ODgsMjQgQEAgaW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCQkJCQlyZWFkX2RvbmUgPSAtRUZBVUxUOwogCQkJCQlnb3RvIG91dDsKIAkJCQl9CiYjNDM7CQkJCS8qIHNwbGljZV90b19waXBlKCkgdGFrZXMgb25seSB3aGF0IHRoZSBwaXBlCiYjNDM7CQkJCSAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXMKJiM0MzsJCQkJICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2sKJiM0MzsJCQkJICogYW5kIHN0b3A6IGNyZWRpdGluZyB0aGUgd2hvbGUgY2h1bmsgd291bGQKJiM0MzsJCQkJICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXIKJiM0MzsJCQkJICogbmV2ZXIgcmVjZWl2ZWQuCiYjNDM7CQkJCSAqLwomIzQzOwkJCQlpZiAoIW1zZyAmYW1wOyZhbXA7IHJjICZsdDsgY2h1bmtfbGVuKSB7CiYjNDM7CQkJCQlpZiAoIXJjKSB7CiYjNDM7CQkJCQkJaWYgKCFyZWFkX2RvbmUpCiYjNDM7CQkJCQkJCXJlYWRfZG9uZSA9IC1FQUdBSU47CiYjNDM7CQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCQl9CiYjNDM7CQkJCQljb3B5bGVuID0gY2h1bmtfbGVuX3N1bSAtIGNodW5rX2xlbiAmIzQzOyByYzsKJiM0MzsJCQkJCXJlYWRfcmVtYWluaW5nIC09IHJjOwomIzQzOwkJCQkJcmVhZF9kb25lICYjNDM7PSByYzsKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCQl9CiAJCQl9CiAJCQlyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47CiAJCQlyZWFkX2RvbmUgJiM0Mzs9IGNodW5rX2xlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoaXMgcGF0Y2g6CgoqKkFuYWx5emluZyBhIFBvdGVudGlhbCBTTUMgUlggT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgYHNtY19yeF9yZWN2bXNnYCBpbiBgbmV0L3NtYy9zbWNfcnguY2AuIFJpZ2h0IGF3YXksIGl0IHNlZW1zIHRvIGJlIG9wdGltaXppbmcgdGhlIHJlY2VpdmUgcGF0aC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYSBjb25kaXRpb25hbCBjaGVjazogYCFtc2cgJmFtcDsmYW1wOyByYyAmbHQ7IGNodW5rX2xlbmAgYWZ0ZXIgd2hhdCYjMzk7cyBsaWtlbHkgYSBgc3BsaWNlX3RvX3BpcGVgIGNhbGwsIGdpdmVuIHRoZSBzdXJyb3VuZGluZyBjb21tZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpczogYSBudWxsIGBtc2dgIHBvaW50ZXIgbGlrZWx5IHNpZ25pZmllcyBhIHNwbGljZSBvcGVyYXRpb24sIHByb2JhYmx5IGFpbWluZyBmb3IgemVyby1jb3B5IGRhdGEgdHJhbnNmZXIuIFRoZSBhZGRlZCBjaGVjayBwcm9iYWJseSBlbnN1cmVzIHRoYXQgaWYgdGhlIHNwbGljZSBvcGVyYXRpb24gZGlkbiYjMzk7dCBmdWxseSBtb3ZlIGFsbCBkYXRhLCB3ZSBkb24mIzM5O3QgcHJvY2VlZCB3aXRoIHNvbWV0aGluZyB0aGF0IGNvdWxkIGxlYWQgdG8gZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIGFyb3VuZCBpdCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTGV0IG1lIGRpdmUgZGVlcGVyIGludG8gdGhlIGNvZGUgY29udGV4dCB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBzcGVjaWZpYyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIG9yIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfcnhfcmVjdm1zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX3J4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfcnguYz0yOTA9c3RhdGljIGludCBzbWNfcnhfcmVjdl91cmcoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cbm5ldC9zbWMvc21jX3J4LmM6MzM0OnN0YXRpYyBib29sIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzaXplX3QgcGVla2VkKVxubmV0L3NtYy9zbWNfcnguYy0zMzUte1xuLS1cbm5ldC9zbWMvc21jX3J4LmMtMzQ1LVxubmV0L3NtYy9zbWNfcnguYzozNDY6Lyogc21jX3J4X3JlY3Ztc2cgLSByZWNlaXZlIGRhdGEgZnJvbSBSTUJFXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlx0Y29weSBkYXRhIHRvIHJlY2VpdmUgYnVmZmVyXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXG5uZXQvc21jL3NtY19yeC5jOjM1MzppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9zbWMvc21jX3J4LmMtMzU0LVx0XHQgICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpXG4tLVxubmV0L3NtYy9zbWNfcnguYy0zOTUtXG5uZXQvc21jL3NtY19yeC5jOjM5NjpcdFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcbm5ldC9zbWMvc21jX3J4LmMtMzk3LVx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cdFx0XHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXG5uZXQvc21jL3NtY19yeC5jOjQwMTpcdFx0XHQgKiBhYm92ZSBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZSgpXG5uZXQvc21jL3NtY19yeC5jLTQwMi1cdFx0XHQgKi9cbm5ldC9zbWMvc21jX3J4LmM6NDAzOlx0XHRcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXG5uZXQvc21jL3NtY19yeC5jLTQwNC1cdFx0XHRcdGdvdG8gY29weTtcbi0tXG5uZXQvc21jL3NtY19yeC5jLTUzMy1cbm5ldC9zbWMvc21jX3J4LmM6NTM0Olx0XHR0cmFjZV9zbWNfcnhfcmVjdm1zZyhzbWMsIGNvcHlsZW4pO1xubmV0L3NtYy9zbWNfcnguYy01MzUtXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYHNtY19yeF9yZWN2bXNnYCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgc21jX3J4X3JlY3Ztc2dgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gbGluZXMgNDYwIHRocm91Z2ggNTIwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlY2VpdmUgcGF0aCBpcyBoYW5kbGluZyB0aGUgc29ja2V0IG1lc3NhZ2UsIGVzcGVjaWFsbHkgdGhlIGRldGFpbHMgb2YgZGF0YSByZWNlcHRpb24gd2l0aGluIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiBjb2RlLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGludHJpY2FjaWVzIG9mIGVycm9yIGhhbmRsaW5nLCBidWZmZXIgbWFuYWdlbWVudCwgYW5kIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGlzIGNyaXRpY2FsIHNlY3Rpb24uIEkmIzM5O20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHNvY2tldCBzdGF0ZSBjaGFuZ2VzLiBJcyB0aGVyZSBhbnl0aGluZyB1bnVzdWFsIG9yIGluZWZmaWNpZW50IGhhcHBlbmluZz8gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL3NtY19yeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcdFx0aWYgKHNwbGJ5dGVzKVxuIDQ2MTpcdFx0XHRcdHNtY19jdXJzX2FkZChjb25uLVx1MDAzZXJtYl9kZXNjLVx1MDAzZWxlbiwgXHUwMDI2Y29ucywgc3BsYnl0ZXMpO1xuIDQ2MjpcdFx0XHRpZiAoY29ubi1cdTAwM2V1cmdfc3RhdGUgPT0gU01DX1VSR19WQUxJRCBcdTAwMjZcdTAwMjZcbiA0NjM6XHRcdFx0ICAgIHNvY2tfZmxhZyhcdTAwMjZzbWMtXHUwMDNlc2ssIFNPQ0tfVVJHSU5MSU5FKSBcdTAwMjZcdTAwMjZcbiA0NjQ6XHRcdFx0ICAgIHJlYWRhYmxlIFx1MDAzZSAxKVxuIDQ2NTpcdFx0XHRcdHJlYWRhYmxlLS07XHQvKiBhbHdheXMgc3RvcCBhdCB1cmdlbnQgQnl0ZSAqL1xuIDQ2NjpcdFx0XHQvKiBub3QgbW9yZSB0aGFuIHdoYXQgdXNlciBzcGFjZSBhc2tlZCBmb3IgKi9cbiA0Njc6XHRcdFx0Y29weWxlbiA9IG1pbl90KHNpemVfdCwgcmVhZF9yZW1haW5pbmcsIHJlYWRhYmxlKTtcbiA0Njg6XHRcdFx0LyogZGV0ZXJtaW5lIGNodW5rcyB3aGVyZSB0byByZWFkIGZyb20gcmN2YnVmICovXG4gNDY5Olx0XHRcdC8qIGVpdGhlciB1bndyYXBwZWQgY2FzZSwgb3IgMXN0IGNodW5rIG9mIHdyYXBwZWQgY2FzZSAqL1xuIDQ3MDpcdFx0XHRjaHVua19sZW4gPSBtaW5fdChzaXplX3QsIGNvcHlsZW4sIGNvbm4tXHUwMDNlcm1iX2Rlc2MtXHUwMDNlbGVuIC1cbiA0NzE6XHRcdFx0XHRcdCAgY29ucy5jb3VudCk7XG4gNDcyOlx0XHRcdGNodW5rX2xlbl9zdW0gPSBjaHVua19sZW47XG4gNDczOlx0XHRcdGNodW5rX29mZiA9IGNvbnMuY291bnQ7XG4gNDc0Olx0XHRcdHNtY19ybWJfc3luY19zZ19mb3JfY3B1KGNvbm4pO1xuIDQ3NTpcdFx0XHRmb3IgKGNodW5rID0gMDsgY2h1bmsgXHUwMDNjIDI7IGNodW5rJiM0MzsmIzQzOykge1xuIDQ3NjpcdFx0XHRcdGlmICghKGZsYWdzIFx1MDAyNiBNU0dfVFJVTkMpKSB7XG4gNDc3Olx0XHRcdFx0XHRpZiAobXNnKSB7XG4gNDc4Olx0XHRcdFx0XHRcdHJjID0gbWVtY3B5X3RvX21zZyhtc2csIHJjdmJ1Zl9iYXNlICYjNDM7XG4gNDc5Olx0XHRcdFx0XHRcdFx0XHQgICBjaHVua19vZmYsXG4gNDgwOlx0XHRcdFx0XHRcdFx0XHQgICBjaHVua19sZW4pO1xuIDQ4MTpcdFx0XHRcdFx0fSBlbHNlIHtcbiA0ODI6XHRcdFx0XHRcdFx0cmMgPSBzbWNfcnhfc3BsaWNlKHBpcGUsIHJjdmJ1Zl9iYXNlICYjNDM7XG4gNDgzOlx0XHRcdFx0XHRcdFx0XHRjaHVua19vZmYsIGNodW5rX2xlbixcbiA0ODQ6XHRcdFx0XHRcdFx0XHRcdHNtYyk7XG4gNDg1Olx0XHRcdFx0XHR9XG4gNDg2Olx0XHRcdFx0XHRpZiAocmMgXHUwMDNjIDApIHtcbiA0ODc6XHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4gNDg4Olx0XHRcdFx0XHRcdFx0cmVhZF9kb25lID0gLUVGQVVMVDtcbiA0ODk6XHRcdFx0XHRcdFx0Z290byBvdXQ7XG4gNDkwOlx0XHRcdFx0XHR9XG4gNDkxOlx0XHRcdFx0XHQvKiBzcGxpY2VfdG9fcGlwZSgpIHRha2VzIG9ubHkgd2hhdCB0aGUgcGlwZVxuIDQ5MjpcdFx0XHRcdFx0ICogaGFzIHJvb20gZm9yLCB3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHdhc1xuIDQ5MzpcdFx0XHRcdFx0ICogb2ZmZXJlZCwgb3Igbm90aGluZy4gQWNjb3VudCB3aGF0IGl0IHRvb2tcbiA0OTQ6XHRcdFx0XHRcdCAqIGFuZCBzdG9wOiBjcmVkaXRpbmcgdGhlIHdob2xlIGNodW5rIHdvdWxkXG4gNDk1Olx0XHRcdFx0XHQgKiBhZHZhbmNlIHRoZSBjb25zdW1lciBwYXN0IGRhdGEgdGhlIHJlYWRlclxuIDQ5NjpcdFx0XHRcdFx0ICogbmV2ZXIgcmVjZWl2ZWQuXG4gNDk3Olx0XHRcdFx0XHQgKi9cbiA0OTg6XHRcdFx0XHRcdGlmICghbXNnIFx1MDAyNlx1MDAyNiByYyBcdTAwM2MgY2h1bmtfbGVuKSB7XG4gNDk5Olx0XHRcdFx0XHRcdGlmICghcmMpIHtcbiA1MDA6XHRcdFx0XHRcdFx0XHRpZiAoIXJlYWRfZG9uZSlcbiA1MDE6XHRcdFx0XHRcdFx0XHRcdHJlYWRfZG9uZSA9IC1FQUdBSU47XG4gNTAyOlx0XHRcdFx0XHRcdFx0Z290byBvdXQ7XG4gNTAzOlx0XHRcdFx0XHRcdH1cbiA1MDQ6XHRcdFx0XHRcdFx0Y29weWxlbiA9IGNodW5rX2xlbl9zdW0gLSBjaHVua19sZW4gJiM0MzsgcmM7XG4gNTA1Olx0XHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuIDUwNjpcdFx0XHRcdFx0XHRyZWFkX2RvbmUgJiM0Mzs9IHJjO1xuIDUwNzpcdFx0XHRcdFx0XHRicmVhaztcbiA1MDg6XHRcdFx0XHRcdH1cbiA1MDk6XHRcdFx0XHR9XG4gNTEwOlx0XHRcdFx0cmVhZF9yZW1haW5pbmcgLT0gY2h1bmtfbGVuO1xuIDUxMTpcdFx0XHRcdHJlYWRfZG9uZSAmIzQzOz0gY2h1bmtfbGVuO1xuIDUxMjpcdFx0XHRcdGlmIChmbGFncyBcdTAwMjYgTVNHX1BFRUspXG4gNTEzOlx0XHRcdFx0XHRwZWVrZWRfYnl0ZXMgJiM0Mzs9IGNodW5rX2xlbjtcbiA1MTQ6XHRcbiA1MTU6XHRcdFx0XHRpZiAoY2h1bmtfbGVuX3N1bSA9PSBjb3B5bGVuKVxuIDUxNjpcdFx0XHRcdFx0YnJlYWs7IC8qIGVpdGhlciBvbiAxc3Qgb3IgMm5kIGl0ZXJhdGlvbiAqL1xuIDUxNzpcdFx0XHRcdC8qIHByZXBhcmUgbmV4dCAoPT0gMm5kKSBpdGVyYXRpb24gKi9cbiA1MTg6XHRcdFx0XHRjaHVua19sZW4gPSBjb3B5bGVuIC0gY2h1bmtfbGVuOyAvKiByZW1haW5kZXIgKi9cbiA1MTk6XHRcdFx0XHRjaHVua19sZW5fc3VtICYjNDM7PSBjaHVua19sZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjUKCQkJCQkJCW91dHB1dDogMjI2CgkJCQkJCQl0aG91Z2h0czogODYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01DIFJlY2VpdmUgU3BsaWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc21jX3J4X3NwbGljZWAgYW5kIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIGNsYXNzaWMgZGF0YSBsb3NzIGlzc3VlLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBpcyB0aGF0IGBzcGxpY2VfdG9fcGlwZWAgbWlnaHQgbm90IHRyYW5zZmVyIHRoZSBmdWxsIGFtb3VudCB3ZSByZXF1ZXN0IChgY2h1bmtfbGVuYCkuIEluIHRoZSBvcmlnaW5hbCBjb2RlLCBpZiBgc3BsaWNlX3RvX3BpcGVgIHJldHVybmVkIGEgc2hvcnQgY291bnQsIHRoZSBsb2dpYyAqc3RpbGwqIGFkdmFuY2VkIHRoZSByZWFkIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcg4oCTIHRoZSBjb25zdW1lciB0aGlua3MgaXQgaGFzIHJlYWQgbW9yZSBkYXRhIHRoYW4gaXQgYWN0dWFsbHkgaGFzLCBtZWFuaW5nIHdlJiMzOTtyZSBlZmZlY3RpdmVseSBza2lwcGluZyBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlci4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7SXMgdGhpcyBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT8mIzM0OyBCdXQgb24gY2xvc2VyIGV4YW1pbmF0aW9uLCBuby4gVGhpcyBpc24mIzM5O3QgYWJvdXQgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgb3IgYW55IG1lbW9yeSBleHBvc3VyZSBpc3N1ZXMuIFRoZSByZWNlaXZlIGJ1ZmZlciAoYHJjdmJ1Zl9iYXNlYCkgaXMgZmlsbGVkIHdpdGggbmV0d29yayBkYXRhLCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoICp2YWxpZCogZGF0YSwgYWxiZWl0IGRhdGEgdGhhdCYjMzk7cyBiZWluZyBpbmNvcnJlY3RseSBza2lwcGVkLiBJZiB0aGUgY3Vyc29yIGlzIGFkdmFuY2VkIHBhc3QgZGF0YSB0aGF0IHRoZSBuZXR3b3JrIGhhc24mIzM5O3QgcHJvdmlkZWQsIHRoZW4gd2UgY291bGQgYmUgcmVhZGluZyBmcm9tIGludmFsaWQgbWVtb3J5LiBIb3dldmVyLCB0aGUgbG9naWMgYWR2YW5jZXMgdGhlIGN1cnNvciBieSBgY29weWxlbmAsIHdoaWNoIGlzIGFkanVzdGVkIHRvIHRoZSBhY3R1YWwgYHJjYCBieXRlcyB0aGF0IGFyZSBzcGxpY2VkLgoKVGhlIHBhdGNoIGNvcnJlY3RzIHRoaXMgYnkgYWRqdXN0aW5nIHRoZSBjdXJzb3IgYWR2YW5jZW1lbnQsIGBjb3B5bGVuYCwgYnkgdGhlIGFjdHVhbCBhbW91bnQgb2YgZGF0YSBzdWNjZXNzZnVsbHkgc3BsaWNlZC4gU28gaWYgd2Ugc3BsaWNlIGxlc3MgdGhhbiB0aGUgZXhwZWN0ZWQgYGNodW5rX2xlbmAsIHRoZSBgY29weWxlbmAgd2lsbCBiZSBhZGp1c3RlZCBhY2NvcmRpbmdseSwgc3RvcHBpbmcgYWR2YW5jaW5nIHRoZSBjb25zdW1lciBjdXJzb3IgcGFzdCB0aGUgZGF0YSBpdCBoYXMgbm90IGNvbnN1bWVkLiBUaGlzIGlzIHNpbXBseSBhIGxvZ2ljIGVycm9yIHRoYXQgbGVhZHMgdG8gZHJvcHBpbmcgZGF0YSB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlIG9mIHRoZSBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlci4gVGhlIGRhdGEgaXMgbG9zdC4gSXQgZG9lc24mIzM5O3QgcmVhZCBhbnl0aGluZyB1bmluaXRpYWxpemVkLCBpdCBzaW1wbHkgc2tpcHMgb3ZlciB0aGUgZGF0YS4KCkkgaGFkIHRvIHdhbGsgdGhyb3VnaCB0aGUgcmluZyBidWZmZXIgZHluYW1pY3MgdG8gYmUgc3VyZS4gVGhlIGNvbnN1bWVyIGFkdmFuY2VzIHRoZSBjdXJzb3IgYW5kIHRoZSBwcm9kdWNlciB3aWxsIGV2ZW50dWFsbHkgb3ZlcndyaXRlIGl0LiBJZiB3ZSBkb24mIzM5O3QgYWR2YW5jZSB0aGUgY3Vyc29yIGFwcHJvcHJpYXRlbHksIHRoZSBjb25zdW1lciBsb3NlcyBkYXRhLCBidXQgaW1wb3J0YW50bHksIGl0JiMzOTtzIGRhdGEgdGhhdCB3YXMgKndyaXR0ZW4qIGJ5IHRoZSBuZXR3b3JrLCBub3QgdW5pbml0aWFsaXplZCBnYXJiYWdlLiBSZWFkaW5nIGZyb20gdGhlIHJpbmcgYnVmZmVyIGlzIGFsd2F5cyB3aXRoaW4gdGhlIGJvdW5kcyBvZiBgcmVhZGFibGVgLCB3aGljaCByZXByZXNlbnRzIGRhdGEgdGhlIHByb2R1Y2VyIGhhcyB3cml0dGVuLgoKVGhlcmVmb3JlLCB0aGlzIGlzIGEgbG9naWMgYnVnLCBidXQgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJ1Zy4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZC4gVGhlIHBhdGNoIGlzIGNydWNpYWwgdG8gcHJldmVudGluZyBkYXRhIGxvc3MgYW5kIG1haW50YWluaW5nIGNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgd2UgY2FuIHN0aWNrIHRvIHN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcuIEtBU0FOIHdvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIGVkZ2UgY2FzZXMgb2YgcG90ZW50aWFsbHkgb3V0LW9mLWJvdW5kcyBwb2ludGVyIGFyaXRobWV0aWMgb3IgYnVmZmVyIGFjY2VzcyBpZiB0aGUgY3Vyc29yIGxvZ2ljIHdhcyBjb21wbGV0ZWx5IGZsYXdlZC4gSXQmIzM5O3MgYSBidWcsIGEgZGF0YSBsb3NzIGJ1ZywgYnV0IG5vdCBhIG1lbW9yeSBzYWZldHkgYnVnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwOTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZXJlIGEgcGFydGlhbCBzcGxpY2Ugb3BlcmF0aW9uICh3aGVuIGBzbWNfcnhfc3BsaWNlYCByZXR1cm5zIGZld2VyIGJ5dGVzIHRoYW4gYGNodW5rX2xlbmApIHdvdWxkIGluY29ycmVjdGx5IGFkdmFuY2UgdGhlIGNvbnN1bWVyIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhpcyBjYXVzZWQgdGhlIHJlYWRlciB0byBza2lwIG92ZXIgdW5yZWFkIGRhdGEsIGVmZmVjdGl2ZWx5IGRyb3BwaW5nIGl0LiBUaGUgZml4IHByb3Blcmx5IGFjY291bnRzIGZvciB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyBzcGxpY2VkIGFuZCBzdG9wcyBhZHZhbmNpbmcgdGhlIGN1cnNvciBwYXN0IHRoZSBjb25zdW1lZCBkYXRhLlxuXG5UaGlzIGJ1ZyBsZWFkcyB0byBkYXRhIGxvc3MgYW5kIGluY29ycmVjdCBzdHJlYW0gc3RhdGUsIGJ1dCBpdCBkb2VzIG5vdCBpbnZvbHZlIHJlYWRpbmcgb3IgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBkYXRhIGJlaW5nIHNraXBwZWQgaXMgdmFsaWQgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrLCBhbmQgYWR2YW5jaW5nIHRoZSBjdXJzb3IgbWVyZWx5IG1vdmVzIHRoZSByZWFkIHBvaW50ZXIgZm9yd2FyZCB3aXRoaW4gdGhlIHZhbGlkIGRhdGEgcmFuZ2UuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciBhbGxvY2F0aW9ucyBpbnZvbHZlZC4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBhbmQgaW5mby1sZWFrcywgbmVpdGhlciBvZiB3aGljaCBhcmUgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBmdXp6aW5nIChpbmNsdWRpbmcgS0FTQU4pIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSBhIHBhcnRpYWwgc3BsaWNlIG9wZXJhdGlvbiAod2hlbiBgc21jX3J4X3NwbGljZWAgcmV0dXJucyBmZXdlciBieXRlcyB0aGFuIGBjaHVua19sZW5gKSB3b3VsZCBpbmNvcnJlY3RseSBhZHZhbmNlIHRoZSBjb25zdW1lciBjdXJzb3IgYnkgdGhlIGZ1bGwgYGNodW5rX2xlbmAuIFRoaXMgY2F1c2VkIHRoZSByZWFkZXIgdG8gc2tpcCBvdmVyIHVucmVhZCBkYXRhLCBlZmZlY3RpdmVseSBkcm9wcGluZyBpdC4gVGhlIGZpeCBwcm9wZXJseSBhY2NvdW50cyBmb3IgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgc3BsaWNlZCBhbmQgc3RvcHMgYWR2YW5jaW5nIHRoZSBjdXJzb3IgcGFzdCB0aGUgY29uc3VtZWQgZGF0YS5cblxuVGhpcyBidWcgbGVhZHMgdG8gZGF0YSBsb3NzIGFuZCBpbmNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgaXQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIG9yIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgZGF0YSBiZWluZyBza2lwcGVkIGlzIHZhbGlkIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yaywgYW5kIGFkdmFuY2luZyB0aGUgY3Vyc29yIG1lcmVseSBtb3ZlcyB0aGUgcmVhZCBwb2ludGVyIGZvcndhcmQgd2l0aGluIHRoZSB2YWxpZCBkYXRhIHJhbmdlLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgaW52b2x2ZWQuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgYW5kIGluZm8tbGVha3MsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgZnV6emluZyAoaW5jbHVkaW5nIEtBU0FOKSBhcmUgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTE6NTIuMjM3NjgyNzk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwMTY2ODcwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY19yZWN2bXNnXCIsXG4gICAgXCJzbWNfc3BsaWNlX3JlYWRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXFxuXFxuVGhpcyBidWcgbGVhZHMgdG8gZGF0YSBsb3NzIGFuZCBpbmNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgaXQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIG9yIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgZGF0YSBiZWluZyBza2lwcGVkIGlzIHZhbGlkIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yaywgYW5kIGFkdmFuY2luZyB0aGUgY3Vyc29yIG1lcmVseSBtb3ZlcyB0aGUgcmVhZCBwb2ludGVyIGZvcndhcmQgd2l0aGluIHRoZSB2YWxpZCBkYXRhIHJhbmdlLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgaW52b2x2ZWQuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgYW5kIGluZm8tbGVha3MsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgZnV6emluZyAoaW5jbHVkaW5nIEtBU0FOKSBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZW4gY2FsbGVkIGZyb20gYHNtY19zcGxpY2VfcmVhZGAgKHdoZXJlIGBtc2dgIGlzIE5VTEwpIGFuZCBgc3BsaWNlX3RvX3BpcGVgIHRha2VzIGxlc3MgZGF0YSB0aGFuIG9mZmVyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgcHJvdG9jb2wgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MTo1Mi4yMzc2ODkyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTE2OTExOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDIwIDA5OjUxOjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3J4LmMgYi9uZXQvc21jL3NtY19yeC5jXFxuaW5kZXggNWM5ZTRkOGI1N2RlNC4uZDk1MWRiZThlZWMzYyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19yeC5jXFxuKysrIGIvbmV0L3NtYy9zbWNfcnguY1xcbkBAIC00ODgsNiArNDg4LDI0IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRyZWFkX2RvbmUgPSAtRUZBVUxUO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRcXHQvKiBzcGxpY2VfdG9fcGlwZSgpIHRha2VzIG9ubHkgd2hhdCB0aGUgcGlwZVxcbitcXHRcXHRcXHRcXHQgKiBoYXMgcm9vbSBmb3IsIHdoaWNoIG1heSBiZSBsZXNzIHRoYW4gd2FzXFxuK1xcdFxcdFxcdFxcdCAqIG9mZmVyZWQsIG9yIG5vdGhpbmcuIEFjY291bnQgd2hhdCBpdCB0b29rXFxuK1xcdFxcdFxcdFxcdCAqIGFuZCBzdG9wOiBjcmVkaXRpbmcgdGhlIHdob2xlIGNodW5rIHdvdWxkXFxuK1xcdFxcdFxcdFxcdCAqIGFkdmFuY2UgdGhlIGNvbnN1bWVyIHBhc3QgZGF0YSB0aGUgcmVhZGVyXFxuK1xcdFxcdFxcdFxcdCAqIG5ldmVyIHJlY2VpdmVkLlxcbitcXHRcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0XFx0aWYgKCFtc2cgXFx1MDAyNlxcdTAwMjYgcmMgXFx1MDAzYyBjaHVua19sZW4pIHtcXG4rXFx0XFx0XFx0XFx0XFx0aWYgKCFyYykge1xcbitcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIXJlYWRfZG9uZSlcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmVhZF9kb25lID0gLUVBR0FJTjtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0XFx0XFx0Y29weWxlbiA9IGNodW5rX2xlbl9zdW0gLSBjaHVua19sZW4gKyByYztcXG4rXFx0XFx0XFx0XFx0XFx0cmVhZF9yZW1haW5pbmcgLT0gcmM7XFxuK1xcdFxcdFxcdFxcdFxcdHJlYWRfZG9uZSArPSByYztcXG4rXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XFxuIFxcdFxcdFxcdHJlYWRfZG9uZSArPSBjaHVua19sZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjUzLjU1MDA3MjM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ4Mjc2MDM2NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX3J4X3JlY3Ztc2dcIixcbiAgICBcInNtY19yZWN2bXNnXCIsXG4gICAgXCJzbWNfc3BsaWNlX3JlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZW4gY2FsbGVkIGZyb20gYHNtY19zcGxpY2VfcmVhZGAgKHdoZXJlIGBtc2dgIGlzIE5VTEwpIGFuZCBgc3BsaWNlX3RvX3BpcGVgIHRha2VzIGxlc3MgZGF0YSB0aGFuIG9mZmVyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTTUMgcHJvdG9jb2wgbG9naWMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6NTE6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19yeC5jIGIvbmV0L3NtYy9zbWNfcnguY1xuaW5kZXggNWM5ZTRkOGI1N2RlNC4uZDk1MWRiZThlZWMzYyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbisrKyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00ODgsNiArNDg4LDI0IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRcdFx0XHRcdHJlYWRfZG9uZSA9IC1FRkFVTFQ7XG4gXHRcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdFx0fVxuK1x0XHRcdFx0Lyogc3BsaWNlX3RvX3BpcGUoKSB0YWtlcyBvbmx5IHdoYXQgdGhlIHBpcGVcbitcdFx0XHRcdCAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXNcbitcdFx0XHRcdCAqIG9mZmVyZWQsIG9yIG5vdGhpbmcuIEFjY291bnQgd2hhdCBpdCB0b29rXG4rXHRcdFx0XHQgKiBhbmQgc3RvcDogY3JlZGl0aW5nIHRoZSB3aG9sZSBjaHVuayB3b3VsZFxuK1x0XHRcdFx0ICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXJcbitcdFx0XHRcdCAqIG5ldmVyIHJlY2VpdmVkLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRpZiAoIW1zZyBcdTAwMjZcdTAwMjYgcmMgXHUwMDNjIGNodW5rX2xlbikge1xuK1x0XHRcdFx0XHRpZiAoIXJjKSB7XG4rXHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4rXHRcdFx0XHRcdFx0XHRyZWFkX2RvbmUgPSAtRUFHQUlOO1xuK1x0XHRcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdFx0XHR9XG4rXHRcdFx0XHRcdGNvcHlsZW4gPSBjaHVua19sZW5fc3VtIC0gY2h1bmtfbGVuICsgcmM7XG4rXHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuK1x0XHRcdFx0XHRyZWFkX2RvbmUgKz0gcmM7XG4rXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0XHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XG4gXHRcdFx0cmVhZF9kb25lICs9IGNodW5rX2xlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjUzLjU1MDA4MDA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0OTk4NDY5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvc21jL3NtY19yeC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgc21jX3J4X3JlY3Ztc2dgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyBhIG5ldyBjaGVjayBhZnRlciB3aGF0IGxvb2tzIGxpa2UgYSBkYXRhIGNvcHkgb3BlcmF0aW9uIOKAkyBwcm9iYWJseSBgc3BsaWNlX3RvX3BpcGVgIG9yIHNvbWV0aGluZyBlcXVpdmFsZW50LCBqdWRnaW5nIGZyb20gdGhlIGNvbW1lbnQgaW4gdGhlIGNvZGUuIEl0J3MgYWRkaW5nIGAhbXNnIFx1MDAyNlx1MDAyNiByYyBcdTAwM2MgY2h1bmtfbGVuYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGlzIHRyeWluZyB0byBwcm90ZWN0IGFnYWluc3Q/IEFuZCB3aGF0J3MgYG1zZ2AgcmVmZXJyaW5nIHRvP1xuXG5UaGlzIHN1Z2dlc3RzIHRoZXJlIHdhcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBlZGdlIGNhc2UgdGhhdCB0aGUgb3JpZ2luYWwgY29kZSBkaWRuJ3QgaGFuZGxlLiBUaGUgY29uZGl0aW9uIGAhbXNnIFx1MDAyNlx1MDAyNiByYyBcdTAwM2MgY2h1bmtfbGVuYCBzZWVtcyB0byBpbmRpY2F0ZSB0aGUgY29weSBvcGVyYXRpb24gZmFpbGVkLCBvciBhdCBsZWFzdCBkaWRuJ3QgY29weSB0aGUgZXhwZWN0ZWQgYW1vdW50LCBhbmQgc29tZWhvdyBhIGBtc2dgIChwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gdGhlIG1lc3NhZ2UgYmVpbmcgcmVjZWl2ZWQpIGlzIG1pc3NpbmcuIFRoZSBuZWdhdGl2ZSBhc3NlcnRpb24gb2YgYCFtc2dgIGlzIGludGVyZXN0aW5nLCBhbmQgbGlrZWx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC5cblxuSSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2l0aGluIGBzbWNfcnhfcmVjdm1zZ2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdGhpcyBjaGVjayBiZWluZyB0cmlnZ2VyZWQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgYG1zZ2AgdmFyaWFibGUgaXMgdXNlZCwgd2hlcmUgaXQncyBzZXQsIGFuZCB3aGF0IGNhbiBnbyB3cm9uZyBpbiB0aGF0IGFyZWEuIEFsc28sIGhvdyBpcyBgY2h1bmtfbGVuYCBiZWluZyBkZXRlcm1pbmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHdob2xlIGZ1bmN0aW9uLCBhbmQgdGhlIGRhdGEgZmxvdywgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBhZGRlZCBjaGVjayBhbmQgbWFrZSBhIGp1ZGdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjU4LjIwMDA2Nzg0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTkwMzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfcnhfcmVjdm1zZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL3NtY19yeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX3J4LmM9MjkwPXN0YXRpYyBpbnQgc21jX3J4X3JlY3ZfdXJnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cXG5uZXQvc21jL3NtY19yeC5jOjMzNDpzdGF0aWMgYm9vbCBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc2l6ZV90IHBlZWtlZClcXG5uZXQvc21jL3NtY19yeC5jLTMzNS17XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM0NS1cXG5uZXQvc21jL3NtY19yeC5jOjM0NjovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlxcdGNvcHkgZGF0YSB0byByZWNlaXZlIGJ1ZmZlclxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXFxubmV0L3NtYy9zbWNfcnguYzozNTM6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3NtYy9zbWNfcnguYy0zNTQtXFx0XFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTUtXFxubmV0L3NtYy9zbWNfcnguYzozOTY6XFx0XFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcXG5uZXQvc21jL3NtY19yeC5jLTM5Ny1cXHRcXHRcXHRnb3RvIGNvcHk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYzo0MDE6XFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcbm5ldC9zbWMvc21jX3J4LmMtNDAyLVxcdFxcdFxcdCAqL1xcbm5ldC9zbWMvc21jX3J4LmM6NDAzOlxcdFxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy00MDQtXFx0XFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy01MzMtXFxubmV0L3NtYy9zbWNfcnguYzo1MzQ6XFx0XFx0dHJhY2Vfc21jX3J4X3JlY3Ztc2coc21jLCBjb3B5bGVuKTtcXG5uZXQvc21jL3NtY19yeC5jLTUzNS1cXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUxOjU4LjI1MTk3NTY0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODA3MDkwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBjaGFuZ2VzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBzbWNfcnhfcmVjdm1zZ2AgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhleSd2ZSB0d2Vha2VkIGBzbWNfcnhfcmVjdm1zZ2AuIFRoYXQncyBpbnRlcmVzdGluZy4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgKndoeSogYW5kICpob3cqLiBUaGlzIGZ1bmN0aW9uIGlzIGNvcmUgdG8gdGhlIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKFJEUykgb3ZlciBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zIChTTUMpIHByb3RvY29sIHN0YWNrLiBBbnkgY2hhbmdlcyBoZXJlIGFyZSBsaWtlbHkgc2lnbmlmaWNhbnQsIHBvdGVudGlhbGx5IGltcGFjdGluZyBwZXJmb3JtYW5jZSwgc3RhYmlsaXR5LCBvciBldmVuIHNlY3VyaXR5LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyB0byBtaW5kIGlzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBgQ09ORklHYCBvcHRpb25zIGFyZSByZWxldmFudCBhbmQgaWYgYW55IG5ldyBvbmVzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBBcmUgdGhleSBlbmFibGluZyBhIG5ldyBTTUMgZmVhdHVyZSwgb3B0aW1pemluZyBhbiBleGlzdGluZyBvbmUsIG9yIGZpeGluZyBhIGJ1Zz8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYENPTkZJR19TTUNgLCBgQ09ORklHX1NNQ19UUkFOU1BPUlRgLCBvciBwZXJoYXBzIHNvbWV0aGluZyBtb3JlIGdyYW51bGFyIHJlbGF0ZWQgdG8gUkRNQSBpbnRlZ3JhdGlvbj8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcyB0byBkZXRlcm1pbmUgdGhlIGV4YWN0IGRlcGVuZGVuY2llcy4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gc2VlIHdoYXQgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2h5LiBUaGlzIGNvdWxkIGJlIGFib3V0IHN1cHBvcnRpbmcgbmV3IGhhcmR3YXJlLCBhZGRyZXNzaW5nIGEgY29ybmVyIGNhc2UgaW4gZmxvdyBjb250cm9sLCBvciBldmVuIGhhcmRlbmluZyBhZ2FpbnN0IGEgcG90ZW50aWFsIGV4cGxvaXQuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MDEuNzMyNjg4MTk2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzAyNzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MDEuNzgyMDAwMzQ1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2NDU4MDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBgU01DYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgKmFueSogb3RoZXIgY29uZmlndXJhdGlvbnMgaW4gcGxheTsgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgaXMgY3J1Y2lhbC5cblxuTm93LCB0aGF0IGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24gaGFzIHBpcXVlZCBteSBpbnRlcmVzdC4gVGhlIG5hbWUgc3VnZ2VzdHMgaXQncyBhbiBBUEkgZW50cnlwb2ludCwgb3IgYXQgbGVhc3QgYSBmdW5jdGlvbiB0aGF0J3MgYmVpbmcgY2FsbGVkIGZyb20gb25lLiBUaGVyZWZvcmUsIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzdGFjazsgSSdsbCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgaW52b2tlZC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgcGFydCBvZiB0aGUgYW5hbHlzaXMgb2Z0ZW4gc3RhcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MDQuNDQ2NTgzMTczWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMjU1MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19yeF9yZWN2bXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9MjgzNT1pbnQgc21jX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yODYyLVxcdFxcdG1zZy1cXHUwMDNlbXNnX25hbWVsZW4gPSAwO1xcbm5ldC9zbWMvYWZfc21jLmM6Mjg2MzpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgbXNnLCBOVUxMLCBsZW4sIGZsYWdzKTtcXG5uZXQvc21jL2FmX3NtYy5jLTI4NjQtXFx0XFx0U01DX1NUQVRfUlhfUEFZTE9BRChzbWMsIHJjLCByYyk7XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTMyODQ9c3NpemVfdCBzbWNfc3BsaWNlX3JlYWQoc3RydWN0IHNvY2tldCAqc29jaywgbG9mZl90ICpwcG9zLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzIxLVxcdFxcdFNNQ19TVEFUX0lOQyhzbWMsIHNwbGljZV9jbnQpO1xcbm5ldC9zbWMvYWZfc21jLmM6MzMyMjpcXHRcXHRyYyA9IHNtY19yeF9yZWN2bXNnKHNtYywgTlVMTCwgcGlwZSwgbGVuLCBmbGFncyk7XFxubmV0L3NtYy9hZl9zbWMuYy0zMzIzLVxcdH1cXG4tLVxcbm5ldC9zbWMvc21jX3J4LmM9MjkwPXN0YXRpYyBpbnQgc21jX3J4X3JlY3ZfdXJnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTMzMy1cXG5uZXQvc21jL3NtY19yeC5jOjMzNDpzdGF0aWMgYm9vbCBzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc2l6ZV90IHBlZWtlZClcXG5uZXQvc21jL3NtY19yeC5jLTMzNS17XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTM0NS1cXG5uZXQvc21jL3NtY19yeC5jOjM0NjovKiBzbWNfcnhfcmVjdm1zZyAtIHJlY2VpdmUgZGF0YSBmcm9tIFJNQkVcXG5uZXQvc21jL3NtY19yeC5jLTM0Ny0gKiBAbXNnOlxcdGNvcHkgZGF0YSB0byByZWNlaXZlIGJ1ZmZlclxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNTItICovXFxubmV0L3NtYy9zbWNfcnguYzozNTM6aW50IHNtY19yeF9yZWN2bXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3NtYy9zbWNfcnguYy0zNTQtXFx0XFx0ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zOTUtXFxubmV0L3NtYy9zbWNfcnguYzozOTY6XFx0XFx0aWYgKHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKHNtYywgcGVla2VkX2J5dGVzKSlcXG5uZXQvc21jL3NtY19yeC5jLTM5Ny1cXHRcXHRcXHRnb3RvIGNvcHk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5jLTQwMC1cXHRcXHRcXHQvKiBzbWNfY2RjX21zZ19yZWN2X2FjdGlvbigpIGNvdWxkIGhhdmUgcnVuIGFmdGVyXFxubmV0L3NtYy9zbWNfcnguYzo0MDE6XFx0XFx0XFx0ICogYWJvdmUgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoKVxcbm5ldC9zbWMvc21jX3J4LmMtNDAyLVxcdFxcdFxcdCAqL1xcbm5ldC9zbWMvc21jX3J4LmM6NDAzOlxcdFxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy00MDQtXFx0XFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy01MzMtXFxubmV0L3NtYy9zbWNfcnguYzo1MzQ6XFx0XFx0dHJhY2Vfc21jX3J4X3JlY3Ztc2coc21jLCBjb3B5bGVuKTtcXG5uZXQvc21jL3NtY19yeC5jLTUzNS1cXHR9IHdoaWxlIChyZWFkX3JlbWFpbmluZyk7XFxuLS1cXG5uZXQvc21jL3NtY19yeC5oPTIwPXZvaWQgc21jX3J4X2luaXQoc3RydWN0IHNtY19zb2NrICpzbWMpO1xcbm5ldC9zbWMvc21jX3J4LmgtMjEtXFxubmV0L3NtYy9zbWNfcnguaDoyMjppbnQgc21jX3J4X3JlY3Ztc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvc21jL3NtY19yeC5oLTIzLVxcdFxcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncyk7XFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmM9Nz1FWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woc21jX3R4X3NlbmRtc2cpO1xcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuYzo4OkVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChzbWNfcnhfcmVjdm1zZyk7XFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5jLTktRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKHNtY3JfbGlua19kb3duKTtcXG4tLVxcbm5ldC9zbWMvc21jX3RyYWNlcG9pbnQuaD03MT1ERUZJTkVfRVZFTlQoc21jX21zZ19ldmVudCwgc21jX3R4X3NlbmRtc2csXFxuLS1cXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzctXFxubmV0L3NtYy9zbWNfdHJhY2Vwb2ludC5oOjc4OkRFRklORV9FVkVOVChzbWNfbXNnX2V2ZW50LCBzbWNfcnhfcmVjdm1zZyxcXG5uZXQvc21jL3NtY190cmFjZXBvaW50LmgtNzktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjA0LjUzODg0NDM2OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTQ0MDE1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBSZWNlbnQgU01DIFNvY2tldCBQcm90b2NvbCBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGFkZHJlc3NpbmcgYW4gaW50ZXJlc3RpbmcgYnVnIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29tbXVuaWNhdGlvbnMgKFNNQykgcHJvdG9jb2wuIFNwZWNpZmljYWxseSwgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoaW4gYHNtY19yeF9yZWN2bXNnYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGJvdGggYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSwgb2YgY291cnNlLCB0aGUgc3RhbmRhcmQgYC5yZWN2bXNnYCBhbmQgYC5zcGxpY2VfcmVhZGAgb3BlcmF0aW9ucyBmb3IgdGhlIFNNQyBzb2NrZXQgZmFtaWx5LiBUaGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIGEgc2NlbmFyaW8gaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSB0aGUgbWVzc2FnZSBwb2ludGVyIChgbXNnYCkgaXMgTlVMTC4gVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBgc21jX3J4X3JlY3Ztc2dgIGlzIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgLCB3aGljaCBwYXNzZXMgYSBgcGlwZWAgaW5zdGVhZC5cblxuVGhlIGVzc2VuY2Ugb2YgdGhlIGZpeCBpcyBoYW5kbGluZyBhIHNpdHVhdGlvbiB3aGVyZSBgc3BsaWNlX3RvX3BpcGVgIGRvZXNuJ3QgdHJhbnNmZXIgdGhlIGVudGlyZSBhbW91bnQgcmVxdWVzdGVkLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gdGhlIFNNQyBwcm90b2NvbCdzIGJlaGF2aW9yLCBhbmQgdGhhdCBjYW4gaGF2ZSBzb21lIHJlYWwgaW1wYWN0LiBCZWNhdXNlIHVzZXJzcGFjZSBjYW4gdHJpZ2dlciB0aGlzIHBhdGggdXNpbmcgYHNwbGljZSgpYCBvbiBhbiBTTUMgc29ja2V0LCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggZnV6emluZy5cblxuTXkgZm9jdXMgaGFzIGJlZW4gb24gYHNtY19yeF9yZWN2bXNnYCwgYHNtY19yZWN2bXNnYCwgYW5kIGBzbWNfc3BsaWNlX3JlYWRgLiBBbHNvLCB0aGUgYFNNQ2AgY29uZmlndXJhdGlvbiBpcyB3aGF0J3MgcmVsZXZhbnQgaGVyZSwgdGhhdCdzIGNsZWFyLiBCdXQgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBwYXJ0aWN1bGFyIHZ1bG5lcmFiaWxpdHksIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE2MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjowOS4xOTMyNDgyNDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzAyMzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxubmV0L3NtYy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbm5ldC9zbWMvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZz0xND1jb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoxNjpcXHRkZXBlbmRzIG9uIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0xNy1cXHRoZWxwXFxuLS1cXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFNNQyBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9TWVNDQUxMXFxubmV0L3NtYy9LY29uZmlnLTI2LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjowOS4yNDE1NTQ0ODVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzODg0MTY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLY29uZmlnIENvbmZ1c2lvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgYnVpbGQgcHJvY2VzcyBpcyBnZXR0aW5nIHRhbmdsZWQgYWdhaW4uIEl0IGxvb2tzIGxpa2UgdGhlIG91dGNvbWUgKmRlcGVuZHMqIG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQsIHdhaXQsIGBESUJTYD8gVGhhdCdzLi4uIHVuZXhwZWN0ZWQuIEkgZmVlbCBsaWtlIEkndmUgZW5jb3VudGVyZWQgdGhpcyBiZWZvcmUuIExldCBtZSBwYXVzZSBhbmQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgbmV0L3NtYy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGhvdyBgRElCU2AgaXMgYmVpbmcgdXNlZCBhbmQgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIHRydWx5IGFyZSBpbiB0aGlzIGNvbnRleHQuIEl0J3MgZWFzeSB0byBsb3NlIHRyYWNrIHdoZW4geW91J3JlIGRlYWxpbmcgd2l0aCBzdWNoIGEgaGlnaGx5IGludGVyZGVwZW5kZW50IHN5c3RlbS4gTmVlZCB0byBiZSBjZXJ0YWluIG9mIHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoxMi41ODAzOTgzMTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NtYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU01DXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBESUJTXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFNNQy1SIHByb3ZpZGVzIGEgXFxcInNvY2tldHMgb3ZlciBSRE1BXFxcIiBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXFxuICAgNzpcXHRcXHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxcbiAgIDg6XFx0XFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxcbiAgIDk6XFx0XFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXFxuICAxMDpcXHRcXHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHJ1biBTTUMgc29ja2V0IGFwcGxpY2F0aW9uc1xcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgU01DX0RJQUdcXG4gIDE1OlxcdFxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gU01DXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFN1cHBvcnQgZm9yIFNNQyBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0b29scyBzdWNoIGFzXFxuICAxOTpcXHRcXHQgIHNtY3NzLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjEyLjU4MDQ1NDQ3MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzIzMzM3Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gRElCUyBhbmQgU01DIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGBESUJTYD8gVGhhdCB0ZXJtIGlzbid0IGltbWVkaWF0ZWx5IGZhbWlsaWFyLiBCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgd2hhdCB0aGF0IHJlZmVycyB0by4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgbWFrZSBhIHF1aWNrIG1lbnRhbCBub3RlIG9mIHRoZSByZWxldmFudCBjb21wb25lbnRzOiBgU01DYCwgYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgb2YgY291cnNlLCB0aGlzIG5ldyBvbmUsIGBESUJTYC4gV2FpdCwgaXMgdGhpcyBhIHR5cG8/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBvciB3b3JraW5nIHdpdGggYERJQlNgIGJlZm9yZSwgbm90IGluIHRoaXMgY29udGV4dCBhdCBsZWFzdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgdGV4dCBhZ2FpbiwganVzdCB0byBiZSBzdXJlIEkgaGF2ZW4ndCBtaXNyZWFkIGl0LiBBaCwgbm9wZSwgdGhlcmUgaXQgaXMg4oCTIGBESUJTYCBpcyBpbmRlZWQgcHJlc2VudC5cblxuUmlnaHQsIHNvIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgb3RoZXIgZWxlbWVudHMsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGl0cyBjb25maWd1cmF0aW9uIGNvbnRleHQuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9zbWMvS2NvbmZpZ2AgdG8gc2VlIGhvdyBpdCdzIGRlZmluZWQuIFdhaXQuLi4gSSBzZWUsIGl0IGhhcyBkZXBlbmRlbmNpZXMuIEl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU2AuIFdhaXQuLi4gdGhhdCBtYWtlcyBtZSB0aGluay4uLiBpcyBpdCByZWxhdGVkIHRvIElQdjY/IE5vLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGRpZG4ndCBtaXNyZWFkIHRoZSBsaW5lIGFnYWluLiBMZXQgbWUgZ3JlcCB0aHJvdWdoIGBuZXQvc21jL0tjb25maWdgIGp1c3QgdG8gbWFrZSBzdXJlLiBPaywgaXQncyByaWdodCB0aGVyZSBpbiB0aGUgZGVwZW5kZW5jeSBsaW5lOiBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gU28gaXQgaXMgd2hhdCBJIHRob3VnaHQsIGl0J3MgbGl0ZXJhbGx5IGBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gQWxyaWdodCwgc28gdGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGNvbmZpcm0gdGhpcyBpbiB0aGUga2VybmVsIHRyZWUuIExldCBtZSBmaW5kIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjE5LjkwMzc5NDE1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczOTQ5MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRElCU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnPTI9Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG5uZXQvc21jL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBESUJTXFxubmV0L3NtYy9LY29uZmlnLTUtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoxOS45NzExOTQ4OTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNDE0MTY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIEZhbWlsaWFyIFRlcm0qKlxuXG5Pa2F5LCBzbyB0aGVyZSBpdCBpcyAtIGBESUJTYC4gSW50ZXJlc3RpbmcuIEl0J3Mgbm90IHNvbWV0aGluZyBJIGRlYWwgd2l0aCBkYXktdG8tZGF5LCBidXQgdGhlIGFjcm9ueW0gaXMgZGVmaW5pdGVseSBmYW1pbGlhci4gTGV0IG1lIGp1c3QgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgdGhlIHNwZWNpZmljIGNvbnRleHQgaGVyZS4gV2hhdCBkb2VzIGBESUJTYCBzdGFuZCBmb3IgaW4gKnRoaXMqIHNpdHVhdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSByZWxldmFudCBjb25uZWN0aW9ucyBiZWZvcmUgSSBjYW4gZm9ybXVsYXRlIGEgcHJvcGVyIHJlc3BvbnNlIG9yIGFuYWx5c2lzLiBMZXQgbWUganVzdCBjaGVjayBteSBtZW50YWwgZGF0YWJhc2UsIG9yIHBlcmhhcHMgYSBxdWljayBzZWFyY2ggbWlnaHQgYmUgdXNlZnVsLiBSaWdodCwgbGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMTAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoyMy41NzUzMzg4OTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTgyNjQwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERJQlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoyNS4xMzM2MDgyMjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5MzY3MTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRElCUyBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYERJQlNgIGhlcmUg4oCTIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZy4gR290IGl0LiBUaGlzIG1lYW5zIHdlJ2xsIG5lZWQgdG8gZW5hYmxlIHRoYXQgc3BlY2lmaWMgc3VwcG9ydC4gTm93LCBsb29raW5nIGF0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucywgaXQgc2VlbXMgd2UgYWxzbyBuZWVkIGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYCBpdHNlbGYuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzcGVjaWZpY2FsbHkgZGV0ZXJtaW5lIGlmIGBJTkZJTklCQU5EYCBoYXMgYW55IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgb3IgcmVxdWlyZW1lbnRzIHdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjoyOC40MjcyODE2MjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjU1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xNj1pZiBJTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMTctXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00NS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NDpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiUkRNQS9DTVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTcxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjcyOmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNfQ09ORklHRlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4MTpjb25maWcgSU5GSU5JQkFORF9WSVJUX0RNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTgyLVxcdGRlZl9ib29sICFISUdITUVNXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjI4LjQ3Njk0MzEwMVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY5OTYyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uOlxuXG4qKk5hdmlnYXRpbmcgSW5maW5pYmFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBgSU5GSU5JQkFORGAgcmVsaWVzIG9uIGEgZmV3IG90aGVyIHRoaW5ncy4gTGV0IG1lIHF1aWNrbHkgcmVjYXA6IGBIQVNfSU9NRU1gLCBgTkVUYCwgYElORVRgLCBhbmQgYG1gLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBpdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHN1cmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGFzIGNvbXBsZXggYXMgSW5maW5pYmFuZC4gSXQncyB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcsIGFuZCB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudCBvZiB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgaG93IHRoZSBrZXJuZWwgaXMgZ29pbmcgdG8gaGFuZGxlIG1lbW9yeSBtYW5hZ2VtZW50LCBuZXR3b3JraW5nIGxheWVycywgYW5kIHRob3NlIHNwZWNpZmljIG5ldHdvcmtpbmcgcHJvdG9jb2xzLCB0byBlbnN1cmUgcHJvcGVyIEluZmluaWJhbmQgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIxMCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjMxLjg0NjkwODEzMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBJTkZJTklCQU5EXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiAhQUxQSEFcXG4gICA4OlxcdFxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbiAgIDk6XFx0XFx0c2VsZWN0IElSUV9QT0xMXFxuICAxMDpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIENvcmUgc3VwcG9ydCBmb3IgSW5maW5pQmFuZCAoSUIpLiAgTWFrZSBzdXJlIHRvIGFsc28gc2VsZWN0XFxuICAxMzpcXHRcXHQgIGFueSBwcm90b2NvbHMgeW91IHdpc2ggdG8gdXNlIGFzIHdlbGwgYXMgZHJpdmVycyBmb3IgeW91clxcbiAgMTQ6XFx0XFx0ICBJbmZpbmlCYW5kIGhhcmR3YXJlLlxcbiAgMTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjMxLjg0Njk2ODgxMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAwNTY4NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgZmllbGQ6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBDb25kaXRpb25hbHMqKlxuXG5SaWdodCwgc28gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEknbSBzZWVpbmcgdGhhdCB0aGUgYElORklOSUJBTkRgIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGEgbnVtYmVyIG9mIGtleSBmZWF0dXJlcyBiZWluZyBlbmFibGVkOiBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYC4gSXQncyBhbHNvIGV4cGxpY2l0bHkgZXhjbHVkZWQgb24gYEFMUEhBYCBhcmNoaXRlY3R1cmVzLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgaGlzdG9yaWNhbCBjb250ZXh0IG9mIEluZmluaUJhbmQgc3VwcG9ydC4gVGhhdCdzIGFsbCBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBhIHR5cGljYWwgZGVwZW5kZW5jeSBjaGFpbi4gTm93LCBJJ20gc2hpZnRpbmcgbXkgZm9jdXMgYW5kIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBESUJTYCBkZXBlbmRzIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgdHJlZTsga25vd2luZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHN5c3RlbSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjY0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1MjozNS4wNDc1MzkxMDRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRjb25maWcgRElCU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XFxuICAgNzpcXHRcXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXFxuICAgODpcXHRcXHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuICAxMTpcXHRcXHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cXG4gIDEyOlxcdFxcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBESUJTX0xPXFxuICAxNTpcXHRcXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjM1LjA0NzYxMTcyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYwMzM5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgRElCUyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBESUJTYCBoZXJlLCBhbmQgZmlyc3QgdGhpbmcgSSBub3RlIGlzIHRoYXQgaXQncyBpbmRlcGVuZGVudCwgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcG90ZW50aWFsIHBvcnRhYmlsaXR5IGFuZCBtaW5pbWFsIGludGVncmF0aW9uIGNvbXBsZXhpdHkuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbnMgaXQgaGluZ2VzIG9uLiBMb29rcyBsaWtlIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIGFyZSBhbGwgcHJvcGVybHkgY29uZmlndXJlZC5cblxuTXkgZm9jdXMgcmlnaHQgbm93LCB0aG91Z2gsIGlzIG9uIHRob3NlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gaGFuZGxpbmcgbWVzc2FnZXMsIHNwZWNpZmljYWxseSBgc21jX3J4X3JlY3Ztc2dgLCBgc21jX3JlY3Ztc2dgLCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIExldCdzIGRpZyBpbnRvIGBzbWNfcnhfcmVjdm1zZ2AuIE9rYXksIGl0J3MgKm5vdCogc3RhdGljLCBzbyBpdCdzIHByb2JhYmx5IGNhbGxhYmxlIGZyb20gZWxzZXdoZXJlLiBBbmQgeWVwLCBpdCdzIGV4cG9ydGVkIGluIGBuZXQvc21jL3NtY19yeC5oYCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gTm93IGZvciB0aGUgb3RoZXIgdHdvLCBgc21jX3JlY3Ztc2dgIGFuZCBgc21jX3NwbGljZV9yZWFkYC4uLiBhaCwgdGhleSdyZSBkZWZpbmVkIGluIGBuZXQvc21jL2FmX3NtYy5jYC4gR29vZCwgdGhhdCBnaXZlcyBtZSBhIGNsZWFyIGlkZWEgb2Ygd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgbGllcyBhbmQgaG93IHRoZXNlIHBhcnRzIGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MzkuMTA3OTU0NjM4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTkxMzM5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3JlY3Ztc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9hZl9zbWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL2FmX3NtYy5jPTI3OTc9aW50IHNtY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjgzNC1cXG5uZXQvc21jL2FmX3NtYy5jOjI4MzU6aW50IHNtY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvc21jL2FmX3NtYy5jLTI4MzYtXFx0XFx0aW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz0zMzMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzM0Ni1cXHQuc2VuZG1zZ1xcdD0gc21jX3NlbmRtc2csXFxubmV0L3NtYy9hZl9zbWMuYzozMzQ3OlxcdC5yZWN2bXNnXFx0PSBzbWNfcmVjdm1zZyxcXG5uZXQvc21jL2FmX3NtYy5jLTMzNDgtXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6MzkuODA3MDk0MDgxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTk4MzM0OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlF1aWNrIE5vdGUgb24gYHNtY19zcGxpY2VfcmVhZGAgTG9jYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc21jX3NwbGljZV9yZWFkYCBmdW5jdGlvbi4gQW5kIGEgcXVpY2sgY2hlY2sgaW4gbXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIHNvdXJjZSBjb2RlIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHdoZXJlIHRvIGZpbmQgaXQuIFllcCwgaXQncyBhbHNvIG5lc3RsZWQgd2l0aGluIHRoZSBgbmV0L3NtYy9hZl9zbWMuY2AgZmlsZS4gTm90aGluZyB1bnVzdWFsIHRoZXJlLCB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBzZWUgaXQgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgdGhlIFNNQyBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gVGhhdCBjb25maXJtcyBteSBleGlzdGluZyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhcmNoaXRlY3R1cmUuIExldCdzIHNlZSBpZiB0aGlzIGlzIGFsbCwgb3IgaWYgdGhlcmUgaXMgYW5vdGhlciBmdW5jdGlvbiBjYWxsZWQgc29tZXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1Mjo0My4yNjY5MzAzODlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTI0NjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19zcGxpY2VfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL2FmX3NtYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9MzE5Nz1pbnQgc21jX2lvY3RsKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMyODMtICovXFxubmV0L3NtYy9hZl9zbWMuYzozMjg0OnNzaXplX3Qgc21jX3NwbGljZV9yZWFkKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvZmZfdCAqcHBvcyxcXG5uZXQvc21jL2FmX3NtYy5jLTMyODUtXFx0XFx0XFx0c3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGxlbixcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MzMzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzbWNfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMzNDgtXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvc21jL2FmX3NtYy5jOjMzNDk6XFx0LnNwbGljZV9yZWFkXFx0PSBzbWNfc3BsaWNlX3JlYWQsXFxubmV0L3NtYy9hZl9zbWMuYy0zMzUwLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjQzLjMxNDA1OTAxN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTk0NzMyOTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0OiBgc21jX3J4X3JlY3Ztc2dgIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIG5ldyBwYXRjaCB0byByZXZpZXcsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGFkZHJlc3NlcyBhIGNyaXRpY2FsIGlzc3VlIHdpdGhpbiB0aGUgYHNtY19yeF9yZWN2bXNnYCBmdW5jdGlvbi4gVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IGBzcGxpY2VfdG9fcGlwZWAgaXNuJ3QgY29uc3VtaW5nIGFzIG11Y2ggZGF0YSBhcyBpdCdzIGJlaW5nIG9mZmVyZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBvciBldmVuIG92ZXJmbG93cyBpZiBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCBsb2dpYywgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5UaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhpcyB2dWxuZXJhYmlsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBgc3BsaWNlKClgIHN5c3RlbSBjYWxsIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBhbiBTTUMgc29ja2V0LiBUaGF0J3MgYSBodWdlIHdpbiBpbiB0ZXJtcyBvZiBmdXp6aW5nIHBvdGVudGlhbCEgVGhpcyBtYWtlcyBpdCBhIHBlcmZlY3QgdGFyZ2V0IGZvciBjb21wcmVoZW5zaXZlIGZ1enppbmcgY2FtcGFpZ25zIGJlY2F1c2Ugd2UgY2FuIHJlYWNoIHRoaXMgY29kZSBmcm9tIG91dHNpZGUgdGhlIGtlcm5lbC5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgc3ltYm9sczogYHNtY19yeF9yZWN2bXNnYCAob2J2aW91c2x5KSwgYnV0IGFsc28gYHNtY19yZWN2bXNnYCBhbmQgYHNtY19zcGxpY2VfcmVhZGAuIFRob3NlIGFyZSBsaWtlbHkgaW52b2x2ZWQgaW4gdGhlIGRhdGEgcGF0aC4gSSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBteSB0ZXN0IGVudmlyb25tZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlIGtlcm5lbCBvcHRpb25zOiBgU01DYCwgYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBlbmFibGVkIGFuZCBleGVyY2lzZWQuXG5cbkFscmlnaHQsIHRpbWUgdG8gc2V0IHVwIGFuZCBydW4gc29tZSB0ZXN0czsgSSdsbCBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4MiwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NDguMzA4Nzk0NDA1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4Nzg3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiRElCU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19yeF9yZWN2bXNnXCIsXG4gICAgXCJzbWNfcmVjdm1zZ1wiLFxuICAgIFwic21jX3NwbGljZV9yZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVuIGNhbGxlZCBmcm9tIGBzbWNfc3BsaWNlX3JlYWRgICh3aGVyZSBgbXNnYCBpcyBOVUxMKSBhbmQgYHNwbGljZV90b19waXBlYCB0YWtlcyBsZXNzIGRhdGEgdGhhbiBvZmZlcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU01DIHByb3RvY29sIGxvZ2ljLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBzcGxpY2UoKWAgb24gYW4gU01DIHNvY2tldC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORVRcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfcnhfcmVjdm1zZ1wiLFxuICAgIFwic21jX3JlY3Ztc2dcIixcbiAgICBcInNtY19zcGxpY2VfcmVhZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlbiBjYWxsZWQgZnJvbSBgc21jX3NwbGljZV9yZWFkYCAod2hlcmUgYG1zZ2AgaXMgTlVMTCkgYW5kIGBzcGxpY2VfdG9fcGlwZWAgdGFrZXMgbGVzcyBkYXRhIHRoYW4gb2ZmZXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNNQyBwcm90b2NvbCBsb2dpYywgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgc3BsaWNlKClgIG9uIGFuIFNNQyBzb2NrZXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjQ4LjM3NzY3OTY5N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NzY2ODA1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1Mjo0OC4zNzgxMTc1MDdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjE4NzYyMzc0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBzbWNfcnhfcmVjdm1zZ2Agd2hlcmUgYSBwYXJ0aWFsIHNwbGljZSBvcGVyYXRpb24gKHdoZW4gYHNtY19yeF9zcGxpY2VgIHJldHVybnMgZmV3ZXIgYnl0ZXMgdGhhbiBgY2h1bmtfbGVuYCkgd291bGQgaW5jb3JyZWN0bHkgYWR2YW5jZSB0aGUgY29uc3VtZXIgY3Vyc29yIGJ5IHRoZSBmdWxsIGBjaHVua19sZW5gLiBUaGlzIGNhdXNlZCB0aGUgcmVhZGVyIHRvIHNraXAgb3ZlciB1bnJlYWQgZGF0YSwgZWZmZWN0aXZlbHkgZHJvcHBpbmcgaXQuIFRoZSBmaXggcHJvcGVybHkgYWNjb3VudHMgZm9yIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNwbGljZWQgYW5kIHN0b3BzIGFkdmFuY2luZyB0aGUgY3Vyc29yIHBhc3QgdGhlIGNvbnN1bWVkIGRhdGEuXFxuXFxuVGhpcyBidWcgbGVhZHMgdG8gZGF0YSBsb3NzIGFuZCBpbmNvcnJlY3Qgc3RyZWFtIHN0YXRlLCBidXQgaXQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIG9yIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgZGF0YSBiZWluZyBza2lwcGVkIGlzIHZhbGlkIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yaywgYW5kIGFkdmFuY2luZyB0aGUgY3Vyc29yIG1lcmVseSBtb3ZlcyB0aGUgcmVhZCBwb2ludGVyIGZvcndhcmQgd2l0aGluIHRoZSB2YWxpZCBkYXRhIHJhbmdlLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBidWZmZXIgYWxsb2NhdGlvbnMgaW52b2x2ZWQuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgYW5kIGluZm8tbGVha3MsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgdGVzdGluZyBhbmQgZnV6emluZyAoaW5jbHVkaW5nIEtBU0FOKSBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3OGI3Zjk4ZTRkYjZlYmZhMGU4ZmQ2NDlkYjJhNjdkMGYzZjFkODY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMDk6NTE6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19yeC5jIGIvbmV0L3NtYy9zbWNfcnguY1xuaW5kZXggNWM5ZTRkOGI1N2RlNC4uZDk1MWRiZThlZWMzYyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3J4LmNcbisrKyBiL25ldC9zbWMvc21jX3J4LmNcbkBAIC00ODgsNiArNDg4LDI0IEBAIGludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxuIFx0XHRcdFx0XHRcdHJlYWRfZG9uZSA9IC1FRkFVTFQ7XG4gXHRcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdFx0fVxuK1x0XHRcdFx0Lyogc3BsaWNlX3RvX3BpcGUoKSB0YWtlcyBvbmx5IHdoYXQgdGhlIHBpcGVcbitcdFx0XHRcdCAqIGhhcyByb29tIGZvciwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB3YXNcbitcdFx0XHRcdCAqIG9mZmVyZWQsIG9yIG5vdGhpbmcuIEFjY291bnQgd2hhdCBpdCB0b29rXG4rXHRcdFx0XHQgKiBhbmQgc3RvcDogY3JlZGl0aW5nIHRoZSB3aG9sZSBjaHVuayB3b3VsZFxuK1x0XHRcdFx0ICogYWR2YW5jZSB0aGUgY29uc3VtZXIgcGFzdCBkYXRhIHRoZSByZWFkZXJcbitcdFx0XHRcdCAqIG5ldmVyIHJlY2VpdmVkLlxuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRpZiAoIW1zZyBcdTAwMjZcdTAwMjYgcmMgXHUwMDNjIGNodW5rX2xlbikge1xuK1x0XHRcdFx0XHRpZiAoIXJjKSB7XG4rXHRcdFx0XHRcdFx0aWYgKCFyZWFkX2RvbmUpXG4rXHRcdFx0XHRcdFx0XHRyZWFkX2RvbmUgPSAtRUFHQUlOO1xuK1x0XHRcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdFx0XHR9XG4rXHRcdFx0XHRcdGNvcHlsZW4gPSBjaHVua19sZW5fc3VtIC0gY2h1bmtfbGVuICsgcmM7XG4rXHRcdFx0XHRcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xuK1x0XHRcdFx0XHRyZWFkX2RvbmUgKz0gcmM7XG4rXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0fVxuIFx0XHRcdH1cbiBcdFx0XHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XG4gXHRcdFx0cmVhZF9kb25lICs9IGNodW5rX2xlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUyOjQ4LjM3ODExODI1N1oiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQyMTk3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBTTUMgUlggT3B0aW1pemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgYHNtY19yeF9yZWN2bXNnYCBpbiBgbmV0L3NtYy9zbWNfcnguY2AuIFJpZ2h0IGF3YXksIGl0IHNlZW1zIHRvIGJlIG9wdGltaXppbmcgdGhlIHJlY2VpdmUgcGF0aC4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBhIGNvbmRpdGlvbmFsIGNoZWNrOiBgIW1zZyBcdTAwMjZcdTAwMjYgcmMgXHUwMDNjIGNodW5rX2xlbmAgYWZ0ZXIgd2hhdCdzIGxpa2VseSBhIGBzcGxpY2VfdG9fcGlwZWAgY2FsbCwgZ2l2ZW4gdGhlIHN1cnJvdW5kaW5nIGNvbW1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzOiBhIG51bGwgYG1zZ2AgcG9pbnRlciBsaWtlbHkgc2lnbmlmaWVzIGEgc3BsaWNlIG9wZXJhdGlvbiwgcHJvYmFibHkgYWltaW5nIGZvciB6ZXJvLWNvcHkgZGF0YSB0cmFuc2Zlci4gVGhlIGFkZGVkIGNoZWNrIHByb2JhYmx5IGVuc3VyZXMgdGhhdCBpZiB0aGUgc3BsaWNlIG9wZXJhdGlvbiBkaWRuJ3QgZnVsbHkgbW92ZSBhbGwgZGF0YSwgd2UgZG9uJ3QgcHJvY2VlZCB3aXRoIHNvbWV0aGluZyB0aGF0IGNvdWxkIGxlYWQgdG8gZXJyb3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gYXJvdW5kIGl0IHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBMZXQgbWUgZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBjb250ZXh0IHRvIGZ1bGx5IGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgaXQncyBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgcGVyZm9ybWFuY2UgYm90dGxlbmVjayBvciBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NTIuMTIwMzE4MzMzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQwMzQ2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX3J4X3JlY3Ztc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfcnguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19yeC5jPTI5MD1zdGF0aWMgaW50IHNtY19yeF9yZWN2X3VyZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zMzMtXFxubmV0L3NtYy9zbWNfcnguYzozMzQ6c3RhdGljIGJvb2wgc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHNpemVfdCBwZWVrZWQpXFxubmV0L3NtYy9zbWNfcnguYy0zMzUte1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy0zNDUtXFxubmV0L3NtYy9zbWNfcnguYzozNDY6Lyogc21jX3J4X3JlY3Ztc2cgLSByZWNlaXZlIGRhdGEgZnJvbSBSTUJFXFxubmV0L3NtYy9zbWNfcnguYy0zNDctICogQG1zZzpcXHRjb3B5IGRhdGEgdG8gcmVjZWl2ZSBidWZmZXJcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMzUyLSAqL1xcbm5ldC9zbWMvc21jX3J4LmM6MzUzOmludCBzbWNfcnhfcmVjdm1zZyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9zbWMvc21jX3J4LmMtMzU0LVxcdFxcdCAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsIHNpemVfdCBsZW4sIGludCBmbGFncylcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtMzk1LVxcbm5ldC9zbWMvc21jX3J4LmM6Mzk2OlxcdFxcdGlmIChzbWNfcnhfcmVjdm1zZ19kYXRhX2F2YWlsYWJsZShzbWMsIHBlZWtlZF9ieXRlcykpXFxubmV0L3NtYy9zbWNfcnguYy0zOTctXFx0XFx0XFx0Z290byBjb3B5O1xcbi0tXFxubmV0L3NtYy9zbWNfcnguYy00MDAtXFx0XFx0XFx0Lyogc21jX2NkY19tc2dfcmVjdl9hY3Rpb24oKSBjb3VsZCBoYXZlIHJ1biBhZnRlclxcbm5ldC9zbWMvc21jX3J4LmM6NDAxOlxcdFxcdFxcdCAqIGFib3ZlIHNtY19yeF9yZWN2bXNnX2RhdGFfYXZhaWxhYmxlKClcXG5uZXQvc21jL3NtY19yeC5jLTQwMi1cXHRcXHRcXHQgKi9cXG5uZXQvc21jL3NtY19yeC5jOjQwMzpcXHRcXHRcXHRpZiAoc21jX3J4X3JlY3Ztc2dfZGF0YV9hdmFpbGFibGUoc21jLCBwZWVrZWRfYnl0ZXMpKVxcbm5ldC9zbWMvc21jX3J4LmMtNDA0LVxcdFxcdFxcdFxcdGdvdG8gY29weTtcXG4tLVxcbm5ldC9zbWMvc21jX3J4LmMtNTMzLVxcbm5ldC9zbWMvc21jX3J4LmM6NTM0OlxcdFxcdHRyYWNlX3NtY19yeF9yZWN2bXNnKHNtYywgY29weWxlbik7XFxubmV0L3NtYy9zbWNfcnguYy01MzUtXFx0fSB3aGlsZSAocmVhZF9yZW1haW5pbmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwOTo1Mjo1Mi42MjQzNTgxMDJaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzODI5MjczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBzbWNfcnhfcmVjdm1zZ2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBzbWNfcnhfcmVjdm1zZ2AgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBsaW5lcyA0NjAgdGhyb3VnaCA1MjAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVjZWl2ZSBwYXRoIGlzIGhhbmRsaW5nIHRoZSBzb2NrZXQgbWVzc2FnZSwgZXNwZWNpYWxseSB0aGUgZGV0YWlscyBvZiBkYXRhIHJlY2VwdGlvbiB3aXRoaW4gdGhpcyBzcGVjaWZpYyBzZWN0aW9uIG9mIGNvZGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGxvb2tpbmcgZm9yIHRoZSBpbnRyaWNhY2llcyBvZiBlcnJvciBoYW5kbGluZywgYnVmZmVyIG1hbmFnZW1lbnQsIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aXRoaW4gdGhpcyBjcml0aWNhbCBzZWN0aW9uLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHNvY2tldCBzdGF0ZSBjaGFuZ2VzLiBJcyB0aGVyZSBhbnl0aGluZyB1bnVzdWFsIG9yIGluZWZmaWNpZW50IGhhcHBlbmluZz8gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NTUuOTYyNjUzNDI5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvc21jX3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdFxcdGlmIChzcGxieXRlcylcXG4gNDYxOlxcdFxcdFxcdFxcdHNtY19jdXJzX2FkZChjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuLCBcXHUwMDI2Y29ucywgc3BsYnl0ZXMpO1xcbiA0NjI6XFx0XFx0XFx0aWYgKGNvbm4tXFx1MDAzZXVyZ19zdGF0ZSA9PSBTTUNfVVJHX1ZBTElEIFxcdTAwMjZcXHUwMDI2XFxuIDQ2MzpcXHRcXHRcXHQgICAgc29ja19mbGFnKFxcdTAwMjZzbWMtXFx1MDAzZXNrLCBTT0NLX1VSR0lOTElORSkgXFx1MDAyNlxcdTAwMjZcXG4gNDY0OlxcdFxcdFxcdCAgICByZWFkYWJsZSBcXHUwMDNlIDEpXFxuIDQ2NTpcXHRcXHRcXHRcXHRyZWFkYWJsZS0tO1xcdC8qIGFsd2F5cyBzdG9wIGF0IHVyZ2VudCBCeXRlICovXFxuIDQ2NjpcXHRcXHRcXHQvKiBub3QgbW9yZSB0aGFuIHdoYXQgdXNlciBzcGFjZSBhc2tlZCBmb3IgKi9cXG4gNDY3OlxcdFxcdFxcdGNvcHlsZW4gPSBtaW5fdChzaXplX3QsIHJlYWRfcmVtYWluaW5nLCByZWFkYWJsZSk7XFxuIDQ2ODpcXHRcXHRcXHQvKiBkZXRlcm1pbmUgY2h1bmtzIHdoZXJlIHRvIHJlYWQgZnJvbSByY3ZidWYgKi9cXG4gNDY5OlxcdFxcdFxcdC8qIGVpdGhlciB1bndyYXBwZWQgY2FzZSwgb3IgMXN0IGNodW5rIG9mIHdyYXBwZWQgY2FzZSAqL1xcbiA0NzA6XFx0XFx0XFx0Y2h1bmtfbGVuID0gbWluX3Qoc2l6ZV90LCBjb3B5bGVuLCBjb25uLVxcdTAwM2VybWJfZGVzYy1cXHUwMDNlbGVuIC1cXG4gNDcxOlxcdFxcdFxcdFxcdFxcdCAgY29ucy5jb3VudCk7XFxuIDQ3MjpcXHRcXHRcXHRjaHVua19sZW5fc3VtID0gY2h1bmtfbGVuO1xcbiA0NzM6XFx0XFx0XFx0Y2h1bmtfb2ZmID0gY29ucy5jb3VudDtcXG4gNDc0OlxcdFxcdFxcdHNtY19ybWJfc3luY19zZ19mb3JfY3B1KGNvbm4pO1xcbiA0NzU6XFx0XFx0XFx0Zm9yIChjaHVuayA9IDA7IGNodW5rIFxcdTAwM2MgMjsgY2h1bmsrKykge1xcbiA0NzY6XFx0XFx0XFx0XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBNU0dfVFJVTkMpKSB7XFxuIDQ3NzpcXHRcXHRcXHRcXHRcXHRpZiAobXNnKSB7XFxuIDQ3ODpcXHRcXHRcXHRcXHRcXHRcXHRyYyA9IG1lbWNweV90b19tc2cobXNnLCByY3ZidWZfYmFzZSArXFxuIDQ3OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBjaHVua19vZmYsXFxuIDQ4MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBjaHVua19sZW4pO1xcbiA0ODE6XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4gNDgyOlxcdFxcdFxcdFxcdFxcdFxcdHJjID0gc21jX3J4X3NwbGljZShwaXBlLCByY3ZidWZfYmFzZSArXFxuIDQ4MzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjaHVua19vZmYsIGNodW5rX2xlbixcXG4gNDg0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHNtYyk7XFxuIDQ4NTpcXHRcXHRcXHRcXHRcXHR9XFxuIDQ4NjpcXHRcXHRcXHRcXHRcXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuIDQ4NzpcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIXJlYWRfZG9uZSlcXG4gNDg4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHJlYWRfZG9uZSA9IC1FRkFVTFQ7XFxuIDQ4OTpcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDkwOlxcdFxcdFxcdFxcdFxcdH1cXG4gNDkxOlxcdFxcdFxcdFxcdFxcdC8qIHNwbGljZV90b19waXBlKCkgdGFrZXMgb25seSB3aGF0IHRoZSBwaXBlXFxuIDQ5MjpcXHRcXHRcXHRcXHRcXHQgKiBoYXMgcm9vbSBmb3IsIHdoaWNoIG1heSBiZSBsZXNzIHRoYW4gd2FzXFxuIDQ5MzpcXHRcXHRcXHRcXHRcXHQgKiBvZmZlcmVkLCBvciBub3RoaW5nLiBBY2NvdW50IHdoYXQgaXQgdG9va1xcbiA0OTQ6XFx0XFx0XFx0XFx0XFx0ICogYW5kIHN0b3A6IGNyZWRpdGluZyB0aGUgd2hvbGUgY2h1bmsgd291bGRcXG4gNDk1OlxcdFxcdFxcdFxcdFxcdCAqIGFkdmFuY2UgdGhlIGNvbnN1bWVyIHBhc3QgZGF0YSB0aGUgcmVhZGVyXFxuIDQ5NjpcXHRcXHRcXHRcXHRcXHQgKiBuZXZlciByZWNlaXZlZC5cXG4gNDk3OlxcdFxcdFxcdFxcdFxcdCAqL1xcbiA0OTg6XFx0XFx0XFx0XFx0XFx0aWYgKCFtc2cgXFx1MDAyNlxcdTAwMjYgcmMgXFx1MDAzYyBjaHVua19sZW4pIHtcXG4gNDk5OlxcdFxcdFxcdFxcdFxcdFxcdGlmICghcmMpIHtcXG4gNTAwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICghcmVhZF9kb25lKVxcbiA1MDE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cmVhZF9kb25lID0gLUVBR0FJTjtcXG4gNTAyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA1MDM6XFx0XFx0XFx0XFx0XFx0XFx0fVxcbiA1MDQ6XFx0XFx0XFx0XFx0XFx0XFx0Y29weWxlbiA9IGNodW5rX2xlbl9zdW0gLSBjaHVua19sZW4gKyByYztcXG4gNTA1OlxcdFxcdFxcdFxcdFxcdFxcdHJlYWRfcmVtYWluaW5nIC09IHJjO1xcbiA1MDY6XFx0XFx0XFx0XFx0XFx0XFx0cmVhZF9kb25lICs9IHJjO1xcbiA1MDc6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUwODpcXHRcXHRcXHRcXHRcXHR9XFxuIDUwOTpcXHRcXHRcXHRcXHR9XFxuIDUxMDpcXHRcXHRcXHRcXHRyZWFkX3JlbWFpbmluZyAtPSBjaHVua19sZW47XFxuIDUxMTpcXHRcXHRcXHRcXHRyZWFkX2RvbmUgKz0gY2h1bmtfbGVuO1xcbiA1MTI6XFx0XFx0XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgTVNHX1BFRUspXFxuIDUxMzpcXHRcXHRcXHRcXHRcXHRwZWVrZWRfYnl0ZXMgKz0gY2h1bmtfbGVuO1xcbiA1MTQ6XFx0XFxuIDUxNTpcXHRcXHRcXHRcXHRpZiAoY2h1bmtfbGVuX3N1bSA9PSBjb3B5bGVuKVxcbiA1MTY6XFx0XFx0XFx0XFx0XFx0YnJlYWs7IC8qIGVpdGhlciBvbiAxc3Qgb3IgMm5kIGl0ZXJhdGlvbiAqL1xcbiA1MTc6XFx0XFx0XFx0XFx0LyogcHJlcGFyZSBuZXh0ICg9PSAybmQpIGl0ZXJhdGlvbiAqL1xcbiA1MTg6XFx0XFx0XFx0XFx0Y2h1bmtfbGVuID0gY29weWxlbiAtIGNodW5rX2xlbjsgLyogcmVtYWluZGVyICovXFxuIDUxOTpcXHRcXHRcXHRcXHRjaHVua19sZW5fc3VtICs9IGNodW5rX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDk6NTI6NTUuOTYyNzQ2NDA5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MjkxNTg1ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01DIFJlY2VpdmUgU3BsaWNlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHNtY19yeF9zcGxpY2VgIGFuZCBpdCdzIGRlYWxpbmcgd2l0aCBhIGNsYXNzaWMgZGF0YSBsb3NzIGlzc3VlLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBpcyB0aGF0IGBzcGxpY2VfdG9fcGlwZWAgbWlnaHQgbm90IHRyYW5zZmVyIHRoZSBmdWxsIGFtb3VudCB3ZSByZXF1ZXN0IChgY2h1bmtfbGVuYCkuIEluIHRoZSBvcmlnaW5hbCBjb2RlLCBpZiBgc3BsaWNlX3RvX3BpcGVgIHJldHVybmVkIGEgc2hvcnQgY291bnQsIHRoZSBsb2dpYyAqc3RpbGwqIGFkdmFuY2VkIHRoZSByZWFkIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhhdCdzIGEgaHVnZSByZWQgZmxhZyDigJMgdGhlIGNvbnN1bWVyIHRoaW5rcyBpdCBoYXMgcmVhZCBtb3JlIGRhdGEgdGhhbiBpdCBhY3R1YWxseSBoYXMsIG1lYW5pbmcgd2UncmUgZWZmZWN0aXZlbHkgc2tpcHBpbmcgZGF0YSBpbiB0aGUgcmluZyBidWZmZXIuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiSXMgdGhpcyBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT9cIiBCdXQgb24gY2xvc2VyIGV4YW1pbmF0aW9uLCBuby4gVGhpcyBpc24ndCBhYm91dCB1bmluaXRpYWxpemVkIGJ1ZmZlciBhbGxvY2F0aW9ucyBvciBhbnkgbWVtb3J5IGV4cG9zdXJlIGlzc3Vlcy4gVGhlIHJlY2VpdmUgYnVmZmVyIChgcmN2YnVmX2Jhc2VgKSBpcyBmaWxsZWQgd2l0aCBuZXR3b3JrIGRhdGEsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCAqdmFsaWQqIGRhdGEsIGFsYmVpdCBkYXRhIHRoYXQncyBiZWluZyBpbmNvcnJlY3RseSBza2lwcGVkLiBJZiB0aGUgY3Vyc29yIGlzIGFkdmFuY2VkIHBhc3QgZGF0YSB0aGF0IHRoZSBuZXR3b3JrIGhhc24ndCBwcm92aWRlZCwgdGhlbiB3ZSBjb3VsZCBiZSByZWFkaW5nIGZyb20gaW52YWxpZCBtZW1vcnkuIEhvd2V2ZXIsIHRoZSBsb2dpYyBhZHZhbmNlcyB0aGUgY3Vyc29yIGJ5IGBjb3B5bGVuYCwgd2hpY2ggaXMgYWRqdXN0ZWQgdG8gdGhlIGFjdHVhbCBgcmNgIGJ5dGVzIHRoYXQgYXJlIHNwbGljZWQuXG5cblRoZSBwYXRjaCBjb3JyZWN0cyB0aGlzIGJ5IGFkanVzdGluZyB0aGUgY3Vyc29yIGFkdmFuY2VtZW50LCBgY29weWxlbmAsIGJ5IHRoZSBhY3R1YWwgYW1vdW50IG9mIGRhdGEgc3VjY2Vzc2Z1bGx5IHNwbGljZWQuIFNvIGlmIHdlIHNwbGljZSBsZXNzIHRoYW4gdGhlIGV4cGVjdGVkIGBjaHVua19sZW5gLCB0aGUgYGNvcHlsZW5gIHdpbGwgYmUgYWRqdXN0ZWQgYWNjb3JkaW5nbHksIHN0b3BwaW5nIGFkdmFuY2luZyB0aGUgY29uc3VtZXIgY3Vyc29yIHBhc3QgdGhlIGRhdGEgaXQgaGFzIG5vdCBjb25zdW1lZC4gVGhpcyBpcyBzaW1wbHkgYSBsb2dpYyBlcnJvciB0aGF0IGxlYWRzIHRvIGRyb3BwaW5nIGRhdGEgd2l0aGluIHRoZSB2YWxpZCByYW5nZSBvZiB0aGUgZGF0YSBpbiB0aGUgcmluZyBidWZmZXIuIFRoZSBkYXRhIGlzIGxvc3QuIEl0IGRvZXNuJ3QgcmVhZCBhbnl0aGluZyB1bmluaXRpYWxpemVkLCBpdCBzaW1wbHkgc2tpcHMgb3ZlciB0aGUgZGF0YS5cblxuSSBoYWQgdG8gd2FsayB0aHJvdWdoIHRoZSByaW5nIGJ1ZmZlciBkeW5hbWljcyB0byBiZSBzdXJlLiBUaGUgY29uc3VtZXIgYWR2YW5jZXMgdGhlIGN1cnNvciBhbmQgdGhlIHByb2R1Y2VyIHdpbGwgZXZlbnR1YWxseSBvdmVyd3JpdGUgaXQuIElmIHdlIGRvbid0IGFkdmFuY2UgdGhlIGN1cnNvciBhcHByb3ByaWF0ZWx5LCB0aGUgY29uc3VtZXIgbG9zZXMgZGF0YSwgYnV0IGltcG9ydGFudGx5LCBpdCdzIGRhdGEgdGhhdCB3YXMgKndyaXR0ZW4qIGJ5IHRoZSBuZXR3b3JrLCBub3QgdW5pbml0aWFsaXplZCBnYXJiYWdlLiBSZWFkaW5nIGZyb20gdGhlIHJpbmcgYnVmZmVyIGlzIGFsd2F5cyB3aXRoaW4gdGhlIGJvdW5kcyBvZiBgcmVhZGFibGVgLCB3aGljaCByZXByZXNlbnRzIGRhdGEgdGhlIHByb2R1Y2VyIGhhcyB3cml0dGVuLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgYSBsb2dpYyBidWcsIGJ1dCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgYnVnLiBLTVNBTiBpc24ndCBuZWVkZWQuIFRoZSBwYXRjaCBpcyBjcnVjaWFsIHRvIHByZXZlbnRpbmcgZGF0YSBsb3NzIGFuZCBtYWludGFpbmluZyBjb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IHdlIGNhbiBzdGljayB0byBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBmdXp6aW5nLiBLQVNBTiB3b3VsZCBiZSBzdWZmaWNpZW50IHRvIGNvdmVyIHRoZSBlZGdlIGNhc2VzIG9mIHBvdGVudGlhbGx5IG91dC1vZi1ib3VuZHMgcG9pbnRlciBhcml0aG1ldGljIG9yIGJ1ZmZlciBhY2Nlc3MgaWYgdGhlIGN1cnNvciBsb2dpYyB3YXMgY29tcGxldGVseSBmbGF3ZWQuIEl0J3MgYSBidWcsIGEgZGF0YSBsb3NzIGJ1ZywgYnV0IG5vdCBhIG1lbW9yeSBzYWZldHkgYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjY1LCJPdXRwdXRUb2tlbnMiOjIyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA5OjUzOjEwLjI1NDMzNTczWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgc21jX3J4X3JlY3Ztc2dgIHdoZXJlIGEgcGFydGlhbCBzcGxpY2Ugb3BlcmF0aW9uICh3aGVuIGBzbWNfcnhfc3BsaWNlYCByZXR1cm5zIGZld2VyIGJ5dGVzIHRoYW4gYGNodW5rX2xlbmApIHdvdWxkIGluY29ycmVjdGx5IGFkdmFuY2UgdGhlIGNvbnN1bWVyIGN1cnNvciBieSB0aGUgZnVsbCBgY2h1bmtfbGVuYC4gVGhpcyBjYXVzZWQgdGhlIHJlYWRlciB0byBza2lwIG92ZXIgdW5yZWFkIGRhdGEsIGVmZmVjdGl2ZWx5IGRyb3BwaW5nIGl0LiBUaGUgZml4IHByb3Blcmx5IGFjY291bnRzIGZvciB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyBzcGxpY2VkIGFuZCBzdG9wcyBhZHZhbmNpbmcgdGhlIGN1cnNvciBwYXN0IHRoZSBjb25zdW1lZCBkYXRhLlxcblxcblRoaXMgYnVnIGxlYWRzIHRvIGRhdGEgbG9zcyBhbmQgaW5jb3JyZWN0IHN0cmVhbSBzdGF0ZSwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgcmVhZGluZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGRhdGEgYmVpbmcgc2tpcHBlZCBpcyB2YWxpZCBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmssIGFuZCBhZHZhbmNpbmcgdGhlIGN1cnNvciBtZXJlbHkgbW92ZXMgdGhlIHJlYWQgcG9pbnRlciBmb3J3YXJkIHdpdGhpbiB0aGUgdmFsaWQgZGF0YSByYW5nZS4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGFsbG9jYXRpb25zIGludm9sdmVkLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZGV0ZWN0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGFuZCBpbmZvLWxlYWtzLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIHRlc3RpbmcgYW5kIGZ1enppbmcgKGluY2x1ZGluZyBLQVNBTikgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYHNtY19yeF9yZWN2bXNnYCB3aGVyZSBhIHBhcnRpYWwgc3BsaWNlIG9wZXJhdGlvbiAod2hlbiBgc21jX3J4X3NwbGljZWAgcmV0dXJucyBmZXdlciBieXRlcyB0aGFuIGBjaHVua19sZW5gKSB3b3VsZCBpbmNvcnJlY3RseSBhZHZhbmNlIHRoZSBjb25zdW1lciBjdXJzb3IgYnkgdGhlIGZ1bGwgYGNodW5rX2xlbmAuIFRoaXMgY2F1c2VkIHRoZSByZWFkZXIgdG8gc2tpcCBvdmVyIHVucmVhZCBkYXRhLCBlZmZlY3RpdmVseSBkcm9wcGluZyBpdC4gVGhlIGZpeCBwcm9wZXJseSBhY2NvdW50cyBmb3IgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgc3BsaWNlZCBhbmQgc3RvcHMgYWR2YW5jaW5nIHRoZSBjdXJzb3IgcGFzdCB0aGUgY29uc3VtZWQgZGF0YS5cXG5cXG5UaGlzIGJ1ZyBsZWFkcyB0byBkYXRhIGxvc3MgYW5kIGluY29ycmVjdCBzdHJlYW0gc3RhdGUsIGJ1dCBpdCBkb2VzIG5vdCBpbnZvbHZlIHJlYWRpbmcgb3IgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBkYXRhIGJlaW5nIHNraXBwZWQgaXMgdmFsaWQgZGF0YSByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrLCBhbmQgYWR2YW5jaW5nIHRoZSBjdXJzb3IgbWVyZWx5IG1vdmVzIHRoZSByZWFkIHBvaW50ZXIgZm9yd2FyZCB3aXRoaW4gdGhlIHZhbGlkIGRhdGEgcmFuZ2UuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciBhbGxvY2F0aW9ucyBpbnZvbHZlZC4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBhbmQgaW5mby1sZWFrcywgbmVpdGhlciBvZiB3aGljaCBhcmUgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCB0ZXN0aW5nIGFuZCBmdXp6aW5nIChpbmNsdWRpbmcgS0FTQU4pIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowxvbrc[1] Phase: Succeeded StartedAt: 2026-08-20 09:53:21 +0000 UTC FinishedAt: 2026-08-20 09:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-20 09:53:21 +0000 UTC FinishedAt: 2026-08-20 09:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2] Phase: Succeeded StartedAt: 2026-08-20 09:53:21 +0000 UTC FinishedAt: 2026-08-20 11:28:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-20 09:53:21 +0000 UTC FinishedAt: 2026-08-20 11:28:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-20 09:53:21 +0000 UTC FinishedAt: 2026-08-20 09:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-20 09:53:21 +0000 UTC FinishedAt: 2026-08-20 09:53:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowxvbrc/series-workflowxvbrc-convert-artifact-958851413/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-20 09:53:31 +0000 UTC FinishedAt: 2026-08-20 10:10:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-20 09:53:31 +0000 UTC FinishedAt: 2026-08-20 10:10:07 +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:*bdb09a2b-4635-465a-9f79-d3e6f26cf63e,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-workflowxvbrc/series-workflowxvbrc-convert-artifact-958851413/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": "e6d652f6-ee77-4c83-9d2d-bb94a555ad6d", "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-workflowxvbrc/series-workflowxvbrc-build-action-52597691/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-20 09:53:31 +0000 UTC FinishedAt: 2026-08-20 10:09:57 +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:*bdb09a2b-4635-465a-9f79-d3e6f26cf63e,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-workflowxvbrc/series-workflowxvbrc-convert-artifact-958851413/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": "e6d652f6-ee77-4c83-9d2d-bb94a555ad6d", "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-workflowxvbrc/series-workflowxvbrc-build-action-52597691/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-20 10:10:07 +0000 UTC FinishedAt: 2026-08-20 10:10:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-20 10:10:07 +0000 UTC FinishedAt: 2026-08-20 10:10:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-20 10:10:07 +0000 UTC FinishedAt: 2026-08-20 10:10:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-20 10:10:07 +0000 UTC FinishedAt: 2026-08-20 10:10:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowxvbrc/series-workflowxvbrc-convert-artifact-3222937648/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-20 10:10:17 +0000 UTC FinishedAt: 2026-08-20 10:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-20 10:10:17 +0000 UTC FinishedAt: 2026-08-20 10:12:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e6d652f6-ee77-4c83-9d2d-bb94a555ad6d,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-workflowxvbrc/series-workflowxvbrc-build-action-52597691/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-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-20 10:12:21 +0000 UTC FinishedAt: 2026-08-20 10:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-20 10:12:21 +0000 UTC FinishedAt: 2026-08-20 10:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-20 10:12:21 +0000 UTC FinishedAt: 2026-08-20 10:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-20 10:12:21 +0000 UTC FinishedAt: 2026-08-20 10:28:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bdb09a2b-4635-465a-9f79-d3e6f26cf63e,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-workflowxvbrc/series-workflowxvbrc-convert-artifact-3222937648/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": "a4672a31-8dd4-4474-aab1-15172d4b5c7f", "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-workflowxvbrc/series-workflowxvbrc-build-action-192936492/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-20 10:12:21 +0000 UTC FinishedAt: 2026-08-20 10:28:43 +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:*bdb09a2b-4635-465a-9f79-d3e6f26cf63e,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-workflowxvbrc/series-workflowxvbrc-convert-artifact-3222937648/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": "a4672a31-8dd4-4474-aab1-15172d4b5c7f", "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-workflowxvbrc/series-workflowxvbrc-build-action-192936492/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-20 10:28:53 +0000 UTC FinishedAt: 2026-08-20 10:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-20 10:28:53 +0000 UTC FinishedAt: 2026-08-20 10:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-20 10:28:53 +0000 UTC FinishedAt: 2026-08-20 10:30:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-20 10:28:53 +0000 UTC FinishedAt: 2026-08-20 10:30:49 +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:*a4672a31-8dd4-4474-aab1-15172d4b5c7f,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-workflowxvbrc/series-workflowxvbrc-build-action-192936492/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-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-20 10:30:59 +0000 UTC FinishedAt: 2026-08-20 11:28:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-20 10:30:59 +0000 UTC FinishedAt: 2026-08-20 11:28:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"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:*e6d652f6-ee77-4c83-9d2d-bb94a555ad6d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a4672a31-8dd4-4474-aab1-15172d4b5c7f,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-workflowxvbrc/series-workflowxvbrc-build-action-52597691/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-workflowxvbrc/series-workflowxvbrc-build-action-192936492/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-20 10:30:59 +0000 UTC FinishedAt: 2026-08-20 10:31:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-20 10:30:59 +0000 UTC FinishedAt: 2026-08-20 10:31:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"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-workflowxvbrc/series-workflowxvbrc-convert-artifact-1545844649/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-20 10:30:59 +0000 UTC FinishedAt: 2026-08-20 10:30:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-20 10:30:59 +0000 UTC FinishedAt: 2026-08-20 10:30:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-20 10:30:59 +0000 UTC FinishedAt: 2026-08-20 10:30:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-20 10:31:09 +0000 UTC FinishedAt: 2026-08-20 11:28:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvbrc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_rx_recvmsg","smc_recvmsg","smc_splice_read"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ff2be345d0abc943da8dd8da98151843b750dc","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INET","INFINIBAND","DIBS"],"series_id":"2d481e9f-82cc-48da-9932-1100a1a95689","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-20 10:31:09 +0000 UTC FinishedAt: 2026-08-20 11:28:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e6d652f6-ee77-4c83-9d2d-bb94a555ad6d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a4672a31-8dd4-4474-aab1-15172d4b5c7f,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-workflowxvbrc/series-workflowxvbrc-build-action-52597691/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-workflowxvbrc/series-workflowxvbrc-build-action-192936492/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-workflowxvbrc/series-workflowxvbrc-convert-artifact-1545844649/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,}