Name: series-workflow868v6 Phase: Succeeded StartedAt: 2026-06-26 00:17:46 +0000 UTC FinishedAt: 2026-06-26 01:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[0] Phase: Succeeded StartedAt: 2026-06-26 00:17:46 +0000 UTC FinishedAt: 2026-06-26 00:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 00:17:46 +0000 UTC FinishedAt: 2026-06-26 00:48:24 +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": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "ea872aee-a15c-4edf-a682-2f25ae52e57e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "aggr_recv_addba_req_evt", "ath6kl_wmi_addba_req_event_rx", "aggr_deque_frms" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YWdncl9kZXF1ZV9mcm1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJmMDRjZmZkYWUwMGM3NjdmNWE0NmM3N2QxNmU4ZTdkYzdkZWNlYmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMDo0NzowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5pbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbkBAIC0xNzIyLDEzICYjNDM7MTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXG4gXG4gXHRyeHRpZCA9IFx1MDAyNmFnZ3JfY29ubi1cdTAwM2VyeF90aWRbdGlkXTtcbiBcbi1cdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWClcbi1cdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwmIzM0Oyxcbi1cdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuLVxuIFx0aWYgKHJ4dGlkLVx1MDAzZWFnZ3IpXG4gXHRcdGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShhZ2dyX2Nvbm4sIHRpZCk7XG4gXG4mIzQzO1x0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKSB7XG4mIzQzO1x0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyeHRpZC1cdTAwM2VzZXFfbmV4dCA9IHNlcV9ubztcbiBcdGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtcbiBcdHJ4dGlkLVx1MDAzZWhvbGRfcSA9IGt6YWxsb2MoaG9sZF9xX3NpemUsIEdGUF9LRVJORUwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YWdncl9kZXF1ZV9mcm1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmYwNGNmZmRhZTAwYzc2N2Y1YTQ2Yzc3ZDE2ZThlN2RjN2RlY2ViYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDAwOjQ3OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwppbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCkBAIC0xNzIyLDEzICYjNDM7MTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sCiAKIAlyeHRpZCA9ICZhbXA7YWdncl9jb25uLSZndDtyeF90aWRbdGlkXTsKIAotCWlmICh3aW5fc3ogJmx0OyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6ICZndDsgQUdHUl9XSU5fU1pfTUFYKQotCQlhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgJiMzNDslczogd2luX3N6ICVkLCB0aWQgJWRcbiYjMzQ7LAotCQkJICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTsKLQogCWlmIChyeHRpZC0mZ3Q7YWdncikKIAkJYWdncl9kZWxldGVfdGlkX3N0YXRlKGFnZ3JfY29ubiwgdGlkKTsKIAomIzQzOwlpZiAod2luX3N6ICZsdDsgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiAmZ3Q7IEFHR1JfV0lOX1NaX01BWCkgewomIzQzOwkJYXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsICYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXG4mIzM0OywKJiM0MzsJCQkgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJcnh0aWQtJmd0O3NlcV9uZXh0ID0gc2VxX25vOwogCWhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTsKIAlyeHRpZC0mZ3Q7aG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY2AgdGhhdCBtb2RpZmllcyB0aGUgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBmdW5jdGlvbi4gRXNzZW50aWFsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgcmV0dXJuIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgYmFzZWQgb24gdGhlIHNpemUgb2YgYSB3aW5kb3cgKGB3aW5fc3pgKS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBndWFyZGluZyBhZ2FpbnN0IGB3aW5fc3pgIHZhbHVlcyB0aGF0IGFyZSBvdXRzaWRlIGEgZGVmaW5lZCByYW5nZSAoYEFHR1JfV0lOX1NaX01JTmAgYW5kIGBBR0dSX1dJTl9TWl9NQVhgKS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmFuZ2UgY2hlY2sgZm9yIHRoaXMgd2luZG93IHNpemUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgdGhpcyBpcywgcGFydGljdWxhcmx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoZSBkcml2ZXIgaXMgZm9yIEF0aGVyb3MgQVI2MDAzL0FSNjAwNCA4MDIuMTFuIHdpcmVsZXNzIExBTiBjYXJkcy4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSB3aXRoaW4gUUVNVT8gSWYgc28sIEkgY2FuIHByb2JhYmx5IGZ1enogdGhlIHJlbGV2YW50IGNvZGUuCgpHZW5lcmFsbHksIFVTQiwgU0RJTywgb3IgUENJIGRldmljZXMgYXJlIHRoZSBlYXNpZXN0IHRvIGZ1enogaWYgeW91IGhhdmUgc29tZSBzb3J0IG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBpZiBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzIGRpcmVjdGx5LiBTeXprYWxsZXIgaGFzIFVTQiBhbmQgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBhbmQgaXQgYWxzbyB3b3JrcyB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGdyZWF0LCBidXQsIHRoaXMgaXMgYSBmdWxsbWFjIGRyaXZlciwgbm90IG1hYzgwMjExLCByaWdodD8gTmVlZCB0byBjb25maXJtLiBSaWdodCwgbGV0JiMzOTtzIGNoZWNrIHdoZXRoZXIgdGhpcyB1c2VzIFNESU8gb3IgVVNCLiBJJiMzOTtsbCBncmVwIGZvciBhdGg2a2wgcmVsYXRlZCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTAzOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI9Y29uZmlnIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMC1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEyLVx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTE0PWNvbmZpZyBBVEg2S0xfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgU0RJTyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTYtXHRkZXBlbmRzIG9uIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMC1cdCAgQXRoZXJvcyBBUjYwMDMgYW5kIEFSNjAwNCBjaGlwc2V0cyBydW5uaW5nIG92ZXIgU0RJTy4gSWYgeW91XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XHQgIGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXRoNmtsX3NkaW8uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjItXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yNT1jb25maWcgQVRINktMX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNy1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMyLVx0ICBVU0IuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcdCAgY2FsbGVkIGF0aDZrbF91c2IuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjM2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gQVRINktMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzgtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XHQgIEVuYWJsZXMgYXRoNmtsIGRlYnVnIHN1cHBvcnQsIGluY2x1ZGluZyBkZWJ1ZyBtZXNzYWdlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQwLVx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTQ1PWNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ny1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ5LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTUxLVx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NTc9Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgcmVnZG9tYWluIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01OS1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0FUSDZLTCkgJiM0Mzs9IGF0aDZrbF9jb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjY6YXRoNmtsX2NvcmUteSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNzphdGg2a2xfY29yZS15ICYjNDM7PSBoaWYub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyODphdGg2a2xfY29yZS15ICYjNDM7PSBodGNfbWJveC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI5OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGh0Y19waXBlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzA6YXRoNmtsX2NvcmUteSAmIzQzOz0gYm1pLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzE6YXRoNmtsX2NvcmUteSAmIzQzOz0gY2ZnODAyMTEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMjphdGg2a2xfY29yZS15ICYjNDM7PSBpbml0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzM6YXRoNmtsX2NvcmUteSAmIzQzOz0gbWFpbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM0OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IHR4cngub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNTphdGg2a2xfY29yZS15ICYjNDM7PSB3bWkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNjphdGg2a2xfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzc6YXRoNmtsX2NvcmUteSAmIzQzOz0gcmVjb3Zlcnkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfQVRINktMX1NESU8pICYjNDM7PSBhdGg2a2xfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQzOmF0aDZrbF9zZGlvLXkgJiM0Mzs9IHNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0FUSDZLTF9VU0IpICYjNDM7PSBhdGg2a2xfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDY6YXRoNmtsX3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMzppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZG9uZSBza2lwcGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHNlbmQgYm1pIGRvbmU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ1Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NTpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU3Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byBzZW5kIGdldCB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXHRpZiAoYXItXHUwMDNlaGlmX3R5cGUgPT0gQVRINktMX0hJRl9UWVBFX1VTQikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopdGFyZ19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cdFx0XHRcdFx0ICBzaXplb2YoKnRhcmdfaW5mbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjY1Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKilcdTAwMjZ0YXJnX2luZm8tXHUwMDNldmVyc2lvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjYtXHRcdFx0XHRzaXplb2YodGFyZ19pbmZvLVx1MDAzZXZlcnNpb24pKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3MDpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVjdiB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTcxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXHRcdC8qIERldGVybWluZSBob3cgbWFueSBieXRlcyBhcmUgaW4gdGhlIFRhcmdldCYjMzk7cyB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzY6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTc3LVx0XHRcdFx0ICAgKHU4ICopXHUwMDI2dGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03OS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo4MDpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O3VuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvIGJ5dGUgY291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05NC1cdFx0LyogUmVhZCB0aGUgcmVtYWluZGVyIG9mIHRoZSB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTU6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk2LVx0XHRcdFx0ICAgKCh1OCAqKXRhcmdfaW5mbykgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMDI6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyAoJWQgYnl0ZXMpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAzLVx0XHRcdFx0ICAgdGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O3RhcmdldCBpbmZvICh2ZXI6IDB4JXggdHlwZTogMHgleClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwOS1cdFx0ICAgdGFyZ19pbmZvLVx1MDAzZXZlcnNpb24sIHRhcmdfaW5mby1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTE0OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTIyLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTIzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyNC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEzNDpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzNS1cdFx0ICAgXCYjMzQ7Ym1pIHJlYWQgbWVtb3J5OiBkZXZpY2U6IGFkZHI6IDB4JXgsIGxlbjogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUzOlx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTQtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU2LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1NzpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIHJ4X2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1OC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTk6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjAtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNzA6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgwLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTgxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4Mi1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE5NTpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5Ni1cdFx0ICAgXCYjMzQ7Ym1pIHdyaXRlIG1lbW9yeTogYWRkcjogMHgleCwgbGVuOiAlZFxcblwmIzM0OywgYWRkciwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI1Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjc6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyOC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzNzppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0NC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI0NTpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDYtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNTY6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZXhlY3V0ZTogYWRkcjogMHgleCwgcGFyYW06ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU3LVx0XHQgICBhZGRyLCAqcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjc6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI2OC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjY5Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcwLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzM6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3NTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI4NDppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5MS1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5MjpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTMtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMDM6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2V0IGFwcCBzdGFydDogYWRkcjogMHgleFxcblwmIzM0OywgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzExOlx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTItXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxMzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzIwOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyNy1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMyODpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjktXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMzk6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgcmVhZCBTT0MgcmVnOiBhZGRyOiAweCV4XFxuXCYjMzQ7LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDc6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0OC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzQ5Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUwLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTM6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1NTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM2MzppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzAtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzE6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzcyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzgyOlx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgzLVx0XHQgICBcJiMzNDtibWkgd3JpdGUgU09DIHJlZzogYWRkcjogMHgleCwgcGFyYW06ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTQ6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk2Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MDM6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphciwgdTggKmJ1ZiwgdTMyIGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxMi1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQxMzpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTQtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MjQ6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2VuZCBMWiBkYXRhOiBsZW46ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI1LVx0XHQgICBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDE6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQyLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0MzpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU0OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjEtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NjI6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDYzLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDczOlx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc0LVx0XHQgICBcJiMzNDtibWkgTFogc3RyZWFtIHN0YXJ0OiBhZGRyOiAweCV4KVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDgzOlx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4NTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gc3RhcnQgTFogc3RyZWFtIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODYtXHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDkzOmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDA6XHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUwOTpcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgYnVmLCBsYXN0X3dvcmRfb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMy1cdGlmICh1bmFsaWduZWRfYnl0ZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxNDpcdFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCAodTggKilcdTAwMjZsYXN0X3dvcmQsIDQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTgtXHRcdCAqIFRoaXMgc2VydmVzIG1haW5seSB0byBmbHVzaCBUYXJnZXQgY2FjaGVzLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTk6XHRcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCAweDAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjQ6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1Mjk6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTQ0OnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMTk6c3RydWN0IGF0aDZrbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjIwOnN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjIxLVx0X19sZTMyIGJ5dGVfY291bnQ7ICAgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjY6I2RlZmluZSBhdGg2a2xfYm1pX3dyaXRlX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzAtXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMxOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMyLVx0XHR2ID0gY3B1X3RvX2xlMzIodmFsKTtcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMzOlx0XHRhdGg2a2xfYm1pX3dyaXRlKGFyLCBhZGRyLCAodTggKikgXHUwMDI2diwgc2l6ZW9mKHYpKTtcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNC1cdH0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjM2OiNkZWZpbmUgYXRoNmtsX2JtaV9yZWFkX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDItXHRcdCh2b2lkKSAoY2hlY2tfdHlwZSA9PSB2YWwpO1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQzOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQ0Olx0XHRyZXQgPSBhdGg2a2xfYm1pX3JlYWQoYXIsIGFkZHIsICh1OCAqKSBcdTAwMjZ0bXAsIDQpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ1LVx0XHRpZiAoIXJldClcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTA6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MTp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1Mjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NDppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU1OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU2Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU3OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU4OmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1OTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjAtXHRcdCAgICAgICB1MzIgYWRkciwgdTMyICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MTppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjItXHRcdFx0ICAgICB1MzIgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MzppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjQ6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY1OmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Ni1cdFx0ICAgICAgIHU4ICpidWYsIHUzMiBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjc6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjgtXHRcdFx0ICAgICAgIHUzMiBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY5OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI3MC1cdFx0XHQgICAgIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NTc6c3RydWN0IGF0aDZrbF9jZmc4MDIxMV9tYXRjaF9wcm9iZV9zc2lkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01OC1cdHN0cnVjdCBjZmc4MDIxMV9zc2lkIHNzaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjYyOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3JhdGUgYXRoNmtsX3JhdGVzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjMtXHRSQVRFVEFCX0VOVCgxMCwgMHgxLCAwKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzc6I2RlZmluZSBhdGg2a2xfYV9yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyA0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc4OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXNfc2l6ZSAgICA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzk6I2RlZmluZSBhdGg2a2xfZ19yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgwOiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXNfc2l6ZSAgICAxMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgyOiNkZWZpbmUgYXRoNmtsX2dfaHRjYXAgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4MzojZGVmaW5lIGF0aDZrbF9hX2h0Y2FwIChJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCB8IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODQtXHRcdFx0SUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcdFx0IHwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODc6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfMmdoel9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg4LVx0Q0hBTjJHKDEsIDI0MTIsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTA0OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzVnaHpfYV9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNS1cdENIQU41RygzNiwgMCksIENIQU41Ryg0MCwgMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfMmdoeiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjU6XHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzJnaHpfY2hhbm5lbHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNjpcdC5jaGFubmVscyA9IGF0aDZrbF8yZ2h6X2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNzpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjg6XHQuYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9nX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMC1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzMzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF81Z2h6ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNDpcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfNWdoel9hX2NoYW5uZWxzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzU6XHQuY2hhbm5lbHMgPSBhdGg2a2xfNWdoel9hX2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNjpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzc6XHQuYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9hX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzOS1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ0LS8qIHJldHVybnMgdHJ1ZSBpZiBzY2hlZHVsZWQgc2NhbiB3YXMgc3RvcHBlZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NTpzdGF0aWMgYm9vbCBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDc6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNTc6XHRhdGg2a2xfd21pX2VuYWJsZV9zY2hlZF9zY2FuX2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTYyOnN0YXRpYyB2b2lkIGF0aDZrbF9jZmc4MDIxMV9zc2Nhbl9kaXNhYmxlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjQ6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjUtXHRib29sIHN0b3BwZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NzpcdHN0b3BwZWQgPSBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc1OnN0YXRpYyBpbnQgYXRoNmtsX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ni1cdFx0XHRcdCAgZW51bSBubDgwMjExX3dwYV92ZXJzaW9ucyB3cGFfdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3ODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxODc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6ICV1IG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg4LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk0OnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hdXRoX3R5cGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTUtXHRcdFx0XHRlbnVtIG5sODAyMTFfYXV0aF90eXBlIGF1dGhfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5NzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE0LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMTU6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6IDB4JXggbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18sIGF1dGhfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE2LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjIyOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9jaXBoZXIoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGNpcGhlciwgYm9vbCB1Y2FzdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjI4Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogY2lwaGVyIDB4JXgsIHVjYXN0ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyOS1cdFx0ICAgX19mdW5jX18sIGNpcGhlciwgdWNhc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTctXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1ODpcdFx0YXRoNmtsX2VycihcJiMzNDtjaXBoZXIgMHgleCBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBjaXBoZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1OS1cdFx0cmV0dXJuIC1FTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NTpzdGF0aWMgdm9pZCBhdGg2a2xfc2V0X2tleV9tZ210KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBrZXlfbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBrZXlfbWdtdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg0OnN0YXRpYyBib29sIGF0aDZrbF9jZmc4MDIxMV9yZWFkeShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg2Olx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4OC1cdGlmICghdGVzdF9iaXQoV01JX1JFQURZLCBcdTAwMjZhci1cdTAwM2VmbGFnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4OTpcdFx0YXRoNmtsX2VycihcJiMzNDt3bWkgaXMgbm90IHJlYWR5XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjkzLVx0aWYgKCF0ZXN0X2JpdChXTEFOX0VOQUJMRUQsIFx1MDAyNnZpZi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyOTQ6XHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7d2xhbiBkaXNhYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk1LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDE6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwYV9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDg6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3Jzbl9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTM6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwc19pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjE6c3RhdGljIGludCBhdGg2a2xfc2V0X2Fzc29jX3JlcV9pZXMoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjItXHRcdFx0XHQgICAgc2l6ZV90IGllc19sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjQ6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjUtXHRjb25zdCB1OCAqcG9zO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXRoZXJvcyA2eHh4IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBBdGhlcm9zIDZ4eHggZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGl0IGZvciBmdXp6aW5nLiBJIHNlZSB0d28gbWFpbiBjb25uZWN0aW9uIG1ldGhvZHM6IFVTQiAoQ09ORklHX0FUSDZLTF9VU0IpIGFuZCBTRElPIChDT05GSUdfQVRINktMX1NESU8pLiBUaGUgVVNCIG9wdGlvbiBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkga25vdyBVU0IgZGV2aWNlcyBjYW4gYmUgZnV6emVkIGVmZmVjdGl2ZWx5IHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBkdW1teV9oY2QgYW5kIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgaGF2ZSBleHBlcmllbmNlIHVzaW5nIHRob3NlIHRvb2xzLiBXaGlsZSBTRElPIGZ1enppbmcgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZSwgYW5kIHN5emthbGxlciBoYXMgc29tZSBiYXNpYyBpbmplY3Rpb24gc3VwcG9ydCBmb3IgaXQsIHRoZXJlIGlzbiYjMzk7dCBhIG1hdHVyZSwgZ2VuZXJpYyBTRElPIGZ1enplciBpbiBzeXprYWxsZXIgcmlnaHQgbm93LiBUaGVyZWZvcmUsIFVTQiBzZWVtcyBsaWtlIHRoZSBtb3JlIGRpcmVjdCBhbmQgYWNjZXNzaWJsZSBwYXRoIGZvciBub3cuCgpHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGBDT05GSUdfQVRINktMX1VTQmAuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgdWx0aW1hdGUgZ29hbCBpcyB0byBpZGVudGlmeSBhIHJlYWNoYWJsZSBmdW5jdGlvbiwgYW5kIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgLiBUaGF0JiMzOTtzIGluIGB0eHJ4LmNgLiBMZXQmIzM5O3MgZGl2ZSBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIEkmIzM5O20ga2VlbiB0byBzZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIHRoZSBVU0IgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjI6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05NjMtXHRcdFx0ICAgICB1OCB3aW5fc3opO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2OTg6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5OS1cdFx0XHQgICAgIHU4IHdpbl9zeilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzNTI9c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTc6XHRhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTgtXHRcdFx0XHRsZTE2X3RvX2NwdShjbWQtXHUwMDNlc3Rfc2VxX25vKSwgY21kLVx1MDAzZXdpbl9zeik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1MzIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXTUkgQWRkQkEgUmVxdWVzdCBFdmVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YC4gUmlnaHQsIFdNSSDigJMgV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZS4gVGhhdCYjMzk7cyBob3cgd2UgdGFsayB0byB0aGUgZmlybXdhcmUgb24gdGhpcyB0aGluZy4gQW5kIHNpbmNlIHRoZSBmaXJtd2FyZSYjMzk7cyBvbiB0aGUgVVNCIGRldmljZSwgdGhlIGhvc3QgaXMgZ2V0dGluZyB0aGVzZSBXTUkgbWVzc2FnZXMgKmZyb20qIHRoZSBVU0IuIEhtbeKApiBhIHRob3VnaHQgb2NjdXJzLiBJZiB3ZSYjMzk7cmUgZnV6emluZyB0aGUgVVNCIGRldmljZSwgd2UmIzM5O3JlIGVzc2VudGlhbGx5IGZ1enppbmcgdGhlIFdNSSBpbnRlcmZhY2UgaXRzZWxmLCByaWdodD8gV2UgY2FuIHBvdGVudGlhbGx5IGluamVjdCBjb21wbGV0ZWx5IGFyYml0cmFyeSBXTUkgbWVzc2FnZXMgdG8gdGhlIGhvc3QhIFNvLCBhIGtleSB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIFVTQiByZWNlaXZlIHBhdGguIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVmZm9ydHMuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBkZXRlcm1pbmUgdGhlIG9yaWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9MzMzMz1zdGF0aWMgaW50IGF0aDZrbF93bWlfZ2V0X3Bta2lkX2xpc3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzUyOnN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTMtXHRcdFx0XHRcdCBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9Mzg3Nj1zdGF0aWMgaW50IGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmKHN0cnVjdCB3bWkgKndtaSwgdTE2IGlmX2lkeCwgdTE2IGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjItXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksIFwmIzM0O1dNSV9BRERCQV9SRVFfRVZFTlRJRFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjM5MjM6XHRcdHJldHVybiBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCh3bWksIGRhdGFwLCBsZW4sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjQtXHRjYXNlIFdNSV9ERUxCQV9SRVFfRVZFTlRJRDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI2NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgQ29kZSB2aWEgVVNCIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgdHJhY2VkIHRoaXMgYmFjay4gVGhlIHJlbGV2YW50IGZ1bmN0aW9uIGlzIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBXTUkgZXZlbnRzLiBUaGVzZSBldmVudHMgYXJlLCBhcyBleHBlY3RlZCwgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGRldmljZSBpdHNlbGYuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGlmIHdlIGVtdWxhdGUgYSBVU0IgZGV2aWNlLCB3ZSBjYW4gZmVlZCBpdCBhIGNyYWZ0ZWQgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnQuIFRoZSByZWFsbHkgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHdpbl9zemAgZmllbGQ7IHdlIGNhbiBzZXQgdGhpcyBhcmJpdHJhcmlseS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgc2lnbmFsIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIG1lYW5zIHdlJiMzOTt2ZSBpZGVudGlmaWVkIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCwgYW5kIGl0JiMzOTtzIHByaW1lIHRlcnJpdG9yeSBmb3IgVVNCIGZ1enppbmcuCgpOb3csIGJlZm9yZSB3ZSBnZXQgdG9vIGV4Y2l0ZWQsIGxldCYjMzk7cyBtYWtlIHN1cmUgb3VyIGVudmlyb25tZW50IGlzIHNldHVwIGNvcnJlY3RseS4gV2UgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZDogYENPTkZJR19BVEg2S0xgIGFuZCBjcnVjaWFsbHksIGBDT05GSUdfQVRINktMX1VTQmAuIFdlIG1pZ2h0IGFzIHdlbGwgZW5hYmxlIGBDT05GSUdfQVRINktMX1NESU9gIGZvciBnb29kIG1lYXN1cmUuCgpOZXh0LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBldmVudCBpcyBoYW5kbGVkLiBMZXQmIzM5O3MgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgdGhlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGJlIHdoZXJlIHRoZSBqdWljeSBzdHVmZiBoYXBwZW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjkwOlx0XHRyeHRpZC1cdTAwM2Vob2xkX3Ffc3ogPSAwO1xuMTY5MTpcdFxuMTY5MjpcdFx0a2ZyZWUocnh0aWQtXHUwMDNlaG9sZF9xKTtcbjE2OTM6XHRcdHJ4dGlkLVx1MDAzZWhvbGRfcSA9IE5VTEw7XG4xNjk0Olx0XG4xNjk1Olx0XHRtZW1zZXQoc3RhdHMsIDAsIHNpemVvZihzdHJ1Y3Qgcnh0aWRfc3RhdHMpKTtcbjE2OTY6XHR9XG4xNjk3Olx0XG4xNjk4Olx0dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuMTY5OTpcdFx0XHRcdCAgICAgdTggd2luX3N6KVxuMTcwMDpcdHtcbjE3MDE6XHRcdHN0cnVjdCBhdGg2a2xfc3RhICpzdGE7XG4xNzAyOlx0XHRzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiA9IE5VTEw7XG4xNzAzOlx0XHRzdHJ1Y3Qgcnh0aWQgKnJ4dGlkO1xuMTcwNDpcdFx0dTE2IGhvbGRfcV9zaXplO1xuMTcwNTpcdFx0dTggdGlkLCBhaWQ7XG4xNzA2Olx0XG4xNzA3Olx0XHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xuMTcwODpcdFx0XHRhaWQgPSBhdGg2a2xfZ2V0X2FpZCh0aWRfbXV4KTtcbjE3MDk6XHRcdFx0c3RhID0gYXRoNmtsX2ZpbmRfc3RhX2J5X2FpZCh2aWYtXHUwMDNlYXIsIGFpZCk7XG4xNzEwOlx0XHRcdGlmIChzdGEpXG4xNzExOlx0XHRcdFx0YWdncl9jb25uID0gc3RhLVx1MDAzZWFnZ3JfY29ubjtcbjE3MTI6XHRcdH0gZWxzZSB7XG4xNzEzOlx0XHRcdGFnZ3JfY29ubiA9IHZpZi1cdTAwM2VhZ2dyX2NudHh0LVx1MDAzZWFnZ3JfY29ubjtcbjE3MTQ6XHRcdH1cbjE3MTU6XHRcbjE3MTY6XHRcdGlmICghYWdncl9jb25uKVxuMTcxNzpcdFx0XHRyZXR1cm47XG4xNzE4Olx0XG4xNzE5Olx0XHR0aWQgPSBhdGg2a2xfZ2V0X3RpZCh0aWRfbXV4KTtcbjE3MjA6XHRcdGlmICh0aWQgXHUwMDNlPSBOVU1fT0ZfVElEUylcbjE3MjE6XHRcdFx0cmV0dXJuO1xuMTcyMjpcdFxuMTcyMzpcdFx0cnh0aWQgPSBcdTAwMjZhZ2dyX2Nvbm4tXHUwMDNlcnhfdGlkW3RpZF07XG4xNzI0Olx0XG4xNzI1Olx0XHRpZiAocnh0aWQtXHUwMDNlYWdncilcbjE3MjY6XHRcdFx0YWdncl9kZWxldGVfdGlkX3N0YXRlKGFnZ3JfY29ubiwgdGlkKTtcbjE3Mjc6XHRcbjE3Mjg6XHRcdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xuMTcyOTpcdFx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCYjMzQ7LFxuMTczMDpcdFx0XHRcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XG4xNzMxOlx0XHRcdHJldHVybjtcbjE3MzI6XHRcdH1cbjE3MzM6XHRcbjE3MzQ6XHRcdHJ4dGlkLVx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xuMTczNTpcdFx0aG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpO1xuMTczNjpcdFx0cnh0aWQtXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XG4xNzM3Olx0XHRpZiAoIXJ4dGlkLVx1MDAzZWhvbGRfcSlcbjE3Mzg6XHRcdFx0cmV0dXJuO1xuMTczOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTU5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBZGRyZXNzaW5nIGEgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWUqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0cnlpbmcgdG8gZml4IGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgd2hlbiBgd2luX3N6YCBpcyBvdXQgb2YgYm91bmRzLiBQcmV2aW91c2x5LCB0aGUgY29kZSBqdXN0IGxvZ2dlZCBhIGRlYnVnIG1lc3NhZ2UgYW5kIGtlcHQgZ29pbmcuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnIGJlY2F1c2UgYGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtgIHVzZXMgYHdpbl9zemAgdG8gY2FsY3VsYXRlIHRoZSBhbGxvY2F0aW9uIHNpemUuIENsZWFybHksIGFuIG91dC1vZi1ib3VuZHMgYHdpbl9zemAgY291bGQgbGVhZCB0byBzb21lIG5hc3R5IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24sIGxlYWRpbmcgdG8gY3Jhc2hlcyBvciBzZWN1cml0eSBwcm9ibGVtcy4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoOyBJIHNob3VsZCBkb3VibGUtY2hlY2sgaG93IGBUSURfV0lORE9XX1NaKHdpbl9zeilgIGlzIGRlZmluZWQgYW5kIG9wZXJhdGVzLiBJdCBjb3VsZCBiZSBkb2luZyBzb21lIGNsZXZlciBjbGFtcGluZyBvciB2YWxpZGF0aW9uIHRoYXQgd291bGQgbWFrZSB0aGUgaW5pdGlhbCBjb25jZXJuIG1vb3QsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBHb3R0YSB0cmFjZSB0aGF0IG1hY3JvIGFuZCBtYWtlIHN1cmUgaXQmIzM5O3Mgbm90IHRoZSBzb3VyY2Ugb2YgYW5vdGhlciBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIFRJRF9XSU5ET1dfU1omIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD0xNjY9ZW51bSBhdGg2a2xfaHdfZmxhZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjI3MjojZGVmaW5lIFRJRF9XSU5ET1dfU1ooX3gpICAgKChfeCkgXHUwMDNjXHUwMDNjIDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDg2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgTWVtb3J5IEFsbG9jYXRpb24gQ29uY2VybnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgbWFjcm8sIGFuZCBpdCYjMzk7cyBkZWZpbmVkIGFzIGAod2luX3N6KSAmbHQ7Jmx0OyAxYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGJpdC1zaGlmdGluZy4gVGhhdCYjMzk7cyB1c3VhbGx5IGVmZmljaWVudCwgYnV0IGlzIGl0IGNyZWF0aW5nIGEgcG90ZW50aWFsbHkgbGFyZ2UgbWVtb3J5IGFsbG9jYXRpb24/JiMzNDsgRXNwZWNpYWxseSBzaW5jZSB0aGlzIGB3aW5fc3pgIHBhcmFtZXRlciBpcyBsaWtlbHkgdXNlZCB0byBzaXplIHNvbWUgc29ydCBvZiBidWZmZXIgb3IgZGF0YSBzdHJ1Y3R1cmUuIFRoZSBwb3RlbnRpYWwgZm9yIGEgbGFyZ2Ugc2hpZnQgaXMgY29uY2VybmluZy4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIsIG9yIHJhdGhlciwgSSAqcmVhbGl6ZSosIHRoYXQgYHdpbl9zemAgaXMgYSBgdThgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlciBtYXhlcyBvdXQgYXQgMjU1LiBTbywgdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8gd2l0aCB0aGUgc2hpZnQgaXMgMjU1ICZsdDsmbHQ7IDEsIHdoaWNoIGVxdWFscyA1MTAuIE9rYXksIDUxMC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGZvciBtZW1vcnkgdXNhZ2UuIEkgbmVlZCB0byBtdWx0aXBseSB0aGF0IHZhbHVlLCA1MTAsIGJ5IGBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpYC4gU2luY2UgYHNrYl9ob2xkX3FgIHNlZW1zIGxpa2UgYSByZWFzb25hYmx5IHNpemVkIHN0cnVjdHVyZSwgaXQmIzM5O3MgdW5saWtlbHkgYSA1MTAgKiBgc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKWAgYWxsb2NhdGlvbiBpcyBhIG1ham9yIG1lbW9yeSBob2cuIAoKSG93ZXZlciwgYmVmb3JlIEkgY2FuIGNvbmZpZGVudGx5IHNheSBpdCYjMzk7cyBzYWZlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudC4gSXMgYHdpbl9zemAgdXNlZCBpbiBtb3JlIHBsYWNlcyB0aGFuIGp1c3QgdGhpcyBtYWNybz8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHRyYWNlIHdoZXJlIHRoaXMgYHdpbl9zemAgdmFyaWFibGUgaXMgdXNlZCwgSSBzaG91bGQgY2hlY2sgYHJ4dGlkLSZndDt3aW5fc3pgLCBpdCBtaWdodCBiZSB1c2VkIGVsc2V3aGVyZSBhbmQgaW1wYWN0IG1lbW9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2luX3N6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9MzIzPXN0cnVjdCByeHRpZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzI1LVx0Ym9vbCB0aW1lcl9tb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDozMjY6XHR1MTYgd2luX3N6O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzI3LVx0dTE2IHNlcV9uZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTMzNi1cdCAqIHJlb3JkZXIgZnJhbWVzIGFuZCBpdCYjMzk7cyBhY2Nlc3Mgc2hvdWxkIGFsc28gYmUgcHJvdGVjdGVkLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6MzM3Olx0ICogU29tZSBvZiB0aGUgb3RoZXIgZmllbGRzIGxpa2UgaG9sZF9xX3N6LCB3aW5fc3ogYW5kIGFnZ3IgYXJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0zMzgtXHQgKiBpbml0aWFsaXplZC9yZXNldCB3aGVuIHJlY2VpdmluZyBhZGRiYS9kZWxiYSByZXEsIGFsc28gd2hpbGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05NjI9dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjM6XHRcdFx0ICAgICB1OCB3aW5fc3opO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTY0LXZvaWQgYXRoNmtsX3dha2V1cF9ldmVudCh2b2lkICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTEwNDY9c3RhdGljIHZvaWQgYWdncl9kZXF1ZV9mcm1zKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdnX2Nvbm4sIHU4IHRpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDY2LVx0ICogaW5kZXggcG9zaXRpb24gYXMgaW5kZXggdGhhdCBpcyBqdXN0IHByZXZpb3VzIHRvIHN0YXJ0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA2NzpcdCAqIEFuIGltcCBwb2ludCA6IGlmIHdpbl9zeiBpcyA3LCBmb3Igc2VxX25vIHNwYWNlIG9mIDQwOTUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDY4LVx0ICogdGhlbiwgdGhlcmUgd291bGQgYmUgaG9sZXMgd2hlbiBzZXF1ZW5jZSB3cmFwIGFyb3VuZCBvY2N1cnMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDY5Olx0ICogVGFyZ2V0IHNob3VsZCBqdWRpY2lvdXNseSBjaG9vc2UgdGhlIHdpbl9zeiwgYmFzZWQgb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjEwNzA6XHQgKiB0aGlzIGNvbmRpdGlvbi4gRm9yIDQwOTUsIChUSURfV0lORE9XX1NaID0gMiB4IHdpbl9zelxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA3MTpcdCAqIDIsIDQsIDgsIDE2IHdpbl9zeiB3b3JrcyBmaW5lKS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNzItXHQgKiBXZSBtdXN0IGRlcXVlIGZyb20gXCYjMzQ7aWR4XCYjMzQ7IHRvIFwmIzM0O2lkeF9lbmRcJiMzNDssIGluY2x1ZGluZyBib3RoLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY4Ny1cdHJ4dGlkLVx1MDAzZXRpbWVyX21vbiA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY4ODpcdHJ4dGlkLVx1MDAzZXdpbl9zeiA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjg5LVx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2OTg9dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY5OTpcdFx0XHQgICAgIHU4IHdpbl9zeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzI4Olx0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzI5Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczMDpcdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzQtXHRyeHRpZC1cdTAwM2VzZXFfbmV4dCA9IHNlcV9ubztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3MzU6XHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzM2LVx0cnh0aWQtXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3NDA6XHRyeHRpZC1cdTAwM2V3aW5fc3ogPSB3aW5fc3o7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzQxOlx0cnh0aWQtXHUwMDNlaG9sZF9xX3N6ID0gVElEX1dJTkRPV19TWih3aW5fc3opO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTc0Mi1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnJ4dGlkLVx1MDAzZXEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9MzM1Mj1zdGF0aWMgaW50IGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1Ny1cdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVx1MDAzZXRpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6MzM1ODpcdFx0XHRcdGxlMTZfdG9fY3B1KGNtZC1cdTAwM2VzdF9zZXFfbm8pLCBjbWQtXHUwMDNld2luX3N6KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oPTIxNjU9c3RydWN0IHdtaV9hZGRiYV9yZXFfZXZlbnQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaC0yMTY2LVx0dTggdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaDoyMTY3Olx0dTggd2luX3N6O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaC0yMTY4LVx0X19sZTE2IHN0X3NlcV9ubztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogQUdHUl9XSU5fU1ogUGFyYW1ldGVycyoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7bSBsb29raW5nIGF0IGBBR0dSX1dJTl9TWl9NSU5gIGFuZCBgQUdHUl9XSU5fU1pfTUFYYC4gIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgYXJlIHNldHRpbmcgdXAgYW5kIHdoYXQgaXMgaGFwcGVuaW5nLiAgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgaXMuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhZ2dyZWdhdGlvbiB3aW5kb3cgc2l6ZXMgaGVyZSwgbW9zdCBsaWtlbHkgaW4gYSB0aW1lLXNlcmllcyBjb250ZXh0IG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGV4YWN0IHNwZWNpZmljcyBvZiB0aGVpciBkZWZpbml0aW9uIHdpdGhpbiAqdGhpcyogcGFydGljdWxhciBzeXN0ZW0uIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgbWluaW11bSBhbmQgbWF4aW11bSBmb3IgYSBtb3ZpbmcgYXZlcmFnZSB3aW5kb3csIGEgYnVja2V0aW5nIHN0cmF0ZWd5LCBhIHRpbWUgd2luZG93IGZvciBhbmFseXNpcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBpbXBsaWNhdGlvbnMgZm9yIHJlc291cmNlIGNvbnN1bXB0aW9uLCBhY2N1cmFjeSwgYW5kIGxhdGVuY3kgYXJlIGdvaW5nIHRvIGhpbmdlIGRpcmVjdGx5IG9uIHdoYXQgdGhlc2UgcGFyYW1ldGVycyBjb250cm9sLiBMZXQgbWUgbG9vayBhdCB0aGUgY29kZS9kb2N1bWVudGF0aW9uIGFuZCBzZWUgd2hhdCBpcyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FHR1JfV0lOX1NaX01BWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMjY5LSNkZWZpbmUgQUdHUl9XSU5fU1pfTUlOICAgICAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNzA6I2RlZmluZSBBR0dSX1dJTl9TWl9NQVggICAgIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjk4PXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTcyODpcdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTcyOS1cdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5NDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMgaW4gV2luZG93IFNpemUgSGFuZGxpbmcqKgoKT2theSwgc28gYEFHR1JfV0lOX1NaX01BWGAgaXMgZGVmaW5lZCBhcyA4LiBUaGF0JiMzOTtzIG91ciBtYXhpbXVtIGRlZmluZWQgd2luZG93IHNpemUuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgKm5vdCogZW5mb3JjaW5nIHRoaXMgbGltaXQuIExldCYjMzk7cyBzYXkgYHdpbl9zemAgc29tZWhvdyBnZXRzIHNldCB0byBhbiBhcmJpdHJhcmlseSBsYXJnZSB2YWx1ZSwgbGlrZSAyNTUuIFRoYXQgd291bGQgbWVhbiBgVElEX1dJTkRPV19TWih3aW5fc3opYCB3b3VsZCByZXN1bHQgaW4gNTEwLiBOb3csIDUxMCBtdWx0aXBsaWVkIGJ5IHRoZSBzaXplIG9mIGBzdHJ1Y3Qgc2tiX2hvbGRfcWAsIHdoaWNoIEkga25vdyBpcyA4IGJ5dGVzIG9uIGEgMzItYml0IHN5c3RlbSBvciAxNiBvbiBhIDY0LWJpdCBzeXN0ZW0sIGdpdmVzIHVzIGFuIGFsbG9jYXRpb24gc2l6ZSBvZiBlaXRoZXIgNDA4MCBvciA4MTYwIGJ5dGVzLiBJdCYjMzk7cyBub3QgYSBodWdlIGFsbG9jYXRpb24gdGhhdCB3b3VsZCB0cmlnZ2VyIGltbWVkaWF0ZSBtZW1vcnkgZXhoYXVzdGlvbiwgYnV0IGl0JiMzOTtzIGxhcmdlIGVub3VnaCB0aGF0IGl0ICpjb3VsZCogYmUgYSBjb250cmlidXRpbmcgZmFjdG9yIG9yIGEgc3ltcHRvbSBvZiBhbiBlcnJvciBhbmQsIG1vcmUgaW1wb3J0YW50bHksIG1pZ2h0IGNhdXNlIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIGl0JiMzOTtzIG5vdCBoYW5kbGVkIGNvcnJlY3RseSBlbHNld2hlcmUuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRoaXMgYHdpbl9zemAgaXMgdXNlZC4gRm9yIGluc3RhbmNlLCBgcnh0aWQtJmd0O2hvbGRfcV9zemAgaXMgc2V0IHRvIGBUSURfV0lORE9XX1NaKHdpbl9zeilgLCB3aGljaCBpcyB0aGUgc2l6ZSB3ZSBqdXN0IGNhbGN1bGF0ZWQuIEFuZCBoYW5nIG9uLCBgYWdncl9kZXF1ZV9mcm1zYCBtYWtlcyB1c2Ugb2YgYHJ4dGlkLSZndDtob2xkX3Ffc3pgLiBUaGlzIGlzIGNvbmNlcm5pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpZiB0aGVyZSYjMzk7cyBhbiBhcnJheSBkZWZpbmVkIHVzaW5nIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YCBpbiBgYWdncl9kZXF1ZV9mcm1zYCwgd2UgaGF2ZSBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBOb3cgSSBuZWVkIHRvIGNoZWNrIGBhZ2dyX2RlcXVlX2ZybXNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIGZpeGVkLXNpemUgYXJyYXkgdGhlcmUgdGhhdCYjMzk7cyByZWx5aW5nIG9uIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YCBmb3IgaW5kZXhpbmcuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlLiBMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FnZ3JfZGVxdWVfZnJtcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTk5MD1zdGF0aWMgdm9pZCBhZ2dyX3NsaWNlX2Ftc2R1KHN0cnVjdCBhZ2dyX2luZm8gKnBfYWdncixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA0NjpzdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA0Ny1cdFx0XHQgICAgdTE2IHNlcV9ubywgdTggb3JkZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTEwNT1zdGF0aWMgYm9vbCBhZ2dyX3Byb2Nlc3NfcmVjdl9mcm0oc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNDctXHRcdCAgICAgKGN1ciBcdTAwM2MgZW5kKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjExNDg6XHRcdFx0YWdncl9kZXF1ZV9mcm1zKGFnZ19jb25uLCB0aWQsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE0OS1cdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cnh0aWQtXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjExNjc6XHRcdFx0YWdncl9kZXF1ZV9mcm1zKGFnZ19jb25uLCB0aWQsIHN0LCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNjgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMjA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTIwNjpcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dfY29ubiwgdGlkLCAwLCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEyMDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTYyMz1zdGF0aWMgdm9pZCBhZ2dyX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY0Mi1cdFx0XHQgICAgQVRINktMX01BWF9TRVFfTk8pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2NDM6XHRcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dyX2Nvbm4sIGksIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY0NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2ODMtXHRpZiAocnh0aWQtXHUwMDNlYWdncilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2ODQ6XHRcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dyX2Nvbm4sIHRpZCwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQyOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkRlY29uc3RydWN0aW5nIHRoZSBBZ2dyZWdhdGlvbiBQcm9jZXNzKioKCkFoYSEgSGFuZyBvbiBhIHNlY29uZCwgaXNuJiMzOTt0IGB3aW5fc3pgIGJlaW5nIHVzZWQgd2l0aGluIGBhZ2dyX2RlcXVlX2ZybXNgPyBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCBJIG1pZ2h0IGhhdmUgbWlzc2VkIGVhcmxpZXIuIFJpZ2h0LCByaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgYWdncl9kZXF1ZV9mcm1zYCBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY3J5c3RhbCBjbGVhciBvbiBob3cgYHdpbl9zemAgaXMgaW1wYWN0aW5nIHRoZSBhZ2dyZWdhdGlvbiBsb2dpYy4gR290dGEgdHJhY2UgdGhlIGRhdGEgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGF0IHdpbmRvdyBzaXplIHBhcmFtZXRlciBhbmQgdGhlIGRlcXVlIG1hbmlwdWxhdGlvbi4gR290dGEgZ2V0IHRoaXMgc3RyYWlnaHQgYmVmb3JlIEkgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwNDYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA0NjpcdHN0YXRpYyB2b2lkIGFnZ3JfZGVxdWVfZnJtcyhzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXG4xMDQ3Olx0XHRcdFx0ICAgIHUxNiBzZXFfbm8sIHU4IG9yZGVyKVxuMTA0ODpcdHtcbjEwNDk6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4xMDUwOlx0XHRzdHJ1Y3Qgcnh0aWQgKnJ4dGlkO1xuMTA1MTpcdFx0c3RydWN0IHNrYl9ob2xkX3EgKm5vZGU7XG4xMDUyOlx0XHR1MTYgaWR4LCBpZHhfZW5kLCBzZXFfZW5kO1xuMTA1MzpcdFx0c3RydWN0IHJ4dGlkX3N0YXRzICpzdGF0cztcbjEwNTQ6XHRcbjEwNTU6XHRcdHJ4dGlkID0gXHUwMDI2YWdnX2Nvbm4tXHUwMDNlcnhfdGlkW3RpZF07XG4xMDU2Olx0XHRzdGF0cyA9IFx1MDAyNmFnZ19jb25uLVx1MDAzZXN0YXRbdGlkXTtcbjEwNTc6XHRcbjEwNTg6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZyeHRpZC1cdTAwM2Vsb2NrKTtcbjEwNTk6XHRcdGlkeCA9IEFHR1JfV0lOX0lEWChyeHRpZC1cdTAwM2VzZXFfbmV4dCwgcnh0aWQtXHUwMDNlaG9sZF9xX3N6KTtcbjEwNjA6XHRcbjEwNjE6XHRcdC8qXG4xMDYyOlx0XHQgKiBpZHhfZW5kIGlzIHR5cGljYWxseSB0aGUgbGFzdCBwb3NzaWJsZSBmcmFtZSBpbiB0aGUgd2luZG93LFxuMTA2MzpcdFx0ICogYnV0IGNoYW5nZXMgdG8gJiMzOTt0aGUmIzM5OyBzZXFfbm8sIHdoZW4gQkFSIGNvbWVzLiBJZiBzZXFfbm9cbjEwNjQ6XHRcdCAqIGlzIG5vbi16ZXJvLCB3ZSB3aWxsIGdvIHVwIHRvIHRoYXQgYW5kIHN0b3AuXG4xMDY1Olx0XHQgKiBOb3RlOiBsYXN0IHNlcSBubyBpbiBjdXJyZW50IHdpbmRvdyB3aWxsIG9jY3VweSB0aGUgc2FtZVxuMTA2NjpcdFx0ICogaW5kZXggcG9zaXRpb24gYXMgaW5kZXggdGhhdCBpcyBqdXN0IHByZXZpb3VzIHRvIHN0YXJ0LlxuMTA2NzpcdFx0ICogQW4gaW1wIHBvaW50IDogaWYgd2luX3N6IGlzIDcsIGZvciBzZXFfbm8gc3BhY2Ugb2YgNDA5NSxcbjEwNjg6XHRcdCAqIHRoZW4sIHRoZXJlIHdvdWxkIGJlIGhvbGVzIHdoZW4gc2VxdWVuY2Ugd3JhcCBhcm91bmQgb2NjdXJzLlxuMTA2OTpcdFx0ICogVGFyZ2V0IHNob3VsZCBqdWRpY2lvdXNseSBjaG9vc2UgdGhlIHdpbl9zeiwgYmFzZWQgb25cbjEwNzA6XHRcdCAqIHRoaXMgY29uZGl0aW9uLiBGb3IgNDA5NSwgKFRJRF9XSU5ET1dfU1ogPSAyIHggd2luX3N6XG4xMDcxOlx0XHQgKiAyLCA0LCA4LCAxNiB3aW5fc3ogd29ya3MgZmluZSkuXG4xMDcyOlx0XHQgKiBXZSBtdXN0IGRlcXVlIGZyb20gXCYjMzQ7aWR4XCYjMzQ7IHRvIFwmIzM0O2lkeF9lbmRcJiMzNDssIGluY2x1ZGluZyBib3RoLlxuMTA3MzpcdFx0ICovXG4xMDc0Olx0XHRzZXFfZW5kID0gc2VxX25vID8gc2VxX25vIDogcnh0aWQtXHUwMDNlc2VxX25leHQ7XG4xMDc1Olx0XHRpZHhfZW5kID0gQUdHUl9XSU5fSURYKHNlcV9lbmQsIHJ4dGlkLVx1MDAzZWhvbGRfcV9zeik7XG4xMDc2Olx0XG4xMDc3Olx0XHRkbyB7XG4xMDc4Olx0XHRcdG5vZGUgPSBcdTAwMjZyeHRpZC1cdTAwM2Vob2xkX3FbaWR4XTtcbjEwNzk6XHRcdFx0aWYgKChvcmRlciA9PSAxKSBcdTAwMjZcdTAwMjYgKCFub2RlLVx1MDAzZXNrYikpXG4xMDgwOlx0XHRcdFx0YnJlYWs7XG4xMDgxOlx0XG4xMDgyOlx0XHRcdGlmIChub2RlLVx1MDAzZXNrYikge1xuMTA4MzpcdFx0XHRcdGlmIChub2RlLVx1MDAzZWlzX2Ftc2R1KVxuMTA4NDpcdFx0XHRcdFx0YWdncl9zbGljZV9hbXNkdShhZ2dfY29ubi1cdTAwM2VhZ2dyX2luZm8sIHJ4dGlkLFxuMTA4NTpcdFx0XHRcdFx0XHRcdCBub2RlLVx1MDAzZXNrYik7XG4xMDg2Olx0XHRcdFx0ZWxzZVxuMTA4NzpcdFx0XHRcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cnh0aWQtXHUwMDNlcSwgbm9kZS1cdTAwM2Vza2IpO1xuMTA4ODpcdFx0XHRcdG5vZGUtXHUwMDNlc2tiID0gTlVMTDtcbjEwODk6XHRcdFx0fSBlbHNlIHtcbjEwOTA6XHRcdFx0XHRzdGF0cy1cdTAwM2VudW1faG9sZSYjNDM7JiM0Mzs7XG4xMDkxOlx0XHRcdH1cbjEwOTI6XHRcbjEwOTM6XHRcdFx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSBBVEg2S0xfTkVYVF9TRVFfTk8ocnh0aWQtXHUwMDNlc2VxX25leHQpO1xuMTA5NDpcdFx0XHRpZHggPSBBR0dSX1dJTl9JRFgocnh0aWQtXHUwMDNlc2VxX25leHQsIHJ4dGlkLVx1MDAzZWhvbGRfcV9zeik7XG4xMDk1Olx0XHR9IHdoaWxlIChpZHggIT0gaWR4X2VuZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTY3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgQUdHUl9XSU5fSURYYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgQUdHUl9XSU5fSURYYC4gR2l2ZW4gaXRzIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGlzIGluZGV4IGlzIGJlaW5nIGRlcml2ZWQgZnJvbSBhIHNlcXVlbmNlIG51bWJlciwgbW9zdCBsaWtlbHkgdXNpbmcgYSBtb2R1bG8gb3IgYml0d2lzZSBBTkQgb3BlcmF0aW9uIHRvIHdyYXAgaXQgd2l0aGluIGEgYnVmZmVyIHNpemUsIGBob2xkX3Ffc3pgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGVpdGhlciBgc2VxICUgaG9sZF9xX3N6YCBvciB0aGUgYml0d2lzZSBlcXVpdmFsZW50IGBzZXEgJmFtcDsgKGhvbGRfcV9zeiAtIDEpYC4gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBhcHByb2FjaGVzIGZvciBpbXBsZW1lbnRpbmcgYSBjaXJjdWxhciBidWZmZXIgb3IgYSByaW5nIGJ1ZmZlciwgd2hpY2ggc2VlbXMgdGhlIG1vc3QgbGlrZWx5IHNjZW5hcmlvIGdpdmVuIHRoZSBuYW1lcy4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlIG9mIGBBR0dSX1dJTl9JRFhgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QuIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYGhvbGRfcV9zemAgaXMgYSBwb3dlciBvZiAyIHRvIHZhbGlkYXRlIHRoZSBiaXR3aXNlIEFORCBhcHByb2FjaC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBgc2VxYCBpcyBnZW5lcmF0ZWQsIGFuZCBob3cgYEFHR1JfV0lOX0lEWGAgaXMgdGhlbiBlbXBsb3llZCB0byBhY2Nlc3MgYW5kIHVwZGF0ZSBzcGVjaWZpYyBsb2NhdGlvbnMgd2l0aGluIHRoZSBkYXRhIHN0cnVjdHVyZS4gSXQmIzM5O3MgYWxsIGFib3V0IHZlcmlmeWluZyB0aGF0IHRoZSBtb2R1bG8gb3BlcmF0aW9uIGlzIHByb3Blcmx5IGhhbmRsaW5nIHRoZSBjeWNsaWNhbCBuYXR1cmUgb2YgdGhlIGJ1ZmZlci4gQW55IGRpc2NyZXBhbmNpZXMgaGVyZSBjb3VsZCBsZWFkIHRvIHNpZ25pZmljYW50IGRhdGEgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGdvYWwgaXMgdG8gZGVlcGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgQUdHUl9XSU5fSURYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9MTY2PWVudW0gYXRoNmtsX2h3X2ZsYWdzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNjA6I2RlZmluZSBBR0dSX1dJTl9JRFgoeCwgeSkgICAgICAgICAgKCh4KSAlICh5KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI2MS0jZGVmaW5lIEFHR1JfSU5DUl9JRFgoeCwgeSkgICAgICAgICBBR0dSX1dJTl9JRFgoKCh4KSAmIzQzOyAxKSwgKHkpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjEwOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpZGUgYnkgWmVybyBCdWcgQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkLiBJJiMzOTt2ZSBzcG90dGVkIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIHZ1bG5lcmFiaWxpdHkuIFRoZSBgQUdHUl9XSU5fSURYKHgsIHkpYCBtYWNybyBpcyBpbXBsZW1lbnRlZCBhcyBgKCh4KSAlICh5KSlgLiBTaW1wbGUgZW5vdWdoLCBidXQgaWYgYHlgIGlzIHplcm8sIHdlJiMzOTt2ZSBnb3QgYSBwcm9ibGVtLiAgCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGB5YCBpcyBlcXVpdmFsZW50IHRvIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YC4gRGlnZ2luZyBkZWVwZXIsIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YCBpcyBkZXJpdmVkIGZyb20gYFRJRF9XSU5ET1dfU1ood2luX3N6KWAsIGFuZCB0aGF0IG1hY3JvIGV4cGFuZHMgdG8gYCh3aW5fc3opICZsdDsmbHQ7IDFgLiAgU28sIGlmIGB3aW5fc3pgIGhhcHBlbnMgdG8gYmUgemVybywgYGhvbGRfcV9zemAgZW5kcyB1cCBiZWluZyB6ZXJvIGFzIHdlbGwuIFRoZW4gdGhlIGBBR0dSX1dJTl9JRFhgIG1hY3JvIGJlY29tZXMgYHNlcV9uZXh0ICUgMGAsIHdoaWNoICpkZWZpbml0ZWx5KiBjYXVzZXMgYSBrZXJuZWwgcGFuaWMgd2l0aCBhIGRpdmlkZS1ieS16ZXJvIGVycm9yLgoKVGhlIHByb3ZpZGVkIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGhlYWQtb24uIEl0IGludHJvZHVjZXMgYSBjaGVjazogYGlmICh3aW5fc3ogJmx0OyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6ICZndDsgQUdHUl9XSU5fU1pfTUFYKWAuICBTaW5jZSBgQUdHUl9XSU5fU1pfTUlOYCBpcyAyLCB0aGlzIGVmZmVjdGl2ZWx5IHByZXZlbnRzIGB3aW5fc3pgIGZyb20gZXZlciBiZWluZyB6ZXJvLiBUaGF0JiMzOTtzIGEgc29saWQgZml4LCBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGZpeGVzIHRoYXQgZGl2aWRlIGJ5IHplcm8hCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHdoZXJlIHRvIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMuIFRoZSBwYXRjaCBtb2RpZmllcyBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgLCBzbyB0aGF0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0LiAgV2Ugc2hvdWxkIGFsc28gYmUgbG9va2luZyBhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBBbmQsIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgYGFnZ3JfZGVxdWVfZnJtc2AgYXMgd2VsbC4gIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIHN0YXJ0IGRpZ2dpbmcgYSBiaXQgZGVlcGVyIGZvciByZWxhdGVkIGZ1bmN0aW9ucy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjI6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05NjMtXHRcdFx0ICAgICB1OCB3aW5fc3opO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2OTg6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5OS1cdFx0XHQgICAgIHU4IHdpbl9zeilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzNTI9c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTc6XHRhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTgtXHRcdFx0XHRsZTE2X3RvX2NwdShjbWQtXHUwMDNlc3Rfc2VxX25vKSwgY21kLVx1MDAzZXdpbl9zeik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDMxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIHRoZSBCQSBSZXF1ZXN0IEV2ZW50IEhhbmRsaW5nKioKClJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIHByb2JsZW0uIFRoZSBzeXN0ZW0mIzM5O3MgdHJpZ2dlcmVkIGJ5IHRoZXNlIHN5bWJvbHM6IGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAsIGFuZCBgYWdncl9kZXF1ZV9mcm1zYC4gVGhhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgIGxvb2tzIGxpa2UgdGhlIGNyaXRpY2FsIG9uZSwgdGhlIHJlY2VpdmVyIG9mIHRoZSBBZGRCQSByZXF1ZXN0IGV2ZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGl0LCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gb3VyIGFnZ3JlZ2F0aW9uIGZyYW1ld29yay4KCk9rYXksIG15IGZpcnN0IHBvcnQgb2YgY2FsbCB3aWxsIGJlIHRvIGNoZWNrIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgc3BlY2lmaWNhbGx5LiBUaGF0IHNob3VsZCBiZSBpbiBgd21pLmNgLCByaWdodD8gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIFdNSSBldmVudCBoYW5kbGluZyB1c3VhbGx5IHNpdHMsIHNvIHRoYXQmIzM5O3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O2xsIGNoZWNrIGhvdyBpdCYjMzk7cyBoYW5kbGVkIHdpdGhpbiB0aGUgbGFyZ2VyIFdNSSBmcmFtZXdvcmsuIFRoZSBgd21pYCBmaWxlIGlzIHRoZSBjZW50cmFsIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIFdpcmVsZXNzIE1hbmFnZW1lbnQgSW50ZXJmYWNlIGludGVyYWN0aW9ucy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHN5c3RlbSBpcyByZWFjdGluZyB0byB0aGUgZXZlbnQsIGhvdyBpdCYjMzk7cyBwYXJzaW5nIHRoZSByZXF1ZXN0LCBhbmQgd2hhdCBhY3Rpb25zIGl0JiMzOTtzIHRha2luZyBpbiByZXNwb25zZS4gVGhlbiBJIGNhbiB0cmFjZSB0aGUgZmxvdyBmcm9tIHRoZXJlLiBJIGV4cGVjdCB0aGF0IHdpbGwgaWxsdW1pbmF0ZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIGFnZ3JlZ2F0ZSBmcmFtZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNTIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM1MjpcdHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4zMzUzOlx0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuMzM1NDpcdHtcbjMzNTU6XHRcdHN0cnVjdCB3bWlfYWRkYmFfcmVxX2V2ZW50ICpjbWQgPSAoc3RydWN0IHdtaV9hZGRiYV9yZXFfZXZlbnQgKikgZGF0YXA7XG4zMzU2Olx0XG4zMzU3Olx0XHRhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQsXG4zMzU4Olx0XHRcdFx0XHRsZTE2X3RvX2NwdShjbWQtXHUwMDNlc3Rfc2VxX25vKSwgY21kLVx1MDAzZXdpbl9zeik7XG4zMzU5Olx0XG4zMzYwOlx0XHRyZXR1cm4gMDtcbjMzNjE6XHR9XG4zMzYyOlx0XG4zMzYzOlx0c3RhdGljIGludCBhdGg2a2xfd21pX2RlbGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbjMzNjQ6XHRcdFx0XHRcdFx0IHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG4zMzY1Olx0e1xuMzM2NjpcdFx0c3RydWN0IHdtaV9kZWxiYV9ldmVudCAqY21kID0gKHN0cnVjdCB3bWlfZGVsYmFfZXZlbnQgKikgZGF0YXA7XG4zMzY3Olx0XG4zMzY4Olx0XHRhZ2dyX3JlY3ZfZGVsYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQpO1xuMzM2OTpcdFxuMzM3MDpcdFx0cmV0dXJuIDA7XG4zMzcxOlx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODIwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB3aXJlbGVzcyBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIERpdmlzaW9uIGJ5IFplcm8gaW4gdGhlIGF0aDZrbCBEcml2ZXIqKgoKUmlnaHQsIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgKmlzKiBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgIGZ1bmN0aW9uIGluIGB0eHJ4LmNgIGlzIHRoZSBvbmUgSSBuZWVkIHRvIGV4YW1pbmUsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbiB0b29rIHBsYWNlLgoKQWxyaWdodCwgbW92aW5nIG9uLCBsZXQmIzM5O3MgbG9vayBhdCBgYWdncl9kZXF1ZV9mcm1zYCwgYWxzbyBpbiBgdHhyeC5jYC4gSSYjMzk7dmUgZ290IGEgaHVuY2gg4oCTIHRoYXQmIzM5O3MgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBkaXZpc2lvbiBieSB6ZXJvIGlzIHByb2JhYmx5IG9jY3VycmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBkZXF1ZXVpbmcgcHJvY2VzcyBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYWdncmVnYXRpb24uCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGFsbCB0aGUgcmVsZXZhbnQgY29uZmlncyBlbmFibGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLgoKV2FpdCBhIHNlY29uZCwgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGdvIGJhY2sgYW5kIHRob3JvdWdobHkgcmUtZXhhbWluZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCBmb3IgYW55IG90aGVyIHBvc3NpYmlsaXRpZXMuIEkgbmVlZCB0byBlbnN1cmUgbm90aGluZyBoYXMgYmVlbiBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEg2S0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyOmNvbmZpZyBBVEg2S0xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBtb2JpbGUgY2hpcHNldHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxNDpjb25maWcgQVRINktMX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyNTpjb25maWcgQVRINktMX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzU6Y29uZmlnIEFUSDZLTF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDU6Y29uZmlnIEFUSDZLTF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDYtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1Nzpjb25maWcgQVRINktMX1JFR0RPTUFJTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE4MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgV2lyZWxlc3MgRHJpdmVyIENvbXBpbGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRlcGVuZGVuY3kgdHJlZSwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBBVEg2S0xfVVNCYCByZWxpZXMgb24gYEFUSDZLTGAuIFRoaXMgdGVsbHMgbWUgdGhhdCBpZiBJJiMzOTt2ZSBnb3QgYm90aCBvZiB0aG9zZSwgSSBzaG91bGQgYmUgZ29vZCB0byBnby4gQnV0LCBpdCYjMzk7cyBhbHdheXMgc21hcnQgdG8gY29uZmlybS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IGBBVEg2S0xfVVNCYCBhbG9uZSBpcyBpbmRlZWQgc3VmZmljaWVudCBmb3IgY29tcGlsaW5nIGB0eHJ4LmNgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYWxsIG5lY2Vzc2FyeSBpbmNsdWRlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcmVzZW50LiBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIHRlc3QuIEp1c3QgYSBzaW1wbGUgY2hlY2sgdG8gY29uZmlybSB0aGF0IG15IGFzc3VtcHRpb25zIGhvbGQgdHJ1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHhyeC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZT0zMz1hdGg2a2xfY29yZS15ICYjNDM7PSBtYWluLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSAmIzQzOz0gdHhyeC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM1LWF0aDZrbF9jb3JlLXkgJiM0Mzs9IHdtaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTA5CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGF0aDZrbCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHR4cngub2AgaXMgaW5kZWVkIGEgY29tcG9uZW50IG9mIGBhdGg2a2xfY29yZS15YCwgYW5kIGl0JiMzOTtzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19BVEg2S0xgIGlzIGVuYWJsZWQuIFRpbWUgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYCBhcmUgdGhlIHByaW1hcnkgb25lcyB0byBmb2N1cyBvbi4KClRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYSBjcnVjaWFsIGZpeCBmb3IgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBhdGg2a2xgIGRyaXZlci4gSXQgYXBwZWFycyB0aGVyZSYjMzk7cyBhIHJpc2sgb2YgZGl2aXNpb24gYnkgemVybyBvciBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBkZXZpY2UuIFRoaXMgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgYnkgYSByb2d1ZSBVU0IgZGV2aWNlIHNlbmRpbmcgYSBzcGVjaWFsbHkgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhIGRvZGd5IGB3aW5fc3pgIHZhbHVlLiBUaGUgcGF0Y2gmIzM5O3Mgc29sdXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiBhZGQgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMgZXhwbG9pdGFibGUgY29uZGl0aW9uLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkaXJlY3RseSBwYXRjaGluZyByZWFjaGFibGUgY29kZS4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCwgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCwgYW5kIGBhZ2dyX2RlcXVlX2ZybXNgLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgcG9pbnRzIG9mIGludGVyZXN0IGhlcmUuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YWdncl9kZXF1ZV9mcm1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRINktMJiMzNDssCiAgICAmIzM0O0FUSDZLTF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICAgJiMzNDthdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCYjMzQ7LAogICAgJiMzNDthZ2dyX2RlcXVlX2ZybXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aXNpb24gYnkgemVybyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uIGluIHRoZSBhdGg2a2wgZHJpdmVyIHdoZW4gcHJvY2Vzc2luZyBXTUlfQUREQkFfUkVRX0VWRU5USUQgZXZlbnRzIGZyb20gdGhlIGRldmljZS4gVGhlIHZ1bG5lcmFiaWxpdHkgY2FuIGJlIHRyaWdnZXJlZCBieSBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHNlbmRpbmcgYSBjcmFmdGVkIFdNSSBldmVudCB3aXRoIGFuIGludmFsaWQgYHdpbl9zemAuIFRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgYHdpbl9zemAgdG8gcHJldmVudCB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwYXRjaGVzIHJlYWNoYWJsZSBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MDYuNzE3MDIwODQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNTEwMDc4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCIsXG4gICAgXCJhZ2dyX2RlcXVlX2ZybXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGF0aDZrbCBkcml2ZXIgd2hlbiBwcm9jZXNzaW5nIFdNSV9BRERCQV9SRVFfRVZFTlRJRCBldmVudHMgZnJvbSB0aGUgZGV2aWNlLiBUaGUgdnVsbmVyYWJpbGl0eSBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIFVTQiBkZXZpY2Ugc2VuZGluZyBhIGNyYWZ0ZWQgV01JIGV2ZW50IHdpdGggYW4gaW52YWxpZCBgd2luX3N6YC4gVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHBhdGNoZXMgcmVhY2hhYmxlIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjA2LjcxNzAyNTM1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA2MjkxNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmYwNGNmZmRhZTAwYzc2N2Y1YTQ2Yzc3ZDE2ZThlN2RjN2RlY2ViYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAwMDo0NzowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuaW5kZXggODBlNjZhY2M1Y2Y2ZTkuLmEzOWM4MTUwNTg3ZWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5AQCAtMTcyMiwxMyArMTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXFxuIFxcbiBcXHRyeHRpZCA9IFxcdTAwMjZhZ2dyX2Nvbm4tXFx1MDAzZXJ4X3RpZFt0aWRdO1xcbiBcXG4tXFx0aWYgKHdpbl9zeiBcXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpXFxuLVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCBcXFwiJXM6IHdpbl9zeiAlZCwgdGlkICVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xcbi1cXG4gXFx0aWYgKHJ4dGlkLVxcdTAwM2VhZ2dyKVxcbiBcXHRcXHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xcbiBcXG4rXFx0aWYgKHdpbl9zeiBcXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpIHtcXG4rXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cnh0aWQtXFx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xcbiBcXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XFxuIFxcdHJ4dGlkLVxcdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MDcuMTIzOTkxNjA1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTg0NDAyODc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dFwiLFxuICAgIFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIixcbiAgICBcImFnZ3JfZGVxdWVfZnJtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZjA0Y2ZmZGFlMDBjNzY3ZjVhNDZjNzdkMTZlOGU3ZGM3ZGVjZWJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDA6NDc6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5pbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbkBAIC0xNzIyLDEzICsxNzIyLDE1IEBAIHZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcbiBcbiBcdHJ4dGlkID0gXHUwMDI2YWdncl9jb25uLVx1MDAzZXJ4X3RpZFt0aWRdO1xuIFxuLVx0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKVxuLVx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXG5cIixcbi1cdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuLVxuIFx0aWYgKHJ4dGlkLVx1MDAzZWFnZ3IpXG4gXHRcdGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShhZ2dyX2Nvbm4sIHRpZCk7XG4gXG4rXHRpZiAod2luX3N6IFx1MDAzYyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6IFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpIHtcbitcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwiJXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCIsXG4rXHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XG4gXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XG4gXHRyeHRpZC1cdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjA3LjEyMzk5MzAyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODA0ODQwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgIHRoYXQgbW9kaWZpZXMgdGhlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCB0aGV5J3ZlIGFkZGVkIGEgcmV0dXJuIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgYmFzZWQgb24gdGhlIHNpemUgb2YgYSB3aW5kb3cgKGB3aW5fc3pgKS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBndWFyZGluZyBhZ2FpbnN0IGB3aW5fc3pgIHZhbHVlcyB0aGF0IGFyZSBvdXRzaWRlIGEgZGVmaW5lZCByYW5nZSAoYEFHR1JfV0lOX1NaX01JTmAgYW5kIGBBR0dSX1dJTl9TWl9NQVhgKS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmFuZ2UgY2hlY2sgZm9yIHRoaXMgd2luZG93IHNpemUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgdGhpcyBpcywgcGFydGljdWxhcmx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGRyaXZlciBpcyBmb3IgQXRoZXJvcyBBUjYwMDMvQVI2MDA0IDgwMi4xMW4gd2lyZWxlc3MgTEFOIGNhcmRzLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIHdpdGhpbiBRRU1VPyBJZiBzbywgSSBjYW4gcHJvYmFibHkgZnV6eiB0aGUgcmVsZXZhbnQgY29kZS5cblxuR2VuZXJhbGx5LCBVU0IsIFNESU8sIG9yIFBDSSBkZXZpY2VzIGFyZSB0aGUgZWFzaWVzdCB0byBmdXp6IGlmIHlvdSBoYXZlIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgaWYgU3l6a2FsbGVyIGNhbiBpbmplY3QgcGFja2V0cyBkaXJlY3RseS4gU3l6a2FsbGVyIGhhcyBVU0IgYW5kIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcywgYW5kIGl0IGFsc28gd29ya3Mgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBncmVhdCwgYnV0LCB0aGlzIGlzIGEgZnVsbG1hYyBkcml2ZXIsIG5vdCBtYWM4MDIxMSwgcmlnaHQ/IE5lZWQgdG8gY29uZmlybS4gUmlnaHQsIGxldCdzIGNoZWNrIHdoZXRoZXIgdGhpcyB1c2VzIFNESU8gb3IgVVNCLiBJJ2xsIGdyZXAgZm9yIGF0aDZrbCByZWxhdGVkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoxMi40MDQ0NzkwMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwOTM1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwMzggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yPWNvbmZpZyBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMC1cXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjExOlxcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMi1cXHQgIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0xND1jb25maWcgQVRINktMX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MTU6XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMC1cXHQgIEF0aGVyb3MgQVI2MDAzIGFuZCBBUjYwMDQgY2hpcHNldHMgcnVubmluZyBvdmVyIFNESU8uIElmIHlvdVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyMTpcXHQgIGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXRoNmtsX3NkaW8uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTIyLVxcdCAgUGxlYXNlIG5vdGUgdGhhdCBBUjYwMDIgYW5kIEFSNjAwMSBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MjU9Y29uZmlnIEFUSDZLTF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjY6XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNy1cXHRkZXBlbmRzIG9uIEFUSDZLTFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMyLVxcdCAgVVNCLiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjMzOlxcdCAgY2FsbGVkIGF0aDZrbF91c2IuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0zNT1jb25maWcgQVRINktMX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjM2OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzgtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozOTpcXHQgIEVuYWJsZXMgYXRoNmtsIGRlYnVnIHN1cHBvcnQsIGluY2x1ZGluZyBkZWJ1ZyBtZXNzYWdlc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00MC1cXHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz00NT1jb25maWcgQVRINktMX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDY6XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgdHJhY2luZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ny1cXHRkZXBlbmRzIG9uIEFUSDZLTFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ5LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NTA6XFx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01MS1cXHQgIGV4YW1wbGUsIGNhbiBiZSBlbmFibGVkIHdpdGggaGVscCBvZiB0cmFjZS1jbWQuIEFsbCBkZWJ1Z1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTU3PWNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU4OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01OS1cXHRkZXBlbmRzIG9uIEFUSDZLTFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19BVEg2S0wpICs9IGF0aDZrbF9jb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI2OmF0aDZrbF9jb3JlLXkgKz0gZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjc6YXRoNmtsX2NvcmUteSArPSBoaWYub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjg6YXRoNmtsX2NvcmUteSArPSBodGNfbWJveC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyOTphdGg2a2xfY29yZS15ICs9IGh0Y19waXBlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMwOmF0aDZrbF9jb3JlLXkgKz0gYm1pLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMxOmF0aDZrbF9jb3JlLXkgKz0gY2ZnODAyMTEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzI6YXRoNmtsX2NvcmUteSArPSBpbml0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMzOmF0aDZrbF9jb3JlLXkgKz0gbWFpbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNDphdGg2a2xfY29yZS15ICs9IHR4cngub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzU6YXRoNmtsX2NvcmUteSArPSB3bWkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzY6YXRoNmtsX2NvcmUteSArPSBjb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM3OmF0aDZrbF9jb3JlLXkgKz0gcmVjb3Zlcnkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozOTphdGg2a2xfY29yZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MDphdGg2a2xfY29yZS0kKENPTkZJR19BVEg2S0xfVFJBQ0lORykgKz0gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfQVRINktMX1NESU8pICs9IGF0aDZrbF9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQzOmF0aDZrbF9zZGlvLXkgKz0gc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19BVEg2S0xfVVNCKSArPSBhdGg2a2xfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQ2OmF0aDZrbF91c2IteSArPSB1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjM6aW50IGF0aDZrbF9ibWlfZG9uZShzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjgtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyOTpcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIGRvbmUgc2tpcHBlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgKHU4ICopXFx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzc6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHNlbmQgYm1pIGRvbmU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NTpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8gKnRhcmdfaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTItXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVxcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzZW5kIGdldCB0YXJnZXQgaW5mbzogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01OC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02MS1cXHRpZiAoYXItXFx1MDAzZWhpZl90eXBlID09IEFUSDZLTF9ISUZfVFlQRV9VU0IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjYyOlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsICh1OCAqKXRhcmdfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTYzLVxcdFxcdFxcdFxcdFxcdCAgc2l6ZW9mKCp0YXJnX2luZm8pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2NTpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKilcXHUwMDI2dGFyZ19pbmZvLVxcdTAwM2V2ZXJzaW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjYtXFx0XFx0XFx0XFx0c2l6ZW9mKHRhcmdfaW5mby1cXHUwMDNldmVyc2lvbikpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3MDpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVjdiB0YXJnZXQgaW5mbzogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03MS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03NS1cXHRcXHQvKiBEZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgYXJlIGluIHRoZSBUYXJnZXQncyB0YXJnX2luZm8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjc2OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03Ny1cXHRcXHRcXHRcXHQgICAodTggKilcXHUwMDI2dGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03OS1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo4MDpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJ1bmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyBieXRlIGNvdW50OiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTgxLVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk0LVxcdFxcdC8qIFJlYWQgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGFyZ19pbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo5NTpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTYtXFx0XFx0XFx0XFx0ICAgKCh1OCAqKXRhcmdfaW5mbykgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTAyOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvICglZCBieXRlcyk6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAzLVxcdFxcdFxcdFxcdCAgIHRhcmdfaW5mby1cXHUwMDNlYnl0ZV9jb3VudCwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTA4OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJ0YXJnZXQgaW5mbyAodmVyOiAweCV4IHR5cGU6IDB4JXgpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA5LVxcdFxcdCAgIHRhcmdfaW5mby1cXHUwMDNldmVyc2lvbiwgdGFyZ19pbmZvLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTE0OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTIyLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTIzOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMjQtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEzNDpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTM1LVxcdFxcdCAgIFxcXCJibWkgcmVhZCBtZW1vcnk6IGRldmljZTogYWRkcjogMHgleCwgbGVuOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUxOlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUzOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1NC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTYtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU3OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1ZiwgcnhfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1OC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTk6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgZnJvbSB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE2MC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNzA6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTgxOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xODItXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE5NTpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTk2LVxcdFxcdCAgIFxcXCJibWkgd3JpdGUgbWVtb3J5OiBhZGRyOiAweCV4LCBsZW46ICVkXFxcXG5cXFwiLCBhZGRyLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjc6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI4LVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzNzppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0NC1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI0NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQ2LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNTY6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBleGVjdXRlOiBhZGRyOiAweCV4LCBwYXJhbTogJWQpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU3LVxcdFxcdCAgIGFkZHIsICpwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI2NzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI2OTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzAtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjczOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjc0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjc2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI4NDppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5MS1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5MjpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjkzLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMDM6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBzZXQgYXBwIHN0YXJ0OiBhZGRyOiAweCV4XFxcXG5cXFwiLCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzExOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTItXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzEzOlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMjA6aW50IGF0aDZrbF9ibWlfcmVnX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzI3LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzI4OlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjktXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMzOTpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIHJlYWQgU09DIHJlZzogYWRkcjogMHgleFxcXFxuXFxcIiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM0NzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM0OTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTAtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzUzOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzU0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzU2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM2MzppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzAtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzE6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM3Mi1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzgyOlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zODMtXFx0XFx0ICAgXFxcImJtaSB3cml0ZSBTT0MgcmVnOiBhZGRyOiAweCV4LCBwYXJhbTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM5NDpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM5NjpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTctXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDAzOmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTItXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MTM6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDI0OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgc2VuZCBMWiBkYXRhOiBsZW46ICVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQyNS1cXHRcXHQgICBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDE6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ0Mi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDM6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ1NDppbnQgYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDYxLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDYyOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ3MzpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc0LVxcdFxcdCAgIFxcXCJibWkgTFogc3RyZWFtIHN0YXJ0OiBhZGRyOiAweCV4KVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDgzOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODQtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDg1OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzdGFydCBMWiBzdHJlYW0gdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODYtXFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDkzOmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTAwOlxcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDk6XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCBidWYsIGxhc3Rfd29yZF9vZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMy1cXHRpZiAodW5hbGlnbmVkX2J5dGVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE0OlxcdFxcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgKHU4ICopXFx1MDAyNmxhc3Rfd29yZCwgNCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxOC1cXHRcXHQgKiBUaGlzIHNlcnZlcyBtYWlubHkgdG8gZmx1c2ggVGFyZ2V0IGNhY2hlcy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOTpcXHRcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgMHgwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjQ6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTI5OmludCBhdGg2a2xfYm1pX2luaXQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NDQ6dm9pZCBhdGg2a2xfYm1pX2NsZWFudXAoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMTk6c3RydWN0IGF0aDZrbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIyMDpzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjEtXFx0X19sZTMyIGJ5dGVfY291bnQ7ICAgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjY6I2RlZmluZSBhdGg2a2xfYm1pX3dyaXRlX2hpMzIoYXIsIGl0ZW0sIHZhbClcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjctXFx0KHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzE6XFx0XFx0YWRkciA9IGF0aDZrbF9nZXRfaGlfaXRlbV9hZGRyKGFyLCBISV9JVEVNKGl0ZW0pKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzItXFx0XFx0diA9IGNwdV90b19sZTMyKHZhbCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMzOlxcdFxcdGF0aDZrbF9ibWlfd3JpdGUoYXIsIGFkZHIsICh1OCAqKSBcXHUwMDI2diwgc2l6ZW9mKHYpKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzQtXFx0fSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIzNjojZGVmaW5lIGF0aDZrbF9ibWlfcmVhZF9oaTMyKGFyLCBpdGVtLCB2YWwpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM3LVxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDItXFx0XFx0KHZvaWQpIChjaGVja190eXBlID09IHZhbCk7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQzOlxcdFxcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQ0OlxcdFxcdHJldCA9IGF0aDZrbF9ibWlfcmVhZChhciwgYWRkciwgKHU4ICopIFxcdTAwMjZ0bXAsIDQpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0NS1cXHRcXHRpZiAoIXJldClcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MDppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MTp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTI6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NDppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NTppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTY6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU3OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1ODppbnQgYXRoNmtsX2JtaV93cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU5OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjAtXFx0XFx0ICAgICAgIHUzMiBhZGRyLCB1MzIgKnBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MTppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjYyLVxcdFxcdFxcdCAgICAgdTMyIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYzOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjQ6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NTppbnQgYXRoNmtsX2JtaV9sel9kYXRhKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjY2LVxcdFxcdCAgICAgICB1OCAqYnVmLCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NzppbnQgYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjgtXFx0XFx0XFx0ICAgICAgIHUzMiBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2OTppbnQgYXRoNmtsX2JtaV9mYXN0X2Rvd25sb2FkKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjcwLVxcdFxcdFxcdCAgICAgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo1NzpzdHJ1Y3QgYXRoNmtsX2NmZzgwMjExX21hdGNoX3Byb2JlX3NzaWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01OC1cXHRzdHJ1Y3QgY2ZnODAyMTFfc3NpZCBzc2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo2MjpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9yYXRlIGF0aDZrbF9yYXRlc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy02My1cXHRSQVRFVEFCX0VOVCgxMCwgMHgxLCAwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzc6I2RlZmluZSBhdGg2a2xfYV9yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyArIDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc4OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXNfc2l6ZSAgICA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc5OiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXMgICAgIChhdGg2a2xfcmF0ZXMgKyAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4MDojZGVmaW5lIGF0aDZrbF9nX3JhdGVzX3NpemUgICAgMTJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgyOiNkZWZpbmUgYXRoNmtsX2dfaHRjYXAgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODM6I2RlZmluZSBhdGg2a2xfYV9odGNhcCAoSUVFRTgwMjExX0hUX0NBUF9TVVBfV0lEVEhfMjBfNDAgfCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg0LVxcdFxcdFxcdElFRUU4MDIxMV9IVF9DQVBfU0dJXzIwXFx0XFx0IHwgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIGF0aDZrbF8yZ2h6X2NoYW5uZWxzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg4LVxcdENIQU4yRygxLCAyNDEyLCAwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEwNDpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIGF0aDZrbF81Z2h6X2FfY2hhbm5lbHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTA1LVxcdENIQU41RygzNiwgMCksIENIQU41Ryg0MCwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfMmdoeiA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI1OlxcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfMmdoel9jaGFubmVscyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNjpcXHQuY2hhbm5lbHMgPSBhdGg2a2xfMmdoel9jaGFubmVscyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI3OlxcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXNfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI4OlxcdC5iaXRyYXRlcyA9IGF0aDZrbF9nX3JhdGVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XFx0Lmh0X2NhcC5jYXAgPSBhdGg2a2xfZ19odGNhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMwLVxcdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzMzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF81Z2h6ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzQ6XFx0Lm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzU6XFx0LmNoYW5uZWxzID0gYXRoNmtsXzVnaHpfYV9jaGFubmVscyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM2OlxcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXNfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM3OlxcdC5iaXRyYXRlcyA9IGF0aDZrbF9hX3JhdGVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XFx0Lmh0X2NhcC5jYXAgPSBhdGg2a2xfYV9odGNhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTM5LVxcdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDQtLyogcmV0dXJucyB0cnVlIGlmIHNjaGVkdWxlZCBzY2FuIHdhcyBzdG9wcGVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NTpzdGF0aWMgYm9vbCBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NzpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE1NzpcXHRhdGg2a2xfd21pX2VuYWJsZV9zY2hlZF9zY2FuX2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTYyOnN0YXRpYyB2b2lkIGF0aDZrbF9jZmc4MDIxMV9zc2Nhbl9kaXNhYmxlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NDpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2NS1cXHRib29sIHN0b3BwZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTY3OlxcdHN0b3BwZWQgPSBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3NTpzdGF0aWMgaW50IGF0aDZrbF9zZXRfd3BhX3ZlcnNpb24oc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc2LVxcdFxcdFxcdFxcdCAgZW51bSBubDgwMjExX3dwYV92ZXJzaW9ucyB3cGFfdmVyc2lvbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc4OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiAldVxcXFxuXFxcIiwgX19mdW5jX18sIHdwYV92ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE4Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxODc6XFx0XFx0YXRoNmtsX2VycihcXFwiJXM6ICV1IG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE4OC1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk0OnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hdXRoX3R5cGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk1LVxcdFxcdFxcdFxcdGVudW0gbmw4MDIxMV9hdXRoX3R5cGUgYXV0aF90eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxOTc6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6IDB4JXhcXFxcblxcXCIsIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE0LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIxNTpcXHRcXHRhdGg2a2xfZXJyKFxcXCIlczogMHgleCBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgYXV0aF90eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE2LVxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjI6c3RhdGljIGludCBhdGg2a2xfc2V0X2NpcGhlcihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MzIgY2lwaGVyLCBib29sIHVjYXN0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjI4OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiBjaXBoZXIgMHgleCwgdWNhc3QgJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyOS1cXHRcXHQgICBfX2Z1bmNfXywgY2lwaGVyLCB1Y2FzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjU3LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1ODpcXHRcXHRhdGg2a2xfZXJyKFxcXCJjaXBoZXIgMHgleCBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBjaXBoZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTktXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NTpzdGF0aWMgdm9pZCBhdGg2a2xfc2V0X2tleV9tZ210KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBrZXlfbWdtdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY3OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiAweCV4XFxcXG5cXFwiLCBfX2Z1bmNfXywga2V5X21nbXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODQ6c3RhdGljIGJvb2wgYXRoNmtsX2NmZzgwMjExX3JlYWR5KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4NjpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVxcdGlmICghdGVzdF9iaXQoV01JX1JFQURZLCBcXHUwMDI2YXItXFx1MDAzZWZsYWcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4OTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJ3bWkgaXMgbm90IHJlYWR5XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjkwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTMtXFx0aWYgKCF0ZXN0X2JpdChXTEFOX0VOQUJMRUQsIFxcdTAwMjZ2aWYtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyOTQ6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwid2xhbiBkaXNhYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5NS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDE6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwYV9pZShjb25zdCB1OCAqcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzA4OnN0YXRpYyBib29sIGF0aDZrbF9pc19yc25faWUoY29uc3QgdTggKnBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMzpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BzX2llKGNvbnN0IHU4ICpwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjE6c3RhdGljIGludCBhdGg2a2xfc2V0X2Fzc29jX3JlcV9pZXMoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgY29uc3QgdTggKmllcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIyLVxcdFxcdFxcdFxcdCAgICBzaXplX3QgaWVzX2xlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzI0OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzI1LVxcdGNvbnN0IHU4ICpwb3M7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MTIuNDYxNTc3MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc5OTIwOTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQXRoZXJvcyA2eHh4IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgQXRoZXJvcyA2eHh4IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBpdCBmb3IgZnV6emluZy4gSSBzZWUgdHdvIG1haW4gY29ubmVjdGlvbiBtZXRob2RzOiBVU0IgKENPTkZJR19BVEg2S0xfVVNCKSBhbmQgU0RJTyAoQ09ORklHX0FUSDZLTF9TRElPKS4gVGhlIFVTQiBvcHRpb24gaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIGtub3cgVVNCIGRldmljZXMgY2FuIGJlIGZ1enplZCBlZmZlY3RpdmVseSB1c2luZyB0ZWNobmlxdWVzIGxpa2UgZHVtbXlfaGNkIGFuZCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgaGF2ZSBleHBlcmllbmNlIHVzaW5nIHRob3NlIHRvb2xzLiBXaGlsZSBTRElPIGZ1enppbmcgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZSwgYW5kIHN5emthbGxlciBoYXMgc29tZSBiYXNpYyBpbmplY3Rpb24gc3VwcG9ydCBmb3IgaXQsIHRoZXJlIGlzbid0IGEgbWF0dXJlLCBnZW5lcmljIFNESU8gZnV6emVyIGluIHN5emthbGxlciByaWdodCBub3cuIFRoZXJlZm9yZSwgVVNCIHNlZW1zIGxpa2UgdGhlIG1vcmUgZGlyZWN0IGFuZCBhY2Nlc3NpYmxlIHBhdGggZm9yIG5vdy5cblxuR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGBDT05GSUdfQVRINktMX1VTQmAuIExldCdzIGRpZyBkZWVwZXIuIFRoZSB1bHRpbWF0ZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGEgcmVhY2hhYmxlIGZ1bmN0aW9uLCBhbmQgSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YC4gVGhhdCdzIGluIGB0eHJ4LmNgLiBMZXQncyBkaXZlIGluIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBJJ20ga2VlbiB0byBzZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIHRoZSBVU0IgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NTMsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MTcuMTQxNTAwNDUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNjk2OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTYyOnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTk2My1cXHRcXHRcXHQgICAgIHU4IHdpbl9zeik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNjk4OnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjk5LVxcdFxcdFxcdCAgICAgdTggd2luX3N6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzU3OlxcdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVxcdTAwM2V0aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU4LVxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGNtZC1cXHUwMDNlc3Rfc2VxX25vKSwgY21kLVxcdTAwM2V3aW5fc3opO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoxNy4xOTUyMDIwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODI5NTQxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXTUkgQWRkQkEgUmVxdWVzdCBFdmVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAuIFJpZ2h0LCBXTUkg4oCTIFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UuIFRoYXQncyBob3cgd2UgdGFsayB0byB0aGUgZmlybXdhcmUgb24gdGhpcyB0aGluZy4gQW5kIHNpbmNlIHRoZSBmaXJtd2FyZSdzIG9uIHRoZSBVU0IgZGV2aWNlLCB0aGUgaG9zdCBpcyBnZXR0aW5nIHRoZXNlIFdNSSBtZXNzYWdlcyAqZnJvbSogdGhlIFVTQi4gSG1t4oCmIGEgdGhvdWdodCBvY2N1cnMuIElmIHdlJ3JlIGZ1enppbmcgdGhlIFVTQiBkZXZpY2UsIHdlJ3JlIGVzc2VudGlhbGx5IGZ1enppbmcgdGhlIFdNSSBpbnRlcmZhY2UgaXRzZWxmLCByaWdodD8gV2UgY2FuIHBvdGVudGlhbGx5IGluamVjdCBjb21wbGV0ZWx5IGFyYml0cmFyeSBXTUkgbWVzc2FnZXMgdG8gdGhlIGhvc3QhIFNvLCBhIGtleSB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIFVTQiByZWNlaXZlIHBhdGguIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGRldGVybWluZSB0aGUgb3JpZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUzMiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoyMC44NzgxNTk2ODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5NjM1NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzMzPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9nZXRfcG1raWRfbGlzdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTI6c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTMtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTM4NzY9c3RhdGljIGludCBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZihzdHJ1Y3Qgd21pICp3bWksIHUxNiBpZl9pZHgsIHUxNiBjbWRfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjItXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dNSSwgXFxcIldNSV9BRERCQV9SRVFfRVZFTlRJRFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozOTIzOlxcdFxcdHJldHVybiBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCh3bWksIGRhdGFwLCBsZW4sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTI0LVxcdGNhc2UgV01JX0RFTEJBX1JFUV9FVkVOVElEOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoyMC45MzAxMjc5NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDA2MDczNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBDb2RlIHZpYSBVU0IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgdHJhY2VkIHRoaXMgYmFjay4gVGhlIHJlbGV2YW50IGZ1bmN0aW9uIGlzIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBXTUkgZXZlbnRzLiBUaGVzZSBldmVudHMgYXJlLCBhcyBleHBlY3RlZCwgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGRldmljZSBpdHNlbGYuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGlmIHdlIGVtdWxhdGUgYSBVU0IgZGV2aWNlLCB3ZSBjYW4gZmVlZCBpdCBhIGNyYWZ0ZWQgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnQuIFRoZSByZWFsbHkgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHdpbl9zemAgZmllbGQ7IHdlIGNhbiBzZXQgdGhpcyBhcmJpdHJhcmlseS4gVGhhdCdzIGEgY2xhc3NpYyBzaWduYWwgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgbWVhbnMgd2UndmUgaWRlbnRpZmllZCBhIHJlYWNoYWJsZSBjb2RlIHBhdGgsIGFuZCBpdCdzIHByaW1lIHRlcnJpdG9yeSBmb3IgVVNCIGZ1enppbmcuXG5cbk5vdywgYmVmb3JlIHdlIGdldCB0b28gZXhjaXRlZCwgbGV0J3MgbWFrZSBzdXJlIG91ciBlbnZpcm9ubWVudCBpcyBzZXR1cCBjb3JyZWN0bHkuIFdlIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ6IGBDT05GSUdfQVRINktMYCBhbmQgY3J1Y2lhbGx5LCBgQ09ORklHX0FUSDZLTF9VU0JgLiBXZSBtaWdodCBhcyB3ZWxsIGVuYWJsZSBgQ09ORklHX0FUSDZLTF9TRElPYCBmb3IgZ29vZCBtZWFzdXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBldmVudCBpcyBoYW5kbGVkLiBMZXQncyBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBhdCB0aGUgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBmdW5jdGlvbi4gVGhpcyBzaG91bGQgYmUgd2hlcmUgdGhlIGp1aWN5IHN0dWZmIGhhcHBlbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjY3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjI1LjMzNjIwNDE0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjkwOlxcdFxcdHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3ogPSAwO1xcbjE2OTE6XFx0XFxuMTY5MjpcXHRcXHRrZnJlZShyeHRpZC1cXHUwMDNlaG9sZF9xKTtcXG4xNjkzOlxcdFxcdHJ4dGlkLVxcdTAwM2Vob2xkX3EgPSBOVUxMO1xcbjE2OTQ6XFx0XFxuMTY5NTpcXHRcXHRtZW1zZXQoc3RhdHMsIDAsIHNpemVvZihzdHJ1Y3Qgcnh0aWRfc3RhdHMpKTtcXG4xNjk2OlxcdH1cXG4xNjk3OlxcdFxcbjE2OTg6XFx0dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxcbjE2OTk6XFx0XFx0XFx0XFx0ICAgICB1OCB3aW5fc3opXFxuMTcwMDpcXHR7XFxuMTcwMTpcXHRcXHRzdHJ1Y3QgYXRoNmtsX3N0YSAqc3RhO1xcbjE3MDI6XFx0XFx0c3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dyX2Nvbm4gPSBOVUxMO1xcbjE3MDM6XFx0XFx0c3RydWN0IHJ4dGlkICpyeHRpZDtcXG4xNzA0OlxcdFxcdHUxNiBob2xkX3Ffc2l6ZTtcXG4xNzA1OlxcdFxcdHU4IHRpZCwgYWlkO1xcbjE3MDY6XFx0XFxuMTcwNzpcXHRcXHRpZiAodmlmLVxcdTAwM2Vud190eXBlID09IEFQX05FVFdPUkspIHtcXG4xNzA4OlxcdFxcdFxcdGFpZCA9IGF0aDZrbF9nZXRfYWlkKHRpZF9tdXgpO1xcbjE3MDk6XFx0XFx0XFx0c3RhID0gYXRoNmtsX2ZpbmRfc3RhX2J5X2FpZCh2aWYtXFx1MDAzZWFyLCBhaWQpO1xcbjE3MTA6XFx0XFx0XFx0aWYgKHN0YSlcXG4xNzExOlxcdFxcdFxcdFxcdGFnZ3JfY29ubiA9IHN0YS1cXHUwMDNlYWdncl9jb25uO1xcbjE3MTI6XFx0XFx0fSBlbHNlIHtcXG4xNzEzOlxcdFxcdFxcdGFnZ3JfY29ubiA9IHZpZi1cXHUwMDNlYWdncl9jbnR4dC1cXHUwMDNlYWdncl9jb25uO1xcbjE3MTQ6XFx0XFx0fVxcbjE3MTU6XFx0XFxuMTcxNjpcXHRcXHRpZiAoIWFnZ3JfY29ubilcXG4xNzE3OlxcdFxcdFxcdHJldHVybjtcXG4xNzE4OlxcdFxcbjE3MTk6XFx0XFx0dGlkID0gYXRoNmtsX2dldF90aWQodGlkX211eCk7XFxuMTcyMDpcXHRcXHRpZiAodGlkIFxcdTAwM2U9IE5VTV9PRl9USURTKVxcbjE3MjE6XFx0XFx0XFx0cmV0dXJuO1xcbjE3MjI6XFx0XFxuMTcyMzpcXHRcXHRyeHRpZCA9IFxcdTAwMjZhZ2dyX2Nvbm4tXFx1MDAzZXJ4X3RpZFt0aWRdO1xcbjE3MjQ6XFx0XFxuMTcyNTpcXHRcXHRpZiAocnh0aWQtXFx1MDAzZWFnZ3IpXFxuMTcyNjpcXHRcXHRcXHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xcbjE3Mjc6XFx0XFxuMTcyODpcXHRcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbjE3Mjk6XFx0XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuMTczMDpcXHRcXHRcXHRcXHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xcbjE3MzE6XFx0XFx0XFx0cmV0dXJuO1xcbjE3MzI6XFx0XFx0fVxcbjE3MzM6XFx0XFxuMTczNDpcXHRcXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XFxuMTczNTpcXHRcXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XFxuMTczNjpcXHRcXHRyeHRpZC1cXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuMTczNzpcXHRcXHRpZiAoIXJ4dGlkLVxcdTAwM2Vob2xkX3EpXFxuMTczODpcXHRcXHRcXHRyZXR1cm47XFxuMTczOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MjUuMzM2MzU5MTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxOTM3Mzk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBZGRyZXNzaW5nIGEgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWUqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRyeWluZyB0byBmaXggYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGByZXR1cm5gIHN0YXRlbWVudCB3aGVuIGB3aW5fc3pgIGlzIG91dCBvZiBib3VuZHMuIFByZXZpb3VzbHksIHRoZSBjb2RlIGp1c3QgbG9nZ2VkIGEgZGVidWcgbWVzc2FnZSBhbmQga2VwdCBnb2luZy4gVGhhdCdzIGEgaHVnZSByZWQgZmxhZyBiZWNhdXNlIGBob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7YCB1c2VzIGB3aW5fc3pgIHRvIGNhbGN1bGF0ZSB0aGUgYWxsb2NhdGlvbiBzaXplLiBDbGVhcmx5LCBhbiBvdXQtb2YtYm91bmRzIGB3aW5fc3pgIGNvdWxkIGxlYWQgdG8gc29tZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uLCBsZWFkaW5nIHRvIGNyYXNoZXMgb3Igc2VjdXJpdHkgcHJvYmxlbXMuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaDsgSSBzaG91bGQgZG91YmxlLWNoZWNrIGhvdyBgVElEX1dJTkRPV19TWih3aW5fc3opYCBpcyBkZWZpbmVkIGFuZCBvcGVyYXRlcy4gSXQgY291bGQgYmUgZG9pbmcgc29tZSBjbGV2ZXIgY2xhbXBpbmcgb3IgdmFsaWRhdGlvbiB0aGF0IHdvdWxkIG1ha2UgdGhlIGluaXRpYWwgY29uY2VybiBtb290LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gR290dGEgdHJhY2UgdGhhdCBtYWNybyBhbmQgbWFrZSBzdXJlIGl0J3Mgbm90IHRoZSBzb3VyY2Ugb2YgYW5vdGhlciBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTU5MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjI4Ljg1NTczNTk3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM4NzAwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBUSURfV0lORE9XX1NaXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6MjcyOiNkZWZpbmUgVElEX1dJTkRPV19TWihfeCkgICAoKF94KSBcXHUwMDNjXFx1MDAzYyAxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MjguOTA5NjExMDU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5ODE2NjMwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBNZW1vcnkgQWxsb2NhdGlvbiBDb25jZXJucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgbWFjcm8sIGFuZCBpdCdzIGRlZmluZWQgYXMgYCh3aW5fc3opIFx1MDAzY1x1MDAzYyAxYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIk9rYXksIGJpdC1zaGlmdGluZy4gVGhhdCdzIHVzdWFsbHkgZWZmaWNpZW50LCBidXQgaXMgaXQgY3JlYXRpbmcgYSBwb3RlbnRpYWxseSBsYXJnZSBtZW1vcnkgYWxsb2NhdGlvbj9cIiBFc3BlY2lhbGx5IHNpbmNlIHRoaXMgYHdpbl9zemAgcGFyYW1ldGVyIGlzIGxpa2VseSB1c2VkIHRvIHNpemUgc29tZSBzb3J0IG9mIGJ1ZmZlciBvciBkYXRhIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBmb3IgYSBsYXJnZSBzaGlmdCBpcyBjb25jZXJuaW5nLlxuXG5CdXQgdGhlbiBJIHJlbWVtYmVyLCBvciByYXRoZXIsIEkgKnJlYWxpemUqLCB0aGF0IGB3aW5fc3pgIGlzIGEgYHU4YC4gVGhhdCdzIGltcG9ydGFudC4gQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlciBtYXhlcyBvdXQgYXQgMjU1LiBTbywgdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8gd2l0aCB0aGUgc2hpZnQgaXMgMjU1IFx1MDAzY1x1MDAzYyAxLCB3aGljaCBlcXVhbHMgNTEwLiBPa2F5LCA1MTAuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGZvciBtZW1vcnkgdXNhZ2UuIEkgbmVlZCB0byBtdWx0aXBseSB0aGF0IHZhbHVlLCA1MTAsIGJ5IGBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpYC4gU2luY2UgYHNrYl9ob2xkX3FgIHNlZW1zIGxpa2UgYSByZWFzb25hYmx5IHNpemVkIHN0cnVjdHVyZSwgaXQncyB1bmxpa2VseSBhIDUxMCAqIGBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpYCBhbGxvY2F0aW9uIGlzIGEgbWFqb3IgbWVtb3J5IGhvZy4gXG5cbkhvd2V2ZXIsIGJlZm9yZSBJIGNhbiBjb25maWRlbnRseSBzYXkgaXQncyBzYWZlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudC4gSXMgYHdpbl9zemAgdXNlZCBpbiBtb3JlIHBsYWNlcyB0aGFuIGp1c3QgdGhpcyBtYWNybz8gSXQncyBlc3NlbnRpYWwgdG8gdHJhY2Ugd2hlcmUgdGhpcyBgd2luX3N6YCB2YXJpYWJsZSBpcyB1c2VkLCBJIHNob3VsZCBjaGVjayBgcnh0aWQtXHUwMDNld2luX3N6YCwgaXQgbWlnaHQgYmUgdXNlZCBlbHNld2hlcmUgYW5kIGltcGFjdCBtZW1vcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjMzLjg5MTI3NjM4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzODI1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2luX3N6XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTMyMz1zdHJ1Y3Qgcnh0aWQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzI1LVxcdGJvb2wgdGltZXJfbW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjMyNjpcXHR1MTYgd2luX3N6O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTMyNy1cXHR1MTYgc2VxX25leHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0zMzYtXFx0ICogcmVvcmRlciBmcmFtZXMgYW5kIGl0J3MgYWNjZXNzIHNob3VsZCBhbHNvIGJlIHByb3RlY3RlZC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDozMzc6XFx0ICogU29tZSBvZiB0aGUgb3RoZXIgZmllbGRzIGxpa2UgaG9sZF9xX3N6LCB3aW5fc3ogYW5kIGFnZ3IgYXJlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzM4LVxcdCAqIGluaXRpYWxpemVkL3Jlc2V0IHdoZW4gcmVjZWl2aW5nIGFkZGJhL2RlbGJhIHJlcSwgYWxzbyB3aGlsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9OTYyPXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjk2MzpcXHRcXHRcXHQgICAgIHU4IHdpbl9zeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTY0LXZvaWQgYXRoNmtsX3dha2V1cF9ldmVudCh2b2lkICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTA0Nj1zdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA2Ni1cXHQgKiBpbmRleCBwb3NpdGlvbiBhcyBpbmRleCB0aGF0IGlzIGp1c3QgcHJldmlvdXMgdG8gc3RhcnQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA2NzpcXHQgKiBBbiBpbXAgcG9pbnQgOiBpZiB3aW5fc3ogaXMgNywgZm9yIHNlcV9ubyBzcGFjZSBvZiA0MDk1LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNjgtXFx0ICogdGhlbiwgdGhlcmUgd291bGQgYmUgaG9sZXMgd2hlbiBzZXF1ZW5jZSB3cmFwIGFyb3VuZCBvY2N1cnMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA2OTpcXHQgKiBUYXJnZXQgc2hvdWxkIGp1ZGljaW91c2x5IGNob29zZSB0aGUgd2luX3N6LCBiYXNlZCBvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjEwNzA6XFx0ICogdGhpcyBjb25kaXRpb24uIEZvciA0MDk1LCAoVElEX1dJTkRPV19TWiA9IDIgeCB3aW5fc3pcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDcxOlxcdCAqIDIsIDQsIDgsIDE2IHdpbl9zeiB3b3JrcyBmaW5lKS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDcyLVxcdCAqIFdlIG11c3QgZGVxdWUgZnJvbSBcXFwiaWR4XFxcIiB0byBcXFwiaWR4X2VuZFxcXCIsIGluY2x1ZGluZyBib3RoLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTY3Mj1zdGF0aWMgdm9pZCBhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dyX2Nvbm4sIHU4IHRpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2ODctXFx0cnh0aWQtXFx1MDAzZXRpbWVyX21vbiA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2ODg6XFx0cnh0aWQtXFx1MDAzZXdpbl9zeiA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY4OS1cXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTY5OD12b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY5OTpcXHRcXHRcXHQgICAgIHU4IHdpbl9zeilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTcyODpcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3Mjk6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczMDpcXHRcXHRcXHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczNC1cXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczNTpcXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczNi1cXHRyeHRpZC1cXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3NDA6XFx0cnh0aWQtXFx1MDAzZXdpbl9zeiA9IHdpbl9zejtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzQxOlxcdHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3ogPSBUSURfV0lORE9XX1NaKHdpbl9zeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTc0Mi1cXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcXHUwMDI2cnh0aWQtXFx1MDAzZXEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTctXFx0YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQodmlmLCBjbWQtXFx1MDAzZXRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTg6XFx0XFx0XFx0XFx0bGUxNl90b19jcHUoY21kLVxcdTAwM2VzdF9zZXFfbm8pLCBjbWQtXFx1MDAzZXdpbl9zeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaD0yMTY1PXN0cnVjdCB3bWlfYWRkYmFfcmVxX2V2ZW50IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oLTIxNjYtXFx0dTggdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmg6MjE2NzpcXHR1OCB3aW5fc3o7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaC0yMTY4LVxcdF9fbGUxNiBzdF9zZXFfbm87XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjMzLjk0NTY2NTA3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE1Nzg2NzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogQUdHUl9XSU5fU1ogUGFyYW1ldGVycyoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIEknbSBsb29raW5nIGF0IGBBR0dSX1dJTl9TWl9NSU5gIGFuZCBgQUdHUl9XSU5fU1pfTUFYYC4gIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgYXJlIHNldHRpbmcgdXAgYW5kIHdoYXQgaXMgaGFwcGVuaW5nLiAgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgaXMuIEknbSBhc3N1bWluZyB3ZSdyZSBkZWFsaW5nIHdpdGggYWdncmVnYXRpb24gd2luZG93IHNpemVzIGhlcmUsIG1vc3QgbGlrZWx5IGluIGEgdGltZS1zZXJpZXMgY29udGV4dCBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBleGFjdCBzcGVjaWZpY3Mgb2YgdGhlaXIgZGVmaW5pdGlvbiB3aXRoaW4gKnRoaXMqIHBhcnRpY3VsYXIgc3lzdGVtLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIG1pbmltdW0gYW5kIG1heGltdW0gZm9yIGEgbW92aW5nIGF2ZXJhZ2Ugd2luZG93LCBhIGJ1Y2tldGluZyBzdHJhdGVneSwgYSB0aW1lIHdpbmRvdyBmb3IgYW5hbHlzaXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgaW1wbGljYXRpb25zIGZvciByZXNvdXJjZSBjb25zdW1wdGlvbiwgYWNjdXJhY3ksIGFuZCBsYXRlbmN5IGFyZSBnb2luZyB0byBoaW5nZSBkaXJlY3RseSBvbiB3aGF0IHRoZXNlIHBhcmFtZXRlcnMgY29udHJvbC4gTGV0IG1lIGxvb2sgYXQgdGhlIGNvZGUvZG9jdW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQgaXMgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjM3LjQ2MTQ1ODM5MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3MzM0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQUdHUl9XSU5fU1pfTUFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNjktI2RlZmluZSBBR0dSX1dJTl9TWl9NSU4gICAgIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNzA6I2RlZmluZSBBR0dSX1dJTl9TWl9NQVggICAgIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjk4PXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTcyODpcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjktXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjM3LjUxNDE5NzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyNTIyNjU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyBpbiBXaW5kb3cgU2l6ZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIGBBR0dSX1dJTl9TWl9NQVhgIGlzIGRlZmluZWQgYXMgOC4gVGhhdCdzIG91ciBtYXhpbXVtIGRlZmluZWQgd2luZG93IHNpemUuIEknbSB3b25kZXJpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiAqbm90KiBlbmZvcmNpbmcgdGhpcyBsaW1pdC4gTGV0J3Mgc2F5IGB3aW5fc3pgIHNvbWVob3cgZ2V0cyBzZXQgdG8gYW4gYXJiaXRyYXJpbHkgbGFyZ2UgdmFsdWUsIGxpa2UgMjU1LiBUaGF0IHdvdWxkIG1lYW4gYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgd291bGQgcmVzdWx0IGluIDUxMC4gTm93LCA1MTAgbXVsdGlwbGllZCBieSB0aGUgc2l6ZSBvZiBgc3RydWN0IHNrYl9ob2xkX3FgLCB3aGljaCBJIGtub3cgaXMgOCBieXRlcyBvbiBhIDMyLWJpdCBzeXN0ZW0gb3IgMTYgb24gYSA2NC1iaXQgc3lzdGVtLCBnaXZlcyB1cyBhbiBhbGxvY2F0aW9uIHNpemUgb2YgZWl0aGVyIDQwODAgb3IgODE2MCBieXRlcy4gSXQncyBub3QgYSBodWdlIGFsbG9jYXRpb24gdGhhdCB3b3VsZCB0cmlnZ2VyIGltbWVkaWF0ZSBtZW1vcnkgZXhoYXVzdGlvbiwgYnV0IGl0J3MgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgKmNvdWxkKiBiZSBhIGNvbnRyaWJ1dGluZyBmYWN0b3Igb3IgYSBzeW1wdG9tIG9mIGFuIGVycm9yIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgbWlnaHQgY2F1c2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgaXQncyBub3QgaGFuZGxlZCBjb3JyZWN0bHkgZWxzZXdoZXJlLlxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhpcyBgd2luX3N6YCBpcyB1c2VkLiBGb3IgaW5zdGFuY2UsIGByeHRpZC1cdTAwM2Vob2xkX3Ffc3pgIGlzIHNldCB0byBgVElEX1dJTkRPV19TWih3aW5fc3opYCwgd2hpY2ggaXMgdGhlIHNpemUgd2UganVzdCBjYWxjdWxhdGVkLiBBbmQgaGFuZyBvbiwgYGFnZ3JfZGVxdWVfZnJtc2AgbWFrZXMgdXNlIG9mIGByeHRpZC1cdTAwM2Vob2xkX3Ffc3pgLiBUaGlzIGlzIGNvbmNlcm5pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpZiB0aGVyZSdzIGFuIGFycmF5IGRlZmluZWQgdXNpbmcgYHJ4dGlkLVx1MDAzZWhvbGRfcV9zemAgaW4gYGFnZ3JfZGVxdWVfZnJtc2AsIHdlIGhhdmUgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gTm93IEkgbmVlZCB0byBjaGVjayBgYWdncl9kZXF1ZV9mcm1zYCB0byBzZWUgaWYgdGhlcmUncyBhIGZpeGVkLXNpemUgYXJyYXkgdGhlcmUgdGhhdCdzIHJlbHlpbmcgb24gYHJ4dGlkLVx1MDAzZWhvbGRfcV9zemAgZm9yIGluZGV4aW5nLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBpZWNlLiBMZXQncyBkaXZlIGludG8gdGhhdCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NDcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6NDMuMTM5NDI4Mjk3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY0ODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZ2dyX2RlcXVlX2ZybXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9OTkwPXN0YXRpYyB2b2lkIGFnZ3Jfc2xpY2VfYW1zZHUoc3RydWN0IGFnZ3JfaW5mbyAqcF9hZ2dyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDQ2OnN0YXRpYyB2b2lkIGFnZ3JfZGVxdWVfZnJtcyhzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA0Ny1cXHRcXHRcXHQgICAgdTE2IHNlcV9ubywgdTggb3JkZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xMTA1PXN0YXRpYyBib29sIGFnZ3JfcHJvY2Vzc19yZWN2X2ZybShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMTQ3LVxcdFxcdCAgICAgKGN1ciBcXHUwMDNjIGVuZCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTE0ODpcXHRcXHRcXHRhZ2dyX2RlcXVlX2ZybXMoYWdnX2Nvbm4sIHRpZCwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE0OS1cXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnJ4dGlkLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTE2NzpcXHRcXHRcXHRhZ2dyX2RlcXVlX2ZybXMoYWdnX2Nvbm4sIHRpZCwgc3QsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNjgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTIwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMjA2OlxcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dfY29ubiwgdGlkLCAwLCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMjA3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTYyMz1zdGF0aWMgdm9pZCBhZ2dyX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjQyLVxcdFxcdFxcdCAgICBBVEg2S0xfTUFYX1NFUV9OTykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2NDM6XFx0XFx0YWdncl9kZXF1ZV9mcm1zKGFnZ3JfY29ubiwgaSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY0NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY4My1cXHRpZiAocnh0aWQtXFx1MDAzZWFnZ3IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY4NDpcXHRcXHRhZ2dyX2RlcXVlX2ZybXMoYWdncl9jb25uLCB0aWQsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2ODUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjQzLjE5MzA4MzE4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgzNjI0OTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipEZWNvbnN0cnVjdGluZyB0aGUgQWdncmVnYXRpb24gUHJvY2VzcyoqXG5cbkFoYSEgSGFuZyBvbiBhIHNlY29uZCwgaXNuJ3QgYHdpbl9zemAgYmVpbmcgdXNlZCB3aXRoaW4gYGFnZ3JfZGVxdWVfZnJtc2A/IFRoYXQncyBhIGtleSBkZXRhaWwgSSBtaWdodCBoYXZlIG1pc3NlZCBlYXJsaWVyLiBSaWdodCwgcmlnaHQsIGxldCdzIGRpdmUgaW50byBgYWdncl9kZXF1ZV9mcm1zYCBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBjcnlzdGFsIGNsZWFyIG9uIGhvdyBgd2luX3N6YCBpcyBpbXBhY3RpbmcgdGhlIGFnZ3JlZ2F0aW9uIGxvZ2ljLiBHb3R0YSB0cmFjZSB0aGUgZGF0YSBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoYXQgd2luZG93IHNpemUgcGFyYW1ldGVyIGFuZCB0aGUgZGVxdWUgbWFuaXB1bGF0aW9uLiBHb3R0YSBnZXQgdGhpcyBzdHJhaWdodCBiZWZvcmUgSSBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQyOSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjQ2LjI3NjcxMDQ1MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA0NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA0NjpcXHRzdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxcbjEwNDc6XFx0XFx0XFx0XFx0ICAgIHUxNiBzZXFfbm8sIHU4IG9yZGVyKVxcbjEwNDg6XFx0e1xcbjEwNDk6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4xMDUwOlxcdFxcdHN0cnVjdCByeHRpZCAqcnh0aWQ7XFxuMTA1MTpcXHRcXHRzdHJ1Y3Qgc2tiX2hvbGRfcSAqbm9kZTtcXG4xMDUyOlxcdFxcdHUxNiBpZHgsIGlkeF9lbmQsIHNlcV9lbmQ7XFxuMTA1MzpcXHRcXHRzdHJ1Y3Qgcnh0aWRfc3RhdHMgKnN0YXRzO1xcbjEwNTQ6XFx0XFxuMTA1NTpcXHRcXHRyeHRpZCA9IFxcdTAwMjZhZ2dfY29ubi1cXHUwMDNlcnhfdGlkW3RpZF07XFxuMTA1NjpcXHRcXHRzdGF0cyA9IFxcdTAwMjZhZ2dfY29ubi1cXHUwMDNlc3RhdFt0aWRdO1xcbjEwNTc6XFx0XFxuMTA1ODpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnJ4dGlkLVxcdTAwM2Vsb2NrKTtcXG4xMDU5OlxcdFxcdGlkeCA9IEFHR1JfV0lOX0lEWChyeHRpZC1cXHUwMDNlc2VxX25leHQsIHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3opO1xcbjEwNjA6XFx0XFxuMTA2MTpcXHRcXHQvKlxcbjEwNjI6XFx0XFx0ICogaWR4X2VuZCBpcyB0eXBpY2FsbHkgdGhlIGxhc3QgcG9zc2libGUgZnJhbWUgaW4gdGhlIHdpbmRvdyxcXG4xMDYzOlxcdFxcdCAqIGJ1dCBjaGFuZ2VzIHRvICd0aGUnIHNlcV9ubywgd2hlbiBCQVIgY29tZXMuIElmIHNlcV9ub1xcbjEwNjQ6XFx0XFx0ICogaXMgbm9uLXplcm8sIHdlIHdpbGwgZ28gdXAgdG8gdGhhdCBhbmQgc3RvcC5cXG4xMDY1OlxcdFxcdCAqIE5vdGU6IGxhc3Qgc2VxIG5vIGluIGN1cnJlbnQgd2luZG93IHdpbGwgb2NjdXB5IHRoZSBzYW1lXFxuMTA2NjpcXHRcXHQgKiBpbmRleCBwb3NpdGlvbiBhcyBpbmRleCB0aGF0IGlzIGp1c3QgcHJldmlvdXMgdG8gc3RhcnQuXFxuMTA2NzpcXHRcXHQgKiBBbiBpbXAgcG9pbnQgOiBpZiB3aW5fc3ogaXMgNywgZm9yIHNlcV9ubyBzcGFjZSBvZiA0MDk1LFxcbjEwNjg6XFx0XFx0ICogdGhlbiwgdGhlcmUgd291bGQgYmUgaG9sZXMgd2hlbiBzZXF1ZW5jZSB3cmFwIGFyb3VuZCBvY2N1cnMuXFxuMTA2OTpcXHRcXHQgKiBUYXJnZXQgc2hvdWxkIGp1ZGljaW91c2x5IGNob29zZSB0aGUgd2luX3N6LCBiYXNlZCBvblxcbjEwNzA6XFx0XFx0ICogdGhpcyBjb25kaXRpb24uIEZvciA0MDk1LCAoVElEX1dJTkRPV19TWiA9IDIgeCB3aW5fc3pcXG4xMDcxOlxcdFxcdCAqIDIsIDQsIDgsIDE2IHdpbl9zeiB3b3JrcyBmaW5lKS5cXG4xMDcyOlxcdFxcdCAqIFdlIG11c3QgZGVxdWUgZnJvbSBcXFwiaWR4XFxcIiB0byBcXFwiaWR4X2VuZFxcXCIsIGluY2x1ZGluZyBib3RoLlxcbjEwNzM6XFx0XFx0ICovXFxuMTA3NDpcXHRcXHRzZXFfZW5kID0gc2VxX25vID8gc2VxX25vIDogcnh0aWQtXFx1MDAzZXNlcV9uZXh0O1xcbjEwNzU6XFx0XFx0aWR4X2VuZCA9IEFHR1JfV0lOX0lEWChzZXFfZW5kLCByeHRpZC1cXHUwMDNlaG9sZF9xX3N6KTtcXG4xMDc2OlxcdFxcbjEwNzc6XFx0XFx0ZG8ge1xcbjEwNzg6XFx0XFx0XFx0bm9kZSA9IFxcdTAwMjZyeHRpZC1cXHUwMDNlaG9sZF9xW2lkeF07XFxuMTA3OTpcXHRcXHRcXHRpZiAoKG9yZGVyID09IDEpIFxcdTAwMjZcXHUwMDI2ICghbm9kZS1cXHUwMDNlc2tiKSlcXG4xMDgwOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjEwODE6XFx0XFxuMTA4MjpcXHRcXHRcXHRpZiAobm9kZS1cXHUwMDNlc2tiKSB7XFxuMTA4MzpcXHRcXHRcXHRcXHRpZiAobm9kZS1cXHUwMDNlaXNfYW1zZHUpXFxuMTA4NDpcXHRcXHRcXHRcXHRcXHRhZ2dyX3NsaWNlX2Ftc2R1KGFnZ19jb25uLVxcdTAwM2VhZ2dyX2luZm8sIHJ4dGlkLFxcbjEwODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5vZGUtXFx1MDAzZXNrYik7XFxuMTA4NjpcXHRcXHRcXHRcXHRlbHNlXFxuMTA4NzpcXHRcXHRcXHRcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cnh0aWQtXFx1MDAzZXEsIG5vZGUtXFx1MDAzZXNrYik7XFxuMTA4ODpcXHRcXHRcXHRcXHRub2RlLVxcdTAwM2Vza2IgPSBOVUxMO1xcbjEwODk6XFx0XFx0XFx0fSBlbHNlIHtcXG4xMDkwOlxcdFxcdFxcdFxcdHN0YXRzLVxcdTAwM2VudW1faG9sZSsrO1xcbjEwOTE6XFx0XFx0XFx0fVxcbjEwOTI6XFx0XFxuMTA5MzpcXHRcXHRcXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBBVEg2S0xfTkVYVF9TRVFfTk8ocnh0aWQtXFx1MDAzZXNlcV9uZXh0KTtcXG4xMDk0OlxcdFxcdFxcdGlkeCA9IEFHR1JfV0lOX0lEWChyeHRpZC1cXHUwMDNlc2VxX25leHQsIHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3opO1xcbjEwOTU6XFx0XFx0fSB3aGlsZSAoaWR4ICE9IGlkeF9lbmQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo0Ni4yNzY4MjIxOTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MjM1NDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgQUdHUl9XSU5fSURYYCoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gYEFHR1JfV0lOX0lEWGAuIEdpdmVuIGl0cyBjb250ZXh0LCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgdGhpcyBpbmRleCBpcyBiZWluZyBkZXJpdmVkIGZyb20gYSBzZXF1ZW5jZSBudW1iZXIsIG1vc3QgbGlrZWx5IHVzaW5nIGEgbW9kdWxvIG9yIGJpdHdpc2UgQU5EIG9wZXJhdGlvbiB0byB3cmFwIGl0IHdpdGhpbiBhIGJ1ZmZlciBzaXplLCBgaG9sZF9xX3N6YC4gU3BlY2lmaWNhbGx5LCBJJ20gbGVhbmluZyB0b3dhcmRzIGVpdGhlciBgc2VxICUgaG9sZF9xX3N6YCBvciB0aGUgYml0d2lzZSBlcXVpdmFsZW50IGBzZXEgXHUwMDI2IChob2xkX3Ffc3ogLSAxKWAuIFRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgYXBwcm9hY2hlcyBmb3IgaW1wbGVtZW50aW5nIGEgY2lyY3VsYXIgYnVmZmVyIG9yIGEgcmluZyBidWZmZXIsIHdoaWNoIHNlZW1zIHRoZSBtb3N0IGxpa2VseSBzY2VuYXJpbyBnaXZlbiB0aGUgbmFtZXMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlIG9mIGBBR0dSX1dJTl9JRFhgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QuIEknbGwgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgaG9sZF9xX3N6YCBpcyBhIHBvd2VyIG9mIDIgdG8gdmFsaWRhdGUgdGhlIGJpdHdpc2UgQU5EIGFwcHJvYWNoLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBob3cgYHNlcWAgaXMgZ2VuZXJhdGVkLCBhbmQgaG93IGBBR0dSX1dJTl9JRFhgIGlzIHRoZW4gZW1wbG95ZWQgdG8gYWNjZXNzIGFuZCB1cGRhdGUgc3BlY2lmaWMgbG9jYXRpb25zIHdpdGhpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUuIEl0J3MgYWxsIGFib3V0IHZlcmlmeWluZyB0aGF0IHRoZSBtb2R1bG8gb3BlcmF0aW9uIGlzIHByb3Blcmx5IGhhbmRsaW5nIHRoZSBjeWNsaWNhbCBuYXR1cmUgb2YgdGhlIGJ1ZmZlci4gQW55IGRpc2NyZXBhbmNpZXMgaGVyZSBjb3VsZCBsZWFkIHRvIHNpZ25pZmljYW50IGRhdGEgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGdvYWwgaXMgdG8gZGVlcGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTY3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo1MC40MTkxODAzN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyNDk4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBBR0dSX1dJTl9JRFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9MTY2PWVudW0gYXRoNmtsX2h3X2ZsYWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNjA6I2RlZmluZSBBR0dSX1dJTl9JRFgoeCwgeSkgICAgICAgICAgKCh4KSAlICh5KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNjEtI2RlZmluZSBBR0dSX0lOQ1JfSURYKHgsIHkpICAgICAgICAgQUdHUl9XSU5fSURYKCgoeCkgKyAxKSwgKHkpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo1MC40NzM0MzUwNDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk0MTI5NTM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpZGUgYnkgWmVybyBCdWcgQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCdzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkLiBJJ3ZlIHNwb3R0ZWQgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gdnVsbmVyYWJpbGl0eS4gVGhlIGBBR0dSX1dJTl9JRFgoeCwgeSlgIG1hY3JvIGlzIGltcGxlbWVudGVkIGFzIGAoKHgpICUgKHkpKWAuIFNpbXBsZSBlbm91Z2gsIGJ1dCBpZiBgeWAgaXMgemVybywgd2UndmUgZ290IGEgcHJvYmxlbS4gIFxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGB5YCBpcyBlcXVpdmFsZW50IHRvIGByeHRpZC1cdTAwM2Vob2xkX3Ffc3pgLiBEaWdnaW5nIGRlZXBlciwgYHJ4dGlkLVx1MDAzZWhvbGRfcV9zemAgaXMgZGVyaXZlZCBmcm9tIGBUSURfV0lORE9XX1NaKHdpbl9zeilgLCBhbmQgdGhhdCBtYWNybyBleHBhbmRzIHRvIGAod2luX3N6KSBcdTAwM2NcdTAwM2MgMWAuICBTbywgaWYgYHdpbl9zemAgaGFwcGVucyB0byBiZSB6ZXJvLCBgaG9sZF9xX3N6YCBlbmRzIHVwIGJlaW5nIHplcm8gYXMgd2VsbC4gVGhlbiB0aGUgYEFHR1JfV0lOX0lEWGAgbWFjcm8gYmVjb21lcyBgc2VxX25leHQgJSAwYCwgd2hpY2ggKmRlZmluaXRlbHkqIGNhdXNlcyBhIGtlcm5lbCBwYW5pYyB3aXRoIGEgZGl2aWRlLWJ5LXplcm8gZXJyb3IuXG5cblRoZSBwcm92aWRlZCBwYXRjaCBhZGRyZXNzZXMgdGhpcyBoZWFkLW9uLiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBpZiAod2luX3N6IFx1MDAzYyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6IFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpYC4gIFNpbmNlIGBBR0dSX1dJTl9TWl9NSU5gIGlzIDIsIHRoaXMgZWZmZWN0aXZlbHkgcHJldmVudHMgYHdpbl9zemAgZnJvbSBldmVyIGJlaW5nIHplcm8uIFRoYXQncyBhIHNvbGlkIGZpeCwgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBmaXhlcyB0aGF0IGRpdmlkZSBieSB6ZXJvIVxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgbGV0J3MgZmlndXJlIG91dCB3aGVyZSB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCwgc28gdGhhdCdzIGEgcHJpbWUgdGFyZ2V0LiAgV2Ugc2hvdWxkIGFsc28gYmUgbG9va2luZyBhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBBbmQsIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgYGFnZ3JfZGVxdWVfZnJtc2AgYXMgd2VsbC4gIEknbGwgbmVlZCB0byBjaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc3RhcnQgZGlnZ2luZyBhIGJpdCBkZWVwZXIgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTA4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjU2LjQxNDczMzU3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMzYwMDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTYyOnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTk2My1cXHRcXHRcXHQgICAgIHU4IHdpbl9zeik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNjk4OnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjk5LVxcdFxcdFxcdCAgICAgdTggd2luX3N6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzU3OlxcdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVxcdTAwM2V0aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU4LVxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGNtZC1cXHUwMDNlc3Rfc2VxX25vKSwgY21kLVxcdTAwM2V3aW5fc3opO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo1Ni42MDUwOTgzNzlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MTYwNDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBCQSBSZXF1ZXN0IEV2ZW50IEhhbmRsaW5nKipcblxuUmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhpcyBwcm9ibGVtLiBUaGUgc3lzdGVtJ3MgdHJpZ2dlcmVkIGJ5IHRoZXNlIHN5bWJvbHM6IGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAsIGFuZCBgYWdncl9kZXF1ZV9mcm1zYC4gVGhhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgIGxvb2tzIGxpa2UgdGhlIGNyaXRpY2FsIG9uZSwgdGhlIHJlY2VpdmVyIG9mIHRoZSBBZGRCQSByZXF1ZXN0IGV2ZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGl0LCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gb3VyIGFnZ3JlZ2F0aW9uIGZyYW1ld29yay5cblxuT2theSwgbXkgZmlyc3QgcG9ydCBvZiBjYWxsIHdpbGwgYmUgdG8gY2hlY2sgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCBzcGVjaWZpY2FsbHkuIFRoYXQgc2hvdWxkIGJlIGluIGB3bWkuY2AsIHJpZ2h0PyBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBXTUkgZXZlbnQgaGFuZGxpbmcgdXN1YWxseSBzaXRzLCBzbyB0aGF0J3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEknbGwgY2hlY2sgaG93IGl0J3MgaGFuZGxlZCB3aXRoaW4gdGhlIGxhcmdlciBXTUkgZnJhbWV3b3JrLiBUaGUgYHdtaWAgZmlsZSBpcyB0aGUgY2VudHJhbCBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZSBpbnRlcmFjdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgcmVhY3RpbmcgdG8gdGhlIGV2ZW50LCBob3cgaXQncyBwYXJzaW5nIHRoZSByZXF1ZXN0LCBhbmQgd2hhdCBhY3Rpb25zIGl0J3MgdGFraW5nIGluIHJlc3BvbnNlLiBUaGVuIEkgY2FuIHRyYWNlIHRoZSBmbG93IGZyb20gdGhlcmUuIEkgZXhwZWN0IHRoYXQgd2lsbCBpbGx1bWluYXRlIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBhZ2dyZWdhdGUgZnJhbWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQzMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjAwLjA3NjcwNTQ4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzUyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzUyOlxcdHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuMzM1MzpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG4zMzU0OlxcdHtcXG4zMzU1OlxcdFxcdHN0cnVjdCB3bWlfYWRkYmFfcmVxX2V2ZW50ICpjbWQgPSAoc3RydWN0IHdtaV9hZGRiYV9yZXFfZXZlbnQgKikgZGF0YXA7XFxuMzM1NjpcXHRcXG4zMzU3OlxcdFxcdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVxcdTAwM2V0aWQsXFxuMzM1ODpcXHRcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShjbWQtXFx1MDAzZXN0X3NlcV9ubyksIGNtZC1cXHUwMDNld2luX3N6KTtcXG4zMzU5OlxcdFxcbjMzNjA6XFx0XFx0cmV0dXJuIDA7XFxuMzM2MTpcXHR9XFxuMzM2MjpcXHRcXG4zMzYzOlxcdHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9kZWxiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuMzM2NDpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG4zMzY1OlxcdHtcXG4zMzY2OlxcdFxcdHN0cnVjdCB3bWlfZGVsYmFfZXZlbnQgKmNtZCA9IChzdHJ1Y3Qgd21pX2RlbGJhX2V2ZW50ICopIGRhdGFwO1xcbjMzNjc6XFx0XFxuMzM2ODpcXHRcXHRhZ2dyX3JlY3ZfZGVsYmFfcmVxX2V2dCh2aWYsIGNtZC1cXHUwMDNldGlkKTtcXG4zMzY5OlxcdFxcbjMzNzA6XFx0XFx0cmV0dXJuIDA7XFxuMzM3MTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjAwLjA3Njg2NzA2OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3MTM0OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB3aXJlbGVzcyBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRGl2aXNpb24gYnkgWmVybyBpbiB0aGUgYXRoNmtsIERyaXZlcioqXG5cblJpZ2h0LCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgICppcyogYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50LiBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbk9rYXksIGxldCdzIHNlZS4uLiB0aGUgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBmdW5jdGlvbiBpbiBgdHhyeC5jYCBpcyB0aGUgb25lIEkgbmVlZCB0byBleGFtaW5lLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbiB0b29rIHBsYWNlLlxuXG5BbHJpZ2h0LCBtb3Zpbmcgb24sIGxldCdzIGxvb2sgYXQgYGFnZ3JfZGVxdWVfZnJtc2AsIGFsc28gaW4gYHR4cnguY2AuIEkndmUgZ290IGEgaHVuY2gg4oCTIHRoYXQncyB0aGUgbG9jYXRpb24gd2hlcmUgdGhlIGRpdmlzaW9uIGJ5IHplcm8gaXMgcHJvYmFibHkgb2NjdXJyaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgZGVxdWV1aW5nIHByb2Nlc3MgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGFnZ3JlZ2F0aW9uLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3MgZW5hYmxlZC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLlxuXG5XYWl0IGEgc2Vjb25kLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBnbyBiYWNrIGFuZCB0aG9yb3VnaGx5IHJlLWV4YW1pbmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ2AgZm9yIGFueSBvdGhlciBwb3NzaWJpbGl0aWVzLiBJIG5lZWQgdG8gZW5zdXJlIG5vdGhpbmcgaGFzIGJlZW4gbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIwOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA0LjIwNDAwMzc5N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MTg1Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEg2S0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI6Y29uZmlnIEFUSDZLTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxNDpjb25maWcgQVRINktMX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjU6Y29uZmlnIEFUSDZLTF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNTpjb25maWcgQVRINktMX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDU6Y29uZmlnIEFUSDZLTF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NTc6Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgcmVnZG9tYWluIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA0LjM5MzE5NDkwNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ3NjYwNjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgV2lyZWxlc3MgRHJpdmVyIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkZXBlbmRlbmN5IHRyZWUsIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBBVEg2S0xfVVNCYCByZWxpZXMgb24gYEFUSDZLTGAuIFRoaXMgdGVsbHMgbWUgdGhhdCBpZiBJJ3ZlIGdvdCBib3RoIG9mIHRob3NlLCBJIHNob3VsZCBiZSBnb29kIHRvIGdvLiBCdXQsIGl0J3MgYWx3YXlzIHNtYXJ0IHRvIGNvbmZpcm0uIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBBVEg2S0xfVVNCYCBhbG9uZSBpcyBpbmRlZWQgc3VmZmljaWVudCBmb3IgY29tcGlsaW5nIGB0eHJ4LmNgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYWxsIG5lY2Vzc2FyeSBpbmNsdWRlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcmVzZW50LiBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgdGVzdC4gSnVzdCBhIHNpbXBsZSBjaGVjayB0byBjb25maXJtIHRoYXQgbXkgYXNzdW1wdGlvbnMgaG9sZCB0cnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTE4MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA3LjU0MDg1Nzc2N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1NDU5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhyeC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU9MzM9YXRoNmtsX2NvcmUteSArPSBtYWluLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM0OmF0aDZrbF9jb3JlLXkgKz0gdHhyeC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0zNS1hdGg2a2xfY29yZS15ICs9IHdtaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA3LjYwOTQxMTIyNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjgwODAwNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoNmtsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYHR4cngub2AgaXMgaW5kZWVkIGEgY29tcG9uZW50IG9mIGBhdGg2a2xfY29yZS15YCwgYW5kIGl0J3MgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FUSDZLTGAgaXMgZW5hYmxlZC4gVGltZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gTm9wZSwgaXQgbG9va3MgbGlrZSBgQVRINktMYCBhbmQgYEFUSDZLTF9VU0JgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRvIGZvY3VzIG9uLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIGEgY3J1Y2lhbCBmaXggZm9yIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgYXRoNmtsYCBkcml2ZXIuIEl0IGFwcGVhcnMgdGhlcmUncyBhIHJpc2sgb2YgZGl2aXNpb24gYnkgemVybyBvciBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBkZXZpY2UuIFRoaXMgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgYnkgYSByb2d1ZSBVU0IgZGV2aWNlIHNlbmRpbmcgYSBzcGVjaWFsbHkgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhIGRvZGd5IGB3aW5fc3pgIHZhbHVlLiBUaGUgcGF0Y2gncyBzb2x1dGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IGFkZCBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcyBleHBsb2l0YWJsZSBjb25kaXRpb24uXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgcGF0Y2hpbmcgcmVhY2hhYmxlIGNvZGUuIFRoYXQgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCwgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCwgYW5kIGBhZ2dyX2RlcXVlX2ZybXNgLiBUaGV5J3JlIHRoZSBjcml0aWNhbCBwb2ludHMgb2YgaW50ZXJlc3QgaGVyZS5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTA5LCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0ODoxMi44OTAyMTM5MzlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgwMjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCIsXG4gICAgXCJhZ2dyX2RlcXVlX2ZybXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGF0aDZrbCBkcml2ZXIgd2hlbiBwcm9jZXNzaW5nIFdNSV9BRERCQV9SRVFfRVZFTlRJRCBldmVudHMgZnJvbSB0aGUgZGV2aWNlLiBUaGUgdnVsbmVyYWJpbGl0eSBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIFVTQiBkZXZpY2Ugc2VuZGluZyBhIGNyYWZ0ZWQgV01JIGV2ZW50IHdpdGggYW4gaW52YWxpZCBgd2luX3N6YC4gVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHBhdGNoZXMgcmVhY2hhYmxlIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCIsXG4gICAgXCJhZ2dyX2RlcXVlX2ZybXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGF0aDZrbCBkcml2ZXIgd2hlbiBwcm9jZXNzaW5nIFdNSV9BRERCQV9SRVFfRVZFTlRJRCBldmVudHMgZnJvbSB0aGUgZGV2aWNlLiBUaGUgdnVsbmVyYWJpbGl0eSBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIFVTQiBkZXZpY2Ugc2VuZGluZyBhIGNyYWZ0ZWQgV01JIGV2ZW50IHdpdGggYW4gaW52YWxpZCBgd2luX3N6YC4gVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHBhdGNoZXMgcmVhY2hhYmxlIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow868v6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 00:17:46 +0000 UTC FinishedAt: 2026-06-26 00:48:14 +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": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "ea872aee-a15c-4edf-a682-2f25ae52e57e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "aggr_recv_addba_req_evt", "ath6kl_wmi_addba_req_event_rx", "aggr_deque_frms" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YWdncl9kZXF1ZV9mcm1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJmMDRjZmZkYWUwMGM3NjdmNWE0NmM3N2QxNmU4ZTdkYzdkZWNlYmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMDo0NzowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5pbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbkBAIC0xNzIyLDEzICYjNDM7MTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXG4gXG4gXHRyeHRpZCA9IFx1MDAyNmFnZ3JfY29ubi1cdTAwM2VyeF90aWRbdGlkXTtcbiBcbi1cdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWClcbi1cdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwmIzM0Oyxcbi1cdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuLVxuIFx0aWYgKHJ4dGlkLVx1MDAzZWFnZ3IpXG4gXHRcdGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShhZ2dyX2Nvbm4sIHRpZCk7XG4gXG4mIzQzO1x0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKSB7XG4mIzQzO1x0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyeHRpZC1cdTAwM2VzZXFfbmV4dCA9IHNlcV9ubztcbiBcdGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtcbiBcdHJ4dGlkLVx1MDAzZWhvbGRfcSA9IGt6YWxsb2MoaG9sZF9xX3NpemUsIEdGUF9LRVJORUwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YWdncl9kZXF1ZV9mcm1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmYwNGNmZmRhZTAwYzc2N2Y1YTQ2Yzc3ZDE2ZThlN2RjN2RlY2ViYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDAwOjQ3OjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwppbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCkBAIC0xNzIyLDEzICYjNDM7MTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sCiAKIAlyeHRpZCA9ICZhbXA7YWdncl9jb25uLSZndDtyeF90aWRbdGlkXTsKIAotCWlmICh3aW5fc3ogJmx0OyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6ICZndDsgQUdHUl9XSU5fU1pfTUFYKQotCQlhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgJiMzNDslczogd2luX3N6ICVkLCB0aWQgJWRcbiYjMzQ7LAotCQkJICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTsKLQogCWlmIChyeHRpZC0mZ3Q7YWdncikKIAkJYWdncl9kZWxldGVfdGlkX3N0YXRlKGFnZ3JfY29ubiwgdGlkKTsKIAomIzQzOwlpZiAod2luX3N6ICZsdDsgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiAmZ3Q7IEFHR1JfV0lOX1NaX01BWCkgewomIzQzOwkJYXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsICYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXG4mIzM0OywKJiM0MzsJCQkgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJcnh0aWQtJmd0O3NlcV9uZXh0ID0gc2VxX25vOwogCWhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTsKIAlyeHRpZC0mZ3Q7aG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY2AgdGhhdCBtb2RpZmllcyB0aGUgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBmdW5jdGlvbi4gRXNzZW50aWFsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgcmV0dXJuIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgYmFzZWQgb24gdGhlIHNpemUgb2YgYSB3aW5kb3cgKGB3aW5fc3pgKS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBndWFyZGluZyBhZ2FpbnN0IGB3aW5fc3pgIHZhbHVlcyB0aGF0IGFyZSBvdXRzaWRlIGEgZGVmaW5lZCByYW5nZSAoYEFHR1JfV0lOX1NaX01JTmAgYW5kIGBBR0dSX1dJTl9TWl9NQVhgKS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmFuZ2UgY2hlY2sgZm9yIHRoaXMgd2luZG93IHNpemUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgdGhpcyBpcywgcGFydGljdWxhcmx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoZSBkcml2ZXIgaXMgZm9yIEF0aGVyb3MgQVI2MDAzL0FSNjAwNCA4MDIuMTFuIHdpcmVsZXNzIExBTiBjYXJkcy4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSB3aXRoaW4gUUVNVT8gSWYgc28sIEkgY2FuIHByb2JhYmx5IGZ1enogdGhlIHJlbGV2YW50IGNvZGUuCgpHZW5lcmFsbHksIFVTQiwgU0RJTywgb3IgUENJIGRldmljZXMgYXJlIHRoZSBlYXNpZXN0IHRvIGZ1enogaWYgeW91IGhhdmUgc29tZSBzb3J0IG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBpZiBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzIGRpcmVjdGx5LiBTeXprYWxsZXIgaGFzIFVTQiBhbmQgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBhbmQgaXQgYWxzbyB3b3JrcyB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGdyZWF0LCBidXQsIHRoaXMgaXMgYSBmdWxsbWFjIGRyaXZlciwgbm90IG1hYzgwMjExLCByaWdodD8gTmVlZCB0byBjb25maXJtLiBSaWdodCwgbGV0JiMzOTtzIGNoZWNrIHdoZXRoZXIgdGhpcyB1c2VzIFNESU8gb3IgVVNCLiBJJiMzOTtsbCBncmVwIGZvciBhdGg2a2wgcmVsYXRlZCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTAzOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI9Y29uZmlnIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMC1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEyLVx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTE0PWNvbmZpZyBBVEg2S0xfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgU0RJTyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTYtXHRkZXBlbmRzIG9uIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMC1cdCAgQXRoZXJvcyBBUjYwMDMgYW5kIEFSNjAwNCBjaGlwc2V0cyBydW5uaW5nIG92ZXIgU0RJTy4gSWYgeW91XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XHQgIGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXRoNmtsX3NkaW8uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjItXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yNT1jb25maWcgQVRINktMX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNy1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMyLVx0ICBVU0IuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcdCAgY2FsbGVkIGF0aDZrbF91c2IuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjM2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gQVRINktMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzgtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XHQgIEVuYWJsZXMgYXRoNmtsIGRlYnVnIHN1cHBvcnQsIGluY2x1ZGluZyBkZWJ1ZyBtZXNzYWdlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQwLVx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTQ1PWNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ny1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ5LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTUxLVx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NTc9Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgcmVnZG9tYWluIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01OS1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0FUSDZLTCkgJiM0Mzs9IGF0aDZrbF9jb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjY6YXRoNmtsX2NvcmUteSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNzphdGg2a2xfY29yZS15ICYjNDM7PSBoaWYub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyODphdGg2a2xfY29yZS15ICYjNDM7PSBodGNfbWJveC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI5OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGh0Y19waXBlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzA6YXRoNmtsX2NvcmUteSAmIzQzOz0gYm1pLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzE6YXRoNmtsX2NvcmUteSAmIzQzOz0gY2ZnODAyMTEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMjphdGg2a2xfY29yZS15ICYjNDM7PSBpbml0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzM6YXRoNmtsX2NvcmUteSAmIzQzOz0gbWFpbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM0OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IHR4cngub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNTphdGg2a2xfY29yZS15ICYjNDM7PSB3bWkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNjphdGg2a2xfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzc6YXRoNmtsX2NvcmUteSAmIzQzOz0gcmVjb3Zlcnkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfQVRINktMX1NESU8pICYjNDM7PSBhdGg2a2xfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQzOmF0aDZrbF9zZGlvLXkgJiM0Mzs9IHNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0FUSDZLTF9VU0IpICYjNDM7PSBhdGg2a2xfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDY6YXRoNmtsX3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMzppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZG9uZSBza2lwcGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHNlbmQgYm1pIGRvbmU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ1Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NTpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU3Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byBzZW5kIGdldCB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXHRpZiAoYXItXHUwMDNlaGlmX3R5cGUgPT0gQVRINktMX0hJRl9UWVBFX1VTQikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopdGFyZ19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cdFx0XHRcdFx0ICBzaXplb2YoKnRhcmdfaW5mbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjY1Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKilcdTAwMjZ0YXJnX2luZm8tXHUwMDNldmVyc2lvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjYtXHRcdFx0XHRzaXplb2YodGFyZ19pbmZvLVx1MDAzZXZlcnNpb24pKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3MDpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVjdiB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTcxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXHRcdC8qIERldGVybWluZSBob3cgbWFueSBieXRlcyBhcmUgaW4gdGhlIFRhcmdldCYjMzk7cyB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzY6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTc3LVx0XHRcdFx0ICAgKHU4ICopXHUwMDI2dGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03OS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo4MDpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O3VuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvIGJ5dGUgY291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05NC1cdFx0LyogUmVhZCB0aGUgcmVtYWluZGVyIG9mIHRoZSB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTU6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk2LVx0XHRcdFx0ICAgKCh1OCAqKXRhcmdfaW5mbykgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMDI6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyAoJWQgYnl0ZXMpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAzLVx0XHRcdFx0ICAgdGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O3RhcmdldCBpbmZvICh2ZXI6IDB4JXggdHlwZTogMHgleClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwOS1cdFx0ICAgdGFyZ19pbmZvLVx1MDAzZXZlcnNpb24sIHRhcmdfaW5mby1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTE0OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTIyLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTIzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyNC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEzNDpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzNS1cdFx0ICAgXCYjMzQ7Ym1pIHJlYWQgbWVtb3J5OiBkZXZpY2U6IGFkZHI6IDB4JXgsIGxlbjogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUzOlx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTQtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU2LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1NzpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIHJ4X2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1OC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTk6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjAtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNzA6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgwLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTgxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4Mi1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE5NTpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5Ni1cdFx0ICAgXCYjMzQ7Ym1pIHdyaXRlIG1lbW9yeTogYWRkcjogMHgleCwgbGVuOiAlZFxcblwmIzM0OywgYWRkciwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI1Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjc6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyOC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzNzppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0NC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI0NTpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDYtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNTY6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZXhlY3V0ZTogYWRkcjogMHgleCwgcGFyYW06ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU3LVx0XHQgICBhZGRyLCAqcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjc6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI2OC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjY5Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcwLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzM6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3NTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI4NDppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5MS1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5MjpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTMtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMDM6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2V0IGFwcCBzdGFydDogYWRkcjogMHgleFxcblwmIzM0OywgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzExOlx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTItXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxMzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzIwOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyNy1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMyODpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjktXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMzk6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgcmVhZCBTT0MgcmVnOiBhZGRyOiAweCV4XFxuXCYjMzQ7LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDc6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0OC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzQ5Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUwLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTM6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1NTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM2MzppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzAtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzE6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzcyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzgyOlx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgzLVx0XHQgICBcJiMzNDtibWkgd3JpdGUgU09DIHJlZzogYWRkcjogMHgleCwgcGFyYW06ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTQ6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk2Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MDM6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphciwgdTggKmJ1ZiwgdTMyIGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxMi1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQxMzpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTQtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MjQ6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2VuZCBMWiBkYXRhOiBsZW46ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI1LVx0XHQgICBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDE6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQyLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0MzpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU0OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjEtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NjI6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDYzLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDczOlx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc0LVx0XHQgICBcJiMzNDtibWkgTFogc3RyZWFtIHN0YXJ0OiBhZGRyOiAweCV4KVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDgzOlx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4NTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gc3RhcnQgTFogc3RyZWFtIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODYtXHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDkzOmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDA6XHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUwOTpcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgYnVmLCBsYXN0X3dvcmRfb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMy1cdGlmICh1bmFsaWduZWRfYnl0ZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxNDpcdFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCAodTggKilcdTAwMjZsYXN0X3dvcmQsIDQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTgtXHRcdCAqIFRoaXMgc2VydmVzIG1haW5seSB0byBmbHVzaCBUYXJnZXQgY2FjaGVzLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTk6XHRcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCAweDAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjQ6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1Mjk6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTQ0OnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMTk6c3RydWN0IGF0aDZrbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjIwOnN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjIxLVx0X19sZTMyIGJ5dGVfY291bnQ7ICAgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjY6I2RlZmluZSBhdGg2a2xfYm1pX3dyaXRlX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzAtXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMxOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMyLVx0XHR2ID0gY3B1X3RvX2xlMzIodmFsKTtcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMzOlx0XHRhdGg2a2xfYm1pX3dyaXRlKGFyLCBhZGRyLCAodTggKikgXHUwMDI2diwgc2l6ZW9mKHYpKTtcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNC1cdH0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjM2OiNkZWZpbmUgYXRoNmtsX2JtaV9yZWFkX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDItXHRcdCh2b2lkKSAoY2hlY2tfdHlwZSA9PSB2YWwpO1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQzOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQ0Olx0XHRyZXQgPSBhdGg2a2xfYm1pX3JlYWQoYXIsIGFkZHIsICh1OCAqKSBcdTAwMjZ0bXAsIDQpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ1LVx0XHRpZiAoIXJldClcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTA6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MTp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1Mjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NDppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU1OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU2Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU3OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU4OmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1OTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjAtXHRcdCAgICAgICB1MzIgYWRkciwgdTMyICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MTppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjItXHRcdFx0ICAgICB1MzIgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MzppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjQ6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY1OmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Ni1cdFx0ICAgICAgIHU4ICpidWYsIHUzMiBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjc6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjgtXHRcdFx0ICAgICAgIHUzMiBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY5OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI3MC1cdFx0XHQgICAgIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NTc6c3RydWN0IGF0aDZrbF9jZmc4MDIxMV9tYXRjaF9wcm9iZV9zc2lkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01OC1cdHN0cnVjdCBjZmc4MDIxMV9zc2lkIHNzaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjYyOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3JhdGUgYXRoNmtsX3JhdGVzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjMtXHRSQVRFVEFCX0VOVCgxMCwgMHgxLCAwKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzc6I2RlZmluZSBhdGg2a2xfYV9yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyA0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc4OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXNfc2l6ZSAgICA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzk6I2RlZmluZSBhdGg2a2xfZ19yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgwOiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXNfc2l6ZSAgICAxMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgyOiNkZWZpbmUgYXRoNmtsX2dfaHRjYXAgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4MzojZGVmaW5lIGF0aDZrbF9hX2h0Y2FwIChJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCB8IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODQtXHRcdFx0SUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcdFx0IHwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODc6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfMmdoel9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg4LVx0Q0hBTjJHKDEsIDI0MTIsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTA0OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzVnaHpfYV9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNS1cdENIQU41RygzNiwgMCksIENIQU41Ryg0MCwgMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfMmdoeiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjU6XHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzJnaHpfY2hhbm5lbHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNjpcdC5jaGFubmVscyA9IGF0aDZrbF8yZ2h6X2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNzpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjg6XHQuYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9nX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMC1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzMzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF81Z2h6ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNDpcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfNWdoel9hX2NoYW5uZWxzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzU6XHQuY2hhbm5lbHMgPSBhdGg2a2xfNWdoel9hX2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNjpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzc6XHQuYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9hX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzOS1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ0LS8qIHJldHVybnMgdHJ1ZSBpZiBzY2hlZHVsZWQgc2NhbiB3YXMgc3RvcHBlZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NTpzdGF0aWMgYm9vbCBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDc6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNTc6XHRhdGg2a2xfd21pX2VuYWJsZV9zY2hlZF9zY2FuX2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTYyOnN0YXRpYyB2b2lkIGF0aDZrbF9jZmc4MDIxMV9zc2Nhbl9kaXNhYmxlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjQ6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjUtXHRib29sIHN0b3BwZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NzpcdHN0b3BwZWQgPSBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc1OnN0YXRpYyBpbnQgYXRoNmtsX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ni1cdFx0XHRcdCAgZW51bSBubDgwMjExX3dwYV92ZXJzaW9ucyB3cGFfdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3ODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxODc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6ICV1IG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg4LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk0OnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hdXRoX3R5cGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTUtXHRcdFx0XHRlbnVtIG5sODAyMTFfYXV0aF90eXBlIGF1dGhfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5NzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE0LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMTU6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6IDB4JXggbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18sIGF1dGhfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE2LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjIyOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9jaXBoZXIoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGNpcGhlciwgYm9vbCB1Y2FzdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjI4Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogY2lwaGVyIDB4JXgsIHVjYXN0ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyOS1cdFx0ICAgX19mdW5jX18sIGNpcGhlciwgdWNhc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTctXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1ODpcdFx0YXRoNmtsX2VycihcJiMzNDtjaXBoZXIgMHgleCBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBjaXBoZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1OS1cdFx0cmV0dXJuIC1FTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NTpzdGF0aWMgdm9pZCBhdGg2a2xfc2V0X2tleV9tZ210KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBrZXlfbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBrZXlfbWdtdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg0OnN0YXRpYyBib29sIGF0aDZrbF9jZmc4MDIxMV9yZWFkeShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg2Olx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4OC1cdGlmICghdGVzdF9iaXQoV01JX1JFQURZLCBcdTAwMjZhci1cdTAwM2VmbGFnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4OTpcdFx0YXRoNmtsX2VycihcJiMzNDt3bWkgaXMgbm90IHJlYWR5XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjkzLVx0aWYgKCF0ZXN0X2JpdChXTEFOX0VOQUJMRUQsIFx1MDAyNnZpZi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyOTQ6XHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7d2xhbiBkaXNhYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk1LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDE6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwYV9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDg6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3Jzbl9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTM6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwc19pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjE6c3RhdGljIGludCBhdGg2a2xfc2V0X2Fzc29jX3JlcV9pZXMoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjItXHRcdFx0XHQgICAgc2l6ZV90IGllc19sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjQ6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjUtXHRjb25zdCB1OCAqcG9zO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXRoZXJvcyA2eHh4IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBBdGhlcm9zIDZ4eHggZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGl0IGZvciBmdXp6aW5nLiBJIHNlZSB0d28gbWFpbiBjb25uZWN0aW9uIG1ldGhvZHM6IFVTQiAoQ09ORklHX0FUSDZLTF9VU0IpIGFuZCBTRElPIChDT05GSUdfQVRINktMX1NESU8pLiBUaGUgVVNCIG9wdGlvbiBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkga25vdyBVU0IgZGV2aWNlcyBjYW4gYmUgZnV6emVkIGVmZmVjdGl2ZWx5IHVzaW5nIHRlY2huaXF1ZXMgbGlrZSBkdW1teV9oY2QgYW5kIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgaGF2ZSBleHBlcmllbmNlIHVzaW5nIHRob3NlIHRvb2xzLiBXaGlsZSBTRElPIGZ1enppbmcgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZSwgYW5kIHN5emthbGxlciBoYXMgc29tZSBiYXNpYyBpbmplY3Rpb24gc3VwcG9ydCBmb3IgaXQsIHRoZXJlIGlzbiYjMzk7dCBhIG1hdHVyZSwgZ2VuZXJpYyBTRElPIGZ1enplciBpbiBzeXprYWxsZXIgcmlnaHQgbm93LiBUaGVyZWZvcmUsIFVTQiBzZWVtcyBsaWtlIHRoZSBtb3JlIGRpcmVjdCBhbmQgYWNjZXNzaWJsZSBwYXRoIGZvciBub3cuCgpHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGBDT05GSUdfQVRINktMX1VTQmAuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgdWx0aW1hdGUgZ29hbCBpcyB0byBpZGVudGlmeSBhIHJlYWNoYWJsZSBmdW5jdGlvbiwgYW5kIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgLiBUaGF0JiMzOTtzIGluIGB0eHJ4LmNgLiBMZXQmIzM5O3MgZGl2ZSBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIEkmIzM5O20ga2VlbiB0byBzZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIHRoZSBVU0IgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjI6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05NjMtXHRcdFx0ICAgICB1OCB3aW5fc3opO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2OTg6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5OS1cdFx0XHQgICAgIHU4IHdpbl9zeilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzNTI9c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTc6XHRhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTgtXHRcdFx0XHRsZTE2X3RvX2NwdShjbWQtXHUwMDNlc3Rfc2VxX25vKSwgY21kLVx1MDAzZXdpbl9zeik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1MzIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXTUkgQWRkQkEgUmVxdWVzdCBFdmVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YC4gUmlnaHQsIFdNSSDigJMgV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZS4gVGhhdCYjMzk7cyBob3cgd2UgdGFsayB0byB0aGUgZmlybXdhcmUgb24gdGhpcyB0aGluZy4gQW5kIHNpbmNlIHRoZSBmaXJtd2FyZSYjMzk7cyBvbiB0aGUgVVNCIGRldmljZSwgdGhlIGhvc3QgaXMgZ2V0dGluZyB0aGVzZSBXTUkgbWVzc2FnZXMgKmZyb20qIHRoZSBVU0IuIEhtbeKApiBhIHRob3VnaHQgb2NjdXJzLiBJZiB3ZSYjMzk7cmUgZnV6emluZyB0aGUgVVNCIGRldmljZSwgd2UmIzM5O3JlIGVzc2VudGlhbGx5IGZ1enppbmcgdGhlIFdNSSBpbnRlcmZhY2UgaXRzZWxmLCByaWdodD8gV2UgY2FuIHBvdGVudGlhbGx5IGluamVjdCBjb21wbGV0ZWx5IGFyYml0cmFyeSBXTUkgbWVzc2FnZXMgdG8gdGhlIGhvc3QhIFNvLCBhIGtleSB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIFVTQiByZWNlaXZlIHBhdGguIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVmZm9ydHMuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBkZXRlcm1pbmUgdGhlIG9yaWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9MzMzMz1zdGF0aWMgaW50IGF0aDZrbF93bWlfZ2V0X3Bta2lkX2xpc3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzUyOnN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTMtXHRcdFx0XHRcdCBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9Mzg3Nj1zdGF0aWMgaW50IGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmKHN0cnVjdCB3bWkgKndtaSwgdTE2IGlmX2lkeCwgdTE2IGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjItXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksIFwmIzM0O1dNSV9BRERCQV9SRVFfRVZFTlRJRFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjM5MjM6XHRcdHJldHVybiBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCh3bWksIGRhdGFwLCBsZW4sIHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjQtXHRjYXNlIFdNSV9ERUxCQV9SRVFfRVZFTlRJRDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI2NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgQ29kZSB2aWEgVVNCIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgdHJhY2VkIHRoaXMgYmFjay4gVGhlIHJlbGV2YW50IGZ1bmN0aW9uIGlzIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBXTUkgZXZlbnRzLiBUaGVzZSBldmVudHMgYXJlLCBhcyBleHBlY3RlZCwgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGRldmljZSBpdHNlbGYuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGlmIHdlIGVtdWxhdGUgYSBVU0IgZGV2aWNlLCB3ZSBjYW4gZmVlZCBpdCBhIGNyYWZ0ZWQgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnQuIFRoZSByZWFsbHkgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHdpbl9zemAgZmllbGQ7IHdlIGNhbiBzZXQgdGhpcyBhcmJpdHJhcmlseS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgc2lnbmFsIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIG1lYW5zIHdlJiMzOTt2ZSBpZGVudGlmaWVkIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCwgYW5kIGl0JiMzOTtzIHByaW1lIHRlcnJpdG9yeSBmb3IgVVNCIGZ1enppbmcuCgpOb3csIGJlZm9yZSB3ZSBnZXQgdG9vIGV4Y2l0ZWQsIGxldCYjMzk7cyBtYWtlIHN1cmUgb3VyIGVudmlyb25tZW50IGlzIHNldHVwIGNvcnJlY3RseS4gV2UgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZDogYENPTkZJR19BVEg2S0xgIGFuZCBjcnVjaWFsbHksIGBDT05GSUdfQVRINktMX1VTQmAuIFdlIG1pZ2h0IGFzIHdlbGwgZW5hYmxlIGBDT05GSUdfQVRINktMX1NESU9gIGZvciBnb29kIG1lYXN1cmUuCgpOZXh0LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBldmVudCBpcyBoYW5kbGVkLiBMZXQmIzM5O3MgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgdGhlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGJlIHdoZXJlIHRoZSBqdWljeSBzdHVmZiBoYXBwZW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjkwOlx0XHRyeHRpZC1cdTAwM2Vob2xkX3Ffc3ogPSAwO1xuMTY5MTpcdFxuMTY5MjpcdFx0a2ZyZWUocnh0aWQtXHUwMDNlaG9sZF9xKTtcbjE2OTM6XHRcdHJ4dGlkLVx1MDAzZWhvbGRfcSA9IE5VTEw7XG4xNjk0Olx0XG4xNjk1Olx0XHRtZW1zZXQoc3RhdHMsIDAsIHNpemVvZihzdHJ1Y3Qgcnh0aWRfc3RhdHMpKTtcbjE2OTY6XHR9XG4xNjk3Olx0XG4xNjk4Olx0dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuMTY5OTpcdFx0XHRcdCAgICAgdTggd2luX3N6KVxuMTcwMDpcdHtcbjE3MDE6XHRcdHN0cnVjdCBhdGg2a2xfc3RhICpzdGE7XG4xNzAyOlx0XHRzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiA9IE5VTEw7XG4xNzAzOlx0XHRzdHJ1Y3Qgcnh0aWQgKnJ4dGlkO1xuMTcwNDpcdFx0dTE2IGhvbGRfcV9zaXplO1xuMTcwNTpcdFx0dTggdGlkLCBhaWQ7XG4xNzA2Olx0XG4xNzA3Olx0XHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xuMTcwODpcdFx0XHRhaWQgPSBhdGg2a2xfZ2V0X2FpZCh0aWRfbXV4KTtcbjE3MDk6XHRcdFx0c3RhID0gYXRoNmtsX2ZpbmRfc3RhX2J5X2FpZCh2aWYtXHUwMDNlYXIsIGFpZCk7XG4xNzEwOlx0XHRcdGlmIChzdGEpXG4xNzExOlx0XHRcdFx0YWdncl9jb25uID0gc3RhLVx1MDAzZWFnZ3JfY29ubjtcbjE3MTI6XHRcdH0gZWxzZSB7XG4xNzEzOlx0XHRcdGFnZ3JfY29ubiA9IHZpZi1cdTAwM2VhZ2dyX2NudHh0LVx1MDAzZWFnZ3JfY29ubjtcbjE3MTQ6XHRcdH1cbjE3MTU6XHRcbjE3MTY6XHRcdGlmICghYWdncl9jb25uKVxuMTcxNzpcdFx0XHRyZXR1cm47XG4xNzE4Olx0XG4xNzE5Olx0XHR0aWQgPSBhdGg2a2xfZ2V0X3RpZCh0aWRfbXV4KTtcbjE3MjA6XHRcdGlmICh0aWQgXHUwMDNlPSBOVU1fT0ZfVElEUylcbjE3MjE6XHRcdFx0cmV0dXJuO1xuMTcyMjpcdFxuMTcyMzpcdFx0cnh0aWQgPSBcdTAwMjZhZ2dyX2Nvbm4tXHUwMDNlcnhfdGlkW3RpZF07XG4xNzI0Olx0XG4xNzI1Olx0XHRpZiAocnh0aWQtXHUwMDNlYWdncilcbjE3MjY6XHRcdFx0YWdncl9kZWxldGVfdGlkX3N0YXRlKGFnZ3JfY29ubiwgdGlkKTtcbjE3Mjc6XHRcbjE3Mjg6XHRcdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xuMTcyOTpcdFx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCYjMzQ7LFxuMTczMDpcdFx0XHRcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XG4xNzMxOlx0XHRcdHJldHVybjtcbjE3MzI6XHRcdH1cbjE3MzM6XHRcbjE3MzQ6XHRcdHJ4dGlkLVx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xuMTczNTpcdFx0aG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpO1xuMTczNjpcdFx0cnh0aWQtXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XG4xNzM3Olx0XHRpZiAoIXJ4dGlkLVx1MDAzZWhvbGRfcSlcbjE3Mzg6XHRcdFx0cmV0dXJuO1xuMTczOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTU5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBZGRyZXNzaW5nIGEgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWUqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0cnlpbmcgdG8gZml4IGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgd2hlbiBgd2luX3N6YCBpcyBvdXQgb2YgYm91bmRzLiBQcmV2aW91c2x5LCB0aGUgY29kZSBqdXN0IGxvZ2dlZCBhIGRlYnVnIG1lc3NhZ2UgYW5kIGtlcHQgZ29pbmcuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnIGJlY2F1c2UgYGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtgIHVzZXMgYHdpbl9zemAgdG8gY2FsY3VsYXRlIHRoZSBhbGxvY2F0aW9uIHNpemUuIENsZWFybHksIGFuIG91dC1vZi1ib3VuZHMgYHdpbl9zemAgY291bGQgbGVhZCB0byBzb21lIG5hc3R5IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24sIGxlYWRpbmcgdG8gY3Jhc2hlcyBvciBzZWN1cml0eSBwcm9ibGVtcy4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoOyBJIHNob3VsZCBkb3VibGUtY2hlY2sgaG93IGBUSURfV0lORE9XX1NaKHdpbl9zeilgIGlzIGRlZmluZWQgYW5kIG9wZXJhdGVzLiBJdCBjb3VsZCBiZSBkb2luZyBzb21lIGNsZXZlciBjbGFtcGluZyBvciB2YWxpZGF0aW9uIHRoYXQgd291bGQgbWFrZSB0aGUgaW5pdGlhbCBjb25jZXJuIG1vb3QsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBHb3R0YSB0cmFjZSB0aGF0IG1hY3JvIGFuZCBtYWtlIHN1cmUgaXQmIzM5O3Mgbm90IHRoZSBzb3VyY2Ugb2YgYW5vdGhlciBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIFRJRF9XSU5ET1dfU1omIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD0xNjY9ZW51bSBhdGg2a2xfaHdfZmxhZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjI3MjojZGVmaW5lIFRJRF9XSU5ET1dfU1ooX3gpICAgKChfeCkgXHUwMDNjXHUwMDNjIDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDg2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgTWVtb3J5IEFsbG9jYXRpb24gQ29uY2VybnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgbWFjcm8sIGFuZCBpdCYjMzk7cyBkZWZpbmVkIGFzIGAod2luX3N6KSAmbHQ7Jmx0OyAxYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGJpdC1zaGlmdGluZy4gVGhhdCYjMzk7cyB1c3VhbGx5IGVmZmljaWVudCwgYnV0IGlzIGl0IGNyZWF0aW5nIGEgcG90ZW50aWFsbHkgbGFyZ2UgbWVtb3J5IGFsbG9jYXRpb24/JiMzNDsgRXNwZWNpYWxseSBzaW5jZSB0aGlzIGB3aW5fc3pgIHBhcmFtZXRlciBpcyBsaWtlbHkgdXNlZCB0byBzaXplIHNvbWUgc29ydCBvZiBidWZmZXIgb3IgZGF0YSBzdHJ1Y3R1cmUuIFRoZSBwb3RlbnRpYWwgZm9yIGEgbGFyZ2Ugc2hpZnQgaXMgY29uY2VybmluZy4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIsIG9yIHJhdGhlciwgSSAqcmVhbGl6ZSosIHRoYXQgYHdpbl9zemAgaXMgYSBgdThgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlciBtYXhlcyBvdXQgYXQgMjU1LiBTbywgdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8gd2l0aCB0aGUgc2hpZnQgaXMgMjU1ICZsdDsmbHQ7IDEsIHdoaWNoIGVxdWFscyA1MTAuIE9rYXksIDUxMC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGZvciBtZW1vcnkgdXNhZ2UuIEkgbmVlZCB0byBtdWx0aXBseSB0aGF0IHZhbHVlLCA1MTAsIGJ5IGBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpYC4gU2luY2UgYHNrYl9ob2xkX3FgIHNlZW1zIGxpa2UgYSByZWFzb25hYmx5IHNpemVkIHN0cnVjdHVyZSwgaXQmIzM5O3MgdW5saWtlbHkgYSA1MTAgKiBgc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKWAgYWxsb2NhdGlvbiBpcyBhIG1ham9yIG1lbW9yeSBob2cuIAoKSG93ZXZlciwgYmVmb3JlIEkgY2FuIGNvbmZpZGVudGx5IHNheSBpdCYjMzk7cyBzYWZlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudC4gSXMgYHdpbl9zemAgdXNlZCBpbiBtb3JlIHBsYWNlcyB0aGFuIGp1c3QgdGhpcyBtYWNybz8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHRyYWNlIHdoZXJlIHRoaXMgYHdpbl9zemAgdmFyaWFibGUgaXMgdXNlZCwgSSBzaG91bGQgY2hlY2sgYHJ4dGlkLSZndDt3aW5fc3pgLCBpdCBtaWdodCBiZSB1c2VkIGVsc2V3aGVyZSBhbmQgaW1wYWN0IG1lbW9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2luX3N6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9MzIzPXN0cnVjdCByeHRpZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzI1LVx0Ym9vbCB0aW1lcl9tb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDozMjY6XHR1MTYgd2luX3N6O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzI3LVx0dTE2IHNlcV9uZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTMzNi1cdCAqIHJlb3JkZXIgZnJhbWVzIGFuZCBpdCYjMzk7cyBhY2Nlc3Mgc2hvdWxkIGFsc28gYmUgcHJvdGVjdGVkLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6MzM3Olx0ICogU29tZSBvZiB0aGUgb3RoZXIgZmllbGRzIGxpa2UgaG9sZF9xX3N6LCB3aW5fc3ogYW5kIGFnZ3IgYXJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0zMzgtXHQgKiBpbml0aWFsaXplZC9yZXNldCB3aGVuIHJlY2VpdmluZyBhZGRiYS9kZWxiYSByZXEsIGFsc28gd2hpbGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05NjI9dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjM6XHRcdFx0ICAgICB1OCB3aW5fc3opO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTY0LXZvaWQgYXRoNmtsX3dha2V1cF9ldmVudCh2b2lkICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTEwNDY9c3RhdGljIHZvaWQgYWdncl9kZXF1ZV9mcm1zKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdnX2Nvbm4sIHU4IHRpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDY2LVx0ICogaW5kZXggcG9zaXRpb24gYXMgaW5kZXggdGhhdCBpcyBqdXN0IHByZXZpb3VzIHRvIHN0YXJ0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA2NzpcdCAqIEFuIGltcCBwb2ludCA6IGlmIHdpbl9zeiBpcyA3LCBmb3Igc2VxX25vIHNwYWNlIG9mIDQwOTUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDY4LVx0ICogdGhlbiwgdGhlcmUgd291bGQgYmUgaG9sZXMgd2hlbiBzZXF1ZW5jZSB3cmFwIGFyb3VuZCBvY2N1cnMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDY5Olx0ICogVGFyZ2V0IHNob3VsZCBqdWRpY2lvdXNseSBjaG9vc2UgdGhlIHdpbl9zeiwgYmFzZWQgb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjEwNzA6XHQgKiB0aGlzIGNvbmRpdGlvbi4gRm9yIDQwOTUsIChUSURfV0lORE9XX1NaID0gMiB4IHdpbl9zelxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA3MTpcdCAqIDIsIDQsIDgsIDE2IHdpbl9zeiB3b3JrcyBmaW5lKS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNzItXHQgKiBXZSBtdXN0IGRlcXVlIGZyb20gXCYjMzQ7aWR4XCYjMzQ7IHRvIFwmIzM0O2lkeF9lbmRcJiMzNDssIGluY2x1ZGluZyBib3RoLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY4Ny1cdHJ4dGlkLVx1MDAzZXRpbWVyX21vbiA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY4ODpcdHJ4dGlkLVx1MDAzZXdpbl9zeiA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjg5LVx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2OTg9dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY5OTpcdFx0XHQgICAgIHU4IHdpbl9zeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzI4Olx0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzI5Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCYjMzQ7JXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczMDpcdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzQtXHRyeHRpZC1cdTAwM2VzZXFfbmV4dCA9IHNlcV9ubztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3MzU6XHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzM2LVx0cnh0aWQtXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3NDA6XHRyeHRpZC1cdTAwM2V3aW5fc3ogPSB3aW5fc3o7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzQxOlx0cnh0aWQtXHUwMDNlaG9sZF9xX3N6ID0gVElEX1dJTkRPV19TWih3aW5fc3opO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTc0Mi1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnJ4dGlkLVx1MDAzZXEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9MzM1Mj1zdGF0aWMgaW50IGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1Ny1cdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVx1MDAzZXRpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6MzM1ODpcdFx0XHRcdGxlMTZfdG9fY3B1KGNtZC1cdTAwM2VzdF9zZXFfbm8pLCBjbWQtXHUwMDNld2luX3N6KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oPTIxNjU9c3RydWN0IHdtaV9hZGRiYV9yZXFfZXZlbnQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaC0yMTY2LVx0dTggdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaDoyMTY3Olx0dTggd2luX3N6O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaC0yMTY4LVx0X19sZTE2IHN0X3NlcV9ubztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogQUdHUl9XSU5fU1ogUGFyYW1ldGVycyoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7bSBsb29raW5nIGF0IGBBR0dSX1dJTl9TWl9NSU5gIGFuZCBgQUdHUl9XSU5fU1pfTUFYYC4gIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgYXJlIHNldHRpbmcgdXAgYW5kIHdoYXQgaXMgaGFwcGVuaW5nLiAgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgaXMuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhZ2dyZWdhdGlvbiB3aW5kb3cgc2l6ZXMgaGVyZSwgbW9zdCBsaWtlbHkgaW4gYSB0aW1lLXNlcmllcyBjb250ZXh0IG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGV4YWN0IHNwZWNpZmljcyBvZiB0aGVpciBkZWZpbml0aW9uIHdpdGhpbiAqdGhpcyogcGFydGljdWxhciBzeXN0ZW0uIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgbWluaW11bSBhbmQgbWF4aW11bSBmb3IgYSBtb3ZpbmcgYXZlcmFnZSB3aW5kb3csIGEgYnVja2V0aW5nIHN0cmF0ZWd5LCBhIHRpbWUgd2luZG93IGZvciBhbmFseXNpcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBpbXBsaWNhdGlvbnMgZm9yIHJlc291cmNlIGNvbnN1bXB0aW9uLCBhY2N1cmFjeSwgYW5kIGxhdGVuY3kgYXJlIGdvaW5nIHRvIGhpbmdlIGRpcmVjdGx5IG9uIHdoYXQgdGhlc2UgcGFyYW1ldGVycyBjb250cm9sLiBMZXQgbWUgbG9vayBhdCB0aGUgY29kZS9kb2N1bWVudGF0aW9uIGFuZCBzZWUgd2hhdCBpcyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FHR1JfV0lOX1NaX01BWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMjY5LSNkZWZpbmUgQUdHUl9XSU5fU1pfTUlOICAgICAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNzA6I2RlZmluZSBBR0dSX1dJTl9TWl9NQVggICAgIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjk4PXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTcyODpcdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTcyOS1cdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5NDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMgaW4gV2luZG93IFNpemUgSGFuZGxpbmcqKgoKT2theSwgc28gYEFHR1JfV0lOX1NaX01BWGAgaXMgZGVmaW5lZCBhcyA4LiBUaGF0JiMzOTtzIG91ciBtYXhpbXVtIGRlZmluZWQgd2luZG93IHNpemUuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgKm5vdCogZW5mb3JjaW5nIHRoaXMgbGltaXQuIExldCYjMzk7cyBzYXkgYHdpbl9zemAgc29tZWhvdyBnZXRzIHNldCB0byBhbiBhcmJpdHJhcmlseSBsYXJnZSB2YWx1ZSwgbGlrZSAyNTUuIFRoYXQgd291bGQgbWVhbiBgVElEX1dJTkRPV19TWih3aW5fc3opYCB3b3VsZCByZXN1bHQgaW4gNTEwLiBOb3csIDUxMCBtdWx0aXBsaWVkIGJ5IHRoZSBzaXplIG9mIGBzdHJ1Y3Qgc2tiX2hvbGRfcWAsIHdoaWNoIEkga25vdyBpcyA4IGJ5dGVzIG9uIGEgMzItYml0IHN5c3RlbSBvciAxNiBvbiBhIDY0LWJpdCBzeXN0ZW0sIGdpdmVzIHVzIGFuIGFsbG9jYXRpb24gc2l6ZSBvZiBlaXRoZXIgNDA4MCBvciA4MTYwIGJ5dGVzLiBJdCYjMzk7cyBub3QgYSBodWdlIGFsbG9jYXRpb24gdGhhdCB3b3VsZCB0cmlnZ2VyIGltbWVkaWF0ZSBtZW1vcnkgZXhoYXVzdGlvbiwgYnV0IGl0JiMzOTtzIGxhcmdlIGVub3VnaCB0aGF0IGl0ICpjb3VsZCogYmUgYSBjb250cmlidXRpbmcgZmFjdG9yIG9yIGEgc3ltcHRvbSBvZiBhbiBlcnJvciBhbmQsIG1vcmUgaW1wb3J0YW50bHksIG1pZ2h0IGNhdXNlIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIGl0JiMzOTtzIG5vdCBoYW5kbGVkIGNvcnJlY3RseSBlbHNld2hlcmUuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRoaXMgYHdpbl9zemAgaXMgdXNlZC4gRm9yIGluc3RhbmNlLCBgcnh0aWQtJmd0O2hvbGRfcV9zemAgaXMgc2V0IHRvIGBUSURfV0lORE9XX1NaKHdpbl9zeilgLCB3aGljaCBpcyB0aGUgc2l6ZSB3ZSBqdXN0IGNhbGN1bGF0ZWQuIEFuZCBoYW5nIG9uLCBgYWdncl9kZXF1ZV9mcm1zYCBtYWtlcyB1c2Ugb2YgYHJ4dGlkLSZndDtob2xkX3Ffc3pgLiBUaGlzIGlzIGNvbmNlcm5pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpZiB0aGVyZSYjMzk7cyBhbiBhcnJheSBkZWZpbmVkIHVzaW5nIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YCBpbiBgYWdncl9kZXF1ZV9mcm1zYCwgd2UgaGF2ZSBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBOb3cgSSBuZWVkIHRvIGNoZWNrIGBhZ2dyX2RlcXVlX2ZybXNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIGZpeGVkLXNpemUgYXJyYXkgdGhlcmUgdGhhdCYjMzk7cyByZWx5aW5nIG9uIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YCBmb3IgaW5kZXhpbmcuIFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlLiBMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FnZ3JfZGVxdWVfZnJtcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTk5MD1zdGF0aWMgdm9pZCBhZ2dyX3NsaWNlX2Ftc2R1KHN0cnVjdCBhZ2dyX2luZm8gKnBfYWdncixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA0NjpzdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA0Ny1cdFx0XHQgICAgdTE2IHNlcV9ubywgdTggb3JkZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTEwNT1zdGF0aWMgYm9vbCBhZ2dyX3Byb2Nlc3NfcmVjdl9mcm0oc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNDctXHRcdCAgICAgKGN1ciBcdTAwM2MgZW5kKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjExNDg6XHRcdFx0YWdncl9kZXF1ZV9mcm1zKGFnZ19jb25uLCB0aWQsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE0OS1cdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cnh0aWQtXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjExNjc6XHRcdFx0YWdncl9kZXF1ZV9mcm1zKGFnZ19jb25uLCB0aWQsIHN0LCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNjgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMjA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTIwNjpcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dfY29ubiwgdGlkLCAwLCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEyMDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTYyMz1zdGF0aWMgdm9pZCBhZ2dyX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY0Mi1cdFx0XHQgICAgQVRINktMX01BWF9TRVFfTk8pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2NDM6XHRcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dyX2Nvbm4sIGksIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY0NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2ODMtXHRpZiAocnh0aWQtXHUwMDNlYWdncilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2ODQ6XHRcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dyX2Nvbm4sIHRpZCwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQyOQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkRlY29uc3RydWN0aW5nIHRoZSBBZ2dyZWdhdGlvbiBQcm9jZXNzKioKCkFoYSEgSGFuZyBvbiBhIHNlY29uZCwgaXNuJiMzOTt0IGB3aW5fc3pgIGJlaW5nIHVzZWQgd2l0aGluIGBhZ2dyX2RlcXVlX2ZybXNgPyBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCBJIG1pZ2h0IGhhdmUgbWlzc2VkIGVhcmxpZXIuIFJpZ2h0LCByaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgYWdncl9kZXF1ZV9mcm1zYCBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY3J5c3RhbCBjbGVhciBvbiBob3cgYHdpbl9zemAgaXMgaW1wYWN0aW5nIHRoZSBhZ2dyZWdhdGlvbiBsb2dpYy4gR290dGEgdHJhY2UgdGhlIGRhdGEgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGF0IHdpbmRvdyBzaXplIHBhcmFtZXRlciBhbmQgdGhlIGRlcXVlIG1hbmlwdWxhdGlvbi4gR290dGEgZ2V0IHRoaXMgc3RyYWlnaHQgYmVmb3JlIEkgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwNDYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA0NjpcdHN0YXRpYyB2b2lkIGFnZ3JfZGVxdWVfZnJtcyhzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXG4xMDQ3Olx0XHRcdFx0ICAgIHUxNiBzZXFfbm8sIHU4IG9yZGVyKVxuMTA0ODpcdHtcbjEwNDk6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4xMDUwOlx0XHRzdHJ1Y3Qgcnh0aWQgKnJ4dGlkO1xuMTA1MTpcdFx0c3RydWN0IHNrYl9ob2xkX3EgKm5vZGU7XG4xMDUyOlx0XHR1MTYgaWR4LCBpZHhfZW5kLCBzZXFfZW5kO1xuMTA1MzpcdFx0c3RydWN0IHJ4dGlkX3N0YXRzICpzdGF0cztcbjEwNTQ6XHRcbjEwNTU6XHRcdHJ4dGlkID0gXHUwMDI2YWdnX2Nvbm4tXHUwMDNlcnhfdGlkW3RpZF07XG4xMDU2Olx0XHRzdGF0cyA9IFx1MDAyNmFnZ19jb25uLVx1MDAzZXN0YXRbdGlkXTtcbjEwNTc6XHRcbjEwNTg6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZyeHRpZC1cdTAwM2Vsb2NrKTtcbjEwNTk6XHRcdGlkeCA9IEFHR1JfV0lOX0lEWChyeHRpZC1cdTAwM2VzZXFfbmV4dCwgcnh0aWQtXHUwMDNlaG9sZF9xX3N6KTtcbjEwNjA6XHRcbjEwNjE6XHRcdC8qXG4xMDYyOlx0XHQgKiBpZHhfZW5kIGlzIHR5cGljYWxseSB0aGUgbGFzdCBwb3NzaWJsZSBmcmFtZSBpbiB0aGUgd2luZG93LFxuMTA2MzpcdFx0ICogYnV0IGNoYW5nZXMgdG8gJiMzOTt0aGUmIzM5OyBzZXFfbm8sIHdoZW4gQkFSIGNvbWVzLiBJZiBzZXFfbm9cbjEwNjQ6XHRcdCAqIGlzIG5vbi16ZXJvLCB3ZSB3aWxsIGdvIHVwIHRvIHRoYXQgYW5kIHN0b3AuXG4xMDY1Olx0XHQgKiBOb3RlOiBsYXN0IHNlcSBubyBpbiBjdXJyZW50IHdpbmRvdyB3aWxsIG9jY3VweSB0aGUgc2FtZVxuMTA2NjpcdFx0ICogaW5kZXggcG9zaXRpb24gYXMgaW5kZXggdGhhdCBpcyBqdXN0IHByZXZpb3VzIHRvIHN0YXJ0LlxuMTA2NzpcdFx0ICogQW4gaW1wIHBvaW50IDogaWYgd2luX3N6IGlzIDcsIGZvciBzZXFfbm8gc3BhY2Ugb2YgNDA5NSxcbjEwNjg6XHRcdCAqIHRoZW4sIHRoZXJlIHdvdWxkIGJlIGhvbGVzIHdoZW4gc2VxdWVuY2Ugd3JhcCBhcm91bmQgb2NjdXJzLlxuMTA2OTpcdFx0ICogVGFyZ2V0IHNob3VsZCBqdWRpY2lvdXNseSBjaG9vc2UgdGhlIHdpbl9zeiwgYmFzZWQgb25cbjEwNzA6XHRcdCAqIHRoaXMgY29uZGl0aW9uLiBGb3IgNDA5NSwgKFRJRF9XSU5ET1dfU1ogPSAyIHggd2luX3N6XG4xMDcxOlx0XHQgKiAyLCA0LCA4LCAxNiB3aW5fc3ogd29ya3MgZmluZSkuXG4xMDcyOlx0XHQgKiBXZSBtdXN0IGRlcXVlIGZyb20gXCYjMzQ7aWR4XCYjMzQ7IHRvIFwmIzM0O2lkeF9lbmRcJiMzNDssIGluY2x1ZGluZyBib3RoLlxuMTA3MzpcdFx0ICovXG4xMDc0Olx0XHRzZXFfZW5kID0gc2VxX25vID8gc2VxX25vIDogcnh0aWQtXHUwMDNlc2VxX25leHQ7XG4xMDc1Olx0XHRpZHhfZW5kID0gQUdHUl9XSU5fSURYKHNlcV9lbmQsIHJ4dGlkLVx1MDAzZWhvbGRfcV9zeik7XG4xMDc2Olx0XG4xMDc3Olx0XHRkbyB7XG4xMDc4Olx0XHRcdG5vZGUgPSBcdTAwMjZyeHRpZC1cdTAwM2Vob2xkX3FbaWR4XTtcbjEwNzk6XHRcdFx0aWYgKChvcmRlciA9PSAxKSBcdTAwMjZcdTAwMjYgKCFub2RlLVx1MDAzZXNrYikpXG4xMDgwOlx0XHRcdFx0YnJlYWs7XG4xMDgxOlx0XG4xMDgyOlx0XHRcdGlmIChub2RlLVx1MDAzZXNrYikge1xuMTA4MzpcdFx0XHRcdGlmIChub2RlLVx1MDAzZWlzX2Ftc2R1KVxuMTA4NDpcdFx0XHRcdFx0YWdncl9zbGljZV9hbXNkdShhZ2dfY29ubi1cdTAwM2VhZ2dyX2luZm8sIHJ4dGlkLFxuMTA4NTpcdFx0XHRcdFx0XHRcdCBub2RlLVx1MDAzZXNrYik7XG4xMDg2Olx0XHRcdFx0ZWxzZVxuMTA4NzpcdFx0XHRcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cnh0aWQtXHUwMDNlcSwgbm9kZS1cdTAwM2Vza2IpO1xuMTA4ODpcdFx0XHRcdG5vZGUtXHUwMDNlc2tiID0gTlVMTDtcbjEwODk6XHRcdFx0fSBlbHNlIHtcbjEwOTA6XHRcdFx0XHRzdGF0cy1cdTAwM2VudW1faG9sZSYjNDM7JiM0Mzs7XG4xMDkxOlx0XHRcdH1cbjEwOTI6XHRcbjEwOTM6XHRcdFx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSBBVEg2S0xfTkVYVF9TRVFfTk8ocnh0aWQtXHUwMDNlc2VxX25leHQpO1xuMTA5NDpcdFx0XHRpZHggPSBBR0dSX1dJTl9JRFgocnh0aWQtXHUwMDNlc2VxX25leHQsIHJ4dGlkLVx1MDAzZWhvbGRfcV9zeik7XG4xMDk1Olx0XHR9IHdoaWxlIChpZHggIT0gaWR4X2VuZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTY3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgQUdHUl9XSU5fSURYYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgQUdHUl9XSU5fSURYYC4gR2l2ZW4gaXRzIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGlzIGluZGV4IGlzIGJlaW5nIGRlcml2ZWQgZnJvbSBhIHNlcXVlbmNlIG51bWJlciwgbW9zdCBsaWtlbHkgdXNpbmcgYSBtb2R1bG8gb3IgYml0d2lzZSBBTkQgb3BlcmF0aW9uIHRvIHdyYXAgaXQgd2l0aGluIGEgYnVmZmVyIHNpemUsIGBob2xkX3Ffc3pgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGVpdGhlciBgc2VxICUgaG9sZF9xX3N6YCBvciB0aGUgYml0d2lzZSBlcXVpdmFsZW50IGBzZXEgJmFtcDsgKGhvbGRfcV9zeiAtIDEpYC4gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBhcHByb2FjaGVzIGZvciBpbXBsZW1lbnRpbmcgYSBjaXJjdWxhciBidWZmZXIgb3IgYSByaW5nIGJ1ZmZlciwgd2hpY2ggc2VlbXMgdGhlIG1vc3QgbGlrZWx5IHNjZW5hcmlvIGdpdmVuIHRoZSBuYW1lcy4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlIG9mIGBBR0dSX1dJTl9JRFhgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QuIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYGhvbGRfcV9zemAgaXMgYSBwb3dlciBvZiAyIHRvIHZhbGlkYXRlIHRoZSBiaXR3aXNlIEFORCBhcHByb2FjaC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBgc2VxYCBpcyBnZW5lcmF0ZWQsIGFuZCBob3cgYEFHR1JfV0lOX0lEWGAgaXMgdGhlbiBlbXBsb3llZCB0byBhY2Nlc3MgYW5kIHVwZGF0ZSBzcGVjaWZpYyBsb2NhdGlvbnMgd2l0aGluIHRoZSBkYXRhIHN0cnVjdHVyZS4gSXQmIzM5O3MgYWxsIGFib3V0IHZlcmlmeWluZyB0aGF0IHRoZSBtb2R1bG8gb3BlcmF0aW9uIGlzIHByb3Blcmx5IGhhbmRsaW5nIHRoZSBjeWNsaWNhbCBuYXR1cmUgb2YgdGhlIGJ1ZmZlci4gQW55IGRpc2NyZXBhbmNpZXMgaGVyZSBjb3VsZCBsZWFkIHRvIHNpZ25pZmljYW50IGRhdGEgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGdvYWwgaXMgdG8gZGVlcGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgQUdHUl9XSU5fSURYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9MTY2PWVudW0gYXRoNmtsX2h3X2ZsYWdzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNjA6I2RlZmluZSBBR0dSX1dJTl9JRFgoeCwgeSkgICAgICAgICAgKCh4KSAlICh5KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI2MS0jZGVmaW5lIEFHR1JfSU5DUl9JRFgoeCwgeSkgICAgICAgICBBR0dSX1dJTl9JRFgoKCh4KSAmIzQzOyAxKSwgKHkpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjEwOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpZGUgYnkgWmVybyBCdWcgQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkLiBJJiMzOTt2ZSBzcG90dGVkIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIHZ1bG5lcmFiaWxpdHkuIFRoZSBgQUdHUl9XSU5fSURYKHgsIHkpYCBtYWNybyBpcyBpbXBsZW1lbnRlZCBhcyBgKCh4KSAlICh5KSlgLiBTaW1wbGUgZW5vdWdoLCBidXQgaWYgYHlgIGlzIHplcm8sIHdlJiMzOTt2ZSBnb3QgYSBwcm9ibGVtLiAgCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGB5YCBpcyBlcXVpdmFsZW50IHRvIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YC4gRGlnZ2luZyBkZWVwZXIsIGByeHRpZC0mZ3Q7aG9sZF9xX3N6YCBpcyBkZXJpdmVkIGZyb20gYFRJRF9XSU5ET1dfU1ood2luX3N6KWAsIGFuZCB0aGF0IG1hY3JvIGV4cGFuZHMgdG8gYCh3aW5fc3opICZsdDsmbHQ7IDFgLiAgU28sIGlmIGB3aW5fc3pgIGhhcHBlbnMgdG8gYmUgemVybywgYGhvbGRfcV9zemAgZW5kcyB1cCBiZWluZyB6ZXJvIGFzIHdlbGwuIFRoZW4gdGhlIGBBR0dSX1dJTl9JRFhgIG1hY3JvIGJlY29tZXMgYHNlcV9uZXh0ICUgMGAsIHdoaWNoICpkZWZpbml0ZWx5KiBjYXVzZXMgYSBrZXJuZWwgcGFuaWMgd2l0aCBhIGRpdmlkZS1ieS16ZXJvIGVycm9yLgoKVGhlIHByb3ZpZGVkIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGhlYWQtb24uIEl0IGludHJvZHVjZXMgYSBjaGVjazogYGlmICh3aW5fc3ogJmx0OyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6ICZndDsgQUdHUl9XSU5fU1pfTUFYKWAuICBTaW5jZSBgQUdHUl9XSU5fU1pfTUlOYCBpcyAyLCB0aGlzIGVmZmVjdGl2ZWx5IHByZXZlbnRzIGB3aW5fc3pgIGZyb20gZXZlciBiZWluZyB6ZXJvLiBUaGF0JiMzOTtzIGEgc29saWQgZml4LCBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGZpeGVzIHRoYXQgZGl2aWRlIGJ5IHplcm8hCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHdoZXJlIHRvIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMuIFRoZSBwYXRjaCBtb2RpZmllcyBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgLCBzbyB0aGF0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0LiAgV2Ugc2hvdWxkIGFsc28gYmUgbG9va2luZyBhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBBbmQsIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgYGFnZ3JfZGVxdWVfZnJtc2AgYXMgd2VsbC4gIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIHN0YXJ0IGRpZ2dpbmcgYSBiaXQgZGVlcGVyIGZvciByZWxhdGVkIGZ1bmN0aW9ucy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjI6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC05NjMtXHRcdFx0ICAgICB1OCB3aW5fc3opO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2OTg6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5OS1cdFx0XHQgICAgIHU4IHdpbl9zeilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzNTI9c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTc6XHRhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTgtXHRcdFx0XHRsZTE2X3RvX2NwdShjbWQtXHUwMDNlc3Rfc2VxX25vKSwgY21kLVx1MDAzZXdpbl9zeik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDMxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIHRoZSBCQSBSZXF1ZXN0IEV2ZW50IEhhbmRsaW5nKioKClJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIHByb2JsZW0uIFRoZSBzeXN0ZW0mIzM5O3MgdHJpZ2dlcmVkIGJ5IHRoZXNlIHN5bWJvbHM6IGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAsIGFuZCBgYWdncl9kZXF1ZV9mcm1zYC4gVGhhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgIGxvb2tzIGxpa2UgdGhlIGNyaXRpY2FsIG9uZSwgdGhlIHJlY2VpdmVyIG9mIHRoZSBBZGRCQSByZXF1ZXN0IGV2ZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGl0LCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gb3VyIGFnZ3JlZ2F0aW9uIGZyYW1ld29yay4KCk9rYXksIG15IGZpcnN0IHBvcnQgb2YgY2FsbCB3aWxsIGJlIHRvIGNoZWNrIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgc3BlY2lmaWNhbGx5LiBUaGF0IHNob3VsZCBiZSBpbiBgd21pLmNgLCByaWdodD8gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIFdNSSBldmVudCBoYW5kbGluZyB1c3VhbGx5IHNpdHMsIHNvIHRoYXQmIzM5O3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O2xsIGNoZWNrIGhvdyBpdCYjMzk7cyBoYW5kbGVkIHdpdGhpbiB0aGUgbGFyZ2VyIFdNSSBmcmFtZXdvcmsuIFRoZSBgd21pYCBmaWxlIGlzIHRoZSBjZW50cmFsIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIFdpcmVsZXNzIE1hbmFnZW1lbnQgSW50ZXJmYWNlIGludGVyYWN0aW9ucy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHN5c3RlbSBpcyByZWFjdGluZyB0byB0aGUgZXZlbnQsIGhvdyBpdCYjMzk7cyBwYXJzaW5nIHRoZSByZXF1ZXN0LCBhbmQgd2hhdCBhY3Rpb25zIGl0JiMzOTtzIHRha2luZyBpbiByZXNwb25zZS4gVGhlbiBJIGNhbiB0cmFjZSB0aGUgZmxvdyBmcm9tIHRoZXJlLiBJIGV4cGVjdCB0aGF0IHdpbGwgaWxsdW1pbmF0ZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIGFnZ3JlZ2F0ZSBmcmFtZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNTIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM1MjpcdHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4zMzUzOlx0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuMzM1NDpcdHtcbjMzNTU6XHRcdHN0cnVjdCB3bWlfYWRkYmFfcmVxX2V2ZW50ICpjbWQgPSAoc3RydWN0IHdtaV9hZGRiYV9yZXFfZXZlbnQgKikgZGF0YXA7XG4zMzU2Olx0XG4zMzU3Olx0XHRhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQsXG4zMzU4Olx0XHRcdFx0XHRsZTE2X3RvX2NwdShjbWQtXHUwMDNlc3Rfc2VxX25vKSwgY21kLVx1MDAzZXdpbl9zeik7XG4zMzU5Olx0XG4zMzYwOlx0XHRyZXR1cm4gMDtcbjMzNjE6XHR9XG4zMzYyOlx0XG4zMzYzOlx0c3RhdGljIGludCBhdGg2a2xfd21pX2RlbGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbjMzNjQ6XHRcdFx0XHRcdFx0IHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG4zMzY1Olx0e1xuMzM2NjpcdFx0c3RydWN0IHdtaV9kZWxiYV9ldmVudCAqY21kID0gKHN0cnVjdCB3bWlfZGVsYmFfZXZlbnQgKikgZGF0YXA7XG4zMzY3Olx0XG4zMzY4Olx0XHRhZ2dyX3JlY3ZfZGVsYmFfcmVxX2V2dCh2aWYsIGNtZC1cdTAwM2V0aWQpO1xuMzM2OTpcdFxuMzM3MDpcdFx0cmV0dXJuIDA7XG4zMzcxOlx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODIwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB3aXJlbGVzcyBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIERpdmlzaW9uIGJ5IFplcm8gaW4gdGhlIGF0aDZrbCBEcml2ZXIqKgoKUmlnaHQsIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgKmlzKiBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgIGZ1bmN0aW9uIGluIGB0eHJ4LmNgIGlzIHRoZSBvbmUgSSBuZWVkIHRvIGV4YW1pbmUsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbiB0b29rIHBsYWNlLgoKQWxyaWdodCwgbW92aW5nIG9uLCBsZXQmIzM5O3MgbG9vayBhdCBgYWdncl9kZXF1ZV9mcm1zYCwgYWxzbyBpbiBgdHhyeC5jYC4gSSYjMzk7dmUgZ290IGEgaHVuY2gg4oCTIHRoYXQmIzM5O3MgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBkaXZpc2lvbiBieSB6ZXJvIGlzIHByb2JhYmx5IG9jY3VycmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBkZXF1ZXVpbmcgcHJvY2VzcyBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYWdncmVnYXRpb24uCgpOb3csIGxldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGFsbCB0aGUgcmVsZXZhbnQgY29uZmlncyBlbmFibGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLgoKV2FpdCBhIHNlY29uZCwgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGdvIGJhY2sgYW5kIHRob3JvdWdobHkgcmUtZXhhbWluZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCBmb3IgYW55IG90aGVyIHBvc3NpYmlsaXRpZXMuIEkgbmVlZCB0byBlbnN1cmUgbm90aGluZyBoYXMgYmVlbiBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEg2S0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyOmNvbmZpZyBBVEg2S0xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBtb2JpbGUgY2hpcHNldHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxNDpjb25maWcgQVRINktMX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyNTpjb25maWcgQVRINktMX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzU6Y29uZmlnIEFUSDZLTF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDU6Y29uZmlnIEFUSDZLTF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDYtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1Nzpjb25maWcgQVRINktMX1JFR0RPTUFJTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE4MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgV2lyZWxlc3MgRHJpdmVyIENvbXBpbGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRlcGVuZGVuY3kgdHJlZSwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBBVEg2S0xfVVNCYCByZWxpZXMgb24gYEFUSDZLTGAuIFRoaXMgdGVsbHMgbWUgdGhhdCBpZiBJJiMzOTt2ZSBnb3QgYm90aCBvZiB0aG9zZSwgSSBzaG91bGQgYmUgZ29vZCB0byBnby4gQnV0LCBpdCYjMzk7cyBhbHdheXMgc21hcnQgdG8gY29uZmlybS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IGBBVEg2S0xfVVNCYCBhbG9uZSBpcyBpbmRlZWQgc3VmZmljaWVudCBmb3IgY29tcGlsaW5nIGB0eHJ4LmNgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYWxsIG5lY2Vzc2FyeSBpbmNsdWRlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcmVzZW50LiBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIHRlc3QuIEp1c3QgYSBzaW1wbGUgY2hlY2sgdG8gY29uZmlybSB0aGF0IG15IGFzc3VtcHRpb25zIGhvbGQgdHJ1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHhyeC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZT0zMz1hdGg2a2xfY29yZS15ICYjNDM7PSBtYWluLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSAmIzQzOz0gdHhyeC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM1LWF0aDZrbF9jb3JlLXkgJiM0Mzs9IHdtaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTA5CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGF0aDZrbCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHR4cngub2AgaXMgaW5kZWVkIGEgY29tcG9uZW50IG9mIGBhdGg2a2xfY29yZS15YCwgYW5kIGl0JiMzOTtzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19BVEg2S0xgIGlzIGVuYWJsZWQuIFRpbWUgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYCBhcmUgdGhlIHByaW1hcnkgb25lcyB0byBmb2N1cyBvbi4KClRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYSBjcnVjaWFsIGZpeCBmb3IgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBhdGg2a2xgIGRyaXZlci4gSXQgYXBwZWFycyB0aGVyZSYjMzk7cyBhIHJpc2sgb2YgZGl2aXNpb24gYnkgemVybyBvciBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBkZXZpY2UuIFRoaXMgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgYnkgYSByb2d1ZSBVU0IgZGV2aWNlIHNlbmRpbmcgYSBzcGVjaWFsbHkgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhIGRvZGd5IGB3aW5fc3pgIHZhbHVlLiBUaGUgcGF0Y2gmIzM5O3Mgc29sdXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiBhZGQgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMgZXhwbG9pdGFibGUgY29uZGl0aW9uLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkaXJlY3RseSBwYXRjaGluZyByZWFjaGFibGUgY29kZS4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCwgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCwgYW5kIGBhZ2dyX2RlcXVlX2ZybXNgLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgcG9pbnRzIG9mIGludGVyZXN0IGhlcmUuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YWdncl9kZXF1ZV9mcm1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRINktMJiMzNDssCiAgICAmIzM0O0FUSDZLTF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICAgJiMzNDthdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCYjMzQ7LAogICAgJiMzNDthZ2dyX2RlcXVlX2ZybXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aXNpb24gYnkgemVybyBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uIGluIHRoZSBhdGg2a2wgZHJpdmVyIHdoZW4gcHJvY2Vzc2luZyBXTUlfQUREQkFfUkVRX0VWRU5USUQgZXZlbnRzIGZyb20gdGhlIGRldmljZS4gVGhlIHZ1bG5lcmFiaWxpdHkgY2FuIGJlIHRyaWdnZXJlZCBieSBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHNlbmRpbmcgYSBjcmFmdGVkIFdNSSBldmVudCB3aXRoIGFuIGludmFsaWQgYHdpbl9zemAuIFRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgYHdpbl9zemAgdG8gcHJldmVudCB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwYXRjaGVzIHJlYWNoYWJsZSBjb2RlLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MDYuNzE3MDIwODQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNTEwMDc4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCIsXG4gICAgXCJhZ2dyX2RlcXVlX2ZybXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGF0aDZrbCBkcml2ZXIgd2hlbiBwcm9jZXNzaW5nIFdNSV9BRERCQV9SRVFfRVZFTlRJRCBldmVudHMgZnJvbSB0aGUgZGV2aWNlLiBUaGUgdnVsbmVyYWJpbGl0eSBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIFVTQiBkZXZpY2Ugc2VuZGluZyBhIGNyYWZ0ZWQgV01JIGV2ZW50IHdpdGggYW4gaW52YWxpZCBgd2luX3N6YC4gVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHBhdGNoZXMgcmVhY2hhYmxlIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjA2LjcxNzAyNTM1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA2MjkxNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmYwNGNmZmRhZTAwYzc2N2Y1YTQ2Yzc3ZDE2ZThlN2RjN2RlY2ViYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAwMDo0NzowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuaW5kZXggODBlNjZhY2M1Y2Y2ZTkuLmEzOWM4MTUwNTg3ZWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5AQCAtMTcyMiwxMyArMTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXFxuIFxcbiBcXHRyeHRpZCA9IFxcdTAwMjZhZ2dyX2Nvbm4tXFx1MDAzZXJ4X3RpZFt0aWRdO1xcbiBcXG4tXFx0aWYgKHdpbl9zeiBcXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpXFxuLVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCBcXFwiJXM6IHdpbl9zeiAlZCwgdGlkICVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xcbi1cXG4gXFx0aWYgKHJ4dGlkLVxcdTAwM2VhZ2dyKVxcbiBcXHRcXHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xcbiBcXG4rXFx0aWYgKHdpbl9zeiBcXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpIHtcXG4rXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cnh0aWQtXFx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xcbiBcXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XFxuIFxcdHJ4dGlkLVxcdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MDcuMTIzOTkxNjA1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTg0NDAyODc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dFwiLFxuICAgIFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIixcbiAgICBcImFnZ3JfZGVxdWVfZnJtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgYXRoNmtsIGRyaXZlciB3aGVuIHByb2Nlc3NpbmcgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UuIFRoZSB2dWxuZXJhYmlsaXR5IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBtYWxpY2lvdXMgVVNCIGRldmljZSBzZW5kaW5nIGEgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhbiBpbnZhbGlkIGB3aW5fc3pgLiBUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcGF0Y2hlcyByZWFjaGFibGUgY29kZSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZjA0Y2ZmZGFlMDBjNzY3ZjVhNDZjNzdkMTZlOGU3ZGM3ZGVjZWJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDA6NDc6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5pbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbkBAIC0xNzIyLDEzICsxNzIyLDE1IEBAIHZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcbiBcbiBcdHJ4dGlkID0gXHUwMDI2YWdncl9jb25uLVx1MDAzZXJ4X3RpZFt0aWRdO1xuIFxuLVx0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKVxuLVx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXG5cIixcbi1cdFx0XHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xuLVxuIFx0aWYgKHJ4dGlkLVx1MDAzZWFnZ3IpXG4gXHRcdGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShhZ2dyX2Nvbm4sIHRpZCk7XG4gXG4rXHRpZiAod2luX3N6IFx1MDAzYyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6IFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpIHtcbitcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwiJXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCIsXG4rXHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XG4gXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XG4gXHRyeHRpZC1cdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjA3LjEyMzk5MzAyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODA0ODQwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgIHRoYXQgbW9kaWZpZXMgdGhlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCB0aGV5J3ZlIGFkZGVkIGEgcmV0dXJuIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgYmFzZWQgb24gdGhlIHNpemUgb2YgYSB3aW5kb3cgKGB3aW5fc3pgKS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBndWFyZGluZyBhZ2FpbnN0IGB3aW5fc3pgIHZhbHVlcyB0aGF0IGFyZSBvdXRzaWRlIGEgZGVmaW5lZCByYW5nZSAoYEFHR1JfV0lOX1NaX01JTmAgYW5kIGBBR0dSX1dJTl9TWl9NQVhgKS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmFuZ2UgY2hlY2sgZm9yIHRoaXMgd2luZG93IHNpemUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgdGhpcyBpcywgcGFydGljdWxhcmx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGRyaXZlciBpcyBmb3IgQXRoZXJvcyBBUjYwMDMvQVI2MDA0IDgwMi4xMW4gd2lyZWxlc3MgTEFOIGNhcmRzLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIHdpdGhpbiBRRU1VPyBJZiBzbywgSSBjYW4gcHJvYmFibHkgZnV6eiB0aGUgcmVsZXZhbnQgY29kZS5cblxuR2VuZXJhbGx5LCBVU0IsIFNESU8sIG9yIFBDSSBkZXZpY2VzIGFyZSB0aGUgZWFzaWVzdCB0byBmdXp6IGlmIHlvdSBoYXZlIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgaWYgU3l6a2FsbGVyIGNhbiBpbmplY3QgcGFja2V0cyBkaXJlY3RseS4gU3l6a2FsbGVyIGhhcyBVU0IgYW5kIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcywgYW5kIGl0IGFsc28gd29ya3Mgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBncmVhdCwgYnV0LCB0aGlzIGlzIGEgZnVsbG1hYyBkcml2ZXIsIG5vdCBtYWM4MDIxMSwgcmlnaHQ/IE5lZWQgdG8gY29uZmlybS4gUmlnaHQsIGxldCdzIGNoZWNrIHdoZXRoZXIgdGhpcyB1c2VzIFNESU8gb3IgVVNCLiBJJ2xsIGdyZXAgZm9yIGF0aDZrbCByZWxhdGVkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoxMi40MDQ0NzkwMjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwOTM1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwMzggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yPWNvbmZpZyBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMC1cXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjExOlxcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMi1cXHQgIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0xND1jb25maWcgQVRINktMX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MTU6XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMC1cXHQgIEF0aGVyb3MgQVI2MDAzIGFuZCBBUjYwMDQgY2hpcHNldHMgcnVubmluZyBvdmVyIFNESU8uIElmIHlvdVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyMTpcXHQgIGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXRoNmtsX3NkaW8uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTIyLVxcdCAgUGxlYXNlIG5vdGUgdGhhdCBBUjYwMDIgYW5kIEFSNjAwMSBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MjU9Y29uZmlnIEFUSDZLTF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjY6XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNy1cXHRkZXBlbmRzIG9uIEFUSDZLTFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMyLVxcdCAgVVNCLiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjMzOlxcdCAgY2FsbGVkIGF0aDZrbF91c2IuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0zNT1jb25maWcgQVRINktMX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjM2OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzgtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozOTpcXHQgIEVuYWJsZXMgYXRoNmtsIGRlYnVnIHN1cHBvcnQsIGluY2x1ZGluZyBkZWJ1ZyBtZXNzYWdlc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00MC1cXHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz00NT1jb25maWcgQVRINktMX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDY6XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgdHJhY2luZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ny1cXHRkZXBlbmRzIG9uIEFUSDZLTFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ5LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NTA6XFx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01MS1cXHQgIGV4YW1wbGUsIGNhbiBiZSBlbmFibGVkIHdpdGggaGVscCBvZiB0cmFjZS1jbWQuIEFsbCBkZWJ1Z1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTU3PWNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU4OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01OS1cXHRkZXBlbmRzIG9uIEFUSDZLTFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19BVEg2S0wpICs9IGF0aDZrbF9jb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI2OmF0aDZrbF9jb3JlLXkgKz0gZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjc6YXRoNmtsX2NvcmUteSArPSBoaWYub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjg6YXRoNmtsX2NvcmUteSArPSBodGNfbWJveC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyOTphdGg2a2xfY29yZS15ICs9IGh0Y19waXBlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMwOmF0aDZrbF9jb3JlLXkgKz0gYm1pLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMxOmF0aDZrbF9jb3JlLXkgKz0gY2ZnODAyMTEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzI6YXRoNmtsX2NvcmUteSArPSBpbml0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMzOmF0aDZrbF9jb3JlLXkgKz0gbWFpbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNDphdGg2a2xfY29yZS15ICs9IHR4cngub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzU6YXRoNmtsX2NvcmUteSArPSB3bWkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzY6YXRoNmtsX2NvcmUteSArPSBjb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM3OmF0aDZrbF9jb3JlLXkgKz0gcmVjb3Zlcnkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozOTphdGg2a2xfY29yZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MDphdGg2a2xfY29yZS0kKENPTkZJR19BVEg2S0xfVFJBQ0lORykgKz0gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfQVRINktMX1NESU8pICs9IGF0aDZrbF9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQzOmF0aDZrbF9zZGlvLXkgKz0gc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19BVEg2S0xfVVNCKSArPSBhdGg2a2xfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQ2OmF0aDZrbF91c2IteSArPSB1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjM6aW50IGF0aDZrbF9ibWlfZG9uZShzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjgtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyOTpcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIGRvbmUgc2tpcHBlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgKHU4ICopXFx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzc6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHNlbmQgYm1pIGRvbmU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NTpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8gKnRhcmdfaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTItXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVxcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzZW5kIGdldCB0YXJnZXQgaW5mbzogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01OC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02MS1cXHRpZiAoYXItXFx1MDAzZWhpZl90eXBlID09IEFUSDZLTF9ISUZfVFlQRV9VU0IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjYyOlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsICh1OCAqKXRhcmdfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTYzLVxcdFxcdFxcdFxcdFxcdCAgc2l6ZW9mKCp0YXJnX2luZm8pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2NTpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKilcXHUwMDI2dGFyZ19pbmZvLVxcdTAwM2V2ZXJzaW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjYtXFx0XFx0XFx0XFx0c2l6ZW9mKHRhcmdfaW5mby1cXHUwMDNldmVyc2lvbikpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3MDpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVjdiB0YXJnZXQgaW5mbzogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03MS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03NS1cXHRcXHQvKiBEZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgYXJlIGluIHRoZSBUYXJnZXQncyB0YXJnX2luZm8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjc2OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03Ny1cXHRcXHRcXHRcXHQgICAodTggKilcXHUwMDI2dGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03OS1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo4MDpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJ1bmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyBieXRlIGNvdW50OiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTgxLVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk0LVxcdFxcdC8qIFJlYWQgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGFyZ19pbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo5NTpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTYtXFx0XFx0XFx0XFx0ICAgKCh1OCAqKXRhcmdfaW5mbykgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTAyOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvICglZCBieXRlcyk6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAzLVxcdFxcdFxcdFxcdCAgIHRhcmdfaW5mby1cXHUwMDNlYnl0ZV9jb3VudCwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTA4OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJ0YXJnZXQgaW5mbyAodmVyOiAweCV4IHR5cGU6IDB4JXgpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA5LVxcdFxcdCAgIHRhcmdfaW5mby1cXHUwMDNldmVyc2lvbiwgdGFyZ19pbmZvLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTE0OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTIyLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTIzOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMjQtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEzNDpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTM1LVxcdFxcdCAgIFxcXCJibWkgcmVhZCBtZW1vcnk6IGRldmljZTogYWRkcjogMHgleCwgbGVuOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUxOlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUzOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1NC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTYtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU3OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1ZiwgcnhfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1OC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTk6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgZnJvbSB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE2MC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNzA6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTgxOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xODItXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE5NTpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTk2LVxcdFxcdCAgIFxcXCJibWkgd3JpdGUgbWVtb3J5OiBhZGRyOiAweCV4LCBsZW46ICVkXFxcXG5cXFwiLCBhZGRyLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjc6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI4LVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzNzppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0NC1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI0NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQ2LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNTY6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBleGVjdXRlOiBhZGRyOiAweCV4LCBwYXJhbTogJWQpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU3LVxcdFxcdCAgIGFkZHIsICpwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI2NzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI2OTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzAtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjczOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjc0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjc2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI4NDppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5MS1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5MjpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjkzLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMDM6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBzZXQgYXBwIHN0YXJ0OiBhZGRyOiAweCV4XFxcXG5cXFwiLCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzExOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTItXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzEzOlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMjA6aW50IGF0aDZrbF9ibWlfcmVnX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzI3LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzI4OlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjktXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMzOTpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIHJlYWQgU09DIHJlZzogYWRkcjogMHgleFxcXFxuXFxcIiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM0NzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM0OTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTAtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzUzOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzU0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzU2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM2MzppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzAtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzE6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM3Mi1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzgyOlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zODMtXFx0XFx0ICAgXFxcImJtaSB3cml0ZSBTT0MgcmVnOiBhZGRyOiAweCV4LCBwYXJhbTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM5NDpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM5NjpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTctXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDAzOmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTItXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MTM6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDI0OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgc2VuZCBMWiBkYXRhOiBsZW46ICVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQyNS1cXHRcXHQgICBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDE6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ0Mi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDM6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ1NDppbnQgYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDYxLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDYyOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ3MzpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc0LVxcdFxcdCAgIFxcXCJibWkgTFogc3RyZWFtIHN0YXJ0OiBhZGRyOiAweCV4KVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDgzOlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODQtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDg1OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzdGFydCBMWiBzdHJlYW0gdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODYtXFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDkzOmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTAwOlxcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDk6XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCBidWYsIGxhc3Rfd29yZF9vZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMy1cXHRpZiAodW5hbGlnbmVkX2J5dGVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE0OlxcdFxcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgKHU4ICopXFx1MDAyNmxhc3Rfd29yZCwgNCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxOC1cXHRcXHQgKiBUaGlzIHNlcnZlcyBtYWlubHkgdG8gZmx1c2ggVGFyZ2V0IGNhY2hlcy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOTpcXHRcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgMHgwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjQ6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTI5OmludCBhdGg2a2xfYm1pX2luaXQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NDQ6dm9pZCBhdGg2a2xfYm1pX2NsZWFudXAoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMTk6c3RydWN0IGF0aDZrbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIyMDpzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjEtXFx0X19sZTMyIGJ5dGVfY291bnQ7ICAgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjY6I2RlZmluZSBhdGg2a2xfYm1pX3dyaXRlX2hpMzIoYXIsIGl0ZW0sIHZhbClcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjctXFx0KHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzE6XFx0XFx0YWRkciA9IGF0aDZrbF9nZXRfaGlfaXRlbV9hZGRyKGFyLCBISV9JVEVNKGl0ZW0pKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzItXFx0XFx0diA9IGNwdV90b19sZTMyKHZhbCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMzOlxcdFxcdGF0aDZrbF9ibWlfd3JpdGUoYXIsIGFkZHIsICh1OCAqKSBcXHUwMDI2diwgc2l6ZW9mKHYpKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzQtXFx0fSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIzNjojZGVmaW5lIGF0aDZrbF9ibWlfcmVhZF9oaTMyKGFyLCBpdGVtLCB2YWwpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM3LVxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDItXFx0XFx0KHZvaWQpIChjaGVja190eXBlID09IHZhbCk7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQzOlxcdFxcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQ0OlxcdFxcdHJldCA9IGF0aDZrbF9ibWlfcmVhZChhciwgYWRkciwgKHU4ICopIFxcdTAwMjZ0bXAsIDQpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0NS1cXHRcXHRpZiAoIXJldClcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MDppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MTp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTI6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NDppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NTppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTY6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU3OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1ODppbnQgYXRoNmtsX2JtaV93cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU5OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjAtXFx0XFx0ICAgICAgIHUzMiBhZGRyLCB1MzIgKnBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MTppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjYyLVxcdFxcdFxcdCAgICAgdTMyIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYzOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjQ6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NTppbnQgYXRoNmtsX2JtaV9sel9kYXRhKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjY2LVxcdFxcdCAgICAgICB1OCAqYnVmLCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NzppbnQgYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjgtXFx0XFx0XFx0ICAgICAgIHUzMiBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2OTppbnQgYXRoNmtsX2JtaV9mYXN0X2Rvd25sb2FkKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjcwLVxcdFxcdFxcdCAgICAgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo1NzpzdHJ1Y3QgYXRoNmtsX2NmZzgwMjExX21hdGNoX3Byb2JlX3NzaWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01OC1cXHRzdHJ1Y3QgY2ZnODAyMTFfc3NpZCBzc2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo2MjpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9yYXRlIGF0aDZrbF9yYXRlc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy02My1cXHRSQVRFVEFCX0VOVCgxMCwgMHgxLCAwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzc6I2RlZmluZSBhdGg2a2xfYV9yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyArIDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc4OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXNfc2l6ZSAgICA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc5OiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXMgICAgIChhdGg2a2xfcmF0ZXMgKyAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4MDojZGVmaW5lIGF0aDZrbF9nX3JhdGVzX3NpemUgICAgMTJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgyOiNkZWZpbmUgYXRoNmtsX2dfaHRjYXAgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODM6I2RlZmluZSBhdGg2a2xfYV9odGNhcCAoSUVFRTgwMjExX0hUX0NBUF9TVVBfV0lEVEhfMjBfNDAgfCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg0LVxcdFxcdFxcdElFRUU4MDIxMV9IVF9DQVBfU0dJXzIwXFx0XFx0IHwgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIGF0aDZrbF8yZ2h6X2NoYW5uZWxzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg4LVxcdENIQU4yRygxLCAyNDEyLCAwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEwNDpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIGF0aDZrbF81Z2h6X2FfY2hhbm5lbHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTA1LVxcdENIQU41RygzNiwgMCksIENIQU41Ryg0MCwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfMmdoeiA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI1OlxcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfMmdoel9jaGFubmVscyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNjpcXHQuY2hhbm5lbHMgPSBhdGg2a2xfMmdoel9jaGFubmVscyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI3OlxcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXNfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI4OlxcdC5iaXRyYXRlcyA9IGF0aDZrbF9nX3JhdGVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XFx0Lmh0X2NhcC5jYXAgPSBhdGg2a2xfZ19odGNhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMwLVxcdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzMzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF81Z2h6ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzQ6XFx0Lm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzU6XFx0LmNoYW5uZWxzID0gYXRoNmtsXzVnaHpfYV9jaGFubmVscyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM2OlxcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXNfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM3OlxcdC5iaXRyYXRlcyA9IGF0aDZrbF9hX3JhdGVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XFx0Lmh0X2NhcC5jYXAgPSBhdGg2a2xfYV9odGNhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTM5LVxcdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDQtLyogcmV0dXJucyB0cnVlIGlmIHNjaGVkdWxlZCBzY2FuIHdhcyBzdG9wcGVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NTpzdGF0aWMgYm9vbCBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NzpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE1NzpcXHRhdGg2a2xfd21pX2VuYWJsZV9zY2hlZF9zY2FuX2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTYyOnN0YXRpYyB2b2lkIGF0aDZrbF9jZmc4MDIxMV9zc2Nhbl9kaXNhYmxlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NDpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2NS1cXHRib29sIHN0b3BwZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTY3OlxcdHN0b3BwZWQgPSBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3NTpzdGF0aWMgaW50IGF0aDZrbF9zZXRfd3BhX3ZlcnNpb24oc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc2LVxcdFxcdFxcdFxcdCAgZW51bSBubDgwMjExX3dwYV92ZXJzaW9ucyB3cGFfdmVyc2lvbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc4OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiAldVxcXFxuXFxcIiwgX19mdW5jX18sIHdwYV92ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE4Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxODc6XFx0XFx0YXRoNmtsX2VycihcXFwiJXM6ICV1IG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE4OC1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk0OnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hdXRoX3R5cGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk1LVxcdFxcdFxcdFxcdGVudW0gbmw4MDIxMV9hdXRoX3R5cGUgYXV0aF90eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxOTc6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6IDB4JXhcXFxcblxcXCIsIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE0LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIxNTpcXHRcXHRhdGg2a2xfZXJyKFxcXCIlczogMHgleCBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgYXV0aF90eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE2LVxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjI6c3RhdGljIGludCBhdGg2a2xfc2V0X2NpcGhlcihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MzIgY2lwaGVyLCBib29sIHVjYXN0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjI4OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiBjaXBoZXIgMHgleCwgdWNhc3QgJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyOS1cXHRcXHQgICBfX2Z1bmNfXywgY2lwaGVyLCB1Y2FzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjU3LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1ODpcXHRcXHRhdGg2a2xfZXJyKFxcXCJjaXBoZXIgMHgleCBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBjaXBoZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTktXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NTpzdGF0aWMgdm9pZCBhdGg2a2xfc2V0X2tleV9tZ210KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBrZXlfbWdtdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY3OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiAweCV4XFxcXG5cXFwiLCBfX2Z1bmNfXywga2V5X21nbXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODQ6c3RhdGljIGJvb2wgYXRoNmtsX2NmZzgwMjExX3JlYWR5KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4NjpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVxcdGlmICghdGVzdF9iaXQoV01JX1JFQURZLCBcXHUwMDI2YXItXFx1MDAzZWZsYWcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4OTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJ3bWkgaXMgbm90IHJlYWR5XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjkwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTMtXFx0aWYgKCF0ZXN0X2JpdChXTEFOX0VOQUJMRUQsIFxcdTAwMjZ2aWYtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyOTQ6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwid2xhbiBkaXNhYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5NS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDE6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwYV9pZShjb25zdCB1OCAqcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzA4OnN0YXRpYyBib29sIGF0aDZrbF9pc19yc25faWUoY29uc3QgdTggKnBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMzpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BzX2llKGNvbnN0IHU4ICpwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjE6c3RhdGljIGludCBhdGg2a2xfc2V0X2Fzc29jX3JlcV9pZXMoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgY29uc3QgdTggKmllcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIyLVxcdFxcdFxcdFxcdCAgICBzaXplX3QgaWVzX2xlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzI0OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzI1LVxcdGNvbnN0IHU4ICpwb3M7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MTIuNDYxNTc3MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc5OTIwOTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQXRoZXJvcyA2eHh4IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgQXRoZXJvcyA2eHh4IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBpdCBmb3IgZnV6emluZy4gSSBzZWUgdHdvIG1haW4gY29ubmVjdGlvbiBtZXRob2RzOiBVU0IgKENPTkZJR19BVEg2S0xfVVNCKSBhbmQgU0RJTyAoQ09ORklHX0FUSDZLTF9TRElPKS4gVGhlIFVTQiBvcHRpb24gaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIGtub3cgVVNCIGRldmljZXMgY2FuIGJlIGZ1enplZCBlZmZlY3RpdmVseSB1c2luZyB0ZWNobmlxdWVzIGxpa2UgZHVtbXlfaGNkIGFuZCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgaGF2ZSBleHBlcmllbmNlIHVzaW5nIHRob3NlIHRvb2xzLiBXaGlsZSBTRElPIGZ1enppbmcgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZSwgYW5kIHN5emthbGxlciBoYXMgc29tZSBiYXNpYyBpbmplY3Rpb24gc3VwcG9ydCBmb3IgaXQsIHRoZXJlIGlzbid0IGEgbWF0dXJlLCBnZW5lcmljIFNESU8gZnV6emVyIGluIHN5emthbGxlciByaWdodCBub3cuIFRoZXJlZm9yZSwgVVNCIHNlZW1zIGxpa2UgdGhlIG1vcmUgZGlyZWN0IGFuZCBhY2Nlc3NpYmxlIHBhdGggZm9yIG5vdy5cblxuR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGBDT05GSUdfQVRINktMX1VTQmAuIExldCdzIGRpZyBkZWVwZXIuIFRoZSB1bHRpbWF0ZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGEgcmVhY2hhYmxlIGZ1bmN0aW9uLCBhbmQgSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YC4gVGhhdCdzIGluIGB0eHJ4LmNgLiBMZXQncyBkaXZlIGluIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBJJ20ga2VlbiB0byBzZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIHRoZSBVU0IgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NTMsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MTcuMTQxNTAwNDUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNjk2OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTYyOnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTk2My1cXHRcXHRcXHQgICAgIHU4IHdpbl9zeik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNjk4OnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjk5LVxcdFxcdFxcdCAgICAgdTggd2luX3N6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzU3OlxcdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVxcdTAwM2V0aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU4LVxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGNtZC1cXHUwMDNlc3Rfc2VxX25vKSwgY21kLVxcdTAwM2V3aW5fc3opO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoxNy4xOTUyMDIwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODI5NTQxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXTUkgQWRkQkEgUmVxdWVzdCBFdmVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAuIFJpZ2h0LCBXTUkg4oCTIFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UuIFRoYXQncyBob3cgd2UgdGFsayB0byB0aGUgZmlybXdhcmUgb24gdGhpcyB0aGluZy4gQW5kIHNpbmNlIHRoZSBmaXJtd2FyZSdzIG9uIHRoZSBVU0IgZGV2aWNlLCB0aGUgaG9zdCBpcyBnZXR0aW5nIHRoZXNlIFdNSSBtZXNzYWdlcyAqZnJvbSogdGhlIFVTQi4gSG1t4oCmIGEgdGhvdWdodCBvY2N1cnMuIElmIHdlJ3JlIGZ1enppbmcgdGhlIFVTQiBkZXZpY2UsIHdlJ3JlIGVzc2VudGlhbGx5IGZ1enppbmcgdGhlIFdNSSBpbnRlcmZhY2UgaXRzZWxmLCByaWdodD8gV2UgY2FuIHBvdGVudGlhbGx5IGluamVjdCBjb21wbGV0ZWx5IGFyYml0cmFyeSBXTUkgbWVzc2FnZXMgdG8gdGhlIGhvc3QhIFNvLCBhIGtleSB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIFVTQiByZWNlaXZlIHBhdGguIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGRldGVybWluZSB0aGUgb3JpZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUzMiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoyMC44NzgxNTk2ODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5NjM1NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzMzPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9nZXRfcG1raWRfbGlzdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTI6c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTMtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTM4NzY9c3RhdGljIGludCBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZihzdHJ1Y3Qgd21pICp3bWksIHUxNiBpZl9pZHgsIHUxNiBjbWRfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjItXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dNSSwgXFxcIldNSV9BRERCQV9SRVFfRVZFTlRJRFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozOTIzOlxcdFxcdHJldHVybiBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCh3bWksIGRhdGFwLCBsZW4sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTI0LVxcdGNhc2UgV01JX0RFTEJBX1JFUV9FVkVOVElEOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0NzoyMC45MzAxMjc5NzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDA2MDczNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBDb2RlIHZpYSBVU0IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgdHJhY2VkIHRoaXMgYmFjay4gVGhlIHJlbGV2YW50IGZ1bmN0aW9uIGlzIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBXTUkgZXZlbnRzLiBUaGVzZSBldmVudHMgYXJlLCBhcyBleHBlY3RlZCwgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGRldmljZSBpdHNlbGYuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGlmIHdlIGVtdWxhdGUgYSBVU0IgZGV2aWNlLCB3ZSBjYW4gZmVlZCBpdCBhIGNyYWZ0ZWQgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnQuIFRoZSByZWFsbHkgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHdpbl9zemAgZmllbGQ7IHdlIGNhbiBzZXQgdGhpcyBhcmJpdHJhcmlseS4gVGhhdCdzIGEgY2xhc3NpYyBzaWduYWwgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgbWVhbnMgd2UndmUgaWRlbnRpZmllZCBhIHJlYWNoYWJsZSBjb2RlIHBhdGgsIGFuZCBpdCdzIHByaW1lIHRlcnJpdG9yeSBmb3IgVVNCIGZ1enppbmcuXG5cbk5vdywgYmVmb3JlIHdlIGdldCB0b28gZXhjaXRlZCwgbGV0J3MgbWFrZSBzdXJlIG91ciBlbnZpcm9ubWVudCBpcyBzZXR1cCBjb3JyZWN0bHkuIFdlIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ6IGBDT05GSUdfQVRINktMYCBhbmQgY3J1Y2lhbGx5LCBgQ09ORklHX0FUSDZLTF9VU0JgLiBXZSBtaWdodCBhcyB3ZWxsIGVuYWJsZSBgQ09ORklHX0FUSDZLTF9TRElPYCBmb3IgZ29vZCBtZWFzdXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBldmVudCBpcyBoYW5kbGVkLiBMZXQncyBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBhdCB0aGUgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBmdW5jdGlvbi4gVGhpcyBzaG91bGQgYmUgd2hlcmUgdGhlIGp1aWN5IHN0dWZmIGhhcHBlbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjY3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjI1LjMzNjIwNDE0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjkwOlxcdFxcdHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3ogPSAwO1xcbjE2OTE6XFx0XFxuMTY5MjpcXHRcXHRrZnJlZShyeHRpZC1cXHUwMDNlaG9sZF9xKTtcXG4xNjkzOlxcdFxcdHJ4dGlkLVxcdTAwM2Vob2xkX3EgPSBOVUxMO1xcbjE2OTQ6XFx0XFxuMTY5NTpcXHRcXHRtZW1zZXQoc3RhdHMsIDAsIHNpemVvZihzdHJ1Y3Qgcnh0aWRfc3RhdHMpKTtcXG4xNjk2OlxcdH1cXG4xNjk3OlxcdFxcbjE2OTg6XFx0dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxcbjE2OTk6XFx0XFx0XFx0XFx0ICAgICB1OCB3aW5fc3opXFxuMTcwMDpcXHR7XFxuMTcwMTpcXHRcXHRzdHJ1Y3QgYXRoNmtsX3N0YSAqc3RhO1xcbjE3MDI6XFx0XFx0c3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dyX2Nvbm4gPSBOVUxMO1xcbjE3MDM6XFx0XFx0c3RydWN0IHJ4dGlkICpyeHRpZDtcXG4xNzA0OlxcdFxcdHUxNiBob2xkX3Ffc2l6ZTtcXG4xNzA1OlxcdFxcdHU4IHRpZCwgYWlkO1xcbjE3MDY6XFx0XFxuMTcwNzpcXHRcXHRpZiAodmlmLVxcdTAwM2Vud190eXBlID09IEFQX05FVFdPUkspIHtcXG4xNzA4OlxcdFxcdFxcdGFpZCA9IGF0aDZrbF9nZXRfYWlkKHRpZF9tdXgpO1xcbjE3MDk6XFx0XFx0XFx0c3RhID0gYXRoNmtsX2ZpbmRfc3RhX2J5X2FpZCh2aWYtXFx1MDAzZWFyLCBhaWQpO1xcbjE3MTA6XFx0XFx0XFx0aWYgKHN0YSlcXG4xNzExOlxcdFxcdFxcdFxcdGFnZ3JfY29ubiA9IHN0YS1cXHUwMDNlYWdncl9jb25uO1xcbjE3MTI6XFx0XFx0fSBlbHNlIHtcXG4xNzEzOlxcdFxcdFxcdGFnZ3JfY29ubiA9IHZpZi1cXHUwMDNlYWdncl9jbnR4dC1cXHUwMDNlYWdncl9jb25uO1xcbjE3MTQ6XFx0XFx0fVxcbjE3MTU6XFx0XFxuMTcxNjpcXHRcXHRpZiAoIWFnZ3JfY29ubilcXG4xNzE3OlxcdFxcdFxcdHJldHVybjtcXG4xNzE4OlxcdFxcbjE3MTk6XFx0XFx0dGlkID0gYXRoNmtsX2dldF90aWQodGlkX211eCk7XFxuMTcyMDpcXHRcXHRpZiAodGlkIFxcdTAwM2U9IE5VTV9PRl9USURTKVxcbjE3MjE6XFx0XFx0XFx0cmV0dXJuO1xcbjE3MjI6XFx0XFxuMTcyMzpcXHRcXHRyeHRpZCA9IFxcdTAwMjZhZ2dyX2Nvbm4tXFx1MDAzZXJ4X3RpZFt0aWRdO1xcbjE3MjQ6XFx0XFxuMTcyNTpcXHRcXHRpZiAocnh0aWQtXFx1MDAzZWFnZ3IpXFxuMTcyNjpcXHRcXHRcXHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xcbjE3Mjc6XFx0XFxuMTcyODpcXHRcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbjE3Mjk6XFx0XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuMTczMDpcXHRcXHRcXHRcXHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xcbjE3MzE6XFx0XFx0XFx0cmV0dXJuO1xcbjE3MzI6XFx0XFx0fVxcbjE3MzM6XFx0XFxuMTczNDpcXHRcXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XFxuMTczNTpcXHRcXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XFxuMTczNjpcXHRcXHRyeHRpZC1cXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuMTczNzpcXHRcXHRpZiAoIXJ4dGlkLVxcdTAwM2Vob2xkX3EpXFxuMTczODpcXHRcXHRcXHRyZXR1cm47XFxuMTczOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MjUuMzM2MzU5MTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxOTM3Mzk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBZGRyZXNzaW5nIGEgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWUqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRyeWluZyB0byBmaXggYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGByZXR1cm5gIHN0YXRlbWVudCB3aGVuIGB3aW5fc3pgIGlzIG91dCBvZiBib3VuZHMuIFByZXZpb3VzbHksIHRoZSBjb2RlIGp1c3QgbG9nZ2VkIGEgZGVidWcgbWVzc2FnZSBhbmQga2VwdCBnb2luZy4gVGhhdCdzIGEgaHVnZSByZWQgZmxhZyBiZWNhdXNlIGBob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7YCB1c2VzIGB3aW5fc3pgIHRvIGNhbGN1bGF0ZSB0aGUgYWxsb2NhdGlvbiBzaXplLiBDbGVhcmx5LCBhbiBvdXQtb2YtYm91bmRzIGB3aW5fc3pgIGNvdWxkIGxlYWQgdG8gc29tZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uLCBsZWFkaW5nIHRvIGNyYXNoZXMgb3Igc2VjdXJpdHkgcHJvYmxlbXMuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaDsgSSBzaG91bGQgZG91YmxlLWNoZWNrIGhvdyBgVElEX1dJTkRPV19TWih3aW5fc3opYCBpcyBkZWZpbmVkIGFuZCBvcGVyYXRlcy4gSXQgY291bGQgYmUgZG9pbmcgc29tZSBjbGV2ZXIgY2xhbXBpbmcgb3IgdmFsaWRhdGlvbiB0aGF0IHdvdWxkIG1ha2UgdGhlIGluaXRpYWwgY29uY2VybiBtb290LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gR290dGEgdHJhY2UgdGhhdCBtYWNybyBhbmQgbWFrZSBzdXJlIGl0J3Mgbm90IHRoZSBzb3VyY2Ugb2YgYW5vdGhlciBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTU5MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjI4Ljg1NTczNTk3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM4NzAwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBUSURfV0lORE9XX1NaXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6MjcyOiNkZWZpbmUgVElEX1dJTkRPV19TWihfeCkgICAoKF94KSBcXHUwMDNjXFx1MDAzYyAxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6MjguOTA5NjExMDU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5ODE2NjMwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBNZW1vcnkgQWxsb2NhdGlvbiBDb25jZXJucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgbWFjcm8sIGFuZCBpdCdzIGRlZmluZWQgYXMgYCh3aW5fc3opIFx1MDAzY1x1MDAzYyAxYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIk9rYXksIGJpdC1zaGlmdGluZy4gVGhhdCdzIHVzdWFsbHkgZWZmaWNpZW50LCBidXQgaXMgaXQgY3JlYXRpbmcgYSBwb3RlbnRpYWxseSBsYXJnZSBtZW1vcnkgYWxsb2NhdGlvbj9cIiBFc3BlY2lhbGx5IHNpbmNlIHRoaXMgYHdpbl9zemAgcGFyYW1ldGVyIGlzIGxpa2VseSB1c2VkIHRvIHNpemUgc29tZSBzb3J0IG9mIGJ1ZmZlciBvciBkYXRhIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBmb3IgYSBsYXJnZSBzaGlmdCBpcyBjb25jZXJuaW5nLlxuXG5CdXQgdGhlbiBJIHJlbWVtYmVyLCBvciByYXRoZXIsIEkgKnJlYWxpemUqLCB0aGF0IGB3aW5fc3pgIGlzIGEgYHU4YC4gVGhhdCdzIGltcG9ydGFudC4gQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlciBtYXhlcyBvdXQgYXQgMjU1LiBTbywgdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8gd2l0aCB0aGUgc2hpZnQgaXMgMjU1IFx1MDAzY1x1MDAzYyAxLCB3aGljaCBlcXVhbHMgNTEwLiBPa2F5LCA1MTAuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGZvciBtZW1vcnkgdXNhZ2UuIEkgbmVlZCB0byBtdWx0aXBseSB0aGF0IHZhbHVlLCA1MTAsIGJ5IGBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpYC4gU2luY2UgYHNrYl9ob2xkX3FgIHNlZW1zIGxpa2UgYSByZWFzb25hYmx5IHNpemVkIHN0cnVjdHVyZSwgaXQncyB1bmxpa2VseSBhIDUxMCAqIGBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpYCBhbGxvY2F0aW9uIGlzIGEgbWFqb3IgbWVtb3J5IGhvZy4gXG5cbkhvd2V2ZXIsIGJlZm9yZSBJIGNhbiBjb25maWRlbnRseSBzYXkgaXQncyBzYWZlLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudC4gSXMgYHdpbl9zemAgdXNlZCBpbiBtb3JlIHBsYWNlcyB0aGFuIGp1c3QgdGhpcyBtYWNybz8gSXQncyBlc3NlbnRpYWwgdG8gdHJhY2Ugd2hlcmUgdGhpcyBgd2luX3N6YCB2YXJpYWJsZSBpcyB1c2VkLCBJIHNob3VsZCBjaGVjayBgcnh0aWQtXHUwMDNld2luX3N6YCwgaXQgbWlnaHQgYmUgdXNlZCBlbHNld2hlcmUgYW5kIGltcGFjdCBtZW1vcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjMzLjg5MTI3NjM4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzODI1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2luX3N6XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTMyMz1zdHJ1Y3Qgcnh0aWQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzI1LVxcdGJvb2wgdGltZXJfbW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjMyNjpcXHR1MTYgd2luX3N6O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTMyNy1cXHR1MTYgc2VxX25leHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0zMzYtXFx0ICogcmVvcmRlciBmcmFtZXMgYW5kIGl0J3MgYWNjZXNzIHNob3VsZCBhbHNvIGJlIHByb3RlY3RlZC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDozMzc6XFx0ICogU29tZSBvZiB0aGUgb3RoZXIgZmllbGRzIGxpa2UgaG9sZF9xX3N6LCB3aW5fc3ogYW5kIGFnZ3IgYXJlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtMzM4LVxcdCAqIGluaXRpYWxpemVkL3Jlc2V0IHdoZW4gcmVjZWl2aW5nIGFkZGJhL2RlbGJhIHJlcSwgYWxzbyB3aGlsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9OTYyPXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjk2MzpcXHRcXHRcXHQgICAgIHU4IHdpbl9zeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTY0LXZvaWQgYXRoNmtsX3dha2V1cF9ldmVudCh2b2lkICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTA0Nj1zdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA2Ni1cXHQgKiBpbmRleCBwb3NpdGlvbiBhcyBpbmRleCB0aGF0IGlzIGp1c3QgcHJldmlvdXMgdG8gc3RhcnQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA2NzpcXHQgKiBBbiBpbXAgcG9pbnQgOiBpZiB3aW5fc3ogaXMgNywgZm9yIHNlcV9ubyBzcGFjZSBvZiA0MDk1LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNjgtXFx0ICogdGhlbiwgdGhlcmUgd291bGQgYmUgaG9sZXMgd2hlbiBzZXF1ZW5jZSB3cmFwIGFyb3VuZCBvY2N1cnMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA2OTpcXHQgKiBUYXJnZXQgc2hvdWxkIGp1ZGljaW91c2x5IGNob29zZSB0aGUgd2luX3N6LCBiYXNlZCBvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjEwNzA6XFx0ICogdGhpcyBjb25kaXRpb24uIEZvciA0MDk1LCAoVElEX1dJTkRPV19TWiA9IDIgeCB3aW5fc3pcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDcxOlxcdCAqIDIsIDQsIDgsIDE2IHdpbl9zeiB3b3JrcyBmaW5lKS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDcyLVxcdCAqIFdlIG11c3QgZGVxdWUgZnJvbSBcXFwiaWR4XFxcIiB0byBcXFwiaWR4X2VuZFxcXCIsIGluY2x1ZGluZyBib3RoLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTY3Mj1zdGF0aWMgdm9pZCBhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dyX2Nvbm4sIHU4IHRpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2ODctXFx0cnh0aWQtXFx1MDAzZXRpbWVyX21vbiA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2ODg6XFx0cnh0aWQtXFx1MDAzZXdpbl9zeiA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY4OS1cXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTY5OD12b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY5OTpcXHRcXHRcXHQgICAgIHU4IHdpbl9zeilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTcyODpcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3Mjk6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczMDpcXHRcXHRcXHQgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczNC1cXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczNTpcXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczNi1cXHRyeHRpZC1cXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3NDA6XFx0cnh0aWQtXFx1MDAzZXdpbl9zeiA9IHdpbl9zejtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNzQxOlxcdHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3ogPSBUSURfV0lORE9XX1NaKHdpbl9zeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTc0Mi1cXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcXHUwMDI2cnh0aWQtXFx1MDAzZXEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTctXFx0YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQodmlmLCBjbWQtXFx1MDAzZXRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTg6XFx0XFx0XFx0XFx0bGUxNl90b19jcHUoY21kLVxcdTAwM2VzdF9zZXFfbm8pLCBjbWQtXFx1MDAzZXdpbl9zeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaD0yMTY1PXN0cnVjdCB3bWlfYWRkYmFfcmVxX2V2ZW50IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oLTIxNjYtXFx0dTggdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmg6MjE2NzpcXHR1OCB3aW5fc3o7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaC0yMTY4LVxcdF9fbGUxNiBzdF9zZXFfbm87XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjMzLjk0NTY2NTA3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE1Nzg2NzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogQUdHUl9XSU5fU1ogUGFyYW1ldGVycyoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIEknbSBsb29raW5nIGF0IGBBR0dSX1dJTl9TWl9NSU5gIGFuZCBgQUdHUl9XSU5fU1pfTUFYYC4gIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgYXJlIHNldHRpbmcgdXAgYW5kIHdoYXQgaXMgaGFwcGVuaW5nLiAgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgaXMuIEknbSBhc3N1bWluZyB3ZSdyZSBkZWFsaW5nIHdpdGggYWdncmVnYXRpb24gd2luZG93IHNpemVzIGhlcmUsIG1vc3QgbGlrZWx5IGluIGEgdGltZS1zZXJpZXMgY29udGV4dCBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBleGFjdCBzcGVjaWZpY3Mgb2YgdGhlaXIgZGVmaW5pdGlvbiB3aXRoaW4gKnRoaXMqIHBhcnRpY3VsYXIgc3lzdGVtLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIG1pbmltdW0gYW5kIG1heGltdW0gZm9yIGEgbW92aW5nIGF2ZXJhZ2Ugd2luZG93LCBhIGJ1Y2tldGluZyBzdHJhdGVneSwgYSB0aW1lIHdpbmRvdyBmb3IgYW5hbHlzaXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgaW1wbGljYXRpb25zIGZvciByZXNvdXJjZSBjb25zdW1wdGlvbiwgYWNjdXJhY3ksIGFuZCBsYXRlbmN5IGFyZSBnb2luZyB0byBoaW5nZSBkaXJlY3RseSBvbiB3aGF0IHRoZXNlIHBhcmFtZXRlcnMgY29udHJvbC4gTGV0IG1lIGxvb2sgYXQgdGhlIGNvZGUvZG9jdW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQgaXMgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjM3LjQ2MTQ1ODM5MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3MzM0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQUdHUl9XSU5fU1pfTUFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNjktI2RlZmluZSBBR0dSX1dJTl9TWl9NSU4gICAgIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNzA6I2RlZmluZSBBR0dSX1dJTl9TWl9NQVggICAgIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjk4PXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTcyODpcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MjktXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjM3LjUxNDE5NzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyNTIyNjU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyBpbiBXaW5kb3cgU2l6ZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIGBBR0dSX1dJTl9TWl9NQVhgIGlzIGRlZmluZWQgYXMgOC4gVGhhdCdzIG91ciBtYXhpbXVtIGRlZmluZWQgd2luZG93IHNpemUuIEknbSB3b25kZXJpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiAqbm90KiBlbmZvcmNpbmcgdGhpcyBsaW1pdC4gTGV0J3Mgc2F5IGB3aW5fc3pgIHNvbWVob3cgZ2V0cyBzZXQgdG8gYW4gYXJiaXRyYXJpbHkgbGFyZ2UgdmFsdWUsIGxpa2UgMjU1LiBUaGF0IHdvdWxkIG1lYW4gYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgd291bGQgcmVzdWx0IGluIDUxMC4gTm93LCA1MTAgbXVsdGlwbGllZCBieSB0aGUgc2l6ZSBvZiBgc3RydWN0IHNrYl9ob2xkX3FgLCB3aGljaCBJIGtub3cgaXMgOCBieXRlcyBvbiBhIDMyLWJpdCBzeXN0ZW0gb3IgMTYgb24gYSA2NC1iaXQgc3lzdGVtLCBnaXZlcyB1cyBhbiBhbGxvY2F0aW9uIHNpemUgb2YgZWl0aGVyIDQwODAgb3IgODE2MCBieXRlcy4gSXQncyBub3QgYSBodWdlIGFsbG9jYXRpb24gdGhhdCB3b3VsZCB0cmlnZ2VyIGltbWVkaWF0ZSBtZW1vcnkgZXhoYXVzdGlvbiwgYnV0IGl0J3MgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgKmNvdWxkKiBiZSBhIGNvbnRyaWJ1dGluZyBmYWN0b3Igb3IgYSBzeW1wdG9tIG9mIGFuIGVycm9yIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgbWlnaHQgY2F1c2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgaXQncyBub3QgaGFuZGxlZCBjb3JyZWN0bHkgZWxzZXdoZXJlLlxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhpcyBgd2luX3N6YCBpcyB1c2VkLiBGb3IgaW5zdGFuY2UsIGByeHRpZC1cdTAwM2Vob2xkX3Ffc3pgIGlzIHNldCB0byBgVElEX1dJTkRPV19TWih3aW5fc3opYCwgd2hpY2ggaXMgdGhlIHNpemUgd2UganVzdCBjYWxjdWxhdGVkLiBBbmQgaGFuZyBvbiwgYGFnZ3JfZGVxdWVfZnJtc2AgbWFrZXMgdXNlIG9mIGByeHRpZC1cdTAwM2Vob2xkX3Ffc3pgLiBUaGlzIGlzIGNvbmNlcm5pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpZiB0aGVyZSdzIGFuIGFycmF5IGRlZmluZWQgdXNpbmcgYHJ4dGlkLVx1MDAzZWhvbGRfcV9zemAgaW4gYGFnZ3JfZGVxdWVfZnJtc2AsIHdlIGhhdmUgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gTm93IEkgbmVlZCB0byBjaGVjayBgYWdncl9kZXF1ZV9mcm1zYCB0byBzZWUgaWYgdGhlcmUncyBhIGZpeGVkLXNpemUgYXJyYXkgdGhlcmUgdGhhdCdzIHJlbHlpbmcgb24gYHJ4dGlkLVx1MDAzZWhvbGRfcV9zemAgZm9yIGluZGV4aW5nLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBpZWNlLiBMZXQncyBkaXZlIGludG8gdGhhdCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NDcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDA6NDc6NDMuMTM5NDI4Mjk3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY0ODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZ2dyX2RlcXVlX2ZybXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9OTkwPXN0YXRpYyB2b2lkIGFnZ3Jfc2xpY2VfYW1zZHUoc3RydWN0IGFnZ3JfaW5mbyAqcF9hZ2dyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDQ2OnN0YXRpYyB2b2lkIGFnZ3JfZGVxdWVfZnJtcyhzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA0Ny1cXHRcXHRcXHQgICAgdTE2IHNlcV9ubywgdTggb3JkZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xMTA1PXN0YXRpYyBib29sIGFnZ3JfcHJvY2Vzc19yZWN2X2ZybShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMTQ3LVxcdFxcdCAgICAgKGN1ciBcXHUwMDNjIGVuZCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTE0ODpcXHRcXHRcXHRhZ2dyX2RlcXVlX2ZybXMoYWdnX2Nvbm4sIHRpZCwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE0OS1cXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnJ4dGlkLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTE2NzpcXHRcXHRcXHRhZ2dyX2RlcXVlX2ZybXMoYWdnX2Nvbm4sIHRpZCwgc3QsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExNjgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTIwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMjA2OlxcdGFnZ3JfZGVxdWVfZnJtcyhhZ2dfY29ubiwgdGlkLCAwLCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMjA3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTYyMz1zdGF0aWMgdm9pZCBhZ2dyX3RpbWVvdXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjQyLVxcdFxcdFxcdCAgICBBVEg2S0xfTUFYX1NFUV9OTykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2NDM6XFx0XFx0YWdncl9kZXF1ZV9mcm1zKGFnZ3JfY29ubiwgaSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY0NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY4My1cXHRpZiAocnh0aWQtXFx1MDAzZWFnZ3IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTY4NDpcXHRcXHRhZ2dyX2RlcXVlX2ZybXMoYWdncl9jb25uLCB0aWQsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2ODUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjQzLjE5MzA4MzE4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgzNjI0OTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipEZWNvbnN0cnVjdGluZyB0aGUgQWdncmVnYXRpb24gUHJvY2VzcyoqXG5cbkFoYSEgSGFuZyBvbiBhIHNlY29uZCwgaXNuJ3QgYHdpbl9zemAgYmVpbmcgdXNlZCB3aXRoaW4gYGFnZ3JfZGVxdWVfZnJtc2A/IFRoYXQncyBhIGtleSBkZXRhaWwgSSBtaWdodCBoYXZlIG1pc3NlZCBlYXJsaWVyLiBSaWdodCwgcmlnaHQsIGxldCdzIGRpdmUgaW50byBgYWdncl9kZXF1ZV9mcm1zYCBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBjcnlzdGFsIGNsZWFyIG9uIGhvdyBgd2luX3N6YCBpcyBpbXBhY3RpbmcgdGhlIGFnZ3JlZ2F0aW9uIGxvZ2ljLiBHb3R0YSB0cmFjZSB0aGUgZGF0YSBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoYXQgd2luZG93IHNpemUgcGFyYW1ldGVyIGFuZCB0aGUgZGVxdWUgbWFuaXB1bGF0aW9uLiBHb3R0YSBnZXQgdGhpcyBzdHJhaWdodCBiZWZvcmUgSSBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQyOSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjQ2LjI3NjcxMDQ1MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA0NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA0NjpcXHRzdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxcbjEwNDc6XFx0XFx0XFx0XFx0ICAgIHUxNiBzZXFfbm8sIHU4IG9yZGVyKVxcbjEwNDg6XFx0e1xcbjEwNDk6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4xMDUwOlxcdFxcdHN0cnVjdCByeHRpZCAqcnh0aWQ7XFxuMTA1MTpcXHRcXHRzdHJ1Y3Qgc2tiX2hvbGRfcSAqbm9kZTtcXG4xMDUyOlxcdFxcdHUxNiBpZHgsIGlkeF9lbmQsIHNlcV9lbmQ7XFxuMTA1MzpcXHRcXHRzdHJ1Y3Qgcnh0aWRfc3RhdHMgKnN0YXRzO1xcbjEwNTQ6XFx0XFxuMTA1NTpcXHRcXHRyeHRpZCA9IFxcdTAwMjZhZ2dfY29ubi1cXHUwMDNlcnhfdGlkW3RpZF07XFxuMTA1NjpcXHRcXHRzdGF0cyA9IFxcdTAwMjZhZ2dfY29ubi1cXHUwMDNlc3RhdFt0aWRdO1xcbjEwNTc6XFx0XFxuMTA1ODpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnJ4dGlkLVxcdTAwM2Vsb2NrKTtcXG4xMDU5OlxcdFxcdGlkeCA9IEFHR1JfV0lOX0lEWChyeHRpZC1cXHUwMDNlc2VxX25leHQsIHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3opO1xcbjEwNjA6XFx0XFxuMTA2MTpcXHRcXHQvKlxcbjEwNjI6XFx0XFx0ICogaWR4X2VuZCBpcyB0eXBpY2FsbHkgdGhlIGxhc3QgcG9zc2libGUgZnJhbWUgaW4gdGhlIHdpbmRvdyxcXG4xMDYzOlxcdFxcdCAqIGJ1dCBjaGFuZ2VzIHRvICd0aGUnIHNlcV9ubywgd2hlbiBCQVIgY29tZXMuIElmIHNlcV9ub1xcbjEwNjQ6XFx0XFx0ICogaXMgbm9uLXplcm8sIHdlIHdpbGwgZ28gdXAgdG8gdGhhdCBhbmQgc3RvcC5cXG4xMDY1OlxcdFxcdCAqIE5vdGU6IGxhc3Qgc2VxIG5vIGluIGN1cnJlbnQgd2luZG93IHdpbGwgb2NjdXB5IHRoZSBzYW1lXFxuMTA2NjpcXHRcXHQgKiBpbmRleCBwb3NpdGlvbiBhcyBpbmRleCB0aGF0IGlzIGp1c3QgcHJldmlvdXMgdG8gc3RhcnQuXFxuMTA2NzpcXHRcXHQgKiBBbiBpbXAgcG9pbnQgOiBpZiB3aW5fc3ogaXMgNywgZm9yIHNlcV9ubyBzcGFjZSBvZiA0MDk1LFxcbjEwNjg6XFx0XFx0ICogdGhlbiwgdGhlcmUgd291bGQgYmUgaG9sZXMgd2hlbiBzZXF1ZW5jZSB3cmFwIGFyb3VuZCBvY2N1cnMuXFxuMTA2OTpcXHRcXHQgKiBUYXJnZXQgc2hvdWxkIGp1ZGljaW91c2x5IGNob29zZSB0aGUgd2luX3N6LCBiYXNlZCBvblxcbjEwNzA6XFx0XFx0ICogdGhpcyBjb25kaXRpb24uIEZvciA0MDk1LCAoVElEX1dJTkRPV19TWiA9IDIgeCB3aW5fc3pcXG4xMDcxOlxcdFxcdCAqIDIsIDQsIDgsIDE2IHdpbl9zeiB3b3JrcyBmaW5lKS5cXG4xMDcyOlxcdFxcdCAqIFdlIG11c3QgZGVxdWUgZnJvbSBcXFwiaWR4XFxcIiB0byBcXFwiaWR4X2VuZFxcXCIsIGluY2x1ZGluZyBib3RoLlxcbjEwNzM6XFx0XFx0ICovXFxuMTA3NDpcXHRcXHRzZXFfZW5kID0gc2VxX25vID8gc2VxX25vIDogcnh0aWQtXFx1MDAzZXNlcV9uZXh0O1xcbjEwNzU6XFx0XFx0aWR4X2VuZCA9IEFHR1JfV0lOX0lEWChzZXFfZW5kLCByeHRpZC1cXHUwMDNlaG9sZF9xX3N6KTtcXG4xMDc2OlxcdFxcbjEwNzc6XFx0XFx0ZG8ge1xcbjEwNzg6XFx0XFx0XFx0bm9kZSA9IFxcdTAwMjZyeHRpZC1cXHUwMDNlaG9sZF9xW2lkeF07XFxuMTA3OTpcXHRcXHRcXHRpZiAoKG9yZGVyID09IDEpIFxcdTAwMjZcXHUwMDI2ICghbm9kZS1cXHUwMDNlc2tiKSlcXG4xMDgwOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjEwODE6XFx0XFxuMTA4MjpcXHRcXHRcXHRpZiAobm9kZS1cXHUwMDNlc2tiKSB7XFxuMTA4MzpcXHRcXHRcXHRcXHRpZiAobm9kZS1cXHUwMDNlaXNfYW1zZHUpXFxuMTA4NDpcXHRcXHRcXHRcXHRcXHRhZ2dyX3NsaWNlX2Ftc2R1KGFnZ19jb25uLVxcdTAwM2VhZ2dyX2luZm8sIHJ4dGlkLFxcbjEwODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5vZGUtXFx1MDAzZXNrYik7XFxuMTA4NjpcXHRcXHRcXHRcXHRlbHNlXFxuMTA4NzpcXHRcXHRcXHRcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cnh0aWQtXFx1MDAzZXEsIG5vZGUtXFx1MDAzZXNrYik7XFxuMTA4ODpcXHRcXHRcXHRcXHRub2RlLVxcdTAwM2Vza2IgPSBOVUxMO1xcbjEwODk6XFx0XFx0XFx0fSBlbHNlIHtcXG4xMDkwOlxcdFxcdFxcdFxcdHN0YXRzLVxcdTAwM2VudW1faG9sZSsrO1xcbjEwOTE6XFx0XFx0XFx0fVxcbjEwOTI6XFx0XFxuMTA5MzpcXHRcXHRcXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBBVEg2S0xfTkVYVF9TRVFfTk8ocnh0aWQtXFx1MDAzZXNlcV9uZXh0KTtcXG4xMDk0OlxcdFxcdFxcdGlkeCA9IEFHR1JfV0lOX0lEWChyeHRpZC1cXHUwMDNlc2VxX25leHQsIHJ4dGlkLVxcdTAwM2Vob2xkX3Ffc3opO1xcbjEwOTU6XFx0XFx0fSB3aGlsZSAoaWR4ICE9IGlkeF9lbmQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo0Ni4yNzY4MjIxOTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MjM1NDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgQUdHUl9XSU5fSURYYCoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gYEFHR1JfV0lOX0lEWGAuIEdpdmVuIGl0cyBjb250ZXh0LCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgdGhpcyBpbmRleCBpcyBiZWluZyBkZXJpdmVkIGZyb20gYSBzZXF1ZW5jZSBudW1iZXIsIG1vc3QgbGlrZWx5IHVzaW5nIGEgbW9kdWxvIG9yIGJpdHdpc2UgQU5EIG9wZXJhdGlvbiB0byB3cmFwIGl0IHdpdGhpbiBhIGJ1ZmZlciBzaXplLCBgaG9sZF9xX3N6YC4gU3BlY2lmaWNhbGx5LCBJJ20gbGVhbmluZyB0b3dhcmRzIGVpdGhlciBgc2VxICUgaG9sZF9xX3N6YCBvciB0aGUgYml0d2lzZSBlcXVpdmFsZW50IGBzZXEgXHUwMDI2IChob2xkX3Ffc3ogLSAxKWAuIFRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgYXBwcm9hY2hlcyBmb3IgaW1wbGVtZW50aW5nIGEgY2lyY3VsYXIgYnVmZmVyIG9yIGEgcmluZyBidWZmZXIsIHdoaWNoIHNlZW1zIHRoZSBtb3N0IGxpa2VseSBzY2VuYXJpbyBnaXZlbiB0aGUgbmFtZXMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlIG9mIGBBR0dSX1dJTl9JRFhgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QuIEknbGwgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgaG9sZF9xX3N6YCBpcyBhIHBvd2VyIG9mIDIgdG8gdmFsaWRhdGUgdGhlIGJpdHdpc2UgQU5EIGFwcHJvYWNoLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBob3cgYHNlcWAgaXMgZ2VuZXJhdGVkLCBhbmQgaG93IGBBR0dSX1dJTl9JRFhgIGlzIHRoZW4gZW1wbG95ZWQgdG8gYWNjZXNzIGFuZCB1cGRhdGUgc3BlY2lmaWMgbG9jYXRpb25zIHdpdGhpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUuIEl0J3MgYWxsIGFib3V0IHZlcmlmeWluZyB0aGF0IHRoZSBtb2R1bG8gb3BlcmF0aW9uIGlzIHByb3Blcmx5IGhhbmRsaW5nIHRoZSBjeWNsaWNhbCBuYXR1cmUgb2YgdGhlIGJ1ZmZlci4gQW55IGRpc2NyZXBhbmNpZXMgaGVyZSBjb3VsZCBsZWFkIHRvIHNpZ25pZmljYW50IGRhdGEgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGdvYWwgaXMgdG8gZGVlcGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTY3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo1MC40MTkxODAzN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyNDk4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBBR0dSX1dJTl9JRFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9MTY2PWVudW0gYXRoNmtsX2h3X2ZsYWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDoyNjA6I2RlZmluZSBBR0dSX1dJTl9JRFgoeCwgeSkgICAgICAgICAgKCh4KSAlICh5KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNjEtI2RlZmluZSBBR0dSX0lOQ1JfSURYKHgsIHkpICAgICAgICAgQUdHUl9XSU5fSURYKCgoeCkgKyAxKSwgKHkpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo1MC40NzM0MzUwNDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk0MTI5NTM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpZGUgYnkgWmVybyBCdWcgQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCdzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkLiBJJ3ZlIHNwb3R0ZWQgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gdnVsbmVyYWJpbGl0eS4gVGhlIGBBR0dSX1dJTl9JRFgoeCwgeSlgIG1hY3JvIGlzIGltcGxlbWVudGVkIGFzIGAoKHgpICUgKHkpKWAuIFNpbXBsZSBlbm91Z2gsIGJ1dCBpZiBgeWAgaXMgemVybywgd2UndmUgZ290IGEgcHJvYmxlbS4gIFxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGB5YCBpcyBlcXVpdmFsZW50IHRvIGByeHRpZC1cdTAwM2Vob2xkX3Ffc3pgLiBEaWdnaW5nIGRlZXBlciwgYHJ4dGlkLVx1MDAzZWhvbGRfcV9zemAgaXMgZGVyaXZlZCBmcm9tIGBUSURfV0lORE9XX1NaKHdpbl9zeilgLCBhbmQgdGhhdCBtYWNybyBleHBhbmRzIHRvIGAod2luX3N6KSBcdTAwM2NcdTAwM2MgMWAuICBTbywgaWYgYHdpbl9zemAgaGFwcGVucyB0byBiZSB6ZXJvLCBgaG9sZF9xX3N6YCBlbmRzIHVwIGJlaW5nIHplcm8gYXMgd2VsbC4gVGhlbiB0aGUgYEFHR1JfV0lOX0lEWGAgbWFjcm8gYmVjb21lcyBgc2VxX25leHQgJSAwYCwgd2hpY2ggKmRlZmluaXRlbHkqIGNhdXNlcyBhIGtlcm5lbCBwYW5pYyB3aXRoIGEgZGl2aWRlLWJ5LXplcm8gZXJyb3IuXG5cblRoZSBwcm92aWRlZCBwYXRjaCBhZGRyZXNzZXMgdGhpcyBoZWFkLW9uLiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBpZiAod2luX3N6IFx1MDAzYyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6IFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpYC4gIFNpbmNlIGBBR0dSX1dJTl9TWl9NSU5gIGlzIDIsIHRoaXMgZWZmZWN0aXZlbHkgcHJldmVudHMgYHdpbl9zemAgZnJvbSBldmVyIGJlaW5nIHplcm8uIFRoYXQncyBhIHNvbGlkIGZpeCwgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBmaXhlcyB0aGF0IGRpdmlkZSBieSB6ZXJvIVxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgbGV0J3MgZmlndXJlIG91dCB3aGVyZSB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCwgc28gdGhhdCdzIGEgcHJpbWUgdGFyZ2V0LiAgV2Ugc2hvdWxkIGFsc28gYmUgbG9va2luZyBhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBBbmQsIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgYGFnZ3JfZGVxdWVfZnJtc2AgYXMgd2VsbC4gIEknbGwgbmVlZCB0byBjaGVjayBmb3IgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc3RhcnQgZGlnZ2luZyBhIGJpdCBkZWVwZXIgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTA4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ3OjU2LjQxNDczMzU3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMzYwMDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTk2MT12b2lkIGFnZ3JfcmVjdl9kZWxiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTYyOnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTk2My1cXHRcXHRcXHQgICAgIHU4IHdpbl9zeik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTY5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNjk4OnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjk5LVxcdFxcdFxcdCAgICAgdTggd2luX3N6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzU3OlxcdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVxcdTAwM2V0aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU4LVxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGNtZC1cXHUwMDNlc3Rfc2VxX25vKSwgY21kLVxcdTAwM2V3aW5fc3opO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0Nzo1Ni42MDUwOTgzNzlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MTYwNDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBCQSBSZXF1ZXN0IEV2ZW50IEhhbmRsaW5nKipcblxuUmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhpcyBwcm9ibGVtLiBUaGUgc3lzdGVtJ3MgdHJpZ2dlcmVkIGJ5IHRoZXNlIHN5bWJvbHM6IGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAsIGFuZCBgYWdncl9kZXF1ZV9mcm1zYC4gVGhhdCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgIGxvb2tzIGxpa2UgdGhlIGNyaXRpY2FsIG9uZSwgdGhlIHJlY2VpdmVyIG9mIHRoZSBBZGRCQSByZXF1ZXN0IGV2ZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGl0LCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gb3VyIGFnZ3JlZ2F0aW9uIGZyYW1ld29yay5cblxuT2theSwgbXkgZmlyc3QgcG9ydCBvZiBjYWxsIHdpbGwgYmUgdG8gY2hlY2sgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCBzcGVjaWZpY2FsbHkuIFRoYXQgc2hvdWxkIGJlIGluIGB3bWkuY2AsIHJpZ2h0PyBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBXTUkgZXZlbnQgaGFuZGxpbmcgdXN1YWxseSBzaXRzLCBzbyB0aGF0J3MgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEknbGwgY2hlY2sgaG93IGl0J3MgaGFuZGxlZCB3aXRoaW4gdGhlIGxhcmdlciBXTUkgZnJhbWV3b3JrLiBUaGUgYHdtaWAgZmlsZSBpcyB0aGUgY2VudHJhbCBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZSBpbnRlcmFjdGlvbnMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgcmVhY3RpbmcgdG8gdGhlIGV2ZW50LCBob3cgaXQncyBwYXJzaW5nIHRoZSByZXF1ZXN0LCBhbmQgd2hhdCBhY3Rpb25zIGl0J3MgdGFraW5nIGluIHJlc3BvbnNlLiBUaGVuIEkgY2FuIHRyYWNlIHRoZSBmbG93IGZyb20gdGhlcmUuIEkgZXhwZWN0IHRoYXQgd2lsbCBpbGx1bWluYXRlIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBhZ2dyZWdhdGUgZnJhbWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQzMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjAwLjA3NjcwNTQ4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzUyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzUyOlxcdHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuMzM1MzpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG4zMzU0OlxcdHtcXG4zMzU1OlxcdFxcdHN0cnVjdCB3bWlfYWRkYmFfcmVxX2V2ZW50ICpjbWQgPSAoc3RydWN0IHdtaV9hZGRiYV9yZXFfZXZlbnQgKikgZGF0YXA7XFxuMzM1NjpcXHRcXG4zMzU3OlxcdFxcdGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHZpZiwgY21kLVxcdTAwM2V0aWQsXFxuMzM1ODpcXHRcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShjbWQtXFx1MDAzZXN0X3NlcV9ubyksIGNtZC1cXHUwMDNld2luX3N6KTtcXG4zMzU5OlxcdFxcbjMzNjA6XFx0XFx0cmV0dXJuIDA7XFxuMzM2MTpcXHR9XFxuMzM2MjpcXHRcXG4zMzYzOlxcdHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9kZWxiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXFxuMzM2NDpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG4zMzY1OlxcdHtcXG4zMzY2OlxcdFxcdHN0cnVjdCB3bWlfZGVsYmFfZXZlbnQgKmNtZCA9IChzdHJ1Y3Qgd21pX2RlbGJhX2V2ZW50ICopIGRhdGFwO1xcbjMzNjc6XFx0XFxuMzM2ODpcXHRcXHRhZ2dyX3JlY3ZfZGVsYmFfcmVxX2V2dCh2aWYsIGNtZC1cXHUwMDNldGlkKTtcXG4zMzY5OlxcdFxcbjMzNzA6XFx0XFx0cmV0dXJuIDA7XFxuMzM3MTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjAwLjA3Njg2NzA2OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3MTM0OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB3aXJlbGVzcyBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRGl2aXNpb24gYnkgWmVybyBpbiB0aGUgYXRoNmtsIERyaXZlcioqXG5cblJpZ2h0LCBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgICppcyogYSBnb29kIGp1bXBpbmctb2ZmIHBvaW50LiBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uXG5cbk9rYXksIGxldCdzIHNlZS4uLiB0aGUgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBmdW5jdGlvbiBpbiBgdHhyeC5jYCBpcyB0aGUgb25lIEkgbmVlZCB0byBleGFtaW5lLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIG1vZGlmaWNhdGlvbiB0b29rIHBsYWNlLlxuXG5BbHJpZ2h0LCBtb3Zpbmcgb24sIGxldCdzIGxvb2sgYXQgYGFnZ3JfZGVxdWVfZnJtc2AsIGFsc28gaW4gYHR4cnguY2AuIEkndmUgZ290IGEgaHVuY2gg4oCTIHRoYXQncyB0aGUgbG9jYXRpb24gd2hlcmUgdGhlIGRpdmlzaW9uIGJ5IHplcm8gaXMgcHJvYmFibHkgb2NjdXJyaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgZGVxdWV1aW5nIHByb2Nlc3MgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGFnZ3JlZ2F0aW9uLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3MgZW5hYmxlZC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLlxuXG5XYWl0IGEgc2Vjb25kLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBnbyBiYWNrIGFuZCB0aG9yb3VnaGx5IHJlLWV4YW1pbmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ2AgZm9yIGFueSBvdGhlciBwb3NzaWJpbGl0aWVzLiBJIG5lZWQgdG8gZW5zdXJlIG5vdGhpbmcgaGFzIGJlZW4gbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIwOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA0LjIwNDAwMzc5N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MTg1Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEg2S0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI6Y29uZmlnIEFUSDZLTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxNDpjb25maWcgQVRINktMX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjU6Y29uZmlnIEFUSDZLTF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNTpjb25maWcgQVRINktMX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDU6Y29uZmlnIEFUSDZLTF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NTc6Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgcmVnZG9tYWluIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA0LjM5MzE5NDkwNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ3NjYwNjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgV2lyZWxlc3MgRHJpdmVyIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkZXBlbmRlbmN5IHRyZWUsIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBBVEg2S0xfVVNCYCByZWxpZXMgb24gYEFUSDZLTGAuIFRoaXMgdGVsbHMgbWUgdGhhdCBpZiBJJ3ZlIGdvdCBib3RoIG9mIHRob3NlLCBJIHNob3VsZCBiZSBnb29kIHRvIGdvLiBCdXQsIGl0J3MgYWx3YXlzIHNtYXJ0IHRvIGNvbmZpcm0uIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBBVEg2S0xfVVNCYCBhbG9uZSBpcyBpbmRlZWQgc3VmZmljaWVudCBmb3IgY29tcGlsaW5nIGB0eHJ4LmNgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYWxsIG5lY2Vzc2FyeSBpbmNsdWRlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcmVzZW50LiBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgdGVzdC4gSnVzdCBhIHNpbXBsZSBjaGVjayB0byBjb25maXJtIHRoYXQgbXkgYXNzdW1wdGlvbnMgaG9sZCB0cnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTE4MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA3LjU0MDg1Nzc2N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1NDU5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhyeC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU9MzM9YXRoNmtsX2NvcmUteSArPSBtYWluLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM0OmF0aDZrbF9jb3JlLXkgKz0gdHhyeC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0zNS1hdGg2a2xfY29yZS15ICs9IHdtaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAwOjQ4OjA3LjYwOTQxMTIyNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjgwODAwNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoNmtsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYHR4cngub2AgaXMgaW5kZWVkIGEgY29tcG9uZW50IG9mIGBhdGg2a2xfY29yZS15YCwgYW5kIGl0J3MgY29tcGlsZWQgd2hlbiBgQ09ORklHX0FUSDZLTGAgaXMgZW5hYmxlZC4gVGltZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gTm9wZSwgaXQgbG9va3MgbGlrZSBgQVRINktMYCBhbmQgYEFUSDZLTF9VU0JgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRvIGZvY3VzIG9uLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIGEgY3J1Y2lhbCBmaXggZm9yIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgYXRoNmtsYCBkcml2ZXIuIEl0IGFwcGVhcnMgdGhlcmUncyBhIHJpc2sgb2YgZGl2aXNpb24gYnkgemVybyBvciBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYFdNSV9BRERCQV9SRVFfRVZFTlRJRGAgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBkZXZpY2UuIFRoaXMgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgYnkgYSByb2d1ZSBVU0IgZGV2aWNlIHNlbmRpbmcgYSBzcGVjaWFsbHkgY3JhZnRlZCBXTUkgZXZlbnQgd2l0aCBhIGRvZGd5IGB3aW5fc3pgIHZhbHVlLiBUaGUgcGF0Y2gncyBzb2x1dGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IGFkZCBib3VuZHMgY2hlY2tpbmcgZm9yIGB3aW5fc3pgIHRvIHByZXZlbnQgdGhpcyBleHBsb2l0YWJsZSBjb25kaXRpb24uXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgcGF0Y2hpbmcgcmVhY2hhYmxlIGNvZGUuIFRoYXQgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCwgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCwgYW5kIGBhZ2dyX2RlcXVlX2ZybXNgLiBUaGV5J3JlIHRoZSBjcml0aWNhbCBwb2ludHMgb2YgaW50ZXJlc3QgaGVyZS5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTA5LCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMDo0ODoxMi44OTAyMTM5MzlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgwMjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCIsXG4gICAgXCJhZ2dyX2RlcXVlX2ZybXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGF0aDZrbCBkcml2ZXIgd2hlbiBwcm9jZXNzaW5nIFdNSV9BRERCQV9SRVFfRVZFTlRJRCBldmVudHMgZnJvbSB0aGUgZGV2aWNlLiBUaGUgdnVsbmVyYWJpbGl0eSBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIFVTQiBkZXZpY2Ugc2VuZGluZyBhIGNyYWZ0ZWQgV01JIGV2ZW50IHdpdGggYW4gaW52YWxpZCBgd2luX3N6YC4gVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHBhdGNoZXMgcmVhY2hhYmxlIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCIsXG4gICAgXCJhZ2dyX2RlcXVlX2ZybXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpc2lvbiBieSB6ZXJvIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGF0aDZrbCBkcml2ZXIgd2hlbiBwcm9jZXNzaW5nIFdNSV9BRERCQV9SRVFfRVZFTlRJRCBldmVudHMgZnJvbSB0aGUgZGV2aWNlLiBUaGUgdnVsbmVyYWJpbGl0eSBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgbWFsaWNpb3VzIFVTQiBkZXZpY2Ugc2VuZGluZyBhIGNyYWZ0ZWQgV01JIGV2ZW50IHdpdGggYW4gaW52YWxpZCBgd2luX3N6YC4gVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciBgd2luX3N6YCB0byBwcmV2ZW50IHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHBhdGNoZXMgcmVhY2hhYmxlIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow868v6[1] Phase: Succeeded StartedAt: 2026-06-26 00:48:24 +0000 UTC FinishedAt: 2026-06-26 00:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 00:48:24 +0000 UTC FinishedAt: 2026-06-26 00:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[2] Phase: Succeeded StartedAt: 2026-06-26 00:48:24 +0000 UTC FinishedAt: 2026-06-26 01:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-06-26 00:48:24 +0000 UTC FinishedAt: 2026-06-26 01:12:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","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-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","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-06-26 00:48:24 +0000 UTC FinishedAt: 2026-06-26 00:48:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","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-06-26 00:48:24 +0000 UTC FinishedAt: 2026-06-26 00:48:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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-workflow868v6/series-workflow868v6-convert-artifact-1529896862/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","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-06-26 00:48:34 +0000 UTC FinishedAt: 2026-06-26 01:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","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-06-26 00:48:34 +0000 UTC FinishedAt: 2026-06-26 01:12:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*766a5bf1-0735-461e-b309-1c7e52e8546d,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-workflow868v6/series-workflow868v6-convert-artifact-1529896862/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": "a9938f53-ab6b-4ea6-9117-6923d9d019ac", "success": false },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-workflow868v6/series-workflow868v6-build-action-2038310020/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","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-06-26 00:48:34 +0000 UTC FinishedAt: 2026-06-26 01:12:18 +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:*766a5bf1-0735-461e-b309-1c7e52e8546d,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-workflow868v6/series-workflow868v6-convert-artifact-1529896862/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": "a9938f53-ab6b-4ea6-9117-6923d9d019ac", "success": false },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-workflow868v6/series-workflow868v6-build-action-2038310020/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Failed StartedAt: 2026-06-26 01:12:45 +0000 UTC FinishedAt: 2026-06-26 01:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow868v6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx","aggr_deque_frms"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"ea872aee-a15c-4edf-a682-2f25ae52e57e","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: Failed StartedAt: 2026-06-26 01:12:45 +0000 UTC FinishedAt: 2026-06-26 01:12:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}