Name: series-workflowc2fnl Phase: Succeeded StartedAt: 2026-08-18 22:59:58 +0000 UTC FinishedAt: 2026-08-19 00:03:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[0] Phase: Succeeded StartedAt: 2026-08-18 22:59:58 +0000 UTC FinishedAt: 2026-08-18 23:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 22:59:58 +0000 UTC FinishedAt: 2026-08-18 23:19:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d75b48460559423f8c38aafed7a9cdec91d26d57", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d75b48460559423f8c38aafed7a9cdec91d26d57", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "824637d1-ca44-440a-90c5-b9d98737ea58" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vgic_its_destroy", "vgic_its_set_attr", "vgic_mmio_write_its_baser" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfaXRzX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7dmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgSVRTIGNvbGxlY3Rpb25zIGJ5IGJ1bGstY2xlYXJpbmcgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucywgcmVkdWNpbmcgdGhlIHRpbWUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTExgKSBhbmQgbWVtb3J5IGRlYWxsb2NhdGlvbiAoYGtmcmVlYCkuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJkOGVlNTQ1MmJiYmM3ZmEzOWY5MDAxYzliMTc4MWQ4MDA3ZmU2NTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMzoxNzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbmluZGV4IDM2YWIzZTQ5MjkxNTQuLmE4ZTgxOWZlOTc4OTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuQEAgLTExMzMsOSAmIzQzOzExMzMsMjEgQEAgc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4ge1xuIFx0c3RydWN0IGl0c19jb2xsZWN0aW9uICpjdXIsICp0ZW1wO1xuJiM0MztcdHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2U7XG4mIzQzO1x0c3RydWN0IGl0c19pdGUgKml0ZTtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdClcbi1cdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLVx1MDAzZWNvbGxlY3Rpb25faWQpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQnVsay1jbGVhciB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMuXG4mIzQzO1x0ICogVGhpcyB0cmFuc2Zvcm1zIHRoZSB0ZWFyZG93biBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpXG4mIzQzO1x0ICogdG8gTyhDb2xsZWN0aW9ucyAmIzQzOyBJVEVzKSwgYXZvaWRpbmcgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpXG4mIzQzO1x0XHRpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkge1xuJiM0MztcdFx0bGlzdF9kZWwoXHUwMDI2Y3VyLVx1MDAzZWNvbGxfbGlzdCk7XG4mIzQzO1x0XHRrZnJlZShjdXIpO1xuJiM0MztcdH1cbiB9XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBpdHNfbG9jayBtdXRleCBoZWxkICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfaXRzX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7dmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJkOGVlNTQ1MmJiYmM3ZmEzOWY5MDAxYzliMTc4MWQ4MDA3ZmU2NTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAyMzoxNzo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYwppbmRleCAzNmFiM2U0OTI5MTU0Li5hOGU4MTlmZTk3ODk4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jCkBAIC0xMTMzLDkgJiM0MzsxMTMzLDIxIEBAIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cykKIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpCiB7CiAJc3RydWN0IGl0c19jb2xsZWN0aW9uICpjdXIsICp0ZW1wOwomIzQzOwlzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlOwomIzQzOwlzdHJ1Y3QgaXRzX2l0ZSAqaXRlOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdGVtcCwgJmFtcDtpdHMtJmd0O2NvbGxlY3Rpb25fbGlzdCwgY29sbF9saXN0KQotCQl2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb24oaXRzLCBjdXItJmd0O2NvbGxlY3Rpb25faWQpOwomIzQzOwkvKgomIzQzOwkgKiBCdWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcy4KJiM0MzsJICogVGhpcyB0cmFuc2Zvcm1zIHRoZSB0ZWFyZG93biBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpCiYjNDM7CSAqIHRvIE8oQ29sbGVjdGlvbnMgJiM0MzsgSVRFcyksIGF2b2lkaW5nIGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuCiYjNDM7CSAqLwomIzQzOwlmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpCiYjNDM7CQlpdGUtJmd0O2NvbGxlY3Rpb24gPSBOVUxMOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCAmYW1wO2l0cy0mZ3Q7Y29sbGVjdGlvbl9saXN0LCBjb2xsX2xpc3QpIHsKJiM0MzsJCWxpc3RfZGVsKCZhbXA7Y3VyLSZndDtjb2xsX2xpc3QpOwomIzQzOwkJa2ZyZWUoY3VyKTsKJiM0MzsJfQogfQogCiAvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGl0c19sb2NrIG11dGV4IGhlbGQgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyNwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0vQVJNNjQgUGF0Y2ggZm9yIElUUyBDbGVhbnVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSB3YXkgY29sbGVjdGlvbnMgYXJlIGZyZWVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBJVFMgY29kZS4gSW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgYXBwcm9hY2gsIHdoaWNoIGVzc2VudGlhbGx5IGxvb3BlZCB0aHJvdWdoIGFsbCBjb2xsZWN0aW9ucyBhbmQgdGhlbiBwb3RlbnRpYWxseSBhbGwgSVRFcyBwZXIgY29sbGVjdGlvbiwgdGhlIG5ldyBtZXRob2QgaXRlcmF0ZXMgdGhyb3VnaCBJVEVzIGFuZCBudWxscyBvdXQgdGhlIGBjb2xsZWN0aW9uYCBwb2ludGVyIGZvciBlYWNoLCBhbmQgKnRoZW4qIGZyZWVzIHRoZSBjb2xsZWN0aW9ucy4gU21hcnQuCgpUaGUgc3RhdGVkIGdvYWwgaXMgY2xlYXJseSBvcHRpbWl6YXRpb247IHRoZXkmIzM5O3JlIGFpbWluZyB0byBhdm9pZCBhbiBPKENvbGxlY3Rpb25zICogSVRFcykgY29tcGxleGl0eSBpc3N1ZSwgd2hpY2ggSSByZWNvZ25pemUgY291bGQgbGVhZCB0byBzb21lIHNpZ25pZmljYW50IFJDVSBzdGFsbHMsIGVzcGVjaWFsbHkgaW4gYSBoZWF2aWx5IGxvYWRlZCBzeXN0ZW0uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IEtWTSBjb2RlLCB0YXJnZXR0ZWQgdG8gQVJNNjQgYXJjaGl0ZWN0dXJlLCBzbyB0aGUgc3Rha2VzIGFyZSBwcmV0dHkgaGlnaCBpZiB0aGVyZSYjMzk7cyBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaXMgdGhpcyBvcHRpbWl6YXRpb24gZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdXNlIGNhc2U/IElzIGl0IHdvcnRoIHRoZSBlZmZvcnQgdG8gdGhvcm91Z2hseSBmdXp6IHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24gdG8gZW5zdXJlIGNvcnJlY3RuZXNzPyBUaGUgY29udGV4dCBoZXJlIGlzIElUUyB0ZWFyZG93biBvciBkZXN0cnVjdGlvbiwgYW5kIGEgcXVpY2sgc2VhcmNoIGZvciBjYWxscyB0byBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuIEdvdHRhIGZpZ3VyZSBvdXQgdGhlIGxpa2VseSBzY2VuYXJpb3Mgd2hlcmUgdGhpcyBjb2RlIGlzIGV4ZWN1dGVkIHRvIGFzc2VzcyB0aGUgcmlzay9yZXdhcmQgb2YgZGl2aW5nIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTEyND1zdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzMzpzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzQte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjY3PXN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzEzLVx0XHRjYXNlIEdJVFNfQkFTRVJfVFlQRV9DT0xMRUNUSU9OOlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3MTQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTUtXHRcdFx0YnJlYWs7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE5MjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2Rldilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzMy1cdHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MzQ6XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzNS1cdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjU2OT1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZShzdHJ1Y3QgdmdpY19pdHMgKml0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5Ni1cdGlmIChyZXQgXHUwMDNjIDApXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjU5NzpcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QoaXRzLVx1MDAzZWRldi1cdTAwM2Vrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5OC1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjYyMj1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMxLVx0aWYgKHJldClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjMyOlx0XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChpdHMtXHUwMDNlZGV2LVx1MDAzZWt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMzLVx0cmV0dXJuIHJldDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjY1MT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19yZXNldChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYwLVx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY2MTpcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzE0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgY2FuIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGZldyBrZXkgYXJlYXMgd2l0aGluIHRoZSBLVk0gVkdJQyBJVFMgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgLCBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19yZXN0b3JlX2NvbGxlY3Rpb25fdGFibGVgLCBgdmdpY19pdHNfcmVzdG9yZV90YWJsZXNfdjBgLCBhbmQgYHZnaWNfaXRzX3Jlc2V0YCBhcmUgYWxsIG1ha2luZyB1c2Ugb2YgaXQuIEdpdmVuIGl0cyBpbnRlZ3JhdGlvbiB3aXRoIHRob3NlIGNyaXRpY2FsIGNvbXBvbmVudHMsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdG8gYmUgcmVhY2hhYmxlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBhbmQgdGhlcmVmb3JlIGEgZ29vZCBjYW5kaWRhdGUuIFRoZSBmYWN0IHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBBUk02NCBhcmNoaXRlY3R1cmUgaXMgYWxzbyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gTm93LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgS1ZNIGFuZCBWR0lDIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBkaXZlIGRlZXBlci4gVGhpcyBzZWVtcyBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgVkdJQyBJVFMgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIHNwZWNpZmljLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBWR0lDIChWaXJ0dWFsIEdlbmVyaWMgSW50ZXJydXB0IENvbnRyb2xsZXIpIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgSVRTIChJbnRlcnJ1cHQgVHJhbnNsYXRpb24gU2VydmljZSkuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUsIEkgd2FudCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGN1c3RvbSBjb25maWd1cmF0aW9ucyBvciBudWFuY2VzIHJlbGF0ZWQgdG8gdGhlIElUUyBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgVkdJQyBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IHRoZSBiYXNlIHNwZWNpZmljYXRpb25zLCBidXQgcGFzdCBleHBlcmllbmNlIGhhcyB0YXVnaHQgbWUgdG8gYWx3YXlzIGRvdWJsZS1jaGVjayBmb3IgdmVuZG9yLXNwZWNpZmljIGFkZGl0aW9ucyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IG9idmlvdXMgaW4gdGhlIHN0YW5kYXJkIGRvY3VtZW50YXRpb24uIEl0JiMzOTtzIGEga2V5IGZpcnN0IHN0ZXAgdG8gYXZvaWQgcG90ZW50aWFsbHkgd2FzdGluZyB0aW1lIGNoYXNpbmcgZG93biBpc3N1ZXMgdGhhdCBhcmUgc2ltcGx5IGR1ZSB0byBhIHByZXZpb3VzbHkta25vd24sIGJ1dCBwZXJoYXBzIG92ZXJsb29rZWQsIGNvbmZpZ3VyYXRpb24gc2V0dGluZy4gQmV0dGVyIHRvIHJ1bGUgdGhhdCBvdXQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoYXQgZmlsZS4uLgoKKipBbmFseXppbmcgYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY2AgZm9yIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgYSBtZW50YWwgc2NhbiBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIOKAkyBzcGVjaWZpY2FsbHksIGAjaWZkZWZgLCBgI2lmbmRlZmAsIGAjaWZgLCBldGMuIOKAkyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgZmlsZS4gTXkgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBjb2RlIGhhcyBzaWduaWZpY2FudCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBidWlsdCBpbnRvIGl0LiBUaGUgSVRTIChJbnRlcnJ1cHQgVHJhbnNsYXRpb24gU2VydmljZSkgY29kZSBpcyBvZnRlbiBhIHRhcmdldCBmb3IgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG9mIGhhcmR3YXJlLCBhbmQgdGhlIGAjaWZkZWZgcyBhcmUgbXkgYnJlYWQgYW5kIGJ1dHRlciBmb3Igc3BvdHRpbmcgdGhvc2UgZGlmZmVyZW5jZXMuIEl0IGlzIGFuIGluZGljYXRpb24gb2Ygd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBpbmNsdWRlZCBpbiBhbGwgYnVpbGRzIG9yIGlmIHRoZXJlIGFyZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIHRoZSB0YXJnZXQgc3lzdGVtLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCYjMzk7cyBmbGV4aWJpbGl0eSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4Njc9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4OTMtXHQvKiBZZXAsIGV2ZW4gbW9yZSB0cmlja2VyeSBmb3IgbG9jayBvcmRlcmluZy4uLiAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4OTQ6I2lmZGVmIENPTkZJR19MT0NLREVQXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg5NS1cdG11dGV4X2xvY2soXHUwMDI2aXRzLVx1MDAzZWNtZF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBvbiBBUk02NDogQSBRdWljayBMb29rIGF0IHRoZSBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEtWTSBpcyBhdXRvbWF0aWNhbGx5IGJ1aWx0IHdoZW4gZW5hYmxlZCBvbiBBUk02NCwgdGhhdCBtdWNoIEkga25vdy4gTm93LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgKmhvdyogYSBzcGVjaWZpYyBwYXJ0IG9mIGl0LCBgdmdpYy1pdHMub2AsIGlzIGJyb3VnaHQgaW50byBiZWluZy4gTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoZSBidWlsZCBwcm9jZXNzLCBhbmQsIGtub3dpbmcgbXkgd2F5IGFyb3VuZCB0aGlzIGtlcm5lbCBzdHJ1Y3R1cmUsIHRoYXQgbWVhbnMgY3JhY2tpbmcgb3BlbiBgYXJjaC9hcm02NC9rdm0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYywgb3IgYXQgbGVhc3QgdGhlIG1ha2UgcnVsZXMsIGhhcHBlbnMuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgTWFrZWZpbGUgaG9sZHMuLi4gSSBleHBlY3QgSSYjMzk7bGwgZmluZCBteSBhbnN3ZXIgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWMtaXRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgJiM0Mzs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXG4tLVxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMjUtXHQgdmdpYy92Z2ljLW1taW8tdjMubyB2Z2ljL3ZnaWMta3ZtLWRldmljZS5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToyNjpcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cdCB2Z2ljL3ZnaWMtdjUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzYwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0aWVkIHRvIHRoZSBga3ZtLXlgIGJ1aWxkLCBhbmQgYnkgZXh0ZW5zaW9uLCBgQ09ORklHX0tWTWAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBzZXR1cC4gSXQmIzM5O3MgdG91Y2hpbmcgYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YCBpbiBgdmdpYy1pdHMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYW4gb3B0aW1pemF0aW9uIGFuZC9vciBidWcgZml4IGRlc2lnbmVkIHRvIG1pdGlnYXRlIFJDVSBzdGFsbHMuIFRoZSBjb21wbGV4aXR5IGNoYW5nZSwgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgZG93biB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpLCBpcyB0aGUga2V5IGluZGljYXRvciBvZiBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBvciBhIGNyaXRpY2FsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1vZGVsLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHJlbGF0ZWQgdG8gaG93IGNvbGxlY3Rpb25zIGFyZSBmcmVlZCBhbmQgSVRFcyBhcmUgdXBkYXRlZC4gVGhpcyBzb3VuZHMgbGlrZSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLgoKTXkgZm9jdXMgaXMgdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24uIEl0JiMzOTtzIHN0YXRpYywgc28gSSBuZWVkIHRvIGZpbmQgdGhlIG5vbi1zdGF0aWMgY2FsbGVycyB0byB1bmRlcnN0YW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNhbGxlcnMgYXJlOgoKKiAgIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYCB3aGljaCBnb2VzIHRocm91Z2ggYHZnaWNfbW1pb193cml0ZWAgLSZndDsgYGt2bV9pb19idXNfd3JpdGVgLgoqICAgYHZnaWNfaXRzX2Rlc3Ryb3lgIHdoaWNoIGdvZXMgdGhyb3VnaCBga3ZtX2Rlc3Ryb3lfZGV2aWNlc2AgLSZndDsgYGt2bV9kZXN0cm95X3ZtYC4KKiAgIGB2Z2ljX2l0c19yZXN0b3JlX2NvbGxlY3Rpb25fdGFibGVgIHdoaWNoIGdvZXMgdGhyb3VnaCBhIGNoYWluIG9mIHN0YXRpYyBmdW5jdGlvbnMgKGB2Z2ljX2l0c19yZXN0b3JlX3RhYmxlc192MGAsIGB2Z2ljX2l0c19yZXN0b3JlX3RhYmxlc2AsIGB2Z2ljX2l0c19zZXRfYXR0cmApIGFuZCB0aGVuIGZpbmFsbHkgYGt2bV9kZXZpY2VfaW9jdGxfYXR0cmAuCiogICBgdmdpY19pdHNfcmVzZXRgIHdoaWNoIGFsc28gY2FsbHMgdGhyb3VnaCB0aGF0IHN0YXRpYyBjaGFpbiB0byBga3ZtX2RldmljZV9pb2N0bF9hdHRyYC4KCkFscmlnaHQsIEkmIzM5O2xsIHBheSBjbG9zZXIgYXR0ZW50aW9uIHRvIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYC4gQWgsIHRoZXkmIzM5O3JlIGJvdGggY2FsbGJhY2tzIHdpdGhpbiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCB3aGljaCBpcyBsaWtlbHkgYSBrZXkgc3RydWN0IGZvciB0aGUgSVRTIGRldmljZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoYXQgc3RydWN0IGRlZmluaXRpb24gbmV4dC4gVGhpcyB3aWxsIGRlZmluZSB0aGUgbGlmZWN5Y2xlIGFuZCBvcGVyYXRpb25zIG9mIHRoZSBJVFMsIHJpZ2h0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJtX3ZnaWNfaXRzX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY6c3RhdGljIHN0cnVjdCBrdm1fZGV2aWNlX29wcyBrdm1fYXJtX3ZnaWNfaXRzX29wcztcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNy1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NjE5PXZvaWQgdmdpY19pdHNfaW52YWxpZGF0ZV9hbGxfY2FjaGVzKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjI2LVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2LCBcdTAwMjZrdm0tXHUwMDNlZGV2aWNlcywgdm1fbm9kZSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjYyNzpcdFx0aWYgKGRldi1cdTAwM2VvcHMgIT0gXHUwMDI2a3ZtX2FybV92Z2ljX2l0c19vcHMpXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjI4LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNzk0PXN0YXRpYyBpbnQgdmdpY19pdHNfZ2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjgyNy1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODI4OnN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2FybV92Z2ljX2l0c19vcHMgPSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjgyOS1cdC5uYW1lID0gXCYjMzQ7a3ZtLWFybS12Z2ljLWl0c1wmIzM0Oyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgzNz1pbnQga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZSh2b2lkKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4Mzgte1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI4Mzk6XHRyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXHUwMDI2a3ZtX2FybV92Z2ljX2l0c19vcHMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjg0MC1cdFx0XHRcdCAgICAgICBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfSVRTKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzMgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIElUUyBEZXZpY2UgQ2FsbGJhY2tzIGZvciBFeHBsb2l0YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNhbGxiYWNrczogYHZnaWNfaXRzX3NldF9hdHRyYCwgYHZnaWNfaXRzX2Rlc3Ryb3lgLCBgdmdpY19pdHNfY3JlYXRlYCwgYHZnaWNfaXRzX2hhc19hdHRyYCwgYW5kIGB2Z2ljX2l0c19nZXRfYXR0cmAuIFRoZXkmIzM5O3JlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IG1ha2VzIG1lIHRoaW5rIHRoZXkmIzM5O2QgYmUgaGFyZGVyIHRvIHRhcmdldCBkaXJlY3RseS4gQnV0IHRoZW4gSSByZW1lbWJlcjogdGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBga3ZtX2RldmljZV9vcHNgIHN0cnVjdHVyZSwgYW5kIHRob3NlIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGZyb20gZ2VuZXJpYyBLVk0gY29kZSB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoYXQmIzM5O3Mga2V5LgoKSWYgdGhleSB3ZXJlIGlubGluZWQsIHRoZSBgc3RhdGljYCBkZWNsYXJhdGlvbiAqd291bGQqIGJlIGEgcHJvYmxlbS4gVGFyZ2V0aW5nIHRoZW0gYnkgbmFtZSB3b3VsZCBiZSBkaWZmaWN1bHQuIEJ1dCBzaW5jZSB0aGV5JiMzOTtyZSBmdW5jdGlvbiBwb2ludGVycywgdGhleSAqYXJlbiYjMzk7dCogaW5saW5lZC4gVGhlIGNvbXBpbGVyIGhhcyB0byBwcm92aWRlIGEgcmVhbCBhZGRyZXNzIGZvciB0aGVtLiBBbmQgdGhhdCBvcGVucyB1cCBwb3NzaWJpbGl0aWVzLgoKVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgaXMgdGhhdCBpdCBjYW4gdGFyZ2V0IGlvY3RscywgbGlrZSBgS1ZNX1NFVF9ERVZJQ0VfQVRUUmAsIHdoaWNoIHdpbGwgZXZlbnR1YWxseSByZWFjaCBgdmdpY19pdHNfc2V0X2F0dHJgLiBUaGF0JiMzOTtzIGEgZGlyZWN0IHJvdXRlLiBOb3csIGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGVhc2llciB0byBsZXZlcmFnZT8gSSBzZWUgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgLCBidXQgdGhhdCYjMzk7cyBqdXN0IHJlZ2lzdHJhdGlvbiwgc28gbGlrZWx5IG5vdCBpbnRlcmVzdGluZyBmcm9tIGFuIGV4cGxvaXQgcGVyc3BlY3RpdmUuCgpGb2N1c2luZyBiYWNrIG9uIGB2Z2ljX2l0c19zZXRfYXR0cmAgYW5kIGB2Z2ljX2l0c19kZXN0cm95YOKApiBldmVuIHRob3VnaCB0aGV5JiMzOTtyZSBgc3RhdGljYCwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdXNhZ2UgY2hhbmdlcyBldmVyeXRoaW5nLiBTeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSYjMzk7cmUgbm90IGlubGluZWQsIGFuZCB0aGVpciBhZGRyZXNzZXMgKmFyZSogdGFrZW4sIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLgoKU28sIHRoZSBwbGFuIGlzOiB3ZSBjYW4gZGVmaW5pdGVseSB1c2UgYHZnaWNfaXRzX3NldF9hdHRyYCBhbmQgYHZnaWNfaXRzX2Rlc3Ryb3lgLiBMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGV5IGFyZSwgaW4gZmFjdCwgc3RhdGljIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfaXRzX3NldF9hdHRyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNzQyPWJvb2wga3ZtX2FyY2hfYWxsb3dfd3JpdGVfd2l0aG91dF9ydW5uaW5nX3ZjcHUoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNzQ4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI3NDk6c3RhdGljIGludCB2Z2ljX2l0c19zZXRfYXR0cihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI3NTAtXHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yODI4PXN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2FybV92Z2ljX2l0c19vcHMgPSB7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzEtXHQuZGVzdHJveSA9IHZnaWNfaXRzX2Rlc3Ryb3ksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjgzMjpcdC5zZXRfYXR0ciA9IHZnaWNfaXRzX3NldF9hdHRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzMtXHQuZ2V0X2F0dHIgPSB2Z2ljX2l0c19nZXRfYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgc2VlbSB0byBiZSAqc3RhdGljKiB3aGljaCBpc24mIzM5O3QgaWRlYWwgZm9yIGFuIGVudHJ5IHBvaW50LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGVyZSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBtaWdodCBzZXJ2ZSBhIGJldHRlciBwdXJwb3NlPyBMZXQgbWUgdGhpbmssICp2Z2ljX2l0c19kZXN0cm95KiBpcyBkZWZpbml0ZWx5IG91dCwgYmVpbmcgc3RhdGljLiBIbSwgd2hhdCBhYm91dCAqdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcio/IFRoYXQmIzM5O3MgYWxzbyBzdGF0aWMuLi4gYnV0IHdhaXQsIGl0IGFwcGVhcnMgdG8gYmUgY2FsbGVkIGZyb20gKnZnaWNfbW1pb193cml0ZSouIE9rYXksICp2Z2ljX21taW9fd3JpdGUqIGlzIG5vbi1zdGF0aWMsIHNvIGxldCYjMzk7cyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX21taW9fd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTAzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTUxMT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pdHNfY2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTUxNy1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNTE4OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfY2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTUxOS1cdFx0XHRcdCAgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNTQzPXN0YXRpYyB2b2lkIHZnaWNfaXRzX3Byb2Nlc3NfY29tbWFuZHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTU3OC0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNTc5OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfY3dyaXRlcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE1ODAtXHRcdFx0XHRcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE2NDU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2Ni0jZGVmaW5lIEdJVFNfQkFTRVJfUk9fTUFTS1x0KEdFTk1BU0tfVUxMKDUyLCA0OCkgfCBHRU5NQVNLX1VMTCg1OCwgNTYpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE2Njc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2OC1cdFx0XHRcdCAgICAgIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzIxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19jdGxyKHN0cnVjdCBrdm0gKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MzYtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTczNzpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXRzX2N0bHIoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzM4LVx0XHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzkyPXN0YXRpYyBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gaXRzX3JlZ2lzdGVyc1tdID0ge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3OTMtXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0NUTFIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTc5NDpcdFx0dmdpY19tbWlvX3JlYWRfaXRzX2N0bHIsIHZnaWNfbW1pb193cml0ZV9pdHNfY3RsciwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzk1LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDMtXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0NCQVNFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODA0Olx0XHR2Z2ljX21taW9fcmVhZF9pdHNfY2Jhc2VyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2NiYXNlciwgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODA1LVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODA2LVx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DV1JJVEVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4MDc6XHRcdHZnaWNfbW1pb19yZWFkX2l0c19jd3JpdGVyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2N3cml0ZXIsIDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgwOC1cdFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MTMtXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0JBU0VSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4MTQ6XHRcdHZnaWNfbW1pb19yZWFkX2l0c19iYXNlciwgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciwgMHg0MCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODE1LVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTI1PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3YyX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNTEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjUyOnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV92Ml9taXNjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNTMtXHRcdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTcyPXN0YXRpYyBpbnQgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfdjJfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMDUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjEwNjpcdHZnaWNfbW1pb193cml0ZV92Ml9taXNjKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTA3LVx0cmV0dXJuIDA7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0xMTA9c3RhdGljIGludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92Ml9ncm91cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMTQtXHRpZiAodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC52Z2ljLnYyX2dyb3Vwc191c2VyX3dyaXRhYmxlKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzoxMTU6XHRcdHZnaWNfbW1pb193cml0ZV9ncm91cCh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTExNi1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTExOS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MTIwOnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lyKHN0cnVjdCBrdm1fdmNwdSAqc291cmNlX3ZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTEyMS1cdFx0XHRcdCBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM9MTYyPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xNzktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjE4MDpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTgxLVx0XHRcdFx0ICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTIwOD1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9zZ2lwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTIyNC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MjI1OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTIyNi1cdFx0XHRcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTI0Ni1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MjQ3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTI0OC1cdFx0XHRcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTI3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF92Y3B1aWYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzIxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzozMjI6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTMyMy1cdFx0XHRcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0zNjEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjM2MjpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfZGlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzYzLVx0XHRcdFx0Z3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTM3Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9hcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzk2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzozOTc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2FwcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTM5OC1cdFx0XHRcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz00MjM9c3RhdGljIGNvbnN0IHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiB2Z2ljX3YyX2Rpc3RfcmVnaXN0ZXJzW10gPSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQyNC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhHSUNfRElTVF9DVFJMLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0MjU6XHRcdHZnaWNfbW1pb19yZWFkX3YyX21pc2MsIHZnaWNfbW1pb193cml0ZV92Ml9taXNjLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MjYtXHRcdE5VTEwsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YyX21pc2MsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MjgtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0lHUk9VUCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDI5Olx0XHR2Z2ljX21taW9fcmVhZF9ncm91cCwgdmdpY19tbWlvX3dyaXRlX2dyb3VwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzAtXHRcdE5VTEwsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YyX2dyb3VwLCAxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDMyLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9FTkFCTEVfU0VULFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0MzM6XHRcdHZnaWNfbW1pb19yZWFkX2VuYWJsZSwgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQzNC1cdFx0TlVMTCwgdmdpY191YWNjZXNzX3dyaXRlX3NlbmFibGUsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzYtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0VOQUJMRV9DTEVBUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDM3Olx0XHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzgtXHRcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9jZW5hYmxlLCAxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQwLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9QRU5ESU5HX1NFVCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDQxOlx0XHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfc3BlbmRpbmcsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ0Mi1cdFx0dmdpY191YWNjZXNzX3JlYWRfcGVuZGluZywgdmdpY191YWNjZXNzX3dyaXRlX3NwZW5kaW5nLCAxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQ0LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9QRU5ESU5HX0NMRUFSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NDU6XHRcdHZnaWNfbW1pb19yZWFkX3BlbmRpbmcsIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQ2LVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfY3BlbmRpbmcsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NDgtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0FDVElWRV9TRVQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ0OTpcdFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDUwLVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTItXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0FDVElWRV9DTEVBUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDUzOlx0XHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTQtXHRcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfY2FjdGl2ZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1Ni1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfUFJJLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NTc6XHRcdHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5LCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHksIE5VTEwsIE5VTEwsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1OC1cdFx0OCwgVkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDU5LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9UQVJHRVQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ2MDpcdFx0dmdpY19tbWlvX3JlYWRfdGFyZ2V0LCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0LCBOVUxMLCBOVUxMLCA4LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjEtXHRcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2Mi1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfQ09ORklHLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjM6XHRcdHZnaWNfbW1pb19yZWFkX2NvbmZpZywgdmdpY19tbWlvX3dyaXRlX2NvbmZpZywgTlVMTCwgTlVMTCwgMixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDY0LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2NS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0RJU1RfU09GVElOVCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDY2Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9zZ2lyLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjctXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDY4LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfRElTVF9TR0lfUEVORElOR19DTEVBUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDY5Olx0XHR2Z2ljX21taW9fcmVhZF9zZ2lwZW5kLCB2Z2ljX21taW9fd3JpdGVfc2dpcGVuZGMsIDE2LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzAtXHRcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3MS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0RJU1RfU0dJX1BFTkRJTkdfU0VULFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NzI6XHRcdHZnaWNfbW1pb19yZWFkX3NnaXBlbmQsIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kcywgMTYsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3My1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTQ3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uIHZnaWNfdjJfY3B1X3JlZ2lzdGVyc1tdID0ge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzctXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfQ1RSTCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDc4Olx0XHR2Z2ljX21taW9fcmVhZF92Y3B1aWYsIHZnaWNfbW1pb193cml0ZV92Y3B1aWYsIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3OS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODAtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfUFJJTUFTSyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDgxOlx0XHR2Z2ljX21taW9fcmVhZF92Y3B1aWYsIHZnaWNfbW1pb193cml0ZV92Y3B1aWYsIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4Mi1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODMtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfQklOUE9JTlQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ4NDpcdFx0dmdpY19tbWlvX3JlYWRfdmNwdWlmLCB2Z2ljX21taW9fd3JpdGVfdmNwdWlmLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODUtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDg2LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0FMSUFTX0JJTlBPSU5ULFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0ODc6XHRcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDg4LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4OS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0NQVV9BQ1RJVkVQUklPLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0OTA6XHRcdHZnaWNfbW1pb19yZWFkX2FwciwgdmdpY19tbWlvX3dyaXRlX2FwciwgMTYsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5MS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTItXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfSURFTlQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ5MzpcdFx0dmdpY19tbWlvX3JlYWRfdmNwdWlmLCB2Z2ljX21taW9fd3JpdGVfdmNwdWlmLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTQtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDk1LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ19DUFVfREVBQ1RJVkFURSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDk2Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9kaXIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5Ny1cdFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTgxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMTIwLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoxMjE6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0xMjItXHRcdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTE3MD1zdGF0aWMgaW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjE1LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoyMTY6XHR2Z2ljX21taW9fd3JpdGVfdjNfbWlzYyh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIxNy1cdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9MjIwPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjM3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoyMzg6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2lyb3V0ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMzktXHRcdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTI3Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF92M3JfY3RscihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yODQtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI4NTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdjNyX2N0bHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yODYtXHRcdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz00Nzk9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJvcGJhc2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNDg2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo0ODc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3Byb3BiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNDg4LVx0XHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NTA3PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3BlbmRiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTUxNy1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NTE4OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9wZW5kYmFzZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTUxOS1cdFx0XHRcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTU0ND1zdGF0aWMgdm9pZCB2Z2ljX3NldF9yZGlzdF9idXN5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBidXN5KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTU0LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1NTU6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2ludmxwaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU1Ni1cdFx0XHRcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01ODYtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjU4NzpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaW52YWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTg4LVx0XHRcdFx0ICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5MC17XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjU5MTpcdC8qIFNlZSB2Z2ljX21taW9fd3JpdGVfaW52bHBpKCkgZm9yIHRoZSBlYXJseSByZXR1cm4gcmF0aW9uYWxlICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5Mi1cdGlmICgoYWRkciBcdTAwMjYgNCkgfHwgIXZnaWNfbHBpc19lbmFibGVkKHZjcHUpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjEzLVx0XHQucmVhZCA9IHZnaWNfbW1pb19yZWFkX3JheixcdFx0XHRcdFxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYxNDpcdFx0LndyaXRlID0gdmdpY19tbWlvX3dyaXRlX3dpLFx0XHRcdFx0XFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjE1LVx0fSwge1x0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NjI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gdmdpY192M19kaXN0X3JlZ2lzdGVyc1tdID0ge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MjctXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoR0lDRF9DVExSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2Mjg6XHRcdHZnaWNfbW1pb19yZWFkX3YzX21pc2MsIHZnaWNfbW1pb193cml0ZV92M19taXNjLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MjktXHRcdE5VTEwsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YzX21pc2MsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzEtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ0RfU1RBVFVTUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjMyOlx0XHR2Z2ljX21taW9fcmVhZF9yYW8sIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjMzLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYzNC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUdST1VQUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjM1Olx0XHR2Z2ljX21taW9fcmVhZF9ncm91cCwgdmdpY19tbWlvX3dyaXRlX2dyb3VwLCBOVUxMLCBOVUxMLCAxLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzYtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM3LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JU0VOQUJMRVIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYzODpcdFx0dmdpY19tbWlvX3JlYWRfZW5hYmxlLCB2Z2ljX21taW9fd3JpdGVfc2VuYWJsZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM5LVx0XHROVUxMLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfc2VuYWJsZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0MS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUNFTkFCTEVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NDI6XHRcdHZnaWNfbW1pb19yZWFkX2VuYWJsZSwgdmdpY19tbWlvX3dyaXRlX2NlbmFibGUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0My1cdCAgICAgICBOVUxMLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfY2VuYWJsZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0NS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSVNQRU5EUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjQ2Olx0XHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfc3BlbmRpbmcsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0Ny1cdFx0dmdpY191YWNjZXNzX3JlYWRfcGVuZGluZywgdmdpY192M191YWNjZXNzX3dyaXRlX3BlbmRpbmcsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NDktXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lDUEVORFIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY1MDpcdFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5nLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTEtXHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfd2ksIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTMtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lTQUNUSVZFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjU0Olx0XHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9zYWN0aXZlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTUtXHRcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfc2FjdGl2ZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1Ny1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUNBQ1RJVkVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NTg6XHRcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1OS1cdFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjYxLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JUFJJT1JJVFlSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NjI6XHRcdHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5LCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHksIE5VTEwsIE5VTEwsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2My1cdFx0OCwgVkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjY0LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JVEFSR0VUU1IsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY2NTpcdFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIE5VTEwsIE5VTEwsIDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2Ni1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjY3LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JQ0ZHUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjY4Olx0XHR2Z2ljX21taW9fcmVhZF9jb25maWcsIHZnaWNfbW1pb193cml0ZV9jb25maWcsIE5VTEwsIE5VTEwsIDIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2OS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzAtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lHUlBNT0RSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NzE6XHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCBOVUxMLCBOVUxMLCAxLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzItXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjczLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JUk9VVEVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NzQ6XHRcdHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIsIHZnaWNfbW1pb193cml0ZV9pcm91dGVyLCBOVUxMLCBOVUxMLCA2NCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjc1LVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjc2LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNEX0lEUkVHUyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njc3Olx0XHR2Z2ljX21taW9fcmVhZF92M19pZHJlZ3MsIHZnaWNfbW1pb193cml0ZV93aSwgNDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3OC1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NjgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gdmdpY192M19yZF9yZWdpc3RlcnNbXSA9IHtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4My1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9DVExSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2ODQ6XHRcdHZnaWNfbW1pb19yZWFkX3Yzcl9jdGxyLCB2Z2ljX21taW9fd3JpdGVfdjNyX2N0bHIsIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4NS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02ODYtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfU1RBVFVTUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njg3Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjg4LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4OS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JSURSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTA6XHRcdHZnaWNfbW1pb19yZWFkX3Yzcl9paWRyLCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5MS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTItXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoR0lDUl9UWVBFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjkzOlx0XHR2Z2ljX21taW9fcmVhZF92M3JfdHlwZXIsIHZnaWNfbW1pb193cml0ZV93aSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjk0LVx0XHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSwgOCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5Ni1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9XQUtFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njk3Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjk4LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5OS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9QUk9QQkFTRVIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcwMDpcdFx0dmdpY19tbWlvX3JlYWRfcHJvcGJhc2UsIHZnaWNfbW1pb193cml0ZV9wcm9wYmFzZSwgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzAxLVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzAyLVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX1BFTkRCQVNFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzAzOlx0XHR2Z2ljX21taW9fcmVhZF9wZW5kYmFzZSwgdmdpY19tbWlvX3dyaXRlX3BlbmRiYXNlLCA4LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDQtXHRcdFZHSUNfQUNDRVNTXzY0Yml0IHwgVkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDUtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfSU5WTFBJUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzA2Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9pbnZscGksIDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwNy1cdFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwOC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JTlZBTExSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MDk6XHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX2ludmFsbCwgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzEwLVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzExLVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX1NZTkNSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MTI6XHRcdHZnaWNfbW1pb19yZWFkX3N5bmMsIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzEzLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxNC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JRFJFR1MsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcxNTpcdFx0dmdpY19tbWlvX3JlYWRfdjNfaWRyZWdzLCB2Z2ljX21taW9fd3JpdGVfd2ksIDQ4LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MTYtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxOC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICYjNDM7IEdJQ1JfSUdST1VQUjAsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcxOTpcdFx0dmdpY19tbWlvX3JlYWRfZ3JvdXAsIHZnaWNfbW1pb193cml0ZV9ncm91cCwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzIwLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcyMS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhTWl82NEsgJiM0MzsgR0lDUl9JU0VOQUJMRVIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MjI6XHRcdHZnaWNfbW1pb19yZWFkX2VuYWJsZSwgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcyMy1cdFx0TlVMTCwgdmdpY191YWNjZXNzX3dyaXRlX3NlbmFibGUsIDQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjUtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoU1pfNjRLICYjNDM7IEdJQ1JfSUNFTkFCTEVSMCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzI2Olx0XHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjctXHRcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9jZW5hYmxlLCA0LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzI5LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyAmIzQzOyBHSUNSX0lTUEVORFIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MzA6XHRcdHZnaWNfbW1pb19yZWFkX3BlbmRpbmcsIHZnaWNfbW1pb193cml0ZV9zcGVuZGluZyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzMxLVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nLCB2Z2ljX3YzX3VhY2Nlc3Nfd3JpdGVfcGVuZGluZywgNCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczMy1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhTWl82NEsgJiM0MzsgR0lDUl9JQ1BFTkRSMCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzM0Olx0XHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczNS1cdFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSwgNCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczNy1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhTWl82NEsgJiM0MzsgR0lDUl9JU0FDVElWRVIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3Mzg6XHRcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczOS1cdFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlLCA0LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQxLVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyAmIzQzOyBHSUNSX0lDQUNUSVZFUjAsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjc0MjpcdFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfY2FjdGl2ZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQzLVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX2NhY3RpdmUsIDQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NDUtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyAmIzQzOyBHSUNSX0lQUklPUklUWVIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NDY6XHRcdHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5LCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHksIDMyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NDctXHRcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc0OC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICYjNDM7IEdJQ1JfSUNGR1IwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NDk6XHRcdHZnaWNfbW1pb19yZWFkX2NvbmZpZywgdmdpY19tbWlvX3dyaXRlX2NvbmZpZywgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzUwLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc1MS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICYjNDM7IEdJQ1JfSUdSUE1PRFIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NTI6XHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NTMtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzU0LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChTWl82NEsgJiM0MzsgR0lDUl9OU0FDUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzU1Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzU2LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0yNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzE6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMi1cdFx0XHR1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTY0PXN0YXRpYyB2b2lkIHZnaWNfdXBkYXRlX3ZzZ2koc3RydWN0IHZnaWNfaXJxICppcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6Njk6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MC1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTk2PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTE2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0xMTctXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY0LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzoxNjU6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2Ni1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0zMDQ9c3RhdGljIHZvaWQgX19zZXRfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zNTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjM1Mzp2b2lkIHZnaWNfbW1pb193cml0ZV9zcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTM1NC1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9Mzg5PXN0YXRpYyB2b2lkIF9fY2xlYXJfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy00MzktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjQ0MDp2b2lkIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTQ0MS1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NTQ2PXN0YXRpYyB2b2lkIHZnaWNfbW1pb19jaGFuZ2VfYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfaXJxICppcnEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjU5MzpzdGF0aWMgdm9pZCBfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTk0LVx0XHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjA3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MDgtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE1LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2MTY6XHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE3LVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjIyPWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyNS17XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYyNjpcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjctXHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyOS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjMwOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MzEtXHRcdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQzLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2NDQ6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0NS1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY1MzpcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTQtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02NTk9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjYyLXtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjYzOlx0X192Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY2NC1cdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjY3PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjkxLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2OTI6dm9pZCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTMtXHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTcxND11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjczMzp2b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzQtXHRcdFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xMTU9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9yYW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTE3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMTg6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMTktXHRcdFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MTI0PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTI2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMjc6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMjgtXHRcdFx0ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MTMwPXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTEzMi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTMzOnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzQtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTM2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMzc6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTEzOC1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xNTI9dW5zaWduZWQgbG9uZyB2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE1NC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTU1OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTU2LVx0XHRcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xNTgtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE1OTp2b2lkIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE2MC1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MTc0PXVuc2lnbmVkIGxvbmcgdmdpY191YWNjZXNzX3JlYWRfYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE3Ni1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTc3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xNzgtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTgwLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxODE6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE4Mi1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xOTM9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xOTUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE5Njp2b2lkIHZnaWNfbW1pb193cml0ZV9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE5Ny1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MjAwPXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTIwMi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MjAzOnZvaWQgdmdpY19tbWlvX3dyaXRlX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTIwNC1cdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYz0xNTE9dm9pZCB2Z2ljX3YyX2RlYWN0aXZhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdmFsKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12Mi5jLTIxNi1cdGlmIChtbWlvKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYyLmM6MjE3Olx0XHR2Z2ljX21taW9fd3JpdGVfY2FjdGl2ZSh2Y3B1LCAodmFsIC8gMzIpICogNCwgNCwgQklUKHZhbCAlIDMyKSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYy0yMTgtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLmM9MTk1PXZvaWQgdmdpY192M19kZWFjdGl2YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZhbClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MzcKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBTZWN1cml0eSBSaXNrcyBpbiB0aGUgSVRTIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgIGZ1bmN0aW9uLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIHRoZSBmaXJzdCBwb2ludCBvZiBub3RlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbiBjYWxscyB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb24gYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YC4gTm9wZSwgdGhhdCBvbmUmIzM5O3Mgc3RhdGljIHRvby4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBjaGVjayB0aGUgb2J2aW91cyBjYW5kaWRhdGVzOiBgdmdpY19pdHNfZGVzdHJveWA/IEFsc28gc3RhdGljLgoKQWxyaWdodCwgd2hhdCBhYm91dCBga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZWA/IEFoYSEgVGhhdCBvbmUmIzM5O3Mgbm9uLXN0YXRpYy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgdGFyZ2V0aW5nIHRob3NlIGBrdm1fZGV2aWNlX29wc2AgY2FsbGJhY2tzIHRocm91Z2ggS1ZNIGlvY3Rscy4gU2luY2UgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFyZSBzdGF0aWMgYnV0IHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gKG1lYW5pbmcgdGhleSYjMzk7cmUgbm90IGlubGluZWQpLCB0aGV5JiMzOTtyZSBwb3RlbnRpYWwgdGFyZ2V0cy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBTeXprYWxsZXIgcmVhbGx5IGdvZXMgdG8gdG93biBmdXp6aW5nIHRoZXNlIEtWTSBpb2N0bHMuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLCBJIG5lZWQgdG8gc2VlIHdoYXQgZWxzZSBtaWdodCBiZSB2dWxuZXJhYmxlLiBJdCYjMzk7cyB0aW1lIHRvIHN5c3RlbWF0aWNhbGx5IHJldmlldyBhbGwgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBkaXZlIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2Z2ljX2l0c18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTczLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3NDpzdHJ1Y3QgdmdpY19pdHNfYWJpIHtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzUtXHRpbnQgY3RlX2Vzejtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NjA1PXN0YXRpYyB2b2lkIHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoc3RydWN0IHZnaWNfaXRzICppdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYxOC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2MTk6dm9pZCB2Z2ljX2l0c19pbnZhbGlkYXRlX2FsbF9jYWNoZXMoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYyMC17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYzNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2Mzc6aW50IHZnaWNfaXRzX3Jlc29sdmVfbHBpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjM4LVx0XHRcdCB1MzIgZGV2aWQsIHUzMiBldmVudGlkLCBzdHJ1Y3QgdmdpY19pcnEgKippcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY4NT1zdGF0aWMgaW50IHZnaWNfaXRzX3RyaWdnZXJfbXNpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MDc6aW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwOC17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTczMS0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MzI6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTczMy17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEyNjc9c3RhdGljIGludCB2Z2ljX2l0c19jbWRfaGFuZGxlX2NsZWFyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyODctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTI4ODppbnQgdmdpY19pdHNfaW52X2xwaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyODkte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMjk3PXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9pbnYoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTMxOS0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMzIwOmludCB2Z2ljX2l0c19pbnZhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzMjEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA4NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDU5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBLVk0gSVRTIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBiZXN0IGZ1bmN0aW9ucyB0byB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIEtWTSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKSBjb2RlLCBzcGVjaWZpY2FsbHkgdXNpbmcgc3l6a2FsbGVyLgoKRmlyc3QsIEkgaWRlbnRpZmllZCBhIGxpc3Qgb2YgcG90ZW50aWFsIGNhbmRpZGF0ZXM6IGB2Z2ljX2l0c19pbnZhbGlkYXRlX2FsbF9jYWNoZXNgLCBgdmdpY19pdHNfcmVzb2x2ZV9scGlgLCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAsIGB2Z2ljX2l0c19pbmplY3RfbXNpYCwgYHZnaWNfaXRzX2ludl9scGlgLCBgdmdpY19pdHNfaW52YWxsYCwgYW5kIGBrdm1fdmdpY19yZWdpc3Rlcl9pdHNfZGV2aWNlYC4gTm9uZSBvZiB0aGVzZSBkaXJlY3RseSBjYWxsIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIGEgZnVuY3Rpb24gb2YgaW50ZXJlc3QgYmVjYXVzZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19zZXRfYXR0cmAsIGFuZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAuIFNpbmNlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgcGFydCBvZiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCBhbmQgdGhlcmVmb3JlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIHRoZXNlIGxvb2tlZCBwcm9taXNpbmcuCgpJbml0aWFsbHksIEkgd2FzIGNvbmNlcm5lZCBhYm91dCBzdGF0aWMgZnVuY3Rpb25zIGJlaW5nIHByb2JsZW1hdGljIGJlY2F1c2Ugb2YgaW5saW5pbmcsIGJ1dCBJIHJlY2FsbGVkIHRoYXQgc3l6a2FsbGVyICpjYW4qIHJlc29sdmUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5JiMzOTtyZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBJIGRvdWJsZS1jaGVja2VkIHRoYXQgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFyZSBwcmVzZW50IGluIGBrYWxsc3ltc2AuIEdvb2QgbmV3cyEgVGhleSBhcmUgYWNjZXNzaWJsZS4gQW5kLCBpbXBvcnRhbnRseSwgdGhleSBhcmUgbm90IGlubGluZWQuCgpIb3dldmVyLCB0aGUgaWRlYWwgc2l0dWF0aW9uIGlzIHN0aWxsIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyBpZiB0aGV5IGV4aXN0LiAgU28sIEkgcmV2aWV3ZWQgdGhlIGxpc3QgYWdhaW4gbG9va2luZyBmb3IgYmV0dGVyIG9wdGlvbnMuIEkgYWxzbyBleHBsb3JlZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAsIGJ1dCB0aGF0IGxlZCBtZSB0byBgdmdpY19tbWlvX3dyaXRlYCwgd2hpY2ggaXNuJiMzOTt0IGRlZmluZWQgaW4gYHZnaWMtaXRzLmNgLiAgSSB3aWxsIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBmdW5jdGlvbiBpbiB0aGUgZnV0dXJlLCBhcyBpdCBpcyBub24tc3RhdGljLgoKVWx0aW1hdGVseSwgSSBjb25jbHVkZSB0aGF0IGB2Z2ljX2l0c19zZXRfYXR0cmAgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgYmVjYXVzZSBpdCYjMzk7cyBub24taW5saW5lZCBhbmQgaXMgZGlyZWN0bHkgcGFydCBvZiB0aGUgYGt2bV9hcm1fdmdpY19pdHNfb3BzYCB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyLiAgQW5kIGlmIEkgY2FuJiMzOTt0IGZpbmQgYW55dGhpbmcgYmV0dGVyLCBgdmdpY19pdHNfZGVzdHJveWAgd2lsbCB3b3JrLCBiZWNhdXNlIGl0JiMzOTtzIGFsc28gbm9uLWlubGluZWQgYW5kIHN5emthbGxlciBjYW4gbWF0Y2ggaXRzIHN5bWJvbC4gSSBzaG91bGQgYWxzbyBjaGVjayBgdmdpY19tbWlvX3dyaXRlYCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfbW1pb193cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0yNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzE6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMi1cdFx0XHR1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTY0PXN0YXRpYyB2b2lkIHZnaWNfdXBkYXRlX3ZzZ2koc3RydWN0IHZnaWNfaXJxICppcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6Njk6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MC1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTk2PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTE2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0xMTctXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY0LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzoxNjU6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2Ni1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0zMDQ9c3RhdGljIHZvaWQgX19zZXRfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zNTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjM1Mzp2b2lkIHZnaWNfbW1pb193cml0ZV9zcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTM1NC1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9Mzg5PXN0YXRpYyB2b2lkIF9fY2xlYXJfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy00MzktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjQ0MDp2b2lkIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTQ0MS1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NTQ2PXN0YXRpYyB2b2lkIHZnaWNfbW1pb19jaGFuZ2VfYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfaXJxICppcnEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjU5MzpzdGF0aWMgdm9pZCBfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTk0LVx0XHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjA3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MDgtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE1LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2MTY6XHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE3LVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjIyPWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyNS17XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYyNjpcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjctXHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyOS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjMwOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MzEtXHRcdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQzLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2NDQ6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0NS1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY1MzpcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTQtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02NTk9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjYyLXtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjYzOlx0X192Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY2NC1cdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjY3PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjkxLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2OTI6dm9pZCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTMtXHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTcxND11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjczMzp2b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzQtXHRcdFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTQ4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFZnaWMtSVRTIFRlYXJkb3duIGFuZCBTZXR1cCoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIGB2Z2ljLWl0cy5jYCBmaWxlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgY29kZSBmb3Igc2V0dXAgYW5kIHRlYXJkb3duIG9mIHRoZSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKSB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudC4gYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFyZSBvYnZpb3VzbHkgaW1wb3J0YW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBlbHNlIGNyaXRpY2FsLgoKSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgIGFzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHNlZW1lZCBsaWtlIGEgcG9zc2libGUgcG9pbnQgb2YgaW50ZXJlc3QuIEl0JiMzOTtzIG5vdCAqZGlyZWN0bHkqIGludm9sdmVkIGluIHRoZSBleGVjdXRpb24gb2YgdGhlIGNoYW5nZWQgY29kZSwgaXQmIzM5O3MganVzdCBhIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbi4gU28sIHNjcmF0Y2ggdGhhdC4gQnV0LCB3YWl0Li4uIGFmdGVyIGEgc2Vjb25kIGxvb2ssIHRoZSBjb2RlICphY3R1YWxseSogZG9lcyBzb21ldGhpbmcgaW4gYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YC4KCkdpdmVuIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcyBwcmltYXJ5IHBvaW50cyBvZiBpbnRlcmVzdCBiZWNhdXNlIEkgdW5kZXJzdGFuZCB0aGVzZSBhcmUgcmVsZXZhbnQgZnVuY3Rpb24gbmFtZXMuIEFsc28sIEkgbmVlZCB0byBjaGVjayBgdmdpY19pdHNfcmVzZXRgLiBBaCwgYnV0IHRoYXQgb25lIGlzIHN0YXRpYy4gU2FtZSB3aXRoIGB2Z2ljX2l0c19yZXN0b3JlX2NvbGxlY3Rpb25fdGFibGVgLiBJIHdpbGwgbmVlZCB0byBtYWtlIHN1cmUgdG8gY29uc2lkZXIgdGhvc2UgYXMgd2VsbCwgZGVzcGl0ZSBub3QgdXNpbmcgdGhlbSBhcyBwcmltYXJ5IGZvY3VzIHN5bWJvbHMuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUuIEkgc2VlIHRoZSByZXF1aXJlbWVudCBmb3IgYENPTkZJR19LVk1gIGlzIHByZXNlbnQsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBTbywgSSB3aWxsIGNoZWNrIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIE15IEtWTSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gcmlnaHQgbm93LiBJdCYjMzk7cyB0aGUgcHJpbWFyeSBwaWVjZSBvZiB0aGlzIHB1enpsZS4gQnV0LCBob2xkIG9uIGEgbWludXRlLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIGFsc28gYSBjcml0aWNhbCBjb21wb25lbnQuIFRoZXkgd29yayB0b2dldGhlci4gU28sIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIGlmIGBLVk1gIHJlbGllcyBvbiBhbnl0aGluZyBzcGVjaWZpYy4gSSYjMzk7bGwgY2hlY2sgaXRzIGRlcGVuZGVuY2llcywgZW5zdXJlIG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQsIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBjb25mbGljdHMuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgS1ZNYCBpcyBidWlsdCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz00Nz1jb25maWcgUFREVU1QX1NUQUdFMl9ERUJVR0ZTXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtQcmVzZW50IHRoZSBzdGFnZS0yIHBhZ2V0YWJsZXMgdG8gZGVidWdmc1wmIzM0O1xuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjUwOlx0ZGVwZW5kcyBvbiBERUJVR19GU1xuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo1MTpcdGRlcGVuZHMgb24gQVJDSF9IQVNfUFREVU1QXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTUyLVx0c2VsZWN0IFBURFVNUFxuLS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc9NzU9Y29uZmlnIE5WSEVfRUwyX1RSQUNJTkdcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzYtXHRib29sXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBUUkFDSU5HIFx1MDAyNlx1MDAyNiBGVFJBQ0VcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzgtXHRzZWxlY3QgVFJBQ0VfUkVNT1RFXG4tLVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZz05Mj1jb25maWcgUEtWTV9TVEFDS1RSQUNFXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtQcm90ZWN0ZWQgS1ZNIGh5cGVydmlzb3Igc3RhY2t0cmFjZXNcJiMzNDtcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6OTQ6XHRkZXBlbmRzIG9uIFBLVk1fRElTQUJMRV9TVEFHRTJfT05fUEFOSUNcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctOTUtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5MzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBLVk0gTWVudSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtZW51Y29uZmlnIEtWTWAgZW50cnksIGFuZCBzb21ldGhpbmcgZmVlbHMgb2ZmLiBUaGVyZSYjMzk7cyBubyBgZGVwZW5kcyBvbmAgY2xhdXNlIGF0dGFjaGVkIHRvIGl0IGluIHRoZSBzbmlwcGV0LiBUaGF0IHNlZW1zIHVudXN1YWwsIGdpdmVuIEtWTSYjMzk7cyBkZXBlbmRlbmNpZXMgb24gdmFyaW91cyBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIGhlcmUuIFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSAqY29tcGxldGUqIGRlZmluaXRpb24gb2YgYEtWTWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMgYW5kIHByZWNpc2VseSB3aGF0IGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQgZm9yIGl0IHRvIGJlIGVuYWJsZWQuIFdpdGhvdXQgdGhhdCBjb21wcmVoZW5zaXZlIHZpZXcsIEkgY2FuJiMzOTt0IGJlIGNvbmZpZGVudCBpbiBpbnRlcnByZXRpbmcgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxODpcdGlmIFZJUlRVQUxJWkFUSU9OXG4gIDE5Olx0XG4gIDIwOlx0bWVudWNvbmZpZyBLVk1cbiAgMjE6XHRcdGJvb2wgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyMzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDI0Olx0XHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuICAyNTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDI2Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDI3Olx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMjg6XHRcdHNlbGVjdCBLVk1fVkZJT1xuICAyOTpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAzMDpcdFx0c2VsZWN0IE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbiAgMzE6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgMzI6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDMzOlx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMzQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTXG4gIDM1Olx0XHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXG4gIDM2Olx0XHRzZWxlY3QgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxuICAzNzpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzg6XHRcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xuICAzOTpcdFx0c2VsZWN0IEtWTV9HVUVTVF9NRU1GRFxuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQ0Olx0XG4gIDQ1Olx0aWYgS1ZNXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIFBURFVNUF9TVEFHRTJfREVCVUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjU5NgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFZHSUMgSVRTIENvbGxlY3Rpb24gRnJlZWluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYEtWTWAgYW5kLCBieSBleHRlbnNpb24sIGFueXRoaW5nIHVzaW5nIGBWSVJUVUFMSVpBVElPTmAuIEkgbmVlZCB0byBlbnN1cmUgYm90aCBvZiB0aG9zZSBhcmUgaW5jbHVkZWQgaW4gbXkgY29uZmlndXJhdGlvbi4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZyBkZXBlbmRlbmNpZXMuLi4gTm9wZSwgdGhhdCBsb29rcyBjbGVhbi4KCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IG9wdGltaXplcyB0aGUgVkdJQyBJVFMgY29sbGVjdGlvbiBmcmVlaW5nIHByb2Nlc3Mgd2l0aGluIEtWTSBvbiBBUk02NC4gSXTigJlzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIHN3aXRjaGluZyBmcm9tIGFuIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRpbWUgY29tcGxleGl0eSB0byBtaXRpZ2F0ZSBSQ1Ugc3RhbGxzLiBDcml0aWNhbGx5LCB0aGlzIGNoYW5nZSBoYXBwZW5zIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIHNvIGl0JiMzOTtzIGNsZWFybHkgcmVsZXZhbnQgdG8gdGhvc2UgcHJvY2Vzc2VzLgoKVGhlIGluaXRpYWwgYW5hbHlzaXMgaGlnaGxpZ2h0ZWQgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFzIHByaW1hcnkgcG9pbnRzIG9mIGludGVyZXN0LCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY2hhbmdlLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgKnN1cmUqIEkmIzM5O20gcGlja2luZyB0aGUgcmlnaHQgc3ltYm9scy4gVGhlIHByb21wdCBwcmVmZXJzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlc2UgYXJlICp0ZWNobmljYWxseSogc3RhdGljLCBidXQgdGhleSBhcmVuJiMzOTt0IGlubGluZWQsIHNvIHRoZXkgc3RpbGwgcHJvdmlkZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBHaXZlbiB0aGlzLCBJ4oCZbSB0aGlua2luZyB0aGV5IGFyZSBzdGlsbCB0aGUgYmVzdCB0YXJnZXRzIGZvciBzeW1ib2xpYyBleGVjdXRpb24uCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBvdGhlciBwb3NzaWJpbGl0aWVzLCBqdXN0IGluIGNhc2UuIGBrdm1fdmdpY19yZWdpc3Rlcl9pdHNfZGV2aWNlYCBkb2VzbiYjMzk7dCBzZWVtIGRpcmVjdGx5IHJlbGV2YW50LCBhcyBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gZXhlY3V0ZSB0aGUgbW9kaWZpZWQgY29kZS4gYGt2bV9kZXN0cm95X3ZtYCBpcyAqdG9vKiBnZW5lcmljOyBpdCBjb3VsZCB0cmlnZ2VyICptYW55KiB0aGluZ3MuIExldCYjMzk7cyBub3QgYnJpbmcgaXQgaW4uIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIHN0YXRpYywgYW5kICpjb3VsZCogYmUgaW5saW5lZC4gSSB3aWxsIHN0aWNrIHdpdGggdGhlIG9yaWdpbmFsIHR3by4KClNvLCBJIHRoaW5rIEkmIzM5O2xsIGluY2x1ZGUgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgLiBJJiMzOTtsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGB2Z2ljX2l0c19kZXN0cm95YCBpc24mIzM5O3QgaW5saW5lZCwgdGhvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2l0c19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xODY3PXN0YXRpYyBpbnQgdmdpY19pdHNfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTIzLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MjQ6c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2RldilcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTI1LXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgyOD1zdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9hcm1fdmdpY19pdHNfb3BzID0ge1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMwLVx0LmNyZWF0ZSA9IHZnaWNfaXRzX2NyZWF0ZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODMxOlx0LmRlc3Ryb3kgPSB2Z2ljX2l0c19kZXN0cm95LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzItXHQuc2V0X2F0dHIgPSB2Z2ljX2l0c19zZXRfYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3NjQKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhpcyBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIEkgc2VlIHRoaXMgZnVuY3Rpb24gYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIG1lYW5zLCBieSBkZWZpbml0aW9uLCBpdCYjMzk7cyAqbm90KiBnb2luZyB0byBnZXQgaW5saW5lZC4gU2FtZSBnb2VzIGZvciBgdmdpY19pdHNfc2V0X2F0dHJgLCB0aGVuLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUsIEkgc2hvdWxkIGp1bXAgb3ZlciB0byBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAuIE5lZWQgdG8gcXVpY2tseSByZXZpZXcgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE2NDU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2Ni0jZGVmaW5lIEdJVFNfQkFTRVJfUk9fTUFTS1x0KEdFTk1BU0tfVUxMKDUyLCA0OCkgfCBHRU5NQVNLX1VMTCg1OCwgNTYpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE2Njc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2OC1cdFx0XHRcdCAgICAgIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzkyPXN0YXRpYyBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gaXRzX3JlZ2lzdGVyc1tdID0ge1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODEzLVx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19CQVNFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODE0Olx0XHR2Z2ljX21taW9fcmVhZF9pdHNfYmFzZXIsIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIsIDB4NDAsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgxNS1cdFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzY3CgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgSVRTIEZ1bmN0aW9uIFBvaW50ZXJzIGFuZCBQb3RlbnRpYWwgV2Vha25lc3NlcyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgUkVHSVNURVJfSVRTX0RFU0NgIG1hY3JvLiBBbmQgaXQmIzM5O3MgcGFzc2luZyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQgbWVhbnMgdGhlIGZ1bmN0aW9uIGlzbiYjMzk7dCBiZWluZyBpbmxpbmVkLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuIEl0IG1lYW5zIEkgbmVlZCB0byBhbHNvIGFkZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAgdG8gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLiBJdCBkaXJlY3RseSBjYWxscyBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgLCB3aGljaCBpcyBhIGtleSBmdW5jdGlvbiB0byBleGFtaW5lIGZvciBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIGlzc3Vlcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGFuZCBleHBhbmQgbXkgYW5hbHlzaXMgdG9vLgoKVGhlcmVmb3JlLCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFuYWx5c2lzLCBJIHdpbGwgYWRkIGB2Z2ljX2l0c19kZXN0cm95YCwgYHZnaWNfaXRzX3NldF9hdHRyYCBhbmQgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LgoKTm93LCBsZXQmIzM5O3MgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfaXRzX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7dmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmdpY19pdHNfZGVzdHJveSYjMzQ7LAogICAgJiMzNDt2Z2ljX2l0c19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDt2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgS1ZNIFZHSUMgSVRTIGNvbGxlY3Rpb25zIGJ5IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgJiM0MzsgSVRFcykgdG8gcHJldmVudCBob3N0IFJDVSBzdGFsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQVJNNjQgS1ZNIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgSVRTIGNvbGxlY3Rpb25zIGJ5IGJ1bGstY2xlYXJpbmcgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucywgcmVkdWNpbmcgdGhlIHRpbWUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTExgKSBhbmQgbWVtb3J5IGRlYWxsb2NhdGlvbiAoYGtmcmVlYCkuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZDhlZTU0NTJiYmJjN2ZhMzlmOTAwMWM5YjE3ODFkODAwN2ZlNjU5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMjM6MTc6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKaW5kZXggMzZhYjNlNDkyOTE1NC4uYThlODE5ZmU5Nzg5OCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYwpAQCAtMTEzMyw5ICYjNDM7MTEzMywyMSBAQCBzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpCiBzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKQogewogCXN0cnVjdCBpdHNfY29sbGVjdGlvbiAqY3VyLCAqdGVtcDsKJiM0MzsJc3RydWN0IGl0c19kZXZpY2UgKmRldmljZTsKJiM0MzsJc3RydWN0IGl0c19pdGUgKml0ZTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsICZhbXA7aXRzLSZndDtjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkKLQkJdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLSZndDtjb2xsZWN0aW9uX2lkKTsKJiM0MzsJLyoKJiM0MzsJICogQnVsay1jbGVhciB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMuCiYjNDM7CSAqIFRoaXMgdHJhbnNmb3JtcyB0aGUgdGVhcmRvd24gY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKQomIzQzOwkgKiB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpLCBhdm9pZGluZyBndWVzdC10cmlnZ2VyZWQgaG9zdCBSQ1Ugc3RhbGxzLgomIzQzOwkgKi8KJiM0MzsJZm9yX2VhY2hfbHBpX2l0cyhkZXZpY2UsIGl0ZSwgaXRzKQomIzQzOwkJaXRlLSZndDtjb2xsZWN0aW9uID0gTlVMTDsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdGVtcCwgJmFtcDtpdHMtJmd0O2NvbGxlY3Rpb25fbGlzdCwgY29sbF9saXN0KSB7CiYjNDM7CQlsaXN0X2RlbCgmYW1wO2N1ci0mZ3Q7Y29sbF9saXN0KTsKJiM0MzsJCWtmcmVlKGN1cik7CiYjNDM7CX0KIH0KIAogLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBpdHNfbG9jayBtdXRleCBoZWxkICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmdpYyBJVFMgVGVhcmRvd24gT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgb3B0aW1pemluZyB0aGUgdGVhcmRvd24gcHJvY2VzcyBvZiB0aGUgVmlydHVhbCBHZW5lcmljIEludGVycnVwdCBDb250cm9sbGVyJiMzOTtzIChWR0lDKSBJbnRlcnJ1cHQgVHJhbnNsYXRpb24gU2VydmljZSAoSVRTKSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sIHdoaWNoIGl0ZXJhdGVkIHRocm91Z2ggYm90aCBjb2xsZWN0aW9ucyBhbmQgaW50ZXJydXB0IHRyYW5zbGF0aW9uIGVudHJpZXMgKElURXMpLCByZXN1bHRlZCBpbiBhIHRlYXJkb3duIGNvbXBsZXhpdHkgdGhhdCB3YXMgTyhDb2xsZWN0aW9ucyAqIElURXMpLiBUaGF0JiMzOTtzIGEgbmFzdHkgc2NhbGluZyBmYWN0b3IuIFRoaXMgY291bGQgbGVhZCB0byBndWVzdC10cmlnZ2VyZWQgUkNVIChSZWFkLUNvcHkgVXBkYXRlKSBzdGFsbHMsIHdoaWNoIGFyZSB0aGUgYmFuZSBvZiBhbnkgcmVhbC10aW1lIHN5c3RlbS4KCk15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7Z29vZCByaWRkYW5jZSEmIzM0OyBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIHdoZXJlIHlvdSAqYWJzb2x1dGVseSogd2FudCB0byBpbXByb3ZlIHRoZSB0aW1lIGNvbXBsZXhpdHkuIEluc3RlYWQgb2YgaXRlcmF0aW5nLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIHByZS1wYXNzOiB3ZSBidWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgd2UgYWN0dWFsbHkgZnJlZSB0aGUgY29sbGVjdGlvbnMgdGhlbXNlbHZlcy4gVGhlIG5ldyBjb21wbGV4aXR5IGJlY29tZXMgTyhDb2xsZWN0aW9ucyAmIzQzOyBJVEVzKS4gTXVjaCBiZXR0ZXIuIEl0IGFwcGVhcnMgdGhhdCBpdCBkb2VzIHNvIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBJVEVzLCBzZXR0aW5nIGBpdGUtJmd0O2NvbGxlY3Rpb24gPSBOVUxMYCBkaXJlY3RseS4gVGhlbiBpdCBjYW4gc2FmZWx5IGZyZWUgYWxsIGNvbGxlY3Rpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcnVsZSBvdXQgYW55IG9idmlvdXMgc2VjdXJpdHkgY29uY2VybnMuIElzIHRoZXJlIGFueSByaXNrIG9mIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhaz8gTGV0JiMzOTtzIHNlZTogdGhlIHBhdGNoIGp1c3Qgc2V0cyB0aGUgYGl0ZS0mZ3Q7Y29sbGVjdGlvbmAgcG9pbnRlcnMgdG8gTlVMTCBhbmQgdGhlbiBmcmVlcyB0aGUgbWVtb3J5LiBUaGVyZSYjMzk7cyBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb24sIG5vIGNvcHlpbmcgZGF0YSB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIGludGVybmFsIHN0cnVjdHVyZXMsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgYWJvdXQgcG9pbnRlciBtYW5pcHVsYXRpb24gYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gdG8gZml4IGFuIFJDVSBzdGFsbC4gSWYgdGhlcmUgKmlzKiBhIGJ1ZyBpbnRyb2R1Y2VkIGhlcmUsIGl0JiMzOTtzIGxpa2VseSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoaWNoIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGNhdGNoLgoKR2l2ZW4gdGhpcywgSSBjYW4gY29uZmlkZW50bHkgc3RhdGUgdGhhdCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBJIG1pZ2h0IHF1aWNrbHkgZ2xhbmNlIGF0IGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25gIGp1c3QgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcmUtb3B0aW1pemF0aW9uIGNvZGUsIGJ1dCBJJiMzOTttIGZlZWxpbmcgZ29vZCBhYm91dCB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgYSBjbGVhbiwgdGFyZ2V0ZWQgb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGFkZHJlc3MgYSByZWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9OTcxPXN0YXRpYyBpbnQgdmdpY19pdHNfYWxsb2NfY29sbGVjdGlvbihzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTg5LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjk5MDpzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsIHUzMiBjb2xsX2lkKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk5MS17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEwMzY9c3RhdGljIGludCB2Z2ljX2l0c19jbWRfaGFuZGxlX21hcGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA4My1cdFx0aWYgKG5ld19jb2xsKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwODQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA4NS1cdFx0cmV0dXJuIFBUUl9FUlIoaXRlKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA5My1cdFx0aWYgKG5ld19jb2xsKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwOTQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA5NS1cdFx0aXRzX2ZyZWVfaXRlKGt2bSwgaXRlKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTEyND1zdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzMzpzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzQte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMjIwPXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9tYXBjKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyMzAtXHRpZiAoIXZhbGlkKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTIzMTpcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTIzMi1cdFx0dmdpY19pdHNfaW52YWxpZGF0ZV9jYWNoZShpdHMpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjY3PXN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzEzLVx0XHRjYXNlIEdJVFNfQkFTRVJfVFlQRV9DT0xMRUNUSU9OOlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3MTQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTUtXHRcdFx0YnJlYWs7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE5MjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2Rldilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzMy1cdHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MzQ6XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzNS1cdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjU2OT1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZShzdHJ1Y3QgdmdpY19pdHMgKml0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5Ni1cdGlmIChyZXQgXHUwMDNjIDApXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjU5NzpcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QoaXRzLVx1MDAzZWRldi1cdTAwM2Vrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5OC1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjYyMj1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMxLVx0aWYgKHJldClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjMyOlx0XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChpdHMtXHUwMDNlZGV2LVx1MDAzZWt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMzLVx0cmV0dXJuIHJldDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjY1MT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19yZXNldChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYwLVx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY2MTpcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5OQoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmdpYyBJVFMgRnJlZWluZyBPcHRpbWl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtzbWFydCBtb3ZlLiYjMzQ7IFRoZXkmIzM5O3ZlIHJlY29nbml6ZWQgdGhhdCB0aGUgb3JpZ2luYWwgYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YCB3YXMgcG90ZW50aWFsbHkgY2F1c2luZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgc3BlY2lmaWNhbGx5IHdpdGggdGhhdCBPKENvbGxlY3Rpb25zICogSVRFcykgdGVhcmRvd24gY29tcGxleGl0eS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjaXBlIGZvciBSQ1Ugc3RhbGxzLCBhbmQgd2Uga25vdyB0aG9zZSBhcmUgYSByZWFsIHBhaW4gdG8gZGVidWcuCgpXaGF0IHRoZXkmIzM5O3ZlIGRvbmUsIGJ1bGstY2xlYXJpbmcgdGhvc2UgY29sbGVjdGlvbiBwb2ludGVycyBiZWZvcmUgZnJlZWluZyB0aGUgY29sbGVjdGlvbnMgZGlyZWN0bHksIGlzIGEgY2xldmVyIG9wdGltaXphdGlvbi4gSXQgYXZvaWRzIHRoZSBwZXItY29sbGVjdGlvbiBsb29wLCB3aGljaCBpcyBleGFjdGx5IHRoZSByaWdodCBhcHByb2FjaCB0byBtaW5pbWl6ZSB0aGUgaW1wYWN0LiBFZmZpY2llbmN5IGlzIGtleSBoZXJlLgoKTm93LCBJJiMzOTttIGFuYWx5emluZyBpdCBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGdvb2QgbmV3cyBpcywgdGhlcmUmIzM5O3Mgbm90aGluZyBpbW1lZGlhdGVseSBzY3JlYW1pbmcgJiMzNDtzZWN1cml0eSB2dWxuZXJhYmlsaXR5LiYjMzQ7IE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG1ha2luZyBpdHMgd2F5IHRvIHVzZXJzcGFjZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtcyBoZXJlIGFyZSB0ZXh0Ym9vayBtZW1vcnkgc2FmZXR5IGlzc3VlczogdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlcywgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gQnV0IHRob3NlIGFyZSB0aGUgYnJlYWQgYW5kIGJ1dHRlciBvZiBLQVNBTiYjMzk7cyBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzLiBUaGF0JiMzOTtzIHByZWNpc2VseSB3aGF0IGl0JiMzOTtzIHRoZXJlIGZvci4gU28sIHdoaWxlIEkmIzM5O2xsIHN0aWxsIGdpdmUgaXQgYSB0aG9yb3VnaCBvbmNlLW92ZXIsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJiMzOTt0IGdvaW5nIHRvIGJlIG5lZWRlZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNoYW5nZS4gS0FTQU4gc2hvdWxkIGJlIG1vcmUgdGhhbiBzdWZmaWNpZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIElUUyBjb2xsZWN0aW9ucyBieSBidWxrLWNsZWFyaW5nIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgZnJlZWluZyB0aGUgY29sbGVjdGlvbnMsIHJlZHVjaW5nIHRoZSB0aW1lIGNvbXBsZXhpdHkgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgdG8gTyhDb2xsZWN0aW9ucyAmIzQzOyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVx1MDAzZWNvbGxlY3Rpb24gPSBOVUxMYCkgYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gKGBrZnJlZWApLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSAoZS5nLiwgdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSkgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgSVRTIGNvbGxlY3Rpb25zIGJ5IGJ1bGstY2xlYXJpbmcgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucywgcmVkdWNpbmcgdGhlIHRpbWUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTExgKSBhbmQgbWVtb3J5IGRlYWxsb2NhdGlvbiAoYGtmcmVlYCkuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxNzo0Mi4zNDIzNTc4NTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU4MTg3NzQ0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZnaWNfaXRzX2Rlc3Ryb3lcIixcbiAgICBcInZnaWNfaXRzX3NldF9hdHRyXCIsXG4gICAgXCJ2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIElUUyBjb2xsZWN0aW9ucyBieSBidWxrLWNsZWFyaW5nIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgZnJlZWluZyB0aGUgY29sbGVjdGlvbnMsIHJlZHVjaW5nIHRoZSB0aW1lIGNvbXBsZXhpdHkgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgdG8gTyhDb2xsZWN0aW9ucyArIElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXFx1MDAzZWNvbGxlY3Rpb24gPSBOVUxMYCkgYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gKGBrZnJlZWApLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSAoZS5nLiwgdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSkgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICsgSVRFcykgdG8gcHJldmVudCBob3N0IFJDVSBzdGFsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQVJNNjQgS1ZNIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxNzo0Mi4zNDIzNjUxNTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjA4MDA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJkOGVlNTQ1MmJiYmM3ZmEzOWY5MDAxYzliMTc4MWQ4MDA3ZmU2NTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMjM6MTc6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXFxuaW5kZXggMzZhYjNlNDkyOTE1NC4uYThlODE5ZmU5Nzg5OCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcXG5AQCAtMTEzMyw5ICsxMTMzLDIxIEBAIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4gc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4ge1xcbiBcXHRzdHJ1Y3QgaXRzX2NvbGxlY3Rpb24gKmN1ciwgKnRlbXA7XFxuK1xcdHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2U7XFxuK1xcdHN0cnVjdCBpdHNfaXRlICppdGU7XFxuIFxcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCBcXHUwMDI2aXRzLVxcdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdClcXG4tXFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLVxcdTAwM2Vjb2xsZWN0aW9uX2lkKTtcXG4rXFx0LypcXG4rXFx0ICogQnVsay1jbGVhciB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMuXFxuK1xcdCAqIFRoaXMgdHJhbnNmb3JtcyB0aGUgdGVhcmRvd24gY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKVxcbitcXHQgKiB0byBPKENvbGxlY3Rpb25zICsgSVRFcyksIGF2b2lkaW5nIGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuXFxuK1xcdCAqL1xcbitcXHRmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpXFxuK1xcdFxcdGl0ZS1cXHUwMDNlY29sbGVjdGlvbiA9IE5VTEw7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCBcXHUwMDI2aXRzLVxcdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkge1xcbitcXHRcXHRsaXN0X2RlbChcXHUwMDI2Y3VyLVxcdTAwM2Vjb2xsX2xpc3QpO1xcbitcXHRcXHRrZnJlZShjdXIpO1xcbitcXHR9XFxuIH1cXG4gXFxuIC8qIE11c3QgYmUgY2FsbGVkIHdpdGggaXRzX2xvY2sgbXV0ZXggaGVsZCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxNzo0Mi43NTUyOTQ1NjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5MDM2OTMyNDcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmdpY19pdHNfZGVzdHJveVwiLFxuICAgIFwidmdpY19pdHNfc2V0X2F0dHJcIixcbiAgICBcInZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICsgSVRFcykgdG8gcHJldmVudCBob3N0IFJDVSBzdGFsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQVJNNjQgS1ZNIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDhlZTU0NTJiYmJjN2ZhMzlmOTAwMWM5YjE3ODFkODAwN2ZlNjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMjM6MTc6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbmluZGV4IDM2YWIzZTQ5MjkxNTQuLmE4ZTgxOWZlOTc4OTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuQEAgLTExMzMsOSArMTEzMywyMSBAQCBzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4gc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcbiB7XG4gXHRzdHJ1Y3QgaXRzX2NvbGxlY3Rpb24gKmN1ciwgKnRlbXA7XG4rXHRzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlO1xuK1x0c3RydWN0IGl0c19pdGUgKml0ZTtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdClcbi1cdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLVx1MDAzZWNvbGxlY3Rpb25faWQpO1xuK1x0LypcbitcdCAqIEJ1bGstY2xlYXIgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzLlxuK1x0ICogVGhpcyB0cmFuc2Zvcm1zIHRoZSB0ZWFyZG93biBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpXG4rXHQgKiB0byBPKENvbGxlY3Rpb25zICsgSVRFcyksIGF2b2lkaW5nIGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuXG4rXHQgKi9cbitcdGZvcl9lYWNoX2xwaV9pdHMoZGV2aWNlLCBpdGUsIGl0cylcbitcdFx0aXRlLVx1MDAzZWNvbGxlY3Rpb24gPSBOVUxMO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdGVtcCwgXHUwMDI2aXRzLVx1MDAzZWNvbGxlY3Rpb25fbGlzdCwgY29sbF9saXN0KSB7XG4rXHRcdGxpc3RfZGVsKFx1MDAyNmN1ci1cdTAwM2Vjb2xsX2xpc3QpO1xuK1x0XHRrZnJlZShjdXIpO1xuK1x0fVxuIH1cbiBcbiAvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGl0c19sb2NrIG11dGV4IGhlbGQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE3OjQyLjc1NTI5NzIyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDI0Njk4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNL0FSTTY0IFBhdGNoIGZvciBJVFMgQ2xlYW51cCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24gaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY2AuIEl0IHNlZW1zIHRoZXkndmUgY2hhbmdlZCB0aGUgd2F5IGNvbGxlY3Rpb25zIGFyZSBmcmVlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgSVRTIGNvZGUuIEluc3RlYWQgb2YgdGhlIHByZXZpb3VzIGFwcHJvYWNoLCB3aGljaCBlc3NlbnRpYWxseSBsb29wZWQgdGhyb3VnaCBhbGwgY29sbGVjdGlvbnMgYW5kIHRoZW4gcG90ZW50aWFsbHkgYWxsIElURXMgcGVyIGNvbGxlY3Rpb24sIHRoZSBuZXcgbWV0aG9kIGl0ZXJhdGVzIHRocm91Z2ggSVRFcyBhbmQgbnVsbHMgb3V0IHRoZSBgY29sbGVjdGlvbmAgcG9pbnRlciBmb3IgZWFjaCwgYW5kICp0aGVuKiBmcmVlcyB0aGUgY29sbGVjdGlvbnMuIFNtYXJ0LlxuXG5UaGUgc3RhdGVkIGdvYWwgaXMgY2xlYXJseSBvcHRpbWl6YXRpb247IHRoZXkncmUgYWltaW5nIHRvIGF2b2lkIGFuIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSBjb21wbGV4aXR5IGlzc3VlLCB3aGljaCBJIHJlY29nbml6ZSBjb3VsZCBsZWFkIHRvIHNvbWUgc2lnbmlmaWNhbnQgUkNVIHN0YWxscywgZXNwZWNpYWxseSBpbiBhIGhlYXZpbHkgbG9hZGVkIHN5c3RlbS4gV2UncmUgdGFsa2luZyBhYm91dCBLVk0gY29kZSwgdGFyZ2V0dGVkIHRvIEFSTTY0IGFyY2hpdGVjdHVyZSwgc28gdGhlIHN0YWtlcyBhcmUgcHJldHR5IGhpZ2ggaWYgdGhlcmUncyBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIG9wdGltaXphdGlvbiBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB1c2UgY2FzZT8gSXMgaXQgd29ydGggdGhlIGVmZm9ydCB0byB0aG9yb3VnaGx5IGZ1enogdGhpcyBtb2RpZmllZCBmdW5jdGlvbiB0byBlbnN1cmUgY29ycmVjdG5lc3M/IFRoZSBjb250ZXh0IGhlcmUgaXMgSVRTIHRlYXJkb3duIG9yIGRlc3RydWN0aW9uLCBhbmQgYSBxdWljayBzZWFyY2ggZm9yIGNhbGxzIHRvIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgaXMgZGVmaW5pdGVseSBpbiBvcmRlci4gR290dGEgZmlndXJlIG91dCB0aGUgbGlrZWx5IHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgaXMgZXhlY3V0ZWQgdG8gYXNzZXNzIHRoZSByaXNrL3Jld2FyZCBvZiBkaXZpbmcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjI3LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NDguMDU3NzY5NjM3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjE5OTMxNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExMzM6c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTY2Nz1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzEzLVxcdFxcdGNhc2UgR0lUU19CQVNFUl9UWVBFX0NPTExFQ1RJT046XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3MTQ6XFx0XFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzE1LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE5MjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2RldilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTMzLVxcdHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxOTM0OlxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGt2bSwgaXRzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzNS1cXHR2Z2ljX2l0c19pbnZhbGlkYXRlX2NhY2hlKGl0cyk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjU2OT1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZShzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNTk2LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNTk3OlxcdFxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGl0cy1cXHUwMDNlZGV2LVxcdTAwM2Vrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI1OTgtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjYyMj1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2MzEtXFx0aWYgKHJldClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjYzMjpcXHRcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChpdHMtXFx1MDAzZWRldi1cXHUwMDNla3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMzLVxcdHJldHVybiByZXQ7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjY1MT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19yZXNldChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2NjAtXFx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI2NjE6XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NDkuODE5NzY4MzEzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjUwMTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgY2FuIHNlZSBpdCdzIGNhbGxlZCBmcm9tIGEgZmV3IGtleSBhcmVhcyB3aXRoaW4gdGhlIEtWTSBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAsIGB2Z2ljX2l0c19kZXN0cm95YCwgYHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZWAsIGB2Z2ljX2l0c19yZXN0b3JlX3RhYmxlc192MGAsIGFuZCBgdmdpY19pdHNfcmVzZXRgIGFyZSBhbGwgbWFraW5nIHVzZSBvZiBpdC4gR2l2ZW4gaXRzIGludGVncmF0aW9uIHdpdGggdGhvc2UgY3JpdGljYWwgY29tcG9uZW50cywgaXQncyBoaWdobHkgbGlrZWx5IHRvIGJlIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgYW5kIHRoZXJlZm9yZSBhIGdvb2QgY2FuZGlkYXRlLiBUaGUgZmFjdCB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBBUk02NCBhcmNoaXRlY3R1cmUgaXMgYWxzbyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gTm93LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgS1ZNIGFuZCBWR0lDIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBkaXZlIGRlZXBlci4gVGhpcyBzZWVtcyBwcm9taXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NTMuNjYyMjcyNjQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTU2MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE3OjUzLjcxMTIzNDI4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzU3MjkyMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBWR0lDIElUUyBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIHNwZWNpZmljLiBJJ20gZm9jdXNpbmcgb24gdGhlIFZHSUMgKFZpcnR1YWwgR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKS4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSwgSSB3YW50IHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBjdXN0b20gY29uZmlndXJhdGlvbnMgb3IgbnVhbmNlcyByZWxhdGVkIHRvIHRoZSBJVFMgc3BlY2lmaWNhbGx5IGZvciB0aGlzIFZHSUMgaW1wbGVtZW50YXRpb24uIEkga25vdyB0aGUgYmFzZSBzcGVjaWZpY2F0aW9ucywgYnV0IHBhc3QgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRvIGFsd2F5cyBkb3VibGUtY2hlY2sgZm9yIHZlbmRvci1zcGVjaWZpYyBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucyB0aGF0IG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBvYnZpb3VzIGluIHRoZSBzdGFuZGFyZCBkb2N1bWVudGF0aW9uLiBJdCdzIGEga2V5IGZpcnN0IHN0ZXAgdG8gYXZvaWQgcG90ZW50aWFsbHkgd2FzdGluZyB0aW1lIGNoYXNpbmcgZG93biBpc3N1ZXMgdGhhdCBhcmUgc2ltcGx5IGR1ZSB0byBhIHByZXZpb3VzbHkta25vd24sIGJ1dCBwZXJoYXBzIG92ZXJsb29rZWQsIGNvbmZpZ3VyYXRpb24gc2V0dGluZy4gQmV0dGVyIHRvIHJ1bGUgdGhhdCBvdXQgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NTYuOTQ2OTY2NjQ5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjczMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NTYuOTkyMjQ1Mzk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNTAxNDY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQgZmlsZS4uLlxuXG4qKkFuYWx5emluZyBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYCBmb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBhIG1lbnRhbCBzY2FuIGZvciBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMg4oCTIHNwZWNpZmljYWxseSwgYCNpZmRlZmAsIGAjaWZuZGVmYCwgYCNpZmAsIGV0Yy4g4oCTIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSBmaWxlLiBNeSBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgaGFzIHNpZ25pZmljYW50IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJ1aWx0IGludG8gaXQuIFRoZSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKSBjb2RlIGlzIG9mdGVuIGEgdGFyZ2V0IGZvciBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgb2YgaGFyZHdhcmUsIGFuZCB0aGUgYCNpZmRlZmBzIGFyZSBteSBicmVhZCBhbmQgYnV0dGVyIGZvciBzcG90dGluZyB0aG9zZSBkaWZmZXJlbmNlcy4gSXQgaXMgYW4gaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGluY2x1ZGVkIGluIGFsbCBidWlsZHMgb3IgaWYgdGhlcmUgYXJlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gdGhlIHRhcmdldCBzeXN0ZW0uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJ1aWxkJ3MgZmxleGliaWxpdHkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjAwLjgxNzI2MzcyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwODY0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg2Nz1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODkzLVxcdC8qIFllcCwgZXZlbiBtb3JlIHRyaWNrZXJ5IGZvciBsb2NrIG9yZGVyaW5nLi4uICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4OTQ6I2lmZGVmIENPTkZJR19MT0NLREVQXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4OTUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2aXRzLVxcdTAwM2VjbWRfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjAwLjg2NDM1NzQxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzUwNDc0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIG9uIEFSTTY0OiBBIFF1aWNrIExvb2sgYXQgdGhlIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBLVk0gaXMgYXV0b21hdGljYWxseSBidWlsdCB3aGVuIGVuYWJsZWQgb24gQVJNNjQsIHRoYXQgbXVjaCBJIGtub3cuIE5vdywgSSBuZWVkIHRvIHNlZSBleGFjdGx5ICpob3cqIGEgc3BlY2lmaWMgcGFydCBvZiBpdCwgYHZnaWMtaXRzLm9gLCBpcyBicm91Z2h0IGludG8gYmVpbmcuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgYnVpbGQgcHJvY2VzcywgYW5kLCBrbm93aW5nIG15IHdheSBhcm91bmQgdGhpcyBrZXJuZWwgc3RydWN0dXJlLCB0aGF0IG1lYW5zIGNyYWNraW5nIG9wZW4gYGFyY2gvYXJtNjQva3ZtL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWdpYywgb3IgYXQgbGVhc3QgdGhlIG1ha2UgcnVsZXMsIGhhcHBlbnMuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhpcyBNYWtlZmlsZSBob2xkcy4uLiBJIGV4cGVjdCBJJ2xsIGZpbmQgbXkgYW5zd2VyIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTYzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MDQuMTk5NDA4MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTMyMzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWMtaXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTE2PWt2bS15ICs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXFxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTI1LVxcdCB2Z2ljL3ZnaWMtbW1pby12My5vIHZnaWMvdmdpYy1rdm0tZGV2aWNlLm8gXFxcXFxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlOjI2OlxcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cXHQgdmdpYy92Z2ljLXY1Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MDQuMjQ3OTQ3ODg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyMzA1NzM1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGllZCB0byB0aGUgYGt2bS15YCBidWlsZCwgYW5kIGJ5IGV4dGVuc2lvbiwgYENPTkZJR19LVk1gLiBSaWdodCwgdGhhdCdzIHRoZSBzZXR1cC4gSXQncyB0b3VjaGluZyBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGluIGB2Z2ljLWl0cy5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBhbiBvcHRpbWl6YXRpb24gYW5kL29yIGJ1ZyBmaXggZGVzaWduZWQgdG8gbWl0aWdhdGUgUkNVIHN0YWxscy4gVGhlIGNvbXBsZXhpdHkgY2hhbmdlLCBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSBkb3duIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSwgaXMgdGhlIGtleSBpbmRpY2F0b3Igb2YgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgb3IgYSBjcml0aWNhbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtb2RlbC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFsdGVyaW5nIHRoZSBleGVjdXRpb24gZmxvdyByZWxhdGVkIHRvIGhvdyBjb2xsZWN0aW9ucyBhcmUgZnJlZWQgYW5kIElURXMgYXJlIHVwZGF0ZWQuIFRoaXMgc291bmRzIGxpa2UgcHJpbWUgZnV6emluZyBtYXRlcmlhbC5cblxuTXkgZm9jdXMgaXMgdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24uIEl0J3Mgc3RhdGljLCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgbm9uLXN0YXRpYyBjYWxsZXJzIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBiZWluZyB1c2VkLiBMZXQncyBzZWUuLi4gdGhlIGNhbGxlcnMgYXJlOlxuXG4qICAgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgIHdoaWNoIGdvZXMgdGhyb3VnaCBgdmdpY19tbWlvX3dyaXRlYCAtXHUwMDNlIGBrdm1faW9fYnVzX3dyaXRlYC5cbiogICBgdmdpY19pdHNfZGVzdHJveWAgd2hpY2ggZ29lcyB0aHJvdWdoIGBrdm1fZGVzdHJveV9kZXZpY2VzYCAtXHUwMDNlIGBrdm1fZGVzdHJveV92bWAuXG4qICAgYHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZWAgd2hpY2ggZ29lcyB0aHJvdWdoIGEgY2hhaW4gb2Ygc3RhdGljIGZ1bmN0aW9ucyAoYHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwYCwgYHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzYCwgYHZnaWNfaXRzX3NldF9hdHRyYCkgYW5kIHRoZW4gZmluYWxseSBga3ZtX2RldmljZV9pb2N0bF9hdHRyYC5cbiogICBgdmdpY19pdHNfcmVzZXRgIHdoaWNoIGFsc28gY2FsbHMgdGhyb3VnaCB0aGF0IHN0YXRpYyBjaGFpbiB0byBga3ZtX2RldmljZV9pb2N0bF9hdHRyYC5cblxuQWxyaWdodCwgSSdsbCBwYXkgY2xvc2VyIGF0dGVudGlvbiB0byBgdmdpY19pdHNfZGVzdHJveWAgYW5kIGB2Z2ljX2l0c19zZXRfYXR0cmAuIEFoLCB0aGV5J3JlIGJvdGggY2FsbGJhY2tzIHdpdGhpbiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCB3aGljaCBpcyBsaWtlbHkgYSBrZXkgc3RydWN0IGZvciB0aGUgSVRTIGRldmljZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoYXQgc3RydWN0IGRlZmluaXRpb24gbmV4dC4gVGhpcyB3aWxsIGRlZmluZSB0aGUgbGlmZWN5Y2xlIGFuZCBvcGVyYXRpb25zIG9mIHRoZSBJVFMsIHJpZ2h0P1xuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjEyLjQ3ODUyNTk1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIxNzU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJtX3ZnaWNfaXRzX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjpzdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9hcm1fdmdpY19pdHNfb3BzO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNy1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02MTk9dm9pZCB2Z2ljX2l0c19pbnZhbGlkYXRlX2FsbF9jYWNoZXMoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYyNi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXYsIFxcdTAwMjZrdm0tXFx1MDAzZWRldmljZXMsIHZtX25vZGUpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjI3OlxcdFxcdGlmIChkZXYtXFx1MDAzZW9wcyAhPSBcXHUwMDI2a3ZtX2FybV92Z2ljX2l0c19vcHMpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYyOC1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNzk0PXN0YXRpYyBpbnQgdmdpY19pdHNfZ2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODI3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODI4OnN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2FybV92Z2ljX2l0c19vcHMgPSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MjktXFx0Lm5hbWUgPSBcXFwia3ZtLWFybS12Z2ljLWl0c1xcXCIsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgzNz1pbnQga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZSh2b2lkKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODM4LXtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjgzOTpcXHRyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXFx1MDAyNmt2bV9hcm1fdmdpY19pdHNfb3BzLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODQwLVxcdFxcdFxcdFxcdCAgICAgICBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfSVRTKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MTIuNTI4NzQ5OTg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNDUxNDk5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBJVFMgRGV2aWNlIENhbGxiYWNrcyBmb3IgRXhwbG9pdGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY2FsbGJhY2tzOiBgdmdpY19pdHNfc2V0X2F0dHJgLCBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19jcmVhdGVgLCBgdmdpY19pdHNfaGFzX2F0dHJgLCBhbmQgYHZnaWNfaXRzX2dldF9hdHRyYC4gVGhleSdyZSBhbGwgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGluaXRpYWxseSBtYWtlcyBtZSB0aGluayB0aGV5J2QgYmUgaGFyZGVyIHRvIHRhcmdldCBkaXJlY3RseS4gQnV0IHRoZW4gSSByZW1lbWJlcjogdGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBga3ZtX2RldmljZV9vcHNgIHN0cnVjdHVyZSwgYW5kIHRob3NlIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGZyb20gZ2VuZXJpYyBLVk0gY29kZSB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoYXQncyBrZXkuXG5cbklmIHRoZXkgd2VyZSBpbmxpbmVkLCB0aGUgYHN0YXRpY2AgZGVjbGFyYXRpb24gKndvdWxkKiBiZSBhIHByb2JsZW0uIFRhcmdldGluZyB0aGVtIGJ5IG5hbWUgd291bGQgYmUgZGlmZmljdWx0LiBCdXQgc2luY2UgdGhleSdyZSBmdW5jdGlvbiBwb2ludGVycywgdGhleSAqYXJlbid0KiBpbmxpbmVkLiBUaGUgY29tcGlsZXIgaGFzIHRvIHByb3ZpZGUgYSByZWFsIGFkZHJlc3MgZm9yIHRoZW0uIEFuZCB0aGF0IG9wZW5zIHVwIHBvc3NpYmlsaXRpZXMuXG5cblRoZSBiZWF1dHkgb2Ygc3l6a2FsbGVyIGlzIHRoYXQgaXQgY2FuIHRhcmdldCBpb2N0bHMsIGxpa2UgYEtWTV9TRVRfREVWSUNFX0FUVFJgLCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgcmVhY2ggYHZnaWNfaXRzX3NldF9hdHRyYC4gVGhhdCdzIGEgZGlyZWN0IHJvdXRlLiBOb3csIGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGVhc2llciB0byBsZXZlcmFnZT8gSSBzZWUgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgLCBidXQgdGhhdCdzIGp1c3QgcmVnaXN0cmF0aW9uLCBzbyBsaWtlbHkgbm90IGludGVyZXN0aW5nIGZyb20gYW4gZXhwbG9pdCBwZXJzcGVjdGl2ZS5cblxuRm9jdXNpbmcgYmFjayBvbiBgdmdpY19pdHNfc2V0X2F0dHJgIGFuZCBgdmdpY19pdHNfZGVzdHJveWDigKYgZXZlbiB0aG91Z2ggdGhleSdyZSBgc3RhdGljYCwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdXNhZ2UgY2hhbmdlcyBldmVyeXRoaW5nLiBTeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSdyZSBub3QgaW5saW5lZCwgYW5kIHRoZWlyIGFkZHJlc3NlcyAqYXJlKiB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSdyZSBub3QgaW5saW5lZC5cblxuU28sIHRoZSBwbGFuIGlzOiB3ZSBjYW4gZGVmaW5pdGVseSB1c2UgYHZnaWNfaXRzX3NldF9hdHRyYCBhbmQgYHZnaWNfaXRzX2Rlc3Ryb3lgLiBMZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoZXkgYXJlLCBpbiBmYWN0LCBzdGF0aWMgZnVuY3Rpb25zLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkzMiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODoxOS44NzM5MDI1OTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzU4NzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfaXRzX3NldF9hdHRyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9Mjc0Mj1ib29sIGt2bV9hcmNoX2FsbG93X3dyaXRlX3dpdGhvdXRfcnVubmluZ192Y3B1KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNzQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNzQ5OnN0YXRpYyBpbnQgdmdpY19pdHNfc2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjc1MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgyOD1zdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9hcm1fdmdpY19pdHNfb3BzID0ge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzEtXFx0LmRlc3Ryb3kgPSB2Z2ljX2l0c19kZXN0cm95LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODMyOlxcdC5zZXRfYXR0ciA9IHZnaWNfaXRzX3NldF9hdHRyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMzLVxcdC5nZXRfYXR0ciA9IHZnaWNfaXRzX2dldF9hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODoxOS45MjAyNjcyMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NDk3MjA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgc2VlbSB0byBiZSAqc3RhdGljKiB3aGljaCBpc24ndCBpZGVhbCBmb3IgYW4gZW50cnkgcG9pbnQuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGlzIHRoZXJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IG1pZ2h0IHNlcnZlIGEgYmV0dGVyIHB1cnBvc2U/IExldCBtZSB0aGluaywgKnZnaWNfaXRzX2Rlc3Ryb3kqIGlzIGRlZmluaXRlbHkgb3V0LCBiZWluZyBzdGF0aWMuIEhtLCB3aGF0IGFib3V0ICp2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyKj8gVGhhdCdzIGFsc28gc3RhdGljLi4uIGJ1dCB3YWl0LCBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBmcm9tICp2Z2ljX21taW9fd3JpdGUqLiBPa2F5LCAqdmdpY19tbWlvX3dyaXRlKiBpcyBub24tc3RhdGljLCBzbyBsZXQncyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDI1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MjMuMzA1MjQxNjg0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM5Mjc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Z2ljX21taW9fd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNTExPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19jYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE1MTctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE1MTg6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19jYmFzZXIoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTUxOS1cXHRcXHRcXHRcXHQgICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNTQzPXN0YXRpYyB2b2lkIHZnaWNfaXRzX3Byb2Nlc3NfY29tbWFuZHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNTc4LSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNTc5OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfY3dyaXRlcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNTgwLVxcdFxcdFxcdFxcdFxcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTY0NT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE2NjYtI2RlZmluZSBHSVRTX0JBU0VSX1JPX01BU0tcXHQoR0VOTUFTS19VTEwoNTIsIDQ4KSB8IEdFTk1BU0tfVUxMKDU4LCA1NikpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE2Njc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE2NjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTcyMT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pdHNfY3RscihzdHJ1Y3Qga3ZtICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3Mzc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19jdGxyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MzgtXFx0XFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE3OTI9c3RhdGljIHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiBpdHNfcmVnaXN0ZXJzW10gPSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3OTMtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DVExSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNzk0OlxcdFxcdHZnaWNfbW1pb19yZWFkX2l0c19jdGxyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2N0bHIsIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3OTUtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDMtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DQkFTRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4MDQ6XFx0XFx0dmdpY19tbWlvX3JlYWRfaXRzX2NiYXNlciwgdmdpY19tbWlvX3dyaXRlX2l0c19jYmFzZXIsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDUtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDYtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DV1JJVEVSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODA3OlxcdFxcdHZnaWNfbW1pb19yZWFkX2l0c19jd3JpdGVyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2N3cml0ZXIsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDgtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgxMy1cXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0JBU0VSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODE0OlxcdFxcdHZnaWNfbW1pb19yZWFkX2l0c19iYXNlciwgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciwgMHg0MCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgxNS1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM9MjU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfdjJfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTUxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NTI6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3YyX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNTMtXFx0XFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTcyPXN0YXRpYyBpbnQgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfdjJfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTEwNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjEwNjpcXHR2Z2ljX21taW9fd3JpdGVfdjJfbWlzYyh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMDctXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTExMD1zdGF0aWMgaW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YyX2dyb3VwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTE0LVxcdGlmICh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2gudmdpYy52Ml9ncm91cHNfdXNlcl93cml0YWJsZSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjExNTpcXHRcXHR2Z2ljX21taW9fd3JpdGVfZ3JvdXAodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTE2LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMTktXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzoxMjA6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3NnaXIoc3RydWN0IGt2bV92Y3B1ICpzb3VyY2VfdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTEyMS1cXHRcXHRcXHRcXHQgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM9MTYyPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE3OS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjE4MDpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE4MS1cXHRcXHRcXHRcXHQgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0yMDg9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfc2dpcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTIyNC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjIyNTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfc2dpcGVuZGMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMjI2LVxcdFxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMjQ2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MjQ3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0yNDgtXFx0XFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0yNzU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfdmNwdWlmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzIxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MzIyOnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV92Y3B1aWYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzIzLVxcdFxcdFxcdFxcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTM2MS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjM2MjpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfZGlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTM2My1cXHRcXHRcXHRcXHRncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0zNzI9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfYXByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzk2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6Mzk3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9hcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzk4LVxcdFxcdFxcdFxcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTQyMz1zdGF0aWMgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uIHZnaWNfdjJfZGlzdF9yZWdpc3RlcnNbXSA9IHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQyNC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoR0lDX0RJU1RfQ1RSTCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQyNTpcXHRcXHR2Z2ljX21taW9fcmVhZF92Ml9taXNjLCB2Z2ljX21taW9fd3JpdGVfdjJfbWlzYyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQyNi1cXHRcXHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92Ml9taXNjLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MjgtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9JR1JPVVAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0Mjk6XFx0XFx0dmdpY19tbWlvX3JlYWRfZ3JvdXAsIHZnaWNfbW1pb193cml0ZV9ncm91cCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQzMC1cXHRcXHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92Ml9ncm91cCwgMSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDMyLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfRU5BQkxFX1NFVCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQzMzpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDM0LVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9zZW5hYmxlLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzYtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9FTkFCTEVfQ0xFQVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0Mzc6XFx0XFx0dmdpY19tbWlvX3JlYWRfZW5hYmxlLCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQzOC1cXHRcXHROVUxMLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfY2VuYWJsZSwgMSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQwLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfUEVORElOR19TRVQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NDE6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQyLVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX3BlbmRpbmcsIHZnaWNfdWFjY2Vzc193cml0ZV9zcGVuZGluZywgMSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQ0LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfUEVORElOR19DTEVBUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ0NTpcXHRcXHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NDYtXFx0XFx0dmdpY191YWNjZXNzX3JlYWRfcGVuZGluZywgdmdpY191YWNjZXNzX3dyaXRlX2NwZW5kaW5nLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NDgtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9BQ1RJVkVfU0VULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDQ5OlxcdFxcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTAtXFx0XFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTItXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9BQ1RJVkVfQ0xFQVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NTM6XFx0XFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfY2FjdGl2ZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1NC1cXHRcXHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX2NhY3RpdmUsIDEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX1BSSSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ1NzpcXHRcXHR2Z2ljX21taW9fcmVhZF9wcmlvcml0eSwgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5LCBOVUxMLCBOVUxMLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDU4LVxcdFxcdDgsIFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTktXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9UQVJHRVQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjA6XFx0XFx0dmdpY19tbWlvX3JlYWRfdGFyZ2V0LCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0LCBOVUxMLCBOVUxMLCA4LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDYxLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjItXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9DT05GSUcsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjM6XFx0XFx0dmdpY19tbWlvX3JlYWRfY29uZmlnLCB2Z2ljX21taW9fd3JpdGVfY29uZmlnLCBOVUxMLCBOVUxMLCAyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDY0LVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2NS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19ESVNUX1NPRlRJTlQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjY6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfc2dpciwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2Ny1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjgtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfRElTVF9TR0lfUEVORElOR19DTEVBUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ2OTpcXHRcXHR2Z2ljX21taW9fcmVhZF9zZ2lwZW5kLCB2Z2ljX21taW9fd3JpdGVfc2dpcGVuZGMsIDE2LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDcwLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfRElTVF9TR0lfUEVORElOR19TRVQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NzI6XFx0XFx0dmdpY19tbWlvX3JlYWRfc2dpcGVuZCwgdmdpY19tbWlvX3dyaXRlX3NnaXBlbmRzLCAxNixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3My1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCB8IFZHSUNfQUNDRVNTXzhiaXQpLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz00NzY9c3RhdGljIGNvbnN0IHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiB2Z2ljX3YyX2NwdV9yZWdpc3RlcnNbXSA9IHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3Ny1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfQ1RSTCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ3ODpcXHRcXHR2Z2ljX21taW9fcmVhZF92Y3B1aWYsIHZnaWNfbW1pb193cml0ZV92Y3B1aWYsIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzktXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDgwLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0NQVV9QUklNQVNLLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDgxOlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4Mi1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0JJTlBPSU5ULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDg0OlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4NS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODYtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0FMSUFTX0JJTlBPSU5ULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDg3OlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4OC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODktXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0FDVElWRVBSSU8sXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0OTA6XFx0XFx0dmdpY19tbWlvX3JlYWRfYXByLCB2Z2ljX21taW9fd3JpdGVfYXByLCAxNixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5MS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTItXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0lERU5ULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDkzOlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5NC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTUtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ19DUFVfREVBQ1RJVkFURSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ5NjpcXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9kaXIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTctXFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9ODE9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfdjNfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTEyMC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjEyMTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdjNfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0xMjItXFx0XFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTE3MD1zdGF0aWMgaW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMTUtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoyMTY6XFx0dmdpY19tbWlvX3dyaXRlX3YzX21pc2ModmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjE3LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz0yMjA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIzNy1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjIzODpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMzktXFx0XFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTI3Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF92M3JfY3RscihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTI4NC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI4NTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdjNyX2N0bHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjg2LVxcdFxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NDc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3Byb3BiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNDg2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NDg3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9wcm9wYmFzZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy00ODgtXFx0XFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz01MDc9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcGVuZGJhc2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01MTctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1MTg6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3BlbmRiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTUxOS1cXHRcXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTU0ND1zdGF0aWMgdm9pZCB2Z2ljX3NldF9yZGlzdF9idXN5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBidXN5KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NTQtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1NTU6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2ludmxwaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NTYtXFx0XFx0XFx0XFx0ICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTg2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NTg3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pbnZhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTg4LVxcdFxcdFxcdFxcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5MC17XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1OTE6XFx0LyogU2VlIHZnaWNfbW1pb193cml0ZV9pbnZscGkoKSBmb3IgdGhlIGVhcmx5IHJldHVybiByYXRpb25hbGUgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5Mi1cXHRpZiAoKGFkZHIgXFx1MDAyNiA0KSB8fCAhdmdpY19scGlzX2VuYWJsZWQodmNwdSkpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYxMy1cXHRcXHQucmVhZCA9IHZnaWNfbW1pb19yZWFkX3JheixcXHRcXHRcXHRcXHRcXFxcXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2MTQ6XFx0XFx0LndyaXRlID0gdmdpY19tbWlvX3dyaXRlX3dpLFxcdFxcdFxcdFxcdFxcXFxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYxNS1cXHR9LCB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz02MjY9c3RhdGljIGNvbnN0IHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiB2Z2ljX3YzX2Rpc3RfcmVnaXN0ZXJzW10gPSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MjctXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ0RfQ1RMUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYyODpcXHRcXHR2Z2ljX21taW9fcmVhZF92M19taXNjLCB2Z2ljX21taW9fd3JpdGVfdjNfbWlzYyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYyOS1cXHRcXHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92M19taXNjLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNEX1NUQVRVU1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2MzI6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmFvLCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzMtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM0LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUdST1VQUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYzNTpcXHRcXHR2Z2ljX21taW9fcmVhZF9ncm91cCwgdmdpY19tbWlvX3dyaXRlX2dyb3VwLCBOVUxMLCBOVUxMLCAxLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM2LVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYzNy1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lTRU5BQkxFUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYzODpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM5LVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9zZW5hYmxlLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NDEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JQ0VOQUJMRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NDI6XFx0XFx0dmdpY19tbWlvX3JlYWRfZW5hYmxlLCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0My1cXHQgICAgICAgTlVMTCwgdmdpY191YWNjZXNzX3dyaXRlX2NlbmFibGUsIDEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0NS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lTUEVORFIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NDY6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjQ3LVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX3BlbmRpbmcsIHZnaWNfdjNfdWFjY2Vzc193cml0ZV9wZW5kaW5nLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NDktXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JQ1BFTkRSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjUwOlxcdFxcdHZnaWNfbW1pb19yZWFkX3BlbmRpbmcsIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1MS1cXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3dpLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JU0FDVElWRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NTQ6XFx0XFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1NS1cXHRcXHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUsIDEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1Ny1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lDQUNUSVZFUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY1ODpcXHRcXHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjU5LVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfY2FjdGl2ZSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjYxLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSVBSSU9SSVRZUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY2MjpcXHRcXHR2Z2ljX21taW9fcmVhZF9wcmlvcml0eSwgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5LCBOVUxMLCBOVUxMLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjYzLVxcdFxcdDgsIFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NjQtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JVEFSR0VUU1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NjU6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIE5VTEwsIE5VTEwsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NjYtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2Ny1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lDRkdSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjY4OlxcdFxcdHZnaWNfbW1pb19yZWFkX2NvbmZpZywgdmdpY19tbWlvX3dyaXRlX2NvbmZpZywgTlVMTCwgTlVMTCwgMixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2OS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzAtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JR1JQTU9EUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY3MTpcXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgTlVMTCwgTlVMTCwgMSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3Mi1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JUk9VVEVSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njc0OlxcdFxcdHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIsIHZnaWNfbW1pb193cml0ZV9pcm91dGVyLCBOVUxMLCBOVUxMLCA2NCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3NS1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ0RfSURSRUdTLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njc3OlxcdFxcdHZnaWNfbW1pb19yZWFkX3YzX2lkcmVncywgdmdpY19tbWlvX3dyaXRlX3dpLCA0OCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3OC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTY4MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uIHZnaWNfdjNfcmRfcmVnaXN0ZXJzW10gPSB7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4My1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfQ1RMUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY4NDpcXHRcXHR2Z2ljX21taW9fcmVhZF92M3JfY3RsciwgdmdpY19tbWlvX3dyaXRlX3Yzcl9jdGxyLCA0LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjg1LVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfU1RBVFVTUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY4NzpcXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4OC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02ODktXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX0lJRFIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTA6XFx0XFx0dmdpY19tbWlvX3JlYWRfdjNyX2lpZHIsIHZnaWNfbW1pb193cml0ZV93aSwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5MS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTItXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ1JfVFlQRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTM6XFx0XFx0dmdpY19tbWlvX3JlYWRfdjNyX3R5cGVyLCB2Z2ljX21taW9fd3JpdGVfd2ksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTQtXFx0XFx0TlVMTCwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfd2ksIDgsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfV0FLRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTc6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTgtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjk5LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9QUk9QQkFTRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MDA6XFx0XFx0dmdpY19tbWlvX3JlYWRfcHJvcGJhc2UsIHZnaWNfbW1pb193cml0ZV9wcm9wYmFzZSwgOCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwMS1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwMi1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfUEVOREJBU0VSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzAzOlxcdFxcdHZnaWNfbW1pb19yZWFkX3BlbmRiYXNlLCB2Z2ljX21taW9fd3JpdGVfcGVuZGJhc2UsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDQtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDUtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX0lOVkxQSVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MDY6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfaW52bHBpLCA4LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzA3LVxcdFxcdFZHSUNfQUNDRVNTXzY0Yml0IHwgVkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzA4LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JTlZBTExSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzA5OlxcdFxcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX2ludmFsbCwgOCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxMC1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxMS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfU1lOQ1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MTI6XFx0XFx0dmdpY19tbWlvX3JlYWRfc3luYywgdmdpY19tbWlvX3dyaXRlX3dpLCA0LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzEzLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxNC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfSURSRUdTLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzE1OlxcdFxcdHZnaWNfbW1pb19yZWFkX3YzX2lkcmVncywgdmdpY19tbWlvX3dyaXRlX3dpLCA0OCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxNi1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxOC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyArIEdJQ1JfSUdST1VQUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MTk6XFx0XFx0dmdpY19tbWlvX3JlYWRfZ3JvdXAsIHZnaWNfbW1pb193cml0ZV9ncm91cCwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcyMC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSVNFTkFCTEVSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcyMjpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzIzLVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9zZW5hYmxlLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjUtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSUNFTkFCTEVSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcyNjpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzI3LVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9jZW5hYmxlLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjktXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSVNQRU5EUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MzA6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzMxLVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX3BlbmRpbmcsIHZnaWNfdjNfdWFjY2Vzc193cml0ZV9wZW5kaW5nLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MzMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSUNQRU5EUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MzQ6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzM1LVxcdFxcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfd2ksIDQsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczNy1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoU1pfNjRLICsgR0lDUl9JU0FDVElWRVIwLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzM4OlxcdFxcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MzktXFx0XFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NDEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSUNBQ1RJVkVSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjc0MjpcXHRcXHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQzLVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfY2FjdGl2ZSwgNCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQ1LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICsgR0lDUl9JUFJJT1JJVFlSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjc0NjpcXHRcXHR2Z2ljX21taW9fcmVhZF9wcmlvcml0eSwgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5LCAzMixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc0Ny1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCB8IFZHSUNfQUNDRVNTXzhiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQ4LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICsgR0lDUl9JQ0ZHUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NDk6XFx0XFx0dmdpY19tbWlvX3JlYWRfY29uZmlnLCB2Z2ljX21taW9fd3JpdGVfY29uZmlnLCA4LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzUwLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc1MS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyArIEdJQ1JfSUdSUE1PRFIwLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzUyOlxcdFxcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCA0LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzUzLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc1NC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyArIEdJQ1JfTlNBQ1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NTU6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NTYtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0yNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTMwLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzE6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMzItXFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTY0PXN0YXRpYyB2b2lkIHZnaWNfdXBkYXRlX3ZzZ2koc3RydWN0IHZnaWNfaXJxICppcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6Njk6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNzAtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTk2PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTE1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTE2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTE3LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY0LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTY1OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY2LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9MzA0PXN0YXRpYyB2b2lkIF9fc2V0X3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zNTItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzozNTM6dm9pZCB2Z2ljX21taW9fd3JpdGVfc3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMzU0LVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTM4OT1zdGF0aWMgdm9pZCBfX2NsZWFyX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy00MzktXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo0NDA6dm9pZCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNDQxLVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTU0Nj1zdGF0aWMgdm9pZCB2Z2ljX21taW9fY2hhbmdlX2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX2lycSAqaXJxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo1OTM6c3RhdGljIHZvaWQgX192Z2ljX21taW9fd3JpdGVfY2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTQtXFx0XFx0XFx0XFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjA2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjA3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjA4LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjE2OlxcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE3LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02MjI9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjUte1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjI2OlxcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjI3LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjktXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2MzA6c3RhdGljIHZvaWQgX192Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MzEtXFx0XFx0XFx0XFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQzLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjQ0OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQ1LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjUyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjUzOlxcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjU0LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02NTk9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NjIte1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjYzOlxcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjY0LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02Njc9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY5MS0gKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY5Mjp2b2lkIHZnaWNfbW1pb193cml0ZV9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTMtXFx0XFx0XFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NzE0PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNzMyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NzMzOnZvaWQgdmdpY19tbWlvX3dyaXRlX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzQtXFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oPTExNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTExNy1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjExODp2b2lkIHZnaWNfbW1pb193cml0ZV93aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMTktXFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xMjQ9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9ncm91cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTEyNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjEyNzp2b2lkIHZnaWNfbW1pb193cml0ZV9ncm91cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMjgtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xMzA9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMzM6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzQtXFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMzc6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzgtXFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xNTI9dW5zaWduZWQgbG9uZyB2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTU0LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTU1OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE1Ni1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xNTgtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxNTk6dm9pZCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTYwLVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oPTE3ND11bnNpZ25lZCBsb25nIHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE3Ni1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE3Nzp2b2lkIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE3OC1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE4MC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE4MTp2b2lkIHZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE4Mi1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oPTE5Mz11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTk1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTk2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE5Ny1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0yMDA9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0yMDItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoyMDM6dm9pZCB2Z2ljX21taW9fd3JpdGVfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTIwNC1cXHRcXHRcXHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12Mi5jPTE1MT12b2lkIHZnaWNfdjJfZGVhY3RpdmF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYy0yMTYtXFx0aWYgKG1taW8pXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYyLmM6MjE3OlxcdFxcdHZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsICh2YWwgLyAzMikgKiA0LCA0LCBCSVQodmFsICUgMzIpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYy0yMTgtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYz0xOTU9dm9pZCB2Z2ljX3YzX2RlYWN0aXZhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdmFsKVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjIzLjM1MjYzOTg4MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY4NjIwNzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgU2VjdXJpdHkgUmlza3MgaW4gdGhlIElUUyBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAgZnVuY3Rpb24uIEl0J3Mgc3RhdGljLCB3aGljaCBpcyB0aGUgZmlyc3QgcG9pbnQgb2Ygbm90ZS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gY2FsbHMgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAuIE5vcGUsIHRoYXQgb25lJ3Mgc3RhdGljIHRvby4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBjaGVjayB0aGUgb2J2aW91cyBjYW5kaWRhdGVzOiBgdmdpY19pdHNfZGVzdHJveWA/IEFsc28gc3RhdGljLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGBrdm1fdmdpY19yZWdpc3Rlcl9pdHNfZGV2aWNlYD8gQWhhISBUaGF0IG9uZSdzIG5vbi1zdGF0aWMuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IFN5emthbGxlciBpcyBjYXBhYmxlIG9mIHRhcmdldGluZyB0aG9zZSBga3ZtX2RldmljZV9vcHNgIGNhbGxiYWNrcyB0aHJvdWdoIEtWTSBpb2N0bHMuIFNpbmNlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgc3RhdGljIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuIChtZWFuaW5nIHRoZXkncmUgbm90IGlubGluZWQpLCB0aGV5J3JlIHBvdGVudGlhbCB0YXJnZXRzLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIFN5emthbGxlciByZWFsbHkgZ29lcyB0byB0b3duIGZ1enppbmcgdGhlc2UgS1ZNIGlvY3Rscy5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSwgSSBuZWVkIHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgdnVsbmVyYWJsZS4gSXQncyB0aW1lIHRvIHN5c3RlbWF0aWNhbGx5IHJldmlldyBhbGwgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBkaXZlIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUzNywiT3V0cHV0VG9rZW5zIjo2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODoyOC4yMjEyNjM2MjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTM5ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHZnaWNfaXRzX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzMtICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3NDpzdHJ1Y3QgdmdpY19pdHNfYWJpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTc1LVxcdGludCBjdGVfZXN6O1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTYwNT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19pbnZhbGlkYXRlX2NhY2hlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYxOC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjE5OnZvaWQgdmdpY19pdHNfaW52YWxpZGF0ZV9hbGxfY2FjaGVzKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjIwLXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02MzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjYzNzppbnQgdmdpY19pdHNfcmVzb2x2ZV9scGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjM4LVxcdFxcdFxcdCB1MzIgZGV2aWQsIHUzMiBldmVudGlkLCBzdHJ1Y3QgdmdpY19pcnEgKippcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9Njg1PXN0YXRpYyBpbnQgdmdpY19pdHNfdHJpZ2dlcl9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MDYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcwNzppbnQgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwOC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzMxLSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MzI6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MzMte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEyNjc9c3RhdGljIGludCB2Z2ljX2l0c19jbWRfaGFuZGxlX2NsZWFyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTI4Ny1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTI4ODppbnQgdmdpY19pdHNfaW52X2xwaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMjg5LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMjk3PXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9pbnYoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzE5LSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMzIwOmludCB2Z2ljX2l0c19pbnZhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzIxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MjguMjY5NDA4Nzg0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1NDY4OTkyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNIElUUyBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZyB0aGUgS1ZNIElUUyAoSW50ZXJydXB0IFRyYW5zbGF0aW9uIFNlcnZpY2UpIGNvZGUsIHNwZWNpZmljYWxseSB1c2luZyBzeXprYWxsZXIuXG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgYSBsaXN0IG9mIHBvdGVudGlhbCBjYW5kaWRhdGVzOiBgdmdpY19pdHNfaW52YWxpZGF0ZV9hbGxfY2FjaGVzYCwgYHZnaWNfaXRzX3Jlc29sdmVfbHBpYCwgYHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb25gLCBgdmdpY19pdHNfaW5qZWN0X21zaWAsIGB2Z2ljX2l0c19pbnZfbHBpYCwgYHZnaWNfaXRzX2ludmFsbGAsIGFuZCBga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZWAuIE5vbmUgb2YgdGhlc2UgZGlyZWN0bHkgY2FsbCBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgLCB3aGljaCBpcyBhIGZ1bmN0aW9uIG9mIGludGVyZXN0IGJlY2F1c2UgaXQncyBjYWxsZWQgZnJvbSBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19zZXRfYXR0cmAsIGFuZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAuIFNpbmNlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgcGFydCBvZiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCBhbmQgdGhlcmVmb3JlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIHRoZXNlIGxvb2tlZCBwcm9taXNpbmcuXG5cbkluaXRpYWxseSwgSSB3YXMgY29uY2VybmVkIGFib3V0IHN0YXRpYyBmdW5jdGlvbnMgYmVpbmcgcHJvYmxlbWF0aWMgYmVjYXVzZSBvZiBpbmxpbmluZywgYnV0IEkgcmVjYWxsZWQgdGhhdCBzeXprYWxsZXIgKmNhbiogcmVzb2x2ZSBzdGF0aWMgZnVuY3Rpb25zIGlmIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSSBkb3VibGUtY2hlY2tlZCB0aGF0IGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgcHJlc2VudCBpbiBga2FsbHN5bXNgLiBHb29kIG5ld3MhIFRoZXkgYXJlIGFjY2Vzc2libGUuIEFuZCwgaW1wb3J0YW50bHksIHRoZXkgYXJlIG5vdCBpbmxpbmVkLlxuXG5Ib3dldmVyLCB0aGUgaWRlYWwgc2l0dWF0aW9uIGlzIHN0aWxsIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyBpZiB0aGV5IGV4aXN0LiAgU28sIEkgcmV2aWV3ZWQgdGhlIGxpc3QgYWdhaW4gbG9va2luZyBmb3IgYmV0dGVyIG9wdGlvbnMuIEkgYWxzbyBleHBsb3JlZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAsIGJ1dCB0aGF0IGxlZCBtZSB0byBgdmdpY19tbWlvX3dyaXRlYCwgd2hpY2ggaXNuJ3QgZGVmaW5lZCBpbiBgdmdpYy1pdHMuY2AuICBJIHdpbGwgbmVlZCB0byBjb25zaWRlciB0aGF0IGZ1bmN0aW9uIGluIHRoZSBmdXR1cmUsIGFzIGl0IGlzIG5vbi1zdGF0aWMuXG5cblVsdGltYXRlbHksIEkgY29uY2x1ZGUgdGhhdCBgdmdpY19pdHNfc2V0X2F0dHJgIGxvb2tzIGxpa2UgYSBzdHJvbmcgY2FuZGlkYXRlIGJlY2F1c2UgaXQncyBub24taW5saW5lZCBhbmQgaXMgZGlyZWN0bHkgcGFydCBvZiB0aGUgYGt2bV9hcm1fdmdpY19pdHNfb3BzYCB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyLiAgQW5kIGlmIEkgY2FuJ3QgZmluZCBhbnl0aGluZyBiZXR0ZXIsIGB2Z2ljX2l0c19kZXN0cm95YCB3aWxsIHdvcmssIGJlY2F1c2UgaXQncyBhbHNvIG5vbi1pbmxpbmVkIGFuZCBzeXprYWxsZXIgY2FuIG1hdGNoIGl0cyBzeW1ib2wuIEkgc2hvdWxkIGFsc28gY2hlY2sgYHZnaWNfbW1pb193cml0ZWAgaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA4NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODozNy44MTYzMTIxMjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjA3MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfbW1pb193cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9MjU9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9yYW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjMxOnZvaWQgdmdpY19tbWlvX3dyaXRlX3dpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgYWRkcixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTMyLVxcdFxcdFxcdHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02ND1zdGF0aWMgdm9pZCB2Z2ljX3VwZGF0ZV92c2dpKHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY5OnZvaWQgdmdpY19tbWlvX3dyaXRlX2dyb3VwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgYWRkcixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTcwLVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz05Nj11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjExNjp2b2lkIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNy1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2NC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjE2NTp2b2lkIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2Ni1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTMwND1zdGF0aWMgdm9pZCBfX3NldF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMzUyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzUzOnZvaWQgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTM1NC1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0zODk9c3RhdGljIHZvaWQgX19jbGVhcl9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNDM5LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NDQwOnZvaWQgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTQ0MS1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz01NDY9c3RhdGljIHZvaWQgdmdpY19tbWlvX2NoYW5nZV9hY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdmdpY19pcnEgKmlycSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTkyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NTkzOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTk0LVxcdFxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYwNzp2b2lkIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwOC1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYxNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYxNjpcXHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYxNy1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjIyPWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjI1LXtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYyNjpcXHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyNy1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjI5LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjMwOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjMxLVxcdFxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0My1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY0NDp2b2lkIHZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0NS1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY1Mi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY1MzpcXHRfX3ZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY1NC1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjU5PWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjYyLXtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY2MzpcXHRfX3ZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY2NC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjY3PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTEtICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2OTI6dm9pZCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjkzLVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTcxND11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTczMi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjczMzp2b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNzM0LVxcdFxcdFxcdCAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODozNy44NjI1MjUwOTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwNDUwMDE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWZ2ljLUlUUyBUZWFyZG93biBhbmQgU2V0dXAqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgYHZnaWMtaXRzLmNgIGZpbGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBjb2RlIGZvciBzZXR1cCBhbmQgdGVhcmRvd24gb2YgdGhlIElUUyAoSW50ZXJydXB0IFRyYW5zbGF0aW9uIFNlcnZpY2UpIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LiBgdmdpY19pdHNfZGVzdHJveWAgYW5kIGB2Z2ljX2l0c19zZXRfYXR0cmAgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZSBjcml0aWNhbC5cblxuSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgIGFzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHNlZW1lZCBsaWtlIGEgcG9zc2libGUgcG9pbnQgb2YgaW50ZXJlc3QuIEl0J3Mgbm90ICpkaXJlY3RseSogaW52b2x2ZWQgaW4gdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY2hhbmdlZCBjb2RlLCBpdCdzIGp1c3QgYSByZWdpc3RyYXRpb24gZnVuY3Rpb24uIFNvLCBzY3JhdGNoIHRoYXQuIEJ1dCwgd2FpdC4uLiBhZnRlciBhIHNlY29uZCBsb29rLCB0aGUgY29kZSAqYWN0dWFsbHkqIGRvZXMgc29tZXRoaW5nIGluIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAuXG5cbkdpdmVuIHRoYXQsIEknbSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFzIHByaW1hcnkgcG9pbnRzIG9mIGludGVyZXN0IGJlY2F1c2UgSSB1bmRlcnN0YW5kIHRoZXNlIGFyZSByZWxldmFudCBmdW5jdGlvbiBuYW1lcy4gQWxzbywgSSBuZWVkIHRvIGNoZWNrIGB2Z2ljX2l0c19yZXNldGAuIEFoLCBidXQgdGhhdCBvbmUgaXMgc3RhdGljLiBTYW1lIHdpdGggYHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZWAuIEkgd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0byBjb25zaWRlciB0aG9zZSBhcyB3ZWxsLCBkZXNwaXRlIG5vdCB1c2luZyB0aGVtIGFzIHByaW1hcnkgZm9jdXMgc3ltYm9scy5cblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYW5kIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUuIEkgc2VlIHRoZSByZXF1aXJlbWVudCBmb3IgYENPTkZJR19LVk1gIGlzIHByZXNlbnQsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFNvLCBJIHdpbGwgY2hlY2sgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIGZvciB0aGUgcmVzdCBvZiB0aGUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6NDMuNjY3MDI4MjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODg3MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjQzLjcxNTkyMzIxOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0NzU0Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIE15IEtWTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIHJpZ2h0IG5vdy4gSXQncyB0aGUgcHJpbWFyeSBwaWVjZSBvZiB0aGlzIHB1enpsZS4gQnV0LCBob2xkIG9uIGEgbWludXRlLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIGFsc28gYSBjcml0aWNhbCBjb21wb25lbnQuIFRoZXkgd29yayB0b2dldGhlci4gU28sIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgaWYgYEtWTWAgcmVsaWVzIG9uIGFueXRoaW5nIHNwZWNpZmljLiBJJ2xsIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMsIGVuc3VyZSBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gY29uZmxpY3RzLiBJIG5lZWQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgYEtWTWAgaXMgYnVpbHQgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzY0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6NDcuMTMwNjgyNjA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzEwNzYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZz00Nz1jb25maWcgUFREVU1QX1NUQUdFMl9ERUJVR0ZTXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy00OC1cXHRib29sIFxcXCJQcmVzZW50IHRoZSBzdGFnZS0yIHBhZ2V0YWJsZXMgdG8gZGVidWdmc1xcXCJcXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo1MDpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo1MTpcXHRkZXBlbmRzIG9uIEFSQ0hfSEFTX1BURFVNUFxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNTItXFx0c2VsZWN0IFBURFVNUFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZz03NT1jb25maWcgTlZIRV9FTDJfVFJBQ0lOR1xcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzYtXFx0Ym9vbFxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBUUkFDSU5HIFxcdTAwMjZcXHUwMDI2IEZUUkFDRVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzgtXFx0c2VsZWN0IFRSQUNFX1JFTU9URVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZz05Mj1jb25maWcgUEtWTV9TVEFDS1RSQUNFXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy05My1cXHRib29sIFxcXCJQcm90ZWN0ZWQgS1ZNIGh5cGVydmlzb3Igc3RhY2t0cmFjZXNcXFwiXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo5NDpcXHRkZXBlbmRzIG9uIFBLVk1fRElTQUJMRV9TVEFHRTJfT05fUEFOSUNcXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTk1LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODo0Ny4xNzc4NDc3ODRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU5NzQ1OTQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIE1lbnUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1lbnVjb25maWcgS1ZNYCBlbnRyeSwgYW5kIHNvbWV0aGluZyBmZWVscyBvZmYuIFRoZXJlJ3Mgbm8gYGRlcGVuZHMgb25gIGNsYXVzZSBhdHRhY2hlZCB0byBpdCBpbiB0aGUgc25pcHBldC4gVGhhdCBzZWVtcyB1bnVzdWFsLCBnaXZlbiBLVk0ncyBkZXBlbmRlbmNpZXMgb24gdmFyaW91cyBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgaGVyZS4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlICpjb21wbGV0ZSogZGVmaW5pdGlvbiBvZiBgS1ZNYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBjb25maWd1cmF0aW9ucyBhbmQgcHJlY2lzZWx5IHdoYXQgY29uZGl0aW9ucyBtdXN0IGJlIG1ldCBmb3IgaXQgdG8gYmUgZW5hYmxlZC4gV2l0aG91dCB0aGF0IGNvbXByZWhlbnNpdmUgdmlldywgSSBjYW4ndCBiZSBjb25maWRlbnQgaW4gaW50ZXJwcmV0aW5nIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5MzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODo1Mi43NzUzMTA5MTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRtZW51Y29uZmlnIEtWTVxcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDIzOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4gIDI1OlxcdFxcdHNlbGVjdCBLVk1fTU1JT1xcbiAgMjY6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgMjc6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAyODpcXHRcXHRzZWxlY3QgS1ZNX1ZGSU9cXG4gIDI5OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcXG4gIDMwOlxcdFxcdHNlbGVjdCBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuICAzMTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICAzMjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMzM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAzNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX0JZUEFTU1xcbiAgMzU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMzY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcXG4gIDM3OlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzODpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM5OlxcdFxcdHNlbGVjdCBLVk1fR1VFU1RfTUVNRkRcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGlmIEtWTVxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgUFREVU1QX1NUQUdFMl9ERUJVR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjUyLjc3NTM3ODEwNVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQ3NjUyNTc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFZHSUMgSVRTIENvbGxlY3Rpb24gRnJlZWluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgS1ZNYCBhbmQsIGJ5IGV4dGVuc2lvbiwgYW55dGhpbmcgdXNpbmcgYFZJUlRVQUxJWkFUSU9OYC4gSSBuZWVkIHRvIGVuc3VyZSBib3RoIG9mIHRob3NlIGFyZSBpbmNsdWRlZCBpbiBteSBjb25maWd1cmF0aW9uLiBMZXQgbWUganVzdCBjb25maXJtIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWcgZGVwZW5kZW5jaWVzLi4uIE5vcGUsIHRoYXQgbG9va3MgY2xlYW4uXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGZ1bmRhbWVudGFsbHkgb3B0aW1pemVzIHRoZSBWR0lDIElUUyBjb2xsZWN0aW9uIGZyZWVpbmcgcHJvY2VzcyB3aXRoaW4gS1ZNIG9uIEFSTTY0LiBJdOKAmXMgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgc3dpdGNoaW5nIGZyb20gYW4gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0aW1lIGNvbXBsZXhpdHkgdG8gbWl0aWdhdGUgUkNVIHN0YWxscy4gQ3JpdGljYWxseSwgdGhpcyBjaGFuZ2UgaGFwcGVucyBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBzbyBpdCdzIGNsZWFybHkgcmVsZXZhbnQgdG8gdGhvc2UgcHJvY2Vzc2VzLlxuXG5UaGUgaW5pdGlhbCBhbmFseXNpcyBoaWdobGlnaHRlZCBgdmdpY19pdHNfZGVzdHJveWAgYW5kIGB2Z2ljX2l0c19zZXRfYXR0cmAgYXMgcHJpbWFyeSBwb2ludHMgb2YgaW50ZXJlc3QsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBjaGFuZ2UuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSAqc3VyZSogSSdtIHBpY2tpbmcgdGhlIHJpZ2h0IHN5bWJvbHMuIFRoZSBwcm9tcHQgcHJlZmVycyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZXNlIGFyZSAqdGVjaG5pY2FsbHkqIHN0YXRpYywgYnV0IHRoZXkgYXJlbid0IGlubGluZWQsIHNvIHRoZXkgc3RpbGwgcHJvdmlkZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBHaXZlbiB0aGlzLCBJ4oCZbSB0aGlua2luZyB0aGV5IGFyZSBzdGlsbCB0aGUgYmVzdCB0YXJnZXRzIGZvciBzeW1ib2xpYyBleGVjdXRpb24uXG5cbkxldCdzIHJldmlldyB0aGUgb3RoZXIgcG9zc2liaWxpdGllcywganVzdCBpbiBjYXNlLiBga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZWAgZG9lc24ndCBzZWVtIGRpcmVjdGx5IHJlbGV2YW50LCBhcyBpdCBkb2Vzbid0IGFwcGVhciB0byBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBga3ZtX2Rlc3Ryb3lfdm1gIGlzICp0b28qIGdlbmVyaWM7IGl0IGNvdWxkIHRyaWdnZXIgKm1hbnkqIHRoaW5ncy4gTGV0J3Mgbm90IGJyaW5nIGl0IGluLiBBbmQgdGhlbiB0aGVyZSdzIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIHN0YXRpYywgYW5kICpjb3VsZCogYmUgaW5saW5lZC4gSSB3aWxsIHN0aWNrIHdpdGggdGhlIG9yaWdpbmFsIHR3by5cblxuU28sIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYC4gSSdsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGB2Z2ljX2l0c19kZXN0cm95YCBpc24ndCBpbmxpbmVkLCB0aG91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNTk2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTk6MDMuMjUxOTA4Mjc5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODEwMjk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Z2ljX2l0c19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg2Nz1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTIzLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxOTI0OnN0YXRpYyB2b2lkIHZnaWNfaXRzX2Rlc3Ryb3koc3RydWN0IGt2bV9kZXZpY2UgKmt2bV9kZXYpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE5MjUte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTI4Mjg9c3RhdGljIHN0cnVjdCBrdm1fZGV2aWNlX29wcyBrdm1fYXJtX3ZnaWNfaXRzX29wcyA9IHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMwLVxcdC5jcmVhdGUgPSB2Z2ljX2l0c19jcmVhdGUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI4MzE6XFx0LmRlc3Ryb3kgPSB2Z2ljX2l0c19kZXN0cm95LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMyLVxcdC5zZXRfYXR0ciA9IHZnaWNfaXRzX3NldF9hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOTowMy4zMDAwMTcwMDhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MDExNzQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoaXMgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIEkgc2VlIHRoaXMgZnVuY3Rpb24gYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIG1lYW5zLCBieSBkZWZpbml0aW9uLCBpdCdzICpub3QqIGdvaW5nIHRvIGdldCBpbmxpbmVkLiBTYW1lIGdvZXMgZm9yIGB2Z2ljX2l0c19zZXRfYXR0cmAsIHRoZW4uIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYmUgc3VyZSwgSSBzaG91bGQganVtcCBvdmVyIHRvIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYC4gTmVlZCB0byBxdWlja2x5IHJldmlldyB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3NjQsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOTowNi41NzAxMzc1NjlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODc5Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjQ1PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2Ni0jZGVmaW5lIEdJVFNfQkFTRVJfUk9fTUFTS1xcdChHRU5NQVNLX1VMTCg1MiwgNDgpIHwgR0VOTUFTS19VTEwoNTgsIDU2KSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTY2NzpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2OC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzkyPXN0YXRpYyBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gaXRzX3JlZ2lzdGVyc1tdID0ge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MTMtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19CQVNFUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTgxNDpcXHRcXHR2Z2ljX21taW9fcmVhZF9pdHNfYmFzZXIsIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIsIDB4NDAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MTUtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE5OjA2LjYxNzAyMTM1N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDIyNTYxMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgSVRTIEZ1bmN0aW9uIFBvaW50ZXJzIGFuZCBQb3RlbnRpYWwgV2Vha25lc3NlcyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYFJFR0lTVEVSX0lUU19ERVNDYCBtYWNyby4gQW5kIGl0J3MgcGFzc2luZyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQgbWVhbnMgdGhlIGZ1bmN0aW9uIGlzbid0IGJlaW5nIGlubGluZWQsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gSXQgbWVhbnMgSSBuZWVkIHRvIGFsc28gYWRkIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYCB0byBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuIEl0IGRpcmVjdGx5IGNhbGxzIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIGEga2V5IGZ1bmN0aW9uIHRvIGV4YW1pbmUgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwb3RlbnRpYWwgaXNzdWVzLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIGV4cGFuZCBteSBhbmFseXNpcyB0b28uXG5cblRoZXJlZm9yZSwgZm9yIHRoaXMgcGFydGljdWxhciBhbmFseXNpcywgSSB3aWxsIGFkZCBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19zZXRfYXR0cmAgYW5kIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYCB0byBteSBGb2N1c1N5bWJvbHMgbGlzdC5cblxuTm93LCBsZXQncyBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDM2NywiT3V0cHV0VG9rZW5zIjoxNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTk6MTMuMDM5NTg1Mzk0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUwMjkxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Z2ljX2l0c19kZXN0cm95XCIsXG4gICAgXCJ2Z2ljX2l0c19zZXRfYXR0clwiLFxuICAgIFwidmdpY19tbWlvX3dyaXRlX2l0c19iYXNlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgS1ZNIFZHSUMgSVRTIGNvbGxlY3Rpb25zIGJ5IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGhvc3QgUkNVIHN0YWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBBUk02NCBLVk0gYXJjaGl0ZWN0dXJlIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IFZNIHRlYXJkb3duIG9yIElUUyByZXNldCwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZnaWNfaXRzX2Rlc3Ryb3lcIixcbiAgICBcInZnaWNfaXRzX3NldF9hdHRyXCIsXG4gICAgXCJ2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBLVk0gVkdJQyBJVFMgY29sbGVjdGlvbnMgYnkgY2hhbmdpbmcgdGhlIGNvbXBsZXhpdHkgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgdG8gTyhDb2xsZWN0aW9ucyArIElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTk6MTMuMTI0NjIzODMyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAzNjQ5NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE5OjEzLjEyNTMwNDM3MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNTAzNTgxMTI1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBJVFMgY29sbGVjdGlvbnMgYnkgYnVsay1jbGVhcmluZyB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMgYmVmb3JlIGZyZWVpbmcgdGhlIGNvbGxlY3Rpb25zLCByZWR1Y2luZyB0aGUgdGltZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVxcdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGApIGFuZCBtZW1vcnkgZGVhbGxvY2F0aW9uIChga2ZyZWVgKS4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UpIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmQ4ZWU1NDUyYmJiYzdmYTM5ZjkwMDFjOWIxNzgxZDgwMDdmZTY1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIzOjE3OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG5pbmRleCAzNmFiM2U0OTI5MTU0Li5hOGU4MTlmZTk3ODk4IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbkBAIC0xMTMzLDkgKzExMzMsMjEgQEAgc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4ge1xuIFx0c3RydWN0IGl0c19jb2xsZWN0aW9uICpjdXIsICp0ZW1wO1xuK1x0c3RydWN0IGl0c19kZXZpY2UgKmRldmljZTtcbitcdHN0cnVjdCBpdHNfaXRlICppdGU7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCBcdTAwMjZpdHMtXHUwMDNlY29sbGVjdGlvbl9saXN0LCBjb2xsX2xpc3QpXG4tXHRcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbihpdHMsIGN1ci1cdTAwM2Vjb2xsZWN0aW9uX2lkKTtcbitcdC8qXG4rXHQgKiBCdWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcy5cbitcdCAqIFRoaXMgdHJhbnNmb3JtcyB0aGUgdGVhcmRvd24gY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKVxuK1x0ICogdG8gTyhDb2xsZWN0aW9ucyArIElURXMpLCBhdm9pZGluZyBndWVzdC10cmlnZ2VyZWQgaG9zdCBSQ1Ugc3RhbGxzLlxuK1x0ICovXG4rXHRmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpXG4rXHRcdGl0ZS1cdTAwM2Vjb2xsZWN0aW9uID0gTlVMTDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkge1xuK1x0XHRsaXN0X2RlbChcdTAwMjZjdXItXHUwMDNlY29sbF9saXN0KTtcbitcdFx0a2ZyZWUoY3VyKTtcbitcdH1cbiB9XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBpdHNfbG9jayBtdXRleCBoZWxkICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOToxMy4xMjUzMDUyMzJaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIxMzM1MjUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZnaWMgSVRTIFRlYXJkb3duIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgb3B0aW1pemluZyB0aGUgdGVhcmRvd24gcHJvY2VzcyBvZiB0aGUgVmlydHVhbCBHZW5lcmljIEludGVycnVwdCBDb250cm9sbGVyJ3MgKFZHSUMpIEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlIChJVFMpIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24uIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXRlcmF0ZWQgdGhyb3VnaCBib3RoIGNvbGxlY3Rpb25zIGFuZCBpbnRlcnJ1cHQgdHJhbnNsYXRpb24gZW50cmllcyAoSVRFcyksIHJlc3VsdGVkIGluIGEgdGVhcmRvd24gY29tcGxleGl0eSB0aGF0IHdhcyBPKENvbGxlY3Rpb25zICogSVRFcykuIFRoYXQncyBhIG5hc3R5IHNjYWxpbmcgZmFjdG9yLiBUaGlzIGNvdWxkIGxlYWQgdG8gZ3Vlc3QtdHJpZ2dlcmVkIFJDVSAoUmVhZC1Db3B5IFVwZGF0ZSkgc3RhbGxzLCB3aGljaCBhcmUgdGhlIGJhbmUgb2YgYW55IHJlYWwtdGltZSBzeXN0ZW0uXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIFwiZ29vZCByaWRkYW5jZSFcIiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIHdoZXJlIHlvdSAqYWJzb2x1dGVseSogd2FudCB0byBpbXByb3ZlIHRoZSB0aW1lIGNvbXBsZXhpdHkuIEluc3RlYWQgb2YgaXRlcmF0aW5nLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIHByZS1wYXNzOiB3ZSBidWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgd2UgYWN0dWFsbHkgZnJlZSB0aGUgY29sbGVjdGlvbnMgdGhlbXNlbHZlcy4gVGhlIG5ldyBjb21wbGV4aXR5IGJlY29tZXMgTyhDb2xsZWN0aW9ucyArIElURXMpLiBNdWNoIGJldHRlci4gSXQgYXBwZWFycyB0aGF0IGl0IGRvZXMgc28gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIElURXMsIHNldHRpbmcgYGl0ZS1cdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGAgZGlyZWN0bHkuIFRoZW4gaXQgY2FuIHNhZmVseSBmcmVlIGFsbCBjb2xsZWN0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcnVsZSBvdXQgYW55IG9idmlvdXMgc2VjdXJpdHkgY29uY2VybnMuIElzIHRoZXJlIGFueSByaXNrIG9mIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhaz8gTGV0J3Mgc2VlOiB0aGUgcGF0Y2gganVzdCBzZXRzIHRoZSBgaXRlLVx1MDAzZWNvbGxlY3Rpb25gIHBvaW50ZXJzIHRvIE5VTEwgYW5kIHRoZW4gZnJlZXMgdGhlIG1lbW9yeS4gVGhlcmUncyBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb24sIG5vIGNvcHlpbmcgZGF0YSB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIGludGVybmFsIHN0cnVjdHVyZXMsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgYWJvdXQgcG9pbnRlciBtYW5pcHVsYXRpb24gYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gdG8gZml4IGFuIFJDVSBzdGFsbC4gSWYgdGhlcmUgKmlzKiBhIGJ1ZyBpbnRyb2R1Y2VkIGhlcmUsIGl0J3MgbGlrZWx5IGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hpY2ggS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2guXG5cbkdpdmVuIHRoaXMsIEkgY2FuIGNvbmZpZGVudGx5IHN0YXRlIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpc24ndCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIEkgbWlnaHQgcXVpY2tseSBnbGFuY2UgYXQgYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbmAganVzdCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByZS1vcHRpbWl6YXRpb24gY29kZSwgYnV0IEknbSBmZWVsaW5nIGdvb2QgYWJvdXQgdGhpcyBjaGFuZ2UuIEl0J3MgYSBjbGVhbiwgdGFyZ2V0ZWQgb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGFkZHJlc3MgYSByZWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOToyMS4zMzg2NjA5NzRaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU2MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTk3MT1zdGF0aWMgaW50IHZnaWNfaXRzX2FsbG9jX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTg5LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo5OTA6c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLCB1MzIgY29sbF9pZClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTkxLXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDM2PXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9tYXBpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA4My1cXHRcXHRpZiAobmV3X2NvbGwpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwODQ6XFx0XFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwODUtXFx0XFx0cmV0dXJuIFBUUl9FUlIoaXRlKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDkzLVxcdFxcdGlmIChuZXdfY29sbClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTA5NDpcXHRcXHRcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb24oaXRzLCBjb2xsX2lkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA5NS1cXHRcXHRpdHNfZnJlZV9pdGUoa3ZtLCBpdGUpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExMzM6c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTIyMD1zdGF0aWMgaW50IHZnaWNfaXRzX2NtZF9oYW5kbGVfbWFwYyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyMzAtXFx0aWYgKCF2YWxpZCkge1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMjMxOlxcdFxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbihpdHMsIGNvbGxfaWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMjMyLVxcdFxcdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjY3PXN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTMtXFx0XFx0Y2FzZSBHSVRTX0JBU0VSX1RZUEVfQ09MTEVDVElPTjpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTcxNDpcXHRcXHRcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTkyND1zdGF0aWMgdm9pZCB2Z2ljX2l0c19kZXN0cm95KHN0cnVjdCBrdm1fZGV2aWNlICprdm1fZGV2KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE5MzMtXFx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MzQ6XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTM1LVxcdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNTY5PXN0YXRpYyBpbnQgdmdpY19pdHNfcmVzdG9yZV9jb2xsZWN0aW9uX3RhYmxlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI1OTYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI1OTc6XFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QoaXRzLVxcdTAwM2VkZXYtXFx1MDAzZWt2bSwgaXRzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5OC1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNjIyPXN0YXRpYyBpbnQgdmdpY19pdHNfcmVzdG9yZV90YWJsZXNfdjAoc3RydWN0IHZnaWNfaXRzICppdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjYzMS1cXHRpZiAocmV0KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjMyOlxcdFxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGl0cy1cXHUwMDNlZGV2LVxcdTAwM2Vrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2MzMtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNjUxPXN0YXRpYyB2b2lkIHZnaWNfaXRzX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjY2MC1cXHR2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KGt2bSwgaXRzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY2MTpcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOToyMS4zODYwMjY3NDJaIiwiU2VxIjozOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc3NTA2NDE4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWZ2ljIElUUyBGcmVlaW5nIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJzbWFydCBtb3ZlLlwiIFRoZXkndmUgcmVjb2duaXplZCB0aGF0IHRoZSBvcmlnaW5hbCBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIHdhcyBwb3RlbnRpYWxseSBjYXVzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGF0IE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0ZWFyZG93biBjb21wbGV4aXR5LiBUaGF0J3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgUkNVIHN0YWxscywgYW5kIHdlIGtub3cgdGhvc2UgYXJlIGEgcmVhbCBwYWluIHRvIGRlYnVnLlxuXG5XaGF0IHRoZXkndmUgZG9uZSwgYnVsay1jbGVhcmluZyB0aG9zZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucyBkaXJlY3RseSwgaXMgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLiBJdCBhdm9pZHMgdGhlIHBlci1jb2xsZWN0aW9uIGxvb3AsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIG1pbmltaXplIHRoZSBpbXBhY3QuIEVmZmljaWVuY3kgaXMga2V5IGhlcmUuXG5cbk5vdywgSSdtIGFuYWx5emluZyBpdCBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGdvb2QgbmV3cyBpcywgdGhlcmUncyBub3RoaW5nIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBcInNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkuXCIgTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9uLCBubyBjaGFuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbWFraW5nIGl0cyB3YXkgdG8gdXNlcnNwYWNlLiBUaGUgcG90ZW50aWFsIHByb2JsZW1zIGhlcmUgYXJlIHRleHRib29rIG1lbW9yeSBzYWZldHkgaXNzdWVzOiB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWVzLCBvciBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBCdXQgdGhvc2UgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIEtBU0FOJ3MgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcy4gVGhhdCdzIHByZWNpc2VseSB3aGF0IGl0J3MgdGhlcmUgZm9yLiBTbywgd2hpbGUgSSdsbCBzdGlsbCBnaXZlIGl0IGEgdGhvcm91Z2ggb25jZS1vdmVyLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgZ29pbmcgdG8gYmUgbmVlZGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlLiBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIHN1ZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3OTksIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE5OjI4LjE2MTA5Mzk5OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBJVFMgY29sbGVjdGlvbnMgYnkgYnVsay1jbGVhcmluZyB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMgYmVmb3JlIGZyZWVpbmcgdGhlIGNvbGxlY3Rpb25zLCByZWR1Y2luZyB0aGUgdGltZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVxcdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGApIGFuZCBtZW1vcnkgZGVhbGxvY2F0aW9uIChga2ZyZWVgKS4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UpIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBJVFMgY29sbGVjdGlvbnMgYnkgYnVsay1jbGVhcmluZyB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMgYmVmb3JlIGZyZWVpbmcgdGhlIGNvbGxlY3Rpb25zLCByZWR1Y2luZyB0aGUgdGltZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVxcdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGApIGFuZCBtZW1vcnkgZGVhbGxvY2F0aW9uIChga2ZyZWVgKS4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UpIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowc2fnl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 22:59:58 +0000 UTC FinishedAt: 2026-08-18 23:19:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d75b48460559423f8c38aafed7a9cdec91d26d57", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d75b48460559423f8c38aafed7a9cdec91d26d57", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VIRTUALIZATION" ], "series_id": "824637d1-ca44-440a-90c5-b9d98737ea58" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vgic_its_destroy", "vgic_its_set_attr", "vgic_mmio_write_its_baser" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfaXRzX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7dmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgSVRTIGNvbGxlY3Rpb25zIGJ5IGJ1bGstY2xlYXJpbmcgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucywgcmVkdWNpbmcgdGhlIHRpbWUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTExgKSBhbmQgbWVtb3J5IGRlYWxsb2NhdGlvbiAoYGtmcmVlYCkuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJkOGVlNTQ1MmJiYmM3ZmEzOWY5MDAxYzliMTc4MWQ4MDA3ZmU2NTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMzoxNzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbmluZGV4IDM2YWIzZTQ5MjkxNTQuLmE4ZTgxOWZlOTc4OTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuQEAgLTExMzMsOSAmIzQzOzExMzMsMjEgQEAgc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4ge1xuIFx0c3RydWN0IGl0c19jb2xsZWN0aW9uICpjdXIsICp0ZW1wO1xuJiM0MztcdHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2U7XG4mIzQzO1x0c3RydWN0IGl0c19pdGUgKml0ZTtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdClcbi1cdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLVx1MDAzZWNvbGxlY3Rpb25faWQpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQnVsay1jbGVhciB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMuXG4mIzQzO1x0ICogVGhpcyB0cmFuc2Zvcm1zIHRoZSB0ZWFyZG93biBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpXG4mIzQzO1x0ICogdG8gTyhDb2xsZWN0aW9ucyAmIzQzOyBJVEVzKSwgYXZvaWRpbmcgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpXG4mIzQzO1x0XHRpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkge1xuJiM0MztcdFx0bGlzdF9kZWwoXHUwMDI2Y3VyLVx1MDAzZWNvbGxfbGlzdCk7XG4mIzQzO1x0XHRrZnJlZShjdXIpO1xuJiM0MztcdH1cbiB9XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBpdHNfbG9jayBtdXRleCBoZWxkICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfaXRzX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7dmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJkOGVlNTQ1MmJiYmM3ZmEzOWY5MDAxYzliMTc4MWQ4MDA3ZmU2NTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAyMzoxNzo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYwppbmRleCAzNmFiM2U0OTI5MTU0Li5hOGU4MTlmZTk3ODk4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jCkBAIC0xMTMzLDkgJiM0MzsxMTMzLDIxIEBAIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cykKIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpCiB7CiAJc3RydWN0IGl0c19jb2xsZWN0aW9uICpjdXIsICp0ZW1wOwomIzQzOwlzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlOwomIzQzOwlzdHJ1Y3QgaXRzX2l0ZSAqaXRlOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdGVtcCwgJmFtcDtpdHMtJmd0O2NvbGxlY3Rpb25fbGlzdCwgY29sbF9saXN0KQotCQl2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb24oaXRzLCBjdXItJmd0O2NvbGxlY3Rpb25faWQpOwomIzQzOwkvKgomIzQzOwkgKiBCdWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcy4KJiM0MzsJICogVGhpcyB0cmFuc2Zvcm1zIHRoZSB0ZWFyZG93biBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpCiYjNDM7CSAqIHRvIE8oQ29sbGVjdGlvbnMgJiM0MzsgSVRFcyksIGF2b2lkaW5nIGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuCiYjNDM7CSAqLwomIzQzOwlmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpCiYjNDM7CQlpdGUtJmd0O2NvbGxlY3Rpb24gPSBOVUxMOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCAmYW1wO2l0cy0mZ3Q7Y29sbGVjdGlvbl9saXN0LCBjb2xsX2xpc3QpIHsKJiM0MzsJCWxpc3RfZGVsKCZhbXA7Y3VyLSZndDtjb2xsX2xpc3QpOwomIzQzOwkJa2ZyZWUoY3VyKTsKJiM0MzsJfQogfQogCiAvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGl0c19sb2NrIG11dGV4IGhlbGQgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyNwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0vQVJNNjQgUGF0Y2ggZm9yIElUUyBDbGVhbnVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSB3YXkgY29sbGVjdGlvbnMgYXJlIGZyZWVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBJVFMgY29kZS4gSW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgYXBwcm9hY2gsIHdoaWNoIGVzc2VudGlhbGx5IGxvb3BlZCB0aHJvdWdoIGFsbCBjb2xsZWN0aW9ucyBhbmQgdGhlbiBwb3RlbnRpYWxseSBhbGwgSVRFcyBwZXIgY29sbGVjdGlvbiwgdGhlIG5ldyBtZXRob2QgaXRlcmF0ZXMgdGhyb3VnaCBJVEVzIGFuZCBudWxscyBvdXQgdGhlIGBjb2xsZWN0aW9uYCBwb2ludGVyIGZvciBlYWNoLCBhbmQgKnRoZW4qIGZyZWVzIHRoZSBjb2xsZWN0aW9ucy4gU21hcnQuCgpUaGUgc3RhdGVkIGdvYWwgaXMgY2xlYXJseSBvcHRpbWl6YXRpb247IHRoZXkmIzM5O3JlIGFpbWluZyB0byBhdm9pZCBhbiBPKENvbGxlY3Rpb25zICogSVRFcykgY29tcGxleGl0eSBpc3N1ZSwgd2hpY2ggSSByZWNvZ25pemUgY291bGQgbGVhZCB0byBzb21lIHNpZ25pZmljYW50IFJDVSBzdGFsbHMsIGVzcGVjaWFsbHkgaW4gYSBoZWF2aWx5IGxvYWRlZCBzeXN0ZW0uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IEtWTSBjb2RlLCB0YXJnZXR0ZWQgdG8gQVJNNjQgYXJjaGl0ZWN0dXJlLCBzbyB0aGUgc3Rha2VzIGFyZSBwcmV0dHkgaGlnaCBpZiB0aGVyZSYjMzk7cyBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaXMgdGhpcyBvcHRpbWl6YXRpb24gZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdXNlIGNhc2U/IElzIGl0IHdvcnRoIHRoZSBlZmZvcnQgdG8gdGhvcm91Z2hseSBmdXp6IHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24gdG8gZW5zdXJlIGNvcnJlY3RuZXNzPyBUaGUgY29udGV4dCBoZXJlIGlzIElUUyB0ZWFyZG93biBvciBkZXN0cnVjdGlvbiwgYW5kIGEgcXVpY2sgc2VhcmNoIGZvciBjYWxscyB0byBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuIEdvdHRhIGZpZ3VyZSBvdXQgdGhlIGxpa2VseSBzY2VuYXJpb3Mgd2hlcmUgdGhpcyBjb2RlIGlzIGV4ZWN1dGVkIHRvIGFzc2VzcyB0aGUgcmlzay9yZXdhcmQgb2YgZGl2aW5nIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTEyND1zdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzMzpzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzQte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjY3PXN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzEzLVx0XHRjYXNlIEdJVFNfQkFTRVJfVFlQRV9DT0xMRUNUSU9OOlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3MTQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTUtXHRcdFx0YnJlYWs7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE5MjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2Rldilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzMy1cdHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MzQ6XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzNS1cdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjU2OT1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZShzdHJ1Y3QgdmdpY19pdHMgKml0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5Ni1cdGlmIChyZXQgXHUwMDNjIDApXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjU5NzpcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QoaXRzLVx1MDAzZWRldi1cdTAwM2Vrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5OC1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjYyMj1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMxLVx0aWYgKHJldClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjMyOlx0XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChpdHMtXHUwMDNlZGV2LVx1MDAzZWt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMzLVx0cmV0dXJuIHJldDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjY1MT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19yZXNldChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYwLVx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY2MTpcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzE0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgY2FuIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGZldyBrZXkgYXJlYXMgd2l0aGluIHRoZSBLVk0gVkdJQyBJVFMgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgLCBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19yZXN0b3JlX2NvbGxlY3Rpb25fdGFibGVgLCBgdmdpY19pdHNfcmVzdG9yZV90YWJsZXNfdjBgLCBhbmQgYHZnaWNfaXRzX3Jlc2V0YCBhcmUgYWxsIG1ha2luZyB1c2Ugb2YgaXQuIEdpdmVuIGl0cyBpbnRlZ3JhdGlvbiB3aXRoIHRob3NlIGNyaXRpY2FsIGNvbXBvbmVudHMsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdG8gYmUgcmVhY2hhYmxlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBhbmQgdGhlcmVmb3JlIGEgZ29vZCBjYW5kaWRhdGUuIFRoZSBmYWN0IHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBBUk02NCBhcmNoaXRlY3R1cmUgaXMgYWxzbyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gTm93LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgS1ZNIGFuZCBWR0lDIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBkaXZlIGRlZXBlci4gVGhpcyBzZWVtcyBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgVkdJQyBJVFMgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIHNwZWNpZmljLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBWR0lDIChWaXJ0dWFsIEdlbmVyaWMgSW50ZXJydXB0IENvbnRyb2xsZXIpIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgSVRTIChJbnRlcnJ1cHQgVHJhbnNsYXRpb24gU2VydmljZSkuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUsIEkgd2FudCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGN1c3RvbSBjb25maWd1cmF0aW9ucyBvciBudWFuY2VzIHJlbGF0ZWQgdG8gdGhlIElUUyBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgVkdJQyBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IHRoZSBiYXNlIHNwZWNpZmljYXRpb25zLCBidXQgcGFzdCBleHBlcmllbmNlIGhhcyB0YXVnaHQgbWUgdG8gYWx3YXlzIGRvdWJsZS1jaGVjayBmb3IgdmVuZG9yLXNwZWNpZmljIGFkZGl0aW9ucyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IG9idmlvdXMgaW4gdGhlIHN0YW5kYXJkIGRvY3VtZW50YXRpb24uIEl0JiMzOTtzIGEga2V5IGZpcnN0IHN0ZXAgdG8gYXZvaWQgcG90ZW50aWFsbHkgd2FzdGluZyB0aW1lIGNoYXNpbmcgZG93biBpc3N1ZXMgdGhhdCBhcmUgc2ltcGx5IGR1ZSB0byBhIHByZXZpb3VzbHkta25vd24sIGJ1dCBwZXJoYXBzIG92ZXJsb29rZWQsIGNvbmZpZ3VyYXRpb24gc2V0dGluZy4gQmV0dGVyIHRvIHJ1bGUgdGhhdCBvdXQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoYXQgZmlsZS4uLgoKKipBbmFseXppbmcgYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY2AgZm9yIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgYSBtZW50YWwgc2NhbiBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIOKAkyBzcGVjaWZpY2FsbHksIGAjaWZkZWZgLCBgI2lmbmRlZmAsIGAjaWZgLCBldGMuIOKAkyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgZmlsZS4gTXkgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBjb2RlIGhhcyBzaWduaWZpY2FudCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBidWlsdCBpbnRvIGl0LiBUaGUgSVRTIChJbnRlcnJ1cHQgVHJhbnNsYXRpb24gU2VydmljZSkgY29kZSBpcyBvZnRlbiBhIHRhcmdldCBmb3IgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG9mIGhhcmR3YXJlLCBhbmQgdGhlIGAjaWZkZWZgcyBhcmUgbXkgYnJlYWQgYW5kIGJ1dHRlciBmb3Igc3BvdHRpbmcgdGhvc2UgZGlmZmVyZW5jZXMuIEl0IGlzIGFuIGluZGljYXRpb24gb2Ygd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBpbmNsdWRlZCBpbiBhbGwgYnVpbGRzIG9yIGlmIHRoZXJlIGFyZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIHRoZSB0YXJnZXQgc3lzdGVtLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCYjMzk7cyBmbGV4aWJpbGl0eSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4Njc9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4OTMtXHQvKiBZZXAsIGV2ZW4gbW9yZSB0cmlja2VyeSBmb3IgbG9jayBvcmRlcmluZy4uLiAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4OTQ6I2lmZGVmIENPTkZJR19MT0NLREVQXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg5NS1cdG11dGV4X2xvY2soXHUwMDI2aXRzLVx1MDAzZWNtZF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBvbiBBUk02NDogQSBRdWljayBMb29rIGF0IHRoZSBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEtWTSBpcyBhdXRvbWF0aWNhbGx5IGJ1aWx0IHdoZW4gZW5hYmxlZCBvbiBBUk02NCwgdGhhdCBtdWNoIEkga25vdy4gTm93LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgKmhvdyogYSBzcGVjaWZpYyBwYXJ0IG9mIGl0LCBgdmdpYy1pdHMub2AsIGlzIGJyb3VnaHQgaW50byBiZWluZy4gTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoZSBidWlsZCBwcm9jZXNzLCBhbmQsIGtub3dpbmcgbXkgd2F5IGFyb3VuZCB0aGlzIGtlcm5lbCBzdHJ1Y3R1cmUsIHRoYXQgbWVhbnMgY3JhY2tpbmcgb3BlbiBgYXJjaC9hcm02NC9rdm0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYywgb3IgYXQgbGVhc3QgdGhlIG1ha2UgcnVsZXMsIGhhcHBlbnMuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgTWFrZWZpbGUgaG9sZHMuLi4gSSBleHBlY3QgSSYjMzk7bGwgZmluZCBteSBhbnN3ZXIgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWMtaXRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgJiM0Mzs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXG4tLVxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMjUtXHQgdmdpYy92Z2ljLW1taW8tdjMubyB2Z2ljL3ZnaWMta3ZtLWRldmljZS5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToyNjpcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cdCB2Z2ljL3ZnaWMtdjUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzYwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0aWVkIHRvIHRoZSBga3ZtLXlgIGJ1aWxkLCBhbmQgYnkgZXh0ZW5zaW9uLCBgQ09ORklHX0tWTWAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBzZXR1cC4gSXQmIzM5O3MgdG91Y2hpbmcgYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YCBpbiBgdmdpYy1pdHMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYW4gb3B0aW1pemF0aW9uIGFuZC9vciBidWcgZml4IGRlc2lnbmVkIHRvIG1pdGlnYXRlIFJDVSBzdGFsbHMuIFRoZSBjb21wbGV4aXR5IGNoYW5nZSwgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgZG93biB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpLCBpcyB0aGUga2V5IGluZGljYXRvciBvZiBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBvciBhIGNyaXRpY2FsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1vZGVsLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93IHJlbGF0ZWQgdG8gaG93IGNvbGxlY3Rpb25zIGFyZSBmcmVlZCBhbmQgSVRFcyBhcmUgdXBkYXRlZC4gVGhpcyBzb3VuZHMgbGlrZSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLgoKTXkgZm9jdXMgaXMgdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24uIEl0JiMzOTtzIHN0YXRpYywgc28gSSBuZWVkIHRvIGZpbmQgdGhlIG5vbi1zdGF0aWMgY2FsbGVycyB0byB1bmRlcnN0YW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNhbGxlcnMgYXJlOgoKKiAgIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYCB3aGljaCBnb2VzIHRocm91Z2ggYHZnaWNfbW1pb193cml0ZWAgLSZndDsgYGt2bV9pb19idXNfd3JpdGVgLgoqICAgYHZnaWNfaXRzX2Rlc3Ryb3lgIHdoaWNoIGdvZXMgdGhyb3VnaCBga3ZtX2Rlc3Ryb3lfZGV2aWNlc2AgLSZndDsgYGt2bV9kZXN0cm95X3ZtYC4KKiAgIGB2Z2ljX2l0c19yZXN0b3JlX2NvbGxlY3Rpb25fdGFibGVgIHdoaWNoIGdvZXMgdGhyb3VnaCBhIGNoYWluIG9mIHN0YXRpYyBmdW5jdGlvbnMgKGB2Z2ljX2l0c19yZXN0b3JlX3RhYmxlc192MGAsIGB2Z2ljX2l0c19yZXN0b3JlX3RhYmxlc2AsIGB2Z2ljX2l0c19zZXRfYXR0cmApIGFuZCB0aGVuIGZpbmFsbHkgYGt2bV9kZXZpY2VfaW9jdGxfYXR0cmAuCiogICBgdmdpY19pdHNfcmVzZXRgIHdoaWNoIGFsc28gY2FsbHMgdGhyb3VnaCB0aGF0IHN0YXRpYyBjaGFpbiB0byBga3ZtX2RldmljZV9pb2N0bF9hdHRyYC4KCkFscmlnaHQsIEkmIzM5O2xsIHBheSBjbG9zZXIgYXR0ZW50aW9uIHRvIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYC4gQWgsIHRoZXkmIzM5O3JlIGJvdGggY2FsbGJhY2tzIHdpdGhpbiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCB3aGljaCBpcyBsaWtlbHkgYSBrZXkgc3RydWN0IGZvciB0aGUgSVRTIGRldmljZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoYXQgc3RydWN0IGRlZmluaXRpb24gbmV4dC4gVGhpcyB3aWxsIGRlZmluZSB0aGUgbGlmZWN5Y2xlIGFuZCBvcGVyYXRpb25zIG9mIHRoZSBJVFMsIHJpZ2h0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJtX3ZnaWNfaXRzX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY6c3RhdGljIHN0cnVjdCBrdm1fZGV2aWNlX29wcyBrdm1fYXJtX3ZnaWNfaXRzX29wcztcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNy1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NjE5PXZvaWQgdmdpY19pdHNfaW52YWxpZGF0ZV9hbGxfY2FjaGVzKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjI2LVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2LCBcdTAwMjZrdm0tXHUwMDNlZGV2aWNlcywgdm1fbm9kZSkge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjYyNzpcdFx0aWYgKGRldi1cdTAwM2VvcHMgIT0gXHUwMDI2a3ZtX2FybV92Z2ljX2l0c19vcHMpXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjI4LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNzk0PXN0YXRpYyBpbnQgdmdpY19pdHNfZ2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjgyNy1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODI4OnN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2FybV92Z2ljX2l0c19vcHMgPSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjgyOS1cdC5uYW1lID0gXCYjMzQ7a3ZtLWFybS12Z2ljLWl0c1wmIzM0Oyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgzNz1pbnQga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZSh2b2lkKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4Mzgte1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI4Mzk6XHRyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXHUwMDI2a3ZtX2FybV92Z2ljX2l0c19vcHMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjg0MC1cdFx0XHRcdCAgICAgICBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfSVRTKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkzMgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIElUUyBEZXZpY2UgQ2FsbGJhY2tzIGZvciBFeHBsb2l0YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNhbGxiYWNrczogYHZnaWNfaXRzX3NldF9hdHRyYCwgYHZnaWNfaXRzX2Rlc3Ryb3lgLCBgdmdpY19pdHNfY3JlYXRlYCwgYHZnaWNfaXRzX2hhc19hdHRyYCwgYW5kIGB2Z2ljX2l0c19nZXRfYXR0cmAuIFRoZXkmIzM5O3JlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IG1ha2VzIG1lIHRoaW5rIHRoZXkmIzM5O2QgYmUgaGFyZGVyIHRvIHRhcmdldCBkaXJlY3RseS4gQnV0IHRoZW4gSSByZW1lbWJlcjogdGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBga3ZtX2RldmljZV9vcHNgIHN0cnVjdHVyZSwgYW5kIHRob3NlIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGZyb20gZ2VuZXJpYyBLVk0gY29kZSB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoYXQmIzM5O3Mga2V5LgoKSWYgdGhleSB3ZXJlIGlubGluZWQsIHRoZSBgc3RhdGljYCBkZWNsYXJhdGlvbiAqd291bGQqIGJlIGEgcHJvYmxlbS4gVGFyZ2V0aW5nIHRoZW0gYnkgbmFtZSB3b3VsZCBiZSBkaWZmaWN1bHQuIEJ1dCBzaW5jZSB0aGV5JiMzOTtyZSBmdW5jdGlvbiBwb2ludGVycywgdGhleSAqYXJlbiYjMzk7dCogaW5saW5lZC4gVGhlIGNvbXBpbGVyIGhhcyB0byBwcm92aWRlIGEgcmVhbCBhZGRyZXNzIGZvciB0aGVtLiBBbmQgdGhhdCBvcGVucyB1cCBwb3NzaWJpbGl0aWVzLgoKVGhlIGJlYXV0eSBvZiBzeXprYWxsZXIgaXMgdGhhdCBpdCBjYW4gdGFyZ2V0IGlvY3RscywgbGlrZSBgS1ZNX1NFVF9ERVZJQ0VfQVRUUmAsIHdoaWNoIHdpbGwgZXZlbnR1YWxseSByZWFjaCBgdmdpY19pdHNfc2V0X2F0dHJgLiBUaGF0JiMzOTtzIGEgZGlyZWN0IHJvdXRlLiBOb3csIGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGVhc2llciB0byBsZXZlcmFnZT8gSSBzZWUgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgLCBidXQgdGhhdCYjMzk7cyBqdXN0IHJlZ2lzdHJhdGlvbiwgc28gbGlrZWx5IG5vdCBpbnRlcmVzdGluZyBmcm9tIGFuIGV4cGxvaXQgcGVyc3BlY3RpdmUuCgpGb2N1c2luZyBiYWNrIG9uIGB2Z2ljX2l0c19zZXRfYXR0cmAgYW5kIGB2Z2ljX2l0c19kZXN0cm95YOKApiBldmVuIHRob3VnaCB0aGV5JiMzOTtyZSBgc3RhdGljYCwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdXNhZ2UgY2hhbmdlcyBldmVyeXRoaW5nLiBTeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSYjMzk7cmUgbm90IGlubGluZWQsIGFuZCB0aGVpciBhZGRyZXNzZXMgKmFyZSogdGFrZW4sIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLgoKU28sIHRoZSBwbGFuIGlzOiB3ZSBjYW4gZGVmaW5pdGVseSB1c2UgYHZnaWNfaXRzX3NldF9hdHRyYCBhbmQgYHZnaWNfaXRzX2Rlc3Ryb3lgLiBMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGV5IGFyZSwgaW4gZmFjdCwgc3RhdGljIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfaXRzX3NldF9hdHRyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNzQyPWJvb2wga3ZtX2FyY2hfYWxsb3dfd3JpdGVfd2l0aG91dF9ydW5uaW5nX3ZjcHUoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNzQ4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI3NDk6c3RhdGljIGludCB2Z2ljX2l0c19zZXRfYXR0cihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI3NTAtXHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yODI4PXN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2FybV92Z2ljX2l0c19vcHMgPSB7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzEtXHQuZGVzdHJveSA9IHZnaWNfaXRzX2Rlc3Ryb3ksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjgzMjpcdC5zZXRfYXR0ciA9IHZnaWNfaXRzX3NldF9hdHRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzMtXHQuZ2V0X2F0dHIgPSB2Z2ljX2l0c19nZXRfYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgc2VlbSB0byBiZSAqc3RhdGljKiB3aGljaCBpc24mIzM5O3QgaWRlYWwgZm9yIGFuIGVudHJ5IHBvaW50LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGVyZSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBtaWdodCBzZXJ2ZSBhIGJldHRlciBwdXJwb3NlPyBMZXQgbWUgdGhpbmssICp2Z2ljX2l0c19kZXN0cm95KiBpcyBkZWZpbml0ZWx5IG91dCwgYmVpbmcgc3RhdGljLiBIbSwgd2hhdCBhYm91dCAqdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcio/IFRoYXQmIzM5O3MgYWxzbyBzdGF0aWMuLi4gYnV0IHdhaXQsIGl0IGFwcGVhcnMgdG8gYmUgY2FsbGVkIGZyb20gKnZnaWNfbW1pb193cml0ZSouIE9rYXksICp2Z2ljX21taW9fd3JpdGUqIGlzIG5vbi1zdGF0aWMsIHNvIGxldCYjMzk7cyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX21taW9fd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTAzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTUxMT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pdHNfY2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTUxNy1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNTE4OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfY2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTUxOS1cdFx0XHRcdCAgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNTQzPXN0YXRpYyB2b2lkIHZnaWNfaXRzX3Byb2Nlc3NfY29tbWFuZHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTU3OC0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNTc5OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfY3dyaXRlcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE1ODAtXHRcdFx0XHRcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE2NDU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2Ni0jZGVmaW5lIEdJVFNfQkFTRVJfUk9fTUFTS1x0KEdFTk1BU0tfVUxMKDUyLCA0OCkgfCBHRU5NQVNLX1VMTCg1OCwgNTYpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE2Njc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2OC1cdFx0XHRcdCAgICAgIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzIxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19jdGxyKHN0cnVjdCBrdm0gKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MzYtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTczNzpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXRzX2N0bHIoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzM4LVx0XHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzkyPXN0YXRpYyBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gaXRzX3JlZ2lzdGVyc1tdID0ge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3OTMtXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0NUTFIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTc5NDpcdFx0dmdpY19tbWlvX3JlYWRfaXRzX2N0bHIsIHZnaWNfbW1pb193cml0ZV9pdHNfY3RsciwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzk1LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDMtXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0NCQVNFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODA0Olx0XHR2Z2ljX21taW9fcmVhZF9pdHNfY2Jhc2VyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2NiYXNlciwgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODA1LVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODA2LVx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DV1JJVEVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4MDc6XHRcdHZnaWNfbW1pb19yZWFkX2l0c19jd3JpdGVyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2N3cml0ZXIsIDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgwOC1cdFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MTMtXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0JBU0VSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4MTQ6XHRcdHZnaWNfbW1pb19yZWFkX2l0c19iYXNlciwgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciwgMHg0MCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODE1LVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTI1PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3YyX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNTEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjUyOnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV92Ml9taXNjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNTMtXHRcdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTcyPXN0YXRpYyBpbnQgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfdjJfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMDUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjEwNjpcdHZnaWNfbW1pb193cml0ZV92Ml9taXNjKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTA3LVx0cmV0dXJuIDA7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0xMTA9c3RhdGljIGludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92Ml9ncm91cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMTQtXHRpZiAodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC52Z2ljLnYyX2dyb3Vwc191c2VyX3dyaXRhYmxlKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzoxMTU6XHRcdHZnaWNfbW1pb193cml0ZV9ncm91cCh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTExNi1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTExOS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MTIwOnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lyKHN0cnVjdCBrdm1fdmNwdSAqc291cmNlX3ZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTEyMS1cdFx0XHRcdCBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM9MTYyPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xNzktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjE4MDpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTgxLVx0XHRcdFx0ICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTIwOD1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9zZ2lwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTIyNC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MjI1OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTIyNi1cdFx0XHRcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTI0Ni1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MjQ3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTI0OC1cdFx0XHRcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTI3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF92Y3B1aWYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzIxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzozMjI6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTMyMy1cdFx0XHRcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0zNjEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjM2MjpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfZGlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzYzLVx0XHRcdFx0Z3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTM3Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9hcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzk2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzozOTc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2FwcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTM5OC1cdFx0XHRcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz00MjM9c3RhdGljIGNvbnN0IHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiB2Z2ljX3YyX2Rpc3RfcmVnaXN0ZXJzW10gPSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQyNC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhHSUNfRElTVF9DVFJMLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0MjU6XHRcdHZnaWNfbW1pb19yZWFkX3YyX21pc2MsIHZnaWNfbW1pb193cml0ZV92Ml9taXNjLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MjYtXHRcdE5VTEwsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YyX21pc2MsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MjgtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0lHUk9VUCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDI5Olx0XHR2Z2ljX21taW9fcmVhZF9ncm91cCwgdmdpY19tbWlvX3dyaXRlX2dyb3VwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzAtXHRcdE5VTEwsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YyX2dyb3VwLCAxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDMyLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9FTkFCTEVfU0VULFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0MzM6XHRcdHZnaWNfbW1pb19yZWFkX2VuYWJsZSwgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQzNC1cdFx0TlVMTCwgdmdpY191YWNjZXNzX3dyaXRlX3NlbmFibGUsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzYtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0VOQUJMRV9DTEVBUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDM3Olx0XHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzgtXHRcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9jZW5hYmxlLCAxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQwLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9QRU5ESU5HX1NFVCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDQxOlx0XHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfc3BlbmRpbmcsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ0Mi1cdFx0dmdpY191YWNjZXNzX3JlYWRfcGVuZGluZywgdmdpY191YWNjZXNzX3dyaXRlX3NwZW5kaW5nLCAxLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQ0LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9QRU5ESU5HX0NMRUFSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NDU6XHRcdHZnaWNfbW1pb19yZWFkX3BlbmRpbmcsIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQ2LVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfY3BlbmRpbmcsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NDgtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0FDVElWRV9TRVQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ0OTpcdFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDUwLVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTItXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX0FDVElWRV9DTEVBUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDUzOlx0XHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTQtXHRcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfY2FjdGl2ZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1Ni1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfUFJJLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NTc6XHRcdHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5LCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHksIE5VTEwsIE5VTEwsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1OC1cdFx0OCwgVkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDU5LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9UQVJHRVQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ2MDpcdFx0dmdpY19tbWlvX3JlYWRfdGFyZ2V0LCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0LCBOVUxMLCBOVUxMLCA4LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjEtXHRcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2Mi1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfQ09ORklHLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjM6XHRcdHZnaWNfbW1pb19yZWFkX2NvbmZpZywgdmdpY19tbWlvX3dyaXRlX2NvbmZpZywgTlVMTCwgTlVMTCwgMixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDY0LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2NS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0RJU1RfU09GVElOVCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDY2Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9zZ2lyLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjctXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDY4LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfRElTVF9TR0lfUEVORElOR19DTEVBUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDY5Olx0XHR2Z2ljX21taW9fcmVhZF9zZ2lwZW5kLCB2Z2ljX21taW9fd3JpdGVfc2dpcGVuZGMsIDE2LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzAtXHRcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3MS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0RJU1RfU0dJX1BFTkRJTkdfU0VULFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NzI6XHRcdHZnaWNfbW1pb19yZWFkX3NnaXBlbmQsIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kcywgMTYsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3My1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTQ3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uIHZnaWNfdjJfY3B1X3JlZ2lzdGVyc1tdID0ge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzctXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfQ1RSTCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDc4Olx0XHR2Z2ljX21taW9fcmVhZF92Y3B1aWYsIHZnaWNfbW1pb193cml0ZV92Y3B1aWYsIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3OS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODAtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfUFJJTUFTSyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDgxOlx0XHR2Z2ljX21taW9fcmVhZF92Y3B1aWYsIHZnaWNfbW1pb193cml0ZV92Y3B1aWYsIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4Mi1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODMtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfQklOUE9JTlQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ4NDpcdFx0dmdpY19tbWlvX3JlYWRfdmNwdWlmLCB2Z2ljX21taW9fd3JpdGVfdmNwdWlmLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODUtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDg2LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0FMSUFTX0JJTlBPSU5ULFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0ODc6XHRcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDg4LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4OS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0NQVV9BQ1RJVkVQUklPLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0OTA6XHRcdHZnaWNfbW1pb19yZWFkX2FwciwgdmdpY19tbWlvX3dyaXRlX2FwciwgMTYsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5MS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTItXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfSURFTlQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ5MzpcdFx0dmdpY19tbWlvX3JlYWRfdmNwdWlmLCB2Z2ljX21taW9fd3JpdGVfdmNwdWlmLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTQtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDk1LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ19DUFVfREVBQ1RJVkFURSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDk2Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9kaXIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5Ny1cdFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTgxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMTIwLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoxMjE6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0xMjItXHRcdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTE3MD1zdGF0aWMgaW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjE1LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoyMTY6XHR2Z2ljX21taW9fd3JpdGVfdjNfbWlzYyh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIxNy1cdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9MjIwPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjM3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoyMzg6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2lyb3V0ZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMzktXHRcdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTI3Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF92M3JfY3RscihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yODQtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI4NTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdjNyX2N0bHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yODYtXHRcdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz00Nzk9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJvcGJhc2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNDg2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo0ODc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3Byb3BiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNDg4LVx0XHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NTA3PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3BlbmRiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTUxNy1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NTE4OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9wZW5kYmFzZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTUxOS1cdFx0XHRcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTU0ND1zdGF0aWMgdm9pZCB2Z2ljX3NldF9yZGlzdF9idXN5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBidXN5KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTU0LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1NTU6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2ludmxwaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU1Ni1cdFx0XHRcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01ODYtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjU4NzpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaW52YWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTg4LVx0XHRcdFx0ICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5MC17XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjU5MTpcdC8qIFNlZSB2Z2ljX21taW9fd3JpdGVfaW52bHBpKCkgZm9yIHRoZSBlYXJseSByZXR1cm4gcmF0aW9uYWxlICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5Mi1cdGlmICgoYWRkciBcdTAwMjYgNCkgfHwgIXZnaWNfbHBpc19lbmFibGVkKHZjcHUpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjEzLVx0XHQucmVhZCA9IHZnaWNfbW1pb19yZWFkX3JheixcdFx0XHRcdFxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYxNDpcdFx0LndyaXRlID0gdmdpY19tbWlvX3dyaXRlX3dpLFx0XHRcdFx0XFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjE1LVx0fSwge1x0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NjI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gdmdpY192M19kaXN0X3JlZ2lzdGVyc1tdID0ge1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MjctXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoR0lDRF9DVExSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2Mjg6XHRcdHZnaWNfbW1pb19yZWFkX3YzX21pc2MsIHZnaWNfbW1pb193cml0ZV92M19taXNjLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MjktXHRcdE5VTEwsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YzX21pc2MsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzEtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ0RfU1RBVFVTUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjMyOlx0XHR2Z2ljX21taW9fcmVhZF9yYW8sIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjMzLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYzNC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUdST1VQUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjM1Olx0XHR2Z2ljX21taW9fcmVhZF9ncm91cCwgdmdpY19tbWlvX3dyaXRlX2dyb3VwLCBOVUxMLCBOVUxMLCAxLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzYtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM3LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JU0VOQUJMRVIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYzODpcdFx0dmdpY19tbWlvX3JlYWRfZW5hYmxlLCB2Z2ljX21taW9fd3JpdGVfc2VuYWJsZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM5LVx0XHROVUxMLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfc2VuYWJsZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0MS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUNFTkFCTEVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NDI6XHRcdHZnaWNfbW1pb19yZWFkX2VuYWJsZSwgdmdpY19tbWlvX3dyaXRlX2NlbmFibGUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0My1cdCAgICAgICBOVUxMLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfY2VuYWJsZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0NS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSVNQRU5EUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjQ2Olx0XHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfc3BlbmRpbmcsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0Ny1cdFx0dmdpY191YWNjZXNzX3JlYWRfcGVuZGluZywgdmdpY192M191YWNjZXNzX3dyaXRlX3BlbmRpbmcsIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NDktXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lDUEVORFIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY1MDpcdFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5nLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTEtXHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfd2ksIDEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTMtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lTQUNUSVZFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjU0Olx0XHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9zYWN0aXZlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTUtXHRcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfc2FjdGl2ZSwgMSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1Ny1cdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUNBQ1RJVkVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NTg6XHRcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1OS1cdFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjYxLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JUFJJT1JJVFlSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NjI6XHRcdHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5LCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHksIE5VTEwsIE5VTEwsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2My1cdFx0OCwgVkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjY0LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JVEFSR0VUU1IsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY2NTpcdFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIE5VTEwsIE5VTEwsIDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2Ni1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjY3LVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JQ0ZHUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjY4Olx0XHR2Z2ljX21taW9fcmVhZF9jb25maWcsIHZnaWNfbW1pb193cml0ZV9jb25maWcsIE5VTEwsIE5VTEwsIDIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2OS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzAtXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lHUlBNT0RSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NzE6XHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCBOVUxMLCBOVUxMLCAxLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzItXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjczLVx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JUk9VVEVSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NzQ6XHRcdHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIsIHZnaWNfbW1pb193cml0ZV9pcm91dGVyLCBOVUxMLCBOVUxMLCA2NCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjc1LVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjc2LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNEX0lEUkVHUyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njc3Olx0XHR2Z2ljX21taW9fcmVhZF92M19pZHJlZ3MsIHZnaWNfbW1pb193cml0ZV93aSwgNDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3OC1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NjgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gdmdpY192M19yZF9yZWdpc3RlcnNbXSA9IHtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4My1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9DVExSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2ODQ6XHRcdHZnaWNfbW1pb19yZWFkX3Yzcl9jdGxyLCB2Z2ljX21taW9fd3JpdGVfdjNyX2N0bHIsIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4NS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02ODYtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfU1RBVFVTUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njg3Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjg4LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4OS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JSURSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTA6XHRcdHZnaWNfbW1pb19yZWFkX3Yzcl9paWRyLCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5MS1cdFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTItXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoR0lDUl9UWVBFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjkzOlx0XHR2Z2ljX21taW9fcmVhZF92M3JfdHlwZXIsIHZnaWNfbW1pb193cml0ZV93aSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjk0LVx0XHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSwgOCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5Ni1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9XQUtFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njk3Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjk4LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5OS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9QUk9QQkFTRVIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcwMDpcdFx0dmdpY19tbWlvX3JlYWRfcHJvcGJhc2UsIHZnaWNfbW1pb193cml0ZV9wcm9wYmFzZSwgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzAxLVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzAyLVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX1BFTkRCQVNFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzAzOlx0XHR2Z2ljX21taW9fcmVhZF9wZW5kYmFzZSwgdmdpY19tbWlvX3dyaXRlX3BlbmRiYXNlLCA4LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDQtXHRcdFZHSUNfQUNDRVNTXzY0Yml0IHwgVkdJQ19BQ0NFU1NfMzJiaXQpLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDUtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfSU5WTFBJUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzA2Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9pbnZscGksIDgsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwNy1cdFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwOC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JTlZBTExSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MDk6XHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX2ludmFsbCwgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzEwLVx0XHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzExLVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX1NZTkNSLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MTI6XHRcdHZnaWNfbW1pb19yZWFkX3N5bmMsIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzEzLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxNC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JRFJFR1MsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcxNTpcdFx0dmdpY19tbWlvX3JlYWRfdjNfaWRyZWdzLCB2Z2ljX21taW9fd3JpdGVfd2ksIDQ4LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MTYtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxOC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICYjNDM7IEdJQ1JfSUdST1VQUjAsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcxOTpcdFx0dmdpY19tbWlvX3JlYWRfZ3JvdXAsIHZnaWNfbW1pb193cml0ZV9ncm91cCwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzIwLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcyMS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhTWl82NEsgJiM0MzsgR0lDUl9JU0VOQUJMRVIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MjI6XHRcdHZnaWNfbW1pb19yZWFkX2VuYWJsZSwgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcyMy1cdFx0TlVMTCwgdmdpY191YWNjZXNzX3dyaXRlX3NlbmFibGUsIDQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjUtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoU1pfNjRLICYjNDM7IEdJQ1JfSUNFTkFCTEVSMCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzI2Olx0XHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjctXHRcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9jZW5hYmxlLCA0LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzI5LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyAmIzQzOyBHSUNSX0lTUEVORFIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MzA6XHRcdHZnaWNfbW1pb19yZWFkX3BlbmRpbmcsIHZnaWNfbW1pb193cml0ZV9zcGVuZGluZyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzMxLVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nLCB2Z2ljX3YzX3VhY2Nlc3Nfd3JpdGVfcGVuZGluZywgNCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczMy1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhTWl82NEsgJiM0MzsgR0lDUl9JQ1BFTkRSMCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzM0Olx0XHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczNS1cdFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSwgNCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczNy1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEhfVUFDQ0VTUyhTWl82NEsgJiM0MzsgR0lDUl9JU0FDVElWRVIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3Mzg6XHRcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczOS1cdFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlLCA0LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQxLVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyAmIzQzOyBHSUNSX0lDQUNUSVZFUjAsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjc0MjpcdFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfY2FjdGl2ZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQzLVx0XHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX2NhY3RpdmUsIDQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NDUtXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyAmIzQzOyBHSUNSX0lQUklPUklUWVIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NDY6XHRcdHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5LCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHksIDMyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NDctXHRcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc0OC1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICYjNDM7IEdJQ1JfSUNGR1IwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NDk6XHRcdHZnaWNfbW1pb19yZWFkX2NvbmZpZywgdmdpY19tbWlvX3dyaXRlX2NvbmZpZywgOCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzUwLVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc1MS1cdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICYjNDM7IEdJQ1JfSUdSUE1PRFIwLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NTI6XHRcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCA0LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NTMtXHRcdFZHSUNfQUNDRVNTXzMyYml0KSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzU0LVx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChTWl82NEsgJiM0MzsgR0lDUl9OU0FDUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzU1Olx0XHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzU2LVx0XHRWR0lDX0FDQ0VTU18zMmJpdCksXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0yNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzE6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMi1cdFx0XHR1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTY0PXN0YXRpYyB2b2lkIHZnaWNfdXBkYXRlX3ZzZ2koc3RydWN0IHZnaWNfaXJxICppcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6Njk6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MC1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTk2PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTE2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0xMTctXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY0LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzoxNjU6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2Ni1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0zMDQ9c3RhdGljIHZvaWQgX19zZXRfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zNTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjM1Mzp2b2lkIHZnaWNfbW1pb193cml0ZV9zcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTM1NC1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9Mzg5PXN0YXRpYyB2b2lkIF9fY2xlYXJfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy00MzktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjQ0MDp2b2lkIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTQ0MS1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NTQ2PXN0YXRpYyB2b2lkIHZnaWNfbW1pb19jaGFuZ2VfYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfaXJxICppcnEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjU5MzpzdGF0aWMgdm9pZCBfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTk0LVx0XHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjA3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MDgtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE1LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2MTY6XHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE3LVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjIyPWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyNS17XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYyNjpcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjctXHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyOS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjMwOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MzEtXHRcdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQzLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2NDQ6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0NS1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY1MzpcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTQtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02NTk9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjYyLXtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjYzOlx0X192Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY2NC1cdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjY3PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjkxLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2OTI6dm9pZCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTMtXHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTcxND11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjczMzp2b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzQtXHRcdFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xMTU9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9yYW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTE3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMTg6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMTktXHRcdFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MTI0PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTI2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMjc6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMjgtXHRcdFx0ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MTMwPXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTEzMi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTMzOnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzQtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTM2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMzc6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTEzOC1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xNTI9dW5zaWduZWQgbG9uZyB2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE1NC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTU1OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTU2LVx0XHRcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xNTgtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE1OTp2b2lkIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE2MC1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MTc0PXVuc2lnbmVkIGxvbmcgdmdpY191YWNjZXNzX3JlYWRfYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE3Ni1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTc3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xNzgtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTgwLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxODE6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE4Mi1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xOTM9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xOTUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE5Njp2b2lkIHZnaWNfbW1pb193cml0ZV9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE5Ny1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg9MjAwPXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTIwMi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MjAzOnZvaWQgdmdpY19tbWlvX3dyaXRlX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTIwNC1cdFx0XHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYz0xNTE9dm9pZCB2Z2ljX3YyX2RlYWN0aXZhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdmFsKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12Mi5jLTIxNi1cdGlmIChtbWlvKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYyLmM6MjE3Olx0XHR2Z2ljX21taW9fd3JpdGVfY2FjdGl2ZSh2Y3B1LCAodmFsIC8gMzIpICogNCwgNCwgQklUKHZhbCAlIDMyKSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYy0yMTgtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYzLmM9MTk1PXZvaWQgdmdpY192M19kZWFjdGl2YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZhbClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MzcKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBTZWN1cml0eSBSaXNrcyBpbiB0aGUgSVRTIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgIGZ1bmN0aW9uLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIHRoZSBmaXJzdCBwb2ludCBvZiBub3RlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbiBjYWxscyB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb24gYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YC4gTm9wZSwgdGhhdCBvbmUmIzM5O3Mgc3RhdGljIHRvby4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBjaGVjayB0aGUgb2J2aW91cyBjYW5kaWRhdGVzOiBgdmdpY19pdHNfZGVzdHJveWA/IEFsc28gc3RhdGljLgoKQWxyaWdodCwgd2hhdCBhYm91dCBga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZWA/IEFoYSEgVGhhdCBvbmUmIzM5O3Mgbm9uLXN0YXRpYy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgdGFyZ2V0aW5nIHRob3NlIGBrdm1fZGV2aWNlX29wc2AgY2FsbGJhY2tzIHRocm91Z2ggS1ZNIGlvY3Rscy4gU2luY2UgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFyZSBzdGF0aWMgYnV0IHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gKG1lYW5pbmcgdGhleSYjMzk7cmUgbm90IGlubGluZWQpLCB0aGV5JiMzOTtyZSBwb3RlbnRpYWwgdGFyZ2V0cy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBTeXprYWxsZXIgcmVhbGx5IGdvZXMgdG8gdG93biBmdXp6aW5nIHRoZXNlIEtWTSBpb2N0bHMuCgpHaXZlbiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLCBJIG5lZWQgdG8gc2VlIHdoYXQgZWxzZSBtaWdodCBiZSB2dWxuZXJhYmxlLiBJdCYjMzk7cyB0aW1lIHRvIHN5c3RlbWF0aWNhbGx5IHJldmlldyBhbGwgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBkaXZlIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2Z2ljX2l0c18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTczLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3NDpzdHJ1Y3QgdmdpY19pdHNfYWJpIHtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzUtXHRpbnQgY3RlX2Vzejtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NjA1PXN0YXRpYyB2b2lkIHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoc3RydWN0IHZnaWNfaXRzICppdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYxOC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2MTk6dm9pZCB2Z2ljX2l0c19pbnZhbGlkYXRlX2FsbF9jYWNoZXMoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYyMC17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYzNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2Mzc6aW50IHZnaWNfaXRzX3Jlc29sdmVfbHBpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjM4LVx0XHRcdCB1MzIgZGV2aWQsIHUzMiBldmVudGlkLCBzdHJ1Y3QgdmdpY19pcnEgKippcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY4NT1zdGF0aWMgaW50IHZnaWNfaXRzX3RyaWdnZXJfbXNpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MDc6aW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwOC17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTczMS0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MzI6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTczMy17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEyNjc9c3RhdGljIGludCB2Z2ljX2l0c19jbWRfaGFuZGxlX2NsZWFyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyODctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTI4ODppbnQgdmdpY19pdHNfaW52X2xwaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyODkte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMjk3PXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9pbnYoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTMxOS0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMzIwOmludCB2Z2ljX2l0c19pbnZhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEzMjEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA4NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDU5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBLVk0gSVRTIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBiZXN0IGZ1bmN0aW9ucyB0byB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIEtWTSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKSBjb2RlLCBzcGVjaWZpY2FsbHkgdXNpbmcgc3l6a2FsbGVyLgoKRmlyc3QsIEkgaWRlbnRpZmllZCBhIGxpc3Qgb2YgcG90ZW50aWFsIGNhbmRpZGF0ZXM6IGB2Z2ljX2l0c19pbnZhbGlkYXRlX2FsbF9jYWNoZXNgLCBgdmdpY19pdHNfcmVzb2x2ZV9scGlgLCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAsIGB2Z2ljX2l0c19pbmplY3RfbXNpYCwgYHZnaWNfaXRzX2ludl9scGlgLCBgdmdpY19pdHNfaW52YWxsYCwgYW5kIGBrdm1fdmdpY19yZWdpc3Rlcl9pdHNfZGV2aWNlYC4gTm9uZSBvZiB0aGVzZSBkaXJlY3RseSBjYWxsIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIGEgZnVuY3Rpb24gb2YgaW50ZXJlc3QgYmVjYXVzZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19zZXRfYXR0cmAsIGFuZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAuIFNpbmNlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgcGFydCBvZiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCBhbmQgdGhlcmVmb3JlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIHRoZXNlIGxvb2tlZCBwcm9taXNpbmcuCgpJbml0aWFsbHksIEkgd2FzIGNvbmNlcm5lZCBhYm91dCBzdGF0aWMgZnVuY3Rpb25zIGJlaW5nIHByb2JsZW1hdGljIGJlY2F1c2Ugb2YgaW5saW5pbmcsIGJ1dCBJIHJlY2FsbGVkIHRoYXQgc3l6a2FsbGVyICpjYW4qIHJlc29sdmUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5JiMzOTtyZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBJIGRvdWJsZS1jaGVja2VkIHRoYXQgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFyZSBwcmVzZW50IGluIGBrYWxsc3ltc2AuIEdvb2QgbmV3cyEgVGhleSBhcmUgYWNjZXNzaWJsZS4gQW5kLCBpbXBvcnRhbnRseSwgdGhleSBhcmUgbm90IGlubGluZWQuCgpIb3dldmVyLCB0aGUgaWRlYWwgc2l0dWF0aW9uIGlzIHN0aWxsIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyBpZiB0aGV5IGV4aXN0LiAgU28sIEkgcmV2aWV3ZWQgdGhlIGxpc3QgYWdhaW4gbG9va2luZyBmb3IgYmV0dGVyIG9wdGlvbnMuIEkgYWxzbyBleHBsb3JlZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAsIGJ1dCB0aGF0IGxlZCBtZSB0byBgdmdpY19tbWlvX3dyaXRlYCwgd2hpY2ggaXNuJiMzOTt0IGRlZmluZWQgaW4gYHZnaWMtaXRzLmNgLiAgSSB3aWxsIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBmdW5jdGlvbiBpbiB0aGUgZnV0dXJlLCBhcyBpdCBpcyBub24tc3RhdGljLgoKVWx0aW1hdGVseSwgSSBjb25jbHVkZSB0aGF0IGB2Z2ljX2l0c19zZXRfYXR0cmAgbG9va3MgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgYmVjYXVzZSBpdCYjMzk7cyBub24taW5saW5lZCBhbmQgaXMgZGlyZWN0bHkgcGFydCBvZiB0aGUgYGt2bV9hcm1fdmdpY19pdHNfb3BzYCB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyLiAgQW5kIGlmIEkgY2FuJiMzOTt0IGZpbmQgYW55dGhpbmcgYmV0dGVyLCBgdmdpY19pdHNfZGVzdHJveWAgd2lsbCB3b3JrLCBiZWNhdXNlIGl0JiMzOTtzIGFsc28gbm9uLWlubGluZWQgYW5kIHN5emthbGxlciBjYW4gbWF0Y2ggaXRzIHN5bWJvbC4gSSBzaG91bGQgYWxzbyBjaGVjayBgdmdpY19tbWlvX3dyaXRlYCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfbW1pb193cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0yNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzE6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMi1cdFx0XHR1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTY0PXN0YXRpYyB2b2lkIHZnaWNfdXBkYXRlX3ZzZ2koc3RydWN0IHZnaWNfaXJxICppcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6Njk6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MC1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTk2PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTE2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0xMTctXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY0LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzoxNjU6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2Ni1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0zMDQ9c3RhdGljIHZvaWQgX19zZXRfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zNTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjM1Mzp2b2lkIHZnaWNfbW1pb193cml0ZV9zcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTM1NC1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9Mzg5PXN0YXRpYyB2b2lkIF9fY2xlYXJfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy00MzktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjQ0MDp2b2lkIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTQ0MS1cdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NTQ2PXN0YXRpYyB2b2lkIHZnaWNfbW1pb19jaGFuZ2VfYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZnaWNfaXJxICppcnEsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjU5MzpzdGF0aWMgdm9pZCBfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTk0LVx0XHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjA3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MDgtXHRcdFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE1LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2MTY6XHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE3LVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjIyPWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyNS17XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYyNjpcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjctXHRyZXR1cm4gMDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyOS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjMwOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MzEtXHRcdFx0XHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQzLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2NDQ6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0NS1cdFx0XHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY1MzpcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NTQtXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02NTk9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjYyLXtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjYzOlx0X192Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY2NC1cdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjY3PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjkxLSAqL1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2OTI6dm9pZCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTMtXHRcdFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTcxND11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzItXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjczMzp2b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzQtXHRcdFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTQ4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFZnaWMtSVRTIFRlYXJkb3duIGFuZCBTZXR1cCoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIGB2Z2ljLWl0cy5jYCBmaWxlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgY29kZSBmb3Igc2V0dXAgYW5kIHRlYXJkb3duIG9mIHRoZSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKSB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudC4gYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFyZSBvYnZpb3VzbHkgaW1wb3J0YW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBlbHNlIGNyaXRpY2FsLgoKSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgIGFzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHNlZW1lZCBsaWtlIGEgcG9zc2libGUgcG9pbnQgb2YgaW50ZXJlc3QuIEl0JiMzOTtzIG5vdCAqZGlyZWN0bHkqIGludm9sdmVkIGluIHRoZSBleGVjdXRpb24gb2YgdGhlIGNoYW5nZWQgY29kZSwgaXQmIzM5O3MganVzdCBhIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbi4gU28sIHNjcmF0Y2ggdGhhdC4gQnV0LCB3YWl0Li4uIGFmdGVyIGEgc2Vjb25kIGxvb2ssIHRoZSBjb2RlICphY3R1YWxseSogZG9lcyBzb21ldGhpbmcgaW4gYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YC4KCkdpdmVuIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcyBwcmltYXJ5IHBvaW50cyBvZiBpbnRlcmVzdCBiZWNhdXNlIEkgdW5kZXJzdGFuZCB0aGVzZSBhcmUgcmVsZXZhbnQgZnVuY3Rpb24gbmFtZXMuIEFsc28sIEkgbmVlZCB0byBjaGVjayBgdmdpY19pdHNfcmVzZXRgLiBBaCwgYnV0IHRoYXQgb25lIGlzIHN0YXRpYy4gU2FtZSB3aXRoIGB2Z2ljX2l0c19yZXN0b3JlX2NvbGxlY3Rpb25fdGFibGVgLiBJIHdpbGwgbmVlZCB0byBtYWtlIHN1cmUgdG8gY29uc2lkZXIgdGhvc2UgYXMgd2VsbCwgZGVzcGl0ZSBub3QgdXNpbmcgdGhlbSBhcyBwcmltYXJ5IGZvY3VzIHN5bWJvbHMuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUuIEkgc2VlIHRoZSByZXF1aXJlbWVudCBmb3IgYENPTkZJR19LVk1gIGlzIHByZXNlbnQsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBTbywgSSB3aWxsIGNoZWNrIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIE15IEtWTSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gcmlnaHQgbm93LiBJdCYjMzk7cyB0aGUgcHJpbWFyeSBwaWVjZSBvZiB0aGlzIHB1enpsZS4gQnV0LCBob2xkIG9uIGEgbWludXRlLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIGFsc28gYSBjcml0aWNhbCBjb21wb25lbnQuIFRoZXkgd29yayB0b2dldGhlci4gU28sIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIGlmIGBLVk1gIHJlbGllcyBvbiBhbnl0aGluZyBzcGVjaWZpYy4gSSYjMzk7bGwgY2hlY2sgaXRzIGRlcGVuZGVuY2llcywgZW5zdXJlIG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQsIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBjb25mbGljdHMuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgS1ZNYCBpcyBidWlsdCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz00Nz1jb25maWcgUFREVU1QX1NUQUdFMl9ERUJVR0ZTXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtQcmVzZW50IHRoZSBzdGFnZS0yIHBhZ2V0YWJsZXMgdG8gZGVidWdmc1wmIzM0O1xuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjUwOlx0ZGVwZW5kcyBvbiBERUJVR19GU1xuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo1MTpcdGRlcGVuZHMgb24gQVJDSF9IQVNfUFREVU1QXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTUyLVx0c2VsZWN0IFBURFVNUFxuLS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc9NzU9Y29uZmlnIE5WSEVfRUwyX1RSQUNJTkdcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzYtXHRib29sXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBUUkFDSU5HIFx1MDAyNlx1MDAyNiBGVFJBQ0VcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzgtXHRzZWxlY3QgVFJBQ0VfUkVNT1RFXG4tLVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZz05Mj1jb25maWcgUEtWTV9TVEFDS1RSQUNFXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtQcm90ZWN0ZWQgS1ZNIGh5cGVydmlzb3Igc3RhY2t0cmFjZXNcJiMzNDtcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6OTQ6XHRkZXBlbmRzIG9uIFBLVk1fRElTQUJMRV9TVEFHRTJfT05fUEFOSUNcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctOTUtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5MzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBLVk0gTWVudSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtZW51Y29uZmlnIEtWTWAgZW50cnksIGFuZCBzb21ldGhpbmcgZmVlbHMgb2ZmLiBUaGVyZSYjMzk7cyBubyBgZGVwZW5kcyBvbmAgY2xhdXNlIGF0dGFjaGVkIHRvIGl0IGluIHRoZSBzbmlwcGV0LiBUaGF0IHNlZW1zIHVudXN1YWwsIGdpdmVuIEtWTSYjMzk7cyBkZXBlbmRlbmNpZXMgb24gdmFyaW91cyBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIGhlcmUuIFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSAqY29tcGxldGUqIGRlZmluaXRpb24gb2YgYEtWTWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMgYW5kIHByZWNpc2VseSB3aGF0IGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQgZm9yIGl0IHRvIGJlIGVuYWJsZWQuIFdpdGhvdXQgdGhhdCBjb21wcmVoZW5zaXZlIHZpZXcsIEkgY2FuJiMzOTt0IGJlIGNvbmZpZGVudCBpbiBpbnRlcnByZXRpbmcgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxODpcdGlmIFZJUlRVQUxJWkFUSU9OXG4gIDE5Olx0XG4gIDIwOlx0bWVudWNvbmZpZyBLVk1cbiAgMjE6XHRcdGJvb2wgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyMzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDI0Olx0XHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuICAyNTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDI2Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDI3Olx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMjg6XHRcdHNlbGVjdCBLVk1fVkZJT1xuICAyOTpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAzMDpcdFx0c2VsZWN0IE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbiAgMzE6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgMzI6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDMzOlx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMzQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTXG4gIDM1Olx0XHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXG4gIDM2Olx0XHRzZWxlY3QgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxuICAzNzpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzg6XHRcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xuICAzOTpcdFx0c2VsZWN0IEtWTV9HVUVTVF9NRU1GRFxuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQ0Olx0XG4gIDQ1Olx0aWYgS1ZNXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIFBURFVNUF9TVEFHRTJfREVCVUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjU5NgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFZHSUMgSVRTIENvbGxlY3Rpb24gRnJlZWluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYEtWTWAgYW5kLCBieSBleHRlbnNpb24sIGFueXRoaW5nIHVzaW5nIGBWSVJUVUFMSVpBVElPTmAuIEkgbmVlZCB0byBlbnN1cmUgYm90aCBvZiB0aG9zZSBhcmUgaW5jbHVkZWQgaW4gbXkgY29uZmlndXJhdGlvbi4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZyBkZXBlbmRlbmNpZXMuLi4gTm9wZSwgdGhhdCBsb29rcyBjbGVhbi4KCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IG9wdGltaXplcyB0aGUgVkdJQyBJVFMgY29sbGVjdGlvbiBmcmVlaW5nIHByb2Nlc3Mgd2l0aGluIEtWTSBvbiBBUk02NC4gSXTigJlzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIHN3aXRjaGluZyBmcm9tIGFuIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRpbWUgY29tcGxleGl0eSB0byBtaXRpZ2F0ZSBSQ1Ugc3RhbGxzLiBDcml0aWNhbGx5LCB0aGlzIGNoYW5nZSBoYXBwZW5zIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIHNvIGl0JiMzOTtzIGNsZWFybHkgcmVsZXZhbnQgdG8gdGhvc2UgcHJvY2Vzc2VzLgoKVGhlIGluaXRpYWwgYW5hbHlzaXMgaGlnaGxpZ2h0ZWQgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFzIHByaW1hcnkgcG9pbnRzIG9mIGludGVyZXN0LCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY2hhbmdlLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgKnN1cmUqIEkmIzM5O20gcGlja2luZyB0aGUgcmlnaHQgc3ltYm9scy4gVGhlIHByb21wdCBwcmVmZXJzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlc2UgYXJlICp0ZWNobmljYWxseSogc3RhdGljLCBidXQgdGhleSBhcmVuJiMzOTt0IGlubGluZWQsIHNvIHRoZXkgc3RpbGwgcHJvdmlkZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBHaXZlbiB0aGlzLCBJ4oCZbSB0aGlua2luZyB0aGV5IGFyZSBzdGlsbCB0aGUgYmVzdCB0YXJnZXRzIGZvciBzeW1ib2xpYyBleGVjdXRpb24uCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBvdGhlciBwb3NzaWJpbGl0aWVzLCBqdXN0IGluIGNhc2UuIGBrdm1fdmdpY19yZWdpc3Rlcl9pdHNfZGV2aWNlYCBkb2VzbiYjMzk7dCBzZWVtIGRpcmVjdGx5IHJlbGV2YW50LCBhcyBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gZXhlY3V0ZSB0aGUgbW9kaWZpZWQgY29kZS4gYGt2bV9kZXN0cm95X3ZtYCBpcyAqdG9vKiBnZW5lcmljOyBpdCBjb3VsZCB0cmlnZ2VyICptYW55KiB0aGluZ3MuIExldCYjMzk7cyBub3QgYnJpbmcgaXQgaW4uIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIHN0YXRpYywgYW5kICpjb3VsZCogYmUgaW5saW5lZC4gSSB3aWxsIHN0aWNrIHdpdGggdGhlIG9yaWdpbmFsIHR3by4KClNvLCBJIHRoaW5rIEkmIzM5O2xsIGluY2x1ZGUgYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgLiBJJiMzOTtsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGB2Z2ljX2l0c19kZXN0cm95YCBpc24mIzM5O3QgaW5saW5lZCwgdGhvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2l0c19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xODY3PXN0YXRpYyBpbnQgdmdpY19pdHNfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTIzLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MjQ6c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2RldilcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTI1LXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgyOD1zdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9hcm1fdmdpY19pdHNfb3BzID0ge1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMwLVx0LmNyZWF0ZSA9IHZnaWNfaXRzX2NyZWF0ZSxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODMxOlx0LmRlc3Ryb3kgPSB2Z2ljX2l0c19kZXN0cm95LFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzItXHQuc2V0X2F0dHIgPSB2Z2ljX2l0c19zZXRfYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3NjQKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhpcyBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIEkgc2VlIHRoaXMgZnVuY3Rpb24gYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIG1lYW5zLCBieSBkZWZpbml0aW9uLCBpdCYjMzk7cyAqbm90KiBnb2luZyB0byBnZXQgaW5saW5lZC4gU2FtZSBnb2VzIGZvciBgdmdpY19pdHNfc2V0X2F0dHJgLCB0aGVuLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUsIEkgc2hvdWxkIGp1bXAgb3ZlciB0byBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAuIE5lZWQgdG8gcXVpY2tseSByZXZpZXcgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE2NDU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2Ni0jZGVmaW5lIEdJVFNfQkFTRVJfUk9fTUFTS1x0KEdFTk1BU0tfVUxMKDUyLCA0OCkgfCBHRU5NQVNLX1VMTCg1OCwgNTYpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE2Njc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2OC1cdFx0XHRcdCAgICAgIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzkyPXN0YXRpYyBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gaXRzX3JlZ2lzdGVyc1tdID0ge1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODEzLVx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19CQVNFUixcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODE0Olx0XHR2Z2ljX21taW9fcmVhZF9pdHNfYmFzZXIsIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIsIDB4NDAsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgxNS1cdFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzY3CgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgSVRTIEZ1bmN0aW9uIFBvaW50ZXJzIGFuZCBQb3RlbnRpYWwgV2Vha25lc3NlcyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgUkVHSVNURVJfSVRTX0RFU0NgIG1hY3JvLiBBbmQgaXQmIzM5O3MgcGFzc2luZyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQgbWVhbnMgdGhlIGZ1bmN0aW9uIGlzbiYjMzk7dCBiZWluZyBpbmxpbmVkLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuIEl0IG1lYW5zIEkgbmVlZCB0byBhbHNvIGFkZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAgdG8gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLiBJdCBkaXJlY3RseSBjYWxscyBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgLCB3aGljaCBpcyBhIGtleSBmdW5jdGlvbiB0byBleGFtaW5lIGZvciBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIGlzc3Vlcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGFuZCBleHBhbmQgbXkgYW5hbHlzaXMgdG9vLgoKVGhlcmVmb3JlLCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFuYWx5c2lzLCBJIHdpbGwgYWRkIGB2Z2ljX2l0c19kZXN0cm95YCwgYHZnaWNfaXRzX3NldF9hdHRyYCBhbmQgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LgoKTm93LCBsZXQmIzM5O3MgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZnaWNfaXRzX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7dmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmdpY19pdHNfZGVzdHJveSYjMzQ7LAogICAgJiMzNDt2Z2ljX2l0c19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDt2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgS1ZNIFZHSUMgSVRTIGNvbGxlY3Rpb25zIGJ5IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgJiM0MzsgSVRFcykgdG8gcHJldmVudCBob3N0IFJDVSBzdGFsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQVJNNjQgS1ZNIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgSVRTIGNvbGxlY3Rpb25zIGJ5IGJ1bGstY2xlYXJpbmcgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucywgcmVkdWNpbmcgdGhlIHRpbWUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTExgKSBhbmQgbWVtb3J5IGRlYWxsb2NhdGlvbiAoYGtmcmVlYCkuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZDhlZTU0NTJiYmJjN2ZhMzlmOTAwMWM5YjE3ODFkODAwN2ZlNjU5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMTggMjM6MTc6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKaW5kZXggMzZhYjNlNDkyOTE1NC4uYThlODE5ZmU5Nzg5OCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYwpAQCAtMTEzMyw5ICYjNDM7MTEzMywyMSBAQCBzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpCiBzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKQogewogCXN0cnVjdCBpdHNfY29sbGVjdGlvbiAqY3VyLCAqdGVtcDsKJiM0MzsJc3RydWN0IGl0c19kZXZpY2UgKmRldmljZTsKJiM0MzsJc3RydWN0IGl0c19pdGUgKml0ZTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsICZhbXA7aXRzLSZndDtjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkKLQkJdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLSZndDtjb2xsZWN0aW9uX2lkKTsKJiM0MzsJLyoKJiM0MzsJICogQnVsay1jbGVhciB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMuCiYjNDM7CSAqIFRoaXMgdHJhbnNmb3JtcyB0aGUgdGVhcmRvd24gY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKQomIzQzOwkgKiB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpLCBhdm9pZGluZyBndWVzdC10cmlnZ2VyZWQgaG9zdCBSQ1Ugc3RhbGxzLgomIzQzOwkgKi8KJiM0MzsJZm9yX2VhY2hfbHBpX2l0cyhkZXZpY2UsIGl0ZSwgaXRzKQomIzQzOwkJaXRlLSZndDtjb2xsZWN0aW9uID0gTlVMTDsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdGVtcCwgJmFtcDtpdHMtJmd0O2NvbGxlY3Rpb25fbGlzdCwgY29sbF9saXN0KSB7CiYjNDM7CQlsaXN0X2RlbCgmYW1wO2N1ci0mZ3Q7Y29sbF9saXN0KTsKJiM0MzsJCWtmcmVlKGN1cik7CiYjNDM7CX0KIH0KIAogLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBpdHNfbG9jayBtdXRleCBoZWxkICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmdpYyBJVFMgVGVhcmRvd24gT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgb3B0aW1pemluZyB0aGUgdGVhcmRvd24gcHJvY2VzcyBvZiB0aGUgVmlydHVhbCBHZW5lcmljIEludGVycnVwdCBDb250cm9sbGVyJiMzOTtzIChWR0lDKSBJbnRlcnJ1cHQgVHJhbnNsYXRpb24gU2VydmljZSAoSVRTKSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sIHdoaWNoIGl0ZXJhdGVkIHRocm91Z2ggYm90aCBjb2xsZWN0aW9ucyBhbmQgaW50ZXJydXB0IHRyYW5zbGF0aW9uIGVudHJpZXMgKElURXMpLCByZXN1bHRlZCBpbiBhIHRlYXJkb3duIGNvbXBsZXhpdHkgdGhhdCB3YXMgTyhDb2xsZWN0aW9ucyAqIElURXMpLiBUaGF0JiMzOTtzIGEgbmFzdHkgc2NhbGluZyBmYWN0b3IuIFRoaXMgY291bGQgbGVhZCB0byBndWVzdC10cmlnZ2VyZWQgUkNVIChSZWFkLUNvcHkgVXBkYXRlKSBzdGFsbHMsIHdoaWNoIGFyZSB0aGUgYmFuZSBvZiBhbnkgcmVhbC10aW1lIHN5c3RlbS4KCk15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7Z29vZCByaWRkYW5jZSEmIzM0OyBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIHdoZXJlIHlvdSAqYWJzb2x1dGVseSogd2FudCB0byBpbXByb3ZlIHRoZSB0aW1lIGNvbXBsZXhpdHkuIEluc3RlYWQgb2YgaXRlcmF0aW5nLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIHByZS1wYXNzOiB3ZSBidWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgd2UgYWN0dWFsbHkgZnJlZSB0aGUgY29sbGVjdGlvbnMgdGhlbXNlbHZlcy4gVGhlIG5ldyBjb21wbGV4aXR5IGJlY29tZXMgTyhDb2xsZWN0aW9ucyAmIzQzOyBJVEVzKS4gTXVjaCBiZXR0ZXIuIEl0IGFwcGVhcnMgdGhhdCBpdCBkb2VzIHNvIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBJVEVzLCBzZXR0aW5nIGBpdGUtJmd0O2NvbGxlY3Rpb24gPSBOVUxMYCBkaXJlY3RseS4gVGhlbiBpdCBjYW4gc2FmZWx5IGZyZWUgYWxsIGNvbGxlY3Rpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcnVsZSBvdXQgYW55IG9idmlvdXMgc2VjdXJpdHkgY29uY2VybnMuIElzIHRoZXJlIGFueSByaXNrIG9mIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhaz8gTGV0JiMzOTtzIHNlZTogdGhlIHBhdGNoIGp1c3Qgc2V0cyB0aGUgYGl0ZS0mZ3Q7Y29sbGVjdGlvbmAgcG9pbnRlcnMgdG8gTlVMTCBhbmQgdGhlbiBmcmVlcyB0aGUgbWVtb3J5LiBUaGVyZSYjMzk7cyBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb24sIG5vIGNvcHlpbmcgZGF0YSB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIGludGVybmFsIHN0cnVjdHVyZXMsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgYWJvdXQgcG9pbnRlciBtYW5pcHVsYXRpb24gYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gdG8gZml4IGFuIFJDVSBzdGFsbC4gSWYgdGhlcmUgKmlzKiBhIGJ1ZyBpbnRyb2R1Y2VkIGhlcmUsIGl0JiMzOTtzIGxpa2VseSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoaWNoIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGNhdGNoLgoKR2l2ZW4gdGhpcywgSSBjYW4gY29uZmlkZW50bHkgc3RhdGUgdGhhdCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBJIG1pZ2h0IHF1aWNrbHkgZ2xhbmNlIGF0IGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25gIGp1c3QgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcmUtb3B0aW1pemF0aW9uIGNvZGUsIGJ1dCBJJiMzOTttIGZlZWxpbmcgZ29vZCBhYm91dCB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgYSBjbGVhbiwgdGFyZ2V0ZWQgb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGFkZHJlc3MgYSByZWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9OTcxPXN0YXRpYyBpbnQgdmdpY19pdHNfYWxsb2NfY29sbGVjdGlvbihzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTg5LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjk5MDpzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsIHUzMiBjb2xsX2lkKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk5MS17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEwMzY9c3RhdGljIGludCB2Z2ljX2l0c19jbWRfaGFuZGxlX21hcGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA4My1cdFx0aWYgKG5ld19jb2xsKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwODQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA4NS1cdFx0cmV0dXJuIFBUUl9FUlIoaXRlKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA5My1cdFx0aWYgKG5ld19jb2xsKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwOTQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA5NS1cdFx0aXRzX2ZyZWVfaXRlKGt2bSwgaXRlKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTEyND1zdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzMzpzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzQte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMjIwPXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9tYXBjKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyMzAtXHRpZiAoIXZhbGlkKSB7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTIzMTpcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTIzMi1cdFx0dmdpY19pdHNfaW52YWxpZGF0ZV9jYWNoZShpdHMpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjY3PXN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzEzLVx0XHRjYXNlIEdJVFNfQkFTRVJfVFlQRV9DT0xMRUNUSU9OOlxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3MTQ6XHRcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTUtXHRcdFx0YnJlYWs7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE5MjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2Rldilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzMy1cdHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoa3ZtLCBpdHMpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MzQ6XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzNS1cdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjU2OT1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZShzdHJ1Y3QgdmdpY19pdHMgKml0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5Ni1cdGlmIChyZXQgXHUwMDNjIDApXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjU5NzpcdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QoaXRzLVx1MDAzZWRldi1cdTAwM2Vrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5OC1cbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjYyMj1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMxLVx0aWYgKHJldClcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjMyOlx0XHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChpdHMtXHUwMDNlZGV2LVx1MDAzZWt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMzLVx0cmV0dXJuIHJldDtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjY1MT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19yZXNldChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYwLVx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY2MTpcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGt2bSwgaXRzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5OQoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmdpYyBJVFMgRnJlZWluZyBPcHRpbWl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtzbWFydCBtb3ZlLiYjMzQ7IFRoZXkmIzM5O3ZlIHJlY29nbml6ZWQgdGhhdCB0aGUgb3JpZ2luYWwgYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0YCB3YXMgcG90ZW50aWFsbHkgY2F1c2luZyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgc3BlY2lmaWNhbGx5IHdpdGggdGhhdCBPKENvbGxlY3Rpb25zICogSVRFcykgdGVhcmRvd24gY29tcGxleGl0eS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjaXBlIGZvciBSQ1Ugc3RhbGxzLCBhbmQgd2Uga25vdyB0aG9zZSBhcmUgYSByZWFsIHBhaW4gdG8gZGVidWcuCgpXaGF0IHRoZXkmIzM5O3ZlIGRvbmUsIGJ1bGstY2xlYXJpbmcgdGhvc2UgY29sbGVjdGlvbiBwb2ludGVycyBiZWZvcmUgZnJlZWluZyB0aGUgY29sbGVjdGlvbnMgZGlyZWN0bHksIGlzIGEgY2xldmVyIG9wdGltaXphdGlvbi4gSXQgYXZvaWRzIHRoZSBwZXItY29sbGVjdGlvbiBsb29wLCB3aGljaCBpcyBleGFjdGx5IHRoZSByaWdodCBhcHByb2FjaCB0byBtaW5pbWl6ZSB0aGUgaW1wYWN0LiBFZmZpY2llbmN5IGlzIGtleSBoZXJlLgoKTm93LCBJJiMzOTttIGFuYWx5emluZyBpdCBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGdvb2QgbmV3cyBpcywgdGhlcmUmIzM5O3Mgbm90aGluZyBpbW1lZGlhdGVseSBzY3JlYW1pbmcgJiMzNDtzZWN1cml0eSB2dWxuZXJhYmlsaXR5LiYjMzQ7IE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG1ha2luZyBpdHMgd2F5IHRvIHVzZXJzcGFjZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtcyBoZXJlIGFyZSB0ZXh0Ym9vayBtZW1vcnkgc2FmZXR5IGlzc3VlczogdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlcywgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gQnV0IHRob3NlIGFyZSB0aGUgYnJlYWQgYW5kIGJ1dHRlciBvZiBLQVNBTiYjMzk7cyBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzLiBUaGF0JiMzOTtzIHByZWNpc2VseSB3aGF0IGl0JiMzOTtzIHRoZXJlIGZvci4gU28sIHdoaWxlIEkmIzM5O2xsIHN0aWxsIGdpdmUgaXQgYSB0aG9yb3VnaCBvbmNlLW92ZXIsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJiMzOTt0IGdvaW5nIHRvIGJlIG5lZWRlZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNoYW5nZS4gS0FTQU4gc2hvdWxkIGJlIG1vcmUgdGhhbiBzdWZmaWNpZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIElUUyBjb2xsZWN0aW9ucyBieSBidWxrLWNsZWFyaW5nIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgZnJlZWluZyB0aGUgY29sbGVjdGlvbnMsIHJlZHVjaW5nIHRoZSB0aW1lIGNvbXBsZXhpdHkgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgdG8gTyhDb2xsZWN0aW9ucyAmIzQzOyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVx1MDAzZWNvbGxlY3Rpb24gPSBOVUxMYCkgYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gKGBrZnJlZWApLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSAoZS5nLiwgdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSkgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgSVRTIGNvbGxlY3Rpb25zIGJ5IGJ1bGstY2xlYXJpbmcgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucywgcmVkdWNpbmcgdGhlIHRpbWUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICYjNDM7IElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXHUwMDNlY29sbGVjdGlvbiA9IE5VTExgKSBhbmQgbWVtb3J5IGRlYWxsb2NhdGlvbiAoYGtmcmVlYCkuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxNzo0Mi4zNDIzNTc4NTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU4MTg3NzQ0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZnaWNfaXRzX2Rlc3Ryb3lcIixcbiAgICBcInZnaWNfaXRzX3NldF9hdHRyXCIsXG4gICAgXCJ2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIElUUyBjb2xsZWN0aW9ucyBieSBidWxrLWNsZWFyaW5nIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgZnJlZWluZyB0aGUgY29sbGVjdGlvbnMsIHJlZHVjaW5nIHRoZSB0aW1lIGNvbXBsZXhpdHkgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgdG8gTyhDb2xsZWN0aW9ucyArIElURXMpIHRvIHByZXZlbnQgZ3Vlc3QtdHJpZ2dlcmVkIGhvc3QgUkNVIHN0YWxscy4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIHBvaW50ZXIgYXNzaWdubWVudHMgKGBpdGUtXFx1MDAzZWNvbGxlY3Rpb24gPSBOVUxMYCkgYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gKGBrZnJlZWApLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGluZyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSAoZS5nLiwgdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSkgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICsgSVRFcykgdG8gcHJldmVudCBob3N0IFJDVSBzdGFsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQVJNNjQgS1ZNIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxNzo0Mi4zNDIzNjUxNTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjA4MDA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJkOGVlNTQ1MmJiYmM3ZmEzOWY5MDAxYzliMTc4MWQ4MDA3ZmU2NTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMjM6MTc6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXFxuaW5kZXggMzZhYjNlNDkyOTE1NC4uYThlODE5ZmU5Nzg5OCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcXG5AQCAtMTEzMyw5ICsxMTMzLDIxIEBAIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4gc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4ge1xcbiBcXHRzdHJ1Y3QgaXRzX2NvbGxlY3Rpb24gKmN1ciwgKnRlbXA7XFxuK1xcdHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2U7XFxuK1xcdHN0cnVjdCBpdHNfaXRlICppdGU7XFxuIFxcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCBcXHUwMDI2aXRzLVxcdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdClcXG4tXFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLVxcdTAwM2Vjb2xsZWN0aW9uX2lkKTtcXG4rXFx0LypcXG4rXFx0ICogQnVsay1jbGVhciB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMuXFxuK1xcdCAqIFRoaXMgdHJhbnNmb3JtcyB0aGUgdGVhcmRvd24gY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKVxcbitcXHQgKiB0byBPKENvbGxlY3Rpb25zICsgSVRFcyksIGF2b2lkaW5nIGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuXFxuK1xcdCAqL1xcbitcXHRmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpXFxuK1xcdFxcdGl0ZS1cXHUwMDNlY29sbGVjdGlvbiA9IE5VTEw7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCBcXHUwMDI2aXRzLVxcdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkge1xcbitcXHRcXHRsaXN0X2RlbChcXHUwMDI2Y3VyLVxcdTAwM2Vjb2xsX2xpc3QpO1xcbitcXHRcXHRrZnJlZShjdXIpO1xcbitcXHR9XFxuIH1cXG4gXFxuIC8qIE11c3QgYmUgY2FsbGVkIHdpdGggaXRzX2xvY2sgbXV0ZXggaGVsZCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxNzo0Mi43NTUyOTQ1NjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5MDM2OTMyNDcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmdpY19pdHNfZGVzdHJveVwiLFxuICAgIFwidmdpY19pdHNfc2V0X2F0dHJcIixcbiAgICBcInZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvcHRpbWl6ZXMgdGhlIHRlYXJkb3duIG9mIEtWTSBWR0lDIElUUyBjb2xsZWN0aW9ucyBieSBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0byBPKENvbGxlY3Rpb25zICsgSVRFcykgdG8gcHJldmVudCBob3N0IFJDVSBzdGFsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQVJNNjQgS1ZNIGFyY2hpdGVjdHVyZSBjb2RlIHRoYXQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBWTSB0ZWFyZG93biBvciBJVFMgcmVzZXQsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDhlZTU0NTJiYmJjN2ZhMzlmOTAwMWM5YjE3ODFkODAwN2ZlNjU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMjM6MTc6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbmluZGV4IDM2YWIzZTQ5MjkxNTQuLmE4ZTgxOWZlOTc4OTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuQEAgLTExMzMsOSArMTEzMywyMSBAQCBzdGF0aWMgdm9pZCB2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4gc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcbiB7XG4gXHRzdHJ1Y3QgaXRzX2NvbGxlY3Rpb24gKmN1ciwgKnRlbXA7XG4rXHRzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlO1xuK1x0c3RydWN0IGl0c19pdGUgKml0ZTtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdClcbi1cdFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY3VyLVx1MDAzZWNvbGxlY3Rpb25faWQpO1xuK1x0LypcbitcdCAqIEJ1bGstY2xlYXIgdGhlIGNvbGxlY3Rpb24gcG9pbnRlcnMgZm9yIGFsbCBJVEVzLlxuK1x0ICogVGhpcyB0cmFuc2Zvcm1zIHRoZSB0ZWFyZG93biBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpXG4rXHQgKiB0byBPKENvbGxlY3Rpb25zICsgSVRFcyksIGF2b2lkaW5nIGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuXG4rXHQgKi9cbitcdGZvcl9lYWNoX2xwaV9pdHMoZGV2aWNlLCBpdGUsIGl0cylcbitcdFx0aXRlLVx1MDAzZWNvbGxlY3Rpb24gPSBOVUxMO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdGVtcCwgXHUwMDI2aXRzLVx1MDAzZWNvbGxlY3Rpb25fbGlzdCwgY29sbF9saXN0KSB7XG4rXHRcdGxpc3RfZGVsKFx1MDAyNmN1ci1cdTAwM2Vjb2xsX2xpc3QpO1xuK1x0XHRrZnJlZShjdXIpO1xuK1x0fVxuIH1cbiBcbiAvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGl0c19sb2NrIG11dGV4IGhlbGQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE3OjQyLjc1NTI5NzIyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDI0Njk4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNL0FSTTY0IFBhdGNoIGZvciBJVFMgQ2xlYW51cCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24gaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY2AuIEl0IHNlZW1zIHRoZXkndmUgY2hhbmdlZCB0aGUgd2F5IGNvbGxlY3Rpb25zIGFyZSBmcmVlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgSVRTIGNvZGUuIEluc3RlYWQgb2YgdGhlIHByZXZpb3VzIGFwcHJvYWNoLCB3aGljaCBlc3NlbnRpYWxseSBsb29wZWQgdGhyb3VnaCBhbGwgY29sbGVjdGlvbnMgYW5kIHRoZW4gcG90ZW50aWFsbHkgYWxsIElURXMgcGVyIGNvbGxlY3Rpb24sIHRoZSBuZXcgbWV0aG9kIGl0ZXJhdGVzIHRocm91Z2ggSVRFcyBhbmQgbnVsbHMgb3V0IHRoZSBgY29sbGVjdGlvbmAgcG9pbnRlciBmb3IgZWFjaCwgYW5kICp0aGVuKiBmcmVlcyB0aGUgY29sbGVjdGlvbnMuIFNtYXJ0LlxuXG5UaGUgc3RhdGVkIGdvYWwgaXMgY2xlYXJseSBvcHRpbWl6YXRpb247IHRoZXkncmUgYWltaW5nIHRvIGF2b2lkIGFuIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSBjb21wbGV4aXR5IGlzc3VlLCB3aGljaCBJIHJlY29nbml6ZSBjb3VsZCBsZWFkIHRvIHNvbWUgc2lnbmlmaWNhbnQgUkNVIHN0YWxscywgZXNwZWNpYWxseSBpbiBhIGhlYXZpbHkgbG9hZGVkIHN5c3RlbS4gV2UncmUgdGFsa2luZyBhYm91dCBLVk0gY29kZSwgdGFyZ2V0dGVkIHRvIEFSTTY0IGFyY2hpdGVjdHVyZSwgc28gdGhlIHN0YWtlcyBhcmUgcHJldHR5IGhpZ2ggaWYgdGhlcmUncyBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIG9wdGltaXphdGlvbiBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB1c2UgY2FzZT8gSXMgaXQgd29ydGggdGhlIGVmZm9ydCB0byB0aG9yb3VnaGx5IGZ1enogdGhpcyBtb2RpZmllZCBmdW5jdGlvbiB0byBlbnN1cmUgY29ycmVjdG5lc3M/IFRoZSBjb250ZXh0IGhlcmUgaXMgSVRTIHRlYXJkb3duIG9yIGRlc3RydWN0aW9uLCBhbmQgYSBxdWljayBzZWFyY2ggZm9yIGNhbGxzIHRvIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgaXMgZGVmaW5pdGVseSBpbiBvcmRlci4gR290dGEgZmlndXJlIG91dCB0aGUgbGlrZWx5IHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgaXMgZXhlY3V0ZWQgdG8gYXNzZXNzIHRoZSByaXNrL3Jld2FyZCBvZiBkaXZpbmcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjI3LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NDguMDU3NzY5NjM3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjE5OTMxNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExMzM6c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTY2Nz1zdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzEzLVxcdFxcdGNhc2UgR0lUU19CQVNFUl9UWVBFX0NPTExFQ1RJT046XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3MTQ6XFx0XFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzE1LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE5MjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqa3ZtX2RldilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTMzLVxcdHZnaWNfaXRzX2ZyZWVfZGV2aWNlX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxOTM0OlxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGt2bSwgaXRzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTkzNS1cXHR2Z2ljX2l0c19pbnZhbGlkYXRlX2NhY2hlKGl0cyk7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjU2OT1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZShzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNTk2LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNTk3OlxcdFxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGl0cy1cXHUwMDNlZGV2LVxcdTAwM2Vrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI1OTgtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjYyMj1zdGF0aWMgaW50IHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2MzEtXFx0aWYgKHJldClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjYzMjpcXHRcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChpdHMtXFx1MDAzZWRldi1cXHUwMDNla3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjMzLVxcdHJldHVybiByZXQ7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjY1MT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19yZXNldChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2NjAtXFx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI2NjE6XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNjYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NDkuODE5NzY4MzEzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjUwMTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGZ1bmN0aW9uIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgY2FuIHNlZSBpdCdzIGNhbGxlZCBmcm9tIGEgZmV3IGtleSBhcmVhcyB3aXRoaW4gdGhlIEtWTSBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAsIGB2Z2ljX2l0c19kZXN0cm95YCwgYHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZWAsIGB2Z2ljX2l0c19yZXN0b3JlX3RhYmxlc192MGAsIGFuZCBgdmdpY19pdHNfcmVzZXRgIGFyZSBhbGwgbWFraW5nIHVzZSBvZiBpdC4gR2l2ZW4gaXRzIGludGVncmF0aW9uIHdpdGggdGhvc2UgY3JpdGljYWwgY29tcG9uZW50cywgaXQncyBoaWdobHkgbGlrZWx5IHRvIGJlIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgYW5kIHRoZXJlZm9yZSBhIGdvb2QgY2FuZGlkYXRlLiBUaGUgZmFjdCB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBBUk02NCBhcmNoaXRlY3R1cmUgaXMgYWxzbyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gTm93LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgS1ZNIGFuZCBWR0lDIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBkaXZlIGRlZXBlci4gVGhpcyBzZWVtcyBwcm9taXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NTMuNjYyMjcyNjQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTU2MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE3OjUzLjcxMTIzNDI4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzU3MjkyMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBWR0lDIElUUyBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIHNwZWNpZmljLiBJJ20gZm9jdXNpbmcgb24gdGhlIFZHSUMgKFZpcnR1YWwgR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKS4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSwgSSB3YW50IHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBjdXN0b20gY29uZmlndXJhdGlvbnMgb3IgbnVhbmNlcyByZWxhdGVkIHRvIHRoZSBJVFMgc3BlY2lmaWNhbGx5IGZvciB0aGlzIFZHSUMgaW1wbGVtZW50YXRpb24uIEkga25vdyB0aGUgYmFzZSBzcGVjaWZpY2F0aW9ucywgYnV0IHBhc3QgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRvIGFsd2F5cyBkb3VibGUtY2hlY2sgZm9yIHZlbmRvci1zcGVjaWZpYyBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucyB0aGF0IG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBvYnZpb3VzIGluIHRoZSBzdGFuZGFyZCBkb2N1bWVudGF0aW9uLiBJdCdzIGEga2V5IGZpcnN0IHN0ZXAgdG8gYXZvaWQgcG90ZW50aWFsbHkgd2FzdGluZyB0aW1lIGNoYXNpbmcgZG93biBpc3N1ZXMgdGhhdCBhcmUgc2ltcGx5IGR1ZSB0byBhIHByZXZpb3VzbHkta25vd24sIGJ1dCBwZXJoYXBzIG92ZXJsb29rZWQsIGNvbmZpZ3VyYXRpb24gc2V0dGluZy4gQmV0dGVyIHRvIHJ1bGUgdGhhdCBvdXQgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NTYuOTQ2OTY2NjQ5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjczMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTc6NTYuOTkyMjQ1Mzk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNTAxNDY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQgZmlsZS4uLlxuXG4qKkFuYWx5emluZyBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYCBmb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBhIG1lbnRhbCBzY2FuIGZvciBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMg4oCTIHNwZWNpZmljYWxseSwgYCNpZmRlZmAsIGAjaWZuZGVmYCwgYCNpZmAsIGV0Yy4g4oCTIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSBmaWxlLiBNeSBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGNvZGUgaGFzIHNpZ25pZmljYW50IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJ1aWx0IGludG8gaXQuIFRoZSBJVFMgKEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlKSBjb2RlIGlzIG9mdGVuIGEgdGFyZ2V0IGZvciBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgb2YgaGFyZHdhcmUsIGFuZCB0aGUgYCNpZmRlZmBzIGFyZSBteSBicmVhZCBhbmQgYnV0dGVyIGZvciBzcG90dGluZyB0aG9zZSBkaWZmZXJlbmNlcy4gSXQgaXMgYW4gaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGluY2x1ZGVkIGluIGFsbCBidWlsZHMgb3IgaWYgdGhlcmUgYXJlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gdGhlIHRhcmdldCBzeXN0ZW0uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJ1aWxkJ3MgZmxleGliaWxpdHkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjAwLjgxNzI2MzcyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwODY0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg2Nz1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODkzLVxcdC8qIFllcCwgZXZlbiBtb3JlIHRyaWNrZXJ5IGZvciBsb2NrIG9yZGVyaW5nLi4uICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4OTQ6I2lmZGVmIENPTkZJR19MT0NLREVQXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4OTUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2aXRzLVxcdTAwM2VjbWRfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjAwLjg2NDM1NzQxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzUwNDc0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIG9uIEFSTTY0OiBBIFF1aWNrIExvb2sgYXQgdGhlIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBLVk0gaXMgYXV0b21hdGljYWxseSBidWlsdCB3aGVuIGVuYWJsZWQgb24gQVJNNjQsIHRoYXQgbXVjaCBJIGtub3cuIE5vdywgSSBuZWVkIHRvIHNlZSBleGFjdGx5ICpob3cqIGEgc3BlY2lmaWMgcGFydCBvZiBpdCwgYHZnaWMtaXRzLm9gLCBpcyBicm91Z2h0IGludG8gYmVpbmcuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgYnVpbGQgcHJvY2VzcywgYW5kLCBrbm93aW5nIG15IHdheSBhcm91bmQgdGhpcyBrZXJuZWwgc3RydWN0dXJlLCB0aGF0IG1lYW5zIGNyYWNraW5nIG9wZW4gYGFyY2gvYXJtNjQva3ZtL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWdpYywgb3IgYXQgbGVhc3QgdGhlIG1ha2UgcnVsZXMsIGhhcHBlbnMuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhpcyBNYWtlZmlsZSBob2xkcy4uLiBJIGV4cGVjdCBJJ2xsIGZpbmQgbXkgYW5zd2VyIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTYzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MDQuMTk5NDA4MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTMyMzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWMtaXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTE2PWt2bS15ICs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXFxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTI1LVxcdCB2Z2ljL3ZnaWMtbW1pby12My5vIHZnaWMvdmdpYy1rdm0tZGV2aWNlLm8gXFxcXFxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlOjI2OlxcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cXHQgdmdpYy92Z2ljLXY1Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MDQuMjQ3OTQ3ODg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyMzA1NzM1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGllZCB0byB0aGUgYGt2bS15YCBidWlsZCwgYW5kIGJ5IGV4dGVuc2lvbiwgYENPTkZJR19LVk1gLiBSaWdodCwgdGhhdCdzIHRoZSBzZXR1cC4gSXQncyB0b3VjaGluZyBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIGluIGB2Z2ljLWl0cy5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBhbiBvcHRpbWl6YXRpb24gYW5kL29yIGJ1ZyBmaXggZGVzaWduZWQgdG8gbWl0aWdhdGUgUkNVIHN0YWxscy4gVGhlIGNvbXBsZXhpdHkgY2hhbmdlLCBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKSBkb3duIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSwgaXMgdGhlIGtleSBpbmRpY2F0b3Igb2YgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgb3IgYSBjcml0aWNhbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtb2RlbC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFsdGVyaW5nIHRoZSBleGVjdXRpb24gZmxvdyByZWxhdGVkIHRvIGhvdyBjb2xsZWN0aW9ucyBhcmUgZnJlZWQgYW5kIElURXMgYXJlIHVwZGF0ZWQuIFRoaXMgc291bmRzIGxpa2UgcHJpbWUgZnV6emluZyBtYXRlcmlhbC5cblxuTXkgZm9jdXMgaXMgdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24uIEl0J3Mgc3RhdGljLCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgbm9uLXN0YXRpYyBjYWxsZXJzIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBiZWluZyB1c2VkLiBMZXQncyBzZWUuLi4gdGhlIGNhbGxlcnMgYXJlOlxuXG4qICAgYHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJgIHdoaWNoIGdvZXMgdGhyb3VnaCBgdmdpY19tbWlvX3dyaXRlYCAtXHUwMDNlIGBrdm1faW9fYnVzX3dyaXRlYC5cbiogICBgdmdpY19pdHNfZGVzdHJveWAgd2hpY2ggZ29lcyB0aHJvdWdoIGBrdm1fZGVzdHJveV9kZXZpY2VzYCAtXHUwMDNlIGBrdm1fZGVzdHJveV92bWAuXG4qICAgYHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZWAgd2hpY2ggZ29lcyB0aHJvdWdoIGEgY2hhaW4gb2Ygc3RhdGljIGZ1bmN0aW9ucyAoYHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzX3YwYCwgYHZnaWNfaXRzX3Jlc3RvcmVfdGFibGVzYCwgYHZnaWNfaXRzX3NldF9hdHRyYCkgYW5kIHRoZW4gZmluYWxseSBga3ZtX2RldmljZV9pb2N0bF9hdHRyYC5cbiogICBgdmdpY19pdHNfcmVzZXRgIHdoaWNoIGFsc28gY2FsbHMgdGhyb3VnaCB0aGF0IHN0YXRpYyBjaGFpbiB0byBga3ZtX2RldmljZV9pb2N0bF9hdHRyYC5cblxuQWxyaWdodCwgSSdsbCBwYXkgY2xvc2VyIGF0dGVudGlvbiB0byBgdmdpY19pdHNfZGVzdHJveWAgYW5kIGB2Z2ljX2l0c19zZXRfYXR0cmAuIEFoLCB0aGV5J3JlIGJvdGggY2FsbGJhY2tzIHdpdGhpbiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCB3aGljaCBpcyBsaWtlbHkgYSBrZXkgc3RydWN0IGZvciB0aGUgSVRTIGRldmljZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoYXQgc3RydWN0IGRlZmluaXRpb24gbmV4dC4gVGhpcyB3aWxsIGRlZmluZSB0aGUgbGlmZWN5Y2xlIGFuZCBvcGVyYXRpb25zIG9mIHRoZSBJVFMsIHJpZ2h0P1xuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjEyLjQ3ODUyNTk1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDIxNzU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJtX3ZnaWNfaXRzX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjpzdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9hcm1fdmdpY19pdHNfb3BzO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNy1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02MTk9dm9pZCB2Z2ljX2l0c19pbnZhbGlkYXRlX2FsbF9jYWNoZXMoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYyNi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXYsIFxcdTAwMjZrdm0tXFx1MDAzZWRldmljZXMsIHZtX25vZGUpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjI3OlxcdFxcdGlmIChkZXYtXFx1MDAzZW9wcyAhPSBcXHUwMDI2a3ZtX2FybV92Z2ljX2l0c19vcHMpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYyOC1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNzk0PXN0YXRpYyBpbnQgdmdpY19pdHNfZ2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODI3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODI4OnN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2FybV92Z2ljX2l0c19vcHMgPSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MjktXFx0Lm5hbWUgPSBcXFwia3ZtLWFybS12Z2ljLWl0c1xcXCIsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgzNz1pbnQga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZSh2b2lkKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODM4LXtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjgzOTpcXHRyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXFx1MDAyNmt2bV9hcm1fdmdpY19pdHNfb3BzLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODQwLVxcdFxcdFxcdFxcdCAgICAgICBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfSVRTKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MTIuNTI4NzQ5OTg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNDUxNDk5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBJVFMgRGV2aWNlIENhbGxiYWNrcyBmb3IgRXhwbG9pdGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY2FsbGJhY2tzOiBgdmdpY19pdHNfc2V0X2F0dHJgLCBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19jcmVhdGVgLCBgdmdpY19pdHNfaGFzX2F0dHJgLCBhbmQgYHZnaWNfaXRzX2dldF9hdHRyYC4gVGhleSdyZSBhbGwgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGluaXRpYWxseSBtYWtlcyBtZSB0aGluayB0aGV5J2QgYmUgaGFyZGVyIHRvIHRhcmdldCBkaXJlY3RseS4gQnV0IHRoZW4gSSByZW1lbWJlcjogdGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBga3ZtX2RldmljZV9vcHNgIHN0cnVjdHVyZSwgYW5kIHRob3NlIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGZyb20gZ2VuZXJpYyBLVk0gY29kZSB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoYXQncyBrZXkuXG5cbklmIHRoZXkgd2VyZSBpbmxpbmVkLCB0aGUgYHN0YXRpY2AgZGVjbGFyYXRpb24gKndvdWxkKiBiZSBhIHByb2JsZW0uIFRhcmdldGluZyB0aGVtIGJ5IG5hbWUgd291bGQgYmUgZGlmZmljdWx0LiBCdXQgc2luY2UgdGhleSdyZSBmdW5jdGlvbiBwb2ludGVycywgdGhleSAqYXJlbid0KiBpbmxpbmVkLiBUaGUgY29tcGlsZXIgaGFzIHRvIHByb3ZpZGUgYSByZWFsIGFkZHJlc3MgZm9yIHRoZW0uIEFuZCB0aGF0IG9wZW5zIHVwIHBvc3NpYmlsaXRpZXMuXG5cblRoZSBiZWF1dHkgb2Ygc3l6a2FsbGVyIGlzIHRoYXQgaXQgY2FuIHRhcmdldCBpb2N0bHMsIGxpa2UgYEtWTV9TRVRfREVWSUNFX0FUVFJgLCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgcmVhY2ggYHZnaWNfaXRzX3NldF9hdHRyYC4gVGhhdCdzIGEgZGlyZWN0IHJvdXRlLiBOb3csIGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGVhc2llciB0byBsZXZlcmFnZT8gSSBzZWUgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgLCBidXQgdGhhdCdzIGp1c3QgcmVnaXN0cmF0aW9uLCBzbyBsaWtlbHkgbm90IGludGVyZXN0aW5nIGZyb20gYW4gZXhwbG9pdCBwZXJzcGVjdGl2ZS5cblxuRm9jdXNpbmcgYmFjayBvbiBgdmdpY19pdHNfc2V0X2F0dHJgIGFuZCBgdmdpY19pdHNfZGVzdHJveWDigKYgZXZlbiB0aG91Z2ggdGhleSdyZSBgc3RhdGljYCwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdXNhZ2UgY2hhbmdlcyBldmVyeXRoaW5nLiBTeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSdyZSBub3QgaW5saW5lZCwgYW5kIHRoZWlyIGFkZHJlc3NlcyAqYXJlKiB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSdyZSBub3QgaW5saW5lZC5cblxuU28sIHRoZSBwbGFuIGlzOiB3ZSBjYW4gZGVmaW5pdGVseSB1c2UgYHZnaWNfaXRzX3NldF9hdHRyYCBhbmQgYHZnaWNfaXRzX2Rlc3Ryb3lgLiBMZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoZXkgYXJlLCBpbiBmYWN0LCBzdGF0aWMgZnVuY3Rpb25zLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkzMiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODoxOS44NzM5MDI1OTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzU4NzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfaXRzX3NldF9hdHRyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9Mjc0Mj1ib29sIGt2bV9hcmNoX2FsbG93X3dyaXRlX3dpdGhvdXRfcnVubmluZ192Y3B1KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yNzQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNzQ5OnN0YXRpYyBpbnQgdmdpY19pdHNfc2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjc1MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MjgyOD1zdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9hcm1fdmdpY19pdHNfb3BzID0ge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI4MzEtXFx0LmRlc3Ryb3kgPSB2Z2ljX2l0c19kZXN0cm95LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyODMyOlxcdC5zZXRfYXR0ciA9IHZnaWNfaXRzX3NldF9hdHRyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMzLVxcdC5nZXRfYXR0ciA9IHZnaWNfaXRzX2dldF9hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODoxOS45MjAyNjcyMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NDk3MjA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgc2VlbSB0byBiZSAqc3RhdGljKiB3aGljaCBpc24ndCBpZGVhbCBmb3IgYW4gZW50cnkgcG9pbnQuIFRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGlzIHRoZXJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IG1pZ2h0IHNlcnZlIGEgYmV0dGVyIHB1cnBvc2U/IExldCBtZSB0aGluaywgKnZnaWNfaXRzX2Rlc3Ryb3kqIGlzIGRlZmluaXRlbHkgb3V0LCBiZWluZyBzdGF0aWMuIEhtLCB3aGF0IGFib3V0ICp2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyKj8gVGhhdCdzIGFsc28gc3RhdGljLi4uIGJ1dCB3YWl0LCBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBmcm9tICp2Z2ljX21taW9fd3JpdGUqLiBPa2F5LCAqdmdpY19tbWlvX3dyaXRlKiBpcyBub24tc3RhdGljLCBzbyBsZXQncyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDI1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MjMuMzA1MjQxNjg0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM5Mjc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Z2ljX21taW9fd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNTExPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19jYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE1MTctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE1MTg6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19jYmFzZXIoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTUxOS1cXHRcXHRcXHRcXHQgICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNTQzPXN0YXRpYyB2b2lkIHZnaWNfaXRzX3Byb2Nlc3NfY29tbWFuZHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNTc4LSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNTc5OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfY3dyaXRlcihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNTgwLVxcdFxcdFxcdFxcdFxcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTY0NT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE2NjYtI2RlZmluZSBHSVRTX0JBU0VSX1JPX01BU0tcXHQoR0VOTUFTS19VTEwoNTIsIDQ4KSB8IEdFTk1BU0tfVUxMKDU4LCA1NikpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE2Njc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE2NjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTcyMT1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9pdHNfY3RscihzdHJ1Y3Qga3ZtICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3Mzc6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2l0c19jdGxyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MzgtXFx0XFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE3OTI9c3RhdGljIHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiBpdHNfcmVnaXN0ZXJzW10gPSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3OTMtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DVExSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxNzk0OlxcdFxcdHZnaWNfbW1pb19yZWFkX2l0c19jdGxyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2N0bHIsIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3OTUtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDMtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DQkFTRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE4MDQ6XFx0XFx0dmdpY19tbWlvX3JlYWRfaXRzX2NiYXNlciwgdmdpY19tbWlvX3dyaXRlX2l0c19jYmFzZXIsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDUtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDYtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19DV1JJVEVSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODA3OlxcdFxcdHZnaWNfbW1pb19yZWFkX2l0c19jd3JpdGVyLCB2Z2ljX21taW9fd3JpdGVfaXRzX2N3cml0ZXIsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MDgtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgxMy1cXHRSRUdJU1RFUl9JVFNfREVTQyhHSVRTX0JBU0VSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODE0OlxcdFxcdHZnaWNfbW1pb19yZWFkX2l0c19iYXNlciwgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlciwgMHg0MCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTgxNS1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM9MjU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfdjJfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTUxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NTI6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3YyX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNTMtXFx0XFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTcyPXN0YXRpYyBpbnQgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfdjJfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTEwNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjEwNjpcXHR2Z2ljX21taW9fd3JpdGVfdjJfbWlzYyh2Y3B1LCBhZGRyLCBsZW4sIHZhbCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMDctXFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTExMD1zdGF0aWMgaW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YyX2dyb3VwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTE0LVxcdGlmICh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2gudmdpYy52Ml9ncm91cHNfdXNlcl93cml0YWJsZSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjExNTpcXHRcXHR2Z2ljX21taW9fd3JpdGVfZ3JvdXAodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMTE2LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0xMTktXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzoxMjA6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3NnaXIoc3RydWN0IGt2bV92Y3B1ICpzb3VyY2VfdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTEyMS1cXHRcXHRcXHRcXHQgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM9MTYyPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE3OS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjE4MDpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTE4MS1cXHRcXHRcXHRcXHQgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0yMDg9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfc2dpcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTIyNC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjIyNTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfc2dpcGVuZGMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMjI2LVxcdFxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMjQ2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MjQ3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9zZ2lwZW5kcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy0yNDgtXFx0XFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0yNzU9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfdmNwdWlmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzIxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6MzIyOnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV92Y3B1aWYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzIzLVxcdFxcdFxcdFxcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTM2MS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjM2MjpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfZGlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTM2My1cXHRcXHRcXHRcXHRncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz0zNzI9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfYXByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzk2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6Mzk3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9hcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtMzk4LVxcdFxcdFxcdFxcdGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jPTQyMz1zdGF0aWMgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uIHZnaWNfdjJfZGlzdF9yZWdpc3RlcnNbXSA9IHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQyNC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoR0lDX0RJU1RfQ1RSTCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQyNTpcXHRcXHR2Z2ljX21taW9fcmVhZF92Ml9taXNjLCB2Z2ljX21taW9fd3JpdGVfdjJfbWlzYyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQyNi1cXHRcXHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92Ml9taXNjLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MjgtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9JR1JPVVAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0Mjk6XFx0XFx0dmdpY19tbWlvX3JlYWRfZ3JvdXAsIHZnaWNfbW1pb193cml0ZV9ncm91cCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQzMC1cXHRcXHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92Ml9ncm91cCwgMSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDMyLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfRU5BQkxFX1NFVCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQzMzpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDM0LVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9zZW5hYmxlLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00MzYtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9FTkFCTEVfQ0xFQVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0Mzc6XFx0XFx0dmdpY19tbWlvX3JlYWRfZW5hYmxlLCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQzOC1cXHRcXHROVUxMLCB2Z2ljX3VhY2Nlc3Nfd3JpdGVfY2VuYWJsZSwgMSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQwLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfUEVORElOR19TRVQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NDE6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQyLVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX3BlbmRpbmcsIHZnaWNfdWFjY2Vzc193cml0ZV9zcGVuZGluZywgMSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDQ0LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lDX0RJU1RfUEVORElOR19DTEVBUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ0NTpcXHRcXHR2Z2ljX21taW9fcmVhZF9wZW5kaW5nLCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NDYtXFx0XFx0dmdpY191YWNjZXNzX3JlYWRfcGVuZGluZywgdmdpY191YWNjZXNzX3dyaXRlX2NwZW5kaW5nLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NDgtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9BQ1RJVkVfU0VULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDQ5OlxcdFxcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTAtXFx0XFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTItXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9BQ1RJVkVfQ0xFQVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NTM6XFx0XFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfY2FjdGl2ZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1NC1cXHRcXHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX2NhY3RpdmUsIDEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ1Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRKEdJQ19ESVNUX1BSSSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ1NzpcXHRcXHR2Z2ljX21taW9fcmVhZF9wcmlvcml0eSwgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5LCBOVUxMLCBOVUxMLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDU4LVxcdFxcdDgsIFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NTktXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9UQVJHRVQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjA6XFx0XFx0dmdpY19tbWlvX3JlYWRfdGFyZ2V0LCB2Z2ljX21taW9fd3JpdGVfdGFyZ2V0LCBOVUxMLCBOVUxMLCA4LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDYxLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjItXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNfRElTVF9DT05GSUcsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjM6XFx0XFx0dmdpY19tbWlvX3JlYWRfY29uZmlnLCB2Z2ljX21taW9fd3JpdGVfY29uZmlnLCBOVUxMLCBOVUxMLCAyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDY0LVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2NS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19ESVNUX1NPRlRJTlQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NjY6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfc2dpciwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ2Ny1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NjgtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfRElTVF9TR0lfUEVORElOR19DTEVBUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ2OTpcXHRcXHR2Z2ljX21taW9fcmVhZF9zZ2lwZW5kLCB2Z2ljX21taW9fd3JpdGVfc2dpcGVuZGMsIDE2LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDcwLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfRElTVF9TR0lfUEVORElOR19TRVQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0NzI6XFx0XFx0dmdpY19tbWlvX3JlYWRfc2dpcGVuZCwgdmdpY19tbWlvX3dyaXRlX3NnaXBlbmRzLCAxNixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3My1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCB8IFZHSUNfQUNDRVNTXzhiaXQpLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYz00NzY9c3RhdGljIGNvbnN0IHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiB2Z2ljX3YyX2NwdV9yZWdpc3RlcnNbXSA9IHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ3Ny1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ19DUFVfQ1RSTCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ3ODpcXHRcXHR2Z2ljX21taW9fcmVhZF92Y3B1aWYsIHZnaWNfbW1pb193cml0ZV92Y3B1aWYsIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00NzktXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmMtNDgwLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDX0NQVV9QUklNQVNLLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDgxOlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4Mi1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0JJTlBPSU5ULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDg0OlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4NS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODYtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0FMSUFTX0JJTlBPSU5ULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDg3OlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ4OC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00ODktXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0FDVElWRVBSSU8sXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYzo0OTA6XFx0XFx0dmdpY19tbWlvX3JlYWRfYXByLCB2Z2ljX21taW9fd3JpdGVfYXByLCAxNixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5MS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTItXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNfQ1BVX0lERU5ULFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYyLmM6NDkzOlxcdFxcdHZnaWNfbW1pb19yZWFkX3ZjcHVpZiwgdmdpY19tbWlvX3dyaXRlX3ZjcHVpZiwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jLTQ5NC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTUtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ19DUFVfREVBQ1RJVkFURSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12Mi5jOjQ5NjpcXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV9kaXIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjIuYy00OTctXFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV93aSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9ODE9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfdjNfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTEyMC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjEyMTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdjNfbWlzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0xMjItXFx0XFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTE3MD1zdGF0aWMgaW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3YzX21pc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMTUtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzoyMTY6XFx0dmdpY19tbWlvX3dyaXRlX3YzX21pc2ModmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjE3LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz0yMjA9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTIzNy1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjIzODpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXJvdXRlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy0yMzktXFx0XFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTI3Mj1zdGF0aWMgdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF92M3JfY3RscihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTI4NC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjI4NTpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfdjNyX2N0bHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtMjg2LVxcdFxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM9NDc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3Byb3BiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNDg2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NDg3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9wcm9wYmFzZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy00ODgtXFx0XFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz01MDc9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcGVuZGJhc2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01MTctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1MTg6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX3BlbmRiYXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTUxOS1cXHRcXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTU0ND1zdGF0aWMgdm9pZCB2Z2ljX3NldF9yZGlzdF9idXN5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBidXN5KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NTQtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1NTU6c3RhdGljIHZvaWQgdmdpY19tbWlvX3dyaXRlX2ludmxwaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy01NTYtXFx0XFx0XFx0XFx0ICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTg2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NTg3OnN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pbnZhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNTg4LVxcdFxcdFxcdFxcdCAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5MC17XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo1OTE6XFx0LyogU2VlIHZnaWNfbW1pb193cml0ZV9pbnZscGkoKSBmb3IgdGhlIGVhcmx5IHJldHVybiByYXRpb25hbGUgKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTU5Mi1cXHRpZiAoKGFkZHIgXFx1MDAyNiA0KSB8fCAhdmdpY19scGlzX2VuYWJsZWQodmNwdSkpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYxMy1cXHRcXHQucmVhZCA9IHZnaWNfbW1pb19yZWFkX3JheixcXHRcXHRcXHRcXHRcXFxcXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2MTQ6XFx0XFx0LndyaXRlID0gdmdpY19tbWlvX3dyaXRlX3dpLFxcdFxcdFxcdFxcdFxcXFxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYxNS1cXHR9LCB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz02MjY9c3RhdGljIGNvbnN0IHN0cnVjdCB2Z2ljX3JlZ2lzdGVyX3JlZ2lvbiB2Z2ljX3YzX2Rpc3RfcmVnaXN0ZXJzW10gPSB7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MjctXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ0RfQ1RMUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYyODpcXHRcXHR2Z2ljX21taW9fcmVhZF92M19taXNjLCB2Z2ljX21taW9fd3JpdGVfdjNfbWlzYyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYyOS1cXHRcXHROVUxMLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV92M19taXNjLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNEX1NUQVRVU1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2MzI6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmFvLCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02MzMtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM0LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSUdST1VQUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYzNTpcXHRcXHR2Z2ljX21taW9fcmVhZF9ncm91cCwgdmdpY19tbWlvX3dyaXRlX2dyb3VwLCBOVUxMLCBOVUxMLCAxLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM2LVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTYzNy1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lTRU5BQkxFUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjYzODpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjM5LVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9zZW5hYmxlLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NDEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JQ0VOQUJMRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NDI6XFx0XFx0dmdpY19tbWlvX3JlYWRfZW5hYmxlLCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0My1cXHQgICAgICAgTlVMTCwgdmdpY191YWNjZXNzX3dyaXRlX2NlbmFibGUsIDEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY0NS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lTUEVORFIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NDY6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjQ3LVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX3BlbmRpbmcsIHZnaWNfdjNfdWFjY2Vzc193cml0ZV9wZW5kaW5nLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NDktXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JQ1BFTkRSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjUwOlxcdFxcdHZnaWNfbW1pb19yZWFkX3BlbmRpbmcsIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1MS1cXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3dpLCAxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NTMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JU0FDVElWRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NTQ6XFx0XFx0dmdpY19tbWlvX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1NS1cXHRcXHR2Z2ljX3VhY2Nlc3NfcmVhZF9hY3RpdmUsIHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUsIDEsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY1Ny1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lDQUNUSVZFUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY1ODpcXHRcXHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjU5LVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfY2FjdGl2ZSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjYxLVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlFfU0hBUkVEKEdJQ0RfSVBSSU9SSVRZUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY2MjpcXHRcXHR2Z2ljX21taW9fcmVhZF9wcmlvcml0eSwgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5LCBOVUxMLCBOVUxMLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjYzLVxcdFxcdDgsIFZHSUNfQUNDRVNTXzMyYml0IHwgVkdJQ19BQ0NFU1NfOGJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NjQtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JVEFSR0VUU1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2NjU6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIE5VTEwsIE5VTEwsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NjYtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQgfCBWR0lDX0FDQ0VTU184Yml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2Ny1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfQklUU19QRVJfSVJRX1NIQVJFRChHSUNEX0lDRkdSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NjY4OlxcdFxcdHZnaWNfbW1pb19yZWFkX2NvbmZpZywgdmdpY19tbWlvX3dyaXRlX2NvbmZpZywgTlVMTCwgTlVMTCwgMixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY2OS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzAtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JR1JQTU9EUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY3MTpcXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgTlVMTCwgTlVMTCwgMSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3Mi1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02NzMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUV9TSEFSRUQoR0lDRF9JUk9VVEVSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njc0OlxcdFxcdHZnaWNfbW1pb19yZWFkX2lyb3V0ZXIsIHZnaWNfbW1pb193cml0ZV9pcm91dGVyLCBOVUxMLCBOVUxMLCA2NCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3NS1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ0RfSURSRUdTLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6Njc3OlxcdFxcdHZnaWNfbW1pb19yZWFkX3YzX2lkcmVncywgdmdpY19tbWlvX3dyaXRlX3dpLCA0OCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY3OC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTY4MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uIHZnaWNfdjNfcmRfcmVnaXN0ZXJzW10gPSB7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4My1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfQ1RMUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY4NDpcXHRcXHR2Z2ljX21taW9fcmVhZF92M3JfY3RsciwgdmdpY19tbWlvX3dyaXRlX3Yzcl9jdGxyLCA0LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjg1LVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfU1RBVFVTUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjY4NzpcXHRcXHR2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNfbW1pb193cml0ZV93aSwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY4OC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02ODktXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX0lJRFIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTA6XFx0XFx0dmdpY19tbWlvX3JlYWRfdjNyX2lpZHIsIHZnaWNfbW1pb193cml0ZV93aSwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5MS1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTItXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKEdJQ1JfVFlQRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTM6XFx0XFx0dmdpY19tbWlvX3JlYWRfdjNyX3R5cGVyLCB2Z2ljX21taW9fd3JpdGVfd2ksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTQtXFx0XFx0TlVMTCwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfd2ksIDgsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTY5Ni1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfV0FLRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo2OTc6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy02OTgtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNjk5LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9QUk9QQkFTRVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MDA6XFx0XFx0dmdpY19tbWlvX3JlYWRfcHJvcGJhc2UsIHZnaWNfbW1pb193cml0ZV9wcm9wYmFzZSwgOCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwMS1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcwMi1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfUEVOREJBU0VSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzAzOlxcdFxcdHZnaWNfbW1pb19yZWFkX3BlbmRiYXNlLCB2Z2ljX21taW9fd3JpdGVfcGVuZGJhc2UsIDgsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDQtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MDUtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSChHSUNSX0lOVkxQSVIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MDY6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfaW52bHBpLCA4LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzA3LVxcdFxcdFZHSUNfQUNDRVNTXzY0Yml0IHwgVkdJQ19BQ0NFU1NfMzJiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzA4LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoR0lDUl9JTlZBTExSLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzA5OlxcdFxcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX2ludmFsbCwgOCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxMC1cXHRcXHRWR0lDX0FDQ0VTU182NGJpdCB8IFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxMS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfU1lOQ1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MTI6XFx0XFx0dmdpY19tbWlvX3JlYWRfc3luYywgdmdpY19tbWlvX3dyaXRlX3dpLCA0LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzEzLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxNC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKEdJQ1JfSURSRUdTLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzE1OlxcdFxcdHZnaWNfbW1pb19yZWFkX3YzX2lkcmVncywgdmdpY19tbWlvX3dyaXRlX3dpLCA0OCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxNi1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcxOC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyArIEdJQ1JfSUdST1VQUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MTk6XFx0XFx0dmdpY19tbWlvX3JlYWRfZ3JvdXAsIHZnaWNfbW1pb193cml0ZV9ncm91cCwgNCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTcyMC1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCksXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSVNFTkFCTEVSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcyMjpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzIzLVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9zZW5hYmxlLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjUtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSUNFTkFCTEVSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjcyNjpcXHRcXHR2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzI3LVxcdFxcdE5VTEwsIHZnaWNfdWFjY2Vzc193cml0ZV9jZW5hYmxlLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MjktXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSVNQRU5EUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MzA6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzMxLVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX3BlbmRpbmcsIHZnaWNfdjNfdWFjY2Vzc193cml0ZV9wZW5kaW5nLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MzMtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSUNQRU5EUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3MzQ6XFx0XFx0dmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5nLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzM1LVxcdFxcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfd2ksIDQsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTczNy1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIX1VBQ0NFU1MoU1pfNjRLICsgR0lDUl9JU0FDVElWRVIwLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzM4OlxcdFxcdHZnaWNfbW1pb19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03MzktXFx0XFx0dmdpY191YWNjZXNzX3JlYWRfYWN0aXZlLCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlLCA0LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NDEtXFx0UkVHSVNURVJfREVTQ19XSVRIX0xFTkdUSF9VQUNDRVNTKFNaXzY0SyArIEdJQ1JfSUNBQ1RJVkVSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjc0MjpcXHRcXHR2Z2ljX21taW9fcmVhZF9hY3RpdmUsIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQzLVxcdFxcdHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZSwgdmdpY19tbWlvX3VhY2Nlc3Nfd3JpdGVfY2FjdGl2ZSwgNCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQ1LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICsgR0lDUl9JUFJJT1JJVFlSMCxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jOjc0NjpcXHRcXHR2Z2ljX21taW9fcmVhZF9wcmlvcml0eSwgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5LCAzMixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc0Ny1cXHRcXHRWR0lDX0FDQ0VTU18zMmJpdCB8IFZHSUNfQUNDRVNTXzhiaXQpLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzQ4LVxcdFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgoU1pfNjRLICsgR0lDUl9JQ0ZHUjAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NDk6XFx0XFx0dmdpY19tbWlvX3JlYWRfY29uZmlnLCB2Z2ljX21taW9fd3JpdGVfY29uZmlnLCA4LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzUwLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc1MS1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyArIEdJQ1JfSUdSUE1PRFIwLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6NzUyOlxcdFxcdHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCA0LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtNzUzLVxcdFxcdFZHSUNfQUNDRVNTXzMyYml0KSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTc1NC1cXHRSRUdJU1RFUl9ERVNDX1dJVEhfTEVOR1RIKFNaXzY0SyArIEdJQ1JfTlNBQ1IsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo3NTU6XFx0XFx0dmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIDQsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy03NTYtXFx0XFx0VkdJQ19BQ0NFU1NfMzJiaXQpLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0yNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTMwLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzE6dm9pZCB2Z2ljX21taW9fd3JpdGVfd2koc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMzItXFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTY0PXN0YXRpYyB2b2lkIHZnaWNfdXBkYXRlX3ZzZ2koc3RydWN0IHZnaWNfaXJxICppcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6Njk6dm9pZCB2Z2ljX21taW9fd3JpdGVfZ3JvdXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNzAtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTk2PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTE1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTE2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTE3LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY0LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MTY1OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NlbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMTY2LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9MzA0PXN0YXRpYyB2b2lkIF9fc2V0X3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zNTItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzozNTM6dm9pZCB2Z2ljX21taW9fd3JpdGVfc3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMzU0LVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTM4OT1zdGF0aWMgdm9pZCBfX2NsZWFyX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy00MzktXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo0NDA6dm9pZCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNDQxLVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTU0Nj1zdGF0aWMgdm9pZCB2Z2ljX21taW9fY2hhbmdlX2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX2lycSAqaXJxLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo1OTM6c3RhdGljIHZvaWQgX192Z2ljX21taW9fd3JpdGVfY2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy01OTQtXFx0XFx0XFx0XFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjA2LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjA3OnZvaWQgdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjA4LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjE2OlxcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjE3LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02MjI9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjUte1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjI2OlxcdF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjI3LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MjktXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2MzA6c3RhdGljIHZvaWQgX192Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02MzEtXFx0XFx0XFx0XFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQzLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjQ0OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjQ1LVxcdFxcdFxcdCAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjUyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjUzOlxcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjU0LVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02NTk9aW50IHZnaWNfbW1pb191YWNjZXNzX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02NjIte1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjYzOlxcdF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUodmNwdSwgYWRkciwgbGVuLCB2YWwpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjY0LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02Njc9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY5MS0gKi9cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY5Mjp2b2lkIHZnaWNfbW1pb193cml0ZV9wcmlvcml0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTMtXFx0XFx0XFx0ICAgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NzE0PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNzMyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NzMzOnZvaWQgdmdpY19tbWlvX3dyaXRlX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy03MzQtXFx0XFx0XFx0ICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oPTExNT11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3JhbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTExNy1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjExODp2b2lkIHZnaWNfbW1pb193cml0ZV93aShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMTktXFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xMjQ9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9ncm91cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTEyNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjEyNzp2b2lkIHZnaWNfbW1pb193cml0ZV9ncm91cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGFkZHIsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMjgtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xMzA9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMzM6dm9pZCB2Z2ljX21taW9fd3JpdGVfc2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzQtXFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxMzc6dm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xMzgtXFx0XFx0XFx0ICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0xNTI9dW5zaWduZWQgbG9uZyB2Z2ljX3VhY2Nlc3NfcmVhZF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTU0LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTU1OnZvaWQgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE1Ni1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0xNTgtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoxNTk6dm9pZCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTYwLVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oPTE3ND11bnNpZ25lZCBsb25nIHZnaWNfdWFjY2Vzc19yZWFkX2FjdGl2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE3Ni1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE3Nzp2b2lkIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE3OC1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE4MC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oOjE4MTp2b2lkIHZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE4Mi1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oPTE5Mz11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3ByaW9yaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmgtMTk1LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmg6MTk2OnZvaWQgdmdpY19tbWlvX3dyaXRlX3ByaW9yaXR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTE5Ny1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaD0yMDA9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaC0yMDItXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uaDoyMDM6dm9pZCB2Z2ljX21taW9fd3JpdGVfY29uZmlnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5oLTIwNC1cXHRcXHRcXHQgICAgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12Mi5jPTE1MT12b2lkIHZnaWNfdjJfZGVhY3RpdmF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYy0yMTYtXFx0aWYgKG1taW8pXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXYyLmM6MjE3OlxcdFxcdHZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsICh2YWwgLyAzMikgKiA0LCA0LCBCSVQodmFsICUgMzIpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjIuYy0yMTgtXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjMuYz0xOTU9dm9pZCB2Z2ljX3YzX2RlYWN0aXZhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdmFsKVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjIzLjM1MjYzOTg4MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY4NjIwNzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgU2VjdXJpdHkgUmlza3MgaW4gdGhlIElUUyBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAgZnVuY3Rpb24uIEl0J3Mgc3RhdGljLCB3aGljaCBpcyB0aGUgZmlyc3QgcG9pbnQgb2Ygbm90ZS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gY2FsbHMgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAuIE5vcGUsIHRoYXQgb25lJ3Mgc3RhdGljIHRvby4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBjaGVjayB0aGUgb2J2aW91cyBjYW5kaWRhdGVzOiBgdmdpY19pdHNfZGVzdHJveWA/IEFsc28gc3RhdGljLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGBrdm1fdmdpY19yZWdpc3Rlcl9pdHNfZGV2aWNlYD8gQWhhISBUaGF0IG9uZSdzIG5vbi1zdGF0aWMuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IFN5emthbGxlciBpcyBjYXBhYmxlIG9mIHRhcmdldGluZyB0aG9zZSBga3ZtX2RldmljZV9vcHNgIGNhbGxiYWNrcyB0aHJvdWdoIEtWTSBpb2N0bHMuIFNpbmNlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgc3RhdGljIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuIChtZWFuaW5nIHRoZXkncmUgbm90IGlubGluZWQpLCB0aGV5J3JlIHBvdGVudGlhbCB0YXJnZXRzLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIFN5emthbGxlciByZWFsbHkgZ29lcyB0byB0b3duIGZ1enppbmcgdGhlc2UgS1ZNIGlvY3Rscy5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSwgSSBuZWVkIHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgdnVsbmVyYWJsZS4gSXQncyB0aW1lIHRvIHN5c3RlbWF0aWNhbGx5IHJldmlldyBhbGwgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBkaXZlIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUzNywiT3V0cHV0VG9rZW5zIjo2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODoyOC4yMjEyNjM2MjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTM5ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHZnaWNfaXRzX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xNzMtICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE3NDpzdHJ1Y3QgdmdpY19pdHNfYWJpIHtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTc1LVxcdGludCBjdGVfZXN6O1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTYwNT1zdGF0aWMgdm9pZCB2Z2ljX2l0c19pbnZhbGlkYXRlX2NhY2hlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTYxOC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjE5OnZvaWQgdmdpY19pdHNfaW52YWxpZGF0ZV9hbGxfY2FjaGVzKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjIwLXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02MzYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjYzNzppbnQgdmdpY19pdHNfcmVzb2x2ZV9scGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjM4LVxcdFxcdFxcdCB1MzIgZGV2aWQsIHUzMiBldmVudGlkLCBzdHJ1Y3QgdmdpY19pcnEgKippcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9Njg1PXN0YXRpYyBpbnQgdmdpY19pdHNfdHJpZ2dlcl9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MDYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcwNzppbnQgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwOC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzMxLSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MzI6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MzMte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTEyNjc9c3RhdGljIGludCB2Z2ljX2l0c19jbWRfaGFuZGxlX2NsZWFyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTI4Ny1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTI4ODppbnQgdmdpY19pdHNfaW52X2xwaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMjg5LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMjk3PXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9pbnYoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzE5LSAqL1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMzIwOmludCB2Z2ljX2l0c19pbnZhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMzIxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6MjguMjY5NDA4Nzg0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1NDY4OTkyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNIElUUyBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZyB0aGUgS1ZNIElUUyAoSW50ZXJydXB0IFRyYW5zbGF0aW9uIFNlcnZpY2UpIGNvZGUsIHNwZWNpZmljYWxseSB1c2luZyBzeXprYWxsZXIuXG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgYSBsaXN0IG9mIHBvdGVudGlhbCBjYW5kaWRhdGVzOiBgdmdpY19pdHNfaW52YWxpZGF0ZV9hbGxfY2FjaGVzYCwgYHZnaWNfaXRzX3Jlc29sdmVfbHBpYCwgYHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb25gLCBgdmdpY19pdHNfaW5qZWN0X21zaWAsIGB2Z2ljX2l0c19pbnZfbHBpYCwgYHZnaWNfaXRzX2ludmFsbGAsIGFuZCBga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZWAuIE5vbmUgb2YgdGhlc2UgZGlyZWN0bHkgY2FsbCBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgLCB3aGljaCBpcyBhIGZ1bmN0aW9uIG9mIGludGVyZXN0IGJlY2F1c2UgaXQncyBjYWxsZWQgZnJvbSBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19zZXRfYXR0cmAsIGFuZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAuIFNpbmNlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgcGFydCBvZiBga3ZtX2FybV92Z2ljX2l0c19vcHNgLCBhbmQgdGhlcmVmb3JlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIHRoZXNlIGxvb2tlZCBwcm9taXNpbmcuXG5cbkluaXRpYWxseSwgSSB3YXMgY29uY2VybmVkIGFib3V0IHN0YXRpYyBmdW5jdGlvbnMgYmVpbmcgcHJvYmxlbWF0aWMgYmVjYXVzZSBvZiBpbmxpbmluZywgYnV0IEkgcmVjYWxsZWQgdGhhdCBzeXprYWxsZXIgKmNhbiogcmVzb2x2ZSBzdGF0aWMgZnVuY3Rpb25zIGlmIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gSSBkb3VibGUtY2hlY2tlZCB0aGF0IGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYCBhcmUgcHJlc2VudCBpbiBga2FsbHN5bXNgLiBHb29kIG5ld3MhIFRoZXkgYXJlIGFjY2Vzc2libGUuIEFuZCwgaW1wb3J0YW50bHksIHRoZXkgYXJlIG5vdCBpbmxpbmVkLlxuXG5Ib3dldmVyLCB0aGUgaWRlYWwgc2l0dWF0aW9uIGlzIHN0aWxsIHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyBpZiB0aGV5IGV4aXN0LiAgU28sIEkgcmV2aWV3ZWQgdGhlIGxpc3QgYWdhaW4gbG9va2luZyBmb3IgYmV0dGVyIG9wdGlvbnMuIEkgYWxzbyBleHBsb3JlZCBgdmdpY19tbWlvX3dyaXRlX2l0c19iYXNlcmAsIGJ1dCB0aGF0IGxlZCBtZSB0byBgdmdpY19tbWlvX3dyaXRlYCwgd2hpY2ggaXNuJ3QgZGVmaW5lZCBpbiBgdmdpYy1pdHMuY2AuICBJIHdpbGwgbmVlZCB0byBjb25zaWRlciB0aGF0IGZ1bmN0aW9uIGluIHRoZSBmdXR1cmUsIGFzIGl0IGlzIG5vbi1zdGF0aWMuXG5cblVsdGltYXRlbHksIEkgY29uY2x1ZGUgdGhhdCBgdmdpY19pdHNfc2V0X2F0dHJgIGxvb2tzIGxpa2UgYSBzdHJvbmcgY2FuZGlkYXRlIGJlY2F1c2UgaXQncyBub24taW5saW5lZCBhbmQgaXMgZGlyZWN0bHkgcGFydCBvZiB0aGUgYGt2bV9hcm1fdmdpY19pdHNfb3BzYCB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyLiAgQW5kIGlmIEkgY2FuJ3QgZmluZCBhbnl0aGluZyBiZXR0ZXIsIGB2Z2ljX2l0c19kZXN0cm95YCB3aWxsIHdvcmssIGJlY2F1c2UgaXQncyBhbHNvIG5vbi1pbmxpbmVkIGFuZCBzeXprYWxsZXIgY2FuIG1hdGNoIGl0cyBzeW1ib2wuIEkgc2hvdWxkIGFsc28gY2hlY2sgYHZnaWNfbW1pb193cml0ZWAgaW4gYGFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA4NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODozNy44MTYzMTIxMjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjA3MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfbW1pb193cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9MjU9dW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9yYW8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy0zMC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjMxOnZvaWQgdmdpY19tbWlvX3dyaXRlX3dpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgYWRkcixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTMyLVxcdFxcdFxcdHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz02ND1zdGF0aWMgdm9pZCB2Z2ljX3VwZGF0ZV92c2dpKHN0cnVjdCB2Z2ljX2lycSAqaXJxKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY5OnZvaWQgdmdpY19tbWlvX3dyaXRlX2dyb3VwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgYWRkcixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTcwLVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz05Nj11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjExNjp2b2lkIHZnaWNfbW1pb193cml0ZV9zZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTExNy1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2NC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjE2NTp2b2lkIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTE2Ni1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTMwND1zdGF0aWMgdm9pZCBfX3NldF9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtMzUyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6MzUzOnZvaWQgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTM1NC1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz0zODk9c3RhdGljIHZvaWQgX19jbGVhcl9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNDM5LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NDQwOnZvaWQgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTQ0MS1cXHRcXHRcXHQgICAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYz01NDY9c3RhdGljIHZvaWQgdmdpY19tbWlvX2NoYW5nZV9hY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdmdpY19pcnEgKmlycSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTkyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NTkzOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNTk0LVxcdFxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYwNzp2b2lkIHZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYwOC1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYxNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYxNjpcXHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYxNy1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjIyPWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9jYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjI1LXtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjYyNjpcXHRfX3ZnaWNfbW1pb193cml0ZV9jYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTYyNy1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjI5LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM6NjMwOnN0YXRpYyB2b2lkIF9fdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjMxLVxcdFxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0My1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY0NDp2b2lkIHZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY0NS1cXHRcXHRcXHQgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY1Mi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY1MzpcXHRfX3ZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY1NC1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjU5PWludCB2Z2ljX21taW9fdWFjY2Vzc193cml0ZV9zYWN0aXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjYyLXtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjY2MzpcXHRfX3ZnaWNfbW1pb193cml0ZV9zYWN0aXZlKHZjcHUsIGFkZHIsIGxlbiwgdmFsKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTY2NC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmM9NjY3PXVuc2lnbmVkIGxvbmcgdmdpY19tbWlvX3JlYWRfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYy02OTEtICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8uYzo2OTI6dm9pZCB2Z2ljX21taW9fd3JpdGVfcHJpb3JpdHkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNjkzLVxcdFxcdFxcdCAgICAgIGdwYV90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jPTcxND11bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jLTczMi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby5jOjczMzp2b2lkIHZnaWNfbW1pb193cml0ZV9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLmMtNzM0LVxcdFxcdFxcdCAgICBncGFfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODozNy44NjI1MjUwOTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwNDUwMDE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWZ2ljLUlUUyBUZWFyZG93biBhbmQgU2V0dXAqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgYHZnaWMtaXRzLmNgIGZpbGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBjb2RlIGZvciBzZXR1cCBhbmQgdGVhcmRvd24gb2YgdGhlIElUUyAoSW50ZXJydXB0IFRyYW5zbGF0aW9uIFNlcnZpY2UpIHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LiBgdmdpY19pdHNfZGVzdHJveWAgYW5kIGB2Z2ljX2l0c19zZXRfYXR0cmAgYXJlIG9idmlvdXNseSBpbXBvcnRhbnQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZSBjcml0aWNhbC5cblxuSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYGt2bV92Z2ljX3JlZ2lzdGVyX2l0c19kZXZpY2VgIGFzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHNlZW1lZCBsaWtlIGEgcG9zc2libGUgcG9pbnQgb2YgaW50ZXJlc3QuIEl0J3Mgbm90ICpkaXJlY3RseSogaW52b2x2ZWQgaW4gdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY2hhbmdlZCBjb2RlLCBpdCdzIGp1c3QgYSByZWdpc3RyYXRpb24gZnVuY3Rpb24uIFNvLCBzY3JhdGNoIHRoYXQuIEJ1dCwgd2FpdC4uLiBhZnRlciBhIHNlY29uZCBsb29rLCB0aGUgY29kZSAqYWN0dWFsbHkqIGRvZXMgc29tZXRoaW5nIGluIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAuXG5cbkdpdmVuIHRoYXQsIEknbSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYHZnaWNfaXRzX2Rlc3Ryb3lgIGFuZCBgdmdpY19pdHNfc2V0X2F0dHJgIGFzIHByaW1hcnkgcG9pbnRzIG9mIGludGVyZXN0IGJlY2F1c2UgSSB1bmRlcnN0YW5kIHRoZXNlIGFyZSByZWxldmFudCBmdW5jdGlvbiBuYW1lcy4gQWxzbywgSSBuZWVkIHRvIGNoZWNrIGB2Z2ljX2l0c19yZXNldGAuIEFoLCBidXQgdGhhdCBvbmUgaXMgc3RhdGljLiBTYW1lIHdpdGggYHZnaWNfaXRzX3Jlc3RvcmVfY29sbGVjdGlvbl90YWJsZWAuIEkgd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0byBjb25zaWRlciB0aG9zZSBhcyB3ZWxsLCBkZXNwaXRlIG5vdCB1c2luZyB0aGVtIGFzIHByaW1hcnkgZm9jdXMgc3ltYm9scy5cblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYW5kIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUuIEkgc2VlIHRoZSByZXF1aXJlbWVudCBmb3IgYENPTkZJR19LVk1gIGlzIHByZXNlbnQsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFNvLCBJIHdpbGwgY2hlY2sgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIGZvciB0aGUgcmVzdCBvZiB0aGUgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6NDMuNjY3MDI4MjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODg3MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjQzLjcxNTkyMzIxOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0NzU0Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIE15IEtWTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBgS1ZNYCBjb25maWd1cmF0aW9uIHJpZ2h0IG5vdy4gSXQncyB0aGUgcHJpbWFyeSBwaWVjZSBvZiB0aGlzIHB1enpsZS4gQnV0LCBob2xkIG9uIGEgbWludXRlLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgVklSVFVBTElaQVRJT05gIGlzIGFsc28gYSBjcml0aWNhbCBjb21wb25lbnQuIFRoZXkgd29yayB0b2dldGhlci4gU28sIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgaWYgYEtWTWAgcmVsaWVzIG9uIGFueXRoaW5nIHNwZWNpZmljLiBJJ2xsIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMsIGVuc3VyZSBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gY29uZmxpY3RzLiBJIG5lZWQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgYEtWTWAgaXMgYnVpbHQgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzY0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTg6NDcuMTMwNjgyNjA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzEwNzYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZz00Nz1jb25maWcgUFREVU1QX1NUQUdFMl9ERUJVR0ZTXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy00OC1cXHRib29sIFxcXCJQcmVzZW50IHRoZSBzdGFnZS0yIHBhZ2V0YWJsZXMgdG8gZGVidWdmc1xcXCJcXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo1MDpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo1MTpcXHRkZXBlbmRzIG9uIEFSQ0hfSEFTX1BURFVNUFxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNTItXFx0c2VsZWN0IFBURFVNUFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZz03NT1jb25maWcgTlZIRV9FTDJfVFJBQ0lOR1xcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzYtXFx0Ym9vbFxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBUUkFDSU5HIFxcdTAwMjZcXHUwMDI2IEZUUkFDRVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctNzgtXFx0c2VsZWN0IFRSQUNFX1JFTU9URVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZz05Mj1jb25maWcgUEtWTV9TVEFDS1RSQUNFXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy05My1cXHRib29sIFxcXCJQcm90ZWN0ZWQgS1ZNIGh5cGVydmlzb3Igc3RhY2t0cmFjZXNcXFwiXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzo5NDpcXHRkZXBlbmRzIG9uIFBLVk1fRElTQUJMRV9TVEFHRTJfT05fUEFOSUNcXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTk1LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODo0Ny4xNzc4NDc3ODRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU5NzQ1OTQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIE1lbnUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1lbnVjb25maWcgS1ZNYCBlbnRyeSwgYW5kIHNvbWV0aGluZyBmZWVscyBvZmYuIFRoZXJlJ3Mgbm8gYGRlcGVuZHMgb25gIGNsYXVzZSBhdHRhY2hlZCB0byBpdCBpbiB0aGUgc25pcHBldC4gVGhhdCBzZWVtcyB1bnVzdWFsLCBnaXZlbiBLVk0ncyBkZXBlbmRlbmNpZXMgb24gdmFyaW91cyBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIGFuZCBrZXJuZWwgZmVhdHVyZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgaGVyZS4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlICpjb21wbGV0ZSogZGVmaW5pdGlvbiBvZiBgS1ZNYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBjb25maWd1cmF0aW9ucyBhbmQgcHJlY2lzZWx5IHdoYXQgY29uZGl0aW9ucyBtdXN0IGJlIG1ldCBmb3IgaXQgdG8gYmUgZW5hYmxlZC4gV2l0aG91dCB0aGF0IGNvbXByZWhlbnNpdmUgdmlldywgSSBjYW4ndCBiZSBjb25maWRlbnQgaW4gaW50ZXJwcmV0aW5nIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5MzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxODo1Mi43NzUzMTA5MTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRtZW51Y29uZmlnIEtWTVxcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDIzOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4gIDI1OlxcdFxcdHNlbGVjdCBLVk1fTU1JT1xcbiAgMjY6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgMjc6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAyODpcXHRcXHRzZWxlY3QgS1ZNX1ZGSU9cXG4gIDI5OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcXG4gIDMwOlxcdFxcdHNlbGVjdCBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuICAzMTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICAzMjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMzM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAzNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX0JZUEFTU1xcbiAgMzU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMzY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcXG4gIDM3OlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzODpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM5OlxcdFxcdHNlbGVjdCBLVk1fR1VFU1RfTUVNRkRcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGlmIEtWTVxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgUFREVU1QX1NUQUdFMl9ERUJVR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE4OjUyLjc3NTM3ODEwNVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQ3NjUyNTc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFZHSUMgSVRTIENvbGxlY3Rpb24gRnJlZWluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgS1ZNYCBhbmQsIGJ5IGV4dGVuc2lvbiwgYW55dGhpbmcgdXNpbmcgYFZJUlRVQUxJWkFUSU9OYC4gSSBuZWVkIHRvIGVuc3VyZSBib3RoIG9mIHRob3NlIGFyZSBpbmNsdWRlZCBpbiBteSBjb25maWd1cmF0aW9uLiBMZXQgbWUganVzdCBjb25maXJtIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgb2J2aW91cyBjb25maWcgZGVwZW5kZW5jaWVzLi4uIE5vcGUsIHRoYXQgbG9va3MgY2xlYW4uXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGZ1bmRhbWVudGFsbHkgb3B0aW1pemVzIHRoZSBWR0lDIElUUyBjb2xsZWN0aW9uIGZyZWVpbmcgcHJvY2VzcyB3aXRoaW4gS1ZNIG9uIEFSTTY0LiBJdOKAmXMgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgc3dpdGNoaW5nIGZyb20gYW4gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0aW1lIGNvbXBsZXhpdHkgdG8gbWl0aWdhdGUgUkNVIHN0YWxscy4gQ3JpdGljYWxseSwgdGhpcyBjaGFuZ2UgaGFwcGVucyBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBzbyBpdCdzIGNsZWFybHkgcmVsZXZhbnQgdG8gdGhvc2UgcHJvY2Vzc2VzLlxuXG5UaGUgaW5pdGlhbCBhbmFseXNpcyBoaWdobGlnaHRlZCBgdmdpY19pdHNfZGVzdHJveWAgYW5kIGB2Z2ljX2l0c19zZXRfYXR0cmAgYXMgcHJpbWFyeSBwb2ludHMgb2YgaW50ZXJlc3QsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBjaGFuZ2UuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSAqc3VyZSogSSdtIHBpY2tpbmcgdGhlIHJpZ2h0IHN5bWJvbHMuIFRoZSBwcm9tcHQgcHJlZmVycyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZXNlIGFyZSAqdGVjaG5pY2FsbHkqIHN0YXRpYywgYnV0IHRoZXkgYXJlbid0IGlubGluZWQsIHNvIHRoZXkgc3RpbGwgcHJvdmlkZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBHaXZlbiB0aGlzLCBJ4oCZbSB0aGlua2luZyB0aGV5IGFyZSBzdGlsbCB0aGUgYmVzdCB0YXJnZXRzIGZvciBzeW1ib2xpYyBleGVjdXRpb24uXG5cbkxldCdzIHJldmlldyB0aGUgb3RoZXIgcG9zc2liaWxpdGllcywganVzdCBpbiBjYXNlLiBga3ZtX3ZnaWNfcmVnaXN0ZXJfaXRzX2RldmljZWAgZG9lc24ndCBzZWVtIGRpcmVjdGx5IHJlbGV2YW50LCBhcyBpdCBkb2Vzbid0IGFwcGVhciB0byBleGVjdXRlIHRoZSBtb2RpZmllZCBjb2RlLiBga3ZtX2Rlc3Ryb3lfdm1gIGlzICp0b28qIGdlbmVyaWM7IGl0IGNvdWxkIHRyaWdnZXIgKm1hbnkqIHRoaW5ncy4gTGV0J3Mgbm90IGJyaW5nIGl0IGluLiBBbmQgdGhlbiB0aGVyZSdzIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIHN0YXRpYywgYW5kICpjb3VsZCogYmUgaW5saW5lZC4gSSB3aWxsIHN0aWNrIHdpdGggdGhlIG9yaWdpbmFsIHR3by5cblxuU28sIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGB2Z2ljX2l0c19kZXN0cm95YCBhbmQgYHZnaWNfaXRzX3NldF9hdHRyYC4gSSdsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGB2Z2ljX2l0c19kZXN0cm95YCBpc24ndCBpbmxpbmVkLCB0aG91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNTk2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTk6MDMuMjUxOTA4Mjc5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODEwMjk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Z2ljX2l0c19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg2Nz1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTIzLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxOTI0OnN0YXRpYyB2b2lkIHZnaWNfaXRzX2Rlc3Ryb3koc3RydWN0IGt2bV9kZXZpY2UgKmt2bV9kZXYpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE5MjUte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTI4Mjg9c3RhdGljIHN0cnVjdCBrdm1fZGV2aWNlX29wcyBrdm1fYXJtX3ZnaWNfaXRzX29wcyA9IHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMwLVxcdC5jcmVhdGUgPSB2Z2ljX2l0c19jcmVhdGUsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI4MzE6XFx0LmRlc3Ryb3kgPSB2Z2ljX2l0c19kZXN0cm95LFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0yODMyLVxcdC5zZXRfYXR0ciA9IHZnaWNfaXRzX3NldF9hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOTowMy4zMDAwMTcwMDhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MDExNzQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoaXMgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIEkgc2VlIHRoaXMgZnVuY3Rpb24gYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIG1lYW5zLCBieSBkZWZpbml0aW9uLCBpdCdzICpub3QqIGdvaW5nIHRvIGdldCBpbmxpbmVkLiBTYW1lIGdvZXMgZm9yIGB2Z2ljX2l0c19zZXRfYXR0cmAsIHRoZW4uIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYmUgc3VyZSwgSSBzaG91bGQganVtcCBvdmVyIHRvIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYC4gTmVlZCB0byBxdWlja2x5IHJldmlldyB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3NjQsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOTowNi41NzAxMzc1NjlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODc5Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjQ1PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19iYXNlcihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2Ni0jZGVmaW5lIEdJVFNfQkFTRVJfUk9fTUFTS1xcdChHRU5NQVNLX1VMTCg1MiwgNDgpIHwgR0VOTUFTS19VTEwoNTgsIDU2KSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTY2NzpzdGF0aWMgdm9pZCB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTY2OC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNzkyPXN0YXRpYyBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24gaXRzX3JlZ2lzdGVyc1tdID0ge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MTMtXFx0UkVHSVNURVJfSVRTX0RFU0MoR0lUU19CQVNFUixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTgxNDpcXHRcXHR2Z2ljX21taW9fcmVhZF9pdHNfYmFzZXIsIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIsIDB4NDAsXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4MTUtXFx0XFx0VkdJQ19BQ0NFU1NfNjRiaXQgfCBWR0lDX0FDQ0VTU18zMmJpdCksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE5OjA2LjYxNzAyMTM1N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDIyNTYxMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgSVRTIEZ1bmN0aW9uIFBvaW50ZXJzIGFuZCBQb3RlbnRpYWwgV2Vha25lc3NlcyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYFJFR0lTVEVSX0lUU19ERVNDYCBtYWNyby4gQW5kIGl0J3MgcGFzc2luZyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQgbWVhbnMgdGhlIGZ1bmN0aW9uIGlzbid0IGJlaW5nIGlubGluZWQsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gSXQgbWVhbnMgSSBuZWVkIHRvIGFsc28gYWRkIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYCB0byBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuIEl0IGRpcmVjdGx5IGNhbGxzIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAsIHdoaWNoIGlzIGEga2V5IGZ1bmN0aW9uIHRvIGV4YW1pbmUgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwb3RlbnRpYWwgaXNzdWVzLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIGV4cGFuZCBteSBhbmFseXNpcyB0b28uXG5cblRoZXJlZm9yZSwgZm9yIHRoaXMgcGFydGljdWxhciBhbmFseXNpcywgSSB3aWxsIGFkZCBgdmdpY19pdHNfZGVzdHJveWAsIGB2Z2ljX2l0c19zZXRfYXR0cmAgYW5kIGB2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyYCB0byBteSBGb2N1c1N5bWJvbHMgbGlzdC5cblxuTm93LCBsZXQncyBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDM2NywiT3V0cHV0VG9rZW5zIjoxNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTk6MTMuMDM5NTg1Mzk0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUwMjkxOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVklSVFVBTElaQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Z2ljX2l0c19kZXN0cm95XCIsXG4gICAgXCJ2Z2ljX2l0c19zZXRfYXR0clwiLFxuICAgIFwidmdpY19tbWlvX3dyaXRlX2l0c19iYXNlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9wdGltaXplcyB0aGUgdGVhcmRvd24gb2YgS1ZNIFZHSUMgSVRTIGNvbGxlY3Rpb25zIGJ5IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGhvc3QgUkNVIHN0YWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBBUk02NCBLVk0gYXJjaGl0ZWN0dXJlIGNvZGUgdGhhdCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IFZNIHRlYXJkb3duIG9yIElUUyByZXNldCwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZnaWNfaXRzX2Rlc3Ryb3lcIixcbiAgICBcInZnaWNfaXRzX3NldF9hdHRyXCIsXG4gICAgXCJ2Z2ljX21taW9fd3JpdGVfaXRzX2Jhc2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBLVk0gVkdJQyBJVFMgY29sbGVjdGlvbnMgYnkgY2hhbmdpbmcgdGhlIGNvbXBsZXhpdHkgZnJvbSBPKENvbGxlY3Rpb25zICogSVRFcykgdG8gTyhDb2xsZWN0aW9ucyArIElURXMpIHRvIHByZXZlbnQgaG9zdCBSQ1Ugc3RhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEFSTTY0IEtWTSBhcmNoaXRlY3R1cmUgY29kZSB0aGF0IGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgVk0gdGVhcmRvd24gb3IgSVRTIHJlc2V0LCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjM6MTk6MTMuMTI0NjIzODMyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAzNjQ5NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE5OjEzLjEyNTMwNDM3MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNTAzNTgxMTI1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBJVFMgY29sbGVjdGlvbnMgYnkgYnVsay1jbGVhcmluZyB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMgYmVmb3JlIGZyZWVpbmcgdGhlIGNvbGxlY3Rpb25zLCByZWR1Y2luZyB0aGUgdGltZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVxcdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGApIGFuZCBtZW1vcnkgZGVhbGxvY2F0aW9uIChga2ZyZWVgKS4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UpIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmQ4ZWU1NDUyYmJiYzdmYTM5ZjkwMDFjOWIxNzgxZDgwMDdmZTY1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIzOjE3OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG5pbmRleCAzNmFiM2U0OTI5MTU0Li5hOGU4MTlmZTk3ODk4IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbkBAIC0xMTMzLDkgKzExMzMsMjEgQEAgc3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxuIHN0YXRpYyB2b2lkIHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXG4ge1xuIFx0c3RydWN0IGl0c19jb2xsZWN0aW9uICpjdXIsICp0ZW1wO1xuK1x0c3RydWN0IGl0c19kZXZpY2UgKmRldmljZTtcbitcdHN0cnVjdCBpdHNfaXRlICppdGU7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0ZW1wLCBcdTAwMjZpdHMtXHUwMDNlY29sbGVjdGlvbl9saXN0LCBjb2xsX2xpc3QpXG4tXHRcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbihpdHMsIGN1ci1cdTAwM2Vjb2xsZWN0aW9uX2lkKTtcbitcdC8qXG4rXHQgKiBCdWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcy5cbitcdCAqIFRoaXMgdHJhbnNmb3JtcyB0aGUgdGVhcmRvd24gY29tcGxleGl0eSBmcm9tIE8oQ29sbGVjdGlvbnMgKiBJVEVzKVxuK1x0ICogdG8gTyhDb2xsZWN0aW9ucyArIElURXMpLCBhdm9pZGluZyBndWVzdC10cmlnZ2VyZWQgaG9zdCBSQ1Ugc3RhbGxzLlxuK1x0ICovXG4rXHRmb3JfZWFjaF9scGlfaXRzKGRldmljZSwgaXRlLCBpdHMpXG4rXHRcdGl0ZS1cdTAwM2Vjb2xsZWN0aW9uID0gTlVMTDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRlbXAsIFx1MDAyNml0cy1cdTAwM2Vjb2xsZWN0aW9uX2xpc3QsIGNvbGxfbGlzdCkge1xuK1x0XHRsaXN0X2RlbChcdTAwMjZjdXItXHUwMDNlY29sbF9saXN0KTtcbitcdFx0a2ZyZWUoY3VyKTtcbitcdH1cbiB9XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBpdHNfbG9jayBtdXRleCBoZWxkICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOToxMy4xMjUzMDUyMzJaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIxMzM1MjUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZnaWMgSVRTIFRlYXJkb3duIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgb3B0aW1pemluZyB0aGUgdGVhcmRvd24gcHJvY2VzcyBvZiB0aGUgVmlydHVhbCBHZW5lcmljIEludGVycnVwdCBDb250cm9sbGVyJ3MgKFZHSUMpIEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlIChJVFMpIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGB2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdGAgZnVuY3Rpb24uIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXRlcmF0ZWQgdGhyb3VnaCBib3RoIGNvbGxlY3Rpb25zIGFuZCBpbnRlcnJ1cHQgdHJhbnNsYXRpb24gZW50cmllcyAoSVRFcyksIHJlc3VsdGVkIGluIGEgdGVhcmRvd24gY29tcGxleGl0eSB0aGF0IHdhcyBPKENvbGxlY3Rpb25zICogSVRFcykuIFRoYXQncyBhIG5hc3R5IHNjYWxpbmcgZmFjdG9yLiBUaGlzIGNvdWxkIGxlYWQgdG8gZ3Vlc3QtdHJpZ2dlcmVkIFJDVSAoUmVhZC1Db3B5IFVwZGF0ZSkgc3RhbGxzLCB3aGljaCBhcmUgdGhlIGJhbmUgb2YgYW55IHJlYWwtdGltZSBzeXN0ZW0uXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIFwiZ29vZCByaWRkYW5jZSFcIiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIHdoZXJlIHlvdSAqYWJzb2x1dGVseSogd2FudCB0byBpbXByb3ZlIHRoZSB0aW1lIGNvbXBsZXhpdHkuIEluc3RlYWQgb2YgaXRlcmF0aW5nLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIHByZS1wYXNzOiB3ZSBidWxrLWNsZWFyIHRoZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGZvciBhbGwgSVRFcyBiZWZvcmUgd2UgYWN0dWFsbHkgZnJlZSB0aGUgY29sbGVjdGlvbnMgdGhlbXNlbHZlcy4gVGhlIG5ldyBjb21wbGV4aXR5IGJlY29tZXMgTyhDb2xsZWN0aW9ucyArIElURXMpLiBNdWNoIGJldHRlci4gSXQgYXBwZWFycyB0aGF0IGl0IGRvZXMgc28gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIElURXMsIHNldHRpbmcgYGl0ZS1cdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGAgZGlyZWN0bHkuIFRoZW4gaXQgY2FuIHNhZmVseSBmcmVlIGFsbCBjb2xsZWN0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcnVsZSBvdXQgYW55IG9idmlvdXMgc2VjdXJpdHkgY29uY2VybnMuIElzIHRoZXJlIGFueSByaXNrIG9mIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhaz8gTGV0J3Mgc2VlOiB0aGUgcGF0Y2gganVzdCBzZXRzIHRoZSBgaXRlLVx1MDAzZWNvbGxlY3Rpb25gIHBvaW50ZXJzIHRvIE5VTEwgYW5kIHRoZW4gZnJlZXMgdGhlIG1lbW9yeS4gVGhlcmUncyBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb24sIG5vIGNvcHlpbmcgZGF0YSB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIGludGVybmFsIHN0cnVjdHVyZXMsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaXMgYWJvdXQgcG9pbnRlciBtYW5pcHVsYXRpb24gYW5kIG1lbW9yeSBkZWFsbG9jYXRpb24gdG8gZml4IGFuIFJDVSBzdGFsbC4gSWYgdGhlcmUgKmlzKiBhIGJ1ZyBpbnRyb2R1Y2VkIGhlcmUsIGl0J3MgbGlrZWx5IGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hpY2ggS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2guXG5cbkdpdmVuIHRoaXMsIEkgY2FuIGNvbmZpZGVudGx5IHN0YXRlIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpc24ndCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIEkgbWlnaHQgcXVpY2tseSBnbGFuY2UgYXQgYHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbmAganVzdCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByZS1vcHRpbWl6YXRpb24gY29kZSwgYnV0IEknbSBmZWVsaW5nIGdvb2QgYWJvdXQgdGhpcyBjaGFuZ2UuIEl0J3MgYSBjbGVhbiwgdGFyZ2V0ZWQgb3B0aW1pemF0aW9uIHRoYXQgc2hvdWxkIGFkZHJlc3MgYSByZWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOToyMS4zMzg2NjA5NzRaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU2MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTk3MT1zdGF0aWMgaW50IHZnaWNfaXRzX2FsbG9jX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTg5LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo5OTA6c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLCB1MzIgY29sbF9pZClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTkxLXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDM2PXN0YXRpYyBpbnQgdmdpY19pdHNfY21kX2hhbmRsZV9tYXBpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA4My1cXHRcXHRpZiAobmV3X2NvbGwpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwODQ6XFx0XFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uKGl0cywgY29sbF9pZCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwODUtXFx0XFx0cmV0dXJuIFBUUl9FUlIoaXRlKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDkzLVxcdFxcdGlmIChuZXdfY29sbClcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTA5NDpcXHRcXHRcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb24oaXRzLCBjb2xsX2lkKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTA5NS1cXHRcXHRpdHNfZnJlZV9pdGUoa3ZtLCBpdGUpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMjQ9c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzItLyogaXRzIGxvY2sgbXVzdCBiZSBoZWxkICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExMzM6c3RhdGljIHZvaWQgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cylcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTIyMD1zdGF0aWMgaW50IHZnaWNfaXRzX2NtZF9oYW5kbGVfbWFwYyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEyMzAtXFx0aWYgKCF2YWxpZCkge1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMjMxOlxcdFxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbihpdHMsIGNvbGxfaWQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMjMyLVxcdFxcdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xNjY3PXN0YXRpYyB2b2lkIHZnaWNfbW1pb193cml0ZV9pdHNfYmFzZXIoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTMtXFx0XFx0Y2FzZSBHSVRTX0JBU0VSX1RZUEVfQ09MTEVDVElPTjpcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTcxNDpcXHRcXHRcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE3MTUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTkyND1zdGF0aWMgdm9pZCB2Z2ljX2l0c19kZXN0cm95KHN0cnVjdCBrdm1fZGV2aWNlICprdm1fZGV2KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE5MzMtXFx0dmdpY19pdHNfZnJlZV9kZXZpY2VfbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjE5MzQ6XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3Qoa3ZtLCBpdHMpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xOTM1LVxcdHZnaWNfaXRzX2ludmFsaWRhdGVfY2FjaGUoaXRzKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNTY5PXN0YXRpYyBpbnQgdmdpY19pdHNfcmVzdG9yZV9jb2xsZWN0aW9uX3RhYmxlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI1OTYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjI1OTc6XFx0XFx0dmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3QoaXRzLVxcdTAwM2VkZXYtXFx1MDAzZWt2bSwgaXRzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjU5OC1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNjIyPXN0YXRpYyBpbnQgdmdpY19pdHNfcmVzdG9yZV90YWJsZXNfdjAoc3RydWN0IHZnaWNfaXRzICppdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjYzMS1cXHRpZiAocmV0KVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoyNjMyOlxcdFxcdHZnaWNfaXRzX2ZyZWVfY29sbGVjdGlvbl9saXN0KGl0cy1cXHUwMDNlZGV2LVxcdTAwM2Vrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2MzMtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0yNjUxPXN0YXRpYyB2b2lkIHZnaWNfaXRzX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMjY2MC1cXHR2Z2ljX2l0c19mcmVlX2RldmljZV9saXN0KGt2bSwgaXRzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MjY2MTpcXHR2Z2ljX2l0c19mcmVlX2NvbGxlY3Rpb25fbGlzdChrdm0sIGl0cyk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTI2NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMzoxOToyMS4zODYwMjY3NDJaIiwiU2VxIjozOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc3NTA2NDE4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWZ2ljIElUUyBGcmVlaW5nIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJzbWFydCBtb3ZlLlwiIFRoZXkndmUgcmVjb2duaXplZCB0aGF0IHRoZSBvcmlnaW5hbCBgdmdpY19pdHNfZnJlZV9jb2xsZWN0aW9uX2xpc3RgIHdhcyBwb3RlbnRpYWxseSBjYXVzaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGF0IE8oQ29sbGVjdGlvbnMgKiBJVEVzKSB0ZWFyZG93biBjb21wbGV4aXR5LiBUaGF0J3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgUkNVIHN0YWxscywgYW5kIHdlIGtub3cgdGhvc2UgYXJlIGEgcmVhbCBwYWluIHRvIGRlYnVnLlxuXG5XaGF0IHRoZXkndmUgZG9uZSwgYnVsay1jbGVhcmluZyB0aG9zZSBjb2xsZWN0aW9uIHBvaW50ZXJzIGJlZm9yZSBmcmVlaW5nIHRoZSBjb2xsZWN0aW9ucyBkaXJlY3RseSwgaXMgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLiBJdCBhdm9pZHMgdGhlIHBlci1jb2xsZWN0aW9uIGxvb3AsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIG1pbmltaXplIHRoZSBpbXBhY3QuIEVmZmljaWVuY3kgaXMga2V5IGhlcmUuXG5cbk5vdywgSSdtIGFuYWx5emluZyBpdCBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGdvb2QgbmV3cyBpcywgdGhlcmUncyBub3RoaW5nIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBcInNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkuXCIgTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9uLCBubyBjaGFuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbWFraW5nIGl0cyB3YXkgdG8gdXNlcnNwYWNlLiBUaGUgcG90ZW50aWFsIHByb2JsZW1zIGhlcmUgYXJlIHRleHRib29rIG1lbW9yeSBzYWZldHkgaXNzdWVzOiB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWVzLCBvciBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBCdXQgdGhvc2UgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIEtBU0FOJ3MgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcy4gVGhhdCdzIHByZWNpc2VseSB3aGF0IGl0J3MgdGhlcmUgZm9yLiBTbywgd2hpbGUgSSdsbCBzdGlsbCBnaXZlIGl0IGEgdGhvcm91Z2ggb25jZS1vdmVyLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgZ29pbmcgdG8gYmUgbmVlZGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlLiBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIHN1ZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3OTksIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIzOjE5OjI4LjE2MTA5Mzk5OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBJVFMgY29sbGVjdGlvbnMgYnkgYnVsay1jbGVhcmluZyB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMgYmVmb3JlIGZyZWVpbmcgdGhlIGNvbGxlY3Rpb25zLCByZWR1Y2luZyB0aGUgdGltZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVxcdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGApIGFuZCBtZW1vcnkgZGVhbGxvY2F0aW9uIChga2ZyZWVgKS4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UpIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb3B0aW1pemVzIHRoZSB0ZWFyZG93biBvZiBJVFMgY29sbGVjdGlvbnMgYnkgYnVsay1jbGVhcmluZyB0aGUgY29sbGVjdGlvbiBwb2ludGVycyBmb3IgYWxsIElURXMgYmVmb3JlIGZyZWVpbmcgdGhlIGNvbGxlY3Rpb25zLCByZWR1Y2luZyB0aGUgdGltZSBjb21wbGV4aXR5IGZyb20gTyhDb2xsZWN0aW9ucyAqIElURXMpIHRvIE8oQ29sbGVjdGlvbnMgKyBJVEVzKSB0byBwcmV2ZW50IGd1ZXN0LXRyaWdnZXJlZCBob3N0IFJDVSBzdGFsbHMuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBwb2ludGVyIGFzc2lnbm1lbnRzIChgaXRlLVxcdTAwM2Vjb2xsZWN0aW9uID0gTlVMTGApIGFuZCBtZW1vcnkgZGVhbGxvY2F0aW9uIChga2ZyZWVgKS4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UpIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowc2fnl[1] Phase: Succeeded StartedAt: 2026-08-18 23:19:39 +0000 UTC FinishedAt: 2026-08-18 23:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 23:19:39 +0000 UTC FinishedAt: 2026-08-18 23:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2] Phase: Succeeded StartedAt: 2026-08-18 23:19:39 +0000 UTC FinishedAt: 2026-08-19 00:03:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-18 23:19:39 +0000 UTC FinishedAt: 2026-08-19 00:03:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-18 23:19:39 +0000 UTC FinishedAt: 2026-08-18 23:19:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-18 23:19:39 +0000 UTC FinishedAt: 2026-08-18 23:19:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc2fnl/series-workflowc2fnl-convert-artifact-1663995424/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-18 23:19:49 +0000 UTC FinishedAt: 2026-08-18 23:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-18 23:19:49 +0000 UTC FinishedAt: 2026-08-18 23:39:49 +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:*71d814a1-663c-4e52-8bca-0436fdb0d06d,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-workflowc2fnl/series-workflowc2fnl-convert-artifact-1663995424/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": "acb7e9ab-d5cd-4422-9d12-96cae5b24af7", "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-workflowc2fnl/series-workflowc2fnl-build-action-2057268454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-18 23:19:49 +0000 UTC FinishedAt: 2026-08-18 23:39:39 +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:*71d814a1-663c-4e52-8bca-0436fdb0d06d,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-workflowc2fnl/series-workflowc2fnl-convert-artifact-1663995424/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": "acb7e9ab-d5cd-4422-9d12-96cae5b24af7", "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-workflowc2fnl/series-workflowc2fnl-build-action-2057268454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-18 23:39:49 +0000 UTC FinishedAt: 2026-08-18 23:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-18 23:39:49 +0000 UTC FinishedAt: 2026-08-18 23:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-18 23:39:49 +0000 UTC FinishedAt: 2026-08-18 23:39:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-18 23:39:49 +0000 UTC FinishedAt: 2026-08-18 23:39:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc2fnl/series-workflowc2fnl-convert-artifact-3649845831/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-18 23:39:59 +0000 UTC FinishedAt: 2026-08-18 23:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-18 23:39:59 +0000 UTC FinishedAt: 2026-08-18 23:42:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*acb7e9ab-d5cd-4422-9d12-96cae5b24af7,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-workflowc2fnl/series-workflowc2fnl-build-action-2057268454/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-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-18 23:42:12 +0000 UTC FinishedAt: 2026-08-18 23:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-18 23:42:12 +0000 UTC FinishedAt: 2026-08-18 23:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-18 23:42:12 +0000 UTC FinishedAt: 2026-08-18 23:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-18 23:42:12 +0000 UTC FinishedAt: 2026-08-18 23:58:22 +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:*71d814a1-663c-4e52-8bca-0436fdb0d06d,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-workflowc2fnl/series-workflowc2fnl-convert-artifact-3649845831/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": "b62e8d1a-6d90-4aaf-ad8a-831d777c1332", "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-workflowc2fnl/series-workflowc2fnl-build-action-3127409099/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-18 23:42:12 +0000 UTC FinishedAt: 2026-08-18 23:58:12 +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:*71d814a1-663c-4e52-8bca-0436fdb0d06d,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-workflowc2fnl/series-workflowc2fnl-convert-artifact-3649845831/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": "b62e8d1a-6d90-4aaf-ad8a-831d777c1332", "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-workflowc2fnl/series-workflowc2fnl-build-action-3127409099/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-18 23:58:22 +0000 UTC FinishedAt: 2026-08-18 23:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-18 23:58:22 +0000 UTC FinishedAt: 2026-08-18 23:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-18 23:58:22 +0000 UTC FinishedAt: 2026-08-19 00:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-18 23:58:22 +0000 UTC FinishedAt: 2026-08-19 00:00:09 +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:*b62e8d1a-6d90-4aaf-ad8a-831d777c1332,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-workflowc2fnl/series-workflowc2fnl-build-action-3127409099/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-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-19 00:00:17 +0000 UTC FinishedAt: 2026-08-19 00:03:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-19 00:00:17 +0000 UTC FinishedAt: 2026-08-19 00:03:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"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:*acb7e9ab-d5cd-4422-9d12-96cae5b24af7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b62e8d1a-6d90-4aaf-ad8a-831d777c1332,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-workflowc2fnl/series-workflowc2fnl-build-action-2057268454/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-workflowc2fnl/series-workflowc2fnl-build-action-3127409099/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-19 00:00:17 +0000 UTC FinishedAt: 2026-08-19 00:00:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-19 00:00:17 +0000 UTC FinishedAt: 2026-08-19 00:00:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"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-workflowc2fnl/series-workflowc2fnl-convert-artifact-3049723168/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-19 00:00:17 +0000 UTC FinishedAt: 2026-08-19 00:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-19 00:00:17 +0000 UTC FinishedAt: 2026-08-19 00:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-19 00:00:17 +0000 UTC FinishedAt: 2026-08-19 00:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-19 00:00:27 +0000 UTC FinishedAt: 2026-08-19 00:03:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2fnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vgic_its_destroy","vgic_its_set_attr","vgic_mmio_write_its_baser"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d75b48460559423f8c38aafed7a9cdec91d26d57","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VIRTUALIZATION"],"series_id":"824637d1-ca44-440a-90c5-b9d98737ea58","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-19 00:00:27 +0000 UTC FinishedAt: 2026-08-19 00:02:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*acb7e9ab-d5cd-4422-9d12-96cae5b24af7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b62e8d1a-6d90-4aaf-ad8a-831d777c1332,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-workflowc2fnl/series-workflowc2fnl-build-action-2057268454/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-workflowc2fnl/series-workflowc2fnl-build-action-3127409099/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-workflowc2fnl/series-workflowc2fnl-convert-artifact-3049723168/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,}