Name: series-workflowqk8xr Phase: Succeeded StartedAt: 2026-07-12 06:17:23 +0000 UTC FinishedAt: 2026-07-12 08:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[0] Phase: Succeeded StartedAt: 2026-07-12 06:17:23 +0000 UTC FinishedAt: 2026-07-12 06:44:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 06:17:23 +0000 UTC FinishedAt: 2026-07-12 06:44:02 +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": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLWIFI_KUNIT_TESTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLWIFI_KUNIT_TESTS" ], "series_id": "a4a121ea-12ec-45a0-95bf-8acda1a7e503" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_mvm_window_status_notif" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTFdJRklfS1VOSVRfVEVTVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byB0aGUgUlggaGFuZGxlciBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIG9yIHRoZSBuZXdseSBhZGRlZCBLVW5pdCB0ZXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDliZDQ2NTRlZmU1YjNlN2NiZjNkZGNlOTUyOWVmNTQ5ZThkNzRhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXG5pbmRleCAyNjljNGI0NWRlODA3OC4uZDM3M2YwNzIzZTEzZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXG5AQCAtNyw2ICYjNDM7Nyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7aXdsLWRydi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aXdsLXRyYW5zLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDttdm0uaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Z3LWFwaS5oXCYjMzQ7XG5AQCAtMTIyNyw2ICYjNDM7MTIyOCw4IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdC8qIGdldCB0aGUgc3RhdGlvbiAqL1xuIFx0XHRzdGFfaWQgPSAocmF0aWQgXHUwMDI2IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSylcbiBcdFx0XHQgXHUwMDNlXHUwMDNlIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUztcbiYjNDM7XHRcdGlmIChzdGFfaWQgXHUwMDNlPSBtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRzdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZFtzdGFfaWRdKTtcbiBcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHN0YSkpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTIzOSwzICYjNDM7MTI0Miw0IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHR9XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4mIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGVcbmluZGV4IDIyNjdiZTRjZmI0NDE1Li5iZjIyNzUwZmNlYWZjNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZVxuQEAgLTEsMyAmIzQzOzEsMyBAQFxuLWl3bG12bS10ZXN0cy15ICYjNDM7PSBtb2R1bGUubyBoY21kLm9cbiYjNDM7aXdsbXZtLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB3aW5kb3ctc3RhdHVzLm9cbiBcbiBvYmotJChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykgJiM0Mzs9IGl3bG12bS10ZXN0cy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjA2ODA3ZTJiZGJjMTJkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcbkBAIC0wLDAgJiM0MzsxLDc3IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuJiM0MzsvKlxuJiM0MzsgKiBLVW5pdCB0ZXN0cyBmb3IgTVZNIEJBIHdpbmRvdyBzdGF0dXMgbm90aWZpY2F0aW9uIGhhbmRsaW5nXG4mIzQzOyAqL1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjaXdsLXRyYW5zLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Li4vZnctYXBpLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Li4vbXZtLmhcJiMzNDtcbiYjNDM7XG4mIzQzO01PRFVMRV9JTVBPUlRfTlMoXCYjMzQ7RVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkdcJiMzNDspO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaXdsX2JhX3dpbmRvd19zdGF0dXNfbm90aWYgbm90aWYgPSB7fTtcbiYjNDM7XHRzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgcnhiID0ge1xuJiM0MztcdFx0Ll9vZmZzZXQgPSAwLFxuJiM0MztcdFx0Ll9yeF9wYWdlX29yZGVyID0gMCxcbiYjNDM7XHR9O1xuJiM0MztcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Q7XG4mIzQzO1x0c3RydWN0IGl3bF9mdyAqZnc7XG4mIzQzO1x0c3RydWN0IGl3bF9tdm0gKm12bTtcbiYjNDM7XHR1MTYgcmF0aWQ7XG4mIzQzO1xuJiM0MztcdEJVSUxEX0JVR19PTigoSVdMX1NUQVRJT05fQ09VTlRfTUFYICYjNDM7IDEpIFx1MDAzZVxuJiM0MztcdFx0ICAgICAoQkFfV0lORE9XX1NUQVRVU19TVEFfSURfTVNLIFx1MDAzZVx1MDAzZVxuJiM0MztcdFx0ICAgICAgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKSk7XG4mIzQzO1xuJiM0MztcdG12bSA9IGt1bml0X2t6YWxsb2ModGVzdCwgc2l6ZW9mKCptdm0pLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgbXZtKTtcbiYjNDM7XG4mIzQzO1x0ZncgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqZncpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZncpO1xuJiM0MztcdGZ3LVx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zID0gSVdMX1NUQVRJT05fQ09VTlRfTUFYO1xuJiM0MztcdG12bS1cdTAwM2VmdyA9IGZ3O1xuJiM0MztcbiYjNDM7XHRyeGIuX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCByeGIuX3BhZ2UpO1xuJiM0MztcbiYjNDM7XHRyYXRpZCA9IEJBX1dJTkRPV19TVEFUVVNfVkFMSURfTVNLIHxcbiYjNDM7XHRcdChzdGFfaWQgXHUwMDNjXHUwMDNjIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUyk7XG4mIzQzO1x0bm90aWYucmFfdGlkWzBdID0gY3B1X3RvX2xlMTYocmF0aWQpO1xuJiM0MztcdG5vdGlmLm1wZHVfcnhfY291bnRbMF0gPSBjcHVfdG9fbGUxNigxKTtcbiYjNDM7XG4mIzQzO1x0cGt0ID0gcnhiX2FkZHIoXHUwMDI2cnhiKTtcbiYjNDM7XHRtZW1zZXQocGt0LCAwLCBQQUdFX1NJWkUpO1xuJiM0MztcdHBrdC1cdTAwM2VsZW5fbl9mbGFncyA9IGNwdV90b19sZTMyKHNpemVvZihwa3QtXHUwMDNlaGRyKSAmIzQzOyBzaXplb2Yobm90aWYpKTtcbiYjNDM7XHRtZW1jcHkocGt0LVx1MDAzZWRhdGEsIFx1MDAyNm5vdGlmLCBzaXplb2Yobm90aWYpKTtcbiYjNDM7XG4mIzQzO1x0aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKG12bSwgXHUwMDI2cnhiKTtcbiYjNDM7XG4mIzQzO1x0X19mcmVlX3BhZ2UocnhiLl9wYWdlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9iYV93aW5kb3dfc3RhdHVzX3N0YXRpb25faWRfYm91bmRzKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdGl3bF9tdm1fdGVzdF93aW5kb3dfc3RhdHVzKHRlc3QsIElXTF9TVEFUSU9OX0NPVU5UX01BWCAmIzQzOyAxKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24oc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0aXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXModGVzdCwgMCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB3aW5kb3dfc3RhdHVzX2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRSh0ZXN0X2JhX3dpbmRvd19zdGF0dXNfc3RhdGlvbl9pZF9ib3VuZHMpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24pLFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSB3aW5kb3dfc3RhdHVzID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7aXdsbXZtLXdpbmRvdy1zdGF0dXNcJiMzNDssXG4mIzQzO1x0LnRlc3RfY2FzZXMgPSB3aW5kb3dfc3RhdHVzX2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZSh3aW5kb3dfc3RhdHVzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xXSUZJX0tVTklUX1RFU1RTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDliZDQ2NTRlZmU1YjNlN2NiZjNkZGNlOTUyOWVmNTQ5ZThkNzRhMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMKaW5kZXggMjY5YzRiNDVkZTgwNzguLmQzNzNmMDcyM2UxM2QzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMKQEAgLTcsNiAmIzQzOzcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3VuYWxpZ25lZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aGVyZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDtpd2wtZHJ2LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtpd2wtdHJhbnMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O212bS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZnctYXBpLmgmIzM0OwpAQCAtMTIyNyw2ICYjNDM7MTIyOCw4IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJCS8qIGdldCB0aGUgc3RhdGlvbiAqLwogCQlzdGFfaWQgPSAocmF0aWQgJmFtcDsgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfTVNLKQogCQkJICZndDsmZ3Q7IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUzsKJiM0MzsJCWlmIChzdGFfaWQgJmd0Oz0gbXZtLSZndDtmdy0mZ3Q7dWNvZGVfY2FwYS5udW1fc3RhdGlvbnMpCiYjNDM7CQkJY29udGludWU7CiAJCXN0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tJmd0O2Z3X2lkX3RvX21hY19pZFtzdGFfaWRdKTsKIAkJaWYgKElTX0VSUl9PUl9OVUxMKHN0YSkpCiAJCQljb250aW51ZTsKQEAgLTEyMzksMyAmIzQzOzEyNDIsNCBAQCB2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLAogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGUKaW5kZXggMjI2N2JlNGNmYjQ0MTUuLmJmMjI3NTBmY2VhZmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZQpAQCAtMSwzICYjNDM7MSwzIEBACi1pd2xtdm0tdGVzdHMteSAmIzQzOz0gbW9kdWxlLm8gaGNtZC5vCiYjNDM7aXdsbXZtLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB3aW5kb3ctc3RhdHVzLm8KIAogb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICYjNDM7PSBpd2xtdm0tdGVzdHMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wNjgwN2UyYmRiYzEyZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL3dpbmRvdy1zdGF0dXMuYwpAQCAtMCwwICYjNDM7MSw3NyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQomIzQzOy8qCiYjNDM7ICogS1VuaXQgdGVzdHMgZm9yIE1WTSBCQSB3aW5kb3cgc3RhdHVzIG5vdGlmaWNhdGlvbiBoYW5kbGluZwomIzQzOyAqLwomIzQzOyNpbmNsdWRlICZsdDtrdW5pdC90ZXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21tLmgmZ3Q7CiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2l3bC10cmFucy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4vZnctYXBpLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4vbXZtLmgmIzM0OwomIzQzOwomIzQzO01PRFVMRV9JTVBPUlRfTlMoJiMzNDtFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElORyYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyhzdHJ1Y3Qga3VuaXQgKnRlc3QsIHU4IHN0YV9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpd2xfYmFfd2luZG93X3N0YXR1c19ub3RpZiBub3RpZiA9IHt9OwomIzQzOwlzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgcnhiID0gewomIzQzOwkJLl9vZmZzZXQgPSAwLAomIzQzOwkJLl9yeF9wYWdlX29yZGVyID0gMCwKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdDsKJiM0MzsJc3RydWN0IGl3bF9mdyAqZnc7CiYjNDM7CXN0cnVjdCBpd2xfbXZtICptdm07CiYjNDM7CXUxNiByYXRpZDsKJiM0MzsKJiM0MzsJQlVJTERfQlVHX09OKChJV0xfU1RBVElPTl9DT1VOVF9NQVggJiM0MzsgMSkgJmd0OwomIzQzOwkJICAgICAoQkFfV0lORE9XX1NUQVRVU19TVEFfSURfTVNLICZndDsmZ3Q7CiYjNDM7CQkgICAgICBCQV9XSU5ET1dfU1RBVFVTX1NUQV9JRF9QT1MpKTsKJiM0MzsKJiM0MzsJbXZtID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2YoKm12bSksIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgbXZtKTsKJiM0MzsKJiM0MzsJZncgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqZncpLCBHRlBfS0VSTkVMKTsKJiM0MzsJS1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGZ3KTsKJiM0MzsJZnctJmd0O3Vjb2RlX2NhcGEubnVtX3N0YXRpb25zID0gSVdMX1NUQVRJT05fQ09VTlRfTUFYOwomIzQzOwltdm0tJmd0O2Z3ID0gZnc7CiYjNDM7CiYjNDM7CXJ4Yi5fcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCByeGIuX3BhZ2UpOwomIzQzOwomIzQzOwlyYXRpZCA9IEJBX1dJTkRPV19TVEFUVVNfVkFMSURfTVNLIHwKJiM0MzsJCShzdGFfaWQgJmx0OyZsdDsgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKTsKJiM0MzsJbm90aWYucmFfdGlkWzBdID0gY3B1X3RvX2xlMTYocmF0aWQpOwomIzQzOwlub3RpZi5tcGR1X3J4X2NvdW50WzBdID0gY3B1X3RvX2xlMTYoMSk7CiYjNDM7CiYjNDM7CXBrdCA9IHJ4Yl9hZGRyKCZhbXA7cnhiKTsKJiM0MzsJbWVtc2V0KHBrdCwgMCwgUEFHRV9TSVpFKTsKJiM0MzsJcGt0LSZndDtsZW5fbl9mbGFncyA9IGNwdV90b19sZTMyKHNpemVvZihwa3QtJmd0O2hkcikgJiM0Mzsgc2l6ZW9mKG5vdGlmKSk7CiYjNDM7CW1lbWNweShwa3QtJmd0O2RhdGEsICZhbXA7bm90aWYsIHNpemVvZihub3RpZikpOwomIzQzOwomIzQzOwlpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYobXZtLCAmYW1wO3J4Yik7CiYjNDM7CiYjNDM7CV9fZnJlZV9wYWdlKHJ4Yi5fcGFnZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyh0ZXN0LCBJV0xfU1RBVElPTl9DT1VOVF9NQVggJiM0MzsgMSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CWl3bF9tdm1fdGVzdF93aW5kb3dfc3RhdHVzKHRlc3QsIDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2Ugd2luZG93X3N0YXR1c19jYXNlc1tdID0gewomIzQzOwlLVU5JVF9DQVNFKHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24pLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgd2luZG93X3N0YXR1cyA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O2l3bG12bS13aW5kb3ctc3RhdHVzJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gd2luZG93X3N0YXR1c19jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUod2luZG93X3N0YXR1cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSB0aGF0JiMzOTtzIGFkZGluZyBhIGJvdW5kcyBjaGVjayBpbiBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguY2AuICBHb29kLCB3ZSYjMzk7cmUgYWltaW5nIGZvciByb2J1c3RuZXNzLCBhbHdheXMgYSBwb3NpdGl2ZSBzaWduLiBUaGV5JiMzOTt2ZSBhbHNvIGluY2x1ZGVkIGEgS1VuaXQgdGVzdCwgd2hpY2ggaXMgd2hhdCBJIGxpa2UgdG8gc2VlIC0gbWFrZXMgdmVyaWZpY2F0aW9uIG11Y2ggc2ltcGxlci4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGluIHRoZSBDIGNvZGUuIEkgc2VlIHRoZXkgYXJlIGFkZGluZyBhIGNoZWNrOgoKYGBgYwomIzQzOwkJaWYgKHN0YV9pZCAmZ3Q7PSBtdm0tJmd0O2Z3LSZndDt1Y29kZV9jYXBhLm51bV9zdGF0aW9ucykKJiM0MzsJCQljb250aW51ZTsKYGBgCgpSaWdodCwgdGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIFRoZSBjb2RlIGV4dHJhY3RzIGEgYHN0YV9pZGAgZnJvbSBgcmF0aWRgLCBhbmQgYmVmb3JlIGRlcmVmZXJlbmNpbmcgYG12bS0mZ3Q7ZndfaWRfdG9fbWFjX2lkW3N0YV9pZF1gIHRoZXkmIzM5O3JlIHZlcmlmeWluZyB0aGF0IGBzdGFfaWRgIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2Ugb2Ygc3RhdGlvbiBJRHMgc3VwcG9ydGVkIGJ5IHRoZSBmaXJtd2FyZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgd2hpY2ggaXMgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlLiBDbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZXhjZWxsZW50LiBJZiB0aGUgSUQgaXMgaW52YWxpZCwgaXQgc2tpcHMgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBNYWtlcyBzZW5zZS4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgcHJldmVudGluZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBOb3cgSSB3YW50IHRvIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGBpd2x3aWZpL212bWAgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGNvZGUgaXMgYWN0aXZlLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IGl0IHR1cm5zIHVwIGZvciBgaXdsd2lmaS9tdm1gIGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb25maWd1cmF0aW9uIGNvbnRleHQgSSBuZWVkIHRvIGZ1bGx5IGFzc2VzcyB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xXSUZJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIExvY2F0aW9uIENoZWNrKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHdpcmVsZXNzIGRyaXZlciBpbnZlc3RpZ2F0aW9uLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhhdCBLY29uZmlnIGZpbGUgZXhpc3RzIHdoZXJlIEkgZXhwZWN0IGl0IHRvIGJlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayB1bmRlciB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBJbnRlbCBpd2x3aWZpIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgS2NvbmZpZ2AgaXMgYWN0dWFsbHkgcHJlc2VudCB0aGVyZTsgaXQmIzM5O3MgdGhlIHVzdWFsIHN1c3BlY3QgZm9yIGFueSBkcml2ZXImIzM5O3MgYnVpbGQtdGltZSBvcHRpb25zLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIHdpdGhvdXQgdGhhdCBrZXkgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTM0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgaXdsd2lmaSBLY29uZmlnIGZvciBNVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTVZNIChNdWx0aS1WaXJ0dWFsIE1hY2hpbmUpIHN1cHBvcnQgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2x3aWZpYC4gVGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBLY29uZmlnIGZpbGUsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIFNvLCBsZXQmIzM5O3MgaGVhZCBzdHJhaWdodCBvdmVyIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb25zIG9yIGF0IGxlYXN0IHJlZmVyZW5jZXMgdG8gdGhlbSwgd2hpY2ggd2lsbCB0ZWxsIG1lIGhvdyBNVk0gc3VwcG9ydCBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQgcmVsYXRlZCBmZWF0dXJlcyBhcmUgY29udHJvbGxlZC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnl0aGluZyB3aXRoICYjMzQ7TVZNLCYjMzQ7ICYjMzQ7dmlydHVhbCBtYWNoaW5lLCYjMzQ7IG9yIHBlcmhhcHMgZXZlbiBtb3JlIGdlbmVyaWMgdGVybXMgcmVsYXRlZCB0byB2aXJ0dWFsaXphdGlvbiBvciBtdWx0aXBsZSBCU1NJRHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjE2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gKipIdW50aW5nIERvd24gdGhlIGBtdm1gIEtjb25maWcqKgoKV2hlcmUgdGhlIGhlY2sgaXMgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGBtdm1gIG1vZHVsZT8gSSBjb3VsZCBoYXZlIHN3b3JuIEkgc2F3IGl0IGluIHRoZSBwYXN0Li4uIFJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgYnkgbWV0aG9kaWNhbGx5IGNoZWNraW5nIHRoZSBsaWtlbHkgcGxhY2VzLiBUaGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvYCBkaXJlY3RvcnkgaXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiB0aGF0IHNlYXJjaC4gR2l2ZW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUga2VybmVsLCB0aGUgS2NvbmZpZyBmb3IgYW55IHNwZWNpZmljIGRyaXZlciBzaG91bGQgcmVzaWRlIHdpdGhpbiB0aGF0IGRyaXZlciYjMzk7cyBzb3VyY2UgdHJlZSBhbmQgaXRzIHN1YmRpcmVjdG9yaWVzLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSYjMzk7bSByZWFzb25hYmx5IGNvbmZpZGVudCBpdCB3aWxsIGJlIG5lc3RlZCBkb3duIHRoZXJlIHNvbWV3aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtpd2wtYWduLWh3LmgmIzM0OywKICAgICYjMzQ7aXdsLWNvbmZpZy5oJiMzNDssCiAgICAmIzM0O2l3bC1jc3IuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5jJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmgmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmMmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWRhdGEuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaXdsd2lmaS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1tc2cuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtdWNvZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRydi5oJiMzNDssCiAgICAmIzM0O2l3bC1maC5oJiMzNDssCiAgICAmIzM0O2l3bC1pby5jJiMzNDssCiAgICAmIzM0O2l3bC1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1tb2RwYXJhbXMuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmgmIzM0OywKICAgICYjMzQ7aXdsLW9wLW1vZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmMmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5oJiMzNDssCiAgICAmIzM0O2l3bC1wcnBoLmgmIzM0OywKICAgICYjMzQ7aXdsLXNjZC5oJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5jJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5oJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2NmZyYjMzQ7LAogICAgJiMzNDtkdm0mIzM0OywKICAgICYjMzQ7ZncmIzM0OywKICAgICYjMzQ7bWVpJiMzNDssCiAgICAmIzM0O21sZCYjMzQ7LAogICAgJiMzNDttdm0mIzM0OywKICAgICYjMzQ7cGNpZSYjMzQ7LAogICAgJiMzNDt0ZXN0cyYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJV0xNVk0gQ29tcGlsYXRpb24gT3B0aW9ucyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYElXTE1WTWAgaXMgaGFuZGxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgc3RydWN0dXJlLCBteSBmaXJzdCBpbnN0aW5jdHMgYXJlIHRvIGRpdmUgaW50byB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgdXN1YWwgc3VzcGVjdHMgZm9yIHRoaXMga2luZCBvZiB0aGluZyBhcmUgZWl0aGVyIHRoZSBgTWFrZWZpbGVgIG9yIHRoZSBgS2NvbmZpZ2AgZmlsZXMgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGUgYGl3bHdpZmlgIGRyaXZlciwgYW5kIG1vcmUgc3BlY2lmaWNhbGx5LCB0aGUgTVZNIHN1Yi1tb2R1bGUsIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vTWFrZWZpbGVgIG9yIHBlcmhhcHMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIFRob3NlIGFyZSB0eXBpY2FsbHkgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljIGFuZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciBmZWF0dXJlcyBsaWtlIGBJV0xNVk1gIGFyZSBkZWZpbmVkLiBGcm9tIHRoZXJlIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBpZiB0aGUgZmVhdHVyZSBpcyBtb2R1bGFyLCBhbmQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBvciBleHRlcm5hbCBtb2R1bGVzLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lXTE1WTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz01OD1jb25maWcgSVdMV0lGSV9MRURTXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYwLVx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYxOlx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjItXHRzZWxlY3QgTEVEU19UUklHR0VSU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9OTU9Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTctXHRkZWZhdWx0IHkgaWYgSVdMRFZNPW1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5ODpcdGRlZmF1bHQgeSBpZiBJV0xNVk09bVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk5LVx0ZGVmYXVsdCB5IGlmIElXTE1MRD1tXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDI6Y29tbWVudCBcJiMzNDtXQVJOSU5HOiBpd2x3aWZpIGlzIHVzZWxlc3Mgd2l0aG91dCBJV0xEVk0gb3IgSVdMTVZNIG9yIElXTE1MRFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwMzpcdGRlcGVuZHMgb24gSVdMRFZNPW4gXHUwMDI2XHUwMDI2IElXTE1WTT1uIFx1MDAyNlx1MDAyNiBJV0xNTEQ9blxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTIwPWl3bHdpZmktJChDT05GSUdfSVdMRFZNKSAmIzQzOz0gY2ZnLzUwMDAubyBjZmcvNjAwMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjIxOml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnLzcwMDAubyBjZmcvODAwMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTIyLSMgTUFDIGNvbmZpZ3VyYXRpb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjIzOml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnLzkwMDAubyBjZmcvMjIwMDAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZToyNDppd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGNmZy9heDIxMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI1Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnL2J6Lm8gY2ZnL3NjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMjYtaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBjZmcvYnoubyBjZmcvc2MubyBjZmcvZHIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yNy0jIFJGIGNvbmZpZ3VyYXRpb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI4Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnL3JmLWpmLm8gY2ZnL3JmLWhyLm8gY2ZnL3JmLWdmLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMjktaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBjZmcvcmYtZm0ubyBjZmcvcmYtd2gubyBjZmcvcmYtcGUub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9MzY9aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9yZWd1bGF0b3J5Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzc6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICYjNDM7PSBmdy9wYWdpbmcubyBmdy9zbWVtLm8gZncvaW5pdC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTM4LWl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gZncvc21lbS5vIGZ3L2luaXQub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX0lXTERWTSlcdCYjNDM7PSBkdm0vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19JV0xNVk0pXHQmIzQzOz0gbXZtL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01MS1vYmotJChDT05GSUdfSVdMTUVJKVx0JiM0Mzs9IG1laS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaD03MjU9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnIGl3bDEzNV9iZ25fY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgtNzI2LSNlbmRpZiAvKiBDT05GSUdfSVdMRFZNICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo3Mjc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTcyOC1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgaXdsNzI2MF9jZmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmg9NzQzPWV4dGVybiBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyBpd2xfcmZfZ2Y7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC03NDQtI2RlZmluZSBpd2xfcmZfb3QgaXdsX3JmX2hyXzgwbWh6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo3NDU6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTc0Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0lXTE1WTSkgICAmIzQzOz0gaXdsbXZtLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICYjNDM7PSB0ZXN0cy9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MzQ9VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGl3bF9od19jYXJkX2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0yMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MjI0OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMjI1LS8qIDcyNjAgU2VyaWVzICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTUwMi1cdHtJV0xfUENJX0RFVklDRSgweDdFNDAsIFBDSV9BTllfSUQsIGl3bF9tYV9tYWNfY2ZnKX0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6NTAzOiNlbmRpZiAvKiBDT05GSUdfSVdMTVZNICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6NTA0OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pIHx8IElTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01MDUtLyogQnogZGV2aWNlcyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01NTAtXHR7SVdMX1BDSV9ERVZJQ0UoMHhEMjQwLCBQQ0lfQU5ZX0lELCBpd2xfc2NfbWFjX2NmZyl9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjU1MTojZW5kaWYgLyogQ09ORklHX0lXTE1WTSB8fCBDT05GSUdfSVdMTUxEICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtNTUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz01OTM9VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGNvbnN0IHN0cnVjdCBpd2xfZGV2X2luZm8gaXdsX2Rldl9pbmZvX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTc5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo4MDA6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy04MDEtLyogNzI2MCBTZXJpZXMgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTA0Mi1cdFx0ICAgICBERVZJQ0UoMHgyNzIzKSwgU1VCREVWKDB4MTY1NCkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEwNDM6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMDQ0LSNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNTEQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMzI9aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQzMTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMvZGV2aW5mby5jPTI2OD1zdGF0aWMgdm9pZCBkZXZpbmZvX3BjaV9pZHNfY29uZmlnKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYy0yNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYzoyNzc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSkgfHwgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9kZXZpbmZvLmMtMjc4LVx0XHQvKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjUxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJV0xNVk0gQ29uZmlndXJhdGlvbiBhbmQgUnggRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgSVdMTVZNYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBmdW5jdGlvbi4gVGhpcyBzZWVtcyB0byBiZSB0aGUgdGFyZ2V0IG9mIGEgbW9kaWZpY2F0aW9uLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgYW5kIGZ1bmN0aW9uLiBMZXQgbWUgY2hlY2sgaXRzIGRlZmluaXRpb24gZmlyc3QuIEl0JiMzOTtzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNgLiBSaWdodCwgc28gdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBSWCAocmVjZWl2ZSkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciYjMzk7cyBNVk0gKG11bHRpLXZpcnR1YWwgbWFjaGluZSkgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoaXMgbm90aWZpY2F0aW9uIGlzIHRyaWdnZXJlZCBhbmQgd2hhdCB0aGUgc3RhdHVzIGl0JiMzOTtzIHJlZmVycmluZyB0by4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSB0aGlzIG5vdGlmaWNhdGlvbiBjYXJyaWVzIGFuZCBob3cgdGhlIE1WTSBoYW5kbGVzIHRoZSBkYXRhLiBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaD0xOTM2PXZvaWQgaXdsX212bV9zdGFfcG1fbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg6MTkzNzp2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMTkzOC1cdFx0XHRcdCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4Yik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MzE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXdsX3J4X2hhbmRsZXJzIGl3bF9tdm1fcnhfaGFuZGxlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zNDgtXHRSWF9IQU5ETEVSKEJBX1dJTkRPV19TVEFUVVNfTk9USUZJQ0FUSU9OX0lELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MzQ5Olx0XHQgICBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYsIFJYX0hBTkRMRVJfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTM1MC1cdFx0ICAgc3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jPTExOTI9dm9pZCBpd2xfbXZtX3J4X3N0YXRpc3RpY3Moc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYzoxMTk3OnZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jLTExOTgtXHRcdFx0XHQgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMjQ0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM6MTI0NTpFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmM9MTQ9c3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jOjUxOlx0aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKG12bSwgXHUwMDI2cnhiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL3dpbmRvdy1zdGF0dXMuYy01Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcwNgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDEwNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24gZm9yIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZnVuY3Rpb24gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaXMgYW4gUlggaGFuZGxlciB0cmlnZ2VyZWQgYnkgYSBub3RpZmljYXRpb24gZnJvbSB0aGUgSW50ZWwgV2ktRmkgZmlybXdhcmUuIEJlaW5nIGFuIGl3bHdpZmkgZHJpdmVyLCBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHRoZSBjaGFsbGVuZ2VzIG9mIGZ1enppbmcgaXQgc2luY2UgaXQmIzM5O3MgaGFyZHdhcmUtZGVwZW5kZW50LiBHZW5lcmFsbHksIHlvdSBuZWVkIHRoZSBhY3R1YWwgaGFyZHdhcmUgb3IgYSBnb29kIGVtdWxhdGlvbi4gTWFjODAyMTFfaHdzaW0gaXMgb2Z0ZW4gdGhlIGdvLXRvIGZvciBtYWM4MDIxMSwgYnV0IGl3bHdpZmkgaXMgYSBmdWxsIE1BQyBkcml2ZXIsIGV2ZW4gdGhvdWdoIGl3bHdpZmktbXZtIHVzZXMgbWFjODAyMTEgb24gdG9wIG9mIHRoZSBJbnRlbCBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGNhbiB0aGlzIGJlIGZ1enphYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpTeXprYWxsZXIgZG9lcyBoYXZlIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBldGMuLCB1c2luZyBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhpcyBpcyBzcGVjaWZpY2FsbHkgZm9yIG1hYzgwMjExLiBBbmQgdGhpcyBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyLiBEb2VzIHN5emthbGxlciBmdXp6IFBDST8gQWgsIHllcywgaXQgaGFzIFBDSSBmdXp6aW5nIHZpYSB2ZmlvL3BjaSwgZ29vZC4gVGhlIHBhdGNoIGFsc28gYWRkcyBhIEtVbml0IHRlc3QgYGl3bG12bS13aW5kb3ctc3RhdHVzYC4gTm93LCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCwgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKTm93LCBpd2x3aWZpIHdvbiYjMzk7dCBiaW5kIHRvIGFueXRoaW5nIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCB3aXRob3V0IGFuIGVtdWxhdGVkIEludGVsIHdpZmkgZGV2aWNlLiBTbywgdGhlIFJYIGhhbmRsZXJzIHdvbiYjMzk7dCBiZSBleGVjdXRlZCwgZXhjZXB0IGZvciB0aGUgbmV3IEtVbml0IHRlc3QuIEJ1dCBLVW5pdCB0ZXN0cyBhcmVuJiMzOTt0IHRyYWRpdGlvbmFsbHkgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgY291bGQgdGhlIFBDSSBmdXp6ZXIgcHJvYmUgaXdsd2lmaSBhbmQgdHJpZ2dlciBmaXJtd2FyZSByZXNwb25zZXM/CgpUaGUgUENJIGZ1enplciB1c2VzIG1lbW9yeS1tYXBwZWQgSS9PIGFuZCBETUEgcmVzcG9uc2VzLiBJdCBpcyAqdGhlb3JldGljYWxseSogcG9zc2libGUgdG8gZnV6eiB0aGUgUlggcGF0aCBpZiB0aGUgZHJpdmVyIHNldHMgdXAgRE1BIGFuZCB0aGUgZnV6emVyIGNhbiBwb3B1bGF0ZSB0aGUgRE1BIHJpbmcgd2l0aCBhIGNyYWZ0ZWQgUlggcGFja2V0LCB3aGljaCBpcyBpbmRlZWQgd2hhdCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciB0cmllcyB0byBkby4gU28gdGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgcmVhY2ggYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgdmlhIFBDSSBmdXp6aW5nPyBJJiMzOTtkIGhhdmUgdG8gc2F5IHllcy4gVGhlIGZ1enplciBwcm9iZXMgdGhlIGRyaXZlciwgYW5kIHdoaWxlIGl0IG1pZ2h0IG5vdCBzZW5kIGEgY29tcGxldGVseSB2YWxpZCBgQkFfV0lORE9XX1NUQVRVU19OT1RJRklDQVRJT05fSURgIHBhY2tldCwgaXQgKmNhbiogc2VuZCByYW5kb20gZGF0YSwgYW5kIHRodXMgbGlrZWx5IHRyaWdnZXIgc29tZSBwYXJ0IG9mIHRoZSBSWCBwYXRoLgoKT2theSwgbm93IGxldCYjMzk7cyBnbyBiYWNrIHRvIHRoZSBwcm9tcHQsIEkgaGF2ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBpZiBpdCBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYy4gSXMgYGl3bHdpZmlgIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmc/IFllcyEKCkkgY2FuIG1hcmsgdGhpcyBhcyBXb3J0aEZ1enppbmc9dHJ1ZSB3aXRoIGBJV0xNVk1gIGFzIHRoZSBjb25maWcgYW5kIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGFzIHRoZSBmb2N1cyBzeW1ib2wuIEkmIzM5O2xsIG5lZWQgYElXTFdJRklgIGFuZCBgSVdMTVZNYCBhcyBjb25maWdzLiBgSVdMV0lGSV9LVU5JVF9URVNUU2AgaXMgKm5vdCogbmVlZGVkLCBiZWNhdXNlIHRoZSBjcml0aWNhbCBwYXJ0IGlzIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIHdoaWNoIGlzIGNvbXBpbGVkIHdpdGggYElXTE1WTWAsIGFuZCB3aGljaCBpcyByZWFjaGFibGUgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYz0xMTkyPXZvaWQgaXdsX212bV9yeF9zdGF0aXN0aWNzKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTE5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM6MTE5Nzp2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMTk4LVx0XHRcdFx0IHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTI0NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjEyNDU6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgKioKCk9rYXksIHNvIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgZHJpdmVyLiBJZiBJIGluY2x1ZGUgYElXTE1WTWAsIHRoaXMgY29kZSAqd2lsbCogYmUgY29tcGlsZWQuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgd29ydGggZnV6emluZz8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXgg4oCTIGEgYm91bmRzIGNoZWNrIOKAkyBpbiBhIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGgsIHdoaWNoIGlzIHByaW1lIGZ1enppbmcgdGVycml0b3J5LgoKRXZlbiB0aG91Z2ggaXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIsIHN5emthbGxlciBoYXMgb3B0aW9ucy4gVGhlIFBDSSBmdXp6ZXIgb3Igd2lmaSBpbmplY3Rpb24gYXJlIHBvdGVudGlhbCBhdmVudWVzLCBhbmQgaXQgKm1pZ2h0KiBldmVuIGJlIGNvdmVyZWQgYnkgYSBLVW5pdCB0ZXN0IChldmVuIGlmIHN5emthbGxlciBkb2VzbiYjMzk7dCBmdXp6IEtVbml0IGRpcmVjdGx5LCB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIGEgdmFsaWQgdGFyZ2V0IGZvciBmdXp6aW5nKS4gQWgsIHdhaXQsIGNhbiBzeXprYWxsZXIgZnV6eiBLVW5pdD8gTm8sIG5vdCBkaXJlY3RseSwgYnV0IGl0IGNhbiBmdXp6IHRoZSBkcml2ZXIgKmZ1bmN0aW9uKi4KCk5vdywgdGhlIEtVbml0IHRlc3QuLi4gSWYgdGhhdCB0ZXN0IGlzIGJ1aWx0LCB3aWxsIGl0IHJ1biBkdXJpbmcgYm9vdD8gWWVzLCBpZiBLVW5pdCBpcyBlbmFibGVkIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXMgbG9hZGVkLiBCdXQgZnV6emluZyB3aWxsIGZvY3VzIGRpcmVjdGx5IG9uIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW55d2F5LgoKU28sIEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHdpbGwgYmUgYElXTE1WTWAgYW5kIGBJV0xXSUZJYC4KCkJ1dCB3YWl0LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBRRU1VLiBJcyB0aGUgaXdsd2lmaSBSWCBwYXRoIHJlYWNoYWJsZSBpbiBRRU1VPyBXaXRob3V0IGEgdmlydHVhbCBpd2x3aWZpIGRldmljZSwgdGhlIFBDSSBkcml2ZXIgcHJvYmUgd2lsbCBmYWlsLCBhbmQgdGhlIFJYIGludGVycnVwdC9OQVBJIHdpbGwgbmV2ZXIgYmUgcmVnaXN0ZXJlZCBvciB0cmlnZ2VyZWQuCgpBaCwgYnV0IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIChgc3l6X3BjaV9zZXR1cGApIGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJdCBpbnRlcmNlcHRzIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8vUElPL0RNQSB0aHJvdWdoIGEgdmlydHVhbCBQQ0kgZGV2aWNlIGluIFFFTVUgKHVzaW5nIGEgY3VzdG9tIFFFTVUgZGV2aWNlIG9yIHZmaW8pLiAgc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpXypgIHBzZXVkby1zeXNjYWxscyBhbGxvdyBpbmplY3RpbmcgUENJIGRldmljZXMsIHNvIGl3bHdpZmkgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyEgVGhlcmVmb3JlLCBJICpzaG91bGQqIHByb3ZpZGUgYElXTE1WTWAgYW5kIGBJV0xXSUZJYC4KCkxldCBtZSBkb3VibGUgY2hlY2sgdGhhdCBgSVdMV0lGSWAgaXMgcmVxdWlyZWQuIFllcywgYElXTE1WTWAgZGVwZW5kcyBvbiBgSVdMV0lGSWAuIEkmIzM5O2xsIHJldmlldyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYCB0byBiZSBzdXJlLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NjY9Y29uZmlnIElXTERWTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTcxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHNwZWNpZmljYWxseSBpd2x3aWZpIGRyaXZlcnM6CgoqKkFuYWx5emluZyBpd2x3aWZpIEtjb25maWcgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgZmlsZSwgZm9jdXNpbmcgYXJvdW5kIGxpbmUgNzQuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgdXN1YWxseSByZXNpZGVzIHJlZ2FyZGluZyBmZWF0dXJlIGVuYWJsZW1lbnQsIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCBhbnkgcmVsYXRlZCBvcHRpb25zLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBtZXQgYXMgYSBwcmVyZXF1aXNpdGUgZm9yIHRoZSBpd2x3aWZpIG1vZHVsZSB0byBjb21waWxlIGFuZCBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aGluIGEgbGFyZ2VyIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG90aGVyIGRyaXZlciByZXF1aXJlbWVudHMsIHBsYXRmb3JtLXNwZWNpZmljIGNvbnN0cmFpbnRzLCBvciBwZXJoYXBzIGV2ZW4gb3RoZXIgS2NvbmZpZyBzeW1ib2xzIHRoYXQgdGhpcyBvbmUgZGVwZW5kcyBvbiBiZWluZyBzZXQuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3MDpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgRFZNIGZpcm13YXJlLiBUaGUgbGlzdFxuICA3MTpcdFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA3MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgSVdMTVZNXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNzc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgdGhlIE1WTSBmaXJtd2FyZS4gVGhlIGxpc3RcbiAgODE6XHRcdCAgb2YgdGhlIGRldmljZXMgdGhhdCB1c2UgdGhpcyBmaXJtd2FyZSBpcyBhdmFpbGFibGUgaGVyZTpcbiAgODI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZHJpdmVycy9pd2x3aWZpI2Zpcm13YXJlXG4gIDgzOlx0XG4gIDg0Olx0Y29uZmlnIElXTE1MRFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA4NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDg3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDg4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDg5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTU1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgY29uZmlndXJpbmcgYElXTE1WTWAuIFJpZ2h0LCBhbmQgYSBwYXRjaCBpcyBpbiBwbGF5IHRvbywgb25lIHRoYXQgaW5jbHVkZXMgYSBLVW5pdCB0ZXN0LiBOb3csIHRoZSBxdWVzdGlvbiBpcywgKnNob3VsZCogSSBlbmFibGUgdGhhdCBgSVdMV0lGSV9LVU5JVF9URVNUU2Agb3B0aW9uPyBOZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBvZiBjb3Vyc2UuIEJlc3QgdG8gY29uZmlybSBpdHMgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHNldHRpbmdzIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24uIFNvLCBvZmYgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgSSBnby4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYW5zd2VyIGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaXdsd2lmaS5cbiAgNDY6XHRcbiAgNDc6XHRpZiBJV0xXSUZJXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbiAgNTA6XHRcdHRyaXN0YXRlXG4gIDUxOlx0XHRkZXBlbmRzIG9uIEtVTklUXG4gIDUyOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBFbmFibGUgdGhpcyBvcHRpb24gZm9yIGl3bHdpZmkga3VuaXQgdGVzdHMuXG4gIDU1Olx0XG4gIDU2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIElXTFdJRklfTEVEU1xuICA1OTpcdFx0Ym9vbFxuICA2MDpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuICA2MTpcdFx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXG4gIDYyOlx0XHRzZWxlY3QgTEVEU19UUklHR0VSU1xuICA2MzpcdFx0c2VsZWN0IE1BQzgwMjExX0xFRFNcbiAgNjQ6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA0MQoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiAzMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBtb2RpZmllcyB0aGUgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgZnVuY3Rpb24sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXM6IHllcywgdGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBgSVdMV0lGSV9LVU5JVF9URVNUU2AgYXJlIHBhcnRpY3VsYXJseSBoZWxwZnVsIGhlcmUgYmVjYXVzZSB0aGV5JiMzOTtsbCBkaXJlY3RseSBleGVyY2lzZSB0aGUgbW9kaWZpZWQgY29kZS4gVGhpcyBwcm92aWRlcyBhIGNsZWFuIGFuZCBhdXRvbWF0ZWQgd2F5IHRvIGVuc3VyZSB0aGUgbmV3IGJvdW5kcyBjaGVjayBmdW5jdGlvbnMgYXMgaW50ZW5kZWQuIEluY2x1ZGluZyBgSVdMV0lGSWAsIGBJV0xNVk1gLCBhbmQgYElXTFdJRklfS1VOSVRfVEVTVFNgIGluIHRoZSBjb25maWd1cmF0aW9uIGVuc3VyZXMgdGhlIHRlc3Rpbmcgd2lsbCBydW4uCgpCdXQgaG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNjZW5hcmlvcyB0aGF0IGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gTm93LCBpcyBgaXdsd2lmaWAgb25lIG9mIHRob3NlPyBUaGFua2Z1bGx5LCBJIGtub3cgdGhhdCBTeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciB0aGF0ICpkb2VzKiByZWFjaCBgaXdsd2lmaWAuIEluIGFkZGl0aW9uIHRvIHRoaXMgcmVhY2hhYmlsaXR5IHZpYSBmdXp6aW5nLCB0aGUgS1VuaXQgdGVzdCBwcm92aWRlcyBhIG1vcmUgY29udHJvbGxlZCBleGVjdXRpb24gcGF0aCBmb3IgdGhpcyBmdW5jdGlvbi4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKU28sIGFmdGVyIGNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBteSBmaW5hbCB2ZXJkaWN0IGlzOgoKKiAgICoqV29ydGhGdXp6aW5nOiB0cnVlKioKKiAgICoqRm9jdXNTeW1ib2xzOioqIEkmIzM5O20gemVyb2luZyBpbiBvbiBgJiMzNDtpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYmIzM0O2AKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBJJiMzOTttIHJlY29tbWVuZGluZyBgWyYjMzQ7SVdMV0lGSSYjMzQ7LCAmIzM0O0lXTE1WTSYjMzQ7LCAmIzM0O0lXTFdJRklfS1VOSVRfVEVTVFMmIzM0O11gLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBib3VuZHMgY2hlY2sgd2l0aGluIHRoZSBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIEkga25vdyB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTFdJRklfS1VOSVRfVEVTVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byB0aGUgUlggaGFuZGxlciBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIG9yIHRoZSBuZXdseSBhZGRlZCBLVW5pdCB0ZXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xXSUZJX0tVTklUX1RFU1RTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQxOjUzLjcxMDAzOTA0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTY1MDU5MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIklXTE1WTVwiLFxuICAgIFwiSVdMV0lGSV9LVU5JVF9URVNUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDE6NTMuNzEwMDQ1MDkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTc5MTQxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0OWJkNDY1NGVmZTViM2U3Y2JmM2RkY2U5NTI5ZWY1NDllOGQ3NGEyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXFxuaW5kZXggMjY5YzRiNDVkZTgwNzguLmQzNzNmMDcyM2UxM2QzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXFxuQEAgLTcsNiArNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIml3bC1kcnYuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIml3bC10cmFucy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibXZtLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmdy1hcGkuaFxcXCJcXG5AQCAtMTIyNyw2ICsxMjI4LDggQEAgdm9pZCBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0XFx0LyogZ2V0IHRoZSBzdGF0aW9uICovXFxuIFxcdFxcdHN0YV9pZCA9IChyYXRpZCBcXHUwMDI2IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSylcXG4gXFx0XFx0XFx0IFxcdTAwM2VcXHUwMDNlIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUztcXG4rXFx0XFx0aWYgKHN0YV9pZCBcXHUwMDNlPSBtdm0tXFx1MDAzZWZ3LVxcdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9ucylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdHN0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX21hY19pZFtzdGFfaWRdKTtcXG4gXFx0XFx0aWYgKElTX0VSUl9PUl9OVUxMKHN0YSkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbkBAIC0xMjM5LDMgKzEyNDIsNCBAQCB2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHR9XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXFxuaW5kZXggMjI2N2JlNGNmYjQ0MTUuLmJmMjI3NTBmY2VhZmM3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGVcXG5AQCAtMSwzICsxLDMgQEBcXG4taXdsbXZtLXRlc3RzLXkgKz0gbW9kdWxlLm8gaGNtZC5vXFxuK2l3bG12bS10ZXN0cy15ICs9IG1vZHVsZS5vIGhjbWQubyB3aW5kb3ctc3RhdHVzLm9cXG4gXFxuIG9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSBpd2xtdm0tdGVzdHMub1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wNjgwN2UyYmRiYzEyZFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcXG5AQCAtMCwwICsxLDc3IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbisvKlxcbisgKiBLVW5pdCB0ZXN0cyBmb3IgTVZNIEJBIHdpbmRvdyBzdGF0dXMgbm90aWZpY2F0aW9uIGhhbmRsaW5nXFxuKyAqL1xcbisjaW5jbHVkZSBcXHUwMDNja3VuaXQvdGVzdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Npd2wtdHJhbnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIi4uL2Z3LWFwaS5oXFxcIlxcbisjaW5jbHVkZSBcXFwiLi4vbXZtLmhcXFwiXFxuK1xcbitNT0RVTEVfSU1QT1JUX05TKFxcXCJFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1xcXCIpO1xcbitcXG4rc3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXFxuK3tcXG4rXFx0c3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmIG5vdGlmID0ge307XFxuK1xcdHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciByeGIgPSB7XFxuK1xcdFxcdC5fb2Zmc2V0ID0gMCxcXG4rXFx0XFx0Ll9yeF9wYWdlX29yZGVyID0gMCxcXG4rXFx0fTtcXG4rXFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdDtcXG4rXFx0c3RydWN0IGl3bF9mdyAqZnc7XFxuK1xcdHN0cnVjdCBpd2xfbXZtICptdm07XFxuK1xcdHUxNiByYXRpZDtcXG4rXFxuK1xcdEJVSUxEX0JVR19PTigoSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSkgXFx1MDAzZVxcbitcXHRcXHQgICAgIChCQV9XSU5ET1dfU1RBVFVTX1NUQV9JRF9NU0sgXFx1MDAzZVxcdTAwM2VcXG4rXFx0XFx0ICAgICAgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKSk7XFxuK1xcbitcXHRtdm0gPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqbXZtKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBtdm0pO1xcbitcXG4rXFx0ZncgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqZncpLCBHRlBfS0VSTkVMKTtcXG4rXFx0S1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGZ3KTtcXG4rXFx0ZnctXFx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zID0gSVdMX1NUQVRJT05fQ09VTlRfTUFYO1xcbitcXHRtdm0tXFx1MDAzZWZ3ID0gZnc7XFxuK1xcbitcXHRyeGIuX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwpO1xcbitcXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgcnhiLl9wYWdlKTtcXG4rXFxuK1xcdHJhdGlkID0gQkFfV0lORE9XX1NUQVRVU19WQUxJRF9NU0sgfFxcbitcXHRcXHQoc3RhX2lkIFxcdTAwM2NcXHUwMDNjIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUyk7XFxuK1xcdG5vdGlmLnJhX3RpZFswXSA9IGNwdV90b19sZTE2KHJhdGlkKTtcXG4rXFx0bm90aWYubXBkdV9yeF9jb3VudFswXSA9IGNwdV90b19sZTE2KDEpO1xcbitcXG4rXFx0cGt0ID0gcnhiX2FkZHIoXFx1MDAyNnJ4Yik7XFxuK1xcdG1lbXNldChwa3QsIDAsIFBBR0VfU0laRSk7XFxuK1xcdHBrdC1cXHUwMDNlbGVuX25fZmxhZ3MgPSBjcHVfdG9fbGUzMihzaXplb2YocGt0LVxcdTAwM2VoZHIpICsgc2l6ZW9mKG5vdGlmKSk7XFxuK1xcdG1lbWNweShwa3QtXFx1MDAzZWRhdGEsIFxcdTAwMjZub3RpZiwgc2l6ZW9mKG5vdGlmKSk7XFxuK1xcbitcXHRpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYobXZtLCBcXHUwMDI2cnhiKTtcXG4rXFxuK1xcdF9fZnJlZV9wYWdlKHJ4Yi5fcGFnZSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0aXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXModGVzdCwgSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyh0ZXN0LCAwKTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHdpbmRvd19zdGF0dXNfY2FzZXNbXSA9IHtcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X2JhX3dpbmRvd19zdGF0dXNfc3RhdGlvbl9pZF9ib3VuZHMpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKSxcXG4rXFx0e30sXFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHdpbmRvd19zdGF0dXMgPSB7XFxuK1xcdC5uYW1lID0gXFxcIml3bG12bS13aW5kb3ctc3RhdHVzXFxcIixcXG4rXFx0LnRlc3RfY2FzZXMgPSB3aW5kb3dfc3RhdHVzX2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZSh3aW5kb3dfc3RhdHVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDE6NTQuMTA4OTAyNjc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc2NjE4NDg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTFdJRklfS1VOSVRfVEVTVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIHRoZSBSWCBoYW5kbGVyIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgb3IgdGhlIG5ld2x5IGFkZGVkIEtVbml0IHRlc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDliZDQ2NTRlZmU1YjNlN2NiZjNkZGNlOTUyOWVmNTQ5ZThkNzRhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcbmluZGV4IDI2OWM0YjQ1ZGU4MDc4Li5kMzczZjA3MjNlMTNkMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcbkBAIC03LDYgKzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4rI2luY2x1ZGUgXCJpd2wtZHJ2LmhcIlxuICNpbmNsdWRlIFwiaXdsLXRyYW5zLmhcIlxuICNpbmNsdWRlIFwibXZtLmhcIlxuICNpbmNsdWRlIFwiZnctYXBpLmhcIlxuQEAgLTEyMjcsNiArMTIyOCw4IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdC8qIGdldCB0aGUgc3RhdGlvbiAqL1xuIFx0XHRzdGFfaWQgPSAocmF0aWQgXHUwMDI2IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSylcbiBcdFx0XHQgXHUwMDNlXHUwMDNlIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUztcbitcdFx0aWYgKHN0YV9pZCBcdTAwM2U9IG12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9ucylcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cdTAwM2Vmd19pZF90b19tYWNfaWRbc3RhX2lkXSk7XG4gXHRcdGlmIChJU19FUlJfT1JfTlVMTChzdGEpKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTEyMzksMyArMTI0Miw0IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHR9XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZVxuaW5kZXggMjI2N2JlNGNmYjQ0MTUuLmJmMjI3NTBmY2VhZmM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXG5AQCAtMSwzICsxLDMgQEBcbi1pd2xtdm0tdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm9cbitpd2xtdm0tdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm8gd2luZG93LXN0YXR1cy5vXG4gXG4gb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICs9IGl3bG12bS10ZXN0cy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjA2ODA3ZTJiZGJjMTJkXG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcbkBAIC0wLDAgKzEsNzcgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbisvKlxuKyAqIEtVbml0IHRlc3RzIGZvciBNVk0gQkEgd2luZG93IHN0YXR1cyBub3RpZmljYXRpb24gaGFuZGxpbmdcbisgKi9cbisjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXHUwMDNjaXdsLXRyYW5zLmhcdTAwM2VcbisjaW5jbHVkZSBcIi4uL2Z3LWFwaS5oXCJcbisjaW5jbHVkZSBcIi4uL212bS5oXCJcbitcbitNT0RVTEVfSU1QT1JUX05TKFwiRVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkdcIik7XG4rXG4rc3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXG4re1xuK1x0c3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmIG5vdGlmID0ge307XG4rXHRzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgcnhiID0ge1xuK1x0XHQuX29mZnNldCA9IDAsXG4rXHRcdC5fcnhfcGFnZV9vcmRlciA9IDAsXG4rXHR9O1xuK1x0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdDtcbitcdHN0cnVjdCBpd2xfZncgKmZ3O1xuK1x0c3RydWN0IGl3bF9tdm0gKm12bTtcbitcdHUxNiByYXRpZDtcbitcbitcdEJVSUxEX0JVR19PTigoSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSkgXHUwMDNlXG4rXHRcdCAgICAgKEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSyBcdTAwM2VcdTAwM2VcbitcdFx0ICAgICAgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKSk7XG4rXG4rXHRtdm0gPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqbXZtKSwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgbXZtKTtcbitcbitcdGZ3ID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2YoKmZ3KSwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZncpO1xuK1x0ZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMgPSBJV0xfU1RBVElPTl9DT1VOVF9NQVg7XG4rXHRtdm0tXHUwMDNlZncgPSBmdztcbitcbitcdHJ4Yi5fcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgcnhiLl9wYWdlKTtcbitcbitcdHJhdGlkID0gQkFfV0lORE9XX1NUQVRVU19WQUxJRF9NU0sgfFxuK1x0XHQoc3RhX2lkIFx1MDAzY1x1MDAzYyBCQV9XSU5ET1dfU1RBVFVTX1NUQV9JRF9QT1MpO1xuK1x0bm90aWYucmFfdGlkWzBdID0gY3B1X3RvX2xlMTYocmF0aWQpO1xuK1x0bm90aWYubXBkdV9yeF9jb3VudFswXSA9IGNwdV90b19sZTE2KDEpO1xuK1xuK1x0cGt0ID0gcnhiX2FkZHIoXHUwMDI2cnhiKTtcbitcdG1lbXNldChwa3QsIDAsIFBBR0VfU0laRSk7XG4rXHRwa3QtXHUwMDNlbGVuX25fZmxhZ3MgPSBjcHVfdG9fbGUzMihzaXplb2YocGt0LVx1MDAzZWhkcikgKyBzaXplb2Yobm90aWYpKTtcbitcdG1lbWNweShwa3QtXHUwMDNlZGF0YSwgXHUwMDI2bm90aWYsIHNpemVvZihub3RpZikpO1xuK1xuK1x0aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKG12bSwgXHUwMDI2cnhiKTtcbitcbitcdF9fZnJlZV9wYWdlKHJ4Yi5fcGFnZSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0aXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXModGVzdCwgSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyh0ZXN0LCAwKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHdpbmRvd19zdGF0dXNfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3N0YXRpb25faWRfYm91bmRzKSxcbitcdEtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24pLFxuK1x0e30sXG4rfTtcbitcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHdpbmRvd19zdGF0dXMgPSB7XG4rXHQubmFtZSA9IFwiaXdsbXZtLXdpbmRvdy1zdGF0dXNcIixcbitcdC50ZXN0X2Nhc2VzID0gd2luZG93X3N0YXR1c19jYXNlcyxcbit9O1xuK1xuK2t1bml0X3Rlc3Rfc3VpdGUod2luZG93X3N0YXR1cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MTo1NC4xMDg5MDQxNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzAxOTgyMjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQncyBhZGRpbmcgYSBib3VuZHMgY2hlY2sgaW4gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgd2l0aGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNgLiAgR29vZCwgd2UncmUgYWltaW5nIGZvciByb2J1c3RuZXNzLCBhbHdheXMgYSBwb3NpdGl2ZSBzaWduLiBUaGV5J3ZlIGFsc28gaW5jbHVkZWQgYSBLVW5pdCB0ZXN0LCB3aGljaCBpcyB3aGF0IEkgbGlrZSB0byBzZWUgLSBtYWtlcyB2ZXJpZmljYXRpb24gbXVjaCBzaW1wbGVyLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGluIHRoZSBDIGNvZGUuIEkgc2VlIHRoZXkgYXJlIGFkZGluZyBhIGNoZWNrOlxuXG5gYGBjXG4rXHRcdGlmIChzdGFfaWQgXHUwMDNlPSBtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMpXG4rXHRcdFx0Y29udGludWU7XG5gYGBcblxuUmlnaHQsIHRoYXQncyBleGFjdGx5IHdoYXQgSSdkIGV4cGVjdC4gVGhlIGNvZGUgZXh0cmFjdHMgYSBgc3RhX2lkYCBmcm9tIGByYXRpZGAsIGFuZCBiZWZvcmUgZGVyZWZlcmVuY2luZyBgbXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZFtzdGFfaWRdYCB0aGV5J3JlIHZlcmlmeWluZyB0aGF0IGBzdGFfaWRgIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2Ugb2Ygc3RhdGlvbiBJRHMgc3VwcG9ydGVkIGJ5IHRoZSBmaXJtd2FyZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgd2hpY2ggaXMgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlLiBDbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZXhjZWxsZW50LiBJZiB0aGUgSUQgaXMgaW52YWxpZCwgaXQgc2tpcHMgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBNYWtlcyBzZW5zZS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIE5vdyBJIHdhbnQgdG8gcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgaXdsd2lmaS9tdm1gIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGFjdGl2ZS4gTGV0IG1lIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBpdCB0dXJucyB1cCBmb3IgYGl3bHdpZmkvbXZtYCBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjAyLjQxMDg4NzkzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk3NjQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTg0PWNvbmZpZyBJV0xNTERcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbid0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcXFwiRGVidWdnaW5nIE9wdGlvbnNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjAyLjQ3MDg3MDI5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzQ1ODkwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgd2lyZWxlc3MgZHJpdmVyIGludmVzdGlnYXRpb24sIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgS2NvbmZpZyBmaWxlIGV4aXN0cyB3aGVyZSBJIGV4cGVjdCBpdCB0byBiZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdW5kZXIgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBJbnRlbCBpd2x3aWZpIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBLY29uZmlnYCBpcyBhY3R1YWxseSBwcmVzZW50IHRoZXJlOyBpdCdzIHRoZSB1c3VhbCBzdXNwZWN0IGZvciBhbnkgZHJpdmVyJ3MgYnVpbGQtdGltZSBvcHRpb25zLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIHdpdGhvdXQgdGhhdCBrZXkgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjA1LjM0NTQ2MTA5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY3NzQ1NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElXTE1WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjowNS40MDMxNTA4NDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI0ODM1NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBpd2x3aWZpIEtjb25maWcgZm9yIE1WTSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE1WTSAoTXVsdGktVmlydHVhbCBNYWNoaW5lKSBzdXBwb3J0IHdpdGhpbiB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBgaXdsd2lmaWAuIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgS2NvbmZpZyBmaWxlLCBhcyB0aGF0J3Mgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIFNvLCBsZXQncyBoZWFkIHN0cmFpZ2h0IG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBgQ09ORklHX2Agb3B0aW9ucyBvciBhdCBsZWFzdCByZWZlcmVuY2VzIHRvIHRoZW0sIHdoaWNoIHdpbGwgdGVsbCBtZSBob3cgTVZNIHN1cHBvcnQgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCB3aGF0IHJlbGF0ZWQgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnl0aGluZyB3aXRoIFwiTVZNLFwiIFwidmlydHVhbCBtYWNoaW5lLFwiIG9yIHBlcmhhcHMgZXZlbiBtb3JlIGdlbmVyaWMgdGVybXMgcmVsYXRlZCB0byB2aXJ0dWFsaXphdGlvbiBvciBtdWx0aXBsZSBCU1NJRHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MDguOTI3OTg4NDE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTI3MDc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjA4Ljk4NjEyMjg3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzOTIyNzE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uICoqSHVudGluZyBEb3duIHRoZSBgbXZtYCBLY29uZmlnKipcblxuV2hlcmUgdGhlIGhlY2sgaXMgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGBtdm1gIG1vZHVsZT8gSSBjb3VsZCBoYXZlIHN3b3JuIEkgc2F3IGl0IGluIHRoZSBwYXN0Li4uIFJpZ2h0LCBsZXQncyBzdGFydCBieSBtZXRob2RpY2FsbHkgY2hlY2tpbmcgdGhlIGxpa2VseSBwbGFjZXMuIFRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9gIGRpcmVjdG9yeSBpcyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIHRoYXQgc2VhcmNoLiBHaXZlbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBrZXJuZWwsIHRoZSBLY29uZmlnIGZvciBhbnkgc3BlY2lmaWMgZHJpdmVyIHNob3VsZCByZXNpZGUgd2l0aGluIHRoYXQgZHJpdmVyJ3Mgc291cmNlIHRyZWUgYW5kIGl0cyBzdWJkaXJlY3Rvcmllcy4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IGl0IHdpbGwgYmUgbmVzdGVkIGRvd24gdGhlcmUgc29tZXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MTEuODI1MzUyMzY2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiaXdsLWFnbi1ody5oXCIsXG4gICAgXCJpd2wtY29uZmlnLmhcIixcbiAgICBcIml3bC1jc3IuaFwiLFxuICAgIFwiaXdsLWRiZy10bHYuY1wiLFxuICAgIFwiaXdsLWRiZy10bHYuaFwiLFxuICAgIFwiaXdsLWRlYnVnLmNcIixcbiAgICBcIml3bC1kZWJ1Zy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtZGF0YS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaW8uaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLWl3bHdpZmkuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLW1zZy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtdWNvZGUuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLmNcIixcbiAgICBcIml3bC1kZXZ0cmFjZS5oXCIsXG4gICAgXCJpd2wtZHJ2LmNcIixcbiAgICBcIml3bC1kcnYuaFwiLFxuICAgIFwiaXdsLWZoLmhcIixcbiAgICBcIml3bC1pby5jXCIsXG4gICAgXCJpd2wtaW8uaFwiLFxuICAgIFwiaXdsLW1vZHBhcmFtcy5oXCIsXG4gICAgXCJpd2wtbnZtLXBhcnNlLmNcIixcbiAgICBcIml3bC1udm0tcGFyc2UuaFwiLFxuICAgIFwiaXdsLW52bS11dGlscy5jXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmhcIixcbiAgICBcIml3bC1vcC1tb2RlLmhcIixcbiAgICBcIml3bC1waHktZGIuY1wiLFxuICAgIFwiaXdsLXBoeS1kYi5oXCIsXG4gICAgXCJpd2wtcHJwaC5oXCIsXG4gICAgXCJpd2wtc2NkLmhcIixcbiAgICBcIml3bC10cmFucy5jXCIsXG4gICAgXCJpd2wtdHJhbnMuaFwiLFxuICAgIFwiaXdsLXV0aWxzLmNcIixcbiAgICBcIml3bC11dGlscy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImNmZ1wiLFxuICAgIFwiZHZtXCIsXG4gICAgXCJmd1wiLFxuICAgIFwibWVpXCIsXG4gICAgXCJtbGRcIixcbiAgICBcIm12bVwiLFxuICAgIFwicGNpZVwiLFxuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjoxMS44MjU0Njc1NTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MDM5ODE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSVdMTVZNIENvbXBpbGF0aW9uIE9wdGlvbnMqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgSVdMTVZNYCBpcyBoYW5kbGVkIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciBzdHJ1Y3R1cmUsIG15IGZpcnN0IGluc3RpbmN0cyBhcmUgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhpcyBraW5kIG9mIHRoaW5nIGFyZSBlaXRoZXIgdGhlIGBNYWtlZmlsZWAgb3IgdGhlIGBLY29uZmlnYCBmaWxlcyB3aXRoaW4gdGhlIHJlbGV2YW50IGRyaXZlciBkaXJlY3RvcnkuIEknbSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGFuZCBtb3JlIHNwZWNpZmljYWxseSwgdGhlIE1WTSBzdWItbW9kdWxlLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vTWFrZWZpbGVgIG9yIHBlcmhhcHMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIFRob3NlIGFyZSB0eXBpY2FsbHkgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljIGFuZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciBmZWF0dXJlcyBsaWtlIGBJV0xNVk1gIGFyZSBkZWZpbmVkLiBGcm9tIHRoZXJlIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBpZiB0aGUgZmVhdHVyZSBpcyBtb2R1bGFyLCBhbmQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBvciBleHRlcm5hbCBtb2R1bGVzLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjoxNS4wNjU4Njg5MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzQwMjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklXTE1WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NTg9Y29uZmlnIElXTFdJRklfTEVEU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYwLVxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NjE6XFx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYyLVxcdHNlbGVjdCBMRURTX1RSSUdHRVJTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NjY9Y29uZmlnIElXTERWTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTk1PWNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTctXFx0ZGVmYXVsdCB5IGlmIElXTERWTT1tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk4OlxcdGRlZmF1bHQgeSBpZiBJV0xNVk09bVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05OS1cXHRkZWZhdWx0IHkgaWYgSVdMTUxEPW1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwMjpjb21tZW50IFxcXCJXQVJOSU5HOiBpd2x3aWZpIGlzIHVzZWxlc3Mgd2l0aG91dCBJV0xEVk0gb3IgSVdMTVZNIG9yIElXTE1MRFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTAzOlxcdGRlcGVuZHMgb24gSVdMRFZNPW4gXFx1MDAyNlxcdTAwMjYgSVdMTVZNPW4gXFx1MDAyNlxcdTAwMjYgSVdMTUxEPW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT0yMD1pd2x3aWZpLSQoQ09ORklHX0lXTERWTSkgKz0gY2ZnLzUwMDAubyBjZmcvNjAwMC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZToyMTppd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgKz0gY2ZnLzcwMDAubyBjZmcvODAwMC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yMi0jIE1BQyBjb25maWd1cmF0aW9uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MjM6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGNmZy85MDAwLm8gY2ZnLzIyMDAwLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI0Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvYXgyMTAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MjU6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGNmZy9iei5vIGNmZy9zYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yNi1pd2x3aWZpLSQoQ09ORklHX0lXTE1MRCkgKz0gY2ZnL2J6Lm8gY2ZnL3NjLm8gY2ZnL2RyLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTI3LSMgUkYgY29uZmlndXJhdGlvbnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI4Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvcmYtamYubyBjZmcvcmYtaHIubyBjZmcvcmYtZ2Yub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMjktaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICs9IGNmZy9yZi1mbS5vIGNmZy9yZi13aC5vIGNmZy9yZi1wZS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM2PWl3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L3JlZ3VsYXRvcnkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzc6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTM4LWl3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBmdy9zbWVtLm8gZncvaW5pdC5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19JV0xEVk0pXFx0Kz0gZHZtL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NTA6b2JqLSQoQ09ORklHX0lXTE1WTSlcXHQrPSBtdm0vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01MS1vYmotJChDT05GSUdfSVdMTUVJKVxcdCs9IG1laS9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oPTcyNT1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgaXdsMTM1X2Jnbl9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgtNzI2LSNlbmRpZiAvKiBDT05GSUdfSVdMRFZNICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmg6NzI3OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgtNzI4LWV4dGVybiBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyBpd2w3MjYwX2NmZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oPTc0Mz1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgaXdsX3JmX2dmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTc0NC0jZGVmaW5lIGl3bF9yZl9vdCBpd2xfcmZfaHJfODBtaHpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo3NDU6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC03NDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZToyOm9iai0kKENPTkZJR19JV0xNVk0pICAgKz0gaXdsbXZtLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSB0ZXN0cy9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0zND1WSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXdsX2h3X2NhcmRfaWRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoyMjQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMjI1LS8qIDcyNjAgU2VyaWVzICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtNTAyLVxcdHtJV0xfUENJX0RFVklDRSgweDdFNDAsIFBDSV9BTllfSUQsIGl3bF9tYV9tYWNfY2ZnKX0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjUwMzojZW5kaWYgLyogQ09ORklHX0lXTE1WTSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo1MDQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSkgfHwgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01MDUtLyogQnogZGV2aWNlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1MC1cXHR7SVdMX1BDSV9ERVZJQ0UoMHhEMjQwLCBQQ0lfQU5ZX0lELCBpd2xfc2NfbWFjX2NmZyl9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo1NTE6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gfHwgQ09ORklHX0lXTE1MRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9NTkzPVZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCBjb25zdCBzdHJ1Y3QgaXdsX2Rldl9pbmZvIGl3bF9kZXZfaW5mb190YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTc5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6ODAwOiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTgwMS0vKiA3MjYwIFNlcmllcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEwNDItXFx0XFx0ICAgICBERVZJQ0UoMHgyNzIzKSwgU1VCREVWKDB4MTY1NCkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMDQzOiNlbmRpZiAvKiBDT05GSUdfSVdMTVZNICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEwNDQtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjMyPWludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MzE3OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYz0yNjg9c3RhdGljIHZvaWQgZGV2aW5mb19wY2lfaWRzX2NvbmZpZyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYy0yNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9kZXZpbmZvLmM6Mjc3OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pIHx8IElTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYy0yNzgtXFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MTUuMTI2NjE0Mjg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDY2MzEyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJV0xNVk0gQ29uZmlndXJhdGlvbiBhbmQgUnggRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBJV0xNVk1gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgZnVuY3Rpb24uIFRoaXMgc2VlbXMgdG8gYmUgdGhlIHRhcmdldCBvZiBhIG1vZGlmaWNhdGlvbiwgc28gSSBuZWVkIHRvIGFzc2VzcyBpdHMgcmVhY2hhYmlsaXR5IGFuZCBmdW5jdGlvbi4gTGV0IG1lIGNoZWNrIGl0cyBkZWZpbml0aW9uIGZpcnN0LiBJdCdzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNgLiBSaWdodCwgc28gdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBSWCAocmVjZWl2ZSkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcidzIE1WTSAobXVsdGktdmlydHVhbCBtYWNoaW5lKSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0aGlzIG5vdGlmaWNhdGlvbiBpcyB0cmlnZ2VyZWQgYW5kIHdoYXQgdGhlIHN0YXR1cyBpdCdzIHJlZmVycmluZyB0by4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSB0aGlzIG5vdGlmaWNhdGlvbiBjYXJyaWVzIGFuZCBob3cgdGhlIE1WTSBoYW5kbGVzIHRoZSBkYXRhLiBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NTEsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjoxOC43MzMyNDgxNjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3Mzc4NzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg9MTkzNj12b2lkIGl3bF9tdm1fc3RhX3BtX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaDoxOTM3OnZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMTkzOC1cXHRcXHRcXHRcXHQgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MzE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXdsX3J4X2hhbmRsZXJzIGl3bF9tdm1fcnhfaGFuZGxlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTM0OC1cXHRSWF9IQU5ETEVSKEJBX1dJTkRPV19TVEFUVVNfTk9USUZJQ0FUSU9OX0lELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jOjM0OTpcXHRcXHQgICBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYsIFJYX0hBTkRMRVJfU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zNTAtXFx0XFx0ICAgc3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM9MTE5Mj12b2lkIGl3bF9tdm1fcnhfc3RhdGlzdGljcyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTE5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjExOTc6dm9pZCBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jLTExOTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMjQ0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjEyNDU6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmM9MTQ9c3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmMtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jOjUxOlxcdGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihtdm0sIFxcdTAwMjZyeGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL3dpbmRvdy1zdGF0dXMuYy01Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MTguNzkwNjMyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDc3NzE3NDMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbiBmb3IgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZnVuY3Rpb24gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaXMgYW4gUlggaGFuZGxlciB0cmlnZ2VyZWQgYnkgYSBub3RpZmljYXRpb24gZnJvbSB0aGUgSW50ZWwgV2ktRmkgZmlybXdhcmUuIEJlaW5nIGFuIGl3bHdpZmkgZHJpdmVyLCBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHRoZSBjaGFsbGVuZ2VzIG9mIGZ1enppbmcgaXQgc2luY2UgaXQncyBoYXJkd2FyZS1kZXBlbmRlbnQuIEdlbmVyYWxseSwgeW91IG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZSBvciBhIGdvb2QgZW11bGF0aW9uLiBNYWM4MDIxMV9od3NpbSBpcyBvZnRlbiB0aGUgZ28tdG8gZm9yIG1hYzgwMjExLCBidXQgaXdsd2lmaSBpcyBhIGZ1bGwgTUFDIGRyaXZlciwgZXZlbiB0aG91Z2ggaXdsd2lmaS1tdm0gdXNlcyBtYWM4MDIxMSBvbiB0b3Agb2YgdGhlIEludGVsIGZpcm13YXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgY2FuIHRoaXMgYmUgZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuU3l6a2FsbGVyIGRvZXMgaGF2ZSBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgZXRjLiwgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBtYWM4MDIxMS4gQW5kIHRoaXMgZHJpdmVyIGlzIGEgUENJIGRyaXZlci4gRG9lcyBzeXprYWxsZXIgZnV6eiBQQ0k/IEFoLCB5ZXMsIGl0IGhhcyBQQ0kgZnV6emluZyB2aWEgdmZpby9wY2ksIGdvb2QuIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSBLVW5pdCB0ZXN0IGBpd2xtdm0td2luZG93LXN0YXR1c2AuIE5vdywgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQsIEkgbmVlZCB0byBldmFsdWF0ZSBpZiB0aGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuTm93LCBpd2x3aWZpIHdvbid0IGJpbmQgdG8gYW55dGhpbmcgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwIHdpdGhvdXQgYW4gZW11bGF0ZWQgSW50ZWwgd2lmaSBkZXZpY2UuIFNvLCB0aGUgUlggaGFuZGxlcnMgd29uJ3QgYmUgZXhlY3V0ZWQsIGV4Y2VwdCBmb3IgdGhlIG5ldyBLVW5pdCB0ZXN0LiBCdXQgS1VuaXQgdGVzdHMgYXJlbid0IHRyYWRpdGlvbmFsbHkgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgY291bGQgdGhlIFBDSSBmdXp6ZXIgcHJvYmUgaXdsd2lmaSBhbmQgdHJpZ2dlciBmaXJtd2FyZSByZXNwb25zZXM/XG5cblRoZSBQQ0kgZnV6emVyIHVzZXMgbWVtb3J5LW1hcHBlZCBJL08gYW5kIERNQSByZXNwb25zZXMuIEl0IGlzICp0aGVvcmV0aWNhbGx5KiBwb3NzaWJsZSB0byBmdXp6IHRoZSBSWCBwYXRoIGlmIHRoZSBkcml2ZXIgc2V0cyB1cCBETUEgYW5kIHRoZSBmdXp6ZXIgY2FuIHBvcHVsYXRlIHRoZSBETUEgcmluZyB3aXRoIGEgY3JhZnRlZCBSWCBwYWNrZXQsIHdoaWNoIGlzIGluZGVlZCB3aGF0IHN5emthbGxlcidzIFBDSSBmdXp6ZXIgdHJpZXMgdG8gZG8uIFNvIHRoZSBxdWVzdGlvbiBpczogY2FuIHdlIHJlYWNoIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIHZpYSBQQ0kgZnV6emluZz8gSSdkIGhhdmUgdG8gc2F5IHllcy4gVGhlIGZ1enplciBwcm9iZXMgdGhlIGRyaXZlciwgYW5kIHdoaWxlIGl0IG1pZ2h0IG5vdCBzZW5kIGEgY29tcGxldGVseSB2YWxpZCBgQkFfV0lORE9XX1NUQVRVU19OT1RJRklDQVRJT05fSURgIHBhY2tldCwgaXQgKmNhbiogc2VuZCByYW5kb20gZGF0YSwgYW5kIHRodXMgbGlrZWx5IHRyaWdnZXIgc29tZSBwYXJ0IG9mIHRoZSBSWCBwYXRoLlxuXG5Pa2F5LCBub3cgbGV0J3MgZ28gYmFjayB0byB0aGUgcHJvbXB0LCBJIGhhdmUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBhbmQgaWYgaXQgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMuIElzIGBpd2x3aWZpYCByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nPyBZZXMhXG5cbkkgY2FuIG1hcmsgdGhpcyBhcyBXb3J0aEZ1enppbmc9dHJ1ZSB3aXRoIGBJV0xNVk1gIGFzIHRoZSBjb25maWcgYW5kIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGFzIHRoZSBmb2N1cyBzeW1ib2wuIEknbGwgbmVlZCBgSVdMV0lGSWAgYW5kIGBJV0xNVk1gIGFzIGNvbmZpZ3MuIGBJV0xXSUZJX0tVTklUX1RFU1RTYCBpcyAqbm90KiBuZWVkZWQsIGJlY2F1c2UgdGhlIGNyaXRpY2FsIHBhcnQgaXMgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgd2hpY2ggaXMgY29tcGlsZWQgd2l0aCBgSVdMTVZNYCwgYW5kIHdoaWNoIGlzIHJlYWNoYWJsZSBieSBzeXprYWxsZXIncyBQQ0kgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzA2LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjozMy41Njc4MDkyNjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTcxNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM9MTE5Mj12b2lkIGl3bF9tdm1fcnhfc3RhdGlzdGljcyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTE5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjExOTc6dm9pZCBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jLTExOTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMjQ0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjEyNDU6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjMzLjYyNjM4NTg3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Nzk3NDIxMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgKipcblxuT2theSwgc28gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBkcml2ZXIuIElmIEkgaW5jbHVkZSBgSVdMTVZNYCwgdGhpcyBjb2RlICp3aWxsKiBiZSBjb21waWxlZC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBZZXMsIGFic29sdXRlbHkhIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgYSBib3VuZHMgY2hlY2sg4oCTIGluIGEgbmV0d29yayBkcml2ZXIncyBSWCBwYXRoLCB3aGljaCBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS5cblxuRXZlbiB0aG91Z2ggaXQncyBhIGhhcmR3YXJlIGRyaXZlciwgc3l6a2FsbGVyIGhhcyBvcHRpb25zLiBUaGUgUENJIGZ1enplciBvciB3aWZpIGluamVjdGlvbiBhcmUgcG90ZW50aWFsIGF2ZW51ZXMsIGFuZCBpdCAqbWlnaHQqIGV2ZW4gYmUgY292ZXJlZCBieSBhIEtVbml0IHRlc3QgKGV2ZW4gaWYgc3l6a2FsbGVyIGRvZXNuJ3QgZnV6eiBLVW5pdCBkaXJlY3RseSwgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBhIHZhbGlkIHRhcmdldCBmb3IgZnV6emluZykuIEFoLCB3YWl0LCBjYW4gc3l6a2FsbGVyIGZ1enogS1VuaXQ/IE5vLCBub3QgZGlyZWN0bHksIGJ1dCBpdCBjYW4gZnV6eiB0aGUgZHJpdmVyICpmdW5jdGlvbiouXG5cbk5vdywgdGhlIEtVbml0IHRlc3QuLi4gSWYgdGhhdCB0ZXN0IGlzIGJ1aWx0LCB3aWxsIGl0IHJ1biBkdXJpbmcgYm9vdD8gWWVzLCBpZiBLVW5pdCBpcyBlbmFibGVkIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXMgbG9hZGVkLiBCdXQgZnV6emluZyB3aWxsIGZvY3VzIGRpcmVjdGx5IG9uIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW55d2F5LlxuXG5TbywgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgdGFyZ2V0IGZ1bmN0aW9uIGlzIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2lsbCBiZSBgSVdMTVZNYCBhbmQgYElXTFdJRklgLlxuXG5CdXQgd2FpdC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gUUVNVS4gSXMgdGhlIGl3bHdpZmkgUlggcGF0aCByZWFjaGFibGUgaW4gUUVNVT8gV2l0aG91dCBhIHZpcnR1YWwgaXdsd2lmaSBkZXZpY2UsIHRoZSBQQ0kgZHJpdmVyIHByb2JlIHdpbGwgZmFpbCwgYW5kIHRoZSBSWCBpbnRlcnJ1cHQvTkFQSSB3aWxsIG5ldmVyIGJlIHJlZ2lzdGVyZWQgb3IgdHJpZ2dlcmVkLlxuXG5BaCwgYnV0IHN5emthbGxlcidzIFBDSSBmdXp6ZXIgKGBzeXpfcGNpX3NldHVwYCkgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIEl0IGludGVyY2VwdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy9QSU8vRE1BIHRocm91Z2ggYSB2aXJ0dWFsIFBDSSBkZXZpY2UgaW4gUUVNVSAodXNpbmcgYSBjdXN0b20gUUVNVSBkZXZpY2Ugb3IgdmZpbykuICBzeXprYWxsZXIncyBgc3l6X3BjaV8qYCBwc2V1ZG8tc3lzY2FsbHMgYWxsb3cgaW5qZWN0aW5nIFBDSSBkZXZpY2VzLCBzbyBpd2x3aWZpIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmchIFRoZXJlZm9yZSwgSSAqc2hvdWxkKiBwcm92aWRlIGBJV0xNVk1gIGFuZCBgSVdMV0lGSWAuXG5cbkxldCBtZSBkb3VibGUgY2hlY2sgdGhhdCBgSVdMV0lGSWAgaXMgcmVxdWlyZWQuIFllcywgYElXTE1WTWAgZGVwZW5kcyBvbiBgSVdMV0lGSWAuIEknbGwgcmV2aWV3IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgIHRvIGJlIHN1cmUsIGJ1dCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6NDMuNDIzODA5MDY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTg3MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMTVZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjQzLjQ4MzY4NDU1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTg2NjIyMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgc3BlY2lmaWNhbGx5IGl3bHdpZmkgZHJpdmVyczpcblxuKipBbmFseXppbmcgaXdsd2lmaSBLY29uZmlnIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYCBmaWxlLCBmb2N1c2luZyBhcm91bmQgbGluZSA3NC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB1c3VhbGx5IHJlc2lkZXMgcmVnYXJkaW5nIGZlYXR1cmUgZW5hYmxlbWVudCwgaGFyZHdhcmUgc3VwcG9ydCwgYW5kIGFueSByZWxhdGVkIG9wdGlvbnMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3Agd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIG1ldCBhcyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhlIGl3bHdpZmkgbW9kdWxlIHRvIGNvbXBpbGUgYW5kIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gYSBsYXJnZXIga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBvdGhlciBkcml2ZXIgcmVxdWlyZW1lbnRzLCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zdHJhaW50cywgb3IgcGVyaGFwcyBldmVuIG90aGVyIEtjb25maWcgc3ltYm9scyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgb24gYmVpbmcgc2V0LiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRob3NlIGRlcGVuZGVuY2llcyBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjQ3LjA3MDMwOTQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRoZSBEVk0gZmlybXdhcmUuIFRoZSBsaXN0XFxuICA3MTpcXHRcXHQgIG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA3MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgNzM6XFx0XFxuICA3NDpcXHRjb25maWcgSVdMTVZNXFxuICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG4gIDc2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgTVZNIGZpcm13YXJlLiBUaGUgbGlzdFxcbiAgODE6XFx0XFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxcbiAgODI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIElXTE1MRFxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA4NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDg3OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6NDcuMDcwMzc4MjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNDIwOTExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGNvbmZpZ3VyaW5nIGBJV0xNVk1gLiBSaWdodCwgYW5kIGEgcGF0Y2ggaXMgaW4gcGxheSB0b28sIG9uZSB0aGF0IGluY2x1ZGVzIGEgS1VuaXQgdGVzdC4gTm93LCB0aGUgcXVlc3Rpb24gaXMsICpzaG91bGQqIEkgZW5hYmxlIHRoYXQgYElXTFdJRklfS1VOSVRfVEVTVFNgIG9wdGlvbj8gTmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgb2YgY291cnNlLiBCZXN0IHRvIGNvbmZpcm0gaXRzIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBzZXR0aW5ncyB3aXRoaW4gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24uIFNvLCBvZmYgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgSSBnby4gVGhhdCdzIHdoZXJlIHRoZSBhbnN3ZXIgbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjUwLjQwNDU4OTQwMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaXdsd2lmaS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0aWYgSVdMV0lGSVxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xcbiAgNTA6XFx0XFx0dHJpc3RhdGVcXG4gIDUxOlxcdFxcdGRlcGVuZHMgb24gS1VOSVRcXG4gIDUyOlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIEVuYWJsZSB0aGlzIG9wdGlvbiBmb3IgaXdsd2lmaSBrdW5pdCB0ZXN0cy5cXG4gIDU1OlxcdFxcbiAgNTY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgSVdMV0lGSV9MRURTXFxuICA1OTpcXHRcXHRib29sXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuICA2MTpcXHRcXHRkZXBlbmRzIG9uIElXTE1WTSB8fCBJV0xEVk1cXG4gIDYyOlxcdFxcdHNlbGVjdCBMRURTX1RSSUdHRVJTXFxuICA2MzpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEU1xcbiAgNjQ6XFx0XFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjUwLjQwNDY1MjQ2MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU4NzQyODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgbW9kaWZpZXMgdGhlIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGZ1bmN0aW9uLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB5ZXMsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgYElXTFdJRklfS1VOSVRfVEVTVFNgIGFyZSBwYXJ0aWN1bGFybHkgaGVscGZ1bCBoZXJlIGJlY2F1c2UgdGhleSdsbCBkaXJlY3RseSBleGVyY2lzZSB0aGUgbW9kaWZpZWQgY29kZS4gVGhpcyBwcm92aWRlcyBhIGNsZWFuIGFuZCBhdXRvbWF0ZWQgd2F5IHRvIGVuc3VyZSB0aGUgbmV3IGJvdW5kcyBjaGVjayBmdW5jdGlvbnMgYXMgaW50ZW5kZWQuIEluY2x1ZGluZyBgSVdMV0lGSWAsIGBJV0xNVk1gLCBhbmQgYElXTFdJRklfS1VOSVRfVEVTVFNgIGluIHRoZSBjb25maWd1cmF0aW9uIGVuc3VyZXMgdGhlIHRlc3Rpbmcgd2lsbCBydW4uXG5cbkJ1dCBob2xkIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gc2NlbmFyaW9zIHRoYXQgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBOb3csIGlzIGBpd2x3aWZpYCBvbmUgb2YgdGhvc2U/IFRoYW5rZnVsbHksIEkga25vdyB0aGF0IFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyIHRoYXQgKmRvZXMqIHJlYWNoIGBpd2x3aWZpYC4gSW4gYWRkaXRpb24gdG8gdGhpcyByZWFjaGFiaWxpdHkgdmlhIGZ1enppbmcsIHRoZSBLVW5pdCB0ZXN0IHByb3ZpZGVzIGEgbW9yZSBjb250cm9sbGVkIGV4ZWN1dGlvbiBwYXRoIGZvciB0aGlzIGZ1bmN0aW9uLiBUaGlzIGNvZGUgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblNvLCBhZnRlciBjb25zaWRlcmluZyBhbGwgb2YgdGhpcywgbXkgZmluYWwgdmVyZGljdCBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiB0cnVlKipcbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ20gemVyb2luZyBpbiBvbiBgXCJpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZcImBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSdtIHJlY29tbWVuZGluZyBgW1wiSVdMV0lGSVwiLCBcIklXTE1WTVwiLCBcIklXTFdJRklfS1VOSVRfVEVTVFNcIl1gLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgZnVuY3Rpb24sIHdoaWNoIHJlc2lkZXMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBJIGtub3cgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgb3IgdGhlIG5ld2x5IGFkZGVkIEtVbml0IHRlc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDQxLCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjU3LjU2MzM5Nzg4OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTY4MzgxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xXSUZJX0tVTklUX1RFU1RTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byB0aGUgUlggaGFuZGxlciBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIG9yIHRoZSBuZXdseSBhZGRlZCBLVW5pdCB0ZXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIklXTE1WTVwiLFxuICAgIFwiSVdMV0lGSV9LVU5JVF9URVNUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 06:17:23 +0000 UTC FinishedAt: 2026-07-12 06:42:59 +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": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLWIFI_KUNIT_TESTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLWIFI_KUNIT_TESTS" ], "series_id": "a4a121ea-12ec-45a0-95bf-8acda1a7e503" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_mvm_window_status_notif" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTFdJRklfS1VOSVRfVEVTVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byB0aGUgUlggaGFuZGxlciBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIG9yIHRoZSBuZXdseSBhZGRlZCBLVW5pdCB0ZXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDliZDQ2NTRlZmU1YjNlN2NiZjNkZGNlOTUyOWVmNTQ5ZThkNzRhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXG5pbmRleCAyNjljNGI0NWRlODA3OC4uZDM3M2YwNzIzZTEzZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXG5AQCAtNyw2ICYjNDM7Nyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7aXdsLWRydi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aXdsLXRyYW5zLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDttdm0uaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Z3LWFwaS5oXCYjMzQ7XG5AQCAtMTIyNyw2ICYjNDM7MTIyOCw4IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdC8qIGdldCB0aGUgc3RhdGlvbiAqL1xuIFx0XHRzdGFfaWQgPSAocmF0aWQgXHUwMDI2IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSylcbiBcdFx0XHQgXHUwMDNlXHUwMDNlIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUztcbiYjNDM7XHRcdGlmIChzdGFfaWQgXHUwMDNlPSBtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRzdGEgPSByY3VfZGVyZWZlcmVuY2UobXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZFtzdGFfaWRdKTtcbiBcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHN0YSkpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTIzOSwzICYjNDM7MTI0Miw0IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHR9XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4mIzQzO0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGVcbmluZGV4IDIyNjdiZTRjZmI0NDE1Li5iZjIyNzUwZmNlYWZjNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZVxuQEAgLTEsMyAmIzQzOzEsMyBAQFxuLWl3bG12bS10ZXN0cy15ICYjNDM7PSBtb2R1bGUubyBoY21kLm9cbiYjNDM7aXdsbXZtLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB3aW5kb3ctc3RhdHVzLm9cbiBcbiBvYmotJChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykgJiM0Mzs9IGl3bG12bS10ZXN0cy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjA2ODA3ZTJiZGJjMTJkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcbkBAIC0wLDAgJiM0MzsxLDc3IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuJiM0MzsvKlxuJiM0MzsgKiBLVW5pdCB0ZXN0cyBmb3IgTVZNIEJBIHdpbmRvdyBzdGF0dXMgbm90aWZpY2F0aW9uIGhhbmRsaW5nXG4mIzQzOyAqL1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjaXdsLXRyYW5zLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Li4vZnctYXBpLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Li4vbXZtLmhcJiMzNDtcbiYjNDM7XG4mIzQzO01PRFVMRV9JTVBPUlRfTlMoXCYjMzQ7RVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkdcJiMzNDspO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaXdsX2JhX3dpbmRvd19zdGF0dXNfbm90aWYgbm90aWYgPSB7fTtcbiYjNDM7XHRzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgcnhiID0ge1xuJiM0MztcdFx0Ll9vZmZzZXQgPSAwLFxuJiM0MztcdFx0Ll9yeF9wYWdlX29yZGVyID0gMCxcbiYjNDM7XHR9O1xuJiM0MztcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Q7XG4mIzQzO1x0c3RydWN0IGl3bF9mdyAqZnc7XG4mIzQzO1x0c3RydWN0IGl3bF9tdm0gKm12bTtcbiYjNDM7XHR1MTYgcmF0aWQ7XG4mIzQzO1xuJiM0MztcdEJVSUxEX0JVR19PTigoSVdMX1NUQVRJT05fQ09VTlRfTUFYICYjNDM7IDEpIFx1MDAzZVxuJiM0MztcdFx0ICAgICAoQkFfV0lORE9XX1NUQVRVU19TVEFfSURfTVNLIFx1MDAzZVx1MDAzZVxuJiM0MztcdFx0ICAgICAgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKSk7XG4mIzQzO1xuJiM0MztcdG12bSA9IGt1bml0X2t6YWxsb2ModGVzdCwgc2l6ZW9mKCptdm0pLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgbXZtKTtcbiYjNDM7XG4mIzQzO1x0ZncgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqZncpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZncpO1xuJiM0MztcdGZ3LVx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zID0gSVdMX1NUQVRJT05fQ09VTlRfTUFYO1xuJiM0MztcdG12bS1cdTAwM2VmdyA9IGZ3O1xuJiM0MztcbiYjNDM7XHRyeGIuX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCByeGIuX3BhZ2UpO1xuJiM0MztcbiYjNDM7XHRyYXRpZCA9IEJBX1dJTkRPV19TVEFUVVNfVkFMSURfTVNLIHxcbiYjNDM7XHRcdChzdGFfaWQgXHUwMDNjXHUwMDNjIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUyk7XG4mIzQzO1x0bm90aWYucmFfdGlkWzBdID0gY3B1X3RvX2xlMTYocmF0aWQpO1xuJiM0MztcdG5vdGlmLm1wZHVfcnhfY291bnRbMF0gPSBjcHVfdG9fbGUxNigxKTtcbiYjNDM7XG4mIzQzO1x0cGt0ID0gcnhiX2FkZHIoXHUwMDI2cnhiKTtcbiYjNDM7XHRtZW1zZXQocGt0LCAwLCBQQUdFX1NJWkUpO1xuJiM0MztcdHBrdC1cdTAwM2VsZW5fbl9mbGFncyA9IGNwdV90b19sZTMyKHNpemVvZihwa3QtXHUwMDNlaGRyKSAmIzQzOyBzaXplb2Yobm90aWYpKTtcbiYjNDM7XHRtZW1jcHkocGt0LVx1MDAzZWRhdGEsIFx1MDAyNm5vdGlmLCBzaXplb2Yobm90aWYpKTtcbiYjNDM7XG4mIzQzO1x0aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKG12bSwgXHUwMDI2cnhiKTtcbiYjNDM7XG4mIzQzO1x0X19mcmVlX3BhZ2UocnhiLl9wYWdlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9iYV93aW5kb3dfc3RhdHVzX3N0YXRpb25faWRfYm91bmRzKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdGl3bF9tdm1fdGVzdF93aW5kb3dfc3RhdHVzKHRlc3QsIElXTF9TVEFUSU9OX0NPVU5UX01BWCAmIzQzOyAxKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24oc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0aXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXModGVzdCwgMCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSB3aW5kb3dfc3RhdHVzX2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRSh0ZXN0X2JhX3dpbmRvd19zdGF0dXNfc3RhdGlvbl9pZF9ib3VuZHMpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24pLFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSB3aW5kb3dfc3RhdHVzID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7aXdsbXZtLXdpbmRvdy1zdGF0dXNcJiMzNDssXG4mIzQzO1x0LnRlc3RfY2FzZXMgPSB3aW5kb3dfc3RhdHVzX2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZSh3aW5kb3dfc3RhdHVzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xXSUZJX0tVTklUX1RFU1RTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDliZDQ2NTRlZmU1YjNlN2NiZjNkZGNlOTUyOWVmNTQ5ZThkNzRhMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMKaW5kZXggMjY5YzRiNDVkZTgwNzguLmQzNzNmMDcyM2UxM2QzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMKQEAgLTcsNiAmIzQzOzcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3VuYWxpZ25lZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aGVyZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDtpd2wtZHJ2LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtpd2wtdHJhbnMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O212bS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZnctYXBpLmgmIzM0OwpAQCAtMTIyNyw2ICYjNDM7MTIyOCw4IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJCS8qIGdldCB0aGUgc3RhdGlvbiAqLwogCQlzdGFfaWQgPSAocmF0aWQgJmFtcDsgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfTVNLKQogCQkJICZndDsmZ3Q7IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUzsKJiM0MzsJCWlmIChzdGFfaWQgJmd0Oz0gbXZtLSZndDtmdy0mZ3Q7dWNvZGVfY2FwYS5udW1fc3RhdGlvbnMpCiYjNDM7CQkJY29udGludWU7CiAJCXN0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tJmd0O2Z3X2lkX3RvX21hY19pZFtzdGFfaWRdKTsKIAkJaWYgKElTX0VSUl9PUl9OVUxMKHN0YSkpCiAJCQljb250aW51ZTsKQEAgLTEyMzksMyAmIzQzOzEyNDIsNCBAQCB2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLAogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGUKaW5kZXggMjI2N2JlNGNmYjQ0MTUuLmJmMjI3NTBmY2VhZmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZQpAQCAtMSwzICYjNDM7MSwzIEBACi1pd2xtdm0tdGVzdHMteSAmIzQzOz0gbW9kdWxlLm8gaGNtZC5vCiYjNDM7aXdsbXZtLXRlc3RzLXkgJiM0Mzs9IG1vZHVsZS5vIGhjbWQubyB3aW5kb3ctc3RhdHVzLm8KIAogb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICYjNDM7PSBpd2xtdm0tdGVzdHMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wNjgwN2UyYmRiYzEyZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL3dpbmRvdy1zdGF0dXMuYwpAQCAtMCwwICYjNDM7MSw3NyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQomIzQzOy8qCiYjNDM7ICogS1VuaXQgdGVzdHMgZm9yIE1WTSBCQSB3aW5kb3cgc3RhdHVzIG5vdGlmaWNhdGlvbiBoYW5kbGluZwomIzQzOyAqLwomIzQzOyNpbmNsdWRlICZsdDtrdW5pdC90ZXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21tLmgmZ3Q7CiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2l3bC10cmFucy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4vZnctYXBpLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4vbXZtLmgmIzM0OwomIzQzOwomIzQzO01PRFVMRV9JTVBPUlRfTlMoJiMzNDtFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElORyYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyhzdHJ1Y3Qga3VuaXQgKnRlc3QsIHU4IHN0YV9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpd2xfYmFfd2luZG93X3N0YXR1c19ub3RpZiBub3RpZiA9IHt9OwomIzQzOwlzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgcnhiID0gewomIzQzOwkJLl9vZmZzZXQgPSAwLAomIzQzOwkJLl9yeF9wYWdlX29yZGVyID0gMCwKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdDsKJiM0MzsJc3RydWN0IGl3bF9mdyAqZnc7CiYjNDM7CXN0cnVjdCBpd2xfbXZtICptdm07CiYjNDM7CXUxNiByYXRpZDsKJiM0MzsKJiM0MzsJQlVJTERfQlVHX09OKChJV0xfU1RBVElPTl9DT1VOVF9NQVggJiM0MzsgMSkgJmd0OwomIzQzOwkJICAgICAoQkFfV0lORE9XX1NUQVRVU19TVEFfSURfTVNLICZndDsmZ3Q7CiYjNDM7CQkgICAgICBCQV9XSU5ET1dfU1RBVFVTX1NUQV9JRF9QT1MpKTsKJiM0MzsKJiM0MzsJbXZtID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2YoKm12bSksIEdGUF9LRVJORUwpOwomIzQzOwlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgbXZtKTsKJiM0MzsKJiM0MzsJZncgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqZncpLCBHRlBfS0VSTkVMKTsKJiM0MzsJS1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGZ3KTsKJiM0MzsJZnctJmd0O3Vjb2RlX2NhcGEubnVtX3N0YXRpb25zID0gSVdMX1NUQVRJT05fQ09VTlRfTUFYOwomIzQzOwltdm0tJmd0O2Z3ID0gZnc7CiYjNDM7CiYjNDM7CXJ4Yi5fcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7CiYjNDM7CUtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCByeGIuX3BhZ2UpOwomIzQzOwomIzQzOwlyYXRpZCA9IEJBX1dJTkRPV19TVEFUVVNfVkFMSURfTVNLIHwKJiM0MzsJCShzdGFfaWQgJmx0OyZsdDsgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKTsKJiM0MzsJbm90aWYucmFfdGlkWzBdID0gY3B1X3RvX2xlMTYocmF0aWQpOwomIzQzOwlub3RpZi5tcGR1X3J4X2NvdW50WzBdID0gY3B1X3RvX2xlMTYoMSk7CiYjNDM7CiYjNDM7CXBrdCA9IHJ4Yl9hZGRyKCZhbXA7cnhiKTsKJiM0MzsJbWVtc2V0KHBrdCwgMCwgUEFHRV9TSVpFKTsKJiM0MzsJcGt0LSZndDtsZW5fbl9mbGFncyA9IGNwdV90b19sZTMyKHNpemVvZihwa3QtJmd0O2hkcikgJiM0Mzsgc2l6ZW9mKG5vdGlmKSk7CiYjNDM7CW1lbWNweShwa3QtJmd0O2RhdGEsICZhbXA7bm90aWYsIHNpemVvZihub3RpZikpOwomIzQzOwomIzQzOwlpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYobXZtLCAmYW1wO3J4Yik7CiYjNDM7CiYjNDM7CV9fZnJlZV9wYWdlKHJ4Yi5fcGFnZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiYjNDM7ewomIzQzOwlpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyh0ZXN0LCBJV0xfU1RBVElPTl9DT1VOVF9NQVggJiM0MzsgMSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CWl3bF9tdm1fdGVzdF93aW5kb3dfc3RhdHVzKHRlc3QsIDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2Ugd2luZG93X3N0YXR1c19jYXNlc1tdID0gewomIzQzOwlLVU5JVF9DQVNFKHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24pLAomIzQzOwl7fSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgd2luZG93X3N0YXR1cyA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O2l3bG12bS13aW5kb3ctc3RhdHVzJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gd2luZG93X3N0YXR1c19jYXNlcywKJiM0Mzt9OwomIzQzOwomIzQzO2t1bml0X3Rlc3Rfc3VpdGUod2luZG93X3N0YXR1cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSB0aGF0JiMzOTtzIGFkZGluZyBhIGJvdW5kcyBjaGVjayBpbiBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguY2AuICBHb29kLCB3ZSYjMzk7cmUgYWltaW5nIGZvciByb2J1c3RuZXNzLCBhbHdheXMgYSBwb3NpdGl2ZSBzaWduLiBUaGV5JiMzOTt2ZSBhbHNvIGluY2x1ZGVkIGEgS1VuaXQgdGVzdCwgd2hpY2ggaXMgd2hhdCBJIGxpa2UgdG8gc2VlIC0gbWFrZXMgdmVyaWZpY2F0aW9uIG11Y2ggc2ltcGxlci4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGluIHRoZSBDIGNvZGUuIEkgc2VlIHRoZXkgYXJlIGFkZGluZyBhIGNoZWNrOgoKYGBgYwomIzQzOwkJaWYgKHN0YV9pZCAmZ3Q7PSBtdm0tJmd0O2Z3LSZndDt1Y29kZV9jYXBhLm51bV9zdGF0aW9ucykKJiM0MzsJCQljb250aW51ZTsKYGBgCgpSaWdodCwgdGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIFRoZSBjb2RlIGV4dHJhY3RzIGEgYHN0YV9pZGAgZnJvbSBgcmF0aWRgLCBhbmQgYmVmb3JlIGRlcmVmZXJlbmNpbmcgYG12bS0mZ3Q7ZndfaWRfdG9fbWFjX2lkW3N0YV9pZF1gIHRoZXkmIzM5O3JlIHZlcmlmeWluZyB0aGF0IGBzdGFfaWRgIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2Ugb2Ygc3RhdGlvbiBJRHMgc3VwcG9ydGVkIGJ5IHRoZSBmaXJtd2FyZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgd2hpY2ggaXMgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlLiBDbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZXhjZWxsZW50LiBJZiB0aGUgSUQgaXMgaW52YWxpZCwgaXQgc2tpcHMgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBNYWtlcyBzZW5zZS4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgcHJldmVudGluZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBOb3cgSSB3YW50IHRvIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGBpd2x3aWZpL212bWAgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGNvZGUgaXMgYWN0aXZlLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IGl0IHR1cm5zIHVwIGZvciBgaXdsd2lmaS9tdm1gIGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb25maWd1cmF0aW9uIGNvbnRleHQgSSBuZWVkIHRvIGZ1bGx5IGFzc2VzcyB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xXSUZJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIExvY2F0aW9uIENoZWNrKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHdpcmVsZXNzIGRyaXZlciBpbnZlc3RpZ2F0aW9uLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhhdCBLY29uZmlnIGZpbGUgZXhpc3RzIHdoZXJlIEkgZXhwZWN0IGl0IHRvIGJlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayB1bmRlciB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBJbnRlbCBpd2x3aWZpIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgS2NvbmZpZ2AgaXMgYWN0dWFsbHkgcHJlc2VudCB0aGVyZTsgaXQmIzM5O3MgdGhlIHVzdWFsIHN1c3BlY3QgZm9yIGFueSBkcml2ZXImIzM5O3MgYnVpbGQtdGltZSBvcHRpb25zLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIHdpdGhvdXQgdGhhdCBrZXkgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTM0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgaXdsd2lmaSBLY29uZmlnIGZvciBNVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTVZNIChNdWx0aS1WaXJ0dWFsIE1hY2hpbmUpIHN1cHBvcnQgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2x3aWZpYC4gVGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBLY29uZmlnIGZpbGUsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIFNvLCBsZXQmIzM5O3MgaGVhZCBzdHJhaWdodCBvdmVyIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb25zIG9yIGF0IGxlYXN0IHJlZmVyZW5jZXMgdG8gdGhlbSwgd2hpY2ggd2lsbCB0ZWxsIG1lIGhvdyBNVk0gc3VwcG9ydCBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQgcmVsYXRlZCBmZWF0dXJlcyBhcmUgY29udHJvbGxlZC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnl0aGluZyB3aXRoICYjMzQ7TVZNLCYjMzQ7ICYjMzQ7dmlydHVhbCBtYWNoaW5lLCYjMzQ7IG9yIHBlcmhhcHMgZXZlbiBtb3JlIGdlbmVyaWMgdGVybXMgcmVsYXRlZCB0byB2aXJ0dWFsaXphdGlvbiBvciBtdWx0aXBsZSBCU1NJRHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjE2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gKipIdW50aW5nIERvd24gdGhlIGBtdm1gIEtjb25maWcqKgoKV2hlcmUgdGhlIGhlY2sgaXMgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGBtdm1gIG1vZHVsZT8gSSBjb3VsZCBoYXZlIHN3b3JuIEkgc2F3IGl0IGluIHRoZSBwYXN0Li4uIFJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgYnkgbWV0aG9kaWNhbGx5IGNoZWNraW5nIHRoZSBsaWtlbHkgcGxhY2VzLiBUaGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvYCBkaXJlY3RvcnkgaXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiB0aGF0IHNlYXJjaC4gR2l2ZW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUga2VybmVsLCB0aGUgS2NvbmZpZyBmb3IgYW55IHNwZWNpZmljIGRyaXZlciBzaG91bGQgcmVzaWRlIHdpdGhpbiB0aGF0IGRyaXZlciYjMzk7cyBzb3VyY2UgdHJlZSBhbmQgaXRzIHN1YmRpcmVjdG9yaWVzLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSYjMzk7bSByZWFzb25hYmx5IGNvbmZpZGVudCBpdCB3aWxsIGJlIG5lc3RlZCBkb3duIHRoZXJlIHNvbWV3aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtpd2wtYWduLWh3LmgmIzM0OywKICAgICYjMzQ7aXdsLWNvbmZpZy5oJiMzNDssCiAgICAmIzM0O2l3bC1jc3IuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5jJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmgmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmMmIzM0OywKICAgICYjMzQ7aXdsLWRlYnVnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWRhdGEuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtaXdsd2lmaS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1tc2cuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtdWNvZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRydi5oJiMzNDssCiAgICAmIzM0O2l3bC1maC5oJiMzNDssCiAgICAmIzM0O2l3bC1pby5jJiMzNDssCiAgICAmIzM0O2l3bC1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1tb2RwYXJhbXMuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmgmIzM0OywKICAgICYjMzQ7aXdsLW9wLW1vZGUuaCYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmMmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5oJiMzNDssCiAgICAmIzM0O2l3bC1wcnBoLmgmIzM0OywKICAgICYjMzQ7aXdsLXNjZC5oJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5jJiMzNDssCiAgICAmIzM0O2l3bC10cmFucy5oJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC11dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2NmZyYjMzQ7LAogICAgJiMzNDtkdm0mIzM0OywKICAgICYjMzQ7ZncmIzM0OywKICAgICYjMzQ7bWVpJiMzNDssCiAgICAmIzM0O21sZCYjMzQ7LAogICAgJiMzNDttdm0mIzM0OywKICAgICYjMzQ7cGNpZSYjMzQ7LAogICAgJiMzNDt0ZXN0cyYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJV0xNVk0gQ29tcGlsYXRpb24gT3B0aW9ucyoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYElXTE1WTWAgaXMgaGFuZGxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgc3RydWN0dXJlLCBteSBmaXJzdCBpbnN0aW5jdHMgYXJlIHRvIGRpdmUgaW50byB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgdXN1YWwgc3VzcGVjdHMgZm9yIHRoaXMga2luZCBvZiB0aGluZyBhcmUgZWl0aGVyIHRoZSBgTWFrZWZpbGVgIG9yIHRoZSBgS2NvbmZpZ2AgZmlsZXMgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGUgYGl3bHdpZmlgIGRyaXZlciwgYW5kIG1vcmUgc3BlY2lmaWNhbGx5LCB0aGUgTVZNIHN1Yi1tb2R1bGUsIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vTWFrZWZpbGVgIG9yIHBlcmhhcHMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIFRob3NlIGFyZSB0eXBpY2FsbHkgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljIGFuZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciBmZWF0dXJlcyBsaWtlIGBJV0xNVk1gIGFyZSBkZWZpbmVkLiBGcm9tIHRoZXJlIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBpZiB0aGUgZmVhdHVyZSBpcyBtb2R1bGFyLCBhbmQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBvciBleHRlcm5hbCBtb2R1bGVzLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lXTE1WTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz01OD1jb25maWcgSVdMV0lGSV9MRURTXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYwLVx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYxOlx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjItXHRzZWxlY3QgTEVEU19UUklHR0VSU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9OTU9Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTctXHRkZWZhdWx0IHkgaWYgSVdMRFZNPW1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5ODpcdGRlZmF1bHQgeSBpZiBJV0xNVk09bVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk5LVx0ZGVmYXVsdCB5IGlmIElXTE1MRD1tXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDI6Y29tbWVudCBcJiMzNDtXQVJOSU5HOiBpd2x3aWZpIGlzIHVzZWxlc3Mgd2l0aG91dCBJV0xEVk0gb3IgSVdMTVZNIG9yIElXTE1MRFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwMzpcdGRlcGVuZHMgb24gSVdMRFZNPW4gXHUwMDI2XHUwMDI2IElXTE1WTT1uIFx1MDAyNlx1MDAyNiBJV0xNTEQ9blxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTIwPWl3bHdpZmktJChDT05GSUdfSVdMRFZNKSAmIzQzOz0gY2ZnLzUwMDAubyBjZmcvNjAwMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjIxOml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnLzcwMDAubyBjZmcvODAwMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTIyLSMgTUFDIGNvbmZpZ3VyYXRpb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjIzOml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnLzkwMDAubyBjZmcvMjIwMDAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZToyNDppd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGNmZy9heDIxMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI1Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnL2J6Lm8gY2ZnL3NjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMjYtaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBjZmcvYnoubyBjZmcvc2MubyBjZmcvZHIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yNy0jIFJGIGNvbmZpZ3VyYXRpb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI4Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnL3JmLWpmLm8gY2ZnL3JmLWhyLm8gY2ZnL3JmLWdmLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMjktaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBjZmcvcmYtZm0ubyBjZmcvcmYtd2gubyBjZmcvcmYtcGUub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9MzY9aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9yZWd1bGF0b3J5Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzc6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICYjNDM7PSBmdy9wYWdpbmcubyBmdy9zbWVtLm8gZncvaW5pdC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTM4LWl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gZncvc21lbS5vIGZ3L2luaXQub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX0lXTERWTSlcdCYjNDM7PSBkdm0vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19JV0xNVk0pXHQmIzQzOz0gbXZtL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01MS1vYmotJChDT05GSUdfSVdMTUVJKVx0JiM0Mzs9IG1laS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaD03MjU9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnIGl3bDEzNV9iZ25fY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgtNzI2LSNlbmRpZiAvKiBDT05GSUdfSVdMRFZNICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo3Mjc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTcyOC1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgaXdsNzI2MF9jZmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmg9NzQzPWV4dGVybiBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyBpd2xfcmZfZ2Y7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC03NDQtI2RlZmluZSBpd2xfcmZfb3QgaXdsX3JmX2hyXzgwbWh6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo3NDU6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTc0Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0lXTE1WTSkgICAmIzQzOz0gaXdsbXZtLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICYjNDM7PSB0ZXN0cy9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MzQ9VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGl3bF9od19jYXJkX2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0yMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MjI0OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMjI1LS8qIDcyNjAgU2VyaWVzICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTUwMi1cdHtJV0xfUENJX0RFVklDRSgweDdFNDAsIFBDSV9BTllfSUQsIGl3bF9tYV9tYWNfY2ZnKX0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6NTAzOiNlbmRpZiAvKiBDT05GSUdfSVdMTVZNICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6NTA0OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pIHx8IElTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01MDUtLyogQnogZGV2aWNlcyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01NTAtXHR7SVdMX1BDSV9ERVZJQ0UoMHhEMjQwLCBQQ0lfQU5ZX0lELCBpd2xfc2NfbWFjX2NmZyl9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjU1MTojZW5kaWYgLyogQ09ORklHX0lXTE1WTSB8fCBDT05GSUdfSVdMTUxEICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtNTUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz01OTM9VklTSUJMRV9JRl9JV0xXSUZJX0tVTklUIGNvbnN0IHN0cnVjdCBpd2xfZGV2X2luZm8gaXdsX2Rldl9pbmZvX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTc5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo4MDA6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy04MDEtLyogNzI2MCBTZXJpZXMgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTA0Mi1cdFx0ICAgICBERVZJQ0UoMHgyNzIzKSwgU1VCREVWKDB4MTY1NCkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEwNDM6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMDQ0LSNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNTEQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMzI9aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQzMTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMvZGV2aW5mby5jPTI2OD1zdGF0aWMgdm9pZCBkZXZpbmZvX3BjaV9pZHNfY29uZmlnKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYy0yNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYzoyNzc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSkgfHwgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9kZXZpbmZvLmMtMjc4LVx0XHQvKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjUxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJV0xNVk0gQ29uZmlndXJhdGlvbiBhbmQgUnggRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgSVdMTVZNYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBmdW5jdGlvbi4gVGhpcyBzZWVtcyB0byBiZSB0aGUgdGFyZ2V0IG9mIGEgbW9kaWZpY2F0aW9uLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgYW5kIGZ1bmN0aW9uLiBMZXQgbWUgY2hlY2sgaXRzIGRlZmluaXRpb24gZmlyc3QuIEl0JiMzOTtzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNgLiBSaWdodCwgc28gdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBSWCAocmVjZWl2ZSkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciYjMzk7cyBNVk0gKG11bHRpLXZpcnR1YWwgbWFjaGluZSkgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoaXMgbm90aWZpY2F0aW9uIGlzIHRyaWdnZXJlZCBhbmQgd2hhdCB0aGUgc3RhdHVzIGl0JiMzOTtzIHJlZmVycmluZyB0by4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSB0aGlzIG5vdGlmaWNhdGlvbiBjYXJyaWVzIGFuZCBob3cgdGhlIE1WTSBoYW5kbGVzIHRoZSBkYXRhLiBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaD0xOTM2PXZvaWQgaXdsX212bV9zdGFfcG1fbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg6MTkzNzp2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMTkzOC1cdFx0XHRcdCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4Yik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MzE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXdsX3J4X2hhbmRsZXJzIGl3bF9tdm1fcnhfaGFuZGxlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zNDgtXHRSWF9IQU5ETEVSKEJBX1dJTkRPV19TVEFUVVNfTk9USUZJQ0FUSU9OX0lELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MzQ5Olx0XHQgICBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYsIFJYX0hBTkRMRVJfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTM1MC1cdFx0ICAgc3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jPTExOTI9dm9pZCBpd2xfbXZtX3J4X3N0YXRpc3RpY3Moc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYzoxMTk3OnZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jLTExOTgtXHRcdFx0XHQgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMjQ0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM6MTI0NTpFWFBPUlRfU1lNQk9MX0lGX0lXTFdJRklfS1VOSVQoaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmM9MTQ9c3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jOjUxOlx0aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKG12bSwgXHUwMDI2cnhiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL3dpbmRvdy1zdGF0dXMuYy01Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcwNgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDEwNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb24gZm9yIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZnVuY3Rpb24gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaXMgYW4gUlggaGFuZGxlciB0cmlnZ2VyZWQgYnkgYSBub3RpZmljYXRpb24gZnJvbSB0aGUgSW50ZWwgV2ktRmkgZmlybXdhcmUuIEJlaW5nIGFuIGl3bHdpZmkgZHJpdmVyLCBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHRoZSBjaGFsbGVuZ2VzIG9mIGZ1enppbmcgaXQgc2luY2UgaXQmIzM5O3MgaGFyZHdhcmUtZGVwZW5kZW50LiBHZW5lcmFsbHksIHlvdSBuZWVkIHRoZSBhY3R1YWwgaGFyZHdhcmUgb3IgYSBnb29kIGVtdWxhdGlvbi4gTWFjODAyMTFfaHdzaW0gaXMgb2Z0ZW4gdGhlIGdvLXRvIGZvciBtYWM4MDIxMSwgYnV0IGl3bHdpZmkgaXMgYSBmdWxsIE1BQyBkcml2ZXIsIGV2ZW4gdGhvdWdoIGl3bHdpZmktbXZtIHVzZXMgbWFjODAyMTEgb24gdG9wIG9mIHRoZSBJbnRlbCBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGNhbiB0aGlzIGJlIGZ1enphYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpTeXprYWxsZXIgZG9lcyBoYXZlIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBldGMuLCB1c2luZyBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhpcyBpcyBzcGVjaWZpY2FsbHkgZm9yIG1hYzgwMjExLiBBbmQgdGhpcyBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyLiBEb2VzIHN5emthbGxlciBmdXp6IFBDST8gQWgsIHllcywgaXQgaGFzIFBDSSBmdXp6aW5nIHZpYSB2ZmlvL3BjaSwgZ29vZC4gVGhlIHBhdGNoIGFsc28gYWRkcyBhIEtVbml0IHRlc3QgYGl3bG12bS13aW5kb3ctc3RhdHVzYC4gTm93LCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCwgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKTm93LCBpd2x3aWZpIHdvbiYjMzk7dCBiaW5kIHRvIGFueXRoaW5nIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCB3aXRob3V0IGFuIGVtdWxhdGVkIEludGVsIHdpZmkgZGV2aWNlLiBTbywgdGhlIFJYIGhhbmRsZXJzIHdvbiYjMzk7dCBiZSBleGVjdXRlZCwgZXhjZXB0IGZvciB0aGUgbmV3IEtVbml0IHRlc3QuIEJ1dCBLVW5pdCB0ZXN0cyBhcmVuJiMzOTt0IHRyYWRpdGlvbmFsbHkgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgY291bGQgdGhlIFBDSSBmdXp6ZXIgcHJvYmUgaXdsd2lmaSBhbmQgdHJpZ2dlciBmaXJtd2FyZSByZXNwb25zZXM/CgpUaGUgUENJIGZ1enplciB1c2VzIG1lbW9yeS1tYXBwZWQgSS9PIGFuZCBETUEgcmVzcG9uc2VzLiBJdCBpcyAqdGhlb3JldGljYWxseSogcG9zc2libGUgdG8gZnV6eiB0aGUgUlggcGF0aCBpZiB0aGUgZHJpdmVyIHNldHMgdXAgRE1BIGFuZCB0aGUgZnV6emVyIGNhbiBwb3B1bGF0ZSB0aGUgRE1BIHJpbmcgd2l0aCBhIGNyYWZ0ZWQgUlggcGFja2V0LCB3aGljaCBpcyBpbmRlZWQgd2hhdCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciB0cmllcyB0byBkby4gU28gdGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgcmVhY2ggYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgdmlhIFBDSSBmdXp6aW5nPyBJJiMzOTtkIGhhdmUgdG8gc2F5IHllcy4gVGhlIGZ1enplciBwcm9iZXMgdGhlIGRyaXZlciwgYW5kIHdoaWxlIGl0IG1pZ2h0IG5vdCBzZW5kIGEgY29tcGxldGVseSB2YWxpZCBgQkFfV0lORE9XX1NUQVRVU19OT1RJRklDQVRJT05fSURgIHBhY2tldCwgaXQgKmNhbiogc2VuZCByYW5kb20gZGF0YSwgYW5kIHRodXMgbGlrZWx5IHRyaWdnZXIgc29tZSBwYXJ0IG9mIHRoZSBSWCBwYXRoLgoKT2theSwgbm93IGxldCYjMzk7cyBnbyBiYWNrIHRvIHRoZSBwcm9tcHQsIEkgaGF2ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGFuZCBpZiBpdCBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYy4gSXMgYGl3bHdpZmlgIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmc/IFllcyEKCkkgY2FuIG1hcmsgdGhpcyBhcyBXb3J0aEZ1enppbmc9dHJ1ZSB3aXRoIGBJV0xNVk1gIGFzIHRoZSBjb25maWcgYW5kIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGFzIHRoZSBmb2N1cyBzeW1ib2wuIEkmIzM5O2xsIG5lZWQgYElXTFdJRklgIGFuZCBgSVdMTVZNYCBhcyBjb25maWdzLiBgSVdMV0lGSV9LVU5JVF9URVNUU2AgaXMgKm5vdCogbmVlZGVkLCBiZWNhdXNlIHRoZSBjcml0aWNhbCBwYXJ0IGlzIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIHdoaWNoIGlzIGNvbXBpbGVkIHdpdGggYElXTE1WTWAsIGFuZCB3aGljaCBpcyByZWFjaGFibGUgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYz0xMTkyPXZvaWQgaXdsX212bV9yeF9zdGF0aXN0aWNzKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTE5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM6MTE5Nzp2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMTk4LVx0XHRcdFx0IHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTI0NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjEyNDU6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgKioKCk9rYXksIHNvIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgZHJpdmVyLiBJZiBJIGluY2x1ZGUgYElXTE1WTWAsIHRoaXMgY29kZSAqd2lsbCogYmUgY29tcGlsZWQuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgd29ydGggZnV6emluZz8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXgg4oCTIGEgYm91bmRzIGNoZWNrIOKAkyBpbiBhIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGgsIHdoaWNoIGlzIHByaW1lIGZ1enppbmcgdGVycml0b3J5LgoKRXZlbiB0aG91Z2ggaXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIsIHN5emthbGxlciBoYXMgb3B0aW9ucy4gVGhlIFBDSSBmdXp6ZXIgb3Igd2lmaSBpbmplY3Rpb24gYXJlIHBvdGVudGlhbCBhdmVudWVzLCBhbmQgaXQgKm1pZ2h0KiBldmVuIGJlIGNvdmVyZWQgYnkgYSBLVW5pdCB0ZXN0IChldmVuIGlmIHN5emthbGxlciBkb2VzbiYjMzk7dCBmdXp6IEtVbml0IGRpcmVjdGx5LCB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIGEgdmFsaWQgdGFyZ2V0IGZvciBmdXp6aW5nKS4gQWgsIHdhaXQsIGNhbiBzeXprYWxsZXIgZnV6eiBLVW5pdD8gTm8sIG5vdCBkaXJlY3RseSwgYnV0IGl0IGNhbiBmdXp6IHRoZSBkcml2ZXIgKmZ1bmN0aW9uKi4KCk5vdywgdGhlIEtVbml0IHRlc3QuLi4gSWYgdGhhdCB0ZXN0IGlzIGJ1aWx0LCB3aWxsIGl0IHJ1biBkdXJpbmcgYm9vdD8gWWVzLCBpZiBLVW5pdCBpcyBlbmFibGVkIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXMgbG9hZGVkLiBCdXQgZnV6emluZyB3aWxsIGZvY3VzIGRpcmVjdGx5IG9uIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW55d2F5LgoKU28sIEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIHRhcmdldCBmdW5jdGlvbiBpcyBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHdpbGwgYmUgYElXTE1WTWAgYW5kIGBJV0xXSUZJYC4KCkJ1dCB3YWl0LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBRRU1VLiBJcyB0aGUgaXdsd2lmaSBSWCBwYXRoIHJlYWNoYWJsZSBpbiBRRU1VPyBXaXRob3V0IGEgdmlydHVhbCBpd2x3aWZpIGRldmljZSwgdGhlIFBDSSBkcml2ZXIgcHJvYmUgd2lsbCBmYWlsLCBhbmQgdGhlIFJYIGludGVycnVwdC9OQVBJIHdpbGwgbmV2ZXIgYmUgcmVnaXN0ZXJlZCBvciB0cmlnZ2VyZWQuCgpBaCwgYnV0IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIChgc3l6X3BjaV9zZXR1cGApIGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJdCBpbnRlcmNlcHRzIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8vUElPL0RNQSB0aHJvdWdoIGEgdmlydHVhbCBQQ0kgZGV2aWNlIGluIFFFTVUgKHVzaW5nIGEgY3VzdG9tIFFFTVUgZGV2aWNlIG9yIHZmaW8pLiAgc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpXypgIHBzZXVkby1zeXNjYWxscyBhbGxvdyBpbmplY3RpbmcgUENJIGRldmljZXMsIHNvIGl3bHdpZmkgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyEgVGhlcmVmb3JlLCBJICpzaG91bGQqIHByb3ZpZGUgYElXTE1WTWAgYW5kIGBJV0xXSUZJYC4KCkxldCBtZSBkb3VibGUgY2hlY2sgdGhhdCBgSVdMV0lGSWAgaXMgcmVxdWlyZWQuIFllcywgYElXTE1WTWAgZGVwZW5kcyBvbiBgSVdMV0lGSWAuIEkmIzM5O2xsIHJldmlldyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYCB0byBiZSBzdXJlLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NjY9Y29uZmlnIElXTERWTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTcxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHNwZWNpZmljYWxseSBpd2x3aWZpIGRyaXZlcnM6CgoqKkFuYWx5emluZyBpd2x3aWZpIEtjb25maWcgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgZmlsZSwgZm9jdXNpbmcgYXJvdW5kIGxpbmUgNzQuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgdXN1YWxseSByZXNpZGVzIHJlZ2FyZGluZyBmZWF0dXJlIGVuYWJsZW1lbnQsIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCBhbnkgcmVsYXRlZCBvcHRpb25zLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBtZXQgYXMgYSBwcmVyZXF1aXNpdGUgZm9yIHRoZSBpd2x3aWZpIG1vZHVsZSB0byBjb21waWxlIGFuZCBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aGluIGEgbGFyZ2VyIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG90aGVyIGRyaXZlciByZXF1aXJlbWVudHMsIHBsYXRmb3JtLXNwZWNpZmljIGNvbnN0cmFpbnRzLCBvciBwZXJoYXBzIGV2ZW4gb3RoZXIgS2NvbmZpZyBzeW1ib2xzIHRoYXQgdGhpcyBvbmUgZGVwZW5kcyBvbiBiZWluZyBzZXQuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3MDpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgRFZNIGZpcm13YXJlLiBUaGUgbGlzdFxuICA3MTpcdFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA3MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgSVdMTVZNXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNzc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgdGhlIE1WTSBmaXJtd2FyZS4gVGhlIGxpc3RcbiAgODE6XHRcdCAgb2YgdGhlIGRldmljZXMgdGhhdCB1c2UgdGhpcyBmaXJtd2FyZSBpcyBhdmFpbGFibGUgaGVyZTpcbiAgODI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZHJpdmVycy9pd2x3aWZpI2Zpcm13YXJlXG4gIDgzOlx0XG4gIDg0Olx0Y29uZmlnIElXTE1MRFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA4NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDg3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDg4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDg5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTU1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgY29uZmlndXJpbmcgYElXTE1WTWAuIFJpZ2h0LCBhbmQgYSBwYXRjaCBpcyBpbiBwbGF5IHRvbywgb25lIHRoYXQgaW5jbHVkZXMgYSBLVW5pdCB0ZXN0LiBOb3csIHRoZSBxdWVzdGlvbiBpcywgKnNob3VsZCogSSBlbmFibGUgdGhhdCBgSVdMV0lGSV9LVU5JVF9URVNUU2Agb3B0aW9uPyBOZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBvZiBjb3Vyc2UuIEJlc3QgdG8gY29uZmlybSBpdHMgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHNldHRpbmdzIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24uIFNvLCBvZmYgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgSSBnby4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYW5zd2VyIGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaXdsd2lmaS5cbiAgNDY6XHRcbiAgNDc6XHRpZiBJV0xXSUZJXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbiAgNTA6XHRcdHRyaXN0YXRlXG4gIDUxOlx0XHRkZXBlbmRzIG9uIEtVTklUXG4gIDUyOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBFbmFibGUgdGhpcyBvcHRpb24gZm9yIGl3bHdpZmkga3VuaXQgdGVzdHMuXG4gIDU1Olx0XG4gIDU2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIElXTFdJRklfTEVEU1xuICA1OTpcdFx0Ym9vbFxuICA2MDpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuICA2MTpcdFx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXG4gIDYyOlx0XHRzZWxlY3QgTEVEU19UUklHR0VSU1xuICA2MzpcdFx0c2VsZWN0IE1BQzgwMjExX0xFRFNcbiAgNjQ6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA0MQoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiAzMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBtb2RpZmllcyB0aGUgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgZnVuY3Rpb24sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXM6IHllcywgdGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBgSVdMV0lGSV9LVU5JVF9URVNUU2AgYXJlIHBhcnRpY3VsYXJseSBoZWxwZnVsIGhlcmUgYmVjYXVzZSB0aGV5JiMzOTtsbCBkaXJlY3RseSBleGVyY2lzZSB0aGUgbW9kaWZpZWQgY29kZS4gVGhpcyBwcm92aWRlcyBhIGNsZWFuIGFuZCBhdXRvbWF0ZWQgd2F5IHRvIGVuc3VyZSB0aGUgbmV3IGJvdW5kcyBjaGVjayBmdW5jdGlvbnMgYXMgaW50ZW5kZWQuIEluY2x1ZGluZyBgSVdMV0lGSWAsIGBJV0xNVk1gLCBhbmQgYElXTFdJRklfS1VOSVRfVEVTVFNgIGluIHRoZSBjb25maWd1cmF0aW9uIGVuc3VyZXMgdGhlIHRlc3Rpbmcgd2lsbCBydW4uCgpCdXQgaG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNjZW5hcmlvcyB0aGF0IGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gTm93LCBpcyBgaXdsd2lmaWAgb25lIG9mIHRob3NlPyBUaGFua2Z1bGx5LCBJIGtub3cgdGhhdCBTeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciB0aGF0ICpkb2VzKiByZWFjaCBgaXdsd2lmaWAuIEluIGFkZGl0aW9uIHRvIHRoaXMgcmVhY2hhYmlsaXR5IHZpYSBmdXp6aW5nLCB0aGUgS1VuaXQgdGVzdCBwcm92aWRlcyBhIG1vcmUgY29udHJvbGxlZCBleGVjdXRpb24gcGF0aCBmb3IgdGhpcyBmdW5jdGlvbi4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKU28sIGFmdGVyIGNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBteSBmaW5hbCB2ZXJkaWN0IGlzOgoKKiAgICoqV29ydGhGdXp6aW5nOiB0cnVlKioKKiAgICoqRm9jdXNTeW1ib2xzOioqIEkmIzM5O20gemVyb2luZyBpbiBvbiBgJiMzNDtpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYmIzM0O2AKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBJJiMzOTttIHJlY29tbWVuZGluZyBgWyYjMzQ7SVdMV0lGSSYjMzQ7LCAmIzM0O0lXTE1WTSYjMzQ7LCAmIzM0O0lXTFdJRklfS1VOSVRfVEVTVFMmIzM0O11gLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBib3VuZHMgY2hlY2sgd2l0aGluIHRoZSBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIEkga25vdyB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTFdJRklfS1VOSVRfVEVTVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byB0aGUgUlggaGFuZGxlciBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIG9yIHRoZSBuZXdseSBhZGRlZCBLVW5pdCB0ZXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xXSUZJX0tVTklUX1RFU1RTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQxOjUzLjcxMDAzOTA0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTY1MDU5MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIklXTE1WTVwiLFxuICAgIFwiSVdMV0lGSV9LVU5JVF9URVNUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDE6NTMuNzEwMDQ1MDkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTc5MTQxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0OWJkNDY1NGVmZTViM2U3Y2JmM2RkY2U5NTI5ZWY1NDllOGQ3NGEyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXFxuaW5kZXggMjY5YzRiNDVkZTgwNzguLmQzNzNmMDcyM2UxM2QzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXFxuQEAgLTcsNiArNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIml3bC1kcnYuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIml3bC10cmFucy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibXZtLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmdy1hcGkuaFxcXCJcXG5AQCAtMTIyNyw2ICsxMjI4LDggQEAgdm9pZCBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0XFx0LyogZ2V0IHRoZSBzdGF0aW9uICovXFxuIFxcdFxcdHN0YV9pZCA9IChyYXRpZCBcXHUwMDI2IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSylcXG4gXFx0XFx0XFx0IFxcdTAwM2VcXHUwMDNlIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUztcXG4rXFx0XFx0aWYgKHN0YV9pZCBcXHUwMDNlPSBtdm0tXFx1MDAzZWZ3LVxcdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9ucylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdHN0YSA9IHJjdV9kZXJlZmVyZW5jZShtdm0tXFx1MDAzZWZ3X2lkX3RvX21hY19pZFtzdGFfaWRdKTtcXG4gXFx0XFx0aWYgKElTX0VSUl9PUl9OVUxMKHN0YSkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbkBAIC0xMjM5LDMgKzEyNDIsNCBAQCB2b2lkIGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHR9XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0xfSUZfSVdMV0lGSV9LVU5JVChpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXFxuaW5kZXggMjI2N2JlNGNmYjQ0MTUuLmJmMjI3NTBmY2VhZmM3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGVcXG5AQCAtMSwzICsxLDMgQEBcXG4taXdsbXZtLXRlc3RzLXkgKz0gbW9kdWxlLm8gaGNtZC5vXFxuK2l3bG12bS10ZXN0cy15ICs9IG1vZHVsZS5vIGhjbWQubyB3aW5kb3ctc3RhdHVzLm9cXG4gXFxuIG9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSBpd2xtdm0tdGVzdHMub1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wNjgwN2UyYmRiYzEyZFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcXG5AQCAtMCwwICsxLDc3IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbisvKlxcbisgKiBLVW5pdCB0ZXN0cyBmb3IgTVZNIEJBIHdpbmRvdyBzdGF0dXMgbm90aWZpY2F0aW9uIGhhbmRsaW5nXFxuKyAqL1xcbisjaW5jbHVkZSBcXHUwMDNja3VuaXQvdGVzdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Npd2wtdHJhbnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIi4uL2Z3LWFwaS5oXFxcIlxcbisjaW5jbHVkZSBcXFwiLi4vbXZtLmhcXFwiXFxuK1xcbitNT0RVTEVfSU1QT1JUX05TKFxcXCJFWFBPUlRFRF9GT1JfS1VOSVRfVEVTVElOR1xcXCIpO1xcbitcXG4rc3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXFxuK3tcXG4rXFx0c3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmIG5vdGlmID0ge307XFxuK1xcdHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciByeGIgPSB7XFxuK1xcdFxcdC5fb2Zmc2V0ID0gMCxcXG4rXFx0XFx0Ll9yeF9wYWdlX29yZGVyID0gMCxcXG4rXFx0fTtcXG4rXFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdDtcXG4rXFx0c3RydWN0IGl3bF9mdyAqZnc7XFxuK1xcdHN0cnVjdCBpd2xfbXZtICptdm07XFxuK1xcdHUxNiByYXRpZDtcXG4rXFxuK1xcdEJVSUxEX0JVR19PTigoSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSkgXFx1MDAzZVxcbitcXHRcXHQgICAgIChCQV9XSU5ET1dfU1RBVFVTX1NUQV9JRF9NU0sgXFx1MDAzZVxcdTAwM2VcXG4rXFx0XFx0ICAgICAgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKSk7XFxuK1xcbitcXHRtdm0gPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqbXZtKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBtdm0pO1xcbitcXG4rXFx0ZncgPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqZncpLCBHRlBfS0VSTkVMKTtcXG4rXFx0S1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGZ3KTtcXG4rXFx0ZnctXFx1MDAzZXVjb2RlX2NhcGEubnVtX3N0YXRpb25zID0gSVdMX1NUQVRJT05fQ09VTlRfTUFYO1xcbitcXHRtdm0tXFx1MDAzZWZ3ID0gZnc7XFxuK1xcbitcXHRyeGIuX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwpO1xcbitcXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgcnhiLl9wYWdlKTtcXG4rXFxuK1xcdHJhdGlkID0gQkFfV0lORE9XX1NUQVRVU19WQUxJRF9NU0sgfFxcbitcXHRcXHQoc3RhX2lkIFxcdTAwM2NcXHUwMDNjIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUyk7XFxuK1xcdG5vdGlmLnJhX3RpZFswXSA9IGNwdV90b19sZTE2KHJhdGlkKTtcXG4rXFx0bm90aWYubXBkdV9yeF9jb3VudFswXSA9IGNwdV90b19sZTE2KDEpO1xcbitcXG4rXFx0cGt0ID0gcnhiX2FkZHIoXFx1MDAyNnJ4Yik7XFxuK1xcdG1lbXNldChwa3QsIDAsIFBBR0VfU0laRSk7XFxuK1xcdHBrdC1cXHUwMDNlbGVuX25fZmxhZ3MgPSBjcHVfdG9fbGUzMihzaXplb2YocGt0LVxcdTAwM2VoZHIpICsgc2l6ZW9mKG5vdGlmKSk7XFxuK1xcdG1lbWNweShwa3QtXFx1MDAzZWRhdGEsIFxcdTAwMjZub3RpZiwgc2l6ZW9mKG5vdGlmKSk7XFxuK1xcbitcXHRpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYobXZtLCBcXHUwMDI2cnhiKTtcXG4rXFxuK1xcdF9fZnJlZV9wYWdlKHJ4Yi5fcGFnZSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0aXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXModGVzdCwgSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyh0ZXN0LCAwKTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHdpbmRvd19zdGF0dXNfY2FzZXNbXSA9IHtcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X2JhX3dpbmRvd19zdGF0dXNfc3RhdGlvbl9pZF9ib3VuZHMpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKSxcXG4rXFx0e30sXFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHdpbmRvd19zdGF0dXMgPSB7XFxuK1xcdC5uYW1lID0gXFxcIml3bG12bS13aW5kb3ctc3RhdHVzXFxcIixcXG4rXFx0LnRlc3RfY2FzZXMgPSB3aW5kb3dfc3RhdHVzX2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZSh3aW5kb3dfc3RhdHVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDE6NTQuMTA4OTAyNjc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc2NjE4NDg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTFdJRklfS1VOSVRfVEVTVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIHRoZSBSWCBoYW5kbGVyIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgb3IgdGhlIG5ld2x5IGFkZGVkIEtVbml0IHRlc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDliZDQ2NTRlZmU1YjNlN2NiZjNkZGNlOTUyOWVmNTQ5ZThkNzRhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDA2OjQxOjUyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcbmluZGV4IDI2OWM0YjQ1ZGU4MDc4Li5kMzczZjA3MjNlMTNkMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNcbkBAIC03LDYgKzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4rI2luY2x1ZGUgXCJpd2wtZHJ2LmhcIlxuICNpbmNsdWRlIFwiaXdsLXRyYW5zLmhcIlxuICNpbmNsdWRlIFwibXZtLmhcIlxuICNpbmNsdWRlIFwiZnctYXBpLmhcIlxuQEAgLTEyMjcsNiArMTIyOCw4IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdC8qIGdldCB0aGUgc3RhdGlvbiAqL1xuIFx0XHRzdGFfaWQgPSAocmF0aWQgXHUwMDI2IEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSylcbiBcdFx0XHQgXHUwMDNlXHUwMDNlIEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX1BPUztcbitcdFx0aWYgKHN0YV9pZCBcdTAwM2U9IG12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLm51bV9zdGF0aW9ucylcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0c3RhID0gcmN1X2RlcmVmZXJlbmNlKG12bS1cdTAwM2Vmd19pZF90b19tYWNfaWRbc3RhX2lkXSk7XG4gXHRcdGlmIChJU19FUlJfT1JfTlVMTChzdGEpKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTEyMzksMyArMTI0Miw0IEBAIHZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHR9XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy9NYWtlZmlsZVxuaW5kZXggMjI2N2JlNGNmYjQ0MTUuLmJmMjI3NTBmY2VhZmM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL01ha2VmaWxlXG5AQCAtMSwzICsxLDMgQEBcbi1pd2xtdm0tdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm9cbitpd2xtdm0tdGVzdHMteSArPSBtb2R1bGUubyBoY21kLm8gd2luZG93LXN0YXR1cy5vXG4gXG4gb2JqLSQoQ09ORklHX0lXTFdJRklfS1VOSVRfVEVTVFMpICs9IGl3bG12bS10ZXN0cy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjA2ODA3ZTJiZGJjMTJkXG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmNcbkBAIC0wLDAgKzEsNzcgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbisvKlxuKyAqIEtVbml0IHRlc3RzIGZvciBNVk0gQkEgd2luZG93IHN0YXR1cyBub3RpZmljYXRpb24gaGFuZGxpbmdcbisgKi9cbisjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXHUwMDNjaXdsLXRyYW5zLmhcdTAwM2VcbisjaW5jbHVkZSBcIi4uL2Z3LWFwaS5oXCJcbisjaW5jbHVkZSBcIi4uL212bS5oXCJcbitcbitNT0RVTEVfSU1QT1JUX05TKFwiRVhQT1JURURfRk9SX0tVTklUX1RFU1RJTkdcIik7XG4rXG4rc3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXG4re1xuK1x0c3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmIG5vdGlmID0ge307XG4rXHRzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgcnhiID0ge1xuK1x0XHQuX29mZnNldCA9IDAsXG4rXHRcdC5fcnhfcGFnZV9vcmRlciA9IDAsXG4rXHR9O1xuK1x0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdDtcbitcdHN0cnVjdCBpd2xfZncgKmZ3O1xuK1x0c3RydWN0IGl3bF9tdm0gKm12bTtcbitcdHUxNiByYXRpZDtcbitcbitcdEJVSUxEX0JVR19PTigoSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSkgXHUwMDNlXG4rXHRcdCAgICAgKEJBX1dJTkRPV19TVEFUVVNfU1RBX0lEX01TSyBcdTAwM2VcdTAwM2VcbitcdFx0ICAgICAgQkFfV0lORE9XX1NUQVRVU19TVEFfSURfUE9TKSk7XG4rXG4rXHRtdm0gPSBrdW5pdF9remFsbG9jKHRlc3QsIHNpemVvZigqbXZtKSwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgbXZtKTtcbitcbitcdGZ3ID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2YoKmZ3KSwgR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZncpO1xuK1x0ZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMgPSBJV0xfU1RBVElPTl9DT1VOVF9NQVg7XG4rXHRtdm0tXHUwMDNlZncgPSBmdztcbitcbitcdHJ4Yi5fcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7XG4rXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgcnhiLl9wYWdlKTtcbitcbitcdHJhdGlkID0gQkFfV0lORE9XX1NUQVRVU19WQUxJRF9NU0sgfFxuK1x0XHQoc3RhX2lkIFx1MDAzY1x1MDAzYyBCQV9XSU5ET1dfU1RBVFVTX1NUQV9JRF9QT1MpO1xuK1x0bm90aWYucmFfdGlkWzBdID0gY3B1X3RvX2xlMTYocmF0aWQpO1xuK1x0bm90aWYubXBkdV9yeF9jb3VudFswXSA9IGNwdV90b19sZTE2KDEpO1xuK1xuK1x0cGt0ID0gcnhiX2FkZHIoXHUwMDI2cnhiKTtcbitcdG1lbXNldChwa3QsIDAsIFBBR0VfU0laRSk7XG4rXHRwa3QtXHUwMDNlbGVuX25fZmxhZ3MgPSBjcHVfdG9fbGUzMihzaXplb2YocGt0LVx1MDAzZWhkcikgKyBzaXplb2Yobm90aWYpKTtcbitcdG1lbWNweShwa3QtXHUwMDNlZGF0YSwgXHUwMDI2bm90aWYsIHNpemVvZihub3RpZikpO1xuK1xuK1x0aXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKG12bSwgXHUwMDI2cnhiKTtcbitcbitcdF9fZnJlZV9wYWdlKHJ4Yi5fcGFnZSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c19zdGF0aW9uX2lkX2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0aXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXModGVzdCwgSVdMX1NUQVRJT05fQ09VTlRfTUFYICsgMSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfYmFfd2luZG93X3N0YXR1c192YWxpZF9lbXB0eV9zdGF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRpd2xfbXZtX3Rlc3Rfd2luZG93X3N0YXR1cyh0ZXN0LCAwKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHdpbmRvd19zdGF0dXNfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3N0YXRpb25faWRfYm91bmRzKSxcbitcdEtVTklUX0NBU0UodGVzdF9iYV93aW5kb3dfc3RhdHVzX3ZhbGlkX2VtcHR5X3N0YXRpb24pLFxuK1x0e30sXG4rfTtcbitcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHdpbmRvd19zdGF0dXMgPSB7XG4rXHQubmFtZSA9IFwiaXdsbXZtLXdpbmRvdy1zdGF0dXNcIixcbitcdC50ZXN0X2Nhc2VzID0gd2luZG93X3N0YXR1c19jYXNlcyxcbit9O1xuK1xuK2t1bml0X3Rlc3Rfc3VpdGUod2luZG93X3N0YXR1cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MTo1NC4xMDg5MDQxNjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzAxOTgyMjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQncyBhZGRpbmcgYSBib3VuZHMgY2hlY2sgaW4gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgd2l0aGluIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNgLiAgR29vZCwgd2UncmUgYWltaW5nIGZvciByb2J1c3RuZXNzLCBhbHdheXMgYSBwb3NpdGl2ZSBzaWduLiBUaGV5J3ZlIGFsc28gaW5jbHVkZWQgYSBLVW5pdCB0ZXN0LCB3aGljaCBpcyB3aGF0IEkgbGlrZSB0byBzZWUgLSBtYWtlcyB2ZXJpZmljYXRpb24gbXVjaCBzaW1wbGVyLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGluIHRoZSBDIGNvZGUuIEkgc2VlIHRoZXkgYXJlIGFkZGluZyBhIGNoZWNrOlxuXG5gYGBjXG4rXHRcdGlmIChzdGFfaWQgXHUwMDNlPSBtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYS5udW1fc3RhdGlvbnMpXG4rXHRcdFx0Y29udGludWU7XG5gYGBcblxuUmlnaHQsIHRoYXQncyBleGFjdGx5IHdoYXQgSSdkIGV4cGVjdC4gVGhlIGNvZGUgZXh0cmFjdHMgYSBgc3RhX2lkYCBmcm9tIGByYXRpZGAsIGFuZCBiZWZvcmUgZGVyZWZlcmVuY2luZyBgbXZtLVx1MDAzZWZ3X2lkX3RvX21hY19pZFtzdGFfaWRdYCB0aGV5J3JlIHZlcmlmeWluZyB0aGF0IGBzdGFfaWRgIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2Ugb2Ygc3RhdGlvbiBJRHMgc3VwcG9ydGVkIGJ5IHRoZSBmaXJtd2FyZS4gVGhpcyBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgd2hpY2ggaXMgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlLiBDbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgZXhjZWxsZW50LiBJZiB0aGUgSUQgaXMgaW52YWxpZCwgaXQgc2tpcHMgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBNYWtlcyBzZW5zZS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhaW1lZCBhdCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIE5vdyBJIHdhbnQgdG8gcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgaXdsd2lmaS9tdm1gIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGFjdGl2ZS4gTGV0IG1lIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBpdCB0dXJucyB1cCBmb3IgYGl3bHdpZmkvbXZtYCBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjAyLjQxMDg4NzkzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk3NjQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTg0PWNvbmZpZyBJV0xNTERcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbid0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcXFwiRGVidWdnaW5nIE9wdGlvbnNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjAyLjQ3MDg3MDI5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzQ1ODkwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgd2lyZWxlc3MgZHJpdmVyIGludmVzdGlnYXRpb24sIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgS2NvbmZpZyBmaWxlIGV4aXN0cyB3aGVyZSBJIGV4cGVjdCBpdCB0byBiZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdW5kZXIgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBJbnRlbCBpd2x3aWZpIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBLY29uZmlnYCBpcyBhY3R1YWxseSBwcmVzZW50IHRoZXJlOyBpdCdzIHRoZSB1c3VhbCBzdXNwZWN0IGZvciBhbnkgZHJpdmVyJ3MgYnVpbGQtdGltZSBvcHRpb25zLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIHdpdGhvdXQgdGhhdCBrZXkgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjA1LjM0NTQ2MTA5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY3NzQ1NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElXTE1WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjowNS40MDMxNTA4NDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI0ODM1NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBpd2x3aWZpIEtjb25maWcgZm9yIE1WTSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE1WTSAoTXVsdGktVmlydHVhbCBNYWNoaW5lKSBzdXBwb3J0IHdpdGhpbiB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBgaXdsd2lmaWAuIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgS2NvbmZpZyBmaWxlLCBhcyB0aGF0J3Mgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIFNvLCBsZXQncyBoZWFkIHN0cmFpZ2h0IG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBgQ09ORklHX2Agb3B0aW9ucyBvciBhdCBsZWFzdCByZWZlcmVuY2VzIHRvIHRoZW0sIHdoaWNoIHdpbGwgdGVsbCBtZSBob3cgTVZNIHN1cHBvcnQgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCB3aGF0IHJlbGF0ZWQgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnl0aGluZyB3aXRoIFwiTVZNLFwiIFwidmlydHVhbCBtYWNoaW5lLFwiIG9yIHBlcmhhcHMgZXZlbiBtb3JlIGdlbmVyaWMgdGVybXMgcmVsYXRlZCB0byB2aXJ0dWFsaXphdGlvbiBvciBtdWx0aXBsZSBCU1NJRHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MDguOTI3OTg4NDE2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTI3MDc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjA4Ljk4NjEyMjg3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzOTIyNzE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uICoqSHVudGluZyBEb3duIHRoZSBgbXZtYCBLY29uZmlnKipcblxuV2hlcmUgdGhlIGhlY2sgaXMgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGBtdm1gIG1vZHVsZT8gSSBjb3VsZCBoYXZlIHN3b3JuIEkgc2F3IGl0IGluIHRoZSBwYXN0Li4uIFJpZ2h0LCBsZXQncyBzdGFydCBieSBtZXRob2RpY2FsbHkgY2hlY2tpbmcgdGhlIGxpa2VseSBwbGFjZXMuIFRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9gIGRpcmVjdG9yeSBpcyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIHRoYXQgc2VhcmNoLiBHaXZlbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBrZXJuZWwsIHRoZSBLY29uZmlnIGZvciBhbnkgc3BlY2lmaWMgZHJpdmVyIHNob3VsZCByZXNpZGUgd2l0aGluIHRoYXQgZHJpdmVyJ3Mgc291cmNlIHRyZWUgYW5kIGl0cyBzdWJkaXJlY3Rvcmllcy4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IGl0IHdpbGwgYmUgbmVzdGVkIGRvd24gdGhlcmUgc29tZXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MTEuODI1MzUyMzY2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiaXdsLWFnbi1ody5oXCIsXG4gICAgXCJpd2wtY29uZmlnLmhcIixcbiAgICBcIml3bC1jc3IuaFwiLFxuICAgIFwiaXdsLWRiZy10bHYuY1wiLFxuICAgIFwiaXdsLWRiZy10bHYuaFwiLFxuICAgIFwiaXdsLWRlYnVnLmNcIixcbiAgICBcIml3bC1kZWJ1Zy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtZGF0YS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaW8uaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLWl3bHdpZmkuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLW1zZy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtdWNvZGUuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLmNcIixcbiAgICBcIml3bC1kZXZ0cmFjZS5oXCIsXG4gICAgXCJpd2wtZHJ2LmNcIixcbiAgICBcIml3bC1kcnYuaFwiLFxuICAgIFwiaXdsLWZoLmhcIixcbiAgICBcIml3bC1pby5jXCIsXG4gICAgXCJpd2wtaW8uaFwiLFxuICAgIFwiaXdsLW1vZHBhcmFtcy5oXCIsXG4gICAgXCJpd2wtbnZtLXBhcnNlLmNcIixcbiAgICBcIml3bC1udm0tcGFyc2UuaFwiLFxuICAgIFwiaXdsLW52bS11dGlscy5jXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmhcIixcbiAgICBcIml3bC1vcC1tb2RlLmhcIixcbiAgICBcIml3bC1waHktZGIuY1wiLFxuICAgIFwiaXdsLXBoeS1kYi5oXCIsXG4gICAgXCJpd2wtcHJwaC5oXCIsXG4gICAgXCJpd2wtc2NkLmhcIixcbiAgICBcIml3bC10cmFucy5jXCIsXG4gICAgXCJpd2wtdHJhbnMuaFwiLFxuICAgIFwiaXdsLXV0aWxzLmNcIixcbiAgICBcIml3bC11dGlscy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImNmZ1wiLFxuICAgIFwiZHZtXCIsXG4gICAgXCJmd1wiLFxuICAgIFwibWVpXCIsXG4gICAgXCJtbGRcIixcbiAgICBcIm12bVwiLFxuICAgIFwicGNpZVwiLFxuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjoxMS44MjU0Njc1NTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MDM5ODE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSVdMTVZNIENvbXBpbGF0aW9uIE9wdGlvbnMqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgSVdMTVZNYCBpcyBoYW5kbGVkIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciBzdHJ1Y3R1cmUsIG15IGZpcnN0IGluc3RpbmN0cyBhcmUgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhpcyBraW5kIG9mIHRoaW5nIGFyZSBlaXRoZXIgdGhlIGBNYWtlZmlsZWAgb3IgdGhlIGBLY29uZmlnYCBmaWxlcyB3aXRoaW4gdGhlIHJlbGV2YW50IGRyaXZlciBkaXJlY3RvcnkuIEknbSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgdGhlIGBpd2x3aWZpYCBkcml2ZXIsIGFuZCBtb3JlIHNwZWNpZmljYWxseSwgdGhlIE1WTSBzdWItbW9kdWxlLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vTWFrZWZpbGVgIG9yIHBlcmhhcHMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIFRob3NlIGFyZSB0eXBpY2FsbHkgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljIGFuZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciBmZWF0dXJlcyBsaWtlIGBJV0xNVk1gIGFyZSBkZWZpbmVkLiBGcm9tIHRoZXJlIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBpZiB0aGUgZmVhdHVyZSBpcyBtb2R1bGFyLCBhbmQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBvciBleHRlcm5hbCBtb2R1bGVzLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjoxNS4wNjU4Njg5MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzQwMjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklXTE1WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NTg9Y29uZmlnIElXTFdJRklfTEVEU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYwLVxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NjE6XFx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYyLVxcdHNlbGVjdCBMRURTX1RSSUdHRVJTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NjY9Y29uZmlnIElXTERWTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTk1PWNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTctXFx0ZGVmYXVsdCB5IGlmIElXTERWTT1tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk4OlxcdGRlZmF1bHQgeSBpZiBJV0xNVk09bVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05OS1cXHRkZWZhdWx0IHkgaWYgSVdMTUxEPW1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwMjpjb21tZW50IFxcXCJXQVJOSU5HOiBpd2x3aWZpIGlzIHVzZWxlc3Mgd2l0aG91dCBJV0xEVk0gb3IgSVdMTVZNIG9yIElXTE1MRFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTAzOlxcdGRlcGVuZHMgb24gSVdMRFZNPW4gXFx1MDAyNlxcdTAwMjYgSVdMTVZNPW4gXFx1MDAyNlxcdTAwMjYgSVdMTUxEPW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT0yMD1pd2x3aWZpLSQoQ09ORklHX0lXTERWTSkgKz0gY2ZnLzUwMDAubyBjZmcvNjAwMC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZToyMTppd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgKz0gY2ZnLzcwMDAubyBjZmcvODAwMC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yMi0jIE1BQyBjb25maWd1cmF0aW9uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MjM6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGNmZy85MDAwLm8gY2ZnLzIyMDAwLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI0Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvYXgyMTAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MjU6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGNmZy9iei5vIGNmZy9zYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yNi1pd2x3aWZpLSQoQ09ORklHX0lXTE1MRCkgKz0gY2ZnL2J6Lm8gY2ZnL3NjLm8gY2ZnL2RyLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTI3LSMgUkYgY29uZmlndXJhdGlvbnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjI4Oml3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvcmYtamYubyBjZmcvcmYtaHIubyBjZmcvcmYtZ2Yub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMjktaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICs9IGNmZy9yZi1mbS5vIGNmZy9yZi13aC5vIGNmZy9yZi1wZS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM2PWl3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L3JlZ3VsYXRvcnkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzc6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTM4LWl3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBmdy9zbWVtLm8gZncvaW5pdC5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19JV0xEVk0pXFx0Kz0gZHZtL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NTA6b2JqLSQoQ09ORklHX0lXTE1WTSlcXHQrPSBtdm0vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01MS1vYmotJChDT05GSUdfSVdMTUVJKVxcdCs9IG1laS9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oPTcyNT1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgaXdsMTM1X2Jnbl9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgtNzI2LSNlbmRpZiAvKiBDT05GSUdfSVdMRFZNICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmg6NzI3OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgtNzI4LWV4dGVybiBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyBpd2w3MjYwX2NmZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oPTc0Mz1leHRlcm4gY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgaXdsX3JmX2dmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oLTc0NC0jZGVmaW5lIGl3bF9yZl9vdCBpd2xfcmZfaHJfODBtaHpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaDo3NDU6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaC03NDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZToyOm9iai0kKENPTkZJR19JV0xNVk0pICAgKz0gaXdsbXZtLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSB0ZXN0cy9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0zND1WSVNJQkxFX0lGX0lXTFdJRklfS1VOSVQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaXdsX2h3X2NhcmRfaWRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoyMjQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMjI1LS8qIDcyNjAgU2VyaWVzICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtNTAyLVxcdHtJV0xfUENJX0RFVklDRSgweDdFNDAsIFBDSV9BTllfSUQsIGl3bF9tYV9tYWNfY2ZnKX0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjUwMzojZW5kaWYgLyogQ09ORklHX0lXTE1WTSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo1MDQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1WTSkgfHwgSVNfRU5BQkxFRChDT05GSUdfSVdMTUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01MDUtLyogQnogZGV2aWNlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTU1MC1cXHR7SVdMX1BDSV9ERVZJQ0UoMHhEMjQwLCBQQ0lfQU5ZX0lELCBpd2xfc2NfbWFjX2NmZyl9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzo1NTE6I2VuZGlmIC8qIENPTkZJR19JV0xNVk0gfHwgQ09ORklHX0lXTE1MRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy01NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9NTkzPVZJU0lCTEVfSUZfSVdMV0lGSV9LVU5JVCBjb25zdCBzdHJ1Y3QgaXdsX2Rldl9pbmZvIGl3bF9kZXZfaW5mb190YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTc5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6ODAwOiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTgwMS0vKiA3MjYwIFNlcmllcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEwNDItXFx0XFx0ICAgICBERVZJQ0UoMHgyNzIzKSwgU1VCREVWKDB4MTY1NCkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMDQzOiNlbmRpZiAvKiBDT05GSUdfSVdMTVZNICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEwNDQtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjMyPWludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MzE3OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQzMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYz0yNjg9c3RhdGljIHZvaWQgZGV2aW5mb19wY2lfaWRzX2NvbmZpZyhzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYy0yNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS90ZXN0cy9kZXZpbmZvLmM6Mjc3OiNpZiBJU19FTkFCTEVEKENPTkZJR19JV0xNVk0pIHx8IElTX0VOQUJMRUQoQ09ORklHX0lXTE1MRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3Rlc3RzL2RldmluZm8uYy0yNzgtXFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MTUuMTI2NjE0Mjg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDY2MzEyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJV0xNVk0gQ29uZmlndXJhdGlvbiBhbmQgUnggRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBJV0xNVk1gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgZnVuY3Rpb24uIFRoaXMgc2VlbXMgdG8gYmUgdGhlIHRhcmdldCBvZiBhIG1vZGlmaWNhdGlvbiwgc28gSSBuZWVkIHRvIGFzc2VzcyBpdHMgcmVhY2hhYmlsaXR5IGFuZCBmdW5jdGlvbi4gTGV0IG1lIGNoZWNrIGl0cyBkZWZpbml0aW9uIGZpcnN0LiBJdCdzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmNgLiBSaWdodCwgc28gdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBSWCAocmVjZWl2ZSkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcidzIE1WTSAobXVsdGktdmlydHVhbCBtYWNoaW5lKSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0aGlzIG5vdGlmaWNhdGlvbiBpcyB0cmlnZ2VyZWQgYW5kIHdoYXQgdGhlIHN0YXR1cyBpdCdzIHJlZmVycmluZyB0by4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSB0aGlzIG5vdGlmaWNhdGlvbiBjYXJyaWVzIGFuZCBob3cgdGhlIE1WTSBoYW5kbGVzIHRoZSBkYXRhLiBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NTEsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjoxOC43MzMyNDgxNjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3Mzc4NzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg9MTkzNj12b2lkIGl3bF9tdm1fc3RhX3BtX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaDoxOTM3OnZvaWQgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMTkzOC1cXHRcXHRcXHRcXHQgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM9MzE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXdsX3J4X2hhbmRsZXJzIGl3bF9tdm1fcnhfaGFuZGxlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTM0OC1cXHRSWF9IQU5ETEVSKEJBX1dJTkRPV19TVEFUVVNfTk9USUZJQ0FUSU9OX0lELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jOjM0OTpcXHRcXHQgICBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYsIFJYX0hBTkRMRVJfU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYy0zNTAtXFx0XFx0ICAgc3RydWN0IGl3bF9iYV93aW5kb3dfc3RhdHVzX25vdGlmKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM9MTE5Mj12b2lkIGl3bF9tdm1fcnhfc3RhdGlzdGljcyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTE5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjExOTc6dm9pZCBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jLTExOTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMjQ0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjEyNDU6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmM9MTQ9c3RhdGljIHZvaWQgaXdsX212bV90ZXN0X3dpbmRvd19zdGF0dXMoc3RydWN0IGt1bml0ICp0ZXN0LCB1OCBzdGFfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90ZXN0cy93aW5kb3ctc3RhdHVzLmMtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGVzdHMvd2luZG93LXN0YXR1cy5jOjUxOlxcdGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZihtdm0sIFxcdTAwMjZyeGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3Rlc3RzL3dpbmRvdy1zdGF0dXMuYy01Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6MTguNzkwNjMyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDc3NzE3NDMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbiBmb3IgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZnVuY3Rpb24gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaXMgYW4gUlggaGFuZGxlciB0cmlnZ2VyZWQgYnkgYSBub3RpZmljYXRpb24gZnJvbSB0aGUgSW50ZWwgV2ktRmkgZmlybXdhcmUuIEJlaW5nIGFuIGl3bHdpZmkgZHJpdmVyLCBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHRoZSBjaGFsbGVuZ2VzIG9mIGZ1enppbmcgaXQgc2luY2UgaXQncyBoYXJkd2FyZS1kZXBlbmRlbnQuIEdlbmVyYWxseSwgeW91IG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZSBvciBhIGdvb2QgZW11bGF0aW9uLiBNYWM4MDIxMV9od3NpbSBpcyBvZnRlbiB0aGUgZ28tdG8gZm9yIG1hYzgwMjExLCBidXQgaXdsd2lmaSBpcyBhIGZ1bGwgTUFDIGRyaXZlciwgZXZlbiB0aG91Z2ggaXdsd2lmaS1tdm0gdXNlcyBtYWM4MDIxMSBvbiB0b3Agb2YgdGhlIEludGVsIGZpcm13YXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgY2FuIHRoaXMgYmUgZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuU3l6a2FsbGVyIGRvZXMgaGF2ZSBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgZXRjLiwgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBtYWM4MDIxMS4gQW5kIHRoaXMgZHJpdmVyIGlzIGEgUENJIGRyaXZlci4gRG9lcyBzeXprYWxsZXIgZnV6eiBQQ0k/IEFoLCB5ZXMsIGl0IGhhcyBQQ0kgZnV6emluZyB2aWEgdmZpby9wY2ksIGdvb2QuIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSBLVW5pdCB0ZXN0IGBpd2xtdm0td2luZG93LXN0YXR1c2AuIE5vdywgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQsIEkgbmVlZCB0byBldmFsdWF0ZSBpZiB0aGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuTm93LCBpd2x3aWZpIHdvbid0IGJpbmQgdG8gYW55dGhpbmcgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwIHdpdGhvdXQgYW4gZW11bGF0ZWQgSW50ZWwgd2lmaSBkZXZpY2UuIFNvLCB0aGUgUlggaGFuZGxlcnMgd29uJ3QgYmUgZXhlY3V0ZWQsIGV4Y2VwdCBmb3IgdGhlIG5ldyBLVW5pdCB0ZXN0LiBCdXQgS1VuaXQgdGVzdHMgYXJlbid0IHRyYWRpdGlvbmFsbHkgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgY291bGQgdGhlIFBDSSBmdXp6ZXIgcHJvYmUgaXdsd2lmaSBhbmQgdHJpZ2dlciBmaXJtd2FyZSByZXNwb25zZXM/XG5cblRoZSBQQ0kgZnV6emVyIHVzZXMgbWVtb3J5LW1hcHBlZCBJL08gYW5kIERNQSByZXNwb25zZXMuIEl0IGlzICp0aGVvcmV0aWNhbGx5KiBwb3NzaWJsZSB0byBmdXp6IHRoZSBSWCBwYXRoIGlmIHRoZSBkcml2ZXIgc2V0cyB1cCBETUEgYW5kIHRoZSBmdXp6ZXIgY2FuIHBvcHVsYXRlIHRoZSBETUEgcmluZyB3aXRoIGEgY3JhZnRlZCBSWCBwYWNrZXQsIHdoaWNoIGlzIGluZGVlZCB3aGF0IHN5emthbGxlcidzIFBDSSBmdXp6ZXIgdHJpZXMgdG8gZG8uIFNvIHRoZSBxdWVzdGlvbiBpczogY2FuIHdlIHJlYWNoIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIHZpYSBQQ0kgZnV6emluZz8gSSdkIGhhdmUgdG8gc2F5IHllcy4gVGhlIGZ1enplciBwcm9iZXMgdGhlIGRyaXZlciwgYW5kIHdoaWxlIGl0IG1pZ2h0IG5vdCBzZW5kIGEgY29tcGxldGVseSB2YWxpZCBgQkFfV0lORE9XX1NUQVRVU19OT1RJRklDQVRJT05fSURgIHBhY2tldCwgaXQgKmNhbiogc2VuZCByYW5kb20gZGF0YSwgYW5kIHRodXMgbGlrZWx5IHRyaWdnZXIgc29tZSBwYXJ0IG9mIHRoZSBSWCBwYXRoLlxuXG5Pa2F5LCBub3cgbGV0J3MgZ28gYmFjayB0byB0aGUgcHJvbXB0LCBJIGhhdmUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBhbmQgaWYgaXQgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMuIElzIGBpd2x3aWZpYCByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nPyBZZXMhXG5cbkkgY2FuIG1hcmsgdGhpcyBhcyBXb3J0aEZ1enppbmc9dHJ1ZSB3aXRoIGBJV0xNVk1gIGFzIHRoZSBjb25maWcgYW5kIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGFzIHRoZSBmb2N1cyBzeW1ib2wuIEknbGwgbmVlZCBgSVdMV0lGSWAgYW5kIGBJV0xNVk1gIGFzIGNvbmZpZ3MuIGBJV0xXSUZJX0tVTklUX1RFU1RTYCBpcyAqbm90KiBuZWVkZWQsIGJlY2F1c2UgdGhlIGNyaXRpY2FsIHBhcnQgaXMgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgd2hpY2ggaXMgY29tcGlsZWQgd2l0aCBgSVdMTVZNYCwgYW5kIHdoaWNoIGlzIHJlYWNoYWJsZSBieSBzeXprYWxsZXIncyBQQ0kgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzA2LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNjo0MjozMy41Njc4MDkyNjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTcxNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmM9MTE5Mj12b2lkIGl3bF9tdm1fcnhfc3RhdGlzdGljcyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3J4LmMtMTE5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjExOTc6dm9pZCBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jLTExOTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnguYy0xMjQ0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9yeC5jOjEyNDU6RVhQT1JUX1NZTUJPTF9JRl9JV0xXSUZJX0tVTklUKGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjMzLjYyNjM4NTg3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Nzk3NDIxMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgKipcblxuT2theSwgc28gYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBkcml2ZXIuIElmIEkgaW5jbHVkZSBgSVdMTVZNYCwgdGhpcyBjb2RlICp3aWxsKiBiZSBjb21waWxlZC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBZZXMsIGFic29sdXRlbHkhIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgYSBib3VuZHMgY2hlY2sg4oCTIGluIGEgbmV0d29yayBkcml2ZXIncyBSWCBwYXRoLCB3aGljaCBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS5cblxuRXZlbiB0aG91Z2ggaXQncyBhIGhhcmR3YXJlIGRyaXZlciwgc3l6a2FsbGVyIGhhcyBvcHRpb25zLiBUaGUgUENJIGZ1enplciBvciB3aWZpIGluamVjdGlvbiBhcmUgcG90ZW50aWFsIGF2ZW51ZXMsIGFuZCBpdCAqbWlnaHQqIGV2ZW4gYmUgY292ZXJlZCBieSBhIEtVbml0IHRlc3QgKGV2ZW4gaWYgc3l6a2FsbGVyIGRvZXNuJ3QgZnV6eiBLVW5pdCBkaXJlY3RseSwgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBhIHZhbGlkIHRhcmdldCBmb3IgZnV6emluZykuIEFoLCB3YWl0LCBjYW4gc3l6a2FsbGVyIGZ1enogS1VuaXQ/IE5vLCBub3QgZGlyZWN0bHksIGJ1dCBpdCBjYW4gZnV6eiB0aGUgZHJpdmVyICpmdW5jdGlvbiouXG5cbk5vdywgdGhlIEtVbml0IHRlc3QuLi4gSWYgdGhhdCB0ZXN0IGlzIGJ1aWx0LCB3aWxsIGl0IHJ1biBkdXJpbmcgYm9vdD8gWWVzLCBpZiBLVW5pdCBpcyBlbmFibGVkIGFuZCB0aGUgdGVzdCBtb2R1bGUgaXMgbG9hZGVkLiBCdXQgZnV6emluZyB3aWxsIGZvY3VzIGRpcmVjdGx5IG9uIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW55d2F5LlxuXG5TbywgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgdGFyZ2V0IGZ1bmN0aW9uIGlzIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2lsbCBiZSBgSVdMTVZNYCBhbmQgYElXTFdJRklgLlxuXG5CdXQgd2FpdC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gUUVNVS4gSXMgdGhlIGl3bHdpZmkgUlggcGF0aCByZWFjaGFibGUgaW4gUUVNVT8gV2l0aG91dCBhIHZpcnR1YWwgaXdsd2lmaSBkZXZpY2UsIHRoZSBQQ0kgZHJpdmVyIHByb2JlIHdpbGwgZmFpbCwgYW5kIHRoZSBSWCBpbnRlcnJ1cHQvTkFQSSB3aWxsIG5ldmVyIGJlIHJlZ2lzdGVyZWQgb3IgdHJpZ2dlcmVkLlxuXG5BaCwgYnV0IHN5emthbGxlcidzIFBDSSBmdXp6ZXIgKGBzeXpfcGNpX3NldHVwYCkgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIEl0IGludGVyY2VwdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy9QSU8vRE1BIHRocm91Z2ggYSB2aXJ0dWFsIFBDSSBkZXZpY2UgaW4gUUVNVSAodXNpbmcgYSBjdXN0b20gUUVNVSBkZXZpY2Ugb3IgdmZpbykuICBzeXprYWxsZXIncyBgc3l6X3BjaV8qYCBwc2V1ZG8tc3lzY2FsbHMgYWxsb3cgaW5qZWN0aW5nIFBDSSBkZXZpY2VzLCBzbyBpd2x3aWZpIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmchIFRoZXJlZm9yZSwgSSAqc2hvdWxkKiBwcm92aWRlIGBJV0xNVk1gIGFuZCBgSVdMV0lGSWAuXG5cbkxldCBtZSBkb3VibGUgY2hlY2sgdGhhdCBgSVdMV0lGSWAgaXMgcmVxdWlyZWQuIFllcywgYElXTE1WTWAgZGVwZW5kcyBvbiBgSVdMV0lGSWAuIEknbGwgcmV2aWV3IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdgIHRvIGJlIHN1cmUsIGJ1dCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6NDMuNDIzODA5MDY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTg3MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMTVZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjQzLjQ4MzY4NDU1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTg2NjIyMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgc3BlY2lmaWNhbGx5IGl3bHdpZmkgZHJpdmVyczpcblxuKipBbmFseXppbmcgaXdsd2lmaSBLY29uZmlnIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYCBmaWxlLCBmb2N1c2luZyBhcm91bmQgbGluZSA3NC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyB1c3VhbGx5IHJlc2lkZXMgcmVnYXJkaW5nIGZlYXR1cmUgZW5hYmxlbWVudCwgaGFyZHdhcmUgc3VwcG9ydCwgYW5kIGFueSByZWxhdGVkIG9wdGlvbnMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3Agd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIG1ldCBhcyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhlIGl3bHdpZmkgbW9kdWxlIHRvIGNvbXBpbGUgYW5kIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gYSBsYXJnZXIga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBvdGhlciBkcml2ZXIgcmVxdWlyZW1lbnRzLCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zdHJhaW50cywgb3IgcGVyaGFwcyBldmVuIG90aGVyIEtjb25maWcgc3ltYm9scyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgb24gYmVpbmcgc2V0LiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRob3NlIGRlcGVuZGVuY2llcyBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjQ3LjA3MDMwOTQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRoZSBEVk0gZmlybXdhcmUuIFRoZSBsaXN0XFxuICA3MTpcXHRcXHQgIG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA3MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgNzM6XFx0XFxuICA3NDpcXHRjb25maWcgSVdMTVZNXFxuICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG4gIDc2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgTVZNIGZpcm13YXJlLiBUaGUgbGlzdFxcbiAgODE6XFx0XFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxcbiAgODI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIElXTE1MRFxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA4NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDg3OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDY6NDI6NDcuMDcwMzc4MjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNDIwOTExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGNvbmZpZ3VyaW5nIGBJV0xNVk1gLiBSaWdodCwgYW5kIGEgcGF0Y2ggaXMgaW4gcGxheSB0b28sIG9uZSB0aGF0IGluY2x1ZGVzIGEgS1VuaXQgdGVzdC4gTm93LCB0aGUgcXVlc3Rpb24gaXMsICpzaG91bGQqIEkgZW5hYmxlIHRoYXQgYElXTFdJRklfS1VOSVRfVEVTVFNgIG9wdGlvbj8gTmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgb2YgY291cnNlLiBCZXN0IHRvIGNvbmZpcm0gaXRzIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBzZXR0aW5ncyB3aXRoaW4gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24uIFNvLCBvZmYgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgSSBnby4gVGhhdCdzIHdoZXJlIHRoZSBhbnN3ZXIgbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjUwLjQwNDU4OTQwMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaXdsd2lmaS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0aWYgSVdMV0lGSVxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xcbiAgNTA6XFx0XFx0dHJpc3RhdGVcXG4gIDUxOlxcdFxcdGRlcGVuZHMgb24gS1VOSVRcXG4gIDUyOlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIEVuYWJsZSB0aGlzIG9wdGlvbiBmb3IgaXdsd2lmaSBrdW5pdCB0ZXN0cy5cXG4gIDU1OlxcdFxcbiAgNTY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgSVdMV0lGSV9MRURTXFxuICA1OTpcXHRcXHRib29sXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuICA2MTpcXHRcXHRkZXBlbmRzIG9uIElXTE1WTSB8fCBJV0xEVk1cXG4gIDYyOlxcdFxcdHNlbGVjdCBMRURTX1RSSUdHRVJTXFxuICA2MzpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEU1xcbiAgNjQ6XFx0XFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjUwLjQwNDY1MjQ2MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU4NzQyODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgbW9kaWZpZXMgdGhlIGBpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZgIGZ1bmN0aW9uLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB5ZXMsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgYElXTFdJRklfS1VOSVRfVEVTVFNgIGFyZSBwYXJ0aWN1bGFybHkgaGVscGZ1bCBoZXJlIGJlY2F1c2UgdGhleSdsbCBkaXJlY3RseSBleGVyY2lzZSB0aGUgbW9kaWZpZWQgY29kZS4gVGhpcyBwcm92aWRlcyBhIGNsZWFuIGFuZCBhdXRvbWF0ZWQgd2F5IHRvIGVuc3VyZSB0aGUgbmV3IGJvdW5kcyBjaGVjayBmdW5jdGlvbnMgYXMgaW50ZW5kZWQuIEluY2x1ZGluZyBgSVdMV0lGSWAsIGBJV0xNVk1gLCBhbmQgYElXTFdJRklfS1VOSVRfVEVTVFNgIGluIHRoZSBjb25maWd1cmF0aW9uIGVuc3VyZXMgdGhlIHRlc3Rpbmcgd2lsbCBydW4uXG5cbkJ1dCBob2xkIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gc2NlbmFyaW9zIHRoYXQgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBOb3csIGlzIGBpd2x3aWZpYCBvbmUgb2YgdGhvc2U/IFRoYW5rZnVsbHksIEkga25vdyB0aGF0IFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyIHRoYXQgKmRvZXMqIHJlYWNoIGBpd2x3aWZpYC4gSW4gYWRkaXRpb24gdG8gdGhpcyByZWFjaGFiaWxpdHkgdmlhIGZ1enppbmcsIHRoZSBLVW5pdCB0ZXN0IHByb3ZpZGVzIGEgbW9yZSBjb250cm9sbGVkIGV4ZWN1dGlvbiBwYXRoIGZvciB0aGlzIGZ1bmN0aW9uLiBUaGlzIGNvZGUgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblNvLCBhZnRlciBjb25zaWRlcmluZyBhbGwgb2YgdGhpcywgbXkgZmluYWwgdmVyZGljdCBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiB0cnVlKipcbiogICAqKkZvY3VzU3ltYm9sczoqKiBJJ20gemVyb2luZyBpbiBvbiBgXCJpd2xfbXZtX3dpbmRvd19zdGF0dXNfbm90aWZcImBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSdtIHJlY29tbWVuZGluZyBgW1wiSVdMV0lGSVwiLCBcIklXTE1WTVwiLCBcIklXTFdJRklfS1VOSVRfVEVTVFNcIl1gLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgZnVuY3Rpb24sIHdoaWNoIHJlc2lkZXMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBJIGtub3cgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgb3IgdGhlIG5ld2x5IGFkZGVkIEtVbml0IHRlc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDQxLCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA2OjQyOjU3LjU2MzM5Nzg4OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTY4MzgxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xXSUZJX0tVTklUX1RFU1RTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byB0aGUgUlggaGFuZGxlciBgaXdsX212bV93aW5kb3dfc3RhdHVzX25vdGlmYCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIG9yIHRoZSBuZXdseSBhZGRlZCBLVW5pdCB0ZXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIklXTE1WTVwiLFxuICAgIFwiSVdMV0lGSV9LVU5JVF9URVNUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gdGhlIFJYIGhhbmRsZXIgYGl3bF9tdm1fd2luZG93X3N0YXR1c19ub3RpZmAgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBvciB0aGUgbmV3bHkgYWRkZWQgS1VuaXQgdGVzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[1] Phase: Succeeded StartedAt: 2026-07-12 06:44:02 +0000 UTC FinishedAt: 2026-07-12 06:44:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 06:44:02 +0000 UTC FinishedAt: 2026-07-12 06:44:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2] Phase: Succeeded StartedAt: 2026-07-12 06:44:02 +0000 UTC FinishedAt: 2026-07-12 08:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 06:44:02 +0000 UTC FinishedAt: 2026-07-12 08:04:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","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-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","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-07-12 06:44:02 +0000 UTC FinishedAt: 2026-07-12 06:44:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","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-07-12 06:44:02 +0000 UTC FinishedAt: 2026-07-12 06:44:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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-workflowqk8xr/series-workflowqk8xr-convert-artifact-2015535409/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","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-07-12 06:44:22 +0000 UTC FinishedAt: 2026-07-12 07:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","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-07-12 06:44:22 +0000 UTC FinishedAt: 2026-07-12 07:14:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*35d82899-925b-4775-a463-5bd012ec5a5b,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-workflowqk8xr/series-workflowqk8xr-convert-artifact-2015535409/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": "872f8e66-cf83-41a9-b2c6-88da3b433506", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2283224927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","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-07-12 06:44:22 +0000 UTC FinishedAt: 2026-07-12 07:14:47 +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:*35d82899-925b-4775-a463-5bd012ec5a5b,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-workflowqk8xr/series-workflowqk8xr-convert-artifact-2015535409/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": "872f8e66-cf83-41a9-b2c6-88da3b433506", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2283224927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-12 07:14:57 +0000 UTC FinishedAt: 2026-07-12 07:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-12 07:14:57 +0000 UTC FinishedAt: 2026-07-12 07:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-12 07:14:57 +0000 UTC FinishedAt: 2026-07-12 07:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-12 07:14:57 +0000 UTC FinishedAt: 2026-07-12 07:15:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","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-workflowqk8xr/series-workflowqk8xr-convert-artifact-3066271364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-12 07:15:07 +0000 UTC FinishedAt: 2026-07-12 07:16:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-12 07:15:07 +0000 UTC FinishedAt: 2026-07-12 07:16:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*872f8e66-cf83-41a9-b2c6-88da3b433506,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2283224927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-12 07:16:52 +0000 UTC FinishedAt: 2026-07-12 07:16:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-12 07:16:52 +0000 UTC FinishedAt: 2026-07-12 07:16:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-12 07:16:52 +0000 UTC FinishedAt: 2026-07-12 07:59:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-12 07:16:52 +0000 UTC FinishedAt: 2026-07-12 07:59:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*35d82899-925b-4775-a463-5bd012ec5a5b,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-workflowqk8xr/series-workflowqk8xr-convert-artifact-3066271364/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": "7474f2fa-c08f-4ad5-b770-53bad3f19428", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2551812240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-12 07:16:52 +0000 UTC FinishedAt: 2026-07-12 07:57:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*35d82899-925b-4775-a463-5bd012ec5a5b,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-workflowqk8xr/series-workflowqk8xr-convert-artifact-3066271364/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": "7474f2fa-c08f-4ad5-b770-53bad3f19428", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2551812240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-12 07:59:25 +0000 UTC FinishedAt: 2026-07-12 07:59:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-12 07:59:25 +0000 UTC FinishedAt: 2026-07-12 07:59:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-12 07:59:25 +0000 UTC FinishedAt: 2026-07-12 08:01:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-12 07:59:25 +0000 UTC FinishedAt: 2026-07-12 08:01:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7474f2fa-c08f-4ad5-b770-53bad3f19428,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2551812240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-12 08:01:49 +0000 UTC FinishedAt: 2026-07-12 08:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-12 08:01:49 +0000 UTC FinishedAt: 2026-07-12 08:04:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_mvm_window_status_notif"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*872f8e66-cf83-41a9-b2c6-88da3b433506,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7474f2fa-c08f-4ad5-b770-53bad3f19428,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2283224927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2551812240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-12 08:01:49 +0000 UTC FinishedAt: 2026-07-12 08:01:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-12 08:01:49 +0000 UTC FinishedAt: 2026-07-12 08:01:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_mvm_window_status_notif"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-convert-artifact-1794821517/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-12 08:01:49 +0000 UTC FinishedAt: 2026-07-12 08:01:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-12 08:01:49 +0000 UTC FinishedAt: 2026-07-12 08:01:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-12 08:01:49 +0000 UTC FinishedAt: 2026-07-12 08:01:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-12 08:01:59 +0000 UTC FinishedAt: 2026-07-12 08:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqk8xr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"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":["iwl_mvm_window_status_notif"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLWIFI_KUNIT_TESTS"],"series_id":"a4a121ea-12ec-45a0-95bf-8acda1a7e503","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-12 08:01:59 +0000 UTC FinishedAt: 2026-07-12 08:04:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*872f8e66-cf83-41a9-b2c6-88da3b433506,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7474f2fa-c08f-4ad5-b770-53bad3f19428,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2283224927/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-build-action-2551812240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqk8xr/series-workflowqk8xr-convert-artifact-1794821517/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}