Name: series-workflowm8wrr Phase: Succeeded StartedAt: 2026-08-04 00:33:08 +0000 UTC FinishedAt: 2026-08-04 05:09:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[0] Phase: Succeeded StartedAt: 2026-08-04 00:33:08 +0000 UTC FinishedAt: 2026-08-04 01:27:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 00:33:08 +0000 UTC FinishedAt: 2026-08-04 01:27:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "b58f6744-3f1f-4d01-90c1-429d0f700cdd" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "vfs_coredump", "fput", "exit_files" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPUkVEVU1QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZzX2NvcmVkdW1wJiMzNDssCiAgICAmIzM0O2ZwdXQmIzM0OywKICAgICYjMzQ7ZXhpdF9maWxlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IGVhcmx5IHJlbGVhc2Ugb2YgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQSBpZiBhIHNwZWNpZmljIGJpdCBpbiBgY29yZWR1bXBfZmlsdGVyYCBpcyBub3Qgc2V0LiBUaGlzIGludm9sdmVzIGNoYW5nZXMgdG8gYGRvX2NvcmVkdW1wYCAoY2FsbGVkIGJ5IGB2ZnNfY29yZWR1bXBgKSBhbmQgYF9fZnB1dF9kZWZlcnJlZGAgKGNhbGxlZCBieSBgZnB1dGApLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb3JlIGR1bXBpbmcgYW5kIGZpbGUgcmVsZWFzZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYyZjkxNmFlYTg2OWFhZDVhZTJjNTM0OGVlZjY4YzIwNDYzNTFkNDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDAxOjI2OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5jZTMxYThhOTNjN2M4IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5NDEsNiAmIzQzOzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICAtIChiaXQgNikgaHVnZXRsYiBzaGFyZWQgbWVtb3J5XG4gICAtIChiaXQgNykgREFYIHByaXZhdGUgbWVtb3J5XG4gICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnlcbiYjNDM7ICAtIChiaXQgOSkgZmQgbGlzdFxuIFxuICAgTm90ZSB0aGF0IE1NSU8gcGFnZXMgc3VjaCBhcyBmcmFtZSBidWZmZXIgYXJlIG5ldmVyIGR1bXBlZCBhbmQgdkRTTyBwYWdlc1xuICAgYXJlIGFsd2F5cyBkdW1wZWQgcmVnYXJkbGVzcyBvZiB0aGUgYml0bWFzayBzdGF0dXMuXG5AQCAtMTk0OCwxMyAmIzQzOzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbiYjMzk7dCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpc1xuICAgb25seSBhZmZlY3RlZCBieSBiaXQgNS02LCBhbmQgREFYIGlzIG9ubHkgYWZmZWN0ZWQgYnkgYml0cyA3LTguXG4gXG4mIzQzOyAgTm90ZSB0aGF0IGJpdCA5IGlzIHNldCBieSBkZWZhdWx0IGJlY2F1c2UgdG9vbHMgbGlrZSBzeXN0ZW1kLWNvcmVkdW1wIGdvXG4mIzQzOyAgdGhyb3VnaCB0aGUgZmRzLiBJZiB5b3UgZG8gbm90IHNldCBiaXQgOSwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnlcbiYjNDM7ICBhbnkgVk1BIGFyZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBTb21lIGZpbGUgcmVsZWFzZSBsb2dpYywgc3VjaCBhc1xuJiM0MzsgIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaFxuJiM0MzsgIGVhcmxpZXIuXG4mIzQzO1xuJiM0MztUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgyMzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnlcbiYjNDM7c2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMsIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYW5kIGZkIGxpc3QgYXJlIGR1bXBlZC5cbiYjNDM7XG4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnlcbiBzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcyBhbmQgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhcmUgZHVtcGVkLlxuIFxuIElmIHlvdSBkb24mIzM5O3Qgd2FudCB0byBkdW1wIGFsbCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGF0dGFjaGVkIHRvIHBpZCAxMjM0LFxuLXdyaXRlIDB4MzEgdG8gdGhlIHByb2Nlc3MmIzM5O3MgcHJvYyBmaWxlOjpcbiYjNDM7d3JpdGUgMHgyMzEgdG8gdGhlIHByb2Nlc3MmIzM5O3MgcHJvYyBmaWxlOjpcbiBcbi0gICQgZWNobyAweDMxIFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxuJiM0MzsgICQgZWNobyAweDIzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbiBcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXG4gcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy5cbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcbi0tLSBhL2ZzL2NvcmVkdW1wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2NvcmVkdW1wLmNcbkBAIC01MjAsNiAmIzQzOzUyMCwyNSBAQCBzdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxuIFx0cmV0dXJuIG5yO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxuJiM0MzsgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZVxuJiM0MzsgKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxuJiM0MzsgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cbiYjNDM7ICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50LCAqdDtcbiYjNDM7XG4mIzQzO1x0aWYgKG1tX2ZsYWdzX3Rlc3QoTU1GX0RVTVBfRkRfTElTVCwgdHNrLVx1MDAzZW1tKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yX2VhY2hfdGhyZWFkKHRzaywgdCkge1xuJiM0MztcdFx0ZXhpdF9maWxlcyh0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBjb3JlZHVtcF93YWl0KGludCBleGl0X2NvZGUsIHN0cnVjdCBjb3JlX3N0YXRlICpjb3JlX3N0YXRlKVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudDtcbkBAIC0xMTIzLDYgJiM0MzsxMTQyLDggQEAgc3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4gXHRpZiAoY24tXHUwMDNlbWFzayBcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0Y29yZWR1bXBfcHJlX2V4aXQoKTtcbiYjNDM7XG4gXHQvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovXG4gXHQvKiBUaGUgY2VsbCBzcHVmcyBjb3JlZHVtcCBjb2RlIHJlYWRzIHRoZSBmaWxlIGRlc2NyaXB0b3IgdGFibGVzICovXG4gXHRpZiAodW5zaGFyZV9maWxlcygpKVxuZGlmZiAtLWdpdCBhL2ZzL2ZpbGVfdGFibGUuYyBiL2ZzL2ZpbGVfdGFibGUuY1xuaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDRcbi0tLSBhL2ZzL2ZpbGVfdGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZmlsZV90YWJsZS5jXG5AQCAtNTY4LDcgJiM0Mzs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGNvcmVkdW1wX3ByZV9leGl0KCkgbWF5IHJlbGVhc2UgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZS5cbiYjNDM7XHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xuJiM0MztcdCAqIGVhcmxpZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXHUwMDI2XHUwMDI2ICEodGFzay1cdTAwM2VmbGFncyBcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xuIFx0XHRpbml0X3Rhc2tfd29yayhcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XG4gXHRcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBUV0FfUkVTVU1FKSlcbiBcdFx0XHRyZXR1cm47XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG5pbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbkBAIC0xOTQ3LDE0ICYjNDM7MTk0NywxNiBAQCBlbnVtIHtcbiAjZGVmaW5lIE1NRl9EVU1QX0hVR0VUTEJfU0hBUkVEICA4XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfUFJJVkFURVx0OVxuICNkZWZpbmUgTU1GX0RVTVBfREFYX1NIQVJFRFx0MTBcbiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUXHQxMVxuIFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUXHRNTUZfRFVNUEFCTEVfQklUU1xuLSNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0JJVFNcdDlcbiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0MTBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFxcXG4gXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRklMVEVSX1NISUZUKVxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcbiBcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxuLVx0IEJJVChNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRilcbiYjNDM7XHQgKDEgXHUwMDNjXHUwMDNjIE1NRl9EVU1QX0hVR0VUTEJfUFJJVkFURSkgfCBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGIHxcXFxuJiM0MztcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRkRfTElTVCkpXG4gXG4gI2lmZGVmIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSU1xuICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEZcdEJJVChNTUZfRFVNUF9FTEZfSEVBREVSUylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09SRURVTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZnNfY29yZWR1bXAmIzM0OywKICAgICYjMzQ7ZnB1dCYjMzQ7LAogICAgJiMzNDtleGl0X2ZpbGVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgZWFybHkgcmVsZWFzZSBvZiBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BIGlmIGEgc3BlY2lmaWMgYml0IGluIGBjb3JlZHVtcF9maWx0ZXJgIGlzIG5vdCBzZXQuIFRoaXMgaW52b2x2ZXMgY2hhbmdlcyB0byBgZG9fY29yZWR1bXBgIChjYWxsZWQgYnkgYHZmc19jb3JlZHVtcGApIGFuZCBgX19mcHV0X2RlZmVycmVkYCAoY2FsbGVkIGJ5IGBmcHV0YCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvcmUgZHVtcGluZyBhbmQgZmlsZSByZWxlYXNlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjJmOTE2YWVhODY5YWFkNWFlMmM1MzQ4ZWVmNjhjMjA0NjM1MWQ0OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMDE6MjY6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdAppbmRleCAyNzE4OWY2ZTAwNGVlLi5jZTMxYThhOTNjN2M4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QKQEAgLTE5NDEsNiAmIzQzOzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnkKICAgLSAoYml0IDcpIERBWCBwcml2YXRlIG1lbW9yeQogICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnkKJiM0MzsgIC0gKGJpdCA5KSBmZCBsaXN0CiAKICAgTm90ZSB0aGF0IE1NSU8gcGFnZXMgc3VjaCBhcyBmcmFtZSBidWZmZXIgYXJlIG5ldmVyIGR1bXBlZCBhbmQgdkRTTyBwYWdlcwogICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy4KQEAgLTE5NDgsMTMgJiM0MzsxOTQ5LDIyIEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDoKICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbiYjMzk7dCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpcwogICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC4KIAomIzQzOyAgTm90ZSB0aGF0IGJpdCA5IGlzIHNldCBieSBkZWZhdWx0IGJlY2F1c2UgdG9vbHMgbGlrZSBzeXN0ZW1kLWNvcmVkdW1wIGdvCiYjNDM7ICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieQomIzQzOyAgYW55IFZNQSBhcmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gU29tZSBmaWxlIHJlbGVhc2UgbG9naWMsIHN1Y2ggYXMKJiM0MzsgIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaAomIzQzOyAgZWFybGllci4KJiM0MzsKJiM0MztUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgyMzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKJiM0MztzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLgomIzQzOwogVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuCiAKIElmIHlvdSBkb24mIzM5O3Qgd2FudCB0byBkdW1wIGFsbCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGF0dGFjaGVkIHRvIHBpZCAxMjM0LAotd3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OgomIzQzO3dyaXRlIDB4MjMxIHRvIHRoZSBwcm9jZXNzJiMzOTtzIHByb2MgZmlsZTo6CiAKLSAgJCBlY2hvIDB4MzEgJmd0OyAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlcgomIzQzOyAgJCBlY2hvIDB4MjMxICZndDsgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXIKIAogV2hlbiBhIG5ldyBwcm9jZXNzIGlzIGNyZWF0ZWQsIHRoZSBwcm9jZXNzIGluaGVyaXRzIHRoZSBiaXRtYXNrIHN0YXR1cyBmcm9tIGl0cwogcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy4KZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jCmluZGV4IGU2OGE3NmZmOTJhMzguLmQzNzhlNjljNjM2ZTIgMTAwNjQ0Ci0tLSBhL2ZzL2NvcmVkdW1wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvY29yZWR1bXAuYwpAQCAtNTIwLDYgJiM0Mzs1MjAsMjUgQEAgc3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAlyZXR1cm4gbnI7CiB9CiAKJiM0MzsvKgomIzQzOyAqIElmIGRvIG5vdCBkdW1wIGZkIGxpc3QsIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEKJiM0MzsgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZQomIzQzOyAqIGxvZ2ljLCBzdWNoIGFzIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkCiYjNDM7ICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuCiYjNDM7ICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7CiYjNDM7CiYjNDM7CWlmIChtbV9mbGFnc190ZXN0KE1NRl9EVU1QX0ZEX0xJU1QsIHRzay0mZ3Q7bW0pKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7CiYjNDM7CQlleGl0X2ZpbGVzKHQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjb3JlZHVtcF93YWl0KGludCBleGl0X2NvZGUsIHN0cnVjdCBjb3JlX3N0YXRlICpjb3JlX3N0YXRlKQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudDsKQEAgLTExMjMsNiAmIzQzOzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSwKIAlpZiAoY24tJmd0O21hc2sgJmFtcDsgQ09SRURVTVBfUkVKRUNUKQogCQlyZXR1cm47CiAKJiM0MzsJY29yZWR1bXBfcHJlX2V4aXQoKTsKJiM0MzsKIAkvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovCiAJLyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqLwogCWlmICh1bnNoYXJlX2ZpbGVzKCkpCmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmMKaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDQKLS0tIGEvZnMvZmlsZV90YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2ZpbGVfdGFibGUuYwpAQCAtNTY4LDcgJiM0Mzs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKQogCQlyZXR1cm47CiAJfQogCi0JaWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgJmFtcDsmYW1wOyAhKHRhc2stJmd0O2ZsYWdzICZhbXA7IFBGX0tUSFJFQUQpKSkgewomIzQzOwkvKgomIzQzOwkgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuCiYjNDM7CSAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzCiYjNDM7CSAqIGVhcmxpZXIuCiYjNDM7CSAqLwomIzQzOwlpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSAmYW1wOyZhbXA7ICEodGFzay0mZ3Q7ZmxhZ3MgJmFtcDsgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkgewogCQlpbml0X3Rhc2tfd29yaygmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBfX19fZnB1dCk7CiAJCWlmICghdGFza193b3JrX2FkZCh0YXNrLCAmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBUV0FfUkVTVU1FKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaAppbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oCkBAIC0xOTQ3LDE0ICYjNDM7MTk0NywxNiBAQCBlbnVtIHsKICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDgKICNkZWZpbmUgTU1GX0RVTVBfREFYX1BSSVZBVEUJOQogI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVECTEwCiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUCTExCiAKICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUCU1NRl9EVU1QQUJMRV9CSVRTCi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTkKJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTEwCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFwKIAkoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSAmbHQ7Jmx0OyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9ERUZBVUxUIFwKIAkoQklUKE1NRl9EVU1QX0FOT05fUFJJVkFURSkgfCBCSVQoTU1GX0RVTVBfQU5PTl9TSEFSRUQpIHwgXAotCSBCSVQoTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYpCiYjNDM7CSAoMSAmbHQ7Jmx0OyBNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRiB8XAomIzQzOwkgKDEgJmx0OyZsdDsgTU1GX0RVTVBfRkRfTElTVCkpCiAKICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMKICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYJQklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvcmVkdW1wIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29yZSBvZiBpdCBpcyBhIGNoYW5nZSB0byBob3cgY29yZWR1bXBzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGZpbGUgZGVzY3JpcHRvcnMuIEl0IHNlZW1zIHdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgYml0LCBgTU1GX0RVTVBfRkRfTElTVGAgKGJpdCA5KSwgdG8gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGUgY3J1Y2lhbCBiZWhhdmlvciBpcyB0aGlzOiBpZiB0aGF0IGJpdCAqaXNuJiMzOTt0KiBzZXQsIGBjb3JlZHVtcF9wcmVfZXhpdCgpYCBnZXRzIGNhbGxlZCB3aXRoaW4gYGRvX2NvcmVkdW1wKClgLiBBbmQgdGhhdCwgaW4gdHVybiwgY2FsbHMgYGV4aXRfZmlsZXModClgIGZvciBlYWNoIHRocmVhZC4gRXNzZW50aWFsbHksIHdlIGFyZSBjbG9zaW5nIGZpbGVzIG9uIGNvcmUgZHVtcCAodW5sZXNzIHRoZSBiaXQgaXMgc2V0KS4gRnVydGhlcm1vcmUsIHRoZSBwYXRjaCBzZWVtcyB0byBvcHRpbWl6ZSBmaWxlIGNsb3N1cmUgZHVyaW5nIGNvcmUgZHVtcHMgYnkgbW9kaWZ5aW5nIGBfX2ZwdXRfZGVmZXJyZWQoKWAsIHNraXBwaW5nIGB0YXNrX3dvcmtgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyB0byByZWxlYXNlIHRoZSBmaWxlcyBmYXN0ZXIuCgpUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBhY3R1YWxseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuIExldCYjMzk7cyBzZWUuLi4gWWVzLCB0aGUgcGF0Y2ggKmRvZXMqIHRvdWNoIGBkb19jb3JlZHVtcGAgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBjb250cm9sIGlzIHZpYSB0aGUgYC9wcm9jL3BpZC9jb3JlZHVtcF9maWx0ZXJgIGZpbGUsIHNvIHRoYXQmIzM5O3MgaG93IHdlJiMzOTtyZSBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHRoaXMgYmVoYXZpb3IuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBmdXp6aW5nIHRhcmdldHMuIEdpdmVuIHRoZSBjaGFuZ2VzLCBgZG9fY29yZWR1bXBgIGlzIGRlZmluaXRlbHkgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4gYGNvcmVkdW1wX3ByZV9leGl0YCBpcyBhbHNvIGluIHRoZSBjcm9zc2hhaXJzLCBldmVuIGlmIGl0IG1pZ2h0IGJlIHN0YXRpYyBvciBpbmxpbmVkOyBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgZG9fY29yZWR1bXBgLCBzbyB3ZSYjMzk7bGwgbmVlZCB0byBhY2NvdW50IGZvciBpdC4gRmluYWxseSwgYF9fZnB1dF9kZWZlcnJlZGAgYmVjYXVzZSBpdCBpcyBtb2RpZmllZC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBleHBvc2UgdGhlIGNoYW5nZWQgYmVoYXZpb3VyLgoKQW5kLCBmaW5hbGx5LCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBhdCBhbGwhIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfQ09SRURVTVBgIGlzIHNldCBhcyBhbiBvcHRpb24gaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBjaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDT1JFRFVNUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXG4tLVxuZnMvS2NvbmZpZy5iaW5mbXQtMTcwLVxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxuZnMvS2NvbmZpZy5iaW5mbXQtMTcyLVx0Ym9vbCBcJiMzNDtFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgQ29yZSBEdW1wcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gY29yZSBkdW1wcyB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5zdGluY3RzIHRlbGwgbWUgdGhlIHJlbGV2YW50IG9wdGlvbnMgbWlnaHQgYmUgZGVmaW5lZCBpbiB0aGUgYGZzL0tjb25maWcuYmluZm10YCBmaWxlLiBJdCYjMzk7cyBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBiaW5hcnkgZm9ybWF0IGNvbm5lY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrOyBzbywgSSBhbSBjaGVja2luZyBmb3IgdGhlIGBDT1JFRFVNUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4gSSBiZXQgaXQgaGFzIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XG4gMTcxOlx0Y29uZmlnIENPUkVEVU1QXG4gMTcyOlx0XHRib29sIFwmIzM0O0VuYWJsZSBjb3JlIGR1bXAgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbiAxNzM6XHRcdGRlZmF1bHQgeVxuIDE3NDpcdFx0aGVscFxuIDE3NTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHBlcmZvcm1pbmcgY29yZSBkdW1wcy4gWW91IGFsbW9zdFxuIDE3NjpcdFx0ICBjZXJ0YWlubHkgd2FudCB0byBzYXkgWSBoZXJlLiBOb3QgbmVjZXNzYXJ5IG9uIHN5c3RlbXMgdGhhdCBuZXZlclxuIDE3NzpcdFx0ICBuZWVkIGRlYnVnZ2luZyBvciBvbmx5IGV2ZXIgcnVuIGZsYXdsZXNzIGNvZGUuXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIEVYRUNfS1VOSVRfVEVTVFxuIDE4MDpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBleGVjdmUgdGVzdHNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuIDE4MTpcdFx0ZGVwZW5kcyBvbiBLVU5JVD15XG4gMTgyOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuIDE4MzpcdFx0aGVscFxuIDE4NDpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZXhlYyBLVW5pdCB0ZXN0cywgd2hpY2ggdGVzdHMgYm91bmRhcnkgY29uZGl0aW9uc1xuIDE4NTpcdFx0ICBvZiB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGV4ZWMgaW50ZXJuYWxzLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBUkNIX0hBU19FTEZfQ09SRV9FRkxBR1NcbiAxODg6XHRcdGJvb2xcbiAxODk6XHRcdGRlcGVuZHMgb24gQklORk1UX0VMRiBcdTAwMjZcdTAwMjYgRUxGX0NPUkVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIER1bXAgQmVoYXZpb3IqKgoKT2theSwgc28gdGhlIHN5c3RlbSYjMzk7cyBiZWhhdmluZyBhcyBpZiBjb3JlIGR1bXBzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuIFRoYXQmIzM5O3MgYSBsaXR0bGUgdW51c3VhbCwgYnV0IG5vdCBuZWNlc3NhcmlseSBhIHByb2JsZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgZXhhY3QgbWVjaGFuaXNtLiBNeSBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBzdHJhaWdodCB0byBgZnMvY29yZWR1bXAuY2AgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGBkb19jb3JlZHVtcGAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgZHVtcCBsb2dpYyBzaG91bGQgcmVzaWRlLCBhbmQgaXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGhvdyB0aGlzIGRlZmF1bHQgc2V0dGluZyBpcyBoYW5kbGVkLCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZCwgYW5kIGFueSByZWxldmFudCBpbnRlcmFjdGlvbnMgd2l0aCBzeXN0ZW0td2lkZSBzZXR0aW5ncy4gSXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGFuIGV4cGxhbmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX2NvcmVkdW1wJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmM9NTA0PXN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4tLVxuZnMvY29yZWR1bXAuYy01MjYtICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcbmZzL2NvcmVkdW1wLmM6NTI3OiAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxuZnMvY29yZWR1bXAuYy01MjgtICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuXG4tLVxuZnMvY29yZWR1bXAuYz0xMDk5PXN0YXRpYyBpbmxpbmUgYm9vbCBjb3JlZHVtcF9za2lwKGNvbnN0IHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy0xMTEwLVxuZnMvY29yZWR1bXAuYzoxMTExOnN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxuZnMvY29yZWR1bXAuYy0xMTEyLVx0XHRcdHNpemVfdCAqKmFyZ3YsIGludCAqYXJnYywgY29uc3Qgc3RydWN0IGxpbnV4X2JpbmZtdCAqYmluZm10KVxuLS1cbmZzL2NvcmVkdW1wLmM9MTE4Mj12b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKVxuLS1cbmZzL2NvcmVkdW1wLmMtMTIyMC1cdHNjb3BlZF93aXRoX2NyZWRzKGNyZWQpXG5mcy9jb3JlZHVtcC5jOjEyMjE6XHRcdGRvX2NvcmVkdW1wKFx1MDAyNmNuLCBcdTAwMjZjcHJtLCBcdTAwMjZhcmd2LCBcdTAwMjZhcmdjLCBiaW5mbXQpO1xuZnMvY29yZWR1bXAuYy0xMjIyLVx0Y29yZWR1bXBfY2xlYW51cChcdTAwMjZjbiwgXHUwMDI2Y3BybSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgRmlsZSBTeXN0ZW0gQ29yZSBEdW1wIE1lY2hhbmlzbSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmaWxlIHN5c3RlbSYjMzk7cyBjb3JlIGR1bXAgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZSBlbnRyeSBwb2ludCB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzIGB2ZnNfY29yZWR1bXBgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBiZWdpbnMsIHRoZSBuZXh1cyBvZiB0aGUgY29yZSBkdW1wIHByb2Nlc3MgYXMgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHZpcnR1YWwgZmlsZSBzeXN0ZW0gbGF5ZXIuIE5hdHVyYWxseSwgSSBpbW1lZGlhdGVseSBzdGFydCBjb25zaWRlcmluZyBob3cgdGhlIFZpcnR1YWwgRmlsZSBTeXN0ZW0gbGF5ZXIgaW50ZXJhY3RzIHdpdGggdGhpcywgZ2l2ZW4gaXQmIzM5O3MgYSB2aXRhbCBmZWF0dXJlLgoKTm93LCBJJiMzOTttIGFsc28gcmVtZW1iZXJpbmcgdGhhdCBgX19mcHV0X2RlZmVycmVkYCBwbGF5cyBhIHJvbGUgaGVyZS4gSXQmIzM5O3Mgb2Z0ZW4gaW52b2x2ZWQgaW4gY2xlYW5pbmcgdXAgZmlsZSBkZXNjcmlwdG9yIHJlc291cmNlcywgYW5kIG1vZGlmaWNhdGlvbnMgdG8gaXQsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIGNvcmUgZHVtcHMsIHdvdWxkIGJlIGV4cGVjdGVkIGluIGEgdGhvcm91Z2ggaW1wbGVtZW50YXRpb24gb3Igb3B0aW1pemF0aW9uLiBUaGlzIHRlbGxzIG1lIHRoYXQgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgY2xlYW51cCBhcmUgcHJvYmFibHkgZGVlcGx5IGludGVncmF0ZWQgaW50byB0aGUgY29yZSBkdW1wIHByb2Nlc3MuIEkgbmVlZCB0byBrZWVwIHRoYXQgY29ubmVjdGlvbiBpbiBtaW5kIGFzIEkgZGVsdmUgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2ZwdXRfZGVmZXJyZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZmlsZV90YWJsZS5jPTU2MD1FWFBPUlRfU1lNQk9MX0dQTChmbHVzaF9kZWxheWVkX2ZwdXQpO1xuZnMvZmlsZV90YWJsZS5jLTU2MS1cbmZzL2ZpbGVfdGFibGUuYzo1NjI6c3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZmlsZV90YWJsZS5jLTU2My17XG4tLVxuZnMvZmlsZV90YWJsZS5jPTU5MT12b2lkIGZwdXQoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZmlsZV90YWJsZS5jLTU5My1cdGlmICh1bmxpa2VseShmaWxlX3JlZl9wdXQoXHUwMDI2ZmlsZS1cdTAwM2VmX3JlZikpKVxuZnMvZmlsZV90YWJsZS5jOjU5NDpcdFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xuZnMvZmlsZV90YWJsZS5jLTU5NS19XG4tLVxuZnMvZmlsZV90YWJsZS5jPTYzMT12b2lkIGZwdXRfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZmlsZV90YWJsZS5jLTYzMy1cdGlmIChmaWxlX3JlZl9wdXRfY2xvc2UoXHUwMDI2ZmlsZS1cdTAwM2VmX3JlZikpXG5mcy9maWxlX3RhYmxlLmM6NjM0Olx0XHRfX2ZwdXRfZGVmZXJyZWQoZmlsZSk7XG5mcy9maWxlX3RhYmxlLmMtNjM1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkzNgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsJiMzOTtzIENvcmVkdW1wIE1lY2hhbmlzbSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBjb3JlZHVtcHMgYXJlIGhhbmRsZWQsIGFuZCBpdCBzZWVtcyBsaWtlIGBmcHV0YCBhbmQgYGZwdXRfY2xvc2VgIGFyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciBgX19mcHV0X2RlZmVycmVkYC4gVGhlIGNvbm5lY3Rpb24gaXMgdGhyb3VnaCB0aGUgZmlsZSBkZXNjcmlwdG9yIGxpZmVjeWNsZSwgd2hpY2ggaXMgd2hlcmUgdGhpbmdzIHN0YXJ0IGdldHRpbmcgaW50ZXJlc3RpbmcuIFRoZW4sIGB2ZnNfY29yZWR1bXBgIGlzIHRoZSBnYXRla2VlcGVyIGZvciBgZG9fY29yZWR1bXBgLiBUaGF0IGdpdmVzIG1lIGEgcm9hZG1hcDogZmlsZSBkZXNjcmlwdG9yIG9wZXJhdGlvbnMgdHJpZ2dlcmluZyB0aGUgY29yZWR1bXAgcHJvY2Vzcy4gSXQmIzM5O3MgYSBjbGFzc2ljIHN5c3RlbSBjYWxsIGhhbmRsaW5nIHBhdHRlcm4uCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmUtZXhpdCBzdGFnZS4gVGltZSB0byBleGFtaW5lIGBjb3JlZHVtcF9wcmVfZXhpdGAgaW4gYGZzL2NvcmVkdW1wLmNgLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgdml0YWwgc2V0dXAgb3IgY2xlYW51cCB0aGVyZS4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBnZXQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgcHJvY2Vzcy4gSSBpbWFnaW5lIGl0IGlzIHdoZXJlIHRoZSBwcmVwYXJhdGlvbiBvY2N1cnMgYmVmb3JlIHRoZSBhY3R1YWwgY29yZSBmaWxlIGdlbmVyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlZHVtcF9wcmVfZXhpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9jb3JlZHVtcC5jPTUwND1zdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxuLS1cbmZzL2NvcmVkdW1wLmMtNTI5LSAqL1xuZnMvY29yZWR1bXAuYzo1MzA6c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcbmZzL2NvcmVkdW1wLmMtNTMxLXtcbi0tXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy0xMTQ0LVxuZnMvY29yZWR1bXAuYzoxMTQ1Olx0Y29yZWR1bXBfcHJlX2V4aXQoKTtcbmZzL2NvcmVkdW1wLmMtMTE0Ni1cbi0tXG5mcy9maWxlX3RhYmxlLmM9NTYyPXN0YXRpYyB2b2lkIF9fZnB1dF9kZWZlcnJlZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9maWxlX3RhYmxlLmMtNTcxLVx0LypcbmZzL2ZpbGVfdGFibGUuYzo1NzI6XHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXG5mcy9maWxlX3RhYmxlLmMtNTczLVx0ICogQ2Fubm90IHVzZSB0YXNrX3dvcmsgaW4gdGhlIGNhc2UsIG5lZWRzIHRvIHJlbGVhc2UgZmlsZXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29yZSBEdW1wIFBhdGNoKioKCk9rYXksIHNvIHRoZSBtb3N0IGludGVyZXN0aW5nIGFzcGVjdHMgb2YgdGhpcyBwYXRjaCBzZWVtIHRvIHJldm9sdmUgYXJvdW5kIGB2ZnNfY29yZWR1bXBgIGFuZCBgZnB1dGAuIEkgaW5pdGlhbGx5IGdvdCBjb25mdXNlZCBhYm91dCBgX19mcHV0X2RlZmVycmVkYCBiZWluZyBzdGF0aWMsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgY3JpdGljYWwgcGF0aCBoZXJlOyBgZnB1dGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0JiMzOTtzIHdoYXQmIzM5O3MgaW1wb3J0YW50LgoKVGhlIHBhdGNoIGl0c2VsZiBhcHBlYXJzIHRvIG1vZGlmeSBgZnMvY29yZWR1bXAuY2AgYW5kIGBmcy9maWxlX3RhYmxlLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBhIG5ldyBiaXQgdG8gYGNvcmVkdW1wX2ZpbHRlcmAgd2hpY2ggaXMgbGlrZWx5IHRvIGNoYW5nZSBzb21lIGJlaGF2aW9yIGR1cmluZyBjb3JlIGR1bXBzLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgY291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmc7IGEgZnVuY3Rpb25hbCBjaGFuZ2UgbGlrZSB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlLgoKQmFzZWQgb24gdGhlIGNvZGUsIG15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYENPUkVEVU1QYCBjb25maWcgc2V0dGluZy4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgSSYjMzk7bGwga2VlcCBteSBmb2N1cyBvbiBgdmZzX2NvcmVkdW1wYCBhbmQgYGZwdXRgIHNwZWNpZmljYWxseS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUga2V5IGZ1bmN0aW9ucy4gSSBzZWUgYHZmc19jb3JlZHVtcGAgaXMgYSBwdWJsaWMgZnVuY3Rpb24sIGFuZCBzbyBpcyBgZnB1dGAuIEp1c3QgZG91YmxlLWNoZWNraW5nIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4aXRfZmlsZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY29yZWR1bXAuYz01MzA9c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcbi0tXG5mcy9jb3JlZHVtcC5jLTUzNy1cdGZvcl9lYWNoX3RocmVhZCh0c2ssIHQpIHtcbmZzL2NvcmVkdW1wLmM6NTM4Olx0XHRleGl0X2ZpbGVzKHQpO1xuZnMvY29yZWR1bXAuYy01MzktXHR9XG4tLVxuZnMvZmlsZS5jPTUwNj12b2lkIHB1dF9maWxlc19zdHJ1Y3Qoc3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXMpXG4tLVxuZnMvZmlsZS5jLTUxNy1cbmZzL2ZpbGUuYzo1MTg6dm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuZnMvZmlsZS5jLTUxOS17XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC90YXNrLmg9OTM9ZXh0ZXJuIF9fbm9yZXR1cm4gdm9pZCBkb19ncm91cF9leGl0KGludCk7XG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaC05NC1cbmluY2x1ZGUvbGludXgvc2NoZWQvdGFzay5oOjk1OmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICopO1xuaW5jbHVkZS9saW51eC9zY2hlZC90YXNrLmgtOTYtZXh0ZXJuIHZvaWQgZXhpdF9pdGltZXJzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTtcbi0tXG5rZXJuZWwvZXhpdC5jPTkyOT12b2lkIF9fbm9yZXR1cm4gZG9fZXhpdChsb25nIGNvZGUpXG4tLVxua2VybmVsL2V4aXQuYy0xMDAzLVx0ZXhpdF9zaG0odHNrKTtcbmtlcm5lbC9leGl0LmM6MTAwNDpcdGV4aXRfZmlsZXModHNrKTtcbmtlcm5lbC9leGl0LmMtMTAwNS1cdGV4aXRfZnModHNrKTtcbi0tXG5rZXJuZWwvZm9yay5jPTE5OTQ9X19sYXRlbnRfZW50cm9weSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNvcHlfcHJvY2Vzcyhcbi0tXG5rZXJuZWwvZm9yay5jLTI1OTUtYmFkX2ZvcmtfY2xlYW51cF9maWxlczpcbmtlcm5lbC9mb3JrLmM6MjU5NjpcdGV4aXRfZmlsZXMocCk7IC8qIGJsb2NraW5nICovXG5rZXJuZWwvZm9yay5jLTI1OTctYmFkX2ZvcmtfY2xlYW51cF9zZW11bmRvOlxuLS1cbmtlcm5lbC9waWQuYz04Nzk9c3RhdGljIHN0cnVjdCBmaWxlICpfX3BpZGZkX2ZnZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBpbnQgZmQpXG4tLVxua2VybmVsL3BpZC5jLTkwMS1cdFx0ICogMS4gYmVmb3JlIGV4aXRfc2lnbmFscygpLCB3aGljaCBnaXZlcyBhIHJlYWwgZmRcbmtlcm5lbC9waWQuYzo5MDI6XHRcdCAqIDIuIGJlZm9yZSBleGl0X2ZpbGVzKCkgdGFrZXMgdGhlIHRhc2tfbG9jaygpIGdpdmVzIGEgcmVhbCBmZFxua2VybmVsL3BpZC5jOjkwMzpcdFx0ICogMy4gYWZ0ZXIgZXhpdF9maWxlcygpIHJlbGVhc2VzIHRhc2tfbG9jaygpLCAtXHUwMDNlZmlsZXMgaXMgTlVMTDtcbmtlcm5lbC9waWQuYy05MDQtXHRcdCAqICAgIHRoaXMgaGFzIFBGX0VYSVRJTkcsIHNpbmNlIGl0IHdhcyBzZXQgaW4gZXhpdF9zaWduYWxzKCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcGlkZmQvcGlkZmRfZ2V0ZmRfdGVzdC5jPTI0ND1URVNUX0YoY2hpbGQsIG5vX3N0cmFuZ2VfRUJBREYpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcGlkZmQvcGlkZmRfZ2V0ZmRfdGVzdC5jLTI1Ny1cdCAqIEl0IHVzZWQgdG8gYmUgdGhhdCBwaWRmZF9nZXRmZCgpIGNvdWxkIHJhY2Ugd2l0aCB0aGUgZXhpdGluZyB0aHJlYWRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3BpZGZkL3BpZGZkX2dldGZkX3Rlc3QuYzoyNTg6XHQgKiBiZXR3ZWVuIGV4aXRfZmlsZXMoKSBhbmQgcmVsZWFzZV90YXNrKCksIGFuZCBnZXQgYSBub24tbnVsbCB0YXNrXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmMtMjU5LVx0ICogd2l0aCBhIE5VTEwgZmlsZXMgc3RydWN0LCBhbmQgeW91JiMzOTtkIGdldCBFQkFERiwgd2hpY2ggd2FzIHNsaWdodGx5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDMKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIENvcmUgRHVtcCBMb2dpYyBhbmQgRm9jdXMgU3ltYm9sIFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byByZWZpbmUgdGhlIGZ1enplciYjMzk7cyBmb2N1cy4gYGV4aXRfZmlsZXNgIGlzbiYjMzk7dCBhIHN0YXRpYyBjb25jZXB0LCB3aGljaCBvcGVucyB1cCBzb21lIHBvc3NpYmlsaXRpZXMuIFdlIGNhbiBpbmNsdWRlIGl0IGRpcmVjdGx5IHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyBhIHNvbGlkIGFkZGl0aW9uLgoKU28sIGxldCYjMzk7cyB1cGRhdGUgYEZvY3VzU3ltYm9sc2AgdG8gZXhwbGljaXRseSBpbmNsdWRlIGB2ZnNfY29yZWR1bXBgLCBgZnB1dGAsIGFuZCBub3cgYGV4aXRfZmlsZXNgLiBUaGUgZW5hYmxpbmcgY29uZmlnIHJlbWFpbnMgYENPUkVEVU1QYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgY29yZSBkdW1wIG1lY2hhbmlzbSwgZW5hYmxpbmcgdGhlIGVhcmx5IHJlbGVhc2Ugb2YgZmlsZXMgdGhhdCBhcmVuJiMzOTt0IHRpZWQgdG8gYW55IFZpcnR1YWwgTWVtb3J5IEFyZWEgKFZNQSkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgc3BlY2lmaWNhbGx5IHdoZW4gYSBjZXJ0YWluIGJpdCBpc24mIzM5O3Qgc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGUgY2hhbmdlcyB0b3VjaCBgZG9fY29yZWR1bXBgLCB3aGljaCBpcyBpbnZva2VkIGJ5IGB2ZnNfY29yZWR1bXBgLCBhbmQgYF9fZnB1dF9kZWZlcnJlZGAsIHdoaWNoIGlzIGNhbGxlZCB0aHJvdWdoIGBmcHV0YC4gTWFrZXMgcGVyZmVjdCBzZW5zZSDigJMgdGhlIGZ1enppbmcgZWZmb3J0cyBuZWVkIHRvIGJlIGNlbnRlcmVkIG9uIHRob3NlIGNvcmUgZHVtcCBhbmQgZmlsZSByZWxlYXNlIHBhdGh3YXlzLgoKTm93LCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IGBDT1JFRFVNUGAgaXMgdGhlIHJpZ2h0IGVuYWJsaW5nIGNvbmZpZy4gTGV0JiMzOTtzIHNlZS4uLiBpdCYjMzk7cyBkZWZpbmVkIGFzIGBjb25maWcgQ09SRURVTVBgIGluIGBmcy9LY29uZmlnLmJpbmZtdGAuIEl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZGVwZW5kIG9uIGFueXRoaW5nIGRpcmVjdGx5LCB0aG91Z2ggYEJJTkZNVF9FTEZgIG9mdGVuIHNlbGVjdHMgaXQgb3IgZGVmYXVsdHMgaXQgdG8gJiMzOTt5JiMzOTsuIEFoLCBoZXJlIHdlIGdvLiBUaGUgcmVsZXZhbnQgc2VjdGlvbiBpbiBgZnMvS2NvbmZpZy5iaW5mbXRgIHJlYWRzOgoKYGBgCmNvbmZpZyBDT1JFRFVNUAoJYm9vbCAmIzM0O0VuYWJsZSBjb3JlIGR1bXAgc3VwcG9ydCYjMzQ7IGlmIEVYUEVSVAoJZGVmYXVsdCB5CmBgYAoKU28gYENPUkVEVU1QYCBzZWVtcyBzdWZmaWNpZW50LiBFeGNlbGxlbnQuIEkmIzM5O20gc2F0aXNmaWVkLiBOb3csIGxldCYjMzk7cyBnZXQgdGhhdCByZXNwb25zZSB3cml0dGVuIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09SRURVTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZnNfY29yZWR1bXAmIzM0OywKICAgICYjMzQ7ZnB1dCYjMzQ7LAogICAgJiMzNDtleGl0X2ZpbGVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgZWFybHkgcmVsZWFzZSBvZiBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BIGlmIGEgc3BlY2lmaWMgYml0IGluIGBjb3JlZHVtcF9maWx0ZXJgIGlzIG5vdCBzZXQuIFRoaXMgaW52b2x2ZXMgY2hhbmdlcyB0byBgZG9fY29yZWR1bXBgIChjYWxsZWQgYnkgYHZmc19jb3JlZHVtcGApIGFuZCBgX19mcHV0X2RlZmVycmVkYCAoY2FsbGVkIGJ5IGBmcHV0YCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvcmUgZHVtcGluZyBhbmQgZmlsZSByZWxlYXNlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT1JFRFVNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zmc19jb3JlZHVtcCYjMzQ7LAogICAgJiMzNDtmcHV0JiMzNDssCiAgICAmIzM0O2V4aXRfZmlsZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEgaWYgYSBzcGVjaWZpYyBiaXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAgaXMgbm90IHNldC4gVGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkb19jb3JlZHVtcGAgKGNhbGxlZCBieSBgdmZzX2NvcmVkdW1wYCkgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgIChjYWxsZWQgYnkgYGZwdXRgKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29yZSBkdW1waW5nIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoxMy4xNjM4Mjg5NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjE2Njc3NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCIsXG4gICAgXCJmcHV0XCIsXG4gICAgXCJleGl0X2ZpbGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEgaWYgYSBzcGVjaWZpYyBiaXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAgaXMgbm90IHNldC4gVGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkb19jb3JlZHVtcGAgKGNhbGxlZCBieSBgdmZzX2NvcmVkdW1wYCkgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgIChjYWxsZWQgYnkgYGZwdXRgKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29yZSBkdW1waW5nIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjEzLjE2MzgzNjY3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU4NTYzNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjJmOTE2YWVhODY5YWFkNWFlMmM1MzQ4ZWVmNjhjMjA0NjM1MWQ0OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDAxOjI2OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuaW5kZXggMjcxODlmNmUwMDRlZS4uY2UzMWE4YTkzYzdjOCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxcbkBAIC0xOTQxLDYgKzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XFxuICAgLSAoYml0IDYpIGh1Z2V0bGIgc2hhcmVkIG1lbW9yeVxcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcXG4gICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnlcXG4rICAtIChiaXQgOSkgZmQgbGlzdFxcbiBcXG4gICBOb3RlIHRoYXQgTU1JTyBwYWdlcyBzdWNoIGFzIGZyYW1lIGJ1ZmZlciBhcmUgbmV2ZXIgZHVtcGVkIGFuZCB2RFNPIHBhZ2VzXFxuICAgYXJlIGFsd2F5cyBkdW1wZWQgcmVnYXJkbGVzcyBvZiB0aGUgYml0bWFzayBzdGF0dXMuXFxuQEAgLTE5NDgsMTMgKzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxcbiAgIE5vdGUgdGhhdCBiaXRzIDAtNCBkb24ndCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpc1xcbiAgIG9ubHkgYWZmZWN0ZWQgYnkgYml0IDUtNiwgYW5kIERBWCBpcyBvbmx5IGFmZmVjdGVkIGJ5IGJpdHMgNy04LlxcbiBcXG4rICBOb3RlIHRoYXQgYml0IDkgaXMgc2V0IGJ5IGRlZmF1bHQgYmVjYXVzZSB0b29scyBsaWtlIHN5c3RlbWQtY29yZWR1bXAgZ29cXG4rICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieVxcbisgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXFxuKyAgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWQgYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoXFxuKyAgZWFybGllci5cXG4rXFxuK1RoZSBkZWZhdWx0IHZhbHVlIG9mIGNvcmVkdW1wX2ZpbHRlciBpcyAweDIzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxcbitzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLlxcbitcXG4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnlcXG4gc2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMgYW5kIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYXJlIGR1bXBlZC5cXG4gXFxuIElmIHlvdSBkb24ndCB3YW50IHRvIGR1bXAgYWxsIHNoYXJlZCBtZW1vcnkgc2VnbWVudHMgYXR0YWNoZWQgdG8gcGlkIDEyMzQsXFxuLXdyaXRlIDB4MzEgdG8gdGhlIHByb2Nlc3MncyBwcm9jIGZpbGU6Olxcbit3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XFxuIFxcbi0gICQgZWNobyAweDMxIFxcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcXG4rICAkIGVjaG8gMHgyMzEgXFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxcbiBcXG4gV2hlbiBhIG5ldyBwcm9jZXNzIGlzIGNyZWF0ZWQsIHRoZSBwcm9jZXNzIGluaGVyaXRzIHRoZSBiaXRtYXNrIHN0YXR1cyBmcm9tIGl0c1xcbiBwYXJlbnQuIEl0IGlzIHVzZWZ1bCB0byBzZXQgdXAgY29yZWR1bXBfZmlsdGVyIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLlxcbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xcbmluZGV4IGU2OGE3NmZmOTJhMzguLmQzNzhlNjljNjM2ZTIgMTAwNjQ0XFxuLS0tIGEvZnMvY29yZWR1bXAuY1xcbisrKyBiL2ZzL2NvcmVkdW1wLmNcXG5AQCAtNTIwLDYgKzUyMCwyNSBAQCBzdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxcbiBcXHRyZXR1cm4gbnI7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIElmIGRvIG5vdCBkdW1wIGZkIGxpc3QsIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUFcXG4rICogY2FuIGJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFRoZXJlZm9yZSwgc29tZSBmaWxlIHJlbGVhc2VcXG4rICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcXG4rICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuXFxuKyAqIHRha2VzIHNldmVyYWwgc2Vjb25kcyBvciBldmVuIGxvbmdlciB0byBleGVjdXRlLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcXG4re1xcbitcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQsICp0O1xcbitcXG4rXFx0aWYgKG1tX2ZsYWdzX3Rlc3QoTU1GX0RVTVBfRkRfTElTVCwgdHNrLVxcdTAwM2VtbSkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGZvcl9lYWNoX3RocmVhZCh0c2ssIHQpIHtcXG4rXFx0XFx0ZXhpdF9maWxlcyh0KTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgaW50IGNvcmVkdW1wX3dhaXQoaW50IGV4aXRfY29kZSwgc3RydWN0IGNvcmVfc3RhdGUgKmNvcmVfc3RhdGUpXFxuIHtcXG4gXFx0c3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50O1xcbkBAIC0xMTIzLDYgKzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcXG4gXFx0aWYgKGNuLVxcdTAwM2VtYXNrIFxcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xcbitcXG4gXFx0LyogZ2V0IHVzIGFuIHVuc2hhcmVkIGRlc2NyaXB0b3IgdGFibGU7IGFsbW9zdCBhbHdheXMgYSBuby1vcCAqL1xcbiBcXHQvKiBUaGUgY2VsbCBzcHVmcyBjb3JlZHVtcCBjb2RlIHJlYWRzIHRoZSBmaWxlIGRlc2NyaXB0b3IgdGFibGVzICovXFxuIFxcdGlmICh1bnNoYXJlX2ZpbGVzKCkpXFxuZGlmZiAtLWdpdCBhL2ZzL2ZpbGVfdGFibGUuYyBiL2ZzL2ZpbGVfdGFibGUuY1xcbmluZGV4IGM2OGI4YzBhNDA5N2EuLjAyZWU0ZThiMWNmZTggMTAwNjQ0XFxuLS0tIGEvZnMvZmlsZV90YWJsZS5jXFxuKysrIGIvZnMvZmlsZV90YWJsZS5jXFxuQEAgLTU2OCw3ICs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaWtlbHkoIWluX2ludGVycnVwdCgpIFxcdTAwMjZcXHUwMDI2ICEodGFzay1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcXG4rXFx0LypcXG4rXFx0ICogY29yZWR1bXBfcHJlX2V4aXQoKSBtYXkgcmVsZWFzZSBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlLlxcbitcXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xcbitcXHQgKiBlYXJsaWVyLlxcbitcXHQgKi9cXG4rXFx0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXFx1MDAyNlxcdTAwMjYgISh0YXNrLVxcdTAwM2VmbGFncyBcXHUwMDI2IChQRl9LVEhSRUFEIHwgUEZfRFVNUENPUkUpKSkpIHtcXG4gXFx0XFx0aW5pdF90YXNrX3dvcmsoXFx1MDAyNmZpbGUtXFx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XFxuIFxcdFxcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcXHUwMDI2ZmlsZS1cXHUwMDNlZl90YXNrX3dvcmssIFRXQV9SRVNVTUUpKVxcbiBcXHRcXHRcXHRyZXR1cm47XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaFxcbmluZGV4IGI1ZDRjZDNiMDY3YmYuLmEyN2ZmODhhOWFkOGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXFxuQEAgLTE5NDcsMTQgKzE5NDcsMTYgQEAgZW51bSB7XFxuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcXG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfUFJJVkFURVxcdDlcXG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXFx0MTBcXG4rI2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUXFx0MTFcXG4gXFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUXFx0TU1GX0RVTVBBQkxFX0JJVFNcXG4tI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1xcdDlcXG4rI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1xcdDEwXFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX01BU0sgXFxcXFxcbiBcXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcXHUwMDNjXFx1MDAzYyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpXFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcXFxcbiBcXHQoQklUKE1NRl9EVU1QX0FOT05fUFJJVkFURSkgfCBCSVQoTU1GX0RVTVBfQU5PTl9TSEFSRUQpIHwgXFxcXFxcbi1cXHQgQklUKE1NRl9EVU1QX0hVR0VUTEJfUFJJVkFURSkgfCBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGKVxcbitcXHQgKDEgXFx1MDAzY1xcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXFxcXG4rXFx0ICgxIFxcdTAwM2NcXHUwMDNjIE1NRl9EVU1QX0ZEX0xJU1QpKVxcbiBcXG4gI2lmZGVmIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSU1xcbiAjIGRlZmluZSBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGXFx0QklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoxNC41MjM0NzgzMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjI1NzAxOTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT1JFRFVNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmc19jb3JlZHVtcFwiLFxuICAgIFwiZnB1dFwiLFxuICAgIFwiZXhpdF9maWxlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgZWFybHkgcmVsZWFzZSBvZiBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BIGlmIGEgc3BlY2lmaWMgYml0IGluIGBjb3JlZHVtcF9maWx0ZXJgIGlzIG5vdCBzZXQuIFRoaXMgaW52b2x2ZXMgY2hhbmdlcyB0byBgZG9fY29yZWR1bXBgIChjYWxsZWQgYnkgYHZmc19jb3JlZHVtcGApIGFuZCBgX19mcHV0X2RlZmVycmVkYCAoY2FsbGVkIGJ5IGBmcHV0YCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvcmUgZHVtcGluZyBhbmQgZmlsZSByZWxlYXNlIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MmY5MTZhZWE4NjlhYWQ1YWUyYzUzNDhlZWY2OGMyMDQ2MzUxZDQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwMToyNjoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5jZTMxYThhOTNjN2M4IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5NDEsNiArMTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnlcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxuKyAgLSAoYml0IDkpIGZkIGxpc3RcbiBcbiAgIE5vdGUgdGhhdCBNTUlPIHBhZ2VzIHN1Y2ggYXMgZnJhbWUgYnVmZmVyIGFyZSBuZXZlciBkdW1wZWQgYW5kIHZEU08gcGFnZXNcbiAgIGFyZSBhbHdheXMgZHVtcGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGJpdG1hc2sgc3RhdHVzLlxuQEAgLTE5NDgsMTMgKzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbid0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXG4gICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC5cbiBcbisgIE5vdGUgdGhhdCBiaXQgOSBpcyBzZXQgYnkgZGVmYXVsdCBiZWNhdXNlIHRvb2xzIGxpa2Ugc3lzdGVtZC1jb3JlZHVtcCBnb1xuKyAgdGhyb3VnaCB0aGUgZmRzLiBJZiB5b3UgZG8gbm90IHNldCBiaXQgOSwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnlcbisgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXG4rICBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZCBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2hcbisgIGVhcmxpZXIuXG4rXG4rVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MjMzOyB0aGlzIG1lYW5zIGFsbCBhbm9ueW1vdXMgbWVtb3J5XG4rc2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMsIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYW5kIGZkIGxpc3QgYXJlIGR1bXBlZC5cbitcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuXG4gXG4gSWYgeW91IGRvbid0IHdhbnQgdG8gZHVtcCBhbGwgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyBhdHRhY2hlZCB0byBwaWQgMTIzNCxcbi13cml0ZSAweDMxIHRvIHRoZSBwcm9jZXNzJ3MgcHJvYyBmaWxlOjpcbit3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XG4gXG4tICAkIGVjaG8gMHgzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbisgICQgZWNobyAweDIzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbiBcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXG4gcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy5cbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcbi0tLSBhL2ZzL2NvcmVkdW1wLmNcbisrKyBiL2ZzL2NvcmVkdW1wLmNcbkBAIC01MjAsNiArNTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4gXHRyZXR1cm4gbnI7XG4gfVxuIFxuKy8qXG4rICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxuKyAqIGNhbiBiZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBUaGVyZWZvcmUsIHNvbWUgZmlsZSByZWxlYXNlXG4rICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcbisgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cbisgKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbisgKi9cbitzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxuK3tcbitcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7XG4rXG4rXHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXHUwMDNlbW0pKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XG4rXHRcdGV4aXRfZmlsZXModCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgY29yZWR1bXBfd2FpdChpbnQgZXhpdF9jb2RlLCBzdHJ1Y3QgY29yZV9zdGF0ZSAqY29yZV9zdGF0ZSlcbiB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7XG5AQCAtMTEyMyw2ICsxMTQyLDggQEAgc3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4gXHRpZiAoY24tXHUwMDNlbWFzayBcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xuK1xuIFx0LyogZ2V0IHVzIGFuIHVuc2hhcmVkIGRlc2NyaXB0b3IgdGFibGU7IGFsbW9zdCBhbHdheXMgYSBuby1vcCAqL1xuIFx0LyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqL1xuIFx0aWYgKHVuc2hhcmVfZmlsZXMoKSlcbmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmNcbmluZGV4IGM2OGI4YzBhNDA5N2EuLjAyZWU0ZThiMWNmZTggMTAwNjQ0XG4tLS0gYS9mcy9maWxlX3RhYmxlLmNcbisrKyBiL2ZzL2ZpbGVfdGFibGUuY1xuQEAgLTU2OCw3ICs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcbitcdC8qXG4rXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXG4rXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xuK1x0ICogZWFybGllci5cbitcdCAqL1xuK1x0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXHUwMDI2XHUwMDI2ICEodGFzay1cdTAwM2VmbGFncyBcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xuIFx0XHRpbml0X3Rhc2tfd29yayhcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XG4gXHRcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBUV0FfUkVTVU1FKSlcbiBcdFx0XHRyZXR1cm47XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG5pbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbkBAIC0xOTQ3LDE0ICsxOTQ3LDE2IEBAIGVudW0ge1xuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXHQ5XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXHQxMFxuKyNkZWZpbmUgTU1GX0RVTVBfRkRfTElTVFx0MTFcbiBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9TSElGVFx0TU1GX0RVTVBBQkxFX0JJVFNcbi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXHQ5XG4rI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0MTBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFxcXG4gXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRklMVEVSX1NISUZUKVxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcbiBcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxuLVx0IEJJVChNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRilcbitcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXG4rXHQgKDEgXHUwMDNjXHUwMDNjIE1NRl9EVU1QX0ZEX0xJU1QpKVxuIFxuICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlNcbiAjIGRlZmluZSBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGXHRCSVQoTU1GX0RVTVBfRUxGX0hFQURFUlMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoxNC41MjM0ODA2NjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTU4MzEzNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvcmVkdW1wIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvcmUgb2YgaXQgaXMgYSBjaGFuZ2UgdG8gaG93IGNvcmVkdW1wcyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmaWxlIGRlc2NyaXB0b3JzLiBJdCBzZWVtcyB3ZSdyZSBhZGRpbmcgYSBuZXcgYml0LCBgTU1GX0RVTVBfRkRfTElTVGAgKGJpdCA5KSwgdG8gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGUgY3J1Y2lhbCBiZWhhdmlvciBpcyB0aGlzOiBpZiB0aGF0IGJpdCAqaXNuJ3QqIHNldCwgYGNvcmVkdW1wX3ByZV9leGl0KClgIGdldHMgY2FsbGVkIHdpdGhpbiBgZG9fY29yZWR1bXAoKWAuIEFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgZXhpdF9maWxlcyh0KWAgZm9yIGVhY2ggdGhyZWFkLiBFc3NlbnRpYWxseSwgd2UgYXJlIGNsb3NpbmcgZmlsZXMgb24gY29yZSBkdW1wICh1bmxlc3MgdGhlIGJpdCBpcyBzZXQpLiBGdXJ0aGVybW9yZSwgdGhlIHBhdGNoIHNlZW1zIHRvIG9wdGltaXplIGZpbGUgY2xvc3VyZSBkdXJpbmcgY29yZSBkdW1wcyBieSBtb2RpZnlpbmcgYF9fZnB1dF9kZWZlcnJlZCgpYCwgc2tpcHBpbmcgYHRhc2tfd29ya2AgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIHRvIHJlbGVhc2UgdGhlIGZpbGVzIGZhc3Rlci5cblxuVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiBMZXQncyBzZWUuLi4gWWVzLCB0aGUgcGF0Y2ggKmRvZXMqIHRvdWNoIGBkb19jb3JlZHVtcGAgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBjb250cm9sIGlzIHZpYSB0aGUgYC9wcm9jL3BpZC9jb3JlZHVtcF9maWx0ZXJgIGZpbGUsIHNvIHRoYXQncyBob3cgd2UncmUgZW5hYmxpbmcgYW5kIGRpc2FibGluZyB0aGlzIGJlaGF2aW9yLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IGZ1enppbmcgdGFyZ2V0cy4gR2l2ZW4gdGhlIGNoYW5nZXMsIGBkb19jb3JlZHVtcGAgaXMgZGVmaW5pdGVseSBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LiBgY29yZWR1bXBfcHJlX2V4aXRgIGlzIGFsc28gaW4gdGhlIGNyb3NzaGFpcnMsIGV2ZW4gaWYgaXQgbWlnaHQgYmUgc3RhdGljIG9yIGlubGluZWQ7IGl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGRvX2NvcmVkdW1wYCwgc28gd2UnbGwgbmVlZCB0byBhY2NvdW50IGZvciBpdC4gRmluYWxseSwgYF9fZnB1dF9kZWZlcnJlZGAgYmVjYXVzZSBpdCBpcyBtb2RpZmllZC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBleHBvc2UgdGhlIGNoYW5nZWQgYmVoYXZpb3VyLlxuXG5BbmQsIGZpbmFsbHksIGxldCdzIG1ha2Ugc3VyZSB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgYXQgYWxsISBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0NPUkVEVU1QYCBpcyBzZXQgYXMgYW4gb3B0aW9uIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgY2hlY2sgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjIwLjY4MTc5NjM5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkzODE3NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT1JFRFVNUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNzAtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoyMy4wNzU2MTg2NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc0ODgxODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIENvcmUgRHVtcHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBjb3JlIGR1bXBzIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbnN0aW5jdHMgdGVsbCBtZSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBtaWdodCBiZSBkZWZpbmVkIGluIHRoZSBgZnMvS2NvbmZpZy5iaW5mbXRgIGZpbGUuIEl0J3MgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiB0aGUgYmluYXJ5IGZvcm1hdCBjb25uZWN0aW9uLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrOyBzbywgSSBhbSBjaGVja2luZyBmb3IgdGhlIGBDT1JFRFVNUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuIEkgYmV0IGl0IGhhcyB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDE6MjY6MjUuOTUwNTA2OTczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcbiAxNzE6XFx0Y29uZmlnIENPUkVEVU1QXFxuIDE3MjpcXHRcXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbiAxNzM6XFx0XFx0ZGVmYXVsdCB5XFxuIDE3NDpcXHRcXHRoZWxwXFxuIDE3NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgcGVyZm9ybWluZyBjb3JlIGR1bXBzLiBZb3UgYWxtb3N0XFxuIDE3NjpcXHRcXHQgIGNlcnRhaW5seSB3YW50IHRvIHNheSBZIGhlcmUuIE5vdCBuZWNlc3Nhcnkgb24gc3lzdGVtcyB0aGF0IG5ldmVyXFxuIDE3NzpcXHRcXHQgIG5lZWQgZGVidWdnaW5nIG9yIG9ubHkgZXZlciBydW4gZmxhd2xlc3MgY29kZS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIEVYRUNfS1VOSVRfVEVTVFxcbiAxODA6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZXhlY3ZlIHRlc3RzXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuIDE4MTpcXHRcXHRkZXBlbmRzIG9uIEtVTklUPXlcXG4gMTgyOlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuIDE4MzpcXHRcXHRoZWxwXFxuIDE4NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBleGVjIEtVbml0IHRlc3RzLCB3aGljaCB0ZXN0cyBib3VuZGFyeSBjb25kaXRpb25zXFxuIDE4NTpcXHRcXHQgIG9mIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgZXhlYyBpbnRlcm5hbHMuXFxuIDE4NjpcXHRcXG4gMTg3OlxcdGNvbmZpZyBBUkNIX0hBU19FTEZfQ09SRV9FRkxBR1NcXG4gMTg4OlxcdFxcdGJvb2xcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQklORk1UX0VMRiBcXHUwMDI2XFx1MDAyNiBFTEZfQ09SRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoyNS45NTA2MDk3NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc4OTA2OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvcmUgRHVtcCBCZWhhdmlvcioqXG5cbk9rYXksIHNvIHRoZSBzeXN0ZW0ncyBiZWhhdmluZyBhcyBpZiBjb3JlIGR1bXBzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgcHJvYmxlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGlzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pc20uIE15IG5leHQgc3RlcCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIGBmcy9jb3JlZHVtcC5jYCBpbiB0aGUga2VybmVsIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgZG9fY29yZWR1bXBgIGZ1bmN0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgZHVtcCBsb2dpYyBzaG91bGQgcmVzaWRlLCBhbmQgaXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGhvdyB0aGlzIGRlZmF1bHQgc2V0dGluZyBpcyBoYW5kbGVkLCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZCwgYW5kIGFueSByZWxldmFudCBpbnRlcmFjdGlvbnMgd2l0aCBzeXN0ZW0td2lkZSBzZXR0aW5ncy4gSXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBmb3IgYW4gZXhwbGFuYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjI4LjgyOTUyMTMzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkxMDkzOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2NvcmVkdW1wXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9NTA0PXN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTUyNi0gKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxcbmZzL2NvcmVkdW1wLmM6NTI3OiAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxcbmZzL2NvcmVkdW1wLmMtNTI4LSAqIHRha2VzIHNldmVyYWwgc2Vjb25kcyBvciBldmVuIGxvbmdlciB0byBleGVjdXRlLlxcbi0tXFxuZnMvY29yZWR1bXAuYz0xMDk5PXN0YXRpYyBpbmxpbmUgYm9vbCBjb3JlZHVtcF9za2lwKGNvbnN0IHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExMTAtXFxuZnMvY29yZWR1bXAuYzoxMTExOnN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbmZzL2NvcmVkdW1wLmMtMTExMi1cXHRcXHRcXHRzaXplX3QgKiphcmd2LCBpbnQgKmFyZ2MsIGNvbnN0IHN0cnVjdCBsaW51eF9iaW5mbXQgKmJpbmZtdClcXG4tLVxcbmZzL2NvcmVkdW1wLmM9MTE4Mj12b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKVxcbi0tXFxuZnMvY29yZWR1bXAuYy0xMjIwLVxcdHNjb3BlZF93aXRoX2NyZWRzKGNyZWQpXFxuZnMvY29yZWR1bXAuYzoxMjIxOlxcdFxcdGRvX2NvcmVkdW1wKFxcdTAwMjZjbiwgXFx1MDAyNmNwcm0sIFxcdTAwMjZhcmd2LCBcXHUwMDI2YXJnYywgYmluZm10KTtcXG5mcy9jb3JlZHVtcC5jLTEyMjItXFx0Y29yZWR1bXBfY2xlYW51cChcXHUwMDI2Y24sIFxcdTAwMjZjcHJtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDE6MjY6MzEuMjIwNjMzMTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNTM1MDc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIEZpbGUgU3lzdGVtIENvcmUgRHVtcCBNZWNoYW5pc20qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZpbGUgc3lzdGVtJ3MgY29yZSBkdW1wIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpcyBgdmZzX2NvcmVkdW1wYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBiZWdpbnMsIHRoZSBuZXh1cyBvZiB0aGUgY29yZSBkdW1wIHByb2Nlc3MgYXMgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHZpcnR1YWwgZmlsZSBzeXN0ZW0gbGF5ZXIuIE5hdHVyYWxseSwgSSBpbW1lZGlhdGVseSBzdGFydCBjb25zaWRlcmluZyBob3cgdGhlIFZpcnR1YWwgRmlsZSBTeXN0ZW0gbGF5ZXIgaW50ZXJhY3RzIHdpdGggdGhpcywgZ2l2ZW4gaXQncyBhIHZpdGFsIGZlYXR1cmUuXG5cbk5vdywgSSdtIGFsc28gcmVtZW1iZXJpbmcgdGhhdCBgX19mcHV0X2RlZmVycmVkYCBwbGF5cyBhIHJvbGUgaGVyZS4gSXQncyBvZnRlbiBpbnZvbHZlZCBpbiBjbGVhbmluZyB1cCBmaWxlIGRlc2NyaXB0b3IgcmVzb3VyY2VzLCBhbmQgbW9kaWZpY2F0aW9ucyB0byBpdCwgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gY29yZSBkdW1wcywgd291bGQgYmUgZXhwZWN0ZWQgaW4gYSB0aG9yb3VnaCBpbXBsZW1lbnRhdGlvbiBvciBvcHRpbWl6YXRpb24uIFRoaXMgdGVsbHMgbWUgdGhhdCByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwIGFyZSBwcm9iYWJseSBkZWVwbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBjb3JlIGR1bXAgcHJvY2Vzcy4gSSBuZWVkIHRvIGtlZXAgdGhhdCBjb25uZWN0aW9uIGluIG1pbmQgYXMgSSBkZWx2ZSBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjozNC42NTU5ODY4ODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTY1OTE3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19mcHV0X2RlZmVycmVkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2ZpbGVfdGFibGUuYz01NjA9RVhQT1JUX1NZTUJPTF9HUEwoZmx1c2hfZGVsYXllZF9mcHV0KTtcXG5mcy9maWxlX3RhYmxlLmMtNTYxLVxcbmZzL2ZpbGVfdGFibGUuYzo1NjI6c3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2ZpbGVfdGFibGUuYy01NjMte1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTU5MT12b2lkIGZwdXQoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNTkzLVxcdGlmICh1bmxpa2VseShmaWxlX3JlZl9wdXQoXFx1MDAyNmZpbGUtXFx1MDAzZWZfcmVmKSkpXFxuZnMvZmlsZV90YWJsZS5jOjU5NDpcXHRcXHRfX2ZwdXRfZGVmZXJyZWQoZmlsZSk7XFxuZnMvZmlsZV90YWJsZS5jLTU5NS19XFxuLS1cXG5mcy9maWxlX3RhYmxlLmM9NjMxPXZvaWQgZnB1dF9jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2ZpbGVfdGFibGUuYy02MzMtXFx0aWYgKGZpbGVfcmVmX3B1dF9jbG9zZShcXHUwMDI2ZmlsZS1cXHUwMDNlZl9yZWYpKVxcbmZzL2ZpbGVfdGFibGUuYzo2MzQ6XFx0XFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xcbmZzL2ZpbGVfdGFibGUuYy02MzUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjozNi45NTI1ODUwNjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NDk3MDk5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBDb3JlZHVtcCBNZWNoYW5pc20qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGNvcmVkdW1wcyBhcmUgaGFuZGxlZCwgYW5kIGl0IHNlZW1zIGxpa2UgYGZwdXRgIGFuZCBgZnB1dF9jbG9zZWAgYXJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgZm9yIGBfX2ZwdXRfZGVmZXJyZWRgLiBUaGUgY29ubmVjdGlvbiBpcyB0aHJvdWdoIHRoZSBmaWxlIGRlc2NyaXB0b3IgbGlmZWN5Y2xlLCB3aGljaCBpcyB3aGVyZSB0aGluZ3Mgc3RhcnQgZ2V0dGluZyBpbnRlcmVzdGluZy4gVGhlbiwgYHZmc19jb3JlZHVtcGAgaXMgdGhlIGdhdGVrZWVwZXIgZm9yIGBkb19jb3JlZHVtcGAuIFRoYXQgZ2l2ZXMgbWUgYSByb2FkbWFwOiBmaWxlIGRlc2NyaXB0b3Igb3BlcmF0aW9ucyB0cmlnZ2VyaW5nIHRoZSBjb3JlZHVtcCBwcm9jZXNzLiBJdCdzIGEgY2xhc3NpYyBzeXN0ZW0gY2FsbCBoYW5kbGluZyBwYXR0ZXJuLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmUtZXhpdCBzdGFnZS4gVGltZSB0byBleGFtaW5lIGBjb3JlZHVtcF9wcmVfZXhpdGAgaW4gYGZzL2NvcmVkdW1wLmNgLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgdml0YWwgc2V0dXAgb3IgY2xlYW51cCB0aGVyZS4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCB0aGUgcmVhbCBtZWF0IG9mIHRoZSBwcm9jZXNzLiBJIGltYWdpbmUgaXQgaXMgd2hlcmUgdGhlIHByZXBhcmF0aW9uIG9jY3VycyBiZWZvcmUgdGhlIGFjdHVhbCBjb3JlIGZpbGUgZ2VuZXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkzNiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjQwLjMwNzU1OTQ2M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDY0MjU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb3JlZHVtcF9wcmVfZXhpdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jb3JlZHVtcC5jPTUwND1zdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxcbi0tXFxuZnMvY29yZWR1bXAuYy01MjktICovXFxuZnMvY29yZWR1bXAuYzo1MzA6c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcXG5mcy9jb3JlZHVtcC5jLTUzMS17XFxuLS1cXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExNDQtXFxuZnMvY29yZWR1bXAuYzoxMTQ1OlxcdGNvcmVkdW1wX3ByZV9leGl0KCk7XFxuZnMvY29yZWR1bXAuYy0xMTQ2LVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTU2Mj1zdGF0aWMgdm9pZCBfX2ZwdXRfZGVmZXJyZWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNTcxLVxcdC8qXFxuZnMvZmlsZV90YWJsZS5jOjU3MjpcXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXFxuZnMvZmlsZV90YWJsZS5jLTU3My1cXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjo0My4wNzIyMTMwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAwODg0NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBDb3JlIER1bXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgbW9zdCBpbnRlcmVzdGluZyBhc3BlY3RzIG9mIHRoaXMgcGF0Y2ggc2VlbSB0byByZXZvbHZlIGFyb3VuZCBgdmZzX2NvcmVkdW1wYCBhbmQgYGZwdXRgLiBJIGluaXRpYWxseSBnb3QgY29uZnVzZWQgYWJvdXQgYF9fZnB1dF9kZWZlcnJlZGAgYmVpbmcgc3RhdGljLCBidXQgdGhhdCdzIG5vdCB0aGUgY3JpdGljYWwgcGF0aCBoZXJlOyBgZnB1dGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0J3Mgd2hhdCdzIGltcG9ydGFudC5cblxuVGhlIHBhdGNoIGl0c2VsZiBhcHBlYXJzIHRvIG1vZGlmeSBgZnMvY29yZWR1bXAuY2AgYW5kIGBmcy9maWxlX3RhYmxlLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgbmV3IGJpdCB0byBgY29yZWR1bXBfZmlsdGVyYCB3aGljaCBpcyBsaWtlbHkgdG8gY2hhbmdlIHNvbWUgYmVoYXZpb3IgZHVyaW5nIGNvcmUgZHVtcHMuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZW5lZml0IGZyb20gZnV6emluZzsgYSBmdW5jdGlvbmFsIGNoYW5nZSBsaWtlIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUuXG5cbkJhc2VkIG9uIHRoZSBjb2RlLCBteSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBDT1JFRFVNUGAgY29uZmlnIHNldHRpbmcuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIEknbGwga2VlcCBteSBmb2N1cyBvbiBgdmZzX2NvcmVkdW1wYCBhbmQgYGZwdXRgIHNwZWNpZmljYWxseS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGtleSBmdW5jdGlvbnMuIEkgc2VlIGB2ZnNfY29yZWR1bXBgIGlzIGEgcHVibGljIGZ1bmN0aW9uLCBhbmQgc28gaXMgYGZwdXRgLiBKdXN0IGRvdWJsZS1jaGVja2luZyB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTEyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjQ3Ljg3MzA5OTcyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwMTExNTIyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleGl0X2ZpbGVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9NTMwPXN0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTUzNy1cXHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XFxuZnMvY29yZWR1bXAuYzo1Mzg6XFx0XFx0ZXhpdF9maWxlcyh0KTtcXG5mcy9jb3JlZHVtcC5jLTUzOS1cXHR9XFxuLS1cXG5mcy9maWxlLmM9NTA2PXZvaWQgcHV0X2ZpbGVzX3N0cnVjdChzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcylcXG4tLVxcbmZzL2ZpbGUuYy01MTctXFxuZnMvZmlsZS5jOjUxODp2b2lkIGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuZnMvZmlsZS5jLTUxOS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaD05Mz1leHRlcm4gX19ub3JldHVybiB2b2lkIGRvX2dyb3VwX2V4aXQoaW50KTtcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaC05NC1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaDo5NTpleHRlcm4gdm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTtcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaC05Ni1leHRlcm4gdm9pZCBleGl0X2l0aW1lcnMoc3RydWN0IHRhc2tfc3RydWN0ICopO1xcbi0tXFxua2VybmVsL2V4aXQuYz05Mjk9dm9pZCBfX25vcmV0dXJuIGRvX2V4aXQobG9uZyBjb2RlKVxcbi0tXFxua2VybmVsL2V4aXQuYy0xMDAzLVxcdGV4aXRfc2htKHRzayk7XFxua2VybmVsL2V4aXQuYzoxMDA0OlxcdGV4aXRfZmlsZXModHNrKTtcXG5rZXJuZWwvZXhpdC5jLTEwMDUtXFx0ZXhpdF9mcyh0c2spO1xcbi0tXFxua2VybmVsL2ZvcmsuYz0xOTk0PV9fbGF0ZW50X2VudHJvcHkgc3RydWN0IHRhc2tfc3RydWN0ICpjb3B5X3Byb2Nlc3MoXFxuLS1cXG5rZXJuZWwvZm9yay5jLTI1OTUtYmFkX2ZvcmtfY2xlYW51cF9maWxlczpcXG5rZXJuZWwvZm9yay5jOjI1OTY6XFx0ZXhpdF9maWxlcyhwKTsgLyogYmxvY2tpbmcgKi9cXG5rZXJuZWwvZm9yay5jLTI1OTctYmFkX2ZvcmtfY2xlYW51cF9zZW11bmRvOlxcbi0tXFxua2VybmVsL3BpZC5jPTg3OT1zdGF0aWMgc3RydWN0IGZpbGUgKl9fcGlkZmRfZmdldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGludCBmZClcXG4tLVxcbmtlcm5lbC9waWQuYy05MDEtXFx0XFx0ICogMS4gYmVmb3JlIGV4aXRfc2lnbmFscygpLCB3aGljaCBnaXZlcyBhIHJlYWwgZmRcXG5rZXJuZWwvcGlkLmM6OTAyOlxcdFxcdCAqIDIuIGJlZm9yZSBleGl0X2ZpbGVzKCkgdGFrZXMgdGhlIHRhc2tfbG9jaygpIGdpdmVzIGEgcmVhbCBmZFxcbmtlcm5lbC9waWQuYzo5MDM6XFx0XFx0ICogMy4gYWZ0ZXIgZXhpdF9maWxlcygpIHJlbGVhc2VzIHRhc2tfbG9jaygpLCAtXFx1MDAzZWZpbGVzIGlzIE5VTEw7XFxua2VybmVsL3BpZC5jLTkwNC1cXHRcXHQgKiAgICB0aGlzIGhhcyBQRl9FWElUSU5HLCBzaW5jZSBpdCB3YXMgc2V0IGluIGV4aXRfc2lnbmFscygpLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcGlkZmQvcGlkZmRfZ2V0ZmRfdGVzdC5jPTI0ND1URVNUX0YoY2hpbGQsIG5vX3N0cmFuZ2VfRUJBREYpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmMtMjU3LVxcdCAqIEl0IHVzZWQgdG8gYmUgdGhhdCBwaWRmZF9nZXRmZCgpIGNvdWxkIHJhY2Ugd2l0aCB0aGUgZXhpdGluZyB0aHJlYWRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmM6MjU4OlxcdCAqIGJldHdlZW4gZXhpdF9maWxlcygpIGFuZCByZWxlYXNlX3Rhc2soKSwgYW5kIGdldCBhIG5vbi1udWxsIHRhc2tcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmMtMjU5LVxcdCAqIHdpdGggYSBOVUxMIGZpbGVzIHN0cnVjdCwgYW5kIHlvdSdkIGdldCBFQkFERiwgd2hpY2ggd2FzIHNsaWdodGx5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjUwLjI3NDIyMTI0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzcwODExNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIENvcmUgRHVtcCBMb2dpYyBhbmQgRm9jdXMgU3ltYm9sIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gcmVmaW5lIHRoZSBmdXp6ZXIncyBmb2N1cy4gYGV4aXRfZmlsZXNgIGlzbid0IGEgc3RhdGljIGNvbmNlcHQsIHdoaWNoIG9wZW5zIHVwIHNvbWUgcG9zc2liaWxpdGllcy4gV2UgY2FuIGluY2x1ZGUgaXQgZGlyZWN0bHkgd2l0aGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBzb2xpZCBhZGRpdGlvbi5cblxuU28sIGxldCdzIHVwZGF0ZSBgRm9jdXNTeW1ib2xzYCB0byBleHBsaWNpdGx5IGluY2x1ZGUgYHZmc19jb3JlZHVtcGAsIGBmcHV0YCwgYW5kIG5vdyBgZXhpdF9maWxlc2AuIFRoZSBlbmFibGluZyBjb25maWcgcmVtYWlucyBgQ09SRURVTVBgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhci4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGNvcmUgZHVtcCBtZWNoYW5pc20sIGVuYWJsaW5nIHRoZSBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlbid0IHRpZWQgdG8gYW55IFZpcnR1YWwgTWVtb3J5IEFyZWEgKFZNQSkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgc3BlY2lmaWNhbGx5IHdoZW4gYSBjZXJ0YWluIGJpdCBpc24ndCBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIFRoZSBjaGFuZ2VzIHRvdWNoIGBkb19jb3JlZHVtcGAsIHdoaWNoIGlzIGludm9rZWQgYnkgYHZmc19jb3JlZHVtcGAsIGFuZCBgX19mcHV0X2RlZmVycmVkYCwgd2hpY2ggaXMgY2FsbGVkIHRocm91Z2ggYGZwdXRgLiBNYWtlcyBwZXJmZWN0IHNlbnNlIOKAkyB0aGUgZnV6emluZyBlZmZvcnRzIG5lZWQgdG8gYmUgY2VudGVyZWQgb24gdGhvc2UgY29yZSBkdW1wIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHdheXMuXG5cbk5vdywganVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4sIGxldCdzIHZlcmlmeSB0aGF0IGBDT1JFRFVNUGAgaXMgdGhlIHJpZ2h0IGVuYWJsaW5nIGNvbmZpZy4gTGV0J3Mgc2VlLi4uIGl0J3MgZGVmaW5lZCBhcyBgY29uZmlnIENPUkVEVU1QYCBpbiBgZnMvS2NvbmZpZy5iaW5mbXRgLiBJdCBkb2Vzbid0IHNlZW0gdG8gZGVwZW5kIG9uIGFueXRoaW5nIGRpcmVjdGx5LCB0aG91Z2ggYEJJTkZNVF9FTEZgIG9mdGVuIHNlbGVjdHMgaXQgb3IgZGVmYXVsdHMgaXQgdG8gJ3knLiBBaCwgaGVyZSB3ZSBnby4gVGhlIHJlbGV2YW50IHNlY3Rpb24gaW4gYGZzL0tjb25maWcuYmluZm10YCByZWFkczpcblxuYGBgXG5jb25maWcgQ09SRURVTVBcblx0Ym9vbCBcIkVuYWJsZSBjb3JlIGR1bXAgc3VwcG9ydFwiIGlmIEVYUEVSVFxuXHRkZWZhdWx0IHlcbmBgYFxuXG5TbyBgQ09SRURVTVBgIHNlZW1zIHN1ZmZpY2llbnQuIEV4Y2VsbGVudC4gSSdtIHNhdGlzZmllZC4gTm93LCBsZXQncyBnZXQgdGhhdCByZXNwb25zZSB3cml0dGVuIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODAzLCJPdXRwdXRUb2tlbnMiOjEzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjo1Ni42NDUwMzY3NzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU0NTc0MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCIsXG4gICAgXCJmcHV0XCIsXG4gICAgXCJleGl0X2ZpbGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEgaWYgYSBzcGVjaWZpYyBiaXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAgaXMgbm90IHNldC4gVGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkb19jb3JlZHVtcGAgKGNhbGxlZCBieSBgdmZzX2NvcmVkdW1wYCkgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgIChjYWxsZWQgYnkgYGZwdXRgKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29yZSBkdW1waW5nIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09SRURVTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZnNfY29yZWR1bXBcIixcbiAgICBcImZwdXRcIixcbiAgICBcImV4aXRfZmlsZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IGVhcmx5IHJlbGVhc2Ugb2YgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQSBpZiBhIHNwZWNpZmljIGJpdCBpbiBgY29yZWR1bXBfZmlsdGVyYCBpcyBub3Qgc2V0LiBUaGlzIGludm9sdmVzIGNoYW5nZXMgdG8gYGRvX2NvcmVkdW1wYCAoY2FsbGVkIGJ5IGB2ZnNfY29yZWR1bXBgKSBhbmQgYF9fZnB1dF9kZWZlcnJlZGAgKGNhbGxlZCBieSBgZnB1dGApLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb3JlIGR1bXBpbmcgYW5kIGZpbGUgcmVsZWFzZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowm8wrr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 00:33:08 +0000 UTC FinishedAt: 2026-08-04 01:26:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "b58f6744-3f1f-4d01-90c1-429d0f700cdd" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "vfs_coredump", "fput", "exit_files" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPUkVEVU1QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZzX2NvcmVkdW1wJiMzNDssCiAgICAmIzM0O2ZwdXQmIzM0OywKICAgICYjMzQ7ZXhpdF9maWxlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IGVhcmx5IHJlbGVhc2Ugb2YgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQSBpZiBhIHNwZWNpZmljIGJpdCBpbiBgY29yZWR1bXBfZmlsdGVyYCBpcyBub3Qgc2V0LiBUaGlzIGludm9sdmVzIGNoYW5nZXMgdG8gYGRvX2NvcmVkdW1wYCAoY2FsbGVkIGJ5IGB2ZnNfY29yZWR1bXBgKSBhbmQgYF9fZnB1dF9kZWZlcnJlZGAgKGNhbGxlZCBieSBgZnB1dGApLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb3JlIGR1bXBpbmcgYW5kIGZpbGUgcmVsZWFzZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYyZjkxNmFlYTg2OWFhZDVhZTJjNTM0OGVlZjY4YzIwNDYzNTFkNDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDAxOjI2OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5jZTMxYThhOTNjN2M4IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5NDEsNiAmIzQzOzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICAtIChiaXQgNikgaHVnZXRsYiBzaGFyZWQgbWVtb3J5XG4gICAtIChiaXQgNykgREFYIHByaXZhdGUgbWVtb3J5XG4gICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnlcbiYjNDM7ICAtIChiaXQgOSkgZmQgbGlzdFxuIFxuICAgTm90ZSB0aGF0IE1NSU8gcGFnZXMgc3VjaCBhcyBmcmFtZSBidWZmZXIgYXJlIG5ldmVyIGR1bXBlZCBhbmQgdkRTTyBwYWdlc1xuICAgYXJlIGFsd2F5cyBkdW1wZWQgcmVnYXJkbGVzcyBvZiB0aGUgYml0bWFzayBzdGF0dXMuXG5AQCAtMTk0OCwxMyAmIzQzOzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbiYjMzk7dCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpc1xuICAgb25seSBhZmZlY3RlZCBieSBiaXQgNS02LCBhbmQgREFYIGlzIG9ubHkgYWZmZWN0ZWQgYnkgYml0cyA3LTguXG4gXG4mIzQzOyAgTm90ZSB0aGF0IGJpdCA5IGlzIHNldCBieSBkZWZhdWx0IGJlY2F1c2UgdG9vbHMgbGlrZSBzeXN0ZW1kLWNvcmVkdW1wIGdvXG4mIzQzOyAgdGhyb3VnaCB0aGUgZmRzLiBJZiB5b3UgZG8gbm90IHNldCBiaXQgOSwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnlcbiYjNDM7ICBhbnkgVk1BIGFyZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBTb21lIGZpbGUgcmVsZWFzZSBsb2dpYywgc3VjaCBhc1xuJiM0MzsgIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaFxuJiM0MzsgIGVhcmxpZXIuXG4mIzQzO1xuJiM0MztUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgyMzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnlcbiYjNDM7c2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMsIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYW5kIGZkIGxpc3QgYXJlIGR1bXBlZC5cbiYjNDM7XG4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnlcbiBzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcyBhbmQgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhcmUgZHVtcGVkLlxuIFxuIElmIHlvdSBkb24mIzM5O3Qgd2FudCB0byBkdW1wIGFsbCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGF0dGFjaGVkIHRvIHBpZCAxMjM0LFxuLXdyaXRlIDB4MzEgdG8gdGhlIHByb2Nlc3MmIzM5O3MgcHJvYyBmaWxlOjpcbiYjNDM7d3JpdGUgMHgyMzEgdG8gdGhlIHByb2Nlc3MmIzM5O3MgcHJvYyBmaWxlOjpcbiBcbi0gICQgZWNobyAweDMxIFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxuJiM0MzsgICQgZWNobyAweDIzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbiBcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXG4gcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy5cbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcbi0tLSBhL2ZzL2NvcmVkdW1wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2NvcmVkdW1wLmNcbkBAIC01MjAsNiAmIzQzOzUyMCwyNSBAQCBzdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxuIFx0cmV0dXJuIG5yO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxuJiM0MzsgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZVxuJiM0MzsgKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxuJiM0MzsgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cbiYjNDM7ICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50LCAqdDtcbiYjNDM7XG4mIzQzO1x0aWYgKG1tX2ZsYWdzX3Rlc3QoTU1GX0RVTVBfRkRfTElTVCwgdHNrLVx1MDAzZW1tKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yX2VhY2hfdGhyZWFkKHRzaywgdCkge1xuJiM0MztcdFx0ZXhpdF9maWxlcyh0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBjb3JlZHVtcF93YWl0KGludCBleGl0X2NvZGUsIHN0cnVjdCBjb3JlX3N0YXRlICpjb3JlX3N0YXRlKVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudDtcbkBAIC0xMTIzLDYgJiM0MzsxMTQyLDggQEAgc3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4gXHRpZiAoY24tXHUwMDNlbWFzayBcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0Y29yZWR1bXBfcHJlX2V4aXQoKTtcbiYjNDM7XG4gXHQvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovXG4gXHQvKiBUaGUgY2VsbCBzcHVmcyBjb3JlZHVtcCBjb2RlIHJlYWRzIHRoZSBmaWxlIGRlc2NyaXB0b3IgdGFibGVzICovXG4gXHRpZiAodW5zaGFyZV9maWxlcygpKVxuZGlmZiAtLWdpdCBhL2ZzL2ZpbGVfdGFibGUuYyBiL2ZzL2ZpbGVfdGFibGUuY1xuaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDRcbi0tLSBhL2ZzL2ZpbGVfdGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZmlsZV90YWJsZS5jXG5AQCAtNTY4LDcgJiM0Mzs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGNvcmVkdW1wX3ByZV9leGl0KCkgbWF5IHJlbGVhc2UgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZS5cbiYjNDM7XHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xuJiM0MztcdCAqIGVhcmxpZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXHUwMDI2XHUwMDI2ICEodGFzay1cdTAwM2VmbGFncyBcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xuIFx0XHRpbml0X3Rhc2tfd29yayhcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XG4gXHRcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBUV0FfUkVTVU1FKSlcbiBcdFx0XHRyZXR1cm47XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG5pbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbkBAIC0xOTQ3LDE0ICYjNDM7MTk0NywxNiBAQCBlbnVtIHtcbiAjZGVmaW5lIE1NRl9EVU1QX0hVR0VUTEJfU0hBUkVEICA4XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfUFJJVkFURVx0OVxuICNkZWZpbmUgTU1GX0RVTVBfREFYX1NIQVJFRFx0MTBcbiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUXHQxMVxuIFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUXHRNTUZfRFVNUEFCTEVfQklUU1xuLSNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0JJVFNcdDlcbiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0MTBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFxcXG4gXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRklMVEVSX1NISUZUKVxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcbiBcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxuLVx0IEJJVChNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRilcbiYjNDM7XHQgKDEgXHUwMDNjXHUwMDNjIE1NRl9EVU1QX0hVR0VUTEJfUFJJVkFURSkgfCBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGIHxcXFxuJiM0MztcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRkRfTElTVCkpXG4gXG4gI2lmZGVmIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSU1xuICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEZcdEJJVChNTUZfRFVNUF9FTEZfSEVBREVSUylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09SRURVTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZnNfY29yZWR1bXAmIzM0OywKICAgICYjMzQ7ZnB1dCYjMzQ7LAogICAgJiMzNDtleGl0X2ZpbGVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgZWFybHkgcmVsZWFzZSBvZiBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BIGlmIGEgc3BlY2lmaWMgYml0IGluIGBjb3JlZHVtcF9maWx0ZXJgIGlzIG5vdCBzZXQuIFRoaXMgaW52b2x2ZXMgY2hhbmdlcyB0byBgZG9fY29yZWR1bXBgIChjYWxsZWQgYnkgYHZmc19jb3JlZHVtcGApIGFuZCBgX19mcHV0X2RlZmVycmVkYCAoY2FsbGVkIGJ5IGBmcHV0YCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvcmUgZHVtcGluZyBhbmQgZmlsZSByZWxlYXNlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjJmOTE2YWVhODY5YWFkNWFlMmM1MzQ4ZWVmNjhjMjA0NjM1MWQ0OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMDE6MjY6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdAppbmRleCAyNzE4OWY2ZTAwNGVlLi5jZTMxYThhOTNjN2M4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QKQEAgLTE5NDEsNiAmIzQzOzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnkKICAgLSAoYml0IDcpIERBWCBwcml2YXRlIG1lbW9yeQogICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnkKJiM0MzsgIC0gKGJpdCA5KSBmZCBsaXN0CiAKICAgTm90ZSB0aGF0IE1NSU8gcGFnZXMgc3VjaCBhcyBmcmFtZSBidWZmZXIgYXJlIG5ldmVyIGR1bXBlZCBhbmQgdkRTTyBwYWdlcwogICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy4KQEAgLTE5NDgsMTMgJiM0MzsxOTQ5LDIyIEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDoKICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbiYjMzk7dCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpcwogICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC4KIAomIzQzOyAgTm90ZSB0aGF0IGJpdCA5IGlzIHNldCBieSBkZWZhdWx0IGJlY2F1c2UgdG9vbHMgbGlrZSBzeXN0ZW1kLWNvcmVkdW1wIGdvCiYjNDM7ICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieQomIzQzOyAgYW55IFZNQSBhcmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gU29tZSBmaWxlIHJlbGVhc2UgbG9naWMsIHN1Y2ggYXMKJiM0MzsgIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaAomIzQzOyAgZWFybGllci4KJiM0MzsKJiM0MztUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgyMzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKJiM0MztzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLgomIzQzOwogVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuCiAKIElmIHlvdSBkb24mIzM5O3Qgd2FudCB0byBkdW1wIGFsbCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGF0dGFjaGVkIHRvIHBpZCAxMjM0LAotd3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OgomIzQzO3dyaXRlIDB4MjMxIHRvIHRoZSBwcm9jZXNzJiMzOTtzIHByb2MgZmlsZTo6CiAKLSAgJCBlY2hvIDB4MzEgJmd0OyAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlcgomIzQzOyAgJCBlY2hvIDB4MjMxICZndDsgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXIKIAogV2hlbiBhIG5ldyBwcm9jZXNzIGlzIGNyZWF0ZWQsIHRoZSBwcm9jZXNzIGluaGVyaXRzIHRoZSBiaXRtYXNrIHN0YXR1cyBmcm9tIGl0cwogcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy4KZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jCmluZGV4IGU2OGE3NmZmOTJhMzguLmQzNzhlNjljNjM2ZTIgMTAwNjQ0Ci0tLSBhL2ZzL2NvcmVkdW1wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvY29yZWR1bXAuYwpAQCAtNTIwLDYgJiM0Mzs1MjAsMjUgQEAgc3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAlyZXR1cm4gbnI7CiB9CiAKJiM0MzsvKgomIzQzOyAqIElmIGRvIG5vdCBkdW1wIGZkIGxpc3QsIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEKJiM0MzsgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZQomIzQzOyAqIGxvZ2ljLCBzdWNoIGFzIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkCiYjNDM7ICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuCiYjNDM7ICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7CiYjNDM7CiYjNDM7CWlmIChtbV9mbGFnc190ZXN0KE1NRl9EVU1QX0ZEX0xJU1QsIHRzay0mZ3Q7bW0pKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7CiYjNDM7CQlleGl0X2ZpbGVzKHQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjb3JlZHVtcF93YWl0KGludCBleGl0X2NvZGUsIHN0cnVjdCBjb3JlX3N0YXRlICpjb3JlX3N0YXRlKQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudDsKQEAgLTExMjMsNiAmIzQzOzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSwKIAlpZiAoY24tJmd0O21hc2sgJmFtcDsgQ09SRURVTVBfUkVKRUNUKQogCQlyZXR1cm47CiAKJiM0MzsJY29yZWR1bXBfcHJlX2V4aXQoKTsKJiM0MzsKIAkvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovCiAJLyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqLwogCWlmICh1bnNoYXJlX2ZpbGVzKCkpCmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmMKaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDQKLS0tIGEvZnMvZmlsZV90YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2ZpbGVfdGFibGUuYwpAQCAtNTY4LDcgJiM0Mzs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKQogCQlyZXR1cm47CiAJfQogCi0JaWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgJmFtcDsmYW1wOyAhKHRhc2stJmd0O2ZsYWdzICZhbXA7IFBGX0tUSFJFQUQpKSkgewomIzQzOwkvKgomIzQzOwkgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuCiYjNDM7CSAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzCiYjNDM7CSAqIGVhcmxpZXIuCiYjNDM7CSAqLwomIzQzOwlpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSAmYW1wOyZhbXA7ICEodGFzay0mZ3Q7ZmxhZ3MgJmFtcDsgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkgewogCQlpbml0X3Rhc2tfd29yaygmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBfX19fZnB1dCk7CiAJCWlmICghdGFza193b3JrX2FkZCh0YXNrLCAmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBUV0FfUkVTVU1FKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaAppbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oCkBAIC0xOTQ3LDE0ICYjNDM7MTk0NywxNiBAQCBlbnVtIHsKICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDgKICNkZWZpbmUgTU1GX0RVTVBfREFYX1BSSVZBVEUJOQogI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVECTEwCiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUCTExCiAKICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUCU1NRl9EVU1QQUJMRV9CSVRTCi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTkKJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTEwCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFwKIAkoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSAmbHQ7Jmx0OyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9ERUZBVUxUIFwKIAkoQklUKE1NRl9EVU1QX0FOT05fUFJJVkFURSkgfCBCSVQoTU1GX0RVTVBfQU5PTl9TSEFSRUQpIHwgXAotCSBCSVQoTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYpCiYjNDM7CSAoMSAmbHQ7Jmx0OyBNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRiB8XAomIzQzOwkgKDEgJmx0OyZsdDsgTU1GX0RVTVBfRkRfTElTVCkpCiAKICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMKICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYJQklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvcmVkdW1wIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29yZSBvZiBpdCBpcyBhIGNoYW5nZSB0byBob3cgY29yZWR1bXBzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGZpbGUgZGVzY3JpcHRvcnMuIEl0IHNlZW1zIHdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgYml0LCBgTU1GX0RVTVBfRkRfTElTVGAgKGJpdCA5KSwgdG8gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGUgY3J1Y2lhbCBiZWhhdmlvciBpcyB0aGlzOiBpZiB0aGF0IGJpdCAqaXNuJiMzOTt0KiBzZXQsIGBjb3JlZHVtcF9wcmVfZXhpdCgpYCBnZXRzIGNhbGxlZCB3aXRoaW4gYGRvX2NvcmVkdW1wKClgLiBBbmQgdGhhdCwgaW4gdHVybiwgY2FsbHMgYGV4aXRfZmlsZXModClgIGZvciBlYWNoIHRocmVhZC4gRXNzZW50aWFsbHksIHdlIGFyZSBjbG9zaW5nIGZpbGVzIG9uIGNvcmUgZHVtcCAodW5sZXNzIHRoZSBiaXQgaXMgc2V0KS4gRnVydGhlcm1vcmUsIHRoZSBwYXRjaCBzZWVtcyB0byBvcHRpbWl6ZSBmaWxlIGNsb3N1cmUgZHVyaW5nIGNvcmUgZHVtcHMgYnkgbW9kaWZ5aW5nIGBfX2ZwdXRfZGVmZXJyZWQoKWAsIHNraXBwaW5nIGB0YXNrX3dvcmtgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyB0byByZWxlYXNlIHRoZSBmaWxlcyBmYXN0ZXIuCgpUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBhY3R1YWxseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuIExldCYjMzk7cyBzZWUuLi4gWWVzLCB0aGUgcGF0Y2ggKmRvZXMqIHRvdWNoIGBkb19jb3JlZHVtcGAgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBjb250cm9sIGlzIHZpYSB0aGUgYC9wcm9jL3BpZC9jb3JlZHVtcF9maWx0ZXJgIGZpbGUsIHNvIHRoYXQmIzM5O3MgaG93IHdlJiMzOTtyZSBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHRoaXMgYmVoYXZpb3IuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBmdXp6aW5nIHRhcmdldHMuIEdpdmVuIHRoZSBjaGFuZ2VzLCBgZG9fY29yZWR1bXBgIGlzIGRlZmluaXRlbHkgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4gYGNvcmVkdW1wX3ByZV9leGl0YCBpcyBhbHNvIGluIHRoZSBjcm9zc2hhaXJzLCBldmVuIGlmIGl0IG1pZ2h0IGJlIHN0YXRpYyBvciBpbmxpbmVkOyBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgZG9fY29yZWR1bXBgLCBzbyB3ZSYjMzk7bGwgbmVlZCB0byBhY2NvdW50IGZvciBpdC4gRmluYWxseSwgYF9fZnB1dF9kZWZlcnJlZGAgYmVjYXVzZSBpdCBpcyBtb2RpZmllZC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBleHBvc2UgdGhlIGNoYW5nZWQgYmVoYXZpb3VyLgoKQW5kLCBmaW5hbGx5LCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBhdCBhbGwhIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfQ09SRURVTVBgIGlzIHNldCBhcyBhbiBvcHRpb24gaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBjaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDT1JFRFVNUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXG4tLVxuZnMvS2NvbmZpZy5iaW5mbXQtMTcwLVxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxuZnMvS2NvbmZpZy5iaW5mbXQtMTcyLVx0Ym9vbCBcJiMzNDtFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgQ29yZSBEdW1wcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gY29yZSBkdW1wcyB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5zdGluY3RzIHRlbGwgbWUgdGhlIHJlbGV2YW50IG9wdGlvbnMgbWlnaHQgYmUgZGVmaW5lZCBpbiB0aGUgYGZzL0tjb25maWcuYmluZm10YCBmaWxlLiBJdCYjMzk7cyBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBiaW5hcnkgZm9ybWF0IGNvbm5lY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrOyBzbywgSSBhbSBjaGVja2luZyBmb3IgdGhlIGBDT1JFRFVNUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4gSSBiZXQgaXQgaGFzIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XG4gMTcxOlx0Y29uZmlnIENPUkVEVU1QXG4gMTcyOlx0XHRib29sIFwmIzM0O0VuYWJsZSBjb3JlIGR1bXAgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbiAxNzM6XHRcdGRlZmF1bHQgeVxuIDE3NDpcdFx0aGVscFxuIDE3NTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHBlcmZvcm1pbmcgY29yZSBkdW1wcy4gWW91IGFsbW9zdFxuIDE3NjpcdFx0ICBjZXJ0YWlubHkgd2FudCB0byBzYXkgWSBoZXJlLiBOb3QgbmVjZXNzYXJ5IG9uIHN5c3RlbXMgdGhhdCBuZXZlclxuIDE3NzpcdFx0ICBuZWVkIGRlYnVnZ2luZyBvciBvbmx5IGV2ZXIgcnVuIGZsYXdsZXNzIGNvZGUuXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIEVYRUNfS1VOSVRfVEVTVFxuIDE4MDpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBleGVjdmUgdGVzdHNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuIDE4MTpcdFx0ZGVwZW5kcyBvbiBLVU5JVD15XG4gMTgyOlx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuIDE4MzpcdFx0aGVscFxuIDE4NDpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZXhlYyBLVW5pdCB0ZXN0cywgd2hpY2ggdGVzdHMgYm91bmRhcnkgY29uZGl0aW9uc1xuIDE4NTpcdFx0ICBvZiB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGV4ZWMgaW50ZXJuYWxzLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBUkNIX0hBU19FTEZfQ09SRV9FRkxBR1NcbiAxODg6XHRcdGJvb2xcbiAxODk6XHRcdGRlcGVuZHMgb24gQklORk1UX0VMRiBcdTAwMjZcdTAwMjYgRUxGX0NPUkVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIER1bXAgQmVoYXZpb3IqKgoKT2theSwgc28gdGhlIHN5c3RlbSYjMzk7cyBiZWhhdmluZyBhcyBpZiBjb3JlIGR1bXBzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuIFRoYXQmIzM5O3MgYSBsaXR0bGUgdW51c3VhbCwgYnV0IG5vdCBuZWNlc3NhcmlseSBhIHByb2JsZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgZXhhY3QgbWVjaGFuaXNtLiBNeSBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBzdHJhaWdodCB0byBgZnMvY29yZWR1bXAuY2AgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGBkb19jb3JlZHVtcGAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgZHVtcCBsb2dpYyBzaG91bGQgcmVzaWRlLCBhbmQgaXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGhvdyB0aGlzIGRlZmF1bHQgc2V0dGluZyBpcyBoYW5kbGVkLCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZCwgYW5kIGFueSByZWxldmFudCBpbnRlcmFjdGlvbnMgd2l0aCBzeXN0ZW0td2lkZSBzZXR0aW5ncy4gSXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIGFuIGV4cGxhbmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX2NvcmVkdW1wJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmM9NTA0PXN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4tLVxuZnMvY29yZWR1bXAuYy01MjYtICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcbmZzL2NvcmVkdW1wLmM6NTI3OiAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxuZnMvY29yZWR1bXAuYy01MjgtICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuXG4tLVxuZnMvY29yZWR1bXAuYz0xMDk5PXN0YXRpYyBpbmxpbmUgYm9vbCBjb3JlZHVtcF9za2lwKGNvbnN0IHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy0xMTEwLVxuZnMvY29yZWR1bXAuYzoxMTExOnN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxuZnMvY29yZWR1bXAuYy0xMTEyLVx0XHRcdHNpemVfdCAqKmFyZ3YsIGludCAqYXJnYywgY29uc3Qgc3RydWN0IGxpbnV4X2JpbmZtdCAqYmluZm10KVxuLS1cbmZzL2NvcmVkdW1wLmM9MTE4Mj12b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKVxuLS1cbmZzL2NvcmVkdW1wLmMtMTIyMC1cdHNjb3BlZF93aXRoX2NyZWRzKGNyZWQpXG5mcy9jb3JlZHVtcC5jOjEyMjE6XHRcdGRvX2NvcmVkdW1wKFx1MDAyNmNuLCBcdTAwMjZjcHJtLCBcdTAwMjZhcmd2LCBcdTAwMjZhcmdjLCBiaW5mbXQpO1xuZnMvY29yZWR1bXAuYy0xMjIyLVx0Y29yZWR1bXBfY2xlYW51cChcdTAwMjZjbiwgXHUwMDI2Y3BybSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgRmlsZSBTeXN0ZW0gQ29yZSBEdW1wIE1lY2hhbmlzbSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmaWxlIHN5c3RlbSYjMzk7cyBjb3JlIGR1bXAgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZSBlbnRyeSBwb2ludCB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzIGB2ZnNfY29yZWR1bXBgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBiZWdpbnMsIHRoZSBuZXh1cyBvZiB0aGUgY29yZSBkdW1wIHByb2Nlc3MgYXMgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHZpcnR1YWwgZmlsZSBzeXN0ZW0gbGF5ZXIuIE5hdHVyYWxseSwgSSBpbW1lZGlhdGVseSBzdGFydCBjb25zaWRlcmluZyBob3cgdGhlIFZpcnR1YWwgRmlsZSBTeXN0ZW0gbGF5ZXIgaW50ZXJhY3RzIHdpdGggdGhpcywgZ2l2ZW4gaXQmIzM5O3MgYSB2aXRhbCBmZWF0dXJlLgoKTm93LCBJJiMzOTttIGFsc28gcmVtZW1iZXJpbmcgdGhhdCBgX19mcHV0X2RlZmVycmVkYCBwbGF5cyBhIHJvbGUgaGVyZS4gSXQmIzM5O3Mgb2Z0ZW4gaW52b2x2ZWQgaW4gY2xlYW5pbmcgdXAgZmlsZSBkZXNjcmlwdG9yIHJlc291cmNlcywgYW5kIG1vZGlmaWNhdGlvbnMgdG8gaXQsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIGNvcmUgZHVtcHMsIHdvdWxkIGJlIGV4cGVjdGVkIGluIGEgdGhvcm91Z2ggaW1wbGVtZW50YXRpb24gb3Igb3B0aW1pemF0aW9uLiBUaGlzIHRlbGxzIG1lIHRoYXQgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgY2xlYW51cCBhcmUgcHJvYmFibHkgZGVlcGx5IGludGVncmF0ZWQgaW50byB0aGUgY29yZSBkdW1wIHByb2Nlc3MuIEkgbmVlZCB0byBrZWVwIHRoYXQgY29ubmVjdGlvbiBpbiBtaW5kIGFzIEkgZGVsdmUgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2ZwdXRfZGVmZXJyZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZmlsZV90YWJsZS5jPTU2MD1FWFBPUlRfU1lNQk9MX0dQTChmbHVzaF9kZWxheWVkX2ZwdXQpO1xuZnMvZmlsZV90YWJsZS5jLTU2MS1cbmZzL2ZpbGVfdGFibGUuYzo1NjI6c3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZmlsZV90YWJsZS5jLTU2My17XG4tLVxuZnMvZmlsZV90YWJsZS5jPTU5MT12b2lkIGZwdXQoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZmlsZV90YWJsZS5jLTU5My1cdGlmICh1bmxpa2VseShmaWxlX3JlZl9wdXQoXHUwMDI2ZmlsZS1cdTAwM2VmX3JlZikpKVxuZnMvZmlsZV90YWJsZS5jOjU5NDpcdFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xuZnMvZmlsZV90YWJsZS5jLTU5NS19XG4tLVxuZnMvZmlsZV90YWJsZS5jPTYzMT12b2lkIGZwdXRfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZmlsZV90YWJsZS5jLTYzMy1cdGlmIChmaWxlX3JlZl9wdXRfY2xvc2UoXHUwMDI2ZmlsZS1cdTAwM2VmX3JlZikpXG5mcy9maWxlX3RhYmxlLmM6NjM0Olx0XHRfX2ZwdXRfZGVmZXJyZWQoZmlsZSk7XG5mcy9maWxlX3RhYmxlLmMtNjM1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkzNgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsJiMzOTtzIENvcmVkdW1wIE1lY2hhbmlzbSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBjb3JlZHVtcHMgYXJlIGhhbmRsZWQsIGFuZCBpdCBzZWVtcyBsaWtlIGBmcHV0YCBhbmQgYGZwdXRfY2xvc2VgIGFyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciBgX19mcHV0X2RlZmVycmVkYC4gVGhlIGNvbm5lY3Rpb24gaXMgdGhyb3VnaCB0aGUgZmlsZSBkZXNjcmlwdG9yIGxpZmVjeWNsZSwgd2hpY2ggaXMgd2hlcmUgdGhpbmdzIHN0YXJ0IGdldHRpbmcgaW50ZXJlc3RpbmcuIFRoZW4sIGB2ZnNfY29yZWR1bXBgIGlzIHRoZSBnYXRla2VlcGVyIGZvciBgZG9fY29yZWR1bXBgLiBUaGF0IGdpdmVzIG1lIGEgcm9hZG1hcDogZmlsZSBkZXNjcmlwdG9yIG9wZXJhdGlvbnMgdHJpZ2dlcmluZyB0aGUgY29yZWR1bXAgcHJvY2Vzcy4gSXQmIzM5O3MgYSBjbGFzc2ljIHN5c3RlbSBjYWxsIGhhbmRsaW5nIHBhdHRlcm4uCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmUtZXhpdCBzdGFnZS4gVGltZSB0byBleGFtaW5lIGBjb3JlZHVtcF9wcmVfZXhpdGAgaW4gYGZzL2NvcmVkdW1wLmNgLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgdml0YWwgc2V0dXAgb3IgY2xlYW51cCB0aGVyZS4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBnZXQgdGhlIHJlYWwgbWVhdCBvZiB0aGUgcHJvY2Vzcy4gSSBpbWFnaW5lIGl0IGlzIHdoZXJlIHRoZSBwcmVwYXJhdGlvbiBvY2N1cnMgYmVmb3JlIHRoZSBhY3R1YWwgY29yZSBmaWxlIGdlbmVyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlZHVtcF9wcmVfZXhpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9jb3JlZHVtcC5jPTUwND1zdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxuLS1cbmZzL2NvcmVkdW1wLmMtNTI5LSAqL1xuZnMvY29yZWR1bXAuYzo1MzA6c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcbmZzL2NvcmVkdW1wLmMtNTMxLXtcbi0tXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy0xMTQ0LVxuZnMvY29yZWR1bXAuYzoxMTQ1Olx0Y29yZWR1bXBfcHJlX2V4aXQoKTtcbmZzL2NvcmVkdW1wLmMtMTE0Ni1cbi0tXG5mcy9maWxlX3RhYmxlLmM9NTYyPXN0YXRpYyB2b2lkIF9fZnB1dF9kZWZlcnJlZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9maWxlX3RhYmxlLmMtNTcxLVx0LypcbmZzL2ZpbGVfdGFibGUuYzo1NzI6XHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXG5mcy9maWxlX3RhYmxlLmMtNTczLVx0ICogQ2Fubm90IHVzZSB0YXNrX3dvcmsgaW4gdGhlIGNhc2UsIG5lZWRzIHRvIHJlbGVhc2UgZmlsZXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29yZSBEdW1wIFBhdGNoKioKCk9rYXksIHNvIHRoZSBtb3N0IGludGVyZXN0aW5nIGFzcGVjdHMgb2YgdGhpcyBwYXRjaCBzZWVtIHRvIHJldm9sdmUgYXJvdW5kIGB2ZnNfY29yZWR1bXBgIGFuZCBgZnB1dGAuIEkgaW5pdGlhbGx5IGdvdCBjb25mdXNlZCBhYm91dCBgX19mcHV0X2RlZmVycmVkYCBiZWluZyBzdGF0aWMsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgY3JpdGljYWwgcGF0aCBoZXJlOyBgZnB1dGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0JiMzOTtzIHdoYXQmIzM5O3MgaW1wb3J0YW50LgoKVGhlIHBhdGNoIGl0c2VsZiBhcHBlYXJzIHRvIG1vZGlmeSBgZnMvY29yZWR1bXAuY2AgYW5kIGBmcy9maWxlX3RhYmxlLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBhIG5ldyBiaXQgdG8gYGNvcmVkdW1wX2ZpbHRlcmAgd2hpY2ggaXMgbGlrZWx5IHRvIGNoYW5nZSBzb21lIGJlaGF2aW9yIGR1cmluZyBjb3JlIGR1bXBzLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgY291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmc7IGEgZnVuY3Rpb25hbCBjaGFuZ2UgbGlrZSB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlLgoKQmFzZWQgb24gdGhlIGNvZGUsIG15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYENPUkVEVU1QYCBjb25maWcgc2V0dGluZy4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgSSYjMzk7bGwga2VlcCBteSBmb2N1cyBvbiBgdmZzX2NvcmVkdW1wYCBhbmQgYGZwdXRgIHNwZWNpZmljYWxseS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUga2V5IGZ1bmN0aW9ucy4gSSBzZWUgYHZmc19jb3JlZHVtcGAgaXMgYSBwdWJsaWMgZnVuY3Rpb24sIGFuZCBzbyBpcyBgZnB1dGAuIEp1c3QgZG91YmxlLWNoZWNraW5nIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4aXRfZmlsZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY29yZWR1bXAuYz01MzA9c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcbi0tXG5mcy9jb3JlZHVtcC5jLTUzNy1cdGZvcl9lYWNoX3RocmVhZCh0c2ssIHQpIHtcbmZzL2NvcmVkdW1wLmM6NTM4Olx0XHRleGl0X2ZpbGVzKHQpO1xuZnMvY29yZWR1bXAuYy01MzktXHR9XG4tLVxuZnMvZmlsZS5jPTUwNj12b2lkIHB1dF9maWxlc19zdHJ1Y3Qoc3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXMpXG4tLVxuZnMvZmlsZS5jLTUxNy1cbmZzL2ZpbGUuYzo1MTg6dm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuZnMvZmlsZS5jLTUxOS17XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC90YXNrLmg9OTM9ZXh0ZXJuIF9fbm9yZXR1cm4gdm9pZCBkb19ncm91cF9leGl0KGludCk7XG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaC05NC1cbmluY2x1ZGUvbGludXgvc2NoZWQvdGFzay5oOjk1OmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICopO1xuaW5jbHVkZS9saW51eC9zY2hlZC90YXNrLmgtOTYtZXh0ZXJuIHZvaWQgZXhpdF9pdGltZXJzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTtcbi0tXG5rZXJuZWwvZXhpdC5jPTkyOT12b2lkIF9fbm9yZXR1cm4gZG9fZXhpdChsb25nIGNvZGUpXG4tLVxua2VybmVsL2V4aXQuYy0xMDAzLVx0ZXhpdF9zaG0odHNrKTtcbmtlcm5lbC9leGl0LmM6MTAwNDpcdGV4aXRfZmlsZXModHNrKTtcbmtlcm5lbC9leGl0LmMtMTAwNS1cdGV4aXRfZnModHNrKTtcbi0tXG5rZXJuZWwvZm9yay5jPTE5OTQ9X19sYXRlbnRfZW50cm9weSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNvcHlfcHJvY2Vzcyhcbi0tXG5rZXJuZWwvZm9yay5jLTI1OTUtYmFkX2ZvcmtfY2xlYW51cF9maWxlczpcbmtlcm5lbC9mb3JrLmM6MjU5NjpcdGV4aXRfZmlsZXMocCk7IC8qIGJsb2NraW5nICovXG5rZXJuZWwvZm9yay5jLTI1OTctYmFkX2ZvcmtfY2xlYW51cF9zZW11bmRvOlxuLS1cbmtlcm5lbC9waWQuYz04Nzk9c3RhdGljIHN0cnVjdCBmaWxlICpfX3BpZGZkX2ZnZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBpbnQgZmQpXG4tLVxua2VybmVsL3BpZC5jLTkwMS1cdFx0ICogMS4gYmVmb3JlIGV4aXRfc2lnbmFscygpLCB3aGljaCBnaXZlcyBhIHJlYWwgZmRcbmtlcm5lbC9waWQuYzo5MDI6XHRcdCAqIDIuIGJlZm9yZSBleGl0X2ZpbGVzKCkgdGFrZXMgdGhlIHRhc2tfbG9jaygpIGdpdmVzIGEgcmVhbCBmZFxua2VybmVsL3BpZC5jOjkwMzpcdFx0ICogMy4gYWZ0ZXIgZXhpdF9maWxlcygpIHJlbGVhc2VzIHRhc2tfbG9jaygpLCAtXHUwMDNlZmlsZXMgaXMgTlVMTDtcbmtlcm5lbC9waWQuYy05MDQtXHRcdCAqICAgIHRoaXMgaGFzIFBGX0VYSVRJTkcsIHNpbmNlIGl0IHdhcyBzZXQgaW4gZXhpdF9zaWduYWxzKCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcGlkZmQvcGlkZmRfZ2V0ZmRfdGVzdC5jPTI0ND1URVNUX0YoY2hpbGQsIG5vX3N0cmFuZ2VfRUJBREYpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcGlkZmQvcGlkZmRfZ2V0ZmRfdGVzdC5jLTI1Ny1cdCAqIEl0IHVzZWQgdG8gYmUgdGhhdCBwaWRmZF9nZXRmZCgpIGNvdWxkIHJhY2Ugd2l0aCB0aGUgZXhpdGluZyB0aHJlYWRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3BpZGZkL3BpZGZkX2dldGZkX3Rlc3QuYzoyNTg6XHQgKiBiZXR3ZWVuIGV4aXRfZmlsZXMoKSBhbmQgcmVsZWFzZV90YXNrKCksIGFuZCBnZXQgYSBub24tbnVsbCB0YXNrXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmMtMjU5LVx0ICogd2l0aCBhIE5VTEwgZmlsZXMgc3RydWN0LCBhbmQgeW91JiMzOTtkIGdldCBFQkFERiwgd2hpY2ggd2FzIHNsaWdodGx5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDMKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIENvcmUgRHVtcCBMb2dpYyBhbmQgRm9jdXMgU3ltYm9sIFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byByZWZpbmUgdGhlIGZ1enplciYjMzk7cyBmb2N1cy4gYGV4aXRfZmlsZXNgIGlzbiYjMzk7dCBhIHN0YXRpYyBjb25jZXB0LCB3aGljaCBvcGVucyB1cCBzb21lIHBvc3NpYmlsaXRpZXMuIFdlIGNhbiBpbmNsdWRlIGl0IGRpcmVjdGx5IHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyBhIHNvbGlkIGFkZGl0aW9uLgoKU28sIGxldCYjMzk7cyB1cGRhdGUgYEZvY3VzU3ltYm9sc2AgdG8gZXhwbGljaXRseSBpbmNsdWRlIGB2ZnNfY29yZWR1bXBgLCBgZnB1dGAsIGFuZCBub3cgYGV4aXRfZmlsZXNgLiBUaGUgZW5hYmxpbmcgY29uZmlnIHJlbWFpbnMgYENPUkVEVU1QYC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgY29yZSBkdW1wIG1lY2hhbmlzbSwgZW5hYmxpbmcgdGhlIGVhcmx5IHJlbGVhc2Ugb2YgZmlsZXMgdGhhdCBhcmVuJiMzOTt0IHRpZWQgdG8gYW55IFZpcnR1YWwgTWVtb3J5IEFyZWEgKFZNQSkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgc3BlY2lmaWNhbGx5IHdoZW4gYSBjZXJ0YWluIGJpdCBpc24mIzM5O3Qgc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGUgY2hhbmdlcyB0b3VjaCBgZG9fY29yZWR1bXBgLCB3aGljaCBpcyBpbnZva2VkIGJ5IGB2ZnNfY29yZWR1bXBgLCBhbmQgYF9fZnB1dF9kZWZlcnJlZGAsIHdoaWNoIGlzIGNhbGxlZCB0aHJvdWdoIGBmcHV0YC4gTWFrZXMgcGVyZmVjdCBzZW5zZSDigJMgdGhlIGZ1enppbmcgZWZmb3J0cyBuZWVkIHRvIGJlIGNlbnRlcmVkIG9uIHRob3NlIGNvcmUgZHVtcCBhbmQgZmlsZSByZWxlYXNlIHBhdGh3YXlzLgoKTm93LCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IGBDT1JFRFVNUGAgaXMgdGhlIHJpZ2h0IGVuYWJsaW5nIGNvbmZpZy4gTGV0JiMzOTtzIHNlZS4uLiBpdCYjMzk7cyBkZWZpbmVkIGFzIGBjb25maWcgQ09SRURVTVBgIGluIGBmcy9LY29uZmlnLmJpbmZtdGAuIEl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZGVwZW5kIG9uIGFueXRoaW5nIGRpcmVjdGx5LCB0aG91Z2ggYEJJTkZNVF9FTEZgIG9mdGVuIHNlbGVjdHMgaXQgb3IgZGVmYXVsdHMgaXQgdG8gJiMzOTt5JiMzOTsuIEFoLCBoZXJlIHdlIGdvLiBUaGUgcmVsZXZhbnQgc2VjdGlvbiBpbiBgZnMvS2NvbmZpZy5iaW5mbXRgIHJlYWRzOgoKYGBgCmNvbmZpZyBDT1JFRFVNUAoJYm9vbCAmIzM0O0VuYWJsZSBjb3JlIGR1bXAgc3VwcG9ydCYjMzQ7IGlmIEVYUEVSVAoJZGVmYXVsdCB5CmBgYAoKU28gYENPUkVEVU1QYCBzZWVtcyBzdWZmaWNpZW50LiBFeGNlbGxlbnQuIEkmIzM5O20gc2F0aXNmaWVkLiBOb3csIGxldCYjMzk7cyBnZXQgdGhhdCByZXNwb25zZSB3cml0dGVuIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09SRURVTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZnNfY29yZWR1bXAmIzM0OywKICAgICYjMzQ7ZnB1dCYjMzQ7LAogICAgJiMzNDtleGl0X2ZpbGVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgZWFybHkgcmVsZWFzZSBvZiBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BIGlmIGEgc3BlY2lmaWMgYml0IGluIGBjb3JlZHVtcF9maWx0ZXJgIGlzIG5vdCBzZXQuIFRoaXMgaW52b2x2ZXMgY2hhbmdlcyB0byBgZG9fY29yZWR1bXBgIChjYWxsZWQgYnkgYHZmc19jb3JlZHVtcGApIGFuZCBgX19mcHV0X2RlZmVycmVkYCAoY2FsbGVkIGJ5IGBmcHV0YCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvcmUgZHVtcGluZyBhbmQgZmlsZSByZWxlYXNlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT1JFRFVNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zmc19jb3JlZHVtcCYjMzQ7LAogICAgJiMzNDtmcHV0JiMzNDssCiAgICAmIzM0O2V4aXRfZmlsZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEgaWYgYSBzcGVjaWZpYyBiaXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAgaXMgbm90IHNldC4gVGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkb19jb3JlZHVtcGAgKGNhbGxlZCBieSBgdmZzX2NvcmVkdW1wYCkgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgIChjYWxsZWQgYnkgYGZwdXRgKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29yZSBkdW1waW5nIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoxMy4xNjM4Mjg5NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjE2Njc3NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCIsXG4gICAgXCJmcHV0XCIsXG4gICAgXCJleGl0X2ZpbGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEgaWYgYSBzcGVjaWZpYyBiaXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAgaXMgbm90IHNldC4gVGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkb19jb3JlZHVtcGAgKGNhbGxlZCBieSBgdmZzX2NvcmVkdW1wYCkgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgIChjYWxsZWQgYnkgYGZwdXRgKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29yZSBkdW1waW5nIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjEzLjE2MzgzNjY3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU4NTYzNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjJmOTE2YWVhODY5YWFkNWFlMmM1MzQ4ZWVmNjhjMjA0NjM1MWQ0OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDAxOjI2OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuaW5kZXggMjcxODlmNmUwMDRlZS4uY2UzMWE4YTkzYzdjOCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxcbkBAIC0xOTQxLDYgKzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XFxuICAgLSAoYml0IDYpIGh1Z2V0bGIgc2hhcmVkIG1lbW9yeVxcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcXG4gICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnlcXG4rICAtIChiaXQgOSkgZmQgbGlzdFxcbiBcXG4gICBOb3RlIHRoYXQgTU1JTyBwYWdlcyBzdWNoIGFzIGZyYW1lIGJ1ZmZlciBhcmUgbmV2ZXIgZHVtcGVkIGFuZCB2RFNPIHBhZ2VzXFxuICAgYXJlIGFsd2F5cyBkdW1wZWQgcmVnYXJkbGVzcyBvZiB0aGUgYml0bWFzayBzdGF0dXMuXFxuQEAgLTE5NDgsMTMgKzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxcbiAgIE5vdGUgdGhhdCBiaXRzIDAtNCBkb24ndCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpc1xcbiAgIG9ubHkgYWZmZWN0ZWQgYnkgYml0IDUtNiwgYW5kIERBWCBpcyBvbmx5IGFmZmVjdGVkIGJ5IGJpdHMgNy04LlxcbiBcXG4rICBOb3RlIHRoYXQgYml0IDkgaXMgc2V0IGJ5IGRlZmF1bHQgYmVjYXVzZSB0b29scyBsaWtlIHN5c3RlbWQtY29yZWR1bXAgZ29cXG4rICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieVxcbisgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXFxuKyAgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWQgYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoXFxuKyAgZWFybGllci5cXG4rXFxuK1RoZSBkZWZhdWx0IHZhbHVlIG9mIGNvcmVkdW1wX2ZpbHRlciBpcyAweDIzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxcbitzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLlxcbitcXG4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnlcXG4gc2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMgYW5kIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYXJlIGR1bXBlZC5cXG4gXFxuIElmIHlvdSBkb24ndCB3YW50IHRvIGR1bXAgYWxsIHNoYXJlZCBtZW1vcnkgc2VnbWVudHMgYXR0YWNoZWQgdG8gcGlkIDEyMzQsXFxuLXdyaXRlIDB4MzEgdG8gdGhlIHByb2Nlc3MncyBwcm9jIGZpbGU6Olxcbit3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XFxuIFxcbi0gICQgZWNobyAweDMxIFxcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcXG4rICAkIGVjaG8gMHgyMzEgXFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxcbiBcXG4gV2hlbiBhIG5ldyBwcm9jZXNzIGlzIGNyZWF0ZWQsIHRoZSBwcm9jZXNzIGluaGVyaXRzIHRoZSBiaXRtYXNrIHN0YXR1cyBmcm9tIGl0c1xcbiBwYXJlbnQuIEl0IGlzIHVzZWZ1bCB0byBzZXQgdXAgY29yZWR1bXBfZmlsdGVyIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLlxcbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xcbmluZGV4IGU2OGE3NmZmOTJhMzguLmQzNzhlNjljNjM2ZTIgMTAwNjQ0XFxuLS0tIGEvZnMvY29yZWR1bXAuY1xcbisrKyBiL2ZzL2NvcmVkdW1wLmNcXG5AQCAtNTIwLDYgKzUyMCwyNSBAQCBzdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxcbiBcXHRyZXR1cm4gbnI7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIElmIGRvIG5vdCBkdW1wIGZkIGxpc3QsIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUFcXG4rICogY2FuIGJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFRoZXJlZm9yZSwgc29tZSBmaWxlIHJlbGVhc2VcXG4rICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcXG4rICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuXFxuKyAqIHRha2VzIHNldmVyYWwgc2Vjb25kcyBvciBldmVuIGxvbmdlciB0byBleGVjdXRlLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcXG4re1xcbitcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQsICp0O1xcbitcXG4rXFx0aWYgKG1tX2ZsYWdzX3Rlc3QoTU1GX0RVTVBfRkRfTElTVCwgdHNrLVxcdTAwM2VtbSkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGZvcl9lYWNoX3RocmVhZCh0c2ssIHQpIHtcXG4rXFx0XFx0ZXhpdF9maWxlcyh0KTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgaW50IGNvcmVkdW1wX3dhaXQoaW50IGV4aXRfY29kZSwgc3RydWN0IGNvcmVfc3RhdGUgKmNvcmVfc3RhdGUpXFxuIHtcXG4gXFx0c3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50O1xcbkBAIC0xMTIzLDYgKzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcXG4gXFx0aWYgKGNuLVxcdTAwM2VtYXNrIFxcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xcbitcXG4gXFx0LyogZ2V0IHVzIGFuIHVuc2hhcmVkIGRlc2NyaXB0b3IgdGFibGU7IGFsbW9zdCBhbHdheXMgYSBuby1vcCAqL1xcbiBcXHQvKiBUaGUgY2VsbCBzcHVmcyBjb3JlZHVtcCBjb2RlIHJlYWRzIHRoZSBmaWxlIGRlc2NyaXB0b3IgdGFibGVzICovXFxuIFxcdGlmICh1bnNoYXJlX2ZpbGVzKCkpXFxuZGlmZiAtLWdpdCBhL2ZzL2ZpbGVfdGFibGUuYyBiL2ZzL2ZpbGVfdGFibGUuY1xcbmluZGV4IGM2OGI4YzBhNDA5N2EuLjAyZWU0ZThiMWNmZTggMTAwNjQ0XFxuLS0tIGEvZnMvZmlsZV90YWJsZS5jXFxuKysrIGIvZnMvZmlsZV90YWJsZS5jXFxuQEAgLTU2OCw3ICs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaWtlbHkoIWluX2ludGVycnVwdCgpIFxcdTAwMjZcXHUwMDI2ICEodGFzay1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcXG4rXFx0LypcXG4rXFx0ICogY29yZWR1bXBfcHJlX2V4aXQoKSBtYXkgcmVsZWFzZSBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlLlxcbitcXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xcbitcXHQgKiBlYXJsaWVyLlxcbitcXHQgKi9cXG4rXFx0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXFx1MDAyNlxcdTAwMjYgISh0YXNrLVxcdTAwM2VmbGFncyBcXHUwMDI2IChQRl9LVEhSRUFEIHwgUEZfRFVNUENPUkUpKSkpIHtcXG4gXFx0XFx0aW5pdF90YXNrX3dvcmsoXFx1MDAyNmZpbGUtXFx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XFxuIFxcdFxcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcXHUwMDI2ZmlsZS1cXHUwMDNlZl90YXNrX3dvcmssIFRXQV9SRVNVTUUpKVxcbiBcXHRcXHRcXHRyZXR1cm47XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaFxcbmluZGV4IGI1ZDRjZDNiMDY3YmYuLmEyN2ZmODhhOWFkOGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXFxuQEAgLTE5NDcsMTQgKzE5NDcsMTYgQEAgZW51bSB7XFxuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcXG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfUFJJVkFURVxcdDlcXG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXFx0MTBcXG4rI2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUXFx0MTFcXG4gXFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUXFx0TU1GX0RVTVBBQkxFX0JJVFNcXG4tI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1xcdDlcXG4rI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1xcdDEwXFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX01BU0sgXFxcXFxcbiBcXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcXHUwMDNjXFx1MDAzYyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpXFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcXFxcbiBcXHQoQklUKE1NRl9EVU1QX0FOT05fUFJJVkFURSkgfCBCSVQoTU1GX0RVTVBfQU5PTl9TSEFSRUQpIHwgXFxcXFxcbi1cXHQgQklUKE1NRl9EVU1QX0hVR0VUTEJfUFJJVkFURSkgfCBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGKVxcbitcXHQgKDEgXFx1MDAzY1xcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXFxcXG4rXFx0ICgxIFxcdTAwM2NcXHUwMDNjIE1NRl9EVU1QX0ZEX0xJU1QpKVxcbiBcXG4gI2lmZGVmIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSU1xcbiAjIGRlZmluZSBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGXFx0QklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoxNC41MjM0NzgzMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MjI1NzAxOTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT1JFRFVNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmc19jb3JlZHVtcFwiLFxuICAgIFwiZnB1dFwiLFxuICAgIFwiZXhpdF9maWxlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgZWFybHkgcmVsZWFzZSBvZiBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BIGlmIGEgc3BlY2lmaWMgYml0IGluIGBjb3JlZHVtcF9maWx0ZXJgIGlzIG5vdCBzZXQuIFRoaXMgaW52b2x2ZXMgY2hhbmdlcyB0byBgZG9fY29yZWR1bXBgIChjYWxsZWQgYnkgYHZmc19jb3JlZHVtcGApIGFuZCBgX19mcHV0X2RlZmVycmVkYCAoY2FsbGVkIGJ5IGBmcHV0YCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvcmUgZHVtcGluZyBhbmQgZmlsZSByZWxlYXNlIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MmY5MTZhZWE4NjlhYWQ1YWUyYzUzNDhlZWY2OGMyMDQ2MzUxZDQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwMToyNjoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5jZTMxYThhOTNjN2M4IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5NDEsNiArMTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnlcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxuKyAgLSAoYml0IDkpIGZkIGxpc3RcbiBcbiAgIE5vdGUgdGhhdCBNTUlPIHBhZ2VzIHN1Y2ggYXMgZnJhbWUgYnVmZmVyIGFyZSBuZXZlciBkdW1wZWQgYW5kIHZEU08gcGFnZXNcbiAgIGFyZSBhbHdheXMgZHVtcGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGJpdG1hc2sgc3RhdHVzLlxuQEAgLTE5NDgsMTMgKzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbid0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXG4gICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC5cbiBcbisgIE5vdGUgdGhhdCBiaXQgOSBpcyBzZXQgYnkgZGVmYXVsdCBiZWNhdXNlIHRvb2xzIGxpa2Ugc3lzdGVtZC1jb3JlZHVtcCBnb1xuKyAgdGhyb3VnaCB0aGUgZmRzLiBJZiB5b3UgZG8gbm90IHNldCBiaXQgOSwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnlcbisgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXG4rICBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZCBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2hcbisgIGVhcmxpZXIuXG4rXG4rVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MjMzOyB0aGlzIG1lYW5zIGFsbCBhbm9ueW1vdXMgbWVtb3J5XG4rc2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMsIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYW5kIGZkIGxpc3QgYXJlIGR1bXBlZC5cbitcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuXG4gXG4gSWYgeW91IGRvbid0IHdhbnQgdG8gZHVtcCBhbGwgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyBhdHRhY2hlZCB0byBwaWQgMTIzNCxcbi13cml0ZSAweDMxIHRvIHRoZSBwcm9jZXNzJ3MgcHJvYyBmaWxlOjpcbit3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XG4gXG4tICAkIGVjaG8gMHgzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbisgICQgZWNobyAweDIzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbiBcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXG4gcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy5cbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcbi0tLSBhL2ZzL2NvcmVkdW1wLmNcbisrKyBiL2ZzL2NvcmVkdW1wLmNcbkBAIC01MjAsNiArNTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4gXHRyZXR1cm4gbnI7XG4gfVxuIFxuKy8qXG4rICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxuKyAqIGNhbiBiZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBUaGVyZWZvcmUsIHNvbWUgZmlsZSByZWxlYXNlXG4rICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcbisgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cbisgKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbisgKi9cbitzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxuK3tcbitcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7XG4rXG4rXHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXHUwMDNlbW0pKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XG4rXHRcdGV4aXRfZmlsZXModCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgY29yZWR1bXBfd2FpdChpbnQgZXhpdF9jb2RlLCBzdHJ1Y3QgY29yZV9zdGF0ZSAqY29yZV9zdGF0ZSlcbiB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7XG5AQCAtMTEyMyw2ICsxMTQyLDggQEAgc3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4gXHRpZiAoY24tXHUwMDNlbWFzayBcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xuK1xuIFx0LyogZ2V0IHVzIGFuIHVuc2hhcmVkIGRlc2NyaXB0b3IgdGFibGU7IGFsbW9zdCBhbHdheXMgYSBuby1vcCAqL1xuIFx0LyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqL1xuIFx0aWYgKHVuc2hhcmVfZmlsZXMoKSlcbmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmNcbmluZGV4IGM2OGI4YzBhNDA5N2EuLjAyZWU0ZThiMWNmZTggMTAwNjQ0XG4tLS0gYS9mcy9maWxlX3RhYmxlLmNcbisrKyBiL2ZzL2ZpbGVfdGFibGUuY1xuQEAgLTU2OCw3ICs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcbitcdC8qXG4rXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXG4rXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xuK1x0ICogZWFybGllci5cbitcdCAqL1xuK1x0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXHUwMDI2XHUwMDI2ICEodGFzay1cdTAwM2VmbGFncyBcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xuIFx0XHRpbml0X3Rhc2tfd29yayhcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XG4gXHRcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBUV0FfUkVTVU1FKSlcbiBcdFx0XHRyZXR1cm47XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG5pbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbkBAIC0xOTQ3LDE0ICsxOTQ3LDE2IEBAIGVudW0ge1xuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXHQ5XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXHQxMFxuKyNkZWZpbmUgTU1GX0RVTVBfRkRfTElTVFx0MTFcbiBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9TSElGVFx0TU1GX0RVTVBBQkxFX0JJVFNcbi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXHQ5XG4rI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0MTBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFxcXG4gXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRklMVEVSX1NISUZUKVxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcbiBcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxuLVx0IEJJVChNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRilcbitcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXG4rXHQgKDEgXHUwMDNjXHUwMDNjIE1NRl9EVU1QX0ZEX0xJU1QpKVxuIFxuICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlNcbiAjIGRlZmluZSBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGXHRCSVQoTU1GX0RVTVBfRUxGX0hFQURFUlMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoxNC41MjM0ODA2NjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTU4MzEzNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvcmVkdW1wIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvcmUgb2YgaXQgaXMgYSBjaGFuZ2UgdG8gaG93IGNvcmVkdW1wcyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmaWxlIGRlc2NyaXB0b3JzLiBJdCBzZWVtcyB3ZSdyZSBhZGRpbmcgYSBuZXcgYml0LCBgTU1GX0RVTVBfRkRfTElTVGAgKGJpdCA5KSwgdG8gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGUgY3J1Y2lhbCBiZWhhdmlvciBpcyB0aGlzOiBpZiB0aGF0IGJpdCAqaXNuJ3QqIHNldCwgYGNvcmVkdW1wX3ByZV9leGl0KClgIGdldHMgY2FsbGVkIHdpdGhpbiBgZG9fY29yZWR1bXAoKWAuIEFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgZXhpdF9maWxlcyh0KWAgZm9yIGVhY2ggdGhyZWFkLiBFc3NlbnRpYWxseSwgd2UgYXJlIGNsb3NpbmcgZmlsZXMgb24gY29yZSBkdW1wICh1bmxlc3MgdGhlIGJpdCBpcyBzZXQpLiBGdXJ0aGVybW9yZSwgdGhlIHBhdGNoIHNlZW1zIHRvIG9wdGltaXplIGZpbGUgY2xvc3VyZSBkdXJpbmcgY29yZSBkdW1wcyBieSBtb2RpZnlpbmcgYF9fZnB1dF9kZWZlcnJlZCgpYCwgc2tpcHBpbmcgYHRhc2tfd29ya2AgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIHRvIHJlbGVhc2UgdGhlIGZpbGVzIGZhc3Rlci5cblxuVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiBMZXQncyBzZWUuLi4gWWVzLCB0aGUgcGF0Y2ggKmRvZXMqIHRvdWNoIGBkb19jb3JlZHVtcGAgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgLCB3aGljaCBpcyBwcm9taXNpbmcuIFRoZSBjb250cm9sIGlzIHZpYSB0aGUgYC9wcm9jL3BpZC9jb3JlZHVtcF9maWx0ZXJgIGZpbGUsIHNvIHRoYXQncyBob3cgd2UncmUgZW5hYmxpbmcgYW5kIGRpc2FibGluZyB0aGlzIGJlaGF2aW9yLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IGZ1enppbmcgdGFyZ2V0cy4gR2l2ZW4gdGhlIGNoYW5nZXMsIGBkb19jb3JlZHVtcGAgaXMgZGVmaW5pdGVseSBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LiBgY29yZWR1bXBfcHJlX2V4aXRgIGlzIGFsc28gaW4gdGhlIGNyb3NzaGFpcnMsIGV2ZW4gaWYgaXQgbWlnaHQgYmUgc3RhdGljIG9yIGlubGluZWQ7IGl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGRvX2NvcmVkdW1wYCwgc28gd2UnbGwgbmVlZCB0byBhY2NvdW50IGZvciBpdC4gRmluYWxseSwgYF9fZnB1dF9kZWZlcnJlZGAgYmVjYXVzZSBpdCBpcyBtb2RpZmllZC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIGxpa2VseSBleHBvc2UgdGhlIGNoYW5nZWQgYmVoYXZpb3VyLlxuXG5BbmQsIGZpbmFsbHksIGxldCdzIG1ha2Ugc3VyZSB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgYXQgYWxsISBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0NPUkVEVU1QYCBpcyBzZXQgYXMgYW4gb3B0aW9uIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgY2hlY2sgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjIwLjY4MTc5NjM5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkzODE3NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT1JFRFVNUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNzAtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoyMy4wNzU2MTg2NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc0ODgxODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIENvcmUgRHVtcHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBjb3JlIGR1bXBzIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbnN0aW5jdHMgdGVsbCBtZSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBtaWdodCBiZSBkZWZpbmVkIGluIHRoZSBgZnMvS2NvbmZpZy5iaW5mbXRgIGZpbGUuIEl0J3MgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiB0aGUgYmluYXJ5IGZvcm1hdCBjb25uZWN0aW9uLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrOyBzbywgSSBhbSBjaGVja2luZyBmb3IgdGhlIGBDT1JFRFVNUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuIEkgYmV0IGl0IGhhcyB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDE6MjY6MjUuOTUwNTA2OTczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcbiAxNzE6XFx0Y29uZmlnIENPUkVEVU1QXFxuIDE3MjpcXHRcXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbiAxNzM6XFx0XFx0ZGVmYXVsdCB5XFxuIDE3NDpcXHRcXHRoZWxwXFxuIDE3NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgcGVyZm9ybWluZyBjb3JlIGR1bXBzLiBZb3UgYWxtb3N0XFxuIDE3NjpcXHRcXHQgIGNlcnRhaW5seSB3YW50IHRvIHNheSBZIGhlcmUuIE5vdCBuZWNlc3Nhcnkgb24gc3lzdGVtcyB0aGF0IG5ldmVyXFxuIDE3NzpcXHRcXHQgIG5lZWQgZGVidWdnaW5nIG9yIG9ubHkgZXZlciBydW4gZmxhd2xlc3MgY29kZS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIEVYRUNfS1VOSVRfVEVTVFxcbiAxODA6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZXhlY3ZlIHRlc3RzXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuIDE4MTpcXHRcXHRkZXBlbmRzIG9uIEtVTklUPXlcXG4gMTgyOlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuIDE4MzpcXHRcXHRoZWxwXFxuIDE4NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBleGVjIEtVbml0IHRlc3RzLCB3aGljaCB0ZXN0cyBib3VuZGFyeSBjb25kaXRpb25zXFxuIDE4NTpcXHRcXHQgIG9mIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgZXhlYyBpbnRlcm5hbHMuXFxuIDE4NjpcXHRcXG4gMTg3OlxcdGNvbmZpZyBBUkNIX0hBU19FTEZfQ09SRV9FRkxBR1NcXG4gMTg4OlxcdFxcdGJvb2xcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQklORk1UX0VMRiBcXHUwMDI2XFx1MDAyNiBFTEZfQ09SRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjoyNS45NTA2MDk3NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc4OTA2OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvcmUgRHVtcCBCZWhhdmlvcioqXG5cbk9rYXksIHNvIHRoZSBzeXN0ZW0ncyBiZWhhdmluZyBhcyBpZiBjb3JlIGR1bXBzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgcHJvYmxlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGlzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pc20uIE15IG5leHQgc3RlcCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIGBmcy9jb3JlZHVtcC5jYCBpbiB0aGUga2VybmVsIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgZG9fY29yZWR1bXBgIGZ1bmN0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgZHVtcCBsb2dpYyBzaG91bGQgcmVzaWRlLCBhbmQgaXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGhvdyB0aGlzIGRlZmF1bHQgc2V0dGluZyBpcyBoYW5kbGVkLCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZCwgYW5kIGFueSByZWxldmFudCBpbnRlcmFjdGlvbnMgd2l0aCBzeXN0ZW0td2lkZSBzZXR0aW5ncy4gSXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBmb3IgYW4gZXhwbGFuYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjI4LjgyOTUyMTMzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkxMDkzOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2NvcmVkdW1wXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9NTA0PXN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTUyNi0gKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxcbmZzL2NvcmVkdW1wLmM6NTI3OiAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxcbmZzL2NvcmVkdW1wLmMtNTI4LSAqIHRha2VzIHNldmVyYWwgc2Vjb25kcyBvciBldmVuIGxvbmdlciB0byBleGVjdXRlLlxcbi0tXFxuZnMvY29yZWR1bXAuYz0xMDk5PXN0YXRpYyBpbmxpbmUgYm9vbCBjb3JlZHVtcF9za2lwKGNvbnN0IHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExMTAtXFxuZnMvY29yZWR1bXAuYzoxMTExOnN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbmZzL2NvcmVkdW1wLmMtMTExMi1cXHRcXHRcXHRzaXplX3QgKiphcmd2LCBpbnQgKmFyZ2MsIGNvbnN0IHN0cnVjdCBsaW51eF9iaW5mbXQgKmJpbmZtdClcXG4tLVxcbmZzL2NvcmVkdW1wLmM9MTE4Mj12b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKVxcbi0tXFxuZnMvY29yZWR1bXAuYy0xMjIwLVxcdHNjb3BlZF93aXRoX2NyZWRzKGNyZWQpXFxuZnMvY29yZWR1bXAuYzoxMjIxOlxcdFxcdGRvX2NvcmVkdW1wKFxcdTAwMjZjbiwgXFx1MDAyNmNwcm0sIFxcdTAwMjZhcmd2LCBcXHUwMDI2YXJnYywgYmluZm10KTtcXG5mcy9jb3JlZHVtcC5jLTEyMjItXFx0Y29yZWR1bXBfY2xlYW51cChcXHUwMDI2Y24sIFxcdTAwMjZjcHJtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDE6MjY6MzEuMjIwNjMzMTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNTM1MDc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIEZpbGUgU3lzdGVtIENvcmUgRHVtcCBNZWNoYW5pc20qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZpbGUgc3lzdGVtJ3MgY29yZSBkdW1wIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpcyBgdmZzX2NvcmVkdW1wYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBiZWdpbnMsIHRoZSBuZXh1cyBvZiB0aGUgY29yZSBkdW1wIHByb2Nlc3MgYXMgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHZpcnR1YWwgZmlsZSBzeXN0ZW0gbGF5ZXIuIE5hdHVyYWxseSwgSSBpbW1lZGlhdGVseSBzdGFydCBjb25zaWRlcmluZyBob3cgdGhlIFZpcnR1YWwgRmlsZSBTeXN0ZW0gbGF5ZXIgaW50ZXJhY3RzIHdpdGggdGhpcywgZ2l2ZW4gaXQncyBhIHZpdGFsIGZlYXR1cmUuXG5cbk5vdywgSSdtIGFsc28gcmVtZW1iZXJpbmcgdGhhdCBgX19mcHV0X2RlZmVycmVkYCBwbGF5cyBhIHJvbGUgaGVyZS4gSXQncyBvZnRlbiBpbnZvbHZlZCBpbiBjbGVhbmluZyB1cCBmaWxlIGRlc2NyaXB0b3IgcmVzb3VyY2VzLCBhbmQgbW9kaWZpY2F0aW9ucyB0byBpdCwgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gY29yZSBkdW1wcywgd291bGQgYmUgZXhwZWN0ZWQgaW4gYSB0aG9yb3VnaCBpbXBsZW1lbnRhdGlvbiBvciBvcHRpbWl6YXRpb24uIFRoaXMgdGVsbHMgbWUgdGhhdCByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwIGFyZSBwcm9iYWJseSBkZWVwbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBjb3JlIGR1bXAgcHJvY2Vzcy4gSSBuZWVkIHRvIGtlZXAgdGhhdCBjb25uZWN0aW9uIGluIG1pbmQgYXMgSSBkZWx2ZSBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjozNC42NTU5ODY4ODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTY1OTE3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19mcHV0X2RlZmVycmVkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2ZpbGVfdGFibGUuYz01NjA9RVhQT1JUX1NZTUJPTF9HUEwoZmx1c2hfZGVsYXllZF9mcHV0KTtcXG5mcy9maWxlX3RhYmxlLmMtNTYxLVxcbmZzL2ZpbGVfdGFibGUuYzo1NjI6c3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2ZpbGVfdGFibGUuYy01NjMte1xcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTU5MT12b2lkIGZwdXQoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNTkzLVxcdGlmICh1bmxpa2VseShmaWxlX3JlZl9wdXQoXFx1MDAyNmZpbGUtXFx1MDAzZWZfcmVmKSkpXFxuZnMvZmlsZV90YWJsZS5jOjU5NDpcXHRcXHRfX2ZwdXRfZGVmZXJyZWQoZmlsZSk7XFxuZnMvZmlsZV90YWJsZS5jLTU5NS19XFxuLS1cXG5mcy9maWxlX3RhYmxlLmM9NjMxPXZvaWQgZnB1dF9jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2ZpbGVfdGFibGUuYy02MzMtXFx0aWYgKGZpbGVfcmVmX3B1dF9jbG9zZShcXHUwMDI2ZmlsZS1cXHUwMDNlZl9yZWYpKVxcbmZzL2ZpbGVfdGFibGUuYzo2MzQ6XFx0XFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xcbmZzL2ZpbGVfdGFibGUuYy02MzUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjozNi45NTI1ODUwNjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NDk3MDk5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBDb3JlZHVtcCBNZWNoYW5pc20qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGNvcmVkdW1wcyBhcmUgaGFuZGxlZCwgYW5kIGl0IHNlZW1zIGxpa2UgYGZwdXRgIGFuZCBgZnB1dF9jbG9zZWAgYXJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgZm9yIGBfX2ZwdXRfZGVmZXJyZWRgLiBUaGUgY29ubmVjdGlvbiBpcyB0aHJvdWdoIHRoZSBmaWxlIGRlc2NyaXB0b3IgbGlmZWN5Y2xlLCB3aGljaCBpcyB3aGVyZSB0aGluZ3Mgc3RhcnQgZ2V0dGluZyBpbnRlcmVzdGluZy4gVGhlbiwgYHZmc19jb3JlZHVtcGAgaXMgdGhlIGdhdGVrZWVwZXIgZm9yIGBkb19jb3JlZHVtcGAuIFRoYXQgZ2l2ZXMgbWUgYSByb2FkbWFwOiBmaWxlIGRlc2NyaXB0b3Igb3BlcmF0aW9ucyB0cmlnZ2VyaW5nIHRoZSBjb3JlZHVtcCBwcm9jZXNzLiBJdCdzIGEgY2xhc3NpYyBzeXN0ZW0gY2FsbCBoYW5kbGluZyBwYXR0ZXJuLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmUtZXhpdCBzdGFnZS4gVGltZSB0byBleGFtaW5lIGBjb3JlZHVtcF9wcmVfZXhpdGAgaW4gYGZzL2NvcmVkdW1wLmNgLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgdml0YWwgc2V0dXAgb3IgY2xlYW51cCB0aGVyZS4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCB0aGUgcmVhbCBtZWF0IG9mIHRoZSBwcm9jZXNzLiBJIGltYWdpbmUgaXQgaXMgd2hlcmUgdGhlIHByZXBhcmF0aW9uIG9jY3VycyBiZWZvcmUgdGhlIGFjdHVhbCBjb3JlIGZpbGUgZ2VuZXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkzNiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjQwLjMwNzU1OTQ2M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDY0MjU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb3JlZHVtcF9wcmVfZXhpdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jb3JlZHVtcC5jPTUwND1zdGF0aWMgaW50IHphcF90aHJlYWRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLFxcbi0tXFxuZnMvY29yZWR1bXAuYy01MjktICovXFxuZnMvY29yZWR1bXAuYzo1MzA6c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZClcXG5mcy9jb3JlZHVtcC5jLTUzMS17XFxuLS1cXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExNDQtXFxuZnMvY29yZWR1bXAuYzoxMTQ1OlxcdGNvcmVkdW1wX3ByZV9leGl0KCk7XFxuZnMvY29yZWR1bXAuYy0xMTQ2LVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTU2Mj1zdGF0aWMgdm9pZCBfX2ZwdXRfZGVmZXJyZWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNTcxLVxcdC8qXFxuZnMvZmlsZV90YWJsZS5jOjU3MjpcXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXFxuZnMvZmlsZV90YWJsZS5jLTU3My1cXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjo0My4wNzIyMTMwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAwODg0NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBDb3JlIER1bXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgbW9zdCBpbnRlcmVzdGluZyBhc3BlY3RzIG9mIHRoaXMgcGF0Y2ggc2VlbSB0byByZXZvbHZlIGFyb3VuZCBgdmZzX2NvcmVkdW1wYCBhbmQgYGZwdXRgLiBJIGluaXRpYWxseSBnb3QgY29uZnVzZWQgYWJvdXQgYF9fZnB1dF9kZWZlcnJlZGAgYmVpbmcgc3RhdGljLCBidXQgdGhhdCdzIG5vdCB0aGUgY3JpdGljYWwgcGF0aCBoZXJlOyBgZnB1dGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0J3Mgd2hhdCdzIGltcG9ydGFudC5cblxuVGhlIHBhdGNoIGl0c2VsZiBhcHBlYXJzIHRvIG1vZGlmeSBgZnMvY29yZWR1bXAuY2AgYW5kIGBmcy9maWxlX3RhYmxlLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgbmV3IGJpdCB0byBgY29yZWR1bXBfZmlsdGVyYCB3aGljaCBpcyBsaWtlbHkgdG8gY2hhbmdlIHNvbWUgYmVoYXZpb3IgZHVyaW5nIGNvcmUgZHVtcHMuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZW5lZml0IGZyb20gZnV6emluZzsgYSBmdW5jdGlvbmFsIGNoYW5nZSBsaWtlIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUuXG5cbkJhc2VkIG9uIHRoZSBjb2RlLCBteSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBDT1JFRFVNUGAgY29uZmlnIHNldHRpbmcuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIEknbGwga2VlcCBteSBmb2N1cyBvbiBgdmZzX2NvcmVkdW1wYCBhbmQgYGZwdXRgIHNwZWNpZmljYWxseS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGtleSBmdW5jdGlvbnMuIEkgc2VlIGB2ZnNfY29yZWR1bXBgIGlzIGEgcHVibGljIGZ1bmN0aW9uLCBhbmQgc28gaXMgYGZwdXRgLiBKdXN0IGRvdWJsZS1jaGVja2luZyB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTEyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjQ3Ljg3MzA5OTcyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwMTExNTIyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleGl0X2ZpbGVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9NTMwPXN0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTUzNy1cXHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XFxuZnMvY29yZWR1bXAuYzo1Mzg6XFx0XFx0ZXhpdF9maWxlcyh0KTtcXG5mcy9jb3JlZHVtcC5jLTUzOS1cXHR9XFxuLS1cXG5mcy9maWxlLmM9NTA2PXZvaWQgcHV0X2ZpbGVzX3N0cnVjdChzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcylcXG4tLVxcbmZzL2ZpbGUuYy01MTctXFxuZnMvZmlsZS5jOjUxODp2b2lkIGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuZnMvZmlsZS5jLTUxOS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaD05Mz1leHRlcm4gX19ub3JldHVybiB2b2lkIGRvX2dyb3VwX2V4aXQoaW50KTtcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaC05NC1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaDo5NTpleHRlcm4gdm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTtcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3Rhc2suaC05Ni1leHRlcm4gdm9pZCBleGl0X2l0aW1lcnMoc3RydWN0IHRhc2tfc3RydWN0ICopO1xcbi0tXFxua2VybmVsL2V4aXQuYz05Mjk9dm9pZCBfX25vcmV0dXJuIGRvX2V4aXQobG9uZyBjb2RlKVxcbi0tXFxua2VybmVsL2V4aXQuYy0xMDAzLVxcdGV4aXRfc2htKHRzayk7XFxua2VybmVsL2V4aXQuYzoxMDA0OlxcdGV4aXRfZmlsZXModHNrKTtcXG5rZXJuZWwvZXhpdC5jLTEwMDUtXFx0ZXhpdF9mcyh0c2spO1xcbi0tXFxua2VybmVsL2ZvcmsuYz0xOTk0PV9fbGF0ZW50X2VudHJvcHkgc3RydWN0IHRhc2tfc3RydWN0ICpjb3B5X3Byb2Nlc3MoXFxuLS1cXG5rZXJuZWwvZm9yay5jLTI1OTUtYmFkX2ZvcmtfY2xlYW51cF9maWxlczpcXG5rZXJuZWwvZm9yay5jOjI1OTY6XFx0ZXhpdF9maWxlcyhwKTsgLyogYmxvY2tpbmcgKi9cXG5rZXJuZWwvZm9yay5jLTI1OTctYmFkX2ZvcmtfY2xlYW51cF9zZW11bmRvOlxcbi0tXFxua2VybmVsL3BpZC5jPTg3OT1zdGF0aWMgc3RydWN0IGZpbGUgKl9fcGlkZmRfZmdldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGludCBmZClcXG4tLVxcbmtlcm5lbC9waWQuYy05MDEtXFx0XFx0ICogMS4gYmVmb3JlIGV4aXRfc2lnbmFscygpLCB3aGljaCBnaXZlcyBhIHJlYWwgZmRcXG5rZXJuZWwvcGlkLmM6OTAyOlxcdFxcdCAqIDIuIGJlZm9yZSBleGl0X2ZpbGVzKCkgdGFrZXMgdGhlIHRhc2tfbG9jaygpIGdpdmVzIGEgcmVhbCBmZFxcbmtlcm5lbC9waWQuYzo5MDM6XFx0XFx0ICogMy4gYWZ0ZXIgZXhpdF9maWxlcygpIHJlbGVhc2VzIHRhc2tfbG9jaygpLCAtXFx1MDAzZWZpbGVzIGlzIE5VTEw7XFxua2VybmVsL3BpZC5jLTkwNC1cXHRcXHQgKiAgICB0aGlzIGhhcyBQRl9FWElUSU5HLCBzaW5jZSBpdCB3YXMgc2V0IGluIGV4aXRfc2lnbmFscygpLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcGlkZmQvcGlkZmRfZ2V0ZmRfdGVzdC5jPTI0ND1URVNUX0YoY2hpbGQsIG5vX3N0cmFuZ2VfRUJBREYpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmMtMjU3LVxcdCAqIEl0IHVzZWQgdG8gYmUgdGhhdCBwaWRmZF9nZXRmZCgpIGNvdWxkIHJhY2Ugd2l0aCB0aGUgZXhpdGluZyB0aHJlYWRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmM6MjU4OlxcdCAqIGJldHdlZW4gZXhpdF9maWxlcygpIGFuZCByZWxlYXNlX3Rhc2soKSwgYW5kIGdldCBhIG5vbi1udWxsIHRhc2tcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRmZC9waWRmZF9nZXRmZF90ZXN0LmMtMjU5LVxcdCAqIHdpdGggYSBOVUxMIGZpbGVzIHN0cnVjdCwgYW5kIHlvdSdkIGdldCBFQkFERiwgd2hpY2ggd2FzIHNsaWdodGx5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAxOjI2OjUwLjI3NDIyMTI0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzcwODExNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIENvcmUgRHVtcCBMb2dpYyBhbmQgRm9jdXMgU3ltYm9sIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gcmVmaW5lIHRoZSBmdXp6ZXIncyBmb2N1cy4gYGV4aXRfZmlsZXNgIGlzbid0IGEgc3RhdGljIGNvbmNlcHQsIHdoaWNoIG9wZW5zIHVwIHNvbWUgcG9zc2liaWxpdGllcy4gV2UgY2FuIGluY2x1ZGUgaXQgZGlyZWN0bHkgd2l0aGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBzb2xpZCBhZGRpdGlvbi5cblxuU28sIGxldCdzIHVwZGF0ZSBgRm9jdXNTeW1ib2xzYCB0byBleHBsaWNpdGx5IGluY2x1ZGUgYHZmc19jb3JlZHVtcGAsIGBmcHV0YCwgYW5kIG5vdyBgZXhpdF9maWxlc2AuIFRoZSBlbmFibGluZyBjb25maWcgcmVtYWlucyBgQ09SRURVTVBgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhci4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGNvcmUgZHVtcCBtZWNoYW5pc20sIGVuYWJsaW5nIHRoZSBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlbid0IHRpZWQgdG8gYW55IFZpcnR1YWwgTWVtb3J5IEFyZWEgKFZNQSkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucywgc3BlY2lmaWNhbGx5IHdoZW4gYSBjZXJ0YWluIGJpdCBpc24ndCBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIFRoZSBjaGFuZ2VzIHRvdWNoIGBkb19jb3JlZHVtcGAsIHdoaWNoIGlzIGludm9rZWQgYnkgYHZmc19jb3JlZHVtcGAsIGFuZCBgX19mcHV0X2RlZmVycmVkYCwgd2hpY2ggaXMgY2FsbGVkIHRocm91Z2ggYGZwdXRgLiBNYWtlcyBwZXJmZWN0IHNlbnNlIOKAkyB0aGUgZnV6emluZyBlZmZvcnRzIG5lZWQgdG8gYmUgY2VudGVyZWQgb24gdGhvc2UgY29yZSBkdW1wIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHdheXMuXG5cbk5vdywganVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4sIGxldCdzIHZlcmlmeSB0aGF0IGBDT1JFRFVNUGAgaXMgdGhlIHJpZ2h0IGVuYWJsaW5nIGNvbmZpZy4gTGV0J3Mgc2VlLi4uIGl0J3MgZGVmaW5lZCBhcyBgY29uZmlnIENPUkVEVU1QYCBpbiBgZnMvS2NvbmZpZy5iaW5mbXRgLiBJdCBkb2Vzbid0IHNlZW0gdG8gZGVwZW5kIG9uIGFueXRoaW5nIGRpcmVjdGx5LCB0aG91Z2ggYEJJTkZNVF9FTEZgIG9mdGVuIHNlbGVjdHMgaXQgb3IgZGVmYXVsdHMgaXQgdG8gJ3knLiBBaCwgaGVyZSB3ZSBnby4gVGhlIHJlbGV2YW50IHNlY3Rpb24gaW4gYGZzL0tjb25maWcuYmluZm10YCByZWFkczpcblxuYGBgXG5jb25maWcgQ09SRURVTVBcblx0Ym9vbCBcIkVuYWJsZSBjb3JlIGR1bXAgc3VwcG9ydFwiIGlmIEVYUEVSVFxuXHRkZWZhdWx0IHlcbmBgYFxuXG5TbyBgQ09SRURVTVBgIHNlZW1zIHN1ZmZpY2llbnQuIEV4Y2VsbGVudC4gSSdtIHNhdGlzZmllZC4gTm93LCBsZXQncyBnZXQgdGhhdCByZXNwb25zZSB3cml0dGVuIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODAzLCJPdXRwdXRUb2tlbnMiOjEzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMToyNjo1Ni42NDUwMzY3NzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU0NTc0MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCIsXG4gICAgXCJmcHV0XCIsXG4gICAgXCJleGl0X2ZpbGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyBlYXJseSByZWxlYXNlIG9mIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEgaWYgYSBzcGVjaWZpYyBiaXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAgaXMgbm90IHNldC4gVGhpcyBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkb19jb3JlZHVtcGAgKGNhbGxlZCBieSBgdmZzX2NvcmVkdW1wYCkgYW5kIGBfX2ZwdXRfZGVmZXJyZWRgIChjYWxsZWQgYnkgYGZwdXRgKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29yZSBkdW1waW5nIGFuZCBmaWxlIHJlbGVhc2UgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09SRURVTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZnNfY29yZWR1bXBcIixcbiAgICBcImZwdXRcIixcbiAgICBcImV4aXRfZmlsZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IGVhcmx5IHJlbGVhc2Ugb2YgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQSBpZiBhIHNwZWNpZmljIGJpdCBpbiBgY29yZWR1bXBfZmlsdGVyYCBpcyBub3Qgc2V0LiBUaGlzIGludm9sdmVzIGNoYW5nZXMgdG8gYGRvX2NvcmVkdW1wYCAoY2FsbGVkIGJ5IGB2ZnNfY29yZWR1bXBgKSBhbmQgYF9fZnB1dF9kZWZlcnJlZGAgKGNhbGxlZCBieSBgZnB1dGApLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb3JlIGR1bXBpbmcgYW5kIGZpbGUgcmVsZWFzZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowm8wrr[1] Phase: Succeeded StartedAt: 2026-08-04 01:27:08 +0000 UTC FinishedAt: 2026-08-04 01:27:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 01:27:08 +0000 UTC FinishedAt: 2026-08-04 01:27:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2] Phase: Succeeded StartedAt: 2026-08-04 01:27:08 +0000 UTC FinishedAt: 2026-08-04 05:09:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 01:27:08 +0000 UTC FinishedAt: 2026-08-04 05:09:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 01:27:08 +0000 UTC FinishedAt: 2026-08-04 01:27:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 01:27:08 +0000 UTC FinishedAt: 2026-08-04 01:27:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowm8wrr/series-workflowm8wrr-convert-artifact-132514936/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 01:27:18 +0000 UTC FinishedAt: 2026-08-04 01:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 01:27:18 +0000 UTC FinishedAt: 2026-08-04 01:45:14 +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:*d90b5b64-11c0-40bf-b44e-1c6dd336a0a7,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-workflowm8wrr/series-workflowm8wrr-convert-artifact-132514936/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": "94080350-0585-4f36-9480-73460e85ede2", "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-workflowm8wrr/series-workflowm8wrr-build-action-3764111662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 01:27:18 +0000 UTC FinishedAt: 2026-08-04 01:45:04 +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:*d90b5b64-11c0-40bf-b44e-1c6dd336a0a7,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-workflowm8wrr/series-workflowm8wrr-convert-artifact-132514936/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": "94080350-0585-4f36-9480-73460e85ede2", "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-workflowm8wrr/series-workflowm8wrr-build-action-3764111662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 01:45:14 +0000 UTC FinishedAt: 2026-08-04 01:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 01:45:14 +0000 UTC FinishedAt: 2026-08-04 01:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 01:45:14 +0000 UTC FinishedAt: 2026-08-04 01:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 01:45:14 +0000 UTC FinishedAt: 2026-08-04 01:45:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowm8wrr/series-workflowm8wrr-convert-artifact-3769579487/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 01:45:24 +0000 UTC FinishedAt: 2026-08-04 01:47:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 01:45:24 +0000 UTC FinishedAt: 2026-08-04 01:47:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*94080350-0585-4f36-9480-73460e85ede2,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-workflowm8wrr/series-workflowm8wrr-build-action-3764111662/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-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 01:47:17 +0000 UTC FinishedAt: 2026-08-04 01:47:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 01:47:17 +0000 UTC FinishedAt: 2026-08-04 01:47:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 01:47:17 +0000 UTC FinishedAt: 2026-08-04 02:04:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 01:47:17 +0000 UTC FinishedAt: 2026-08-04 02:04:32 +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:*d90b5b64-11c0-40bf-b44e-1c6dd336a0a7,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-workflowm8wrr/series-workflowm8wrr-convert-artifact-3769579487/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": "749c672b-e935-41bd-a55c-862163eef179", "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-workflowm8wrr/series-workflowm8wrr-build-action-813679987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 01:47:17 +0000 UTC FinishedAt: 2026-08-04 02:04: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:*d90b5b64-11c0-40bf-b44e-1c6dd336a0a7,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-workflowm8wrr/series-workflowm8wrr-convert-artifact-3769579487/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": "749c672b-e935-41bd-a55c-862163eef179", "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-workflowm8wrr/series-workflowm8wrr-build-action-813679987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 02:04:32 +0000 UTC FinishedAt: 2026-08-04 02:04:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 02:04:32 +0000 UTC FinishedAt: 2026-08-04 02:04:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 02:04:32 +0000 UTC FinishedAt: 2026-08-04 02:06:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 02:04:32 +0000 UTC FinishedAt: 2026-08-04 02:06:31 +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:*749c672b-e935-41bd-a55c-862163eef179,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-workflowm8wrr/series-workflowm8wrr-build-action-813679987/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-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 02:06:41 +0000 UTC FinishedAt: 2026-08-04 05:09:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 02:06:41 +0000 UTC FinishedAt: 2026-08-04 05:09:50 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},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:*94080350-0585-4f36-9480-73460e85ede2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*749c672b-e935-41bd-a55c-862163eef179,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-workflowm8wrr/series-workflowm8wrr-build-action-3764111662/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-workflowm8wrr/series-workflowm8wrr-build-action-813679987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 02:06:41 +0000 UTC FinishedAt: 2026-08-04 02:06:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 02:06:41 +0000 UTC FinishedAt: 2026-08-04 02:06:46 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},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-workflowm8wrr/series-workflowm8wrr-convert-artifact-155835128/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 02:06:41 +0000 UTC FinishedAt: 2026-08-04 02:06:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 02:06:41 +0000 UTC FinishedAt: 2026-08-04 02:06:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 02:06:41 +0000 UTC FinishedAt: 2026-08-04 02:06:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 02:06:51 +0000 UTC FinishedAt: 2026-08-04 05:09:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8wrr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump","fput","exit_files"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"b58f6744-3f1f-4d01-90c1-429d0f700cdd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 02:06:51 +0000 UTC FinishedAt: 2026-08-04 05:09:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*94080350-0585-4f36-9480-73460e85ede2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*749c672b-e935-41bd-a55c-862163eef179,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-workflowm8wrr/series-workflowm8wrr-build-action-3764111662/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-workflowm8wrr/series-workflowm8wrr-build-action-813679987/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-workflowm8wrr/series-workflowm8wrr-convert-artifact-155835128/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,}